diff options
| author | main <main@swarm.moe> | 2026-03-21 19:19:49 -0400 |
|---|---|---|
| committer | main <main@swarm.moe> | 2026-03-21 19:19:49 -0400 |
| commit | e15fd4966e21bd8d31dbf580ede8a309c994816d (patch) | |
| tree | 691d38d549959a59c02b982dd96cab9542dc3d85 /crates/fidget-spinner-cli/src/mcp/catalog.rs | |
| parent | 3a523c3c8ac1bf9094dbe65a6f53b71085438c0c (diff) | |
| download | fidget_spinner-e15fd4966e21bd8d31dbf580ede8a309c994816d.zip | |
Diffstat (limited to 'crates/fidget-spinner-cli/src/mcp/catalog.rs')
| -rw-r--r-- | crates/fidget-spinner-cli/src/mcp/catalog.rs | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/crates/fidget-spinner-cli/src/mcp/catalog.rs b/crates/fidget-spinner-cli/src/mcp/catalog.rs index d6c8171..e741e09 100644 --- a/crates/fidget-spinner-cli/src/mcp/catalog.rs +++ b/crates/fidget-spinner-cli/src/mcp/catalog.rs @@ -96,8 +96,8 @@ const TOOL_SPECS: &[ToolSpec] = &[ replay: ReplayContract::Convergent, }, ToolSpec { - name: "frontier.brief.update", - description: "Replace or patch the singleton frontier brief.", + name: "frontier.update", + description: "Patch frontier objective and grounding state.", dispatch: DispatchTarget::Worker, replay: ReplayContract::NeverReplay, }, @@ -168,6 +168,12 @@ const TOOL_SPECS: &[ToolSpec] = &[ replay: ReplayContract::NeverReplay, }, ToolSpec { + name: "experiment.nearest", + description: "Find the nearest accepted, kept, rejected, and champion comparators for one slice.", + dispatch: DispatchTarget::Worker, + replay: ReplayContract::Convergent, + }, + ToolSpec { name: "experiment.history", description: "Read the revision history for one experiment.", dispatch: DispatchTarget::Worker, @@ -353,7 +359,7 @@ fn tool_input_schema(name: &str) -> Value { &[("frontier", selector_schema("Frontier UUID or slug."))], &["frontier"], ), - "frontier.brief.update" => object_schema( + "frontier.update" => object_schema( &[ ("frontier", selector_schema("Frontier UUID or slug.")), ( @@ -361,6 +367,10 @@ fn tool_input_schema(name: &str) -> Value { integer_schema("Optimistic concurrency guard."), ), ( + "objective", + string_schema("Optional replacement frontier objective."), + ), + ( "situation", nullable_string_schema("Optional frontier situation text."), ), @@ -369,6 +379,10 @@ fn tool_input_schema(name: &str) -> Value { "unknowns", string_array_schema("Ordered frontier unknowns."), ), + ( + "scoreboard_metric_keys", + string_array_schema("Ordered frontier scoreboard metric keys."), + ), ], &["frontier"], ), @@ -517,6 +531,36 @@ fn tool_input_schema(name: &str) -> Value { "rationale", ], ), + "experiment.nearest" => object_schema( + &[ + ( + "frontier", + selector_schema("Optional frontier UUID or slug."), + ), + ( + "hypothesis", + selector_schema("Optional hypothesis UUID or slug."), + ), + ( + "experiment", + selector_schema("Optional experiment UUID or slug used as an anchor."), + ), + ( + "metric", + string_schema("Optional metric key used to choose the champion."), + ), + ("dimensions", run_dimensions_schema()), + ("tags", string_array_schema("Require all listed tags.")), + ( + "order", + enum_string_schema( + &["asc", "desc"], + "Optional explicit champion ranking direction.", + ), + ), + ], + &[], + ), "artifact.record" => object_schema( &[ ( @@ -631,7 +675,10 @@ fn tool_input_schema(name: &str) -> Value { ), ( "scope", - enum_string_schema(&["live", "visible", "all"], "Registry slice to enumerate."), + enum_string_schema( + &["live", "scoreboard", "visible", "all"], + "Registry slice to enumerate.", + ), ), ], &[], |