fix(#108): restreint Code Mode Codex au namespace MCP IdeA et documente les tools au démarrage
Codex Code Mode pouvait appeler n'importe quel outil MCP directement, contournant la médiation d'approbation. On force [features.code_mode].direct_only_tool_namespaces = ["mcp__idea"] sur chaque surface qui écrit le config.toml Codex (permission projector, lifecycle, migration run-dir, assistant de ticket), et on ajoute initialize.instructions côté serveur MCP pour orienter Codex vers le bon outil idea_* dès la connexion, sans dépendre de la recherche sémantique différée. QA : domain 283/0, application 126/0 + agent_lifecycle 73/0 + change_agent_profile 19/0 + ticket_assistant 5/0, infrastructure 339/0 dont mcp_server 37/0, backend 68/0 (7 ignored). Les échecs web-server observés sur cargo test --workspace (Too many open files, cookies) sont une contamination de ressources inter-tests ; les deux tests concernés repassent isolément. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -1887,6 +1887,35 @@ async fn initialize_answers_minimal_handshake() {
|
||||
// Capability for tools is advertised, and the server identifies itself.
|
||||
assert!(result["capabilities"]["tools"].is_object());
|
||||
assert_eq!(result["serverInfo"]["name"], json!("idea-orchestrator"));
|
||||
let instructions = result["instructions"]
|
||||
.as_str()
|
||||
.expect("initialize should advertise compact instructions");
|
||||
let first_512 = instructions.chars().take(512).collect::<String>();
|
||||
for needle in [
|
||||
"idea_ticket_*",
|
||||
"idea_ask_agent",
|
||||
"idea_ask_agents",
|
||||
"idea_memory_*",
|
||||
"idea_context_*",
|
||||
] {
|
||||
assert!(
|
||||
first_512.contains(needle),
|
||||
"first 512 chars should route natural intent to {needle}; got {first_512:?}"
|
||||
);
|
||||
}
|
||||
for needle in [
|
||||
"idea_skill_*",
|
||||
"idea_template_*",
|
||||
"idea_workstate_*",
|
||||
"background",
|
||||
"agent lifecycle",
|
||||
"sprint",
|
||||
] {
|
||||
assert!(
|
||||
instructions.contains(needle),
|
||||
"instructions should cover {needle}; got {instructions:?}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Readiness de démarrage (fix race cold-launch, signal MCP) : un `initialize` reçu sur
|
||||
|
||||
Reference in New Issue
Block a user