swarm repositories / source
aboutsummaryrefslogtreecommitdiff
path: root/crates/fidget-spinner-cli/src/mcp/catalog.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/fidget-spinner-cli/src/mcp/catalog.rs')
-rw-r--r--crates/fidget-spinner-cli/src/mcp/catalog.rs55
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.",
+ ),
),
],
&[],