@ironbee-ai/cli 0.8.3 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +42 -17
- package/dist/analytics/projection.d.ts.map +1 -1
- package/dist/analytics/projection.js +28 -14
- package/dist/analytics/projection.js.map +1 -1
- package/dist/clients/claude/commands/ironbee-verify.md +19 -106
- package/dist/clients/claude/hooks/require-verdict.d.ts +3 -3
- package/dist/clients/claude/hooks/require-verdict.js +5 -5
- package/dist/clients/claude/hooks/require-verification.d.ts +6 -5
- package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
- package/dist/clients/claude/hooks/require-verification.js +20 -17
- package/dist/clients/claude/hooks/require-verification.js.map +1 -1
- package/dist/clients/claude/hooks/track-action-monitor.d.ts.map +1 -1
- package/dist/clients/claude/hooks/track-action-monitor.js +4 -1
- package/dist/clients/claude/hooks/track-action-monitor.js.map +1 -1
- package/dist/clients/claude/hooks/track-action.d.ts +11 -8
- package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/claude/hooks/track-action.js +14 -9
- package/dist/clients/claude/hooks/track-action.js.map +1 -1
- package/dist/clients/claude/index.d.ts.map +1 -1
- package/dist/clients/claude/index.js +79 -18
- package/dist/clients/claude/index.js.map +1 -1
- package/dist/clients/claude/platforms/command-verify.backend.md +74 -0
- package/dist/clients/claude/platforms/command-verify.browser.md +108 -0
- package/dist/clients/claude/platforms/command-verify.node.md +67 -0
- package/dist/clients/claude/platforms/rule.backend.md +23 -0
- package/dist/clients/claude/platforms/rule.browser.md +17 -0
- package/dist/clients/claude/{fragments → platforms}/rule.node.md +3 -3
- package/dist/clients/claude/platforms/skill.backend.md +65 -0
- package/dist/clients/claude/platforms/skill.browser.md +31 -0
- package/dist/clients/claude/{fragments → platforms}/skill.node.md +2 -2
- package/dist/clients/claude/rules/ironbee-verification.md +14 -13
- package/dist/clients/claude/skills/ironbee-verification.md +19 -49
- package/dist/clients/cursor/commands/ironbee-verify/SKILL.md +21 -108
- package/dist/clients/cursor/hooks/require-verdict.d.ts +1 -1
- package/dist/clients/cursor/hooks/require-verdict.js +3 -3
- package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/require-verification.js +9 -5
- package/dist/clients/cursor/hooks/require-verification.js.map +1 -1
- package/dist/clients/cursor/hooks/track-action-monitor.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/track-action-monitor.js +4 -1
- package/dist/clients/cursor/hooks/track-action-monitor.js.map +1 -1
- package/dist/clients/cursor/hooks/track-action.d.ts +14 -12
- package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/track-action.js +25 -16
- package/dist/clients/cursor/hooks/track-action.js.map +1 -1
- package/dist/clients/cursor/index.d.ts.map +1 -1
- package/dist/clients/cursor/index.js +45 -11
- package/dist/clients/cursor/index.js.map +1 -1
- package/dist/clients/cursor/platforms/command-verify.backend.md +74 -0
- package/dist/clients/cursor/platforms/command-verify.browser.md +108 -0
- package/dist/clients/cursor/platforms/command-verify.node.md +67 -0
- package/dist/clients/cursor/platforms/rule.backend.md +23 -0
- package/dist/clients/cursor/platforms/rule.browser.md +17 -0
- package/dist/clients/cursor/{fragments → platforms}/rule.node.md +3 -3
- package/dist/clients/cursor/platforms/skill.backend.md +65 -0
- package/dist/clients/cursor/platforms/skill.browser.md +31 -0
- package/dist/clients/cursor/{fragments → platforms}/skill.node.md +2 -2
- package/dist/clients/cursor/rules/ironbee-verification.mdc +14 -13
- package/dist/clients/cursor/skills/ironbee-verification.md +19 -49
- package/dist/commands/backend.d.ts +17 -0
- package/dist/commands/backend.d.ts.map +1 -0
- package/dist/commands/backend.js +58 -0
- package/dist/commands/backend.js.map +1 -0
- package/dist/commands/browser.d.ts +19 -0
- package/dist/commands/browser.d.ts.map +1 -0
- package/dist/commands/browser.js +60 -0
- package/dist/commands/browser.js.map +1 -0
- package/dist/commands/config.d.ts +5 -5
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +13 -11
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/cycle-toggle.d.ts +89 -0
- package/dist/commands/cycle-toggle.d.ts.map +1 -0
- package/dist/commands/cycle-toggle.js +264 -0
- package/dist/commands/cycle-toggle.js.map +1 -0
- package/dist/commands/node.d.ts +16 -0
- package/dist/commands/node.d.ts.map +1 -0
- package/dist/commands/node.js +57 -0
- package/dist/commands/node.js.map +1 -0
- package/dist/hooks/core/actions.d.ts +11 -2
- package/dist/hooks/core/actions.d.ts.map +1 -1
- package/dist/hooks/core/actions.js.map +1 -1
- package/dist/hooks/core/verify-gate.d.ts.map +1 -1
- package/dist/hooks/core/verify-gate.js +44 -14
- package/dist/hooks/core/verify-gate.js.map +1 -1
- package/dist/import/claude/transcript-walk.d.ts.map +1 -1
- package/dist/import/claude/transcript-walk.js +10 -2
- package/dist/import/claude/transcript-walk.js.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +142 -41
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +251 -82
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/platform-section.d.ts +126 -0
- package/dist/lib/platform-section.d.ts.map +1 -0
- package/dist/lib/platform-section.js +279 -0
- package/dist/lib/platform-section.js.map +1 -0
- package/package.json +1 -1
- package/dist/clients/claude/fragments/command-verify.node.md +0 -33
- package/dist/clients/cursor/fragments/command-verify.node.md +0 -33
- package/dist/commands/backend-toggle.d.ts +0 -56
- package/dist/commands/backend-toggle.d.ts.map +0 -1
- package/dist/commands/backend-toggle.js +0 -199
- package/dist/commands/backend-toggle.js.map +0 -1
- package/dist/commands/disable-backend.d.ts +0 -14
- package/dist/commands/disable-backend.d.ts.map +0 -1
- package/dist/commands/disable-backend.js +0 -38
- package/dist/commands/disable-backend.js.map +0 -1
- package/dist/commands/enable-backend.d.ts +0 -15
- package/dist/commands/enable-backend.d.ts.map +0 -1
- package/dist/commands/enable-backend.js +0 -39
- package/dist/commands/enable-backend.js.map +0 -1
- package/dist/lib/runtime-section.d.ts +0 -118
- package/dist/lib/runtime-section.d.ts.map +0 -1
- package/dist/lib/runtime-section.js +0 -256
- package/dist/lib/runtime-section.js.map +0 -1
|
@@ -8,15 +8,17 @@
|
|
|
8
8
|
* `duration`) that we fold into the event.
|
|
9
9
|
*
|
|
10
10
|
* Responsibilities:
|
|
11
|
-
* 1. **
|
|
12
|
-
* taxonomy so tool_type/tool_name/mcp_server
|
|
13
|
-
* append the tool_call entry to
|
|
14
|
-
* of truth)
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* 1. **devtools MCP tools** (`MCP:bdt_*` / `MCP:ndt_*` / `MCP:bedt_*`):
|
|
12
|
+
* classify via the shared taxonomy so tool_type/tool_name/mcp_server
|
|
13
|
+
* match Claude's schema, append the tool_call entry to
|
|
14
|
+
* `actions.jsonl` (verify-gate source of truth); for browser tools,
|
|
15
|
+
* also update recording state and extract nested `callTool()` from
|
|
16
|
+
* bdt_execute. Queue submit is SKIPPED: all three modes ship the
|
|
17
|
+
* same `browser-devtools-mcp` package and self-deliver `tool_call`
|
|
18
|
+
* events to the collector. tool_input is kept AS-IS for these so
|
|
19
|
+
* verify-gate and the local nested parser see the raw shape.
|
|
18
20
|
* 2. **All other tools** (Shell / Read / Write / Grep / Delete / Task /
|
|
19
|
-
* non-
|
|
21
|
+
* non-devtools MCP): submit a send_event job. `tool_input` is replaced
|
|
20
22
|
* with a per-tool safe projection (see `extractCursorToolInput`) —
|
|
21
23
|
* only labels (`file_path`, `pattern`, `working_directory`,
|
|
22
24
|
* `subagent_type`, …) survive, never raw content. `tool_output` stays
|
|
@@ -25,10 +27,10 @@
|
|
|
25
27
|
* byte counts.
|
|
26
28
|
*
|
|
27
29
|
* MCP server note: Cursor's wire format (`MCP:<tool>`) does not carry the
|
|
28
|
-
* server name, so the classifier returns `mcp_server: null`. For
|
|
29
|
-
*
|
|
30
|
-
* + tool prefix are enough to identify the server. For
|
|
31
|
-
* leave it null (unknown).
|
|
30
|
+
* server name, so the classifier returns `mcp_server: null`. For
|
|
31
|
+
* `bdt_*` / `ndt_*` / `bedt_*` we override locally via prefix lookup —
|
|
32
|
+
* matcher routing + tool prefix are enough to identify the server. For
|
|
33
|
+
* other MCP tools we leave it null (unknown).
|
|
32
34
|
*
|
|
33
35
|
* On failure: the event's `error` field is populated (with `failure_type:`
|
|
34
36
|
* prefix + interrupt marker when applicable) and the response is omitted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-action.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/track-action.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"track-action.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/track-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAwIH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0J3D"}
|
|
@@ -9,15 +9,17 @@
|
|
|
9
9
|
* `duration`) that we fold into the event.
|
|
10
10
|
*
|
|
11
11
|
* Responsibilities:
|
|
12
|
-
* 1. **
|
|
13
|
-
* taxonomy so tool_type/tool_name/mcp_server
|
|
14
|
-
* append the tool_call entry to
|
|
15
|
-
* of truth)
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* 1. **devtools MCP tools** (`MCP:bdt_*` / `MCP:ndt_*` / `MCP:bedt_*`):
|
|
13
|
+
* classify via the shared taxonomy so tool_type/tool_name/mcp_server
|
|
14
|
+
* match Claude's schema, append the tool_call entry to
|
|
15
|
+
* `actions.jsonl` (verify-gate source of truth); for browser tools,
|
|
16
|
+
* also update recording state and extract nested `callTool()` from
|
|
17
|
+
* bdt_execute. Queue submit is SKIPPED: all three modes ship the
|
|
18
|
+
* same `browser-devtools-mcp` package and self-deliver `tool_call`
|
|
19
|
+
* events to the collector. tool_input is kept AS-IS for these so
|
|
20
|
+
* verify-gate and the local nested parser see the raw shape.
|
|
19
21
|
* 2. **All other tools** (Shell / Read / Write / Grep / Delete / Task /
|
|
20
|
-
* non-
|
|
22
|
+
* non-devtools MCP): submit a send_event job. `tool_input` is replaced
|
|
21
23
|
* with a per-tool safe projection (see `extractCursorToolInput`) —
|
|
22
24
|
* only labels (`file_path`, `pattern`, `working_directory`,
|
|
23
25
|
* `subagent_type`, …) survive, never raw content. `tool_output` stays
|
|
@@ -26,10 +28,10 @@
|
|
|
26
28
|
* byte counts.
|
|
27
29
|
*
|
|
28
30
|
* MCP server note: Cursor's wire format (`MCP:<tool>`) does not carry the
|
|
29
|
-
* server name, so the classifier returns `mcp_server: null`. For
|
|
30
|
-
*
|
|
31
|
-
* + tool prefix are enough to identify the server. For
|
|
32
|
-
* leave it null (unknown).
|
|
31
|
+
* server name, so the classifier returns `mcp_server: null`. For
|
|
32
|
+
* `bdt_*` / `ndt_*` / `bedt_*` we override locally via prefix lookup —
|
|
33
|
+
* matcher routing + tool prefix are enough to identify the server. For
|
|
34
|
+
* other MCP tools we leave it null (unknown).
|
|
33
35
|
*
|
|
34
36
|
* On failure: the event's `error` field is populated (with `failure_type:`
|
|
35
37
|
* prefix + interrupt marker when applicable) and the response is omitted.
|
|
@@ -49,19 +51,25 @@ const CALL_TOOL_NAME_PATTERN = /callTool\(\s*['"]([^'"]+)['"]/g;
|
|
|
49
51
|
const MCP_PREFIX = "mcp__browser-devtools__";
|
|
50
52
|
const TOOL_NAME_PREFIX = "bdt_";
|
|
51
53
|
const NODE_TOOL_NAME_PREFIX = "ndt_";
|
|
54
|
+
const BACKEND_TOOL_NAME_PREFIX = "bedt_";
|
|
52
55
|
const BROWSER_DEVTOOLS_SERVER = "browser-devtools";
|
|
53
56
|
const NODE_DEVTOOLS_SERVER = "node-devtools";
|
|
57
|
+
const BACKEND_DEVTOOLS_SERVER = "backend-devtools";
|
|
54
58
|
/** Bare (post-classification) names used for recording-state detection and nested extract gating. */
|
|
55
59
|
const EXECUTE_TOOL_BARE = `${TOOL_NAME_PREFIX}execute`;
|
|
56
60
|
const RECORDING_START_BARE = `${TOOL_NAME_PREFIX}content_start-recording`;
|
|
57
61
|
const RECORDING_STOP_BARE = `${TOOL_NAME_PREFIX}content_stop-recording`;
|
|
58
62
|
/**
|
|
59
63
|
* Cursor wire format `MCP:<bare-tool>` doesn't carry the server segment, so
|
|
60
|
-
* we identify the server by tool prefix.
|
|
61
|
-
* package (`browser-devtools-mcp`) — they self-ship
|
|
62
|
-
* the collector, so the queue submit is skipped for
|
|
64
|
+
* we identify the server by tool prefix. All three devtools servers ship
|
|
65
|
+
* the same npm package (`browser-devtools-mcp`) — they self-ship
|
|
66
|
+
* `tool_call` events to the collector, so the queue submit is skipped for
|
|
67
|
+
* all of them.
|
|
63
68
|
*/
|
|
64
69
|
function resolveServerByPrefix(bareToolName) {
|
|
70
|
+
if (bareToolName.startsWith(BACKEND_TOOL_NAME_PREFIX)) {
|
|
71
|
+
return BACKEND_DEVTOOLS_SERVER;
|
|
72
|
+
}
|
|
65
73
|
if (bareToolName.startsWith(TOOL_NAME_PREFIX)) {
|
|
66
74
|
return BROWSER_DEVTOOLS_SERVER;
|
|
67
75
|
}
|
|
@@ -170,7 +178,8 @@ async function run(projectDir) {
|
|
|
170
178
|
const classified = (0, util_1.classifyTool)(rawToolName, input.tool_input);
|
|
171
179
|
const isBrowserTool = classified.tool_type === "mcp" && classified.tool_name.startsWith(TOOL_NAME_PREFIX);
|
|
172
180
|
const isNodeTool = classified.tool_type === "mcp" && classified.tool_name.startsWith(NODE_TOOL_NAME_PREFIX);
|
|
173
|
-
const
|
|
181
|
+
const isBackendTool = classified.tool_type === "mcp" && classified.tool_name.startsWith(BACKEND_TOOL_NAME_PREFIX);
|
|
182
|
+
const isOurDevToolsTool = isBrowserTool || isNodeTool || isBackendTool;
|
|
174
183
|
const resolvedMcpServer = classified.tool_type === "mcp"
|
|
175
184
|
? (resolveServerByPrefix(classified.tool_name) ?? classified.mcp_server)
|
|
176
185
|
: classified.mcp_server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-action.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/track-action.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"track-action.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/track-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAalC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAalC,OAAO,EAAoG,aAAa,EAAsD,MAAM,kBAAkB,CAAC;AA6EvM,qBAAa,YAAa,YAAW,OAAO;IACxC,SAAgB,IAAI,EAAE,MAAM,CAAY;IAEjC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAInC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI;IAoEzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO1C,OAAO,CAAC,gBAAgB;IAuBxB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAchB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAyHxB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;CA+CzB"}
|
|
@@ -16,13 +16,14 @@ const activity_start_1 = require("./hooks/activity-start");
|
|
|
16
16
|
const activity_end_1 = require("./hooks/activity-end");
|
|
17
17
|
const session_end_1 = require("./hooks/session-end");
|
|
18
18
|
const config_1 = require("../../lib/config");
|
|
19
|
-
const
|
|
19
|
+
const platform_section_1 = require("../../lib/platform-section");
|
|
20
20
|
const MCP_SERVER_NAME = "browser-devtools";
|
|
21
21
|
const NODE_MCP_SERVER_NAME = "node-devtools";
|
|
22
|
+
const BACKEND_MCP_SERVER_NAME = "backend-devtools";
|
|
22
23
|
const IRONBEE_HOOK_MARKER = "ironbee";
|
|
23
|
-
/** Resolve
|
|
24
|
-
function
|
|
25
|
-
return (0, path_1.join)(__dirname, "..", client, "
|
|
24
|
+
/** Resolve platforms dir for a given client at runtime. */
|
|
25
|
+
function platformsDirFor(client) {
|
|
26
|
+
return (0, path_1.join)(__dirname, "..", client, "platforms");
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* True when the MCP config file no longer carries any user data — either
|
|
@@ -105,10 +106,10 @@ class CursorClient {
|
|
|
105
106
|
(0, fs_1.writeFileSync)(analyzeSkillPath, analyzeContent);
|
|
106
107
|
const mcpPath = (0, path_1.join)(cursorDir, "mcp.json");
|
|
107
108
|
this.writeMcpConfig(mcpPath, projectDir);
|
|
108
|
-
// Sync
|
|
109
|
+
// Sync platform marker blocks in skill/rule/command md files to the
|
|
109
110
|
// current config state. Idempotent — runs the same logic that
|
|
110
|
-
// `enable
|
|
111
|
-
(0,
|
|
111
|
+
// `enable-<platform>` / `disable-<platform>` use, so installs match.
|
|
112
|
+
(0, platform_section_1.syncPlatformSectionsToConfig)(projectDir, platformsDirFor);
|
|
112
113
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} hooks ${output_1.pc.dim("→")} ${output_1.pc.dim(hooksPath)}`);
|
|
113
114
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} skill ${output_1.pc.dim("→")} ${output_1.pc.dim(skillPath)}`);
|
|
114
115
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} rule ${output_1.pc.dim("→")} ${output_1.pc.dim(rulePath)}`);
|
|
@@ -253,7 +254,7 @@ class CursorClient {
|
|
|
253
254
|
}
|
|
254
255
|
config.hooks.preToolUse.push({
|
|
255
256
|
command: `ironbee hook require-verification --client cursor`,
|
|
256
|
-
matcher: "MCP:(bdt|ndt)_.*",
|
|
257
|
+
matcher: "MCP:(bdt|ndt|bedt)_.*",
|
|
257
258
|
failClosed: true,
|
|
258
259
|
});
|
|
259
260
|
// ── preToolUse (enforcement) — block edits without verdict ──
|
|
@@ -353,6 +354,10 @@ class CursorClient {
|
|
|
353
354
|
delete config.mcpServers[NODE_MCP_SERVER_NAME];
|
|
354
355
|
changed = true;
|
|
355
356
|
}
|
|
357
|
+
if (config.mcpServers && config.mcpServers[BACKEND_MCP_SERVER_NAME]) {
|
|
358
|
+
delete config.mcpServers[BACKEND_MCP_SERVER_NAME];
|
|
359
|
+
changed = true;
|
|
360
|
+
}
|
|
356
361
|
// Empty-file cleanup runs regardless of `changed` — a file
|
|
357
362
|
// already empty from a prior half-cleanup gets removed too.
|
|
358
363
|
if (isMcpConfigEmpty(config)) {
|
|
@@ -385,9 +390,38 @@ class CursorClient {
|
|
|
385
390
|
config = { mcpServers: {} };
|
|
386
391
|
}
|
|
387
392
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
393
|
+
// Per-cycle gating: MCP entries are only registered for currently
|
|
394
|
+
// enabled cycles. `<cycle> disable` removes the entry; `<cycle> enable`
|
|
395
|
+
// (re)writes it. Idempotent — running install twice on the same
|
|
396
|
+
// config yields the same on-disk shape.
|
|
397
|
+
const ironbeeConfig = (0, config_1.loadConfig)(projectDir);
|
|
398
|
+
if ((0, config_1.isCycleEnabled)(ironbeeConfig, "browser")) {
|
|
399
|
+
config.mcpServers[MCP_SERVER_NAME] = (0, config_1.getMcpServerEntry)(projectDir);
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
delete config.mcpServers[MCP_SERVER_NAME];
|
|
403
|
+
}
|
|
404
|
+
if ((0, config_1.isCycleEnabled)(ironbeeConfig, "node")) {
|
|
405
|
+
config.mcpServers[NODE_MCP_SERVER_NAME] = (0, config_1.getNodeDevToolsMcpEntry)(projectDir);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
delete config.mcpServers[NODE_MCP_SERVER_NAME];
|
|
409
|
+
}
|
|
410
|
+
if ((0, config_1.isCycleEnabled)(ironbeeConfig, "backend")) {
|
|
411
|
+
config.mcpServers[BACKEND_MCP_SERVER_NAME] = (0, config_1.getBackendDevToolsMcpEntry)(projectDir);
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
delete config.mcpServers[BACKEND_MCP_SERVER_NAME];
|
|
415
|
+
}
|
|
416
|
+
if (isMcpConfigEmpty(config)) {
|
|
417
|
+
try {
|
|
418
|
+
(0, fs_1.rmSync)(mcpPath, { force: true });
|
|
419
|
+
}
|
|
420
|
+
catch (e) {
|
|
421
|
+
logger_1.logger.debug(`failed to remove empty ${mcpPath}: ${e}`);
|
|
422
|
+
}
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
391
425
|
(0, fs_1.writeFileSync)(mcpPath, JSON.stringify(config, null, 2));
|
|
392
426
|
}
|
|
393
427
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!-- Backend protocol verification is ENABLED for this project. -->
|
|
2
|
+
|
|
3
|
+
## Backend Mode (when `backend.verifyPatterns` matches an edited file)
|
|
4
|
+
|
|
5
|
+
If the project has the backend protocol cycle enabled (`ironbee backend enable` once at setup) and your edits touch matching paths (e.g. `server/**`, `api/**`, `routes/**`, `controllers/**`), the Stop hook also enforces a Backend cycle. The same `verification-start` covers every active cycle; the same verdict file carries fields for all of them.
|
|
6
|
+
|
|
7
|
+
This cycle is **runtime- and language-agnostic** — it works for Node, Java, Python, Go, Rust, Ruby, .NET, PHP, Elixir, Kotlin, Scala. The agent makes real protocol calls (HTTP / gRPC / GraphQL / WebSocket) against the running service and inspects the responses; it never attaches to a process.
|
|
8
|
+
|
|
9
|
+
### Mode behavior (backend cycle)
|
|
10
|
+
- **default** (no arg or `default`): call only the endpoints your diff touched. Map each changed file → the route(s) / handler(s) / RPC method(s) it exposes → call them, then chain enough follow-up calls to verify side effects.
|
|
11
|
+
- **full**: exercise every endpoint reachable from files matching `backend.verifyPatterns`, not just the changed files. Cover the success path, at least one error path, and any auth-gated variant for each.
|
|
12
|
+
- `visual` / `functional`: browser-only modes; this cycle behaves as `default` when they are passed.
|
|
13
|
+
|
|
14
|
+
### Steps (additive to the browser flow above)
|
|
15
|
+
1. **Confirm the backend service is running** (the user's dev server / Docker compose / k8s port-forward / …). Don't start the service yourself — ask the user if it's not obvious.
|
|
16
|
+
2. **Identify the affected endpoint(s)**. Map your code change to wire-level addresses (URL, gRPC service+method, GraphQL operation, WebSocket path).
|
|
17
|
+
3. **Make a real protocol call** with the matching tool:
|
|
18
|
+
- `MCP:bedt_request_http` — HTTP/1.1 + HTTP/2 (ALPN auto-negotiates).
|
|
19
|
+
- `MCP:bedt_request_grpc` — unary + 3 streaming modes; `.proto` text or descriptor.
|
|
20
|
+
- `MCP:bedt_request_graphql` — query/mutation/persisted query.
|
|
21
|
+
- `MCP:bedt_request_websocket-open` then `bedt_request_websocket-send` / `bedt_request_websocket-receive` / `bedt_request_websocket-close` for stateful WS sessions.
|
|
22
|
+
- `MCP:bedt_request_replay` — re-issue a captured curl command or HAR entry.
|
|
23
|
+
4. **Inspect the response** — `status`, body, headers, `traceId`. **4xx/5xx and gRPC non-OK are normal results, not transport errors.** Decide PASS/FAIL based on what the test actually requires.
|
|
24
|
+
5. **Chain follow-up calls** to verify side effects (POST then GET, set then list, etc.). Use `bedt_request_set-default-headers` for auth tokens (host-scoped), `bedt_request_set-cookies` for session state.
|
|
25
|
+
6. **Submit verdict** including `backend_*` fields. If browser and/or node cycles are also active, include their fields in the SAME verdict — do not submit two verdicts.
|
|
26
|
+
|
|
27
|
+
### Verdict (backend-cycle fields)
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"session_id": "...",
|
|
31
|
+
"status": "pass",
|
|
32
|
+
"checks": ["POST /api/orders returned 201 with order id", "GET /api/orders/:id reflects new order"],
|
|
33
|
+
"backend_endpoints_called": [
|
|
34
|
+
"POST http://localhost:3000/api/orders",
|
|
35
|
+
"GET http://localhost:3000/api/orders/42"
|
|
36
|
+
],
|
|
37
|
+
"backend_response_statuses": [201, 200],
|
|
38
|
+
"backend_traces_collected": ["00-1234abcd-...01"]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`backend_endpoints_called` is the only required field for this cycle. `backend_response_statuses` and `backend_traces_collected` are optional but strongly recommended — same order as `backend_endpoints_called`. There is no automatic pass-criteria override on this cycle: if `status: pass` and the evidence is structurally valid, the gate honors it.
|
|
43
|
+
|
|
44
|
+
For a multi-cycle pass (browser + backend, or browser + node + backend), every active cycle's evidence must be present — claiming `pass` without one cycle's fields will be overridden to fail.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Default Mode (backend cycle)
|
|
49
|
+
|
|
50
|
+
Focus on the endpoints you changed — not every endpoint in the service.
|
|
51
|
+
|
|
52
|
+
### 1. Study the changes
|
|
53
|
+
1. Run `git diff --name-only` and `git diff --name-only HEAD~1`
|
|
54
|
+
2. **Ignore `.ironbee/`, `.claude/`, `.cursor/`** — tool config, not application code
|
|
55
|
+
3. **Read the full diff** for route / handler / controller / service files in scope — note the wire-level address (HTTP method+path, gRPC service+method, GraphQL operation, WebSocket path), request shape, response shape, side effects (DB writes, downstream calls, queue puts)
|
|
56
|
+
4. Before opening the request tool, you should be able to answer: what endpoints did I touch? What does each return on the happy path? What does each return on the error path? What side effects need verification?
|
|
57
|
+
|
|
58
|
+
### 2. Verify against the running service
|
|
59
|
+
- **Call each changed endpoint** with the matching tool — `MCP:bedt_request_http` / `MCP:bedt_request_grpc` / `MCP:bedt_request_graphql` / `MCP:bedt_request_websocket-open`
|
|
60
|
+
- **Cross-reference the response against the diff** — status, body shape, headers, gRPC status code
|
|
61
|
+
- **Chain a follow-up call** to verify side effects (POST then GET, set then list, mutation then query, …)
|
|
62
|
+
- **Test one error path** per new branch — invalid body, missing field, missing auth, 404 path
|
|
63
|
+
- **Capture `traceId`** when available — useful for joining with downstream cycle evidence
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Full Mode (`/ironbee-verify full`, backend cycle)
|
|
68
|
+
|
|
69
|
+
Exercise every endpoint reachable from files matching `backend.verifyPatterns`, not just the changed files. Do NOT run `git diff` or scope to recent changes.
|
|
70
|
+
|
|
71
|
+
- Hit every route / RPC method / GraphQL operation / WebSocket lifecycle in scope
|
|
72
|
+
- Cover the success path AND at least one error path for each
|
|
73
|
+
- Cover any auth-gated variant (unauthenticated, wrong role) where authentication is present
|
|
74
|
+
- Any unexpected error response during the run is a fail, regardless of when it was introduced
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<!-- Browser cycle verification is ENABLED for this project. The stop hook
|
|
2
|
+
enforces a browser cycle whenever an edited file matches
|
|
3
|
+
`browser.verifyPatterns`. The `/ironbee-verify` command's mode
|
|
4
|
+
arguments (default / full / visual / functional) tune the depth of the
|
|
5
|
+
browser-cycle pass. -->
|
|
6
|
+
|
|
7
|
+
## Mode arguments (browser cycle)
|
|
8
|
+
|
|
9
|
+
- `/ironbee-verify` — **default** — focus on what changed, visual + functional checks on affected areas
|
|
10
|
+
- `/ironbee-verify full` — **full scope** — entire application, all checklists, edge cases, responsive, accessibility deep dive
|
|
11
|
+
- `/ironbee-verify visual` — **visual only** — contrast, layout, spacing, fonts, images, theming
|
|
12
|
+
- `/ironbee-verify functional` — **functional only** — clicks, forms, navigation, data flow, error handling
|
|
13
|
+
|
|
14
|
+
If no argument is given, use **default** mode. `default` and `full` apply to every active cycle (browser, node, backend) — each cycle interprets them in its own terms (see each platform section). `visual` and `functional` apply ONLY to the browser cycle; other active cycles run in `default` mode when these are passed.
|
|
15
|
+
|
|
16
|
+
## Browser steps (all modes)
|
|
17
|
+
|
|
18
|
+
1. **Start verification**: Run `echo '{"session_id":"<your-session-id>"}' | ironbee hook verification-start` via terminal
|
|
19
|
+
2. **Build and start** the application if not already running
|
|
20
|
+
3. **For EVERY page you visit**, repeat this cycle:
|
|
21
|
+
a. **Navigate** using `MCP:bdt_navigation_go-to`
|
|
22
|
+
b. **Take a FULL PAGE screenshot** using `MCP:bdt_content_take-screenshot` with `fullPage: true`
|
|
23
|
+
c. **Take an ARIA snapshot** using `MCP:bdt_a11y_take-aria-snapshot`
|
|
24
|
+
d. **STOP and visually analyze the screenshot** — switch your focus entirely to finding visual problems. Look at this screenshot as if your ONLY job is to find visual defects:
|
|
25
|
+
**WARNING: ARIA reports DOM content, not what the user actually sees.** Do NOT assume the page looks correct just because ARIA shows the right content. Only the screenshot tells you what the user actually sees.
|
|
26
|
+
- Text readability — is it readable against its background? Look for text that blends in or poor contrast
|
|
27
|
+
- Layout — overlapping elements, unexpected gaps, overflow, content cut off
|
|
28
|
+
- Spacing — consistent padding/margin? Too cramped or too far apart?
|
|
29
|
+
- Colors — intentional and consistent? Any jarring mismatches?
|
|
30
|
+
- Typography — right sizes? Clipped or truncated text?
|
|
31
|
+
- Images/icons — loaded? Right size and aspect ratio?
|
|
32
|
+
- States — empty, loading, disabled, error states rendered properly?
|
|
33
|
+
Report your visual findings before continuing.
|
|
34
|
+
e. **Read the ARIA snapshot** — verify headings, labels, landmarks, and structure
|
|
35
|
+
f. If anything looks wrong → note it as an issue
|
|
36
|
+
4. **Functionally test** — run the checklist for your mode (see below). After each significant interaction, take another screenshot and repeat the visual analysis.
|
|
37
|
+
5. **Check console** for errors using `MCP:bdt_o11y_get-console-messages`
|
|
38
|
+
6. **Stop** the dev server when verification is complete
|
|
39
|
+
7. **If recording was started, stop it now** — `MCP:bdt_content_stop-recording`. submit-verdict rejects with `"recording is still active"` when this step is skipped. (Recording is a server-side opt-in via `recording.enable` — when on, the gate forces `MCP:bdt_content_start-recording` BEFORE the steps above and demands the matching stop here.)
|
|
40
|
+
8. **Submit your verdict** via terminal:
|
|
41
|
+
- Pass: `echo '{"session_id":"...","status":"pass","pages_tested":[...],"checks":[...],"console_errors":0,"network_failures":0}' | ironbee hook submit-verdict`
|
|
42
|
+
- Fail: `echo '{"session_id":"...","status":"fail","pages_tested":[...],"checks":[...],"console_errors":N,"network_failures":N,"issues":["describe what failed"]}' | ironbee hook submit-verdict`
|
|
43
|
+
9. **If failed** → collect ALL issues first (finish testing all affected pages), submit one fail verdict with all issues, then fix everything, rebuild, and re-verify. Do not fix one issue at a time — batch fixes to avoid repeated build/restart cycles.
|
|
44
|
+
10. If pass after a previous fail, include `"fixes"` in the verdict describing what was fixed
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Default Mode
|
|
49
|
+
|
|
50
|
+
Focus on the code you changed — not the entire application.
|
|
51
|
+
|
|
52
|
+
### 1. Study the changes
|
|
53
|
+
1. Run `git diff --name-only` and `git diff --name-only HEAD~1`
|
|
54
|
+
2. **Ignore `.ironbee/`, `.claude/`, `.cursor/`** — tool config, not application code
|
|
55
|
+
3. **Read the full diff** (`git diff` and/or `git diff HEAD~1`) — understand every change: what was added, removed, modified. Note specific values (colors, sizes, conditions, logic, API endpoints, component props).
|
|
56
|
+
4. Before opening the browser, you should be able to answer: what exactly changed, what should look or behave differently, and what could go wrong?
|
|
57
|
+
|
|
58
|
+
### 2. Verify in the browser
|
|
59
|
+
- **Cross-reference the diff against what you see.** For each change in the diff, verify it is correctly reflected in the browser. If the diff changes a color → check that color. If it changes a calculation → verify the result. If it adds a component → confirm it renders.
|
|
60
|
+
- **Test the flow end-to-end** — navigate, click, fill forms, submit, verify the outcome
|
|
61
|
+
- **Check one edge case** — empty input, invalid data, or double-click
|
|
62
|
+
- **Console** — any new errors or warnings?
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Full Mode (`/ironbee-verify full`)
|
|
67
|
+
|
|
68
|
+
Comprehensive verification of the **entire application**. Do NOT run `git diff` or scope to recent changes. Test every page, every flow, every visual detail. Any issue is a failure, regardless of when it was introduced.
|
|
69
|
+
|
|
70
|
+
### Visual Checklist
|
|
71
|
+
In addition to the per-page visual analysis in step 3d:
|
|
72
|
+
- **Responsiveness** — does the layout adapt if viewport changes? No horizontal scrolling on standard widths
|
|
73
|
+
- **Borders & separators** — visible and consistent? Not too faint or missing
|
|
74
|
+
- **Scroll behavior** — does the page scroll smoothly? No content hidden behind sticky headers/footers?
|
|
75
|
+
|
|
76
|
+
### Functional Checklist
|
|
77
|
+
- **Navigation** — do links and buttons navigate to the correct pages?
|
|
78
|
+
- **Forms** — fill inputs with real data, select options, submit. Do validation messages appear correctly?
|
|
79
|
+
- **Buttons & interactions** — do click handlers fire? Do toggles, dropdowns, and modals work?
|
|
80
|
+
- **Data flow** — does submitted data appear where expected?
|
|
81
|
+
- **Error handling** — what happens with invalid input? Does the UI handle errors gracefully?
|
|
82
|
+
- **Authentication** — if applicable, do protected routes redirect correctly?
|
|
83
|
+
- **API calls** — do network requests succeed? Check for failed requests in console/network
|
|
84
|
+
- **State persistence** — does state survive page refresh where expected?
|
|
85
|
+
- **Edge cases** — empty inputs, very long text, special characters, rapid clicks
|
|
86
|
+
|
|
87
|
+
### Accessibility (deep dive)
|
|
88
|
+
- Are headings hierarchical? Do form inputs have labels? Are landmarks present?
|
|
89
|
+
- Check for missing alt text on images
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Visual Mode (`/ironbee-verify visual`)
|
|
94
|
+
|
|
95
|
+
Focus exclusively on visual quality. Run the per-page visual analysis from step 3d on every page, plus:
|
|
96
|
+
- **Responsiveness** — viewport changes, no horizontal scrolling
|
|
97
|
+
- **Borders & separators** — visible and consistent?
|
|
98
|
+
- **Scroll behavior** — smooth scrolling, no hidden content
|
|
99
|
+
|
|
100
|
+
Take screenshots of **multiple states** if applicable (hover, active, disabled, empty, populated).
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Functional Mode (`/ironbee-verify functional`)
|
|
105
|
+
|
|
106
|
+
Focus exclusively on behavior. Use the same functional checklist as Full Mode above.
|
|
107
|
+
|
|
108
|
+
Test the **complete user flow**, not just the single step you changed.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<!-- Node backend verification is ENABLED for this project. -->
|
|
2
|
+
|
|
3
|
+
## Backend Node Mode (when `node.verifyPatterns` matches an edited file)
|
|
4
|
+
|
|
5
|
+
> **Precondition: the backend must actually be Node.js.** If you see `pom.xml`, `build.gradle`, `requirements.txt`, `pyproject.toml`, `go.mod`, `Cargo.toml`, etc., this section does NOT apply — `MCP:ndt_*` tools won't connect to non-Node processes. Just do browser verification.
|
|
6
|
+
|
|
7
|
+
If the project has node backend verification enabled (`ironbee node enable` once at setup, by an operator who confirmed the backend is Node.js) and your edits touch matching paths (e.g. `server/**`, `pages/api/**`), the stop hook also enforces a Node cycle. The same `verification-start` covers both cycles; the same verdict file carries fields for both.
|
|
8
|
+
|
|
9
|
+
### Mode behavior (node cycle)
|
|
10
|
+
- **default** (no arg or `default`): probe / log only the code paths your diff touched. Map each changed file → the handler(s) it affects → place probes there.
|
|
11
|
+
- **full**: probe / log every Node code path reachable from files matching `node.verifyPatterns`, not just the changed files. Expect a much larger probe set and longer runtime.
|
|
12
|
+
- `visual` / `functional`: browser-only modes; this cycle behaves as `default` when they are passed.
|
|
13
|
+
|
|
14
|
+
### Steps (additive to the browser flow above)
|
|
15
|
+
1. **Identify the running Node process** — note its PID, container name (`docker compose ps`), or inspector port.
|
|
16
|
+
2. **Connect**: `MCP:ndt_debug_connect` with one of `pid` / `processName` / `containerId` / `containerName` / `inspectorPort` / `wsUrl`. Inspector is auto-activated via SIGUSR1 if needed.
|
|
17
|
+
3. **Pick an evidence path** for each changed code path:
|
|
18
|
+
- **Probe path** (proves the code path executed): `MCP:ndt_debug_put-tracepoint` (or `put-logpoint` / `put-exceptionpoint`) at the changed code, exercise the path (e.g. trigger the API call from the browser), then `MCP:ndt_debug_get-probe-snapshots`. At least one probe must come back with `triggered: true`.
|
|
19
|
+
- **Log path** (proves no errors): exercise the path, then `MCP:ndt_debug_get-logs` with the error level filter. `backend_node_log_errors` must be empty for `status: pass`.
|
|
20
|
+
4. **Disconnect** (optional): `MCP:ndt_debug_disconnect`.
|
|
21
|
+
5. **Submit verdict** including `backend_node_*` fields. If browser cycle is also active, include browser fields in the SAME verdict — do not submit two verdicts.
|
|
22
|
+
|
|
23
|
+
### Verdict (node-cycle fields)
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"session_id": "...",
|
|
27
|
+
"status": "pass",
|
|
28
|
+
"checks": ["POST /api/orders returned 201", "tracepoint at handler.ts:42 fired once"],
|
|
29
|
+
"backend_node_processes_connected": ["pid:12345 (next-server)"],
|
|
30
|
+
"backend_node_probes_set": [
|
|
31
|
+
{ "type": "tracepoint", "location": "src/api/orders.ts:42", "triggered": true }
|
|
32
|
+
],
|
|
33
|
+
"backend_node_probe_snapshots_collected": 1,
|
|
34
|
+
"backend_node_log_errors": []
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For a multi-cycle pass, both browser and node criteria must hold — claiming `pass` without one cycle's evidence will be overridden to fail by the gate.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Default Mode (node cycle)
|
|
43
|
+
|
|
44
|
+
Focus on the code you changed — not the entire Node service.
|
|
45
|
+
|
|
46
|
+
### 1. Study the changes
|
|
47
|
+
1. Run `git diff --name-only` and `git diff --name-only HEAD~1`
|
|
48
|
+
2. **Ignore `.ironbee/`, `.claude/`, `.cursor/`** — tool config, not application code
|
|
49
|
+
3. **Read the full diff** for every Node file in scope (handler / route / service / middleware) — note new branches, new validations, new error paths, new external calls, changed return values
|
|
50
|
+
4. Before connecting, you should be able to answer: which function(s) execute on the changed path? Where does a tracepoint prove the new code fired? What error logs would prove a regression?
|
|
51
|
+
|
|
52
|
+
### 2. Verify against the running process
|
|
53
|
+
- **Place a probe at each changed code site** — `MCP:ndt_debug_put-tracepoint` for "did it run", `MCP:ndt_debug_put-logpoint` for variable capture, `MCP:ndt_debug_put-exceptionpoint` for new throw branches
|
|
54
|
+
- **Exercise the path end-to-end** (trigger from browser, curl, or the backend cycle if active)
|
|
55
|
+
- **Each touched probe must report `triggered: true`** in `MCP:ndt_debug_get-probe-snapshots`
|
|
56
|
+
- **Check one edge case per new branch** — invalid input, missing field, auth failure, …
|
|
57
|
+
- **Logs** — `MCP:ndt_debug_get-logs` at error level; `backend_node_log_errors` must be empty for `pass`
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Full Mode (`/ironbee-verify full`, node cycle)
|
|
62
|
+
|
|
63
|
+
Probe every Node code path reachable from files matching `node.verifyPatterns`, not just the changed files. Do NOT run `git diff` or scope to recent changes.
|
|
64
|
+
|
|
65
|
+
- Place probes at every handler / route / service entry point in scope, plus key internal branch points (early returns, error catches, conditional middleware)
|
|
66
|
+
- Exercise each path with at least one happy-path call AND one failure-path call
|
|
67
|
+
- `backend_node_log_errors` must be empty after the full run — any unexpected log error is a fail, regardless of when it was introduced
|