core/workbench-ui/api-schema-snapshot.json
Shay cdead696ed
feat(W-027): Workbench frontend shell — five-region grid + ten empty routes + live StatusFooter (ADR-0160 / ADR-0162) (#299)
- Five-region CSS grid shell (TopBar, LeftNav, Main, StatusFooter; Inspector collapsed)
- Ten placeholder routes with EmptyState cli/string variants and ApiErrorBoundary
- Extended EmptyState API: nextAction accepts string (button) | { kind: "cli", command }
- Updated CommandPalette: real fuzzy search over three commands (Chat, Proposals, Evals)
  with ↑/↓/Enter keyboard nav and useInRouterContext degradation for Branch 1 preview
- TanStack Query hooks for all W-026 endpoints; 30s polling on runtime/status
- TypeScript mirror of workbench/schemas.py at src/types/api.ts
- StatusFooter: mutation_mode badge, git_revision (copy on click), checkpoint_revision
  with amber warning + ADR-0157/ADR-0158 expansion note
- TopBar: CORE Workbench wordmark, ⌘K palette trigger, connection pill
- ApiErrorBoundary (class component) catches WorkbenchApiError → ErrorState
- scripts/dump-api-schemas.py: AST-based Python dataclass field extractor
- workbench-ui/api-schema-snapshot.json: checked-in drift sentinel
- 51 tests across 10 files (0 failures); enum-coverage 4/4; clean vite build
2026-05-26 12:09:12 -07:00

86 lines
2.3 KiB
JSON

{
"dataclasses": {
"RuntimeStatus": {
"fields": {
"backend": "Literal['numpy', 'mlx', 'rust', 'unknown']",
"git_revision": "str",
"engine_state_present": "bool",
"checkpoint_revision": "str",
"revision_warning": "bool",
"active_session_id": "str | None",
"mutation_mode": "Literal['read_only', 'runtime_turn']"
}
},
"ArtifactRef": {
"fields": {
"artifact_id": "str",
"kind": "Literal['trace', 'eval_result', 'proposal', 'contemplation_report', 'telemetry', 'engine_state_manifest', 'unknown']",
"path": "str",
"digest": "str | None",
"created_at": "str | None"
}
},
"ArtifactDetail": {
"fields": {
"content_type": "Literal['json', 'jsonl', 'text', 'unknown']",
"content": "Any"
}
},
"ProposalSummary": {
"fields": {
"proposal_id": "str",
"state": "Literal['pending', 'accepted', 'rejected', 'withdrawn', 'unknown']",
"source_kind": "str",
"replay_equivalent": "bool | None",
"created_at": "str | None",
"downstream_effect": "Literal['unknown', 'none', 'observed']"
}
},
"ProposalDetail": {
"fields": {
"proposed_chain": "Any",
"replay_evidence": "Any",
"source": "Any",
"evidence": "list[Any]",
"artifact_refs": "list[ArtifactRef]",
"suggested_cli": "str | None"
}
},
"EvalLaneSummary": {
"fields": {
"lane": "str",
"versions": "list[str]",
"read_only": "bool",
"description": "str | None"
}
},
"EvalRunResult": {
"fields": {
"lane": "str",
"version": "str",
"split": "str",
"passed": "bool | None",
"metrics": "dict[str, Any]",
"cases": "list[Any]",
"source_digest": "str | None"
}
},
"ReplayDivergence": {
"fields": {
"path": "str",
"original": "Any",
"replay": "Any",
"severity": "Literal['info', 'warning', 'failure']"
}
},
"ReplayComparison": {
"fields": {
"artifact_id": "str",
"original_hash": "str | None",
"replay_hash": "str | None",
"equivalent": "bool",
"divergences": "list[ReplayDivergence]"
}
}
}
}