feat(types): authoring observe, command, and bind schemas - #35
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.pyshould 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. NoComputerState, noUINode. SharingElementRoleis the only computer-state reuse. Cap 200 nodes / 32 KiB.openadapt.authoring.command/v1— mailbox envelope. Hostedclickis{ node_id }only. Compile returnsneeds_human_admit, notVERIFIED. Pause results name a param and never a value.get_coachandbind_packresults are PHI-free. Enqueue budget 8 KiB.openadapt.authoring.bind/v1—bind_statuswithallow: none|pending|granted, plus exactoab_/oals_parsers. Tests rejectoar_,oap_,oab_with a hex body,oals_with a base64url body, and anything that merely starts withoa.additionalPropertiesis false. Extra keys fail.value,title, andscreenshotfail. The projector stays in Capture.Taxes/RBC/Amex are an example job only. No vertical nouns in the schemas. No AWS. No
control_planepath.Reviewer checks
tests/test_authoring.py: extra keys andvalue/title/screenshotfail on observe, command, and bind.openadapt_types/schemas/authoring-*-v1.jsonmatches the Pydantic models.oab_+ 43 unreserved characters. Cloudoar_and pairingoap_are refused.uv run pytest— 360 passed. Source-boundary check passed.Do not merge.
Opened by an agent session, not the founder.