Skip to content

feat(types): authoring observe, command, and bind schemas - #35

Merged
abrichr merged 2 commits into
mainfrom
feat/authoring-schemas-2026-08-31
Sep 1, 2026
Merged

feat(types): authoring observe, command, and bind schemas#35
abrichr merged 2 commits into
mainfrom
feat/authoring-schemas-2026-08-31

Conversation

@abrichr

@abrichr abrichr commented Aug 31, 2026

Copy link
Copy Markdown
Member

Do not merge until the founder says so. Un-parked 2026-09-01 for implementation of the types wire. This PR is the public MCP contract for hosted authoring (ChatGPT.com / Claude.ai drive once on the person's computer). Flags stay off. Not Operator. Not a viral MVP. OpenAdapt is a compiler for writes that have to be true; the agent invokes a program; the agent is not the runtime.

Reader

A types reviewer checking that the vendor wire cannot carry field values, window titles, or screenshots. If that sentence stops being true, tests/test_authoring.py should fail.

What this does

Public MCP wire for hosted authoring. ChatGPT.com and Claude.ai drive a first demonstration through tools; this package is the contract those tools share with Desktop and stdio.

Three schemas:

  • openadapt.authoring.observe/v1 — projected tree. Normalized bounds, roles, automation ids. No ComputerState, no UINode. Sharing ElementRole is the only computer-state reuse. Cap 200 nodes / 32 KiB.
  • openadapt.authoring.command/v1 — mailbox envelope. Hosted click is { node_id } only. Compile returns needs_human_admit, not VERIFIED. Pause results name a param and never a value. get_coach and bind_pack results are PHI-free. Enqueue budget 8 KiB.
  • openadapt.authoring.bind/v1bind_status with allow: none|pending|granted, plus exact oab_ / oals_ parsers. Tests reject oar_, oap_, oab_ with a hex body, oals_ with a base64url body, and anything that merely starts with oa.

additionalProperties is false. Extra keys fail. value, title, and screenshot fail. The projector stays in Capture.

Taxes/RBC/Amex are an example job only. No vertical nouns in the schemas. No AWS. No control_plane path.

Reviewer checks

  • tests/test_authoring.py: extra keys and value / title / screenshot fail on observe, command, and bind.
  • Packaged JSON under openadapt_types/schemas/authoring-*-v1.json matches the Pydantic models.
  • Bind tokens are oab_ + 43 unreserved characters. Cloud oar_ and pairing oap_ are refused.
  • uv run pytest — 360 passed. Source-boundary check passed.

Do not merge.

Opened by an agent session, not the founder.

Add the public MCP wire for hosted authoring. Observe, command, and bind
are strict contracts with additionalProperties false. They do not reuse
ComputerState or UINode. Extra keys and value, title, and screenshot fail
validation. Bind tokens are oab_, not oar_.
abrichr added a commit to OpenAdaptAI/openadapt-capture that referenced this pull request Sep 1, 2026
Re-pin tests/fixtures/authoring-observe-v1.json from
OpenAdaptAI/openadapt-types#35 (3abf298b). Keep the projector fail-closed
against that schema: unmapped native roles, missing required node fields,
and invalid process names never reach the vendor wire.
Bind status now has allow none|pending|granted. get_coach and bind_pack
have PHI-free results. Observe is capped at 32 KiB, enqueue at 8 KiB.
Hosted click args stay pack_id plus node_id. Extra keys and value,
title, and screenshot still fail. Still not ComputerState.
@abrichr
abrichr merged commit 9a4e46f into main Sep 1, 2026
1 check passed
@abrichr
abrichr deleted the feat/authoring-schemas-2026-08-31 branch September 1, 2026 18:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant