chore(sdk): regenerate from API 1.10.x - #194
Conversation
Generated tier: the REST MCP tool surface (list_mcp_tools, call_mcp_tool and their four models) is removed, following its removal from the API in 1.10.2; the connected-apps operations (list/revoke OAuth grants) and the reconciling-item operations (preview/resolve) are added, with the reconciling-item fields on FiscalCalendarResponse and the allow_reconciling_items flag on close-period and backfill-plan-history. The GraphQL schema snapshot picks up reconcilingItemCount and reconcilingItemSample. Stable tier untouched: every symbol the integration template imports still resolves, and no facade referenced the removed operations. Curated release notes for the minor are in .github/release-notes/v1.12.0.md.
|
@claude please review this PR |
|
Claude encountered an error after 2s —— View job I'll analyze this and get back to you. |
|
@claude please review this PR — post-merge backfill: the review run failed on the previous token. |
|
Claude finished @jfrench9's task in 1m 44s —— View job Review complete
Note: this is a post-merge backfill review — the PR was already merged, so I reviewed the merged state directly against the description rather than a live diff (network/ The generated surface itself looks clean and internally consistent:
One real gap I found: GraphQL: the new schema fields aren't actually wired into the generated client. Everything else — the compatibility framing (generated-tier removal riding a minor, additive stable tier), the release notes content, and the two widened close operations — matches what's in the repo. No other issues found. |
…ar query (#196) ## Summary Closes the gap the post-merge review of #194 found: the 1.12.0 schema refresh added `reconcilingItemCount` / `reconcilingItemSample` to `FiscalCalendar`, but the `GetLedgerFiscalCalendar` operation document was never updated to select them, so the typed GraphQL model exposed neither field while the REST `FiscalCalendarResponse` carried both. ## Changes - `robosystems_client/graphql/operations/ledger/GetLedgerFiscalCalendar.graphql` — selects the two fields. - `robosystems_client/graphql/generated/get_ledger_fiscal_calendar.py`, `generated/operations.py` — output of `just generate-graphql`, unedited: `reconciling_item_count: int` and `reconciling_item_sample: list[str]` on `GetLedgerFiscalCalendarFiscalCalendar` (required, matching `Int!` / `[String!]!` in the schema), and the query string. - `tests/test_ledger_client.py` — both fiscal-calendar fixtures carry the fields and both tests assert them. Procedural note for the next regen: `just refresh-schema` updates the snapshot, but the operation `.graphql` documents are hand-maintained — a new field on a type is not selected until its query is edited. ## Compatibility Additive on the generated tier (two new attributes on a generated Pydantic model; `LedgerClient.get_fiscal_calendar` returns the same type with more data). Rides the next client minor per the two-tier contract; no facade signature changes. Callers constructing `GetLedgerFiscalCalendarFiscalCalendar` by hand from a payload that predates 1.11 of the API would now fail validation — the server has returned both fields since API v1.11.0, and the model is a response type, not an input. ## Testing - `just test-all` — 526 passed, 17 skipped; ruff format, ruff check, basedpyright clean - `just generate-graphql` is clean after the edit (the drift gate's condition)
Summary
Regenerates the SDK against the API's 1.10 line (1.10.0–1.10.4 plus the OAuth connected-apps endpoints landing in robosystems #1275). The client was last generated from 1.9.x. Net effect on the public surface: the REST MCP tool pair leaves
api/mcp, the connected-apps and reconciling-item operations arrive, two close operations gain a flag, and the GraphQL schema snapshot picks up two fields. Curated release notes for the minor are included.Changes
robosystems_client/apiandmodels— removed:api/mcp/(list_mcp_tools,call_mcp_tool) and the modelsMCPToolCall,MCPToolCallArguments,MCPToolsResponse,MCPToolsResponseToolsItem(the API droppedGET …/mcp/toolsandPOST …/mcp/call-toolin 1.10.2). Added:api/user/list_user_o_auth_grants,revoke_user_o_auth_grant(+OAuthGrantInfo,OAuthGrantsResponse);api/extensions_robo_ledger/preview_reconciling_item,resolve_reconciling_item(+ the reconciling-item plan/delta/catch-up/request/response models and their operation envelopes). Widened:FiscalCalendarResponsegainsreconciling_item_count/reconciling_item_sample;ClosePeriodOperationandBackfillPlanHistoryOperationgainallow_reconciling_items;DeleteSubgraphOp.backup_firstandcreate_event_blockcarry richer descriptions.models/__init__.pyfollows.graphql/schema.graphql(+10 lines:reconcilingItemCount,reconcilingItemSampleon the fiscal calendar) and regenerated the ariadne models from it, so the CI drift gate stays clean..github/release-notes/v1.12.0.md— the contract document for the minor: names the generated-tier removal and its replacement (the Streamable HTTP transport), and describes the additions.No hand-written code changed. Facades and root exports are untouched.
Compatibility
Under the two-tier rule (CLAUDE.local.md § Versioning): ADDITIVE on the stable tier — with one generated-tier removal (
api.mcp.*), which rides a minor and is named in the release notes. Checked by hand against the integration template's emit path:AuthenticatedClient,types.UNSET, all six emit operations (create_file_upload,ingest_file,materialize,create_event_block,assert_metrics,create_taxonomy_block) and their request models resolve in the regenerated tree; no facade referenced the removed operations. The removal meets the dead-surface test: the endpoints no longer exist upstream, and nothing in the stable tier or the template imported them. Intended version: 1.12.0 (the notes file is named for it; the bump itself stays with the release dispatch).Testing
just generate-sdk(REST + schema refresh) andjust generate-graphqlagainst the local stack running robosystemsmain+ #1275 (verified the two grants operations and nomcppaths in itsopenapi.jsonbefore generating).just test-all— passes: 526 tests (17 skipped), ruff check and format clean, basedpyright 0 errors. The pre-commit hook re-ran the same gate on commit.