chore: finish the OAuth sweep across the demo loop - #9
Merged
Merged
Conversation
The `?token=` retirement landed in the code (#7) but left stale copy behind it. The Demo workflow still told operators to "generate the connector URL from the app's Connect page" — a page that now mints a header key, not a URL — and passed the retired `--no-connector` no-op. The README, justfile and package docstring still called the handoff a connector URL. The handoff is now stated once, consistently: `demo-up` prints the per-graph MCP URL, the client adds it and signs in as the demo account, and consent names the tenant because the URL pins the graph. The URL is not a credential, so the CI summary prints it in its own column. `--connector-key` stays. OAuth covers MCP clients only, so a viewer who cannot sign in as the demo account still needs a header key (Claude's "Additional request headers", a Cursor/VS Code mcp.json) — and the loop's own ROBOSYSTEMS_API_KEY is untouched by OAuth either way, since provisioning, loading and teardown are ordinary REST. Both hand-rolled httpx calls move onto typed SDK ops: client 1.12.0 carries `graph_id` on CreateAPIKeyRequest, so the escape hatch that mint_connector_key documented no longer exists. Same endpoints, same error handling as the other calls in the module.
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.
What
The
?token=retirement landed in the code (#7) but left stale copy behind it. This finishes the sweep and moves two hand-rolled calls onto the SDK.Stale copy fixed
.github/workflows/run.yml— the header comment told operators to "generate the connector URL from the app's Connect page". There is no connector URL any more, and that page mints a header key. The step also passed--no-connector, which has been a suppressed no-op since not-minting became the default.The handoff, stated once
demo-upprints the per-graph MCP URL; the client adds it and signs in as the demo account. The URL pins the graph, so consent names this tenant instead of showing a picker, and the grant binds to that one resource. The URL is not a credential — so the CI summary now prints it in its own column rather than telling the operator to go mint something.A new README section says this in one place, including what the retired
?token=URL was and why it went.On dropping API keys entirely
Two different keys, only one of which OAuth touches:
ROBOSYSTEMS_API_KEY(the loop's own) — unaffected. OAuth covers MCP clients; provisioning, loading and teardown are ordinary REST withX-API-Key. It stays, and the README now says so explicitly so the question doesn't come back.--connector-key(the minted graph-scoped key) — kept, opt-in. OAuth means signing in as the demo account, so a viewer without those credentials still needs a header key: Claude's "Additional request headers" field, or a Cursor/VS Codemcp.json. Off by default, printed once, revoked on teardown, never valid in a URL.SDK
Client 1.12.0 carries
graph_idonCreateAPIKeyRequest, so the escape hatchmint_connector_keydocumented no longer exists. Both it andrevoke_keynow usecreate_user_api_key/revoke_user_api_key— same endpoints, same error handling as the rest of the module.httpxis no longer imported here (still a dependency;src/integration/client.pyuses it).Test plan
just test-allgreen — 6 passed, ruff clean, basedpyright 0 errors. No behavior change to provisioning or teardown.