Skip to content

feat(cmdutil): teach Build the platform-first fallback protocol - #135

Merged
steve-calvert-glean merged 6 commits into
mainfrom
sc/platform-05-cmdutil-legacyrun
Jul 27, 2026
Merged

feat(cmdutil): teach Build the platform-first fallback protocol#135
steve-calvert-glean merged 6 commits into
mainfrom
sc/platform-05-cmdutil-legacyrun

Conversation

@steve-calvert-glean

Copy link
Copy Markdown
Collaborator

cmdutil.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.

Every namespace migrating to the platform APIs gets this protocol for free; agents (next PR) is the first consumer.

Part 5/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-04-search-cmd-migration branch from 9e1e0a1 to 13fe792 Compare July 27, 2026 17:05
@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 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
Base automatically changed from sc/platform-04-search-cmd-migration to main July 27, 2026 17:14
@steve-calvert-glean
steve-calvert-glean merged commit 0b8da87 into main Jul 27, 2026
8 checks passed
@steve-calvert-glean
steve-calvert-glean deleted the sc/platform-05-cmdutil-legacyrun branch July 27, 2026 17:19
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