You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
MCP: upgrade the 17 bare-object outputSchemas to typed (lib-type derives + typed cores + bespoke output structs) #2203
From the #2125 lane. tools/list now publishes an outputSchema for all 34 tools, but 17 are honest-but-loose bare-object schemas because their outputs aren't derivable types today:
DEEP-blocked (a):impact/review/ci/plan need schemars::JsonSchema on lib types (src/impact/types.rs, src/review.rs, src/ci.rs, src/plan.rs, src/scout.rs); ImpactCoreOutput has a hand-written to_value() a derive wouldn't reproduce → needs a manual JsonSchema impl.
Untyped cores (b):scout/onboard/task/context/blame/read/impact-diff/health return serde_json::Value (or lib types like HealthReport) — cores need typed outputs first.
Bespoke shapes (c):search ({results,query,total}) + the 3 notes mutators (NoteMutationOutput + injected reindex_deferred) want small dedicated output structs.
Each row-flip is then localized (object → typed(T) in command_output_map!). Related sub-item: the typed schemas with Vec<serde_json::Value> fields (gather.chunks, similar.results, trace.candidates, KindFallbackOutput.definitions) are loose "any" arrays until the chunk/SearchResult shape is typed — same follow-up.
injection-composite: shared helpers layer content/injection_flags/token_count onto serialized results — a manual schema would duplicate that contract and drift
Remaining tail (this issue stays open for):
The injection-composite four — either manual JsonSchema impls describing base-struct + injected fields (into nested chunk entries), or refactor the injection helpers to emit typed output; context additionally needs an untagged 3-shape (compact/summary/full).
The loose inner Vec<Value> "any" arrays (search.results, gather.chunks, similar.results, trace.candidates, KindFallbackOutput.definitions, scout/onboard nested chunks) — needs schema-only descriptor types for the per-result/chunk projections.
No wire shape changed in part 1 (byte-identity held by the noise guard + envelope pins + parity suites).
Activity
feat(mcp): type 13 of 17 bare-object outputSchemas (#2209)
jamie8johnson commentedon Jul 3, 2026
Part 1 landed (PR #2209): 13 of 17 typed. Outcome table:
to_value's real wire shape (oneOf function/fallback, injectedkind), shape-truth-pinnedcontent/injection_flags/token_countonto serialized results — a manual schema would duplicate that contract and driftRemaining tail (this issue stays open for):
contextadditionally needs an untagged 3-shape (compact/summary/full).Vec<Value>"any" arrays (search.results, gather.chunks, similar.results, trace.candidates, KindFallbackOutput.definitions, scout/onboard nested chunks) — needs schema-only descriptor types for the per-result/chunk projections.No wire shape changed in part 1 (byte-identity held by the noise guard + envelope pins + parity suites).
feat(mcp): type the outputSchema tail — composites + inner arrays (cl…