fix(tooling): strip MCP: prefix in Cursor hook tool_name matching
IDE postToolUse reports tool_name as MCP:pi_subagent_*; without stripping, guard-pi-dispatch skipped shape checks. Confirmed via live pi_subagent_roles.
This commit is contained in:
@@ -224,6 +224,34 @@ class GuardPiDispatchTest(unittest.TestCase):
|
||||
}
|
||||
self.assertEqual(self._run(payload).get("permission"), "allow")
|
||||
|
||||
def test_ask_mcp_prefixed_tool_name_bad_sha(self):
|
||||
# IDE postToolUse/beforeMCP observed tool_name="MCP:pi_subagent_*"
|
||||
payload = {
|
||||
"mcp_server_name": "pi-subagents",
|
||||
"tool_name": "MCP:pi_subagent_run",
|
||||
"tool_input": {
|
||||
"worktree": "/tmp/wt",
|
||||
"task_id": "t1",
|
||||
"request": {
|
||||
"role_id": "research",
|
||||
"request_id": "research-001",
|
||||
"goal": "g",
|
||||
"authorization_ref": "a",
|
||||
"source_sha": "HEAD",
|
||||
"input_files": [],
|
||||
"timeout_seconds": 30,
|
||||
},
|
||||
},
|
||||
}
|
||||
self.assertEqual(self._run(payload).get("permission"), "ask")
|
||||
|
||||
def test_allow_mcp_prefixed_roles(self):
|
||||
payload = {
|
||||
"tool_name": "MCP:pi_subagent_roles",
|
||||
"tool_input": {"worktree": "/tmp/wt", "task_id": "t1"},
|
||||
}
|
||||
self.assertEqual(self._run(payload).get("permission"), "allow")
|
||||
|
||||
|
||||
class GuardPiShellTest(unittest.TestCase):
|
||||
SCRIPT = HOOKS / "guard-pi-shell.sh"
|
||||
@@ -288,6 +316,16 @@ class PiReceiptContextTest(unittest.TestCase):
|
||||
self.assertIn("additional_context", parsed)
|
||||
self.assertIn("run_status", parsed["additional_context"])
|
||||
|
||||
def test_injects_for_mcp_prefixed_tool_name(self):
|
||||
code, parsed, err = _run_hook(
|
||||
self.SCRIPT,
|
||||
{"tool_name": "MCP:pi_subagent_roles", "mcp_server_name": "pi-subagents"},
|
||||
env=self.env,
|
||||
cwd=self.root,
|
||||
)
|
||||
self.assertEqual(code, 0, err)
|
||||
self.assertIn("additional_context", parsed)
|
||||
|
||||
def test_noop_for_unrelated(self):
|
||||
code, parsed, err = _run_hook(
|
||||
self.SCRIPT,
|
||||
|
||||
Reference in New Issue
Block a user