feat(cross-project): découverte et contact inter-projets — tools MCP idea_project_{list,read_context,list_agents,ask_agent,cancel_agent}, permission contactable par agent + default_contactable persistée dans les templates, routage orchestrator par projectId+agentId — #260 (tests ciblés verts, QA en attente)

This commit is contained in:
2026-09-07 16:31:14 +02:00
parent d7b24ad183
commit 98954986a7
18 changed files with 721 additions and 15 deletions

View File

@ -109,6 +109,7 @@ impl FakeContexts {
synced_template_version: None,
skills: Vec::new(),
effort: None,
contactable: false,
});
id
}
@ -725,6 +726,12 @@ async fn tools_list_advertises_the_idea_tools_with_schemas() {
let names: Vec<&str> = tools.iter().map(|t| t["name"].as_str().unwrap()).collect();
for expected in [
// Cross-project agent control tools (#263).
"idea_project_list",
"idea_project_read_context",
"idea_project_list_agents",
"idea_project_ask_agent",
"idea_project_cancel_agent",
"idea_list_agents",
"idea_ask_agent",
"idea_ask_agents",
@ -776,8 +783,8 @@ async fn tools_list_advertises_the_idea_tools_with_schemas() {
assert!(!names.contains(&"idea_reply"));
assert_eq!(
tools.len(),
37,
"exactly the thirty-seven exposed idea_* tools; got {names:?}"
47,
"exactly the forty-seven exposed idea_* tools; got {names:?}"
);
// Every tool advertises an object input schema.