Skip to content

feat(agents): serve agents commands from the platform API by default - #136

Merged
steve-calvert-glean merged 8 commits into
mainfrom
sc/platform-06-agents-migration
Jul 27, 2026
Merged

feat(agents): serve agents commands from the platform API by default#136
steve-calvert-glean merged 8 commits into
mainfrom
sc/platform-06-agents-migration

Conversation

@steve-calvert-glean

Copy link
Copy Markdown
Collaborator

list/get/schemas call /api/agents/... and fall back to the classic API (one-time warning) when the tenant gate is off. run calls POST /api/agents/{agent_id}/runs with agent_id folded into the --json body (the platform route takes it as a path parameter); because the run body is user-authored and shaped differently on the two surfaces (platform input/messages vs classic messages/fragments), run never falls back automatically — gate-closed errors with GLEAN_LEGACY_APIS guidance.

agentIDRequest's canonical tag becomes agent_id; camelCase agentId still accepted via cmdutil normalization.

Known trade-off: GET /api/agents/{id} for a nonexistent agent is indistinguishable from the gate-closed 404, so get/schemas may make one spurious legacy attempt before surfacing the legacy 404.

Part 6/9.

🤖 Generated with Claude Code

steve-calvert-glean and others added 3 commits July 27, 2026 10:03
Brings in the platform API namespaces (s.Search, s.Agents on /api/* routes)
and the WithIncludeExperimental SDK option needed for the platform-first
migration. Classic s.Client.* surface unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BuildPlatformSearchRequest maps CLI options onto the narrower platform
shape (query, page_size, cursor, datasources via the dedicated field,
remaining facet filters as generic filters). RunPlatformSearch calls
POST /api/search and honors --timeout via context deadline since the
platform request body has no timeoutMillis. Not yet wired into cmd/search.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The flag path calls POST /api/search and falls back to the classic API
(with a one-time warning) when the tenant gate is off; GLEAN_LEGACY_APIS=1
forces the classic path. Platform responses are emitted as-is (snake_case,
never cleansed); CleanseSearchResponse and --raw now apply only to legacy
responses. Explicitly-set flags without a platform equivalent produce a
stderr note instead of silently doing nothing.

--json payloads are platform-shaped and never auto-fall-back: the body is
coupled to the endpoint, so gate-closed produces an actionable error naming
GLEAN_LEGACY_APIS=1 (under which the payload is parsed as the classic
shape, exactly as before).

MockTransport gains per-path Routes so tests can drive the platform 404 →
legacy 200 fallback sequence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@steve-calvert-glean
steve-calvert-glean force-pushed the sc/platform-05-cmdutil-legacyrun branch from c32e485 to d67410a Compare July 27, 2026 17:05
@steve-calvert-glean
steve-calvert-glean force-pushed the sc/platform-06-agents-migration branch from cdcefab to 78f3b3e Compare July 27, 2026 17:05
steve-calvert-glean and others added 2 commits July 27, 2026 10:11
Spec gains Endpoint, FallbackMode (Auto | EnvOnly), and LegacyRun. When
LegacyRun is set, Run is the platform call: gate-closed 404s either retry
via LegacyRun with a one-time warning (Auto) or produce an actionable
error naming GLEAN_LEGACY_APIS (EnvOnly, for user-authored bodies).
GLEAN_LEGACY_APIS=1 routes straight to LegacyRun and skips parsing the
payload against the platform request type. LegacyRun receives the
normalized snake_case payload — the CLI's canonical input shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@steve-calvert-glean
steve-calvert-glean force-pushed the sc/platform-05-cmdutil-legacyrun branch from d67410a to b804889 Compare July 27, 2026 17:12
@steve-calvert-glean
steve-calvert-glean force-pushed the sc/platform-06-agents-migration branch from 78f3b3e to 67145f7 Compare July 27, 2026 17:12
steve-calvert-glean and others added 2 commits July 27, 2026 10:15
list/get/schemas call /api/agents/... and fall back to the classic API
(one-time warning) when the tenant gate is off. run calls
POST /api/agents/{agent_id}/runs with the agent_id folded into the --json
body (the platform route takes it as a path parameter); because the run
body is user-authored and shaped differently on the two surfaces, run
never falls back automatically — gate-closed errors with GLEAN_LEGACY_APIS
guidance, under which the classic messages/fragments body is expected.

agentIDRequest's canonical tag becomes agent_id (camelCase agentId still
accepted via cmdutil normalization).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@steve-calvert-glean
steve-calvert-glean force-pushed the sc/platform-06-agents-migration branch from 67145f7 to 02430f1 Compare July 27, 2026 17:15
Base automatically changed from sc/platform-05-cmdutil-legacyrun to main July 27, 2026 17:19
@steve-calvert-glean
steve-calvert-glean merged commit 21737e2 into main Jul 27, 2026
8 checks passed
@steve-calvert-glean
steve-calvert-glean deleted the sc/platform-06-agents-migration branch July 27, 2026 17:22
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