@ironbee-ai/cli 0.4.0 → 0.5.0
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 +16 -2
- package/README.md +63 -0
- package/dist/clients/base.d.ts +6 -6
- package/dist/clients/base.d.ts.map +1 -1
- package/dist/clients/claude/commands/ironbee-verify.md +127 -0
- package/dist/clients/claude/hooks/clear-verdict.d.ts +1 -1
- package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
- package/dist/clients/claude/hooks/clear-verdict.js +2 -2
- package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
- package/dist/clients/claude/hooks/require-verdict.d.ts +1 -1
- package/dist/clients/claude/hooks/require-verdict.d.ts.map +1 -1
- package/dist/clients/claude/hooks/require-verdict.js +1 -1
- package/dist/clients/claude/hooks/require-verdict.js.map +1 -1
- package/dist/clients/claude/hooks/require-verification.d.ts +1 -1
- package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
- package/dist/clients/claude/hooks/require-verification.js +29 -2
- package/dist/clients/claude/hooks/require-verification.js.map +1 -1
- package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-start.js +5 -5
- package/dist/clients/claude/hooks/session-start.js.map +1 -1
- package/dist/clients/claude/hooks/track-action.d.ts +1 -1
- package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/claude/hooks/track-action.js +21 -4
- package/dist/clients/claude/hooks/track-action.js.map +1 -1
- package/dist/clients/claude/index.d.ts +6 -6
- package/dist/clients/claude/index.d.ts.map +1 -1
- package/dist/clients/claude/index.js +28 -30
- package/dist/clients/claude/index.js.map +1 -1
- package/dist/clients/claude/rule.md +1 -0
- package/dist/clients/claude/skill.md +2 -0
- package/dist/clients/cursor/commands/ironbee-verify/SKILL.md +133 -0
- package/dist/clients/cursor/hooks/clear-verdict.d.ts +1 -1
- package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/clear-verdict.js +2 -2
- package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
- package/dist/clients/cursor/hooks/require-verdict.d.ts +1 -1
- package/dist/clients/cursor/hooks/require-verdict.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/require-verdict.js +3 -1
- package/dist/clients/cursor/hooks/require-verdict.js.map +1 -1
- package/dist/clients/cursor/hooks/require-verification.d.ts +1 -1
- package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/require-verification.js +35 -2
- package/dist/clients/cursor/hooks/require-verification.js.map +1 -1
- package/dist/clients/cursor/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/session-start.js +6 -6
- package/dist/clients/cursor/hooks/session-start.js.map +1 -1
- package/dist/clients/cursor/hooks/track-action.d.ts +1 -1
- package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/track-action.js +25 -6
- package/dist/clients/cursor/hooks/track-action.js.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.js +4 -4
- package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
- package/dist/clients/cursor/index.d.ts +6 -6
- package/dist/clients/cursor/index.d.ts.map +1 -1
- package/dist/clients/cursor/index.js +24 -24
- package/dist/clients/cursor/index.js.map +1 -1
- package/dist/clients/cursor/rule.md +1 -0
- package/dist/clients/cursor/skill.md +2 -0
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +47 -22
- package/dist/commands/hook.js.map +1 -1
- package/dist/hooks/core/actions.d.ts +2 -1
- package/dist/hooks/core/actions.d.ts.map +1 -1
- package/dist/hooks/core/actions.js +18 -1
- package/dist/hooks/core/actions.js.map +1 -1
- package/dist/hooks/core/session-state.d.ts +7 -1
- package/dist/hooks/core/session-state.d.ts.map +1 -1
- package/dist/hooks/core/session-state.js +35 -3
- package/dist/hooks/core/session-state.js.map +1 -1
- package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
- package/dist/hooks/core/submit-verdict.js +11 -4
- package/dist/hooks/core/submit-verdict.js.map +1 -1
- package/dist/hooks/core/verification-lifecycle.d.ts +3 -2
- package/dist/hooks/core/verification-lifecycle.d.ts.map +1 -1
- package/dist/hooks/core/verification-lifecycle.js +12 -7
- package/dist/hooks/core/verification-lifecycle.js.map +1 -1
- package/dist/hooks/core/verify-gate.js +2 -2
- package/dist/hooks/core/verify-gate.js.map +1 -1
- package/dist/lib/collector.d.ts +11 -0
- package/dist/lib/collector.d.ts.map +1 -0
- package/dist/lib/collector.js +82 -0
- package/dist/lib/collector.js.map +1 -0
- package/dist/lib/config.d.ts +37 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +59 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/output.d.ts +5 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +10 -0
- package/dist/lib/output.js.map +1 -1
- package/package.json +2 -2
|
@@ -16,13 +16,17 @@
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.run = run;
|
|
18
18
|
const actions_1 = require("../../../hooks/core/actions");
|
|
19
|
+
const session_state_1 = require("../../../hooks/core/session-state");
|
|
19
20
|
const logger_1 = require("../../../lib/logger");
|
|
21
|
+
const output_1 = require("../../../lib/output");
|
|
20
22
|
const stdin_1 = require("../../../lib/stdin");
|
|
21
23
|
const CALL_TOOL_NAME_PATTERN = /callTool\(\s*['"]([^'"]+)['"]/g;
|
|
22
24
|
const MCP_PREFIX = "mcp__browser-devtools__";
|
|
23
25
|
const CURSOR_MCP_PREFIX = "MCP:";
|
|
24
26
|
const TOOL_NAME_PREFIX = "bdt_";
|
|
25
27
|
const EXECUTE_TOOL = `${MCP_PREFIX}${TOOL_NAME_PREFIX}execute`;
|
|
28
|
+
const RECORDING_START_TOOL = `${MCP_PREFIX}${TOOL_NAME_PREFIX}content_start-recording`;
|
|
29
|
+
const RECORDING_STOP_TOOL = `${MCP_PREFIX}${TOOL_NAME_PREFIX}content_stop-recording`;
|
|
26
30
|
/** Convert Cursor's MCP:<name> format to mcp__browser-devtools__<name>. */
|
|
27
31
|
function normalizeMcpToolName(cursorName) {
|
|
28
32
|
if (cursorName.startsWith(CURSOR_MCP_PREFIX)) {
|
|
@@ -89,7 +93,7 @@ function extractNestedToolCalls(toolInput) {
|
|
|
89
93
|
}
|
|
90
94
|
return results;
|
|
91
95
|
}
|
|
92
|
-
function run(projectDir) {
|
|
96
|
+
async function run(projectDir) {
|
|
93
97
|
let input;
|
|
94
98
|
try {
|
|
95
99
|
input = JSON.parse((0, stdin_1.readStdin)());
|
|
@@ -98,6 +102,7 @@ function run(projectDir) {
|
|
|
98
102
|
logger_1.logger.debug(`failed to parse stdin: ${e}`);
|
|
99
103
|
process.stdout.write(JSON.stringify({}));
|
|
100
104
|
process.exit(0);
|
|
105
|
+
return;
|
|
101
106
|
}
|
|
102
107
|
const sessionId = input.conversation_id ?? "default";
|
|
103
108
|
const actionsFile = `${projectDir}/.ironbee/sessions/${sessionId}/actions.jsonl`;
|
|
@@ -109,19 +114,34 @@ function run(projectDir) {
|
|
|
109
114
|
logger_1.logger.debug(`skipping track-action: not a bdt_ tool (${rawToolName})`);
|
|
110
115
|
process.stdout.write(JSON.stringify({}));
|
|
111
116
|
process.exit(0);
|
|
117
|
+
return;
|
|
112
118
|
}
|
|
113
119
|
const toolName = normalizeMcpToolName(rawToolName);
|
|
114
120
|
const timestamp = new Date().toISOString();
|
|
121
|
+
// strip _metadata from tool_input before recording
|
|
122
|
+
const toolInput = (input.tool_input && typeof input.tool_input === "object" && !Array.isArray(input.tool_input))
|
|
123
|
+
? { ...input.tool_input, _metadata: undefined }
|
|
124
|
+
: input.tool_input;
|
|
115
125
|
// record the direct tool call
|
|
116
126
|
const entry = {
|
|
117
127
|
type: "tool_call",
|
|
118
128
|
timestamp,
|
|
119
129
|
tool_name: toolName,
|
|
120
|
-
tool_input:
|
|
130
|
+
tool_input: toolInput,
|
|
121
131
|
tool_response: input.tool_output,
|
|
122
132
|
};
|
|
123
|
-
(0, actions_1.appendAction)(actionsFile, entry);
|
|
133
|
+
await (0, actions_1.appendAction)(actionsFile, entry);
|
|
124
134
|
logger_1.logger.debug(`track-action: ${rawToolName} → ${toolName}`);
|
|
135
|
+
// update recording state
|
|
136
|
+
const sessionDir = `${projectDir}/.ironbee/sessions/${sessionId}`;
|
|
137
|
+
if (toolName === RECORDING_START_TOOL) {
|
|
138
|
+
(0, session_state_1.setRecordingActive)(sessionDir, true);
|
|
139
|
+
logger_1.logger.debug("track-action: recording started");
|
|
140
|
+
}
|
|
141
|
+
else if (toolName === RECORDING_STOP_TOOL) {
|
|
142
|
+
(0, session_state_1.setRecordingActive)(sessionDir, false);
|
|
143
|
+
logger_1.logger.debug("track-action: recording stopped");
|
|
144
|
+
}
|
|
125
145
|
// for execute tool, extract and record nested callTool() invocations
|
|
126
146
|
if (toolName === EXECUTE_TOOL) {
|
|
127
147
|
const nested = extractNestedToolCalls(input.tool_input);
|
|
@@ -132,11 +152,10 @@ function run(projectDir) {
|
|
|
132
152
|
tool_name: call.name,
|
|
133
153
|
tool_input: call.args,
|
|
134
154
|
};
|
|
135
|
-
(0, actions_1.appendAction)(actionsFile, nestedEntry);
|
|
155
|
+
await (0, actions_1.appendAction)(actionsFile, nestedEntry);
|
|
136
156
|
logger_1.logger.debug(`track-action (nested): ${call.name}`);
|
|
137
157
|
}
|
|
138
158
|
}
|
|
139
|
-
|
|
140
|
-
process.exit(0);
|
|
159
|
+
(0, output_1.writeAndExit)(JSON.stringify({}), 0);
|
|
141
160
|
}
|
|
142
161
|
//# sourceMappingURL=track-action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-action.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/track-action.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;
|
|
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":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3D"}
|
|
@@ -15,6 +15,7 @@ exports.run = run;
|
|
|
15
15
|
const verify_gate_1 = require("../../../hooks/core/verify-gate");
|
|
16
16
|
const config_1 = require("../../../lib/config");
|
|
17
17
|
const logger_1 = require("../../../lib/logger");
|
|
18
|
+
const output_1 = require("../../../lib/output");
|
|
18
19
|
const stdin_1 = require("../../../lib/stdin");
|
|
19
20
|
async function run(projectDir) {
|
|
20
21
|
let input;
|
|
@@ -23,8 +24,8 @@ async function run(projectDir) {
|
|
|
23
24
|
}
|
|
24
25
|
catch (e) {
|
|
25
26
|
logger_1.logger.debug(`failed to parse stdin: ${e}`);
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
(0, output_1.writeAndExit)(JSON.stringify({}), 0);
|
|
28
|
+
return;
|
|
28
29
|
}
|
|
29
30
|
const sessionId = input.conversation_id ?? "default";
|
|
30
31
|
(0, logger_1.setLogFile)(`${projectDir}/.ironbee/sessions/${sessionId}/session.log`);
|
|
@@ -43,7 +44,6 @@ async function run(projectDir) {
|
|
|
43
44
|
if (result.action === "block" && result.message) {
|
|
44
45
|
output.followup_message = result.message;
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
-
process.exit(0);
|
|
47
|
+
(0, output_1.writeAndExit)(JSON.stringify(output), 0);
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=verify-gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;
|
|
1
|
+
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAoBH,kBAiCC;AAnDD,iEAAkF;AAClF,gDAA+E;AAC/E,gDAAyD;AACzD,gDAAmD;AACnD,8CAA+C;AAcxC,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA0B,CAAC;IAC/B,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAAwB,CAAC;IAC3D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAA,qBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,eAAe,IAAI,SAAS,CAAC;IAC7D,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IAErD,MAAM,MAAM,GAAqB,MAAM,IAAA,2BAAa,EAAC;QACjD,SAAS;QACT,UAAU,EAAE,GAAG,UAAU,sBAAsB,SAAS,EAAE;QAC1D,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,gBAAgB;QACzE,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,eAAe;QACxE,UAAU,EAAE,IAAA,sBAAa,EAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,uEAAuE;IACvE,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC;IAED,IAAA,qBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -6,12 +6,12 @@ export declare class CursorClient implements IClient {
|
|
|
6
6
|
install(projectDir: string): void;
|
|
7
7
|
uninstall(projectDir: string): void;
|
|
8
8
|
private cleanupArtifacts;
|
|
9
|
-
runVerifyGate(projectDir: string): void
|
|
10
|
-
runClearVerdict(projectDir: string): void
|
|
11
|
-
runTrackAction(projectDir: string): void
|
|
12
|
-
runSessionStart(projectDir: string): void
|
|
13
|
-
runRequireVerdict(projectDir: string): void
|
|
14
|
-
runRequireVerification(projectDir: string): void
|
|
9
|
+
runVerifyGate(projectDir: string): Promise<void>;
|
|
10
|
+
runClearVerdict(projectDir: string): Promise<void>;
|
|
11
|
+
runTrackAction(projectDir: string): Promise<void>;
|
|
12
|
+
runSessionStart(projectDir: string): Promise<void>;
|
|
13
|
+
runRequireVerdict(projectDir: string): Promise<void>;
|
|
14
|
+
runRequireVerification(projectDir: string): Promise<void>;
|
|
15
15
|
private isIronBeeHook;
|
|
16
16
|
private mergeHooksConfig;
|
|
17
17
|
private removeIronBeeHooks;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2ClC,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,GAAG,IAAI;IAiDjC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO1C,OAAO,CAAC,gBAAgB;IAsBX,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;IAItE,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IA4ExB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;CAoBzB"}
|
|
@@ -11,8 +11,8 @@ const track_action_1 = require("./hooks/track-action");
|
|
|
11
11
|
const session_start_1 = require("./hooks/session-start");
|
|
12
12
|
const require_verdict_1 = require("./hooks/require-verdict");
|
|
13
13
|
const require_verification_1 = require("./hooks/require-verification");
|
|
14
|
+
const config_1 = require("../../lib/config");
|
|
14
15
|
const MCP_SERVER_NAME = "browser-devtools";
|
|
15
|
-
const MCP_SERVER_PACKAGE = "browser-devtools-mcp";
|
|
16
16
|
const IRONBEE_HOOK_MARKER = "ironbee";
|
|
17
17
|
// Color for [cursor] label — gray
|
|
18
18
|
function cursorColor(text) {
|
|
@@ -49,8 +49,13 @@ class CursorClient {
|
|
|
49
49
|
const analyzeSkillPath = (0, path_1.join)(analyzeSkillDir, "SKILL.md");
|
|
50
50
|
const analyzeContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "commands", "ironbee-analyze", "SKILL.md"), "utf-8");
|
|
51
51
|
(0, fs_1.writeFileSync)(analyzeSkillPath, analyzeContent);
|
|
52
|
+
const verifySkillDir = (0, path_1.join)(skillsDir, "ironbee-verify");
|
|
53
|
+
(0, fs_1.mkdirSync)(verifySkillDir, { recursive: true });
|
|
54
|
+
const verifySkillPath = (0, path_1.join)(verifySkillDir, "SKILL.md");
|
|
55
|
+
const verifyContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "commands", "ironbee-verify", "SKILL.md"), "utf-8");
|
|
56
|
+
(0, fs_1.writeFileSync)(verifySkillPath, verifyContent);
|
|
52
57
|
const mcpPath = (0, path_1.join)(cursorDir, "mcp.json");
|
|
53
|
-
this.writeMcpConfig(mcpPath);
|
|
58
|
+
this.writeMcpConfig(mcpPath, projectDir);
|
|
54
59
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} hooks ${output_1.pc.dim("→")} ${output_1.pc.dim(hooksPath)}`);
|
|
55
60
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} skill ${output_1.pc.dim("→")} ${output_1.pc.dim(skillPath)}`);
|
|
56
61
|
console.log(` ${output_1.pc.dim("→")} ${cursorColor("[cursor]")} rule ${output_1.pc.dim("→")} ${output_1.pc.dim(rulePath)}`);
|
|
@@ -74,9 +79,11 @@ class CursorClient {
|
|
|
74
79
|
const skillPath = (0, path_1.join)(cursorDir, "skills", "ironbee-verification.md");
|
|
75
80
|
const rulePath = (0, path_1.join)(cursorDir, "rules", "ironbee-verification.mdc");
|
|
76
81
|
const analyzeSkillPath = (0, path_1.join)(cursorDir, "skills", "ironbee-analyze", "SKILL.md");
|
|
82
|
+
const verifySkillPath = (0, path_1.join)(cursorDir, "skills", "ironbee-verify", "SKILL.md");
|
|
77
83
|
this.removeFile(skillPath);
|
|
78
84
|
this.removeFile(rulePath);
|
|
79
85
|
this.removeFile(analyzeSkillPath);
|
|
86
|
+
this.removeFile(verifySkillPath);
|
|
80
87
|
// remove ironbee hooks from hooks.json
|
|
81
88
|
const hooksPath = (0, path_1.join)(cursorDir, "hooks.json");
|
|
82
89
|
this.removeIronBeeHooks(hooksPath);
|
|
@@ -84,23 +91,23 @@ class CursorClient {
|
|
|
84
91
|
const mcpPath = (0, path_1.join)(cursorDir, "mcp.json");
|
|
85
92
|
this.removeMcpServer(mcpPath);
|
|
86
93
|
}
|
|
87
|
-
runVerifyGate(projectDir) {
|
|
88
|
-
(0, verify_gate_1.run)(projectDir);
|
|
94
|
+
async runVerifyGate(projectDir) {
|
|
95
|
+
await (0, verify_gate_1.run)(projectDir);
|
|
89
96
|
}
|
|
90
|
-
runClearVerdict(projectDir) {
|
|
91
|
-
(0, clear_verdict_1.run)(projectDir);
|
|
97
|
+
async runClearVerdict(projectDir) {
|
|
98
|
+
await (0, clear_verdict_1.run)(projectDir);
|
|
92
99
|
}
|
|
93
|
-
runTrackAction(projectDir) {
|
|
94
|
-
(0, track_action_1.run)(projectDir);
|
|
100
|
+
async runTrackAction(projectDir) {
|
|
101
|
+
await (0, track_action_1.run)(projectDir);
|
|
95
102
|
}
|
|
96
|
-
runSessionStart(projectDir) {
|
|
97
|
-
(0, session_start_1.run)(projectDir);
|
|
103
|
+
async runSessionStart(projectDir) {
|
|
104
|
+
await (0, session_start_1.run)(projectDir);
|
|
98
105
|
}
|
|
99
|
-
runRequireVerdict(projectDir) {
|
|
100
|
-
(0, require_verdict_1.run)(projectDir);
|
|
106
|
+
async runRequireVerdict(projectDir) {
|
|
107
|
+
await (0, require_verdict_1.run)(projectDir);
|
|
101
108
|
}
|
|
102
|
-
runRequireVerification(projectDir) {
|
|
103
|
-
(0, require_verification_1.run)(projectDir);
|
|
109
|
+
async runRequireVerification(projectDir) {
|
|
110
|
+
await (0, require_verification_1.run)(projectDir);
|
|
104
111
|
}
|
|
105
112
|
isIronBeeHook(entry) {
|
|
106
113
|
return entry.command.includes(IRONBEE_HOOK_MARKER);
|
|
@@ -208,7 +215,7 @@ class CursorClient {
|
|
|
208
215
|
(0, fs_1.unlinkSync)(filePath);
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
|
-
writeMcpConfig(mcpPath) {
|
|
218
|
+
writeMcpConfig(mcpPath, projectDir) {
|
|
212
219
|
let config = { mcpServers: {} };
|
|
213
220
|
if ((0, fs_1.existsSync)(mcpPath)) {
|
|
214
221
|
try {
|
|
@@ -222,15 +229,8 @@ class CursorClient {
|
|
|
222
229
|
config = { mcpServers: {} };
|
|
223
230
|
}
|
|
224
231
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
args: ["-y", MCP_SERVER_PACKAGE],
|
|
228
|
-
env: {
|
|
229
|
-
BROWSER_DEVTOOLS_INSTALL_CHROMIUM: "true",
|
|
230
|
-
TOOL_NAME_PREFIX: "bdt_",
|
|
231
|
-
TOOL_INPUT_METADATA_ENABLE: "true",
|
|
232
|
-
},
|
|
233
|
-
};
|
|
232
|
+
const mcpEntry = (0, config_1.getMcpServerEntry)(projectDir);
|
|
233
|
+
config.mcpServers[MCP_SERVER_NAME] = mcpEntry;
|
|
234
234
|
(0, fs_1.writeFileSync)(mcpPath, JSON.stringify(config, null, 2));
|
|
235
235
|
}
|
|
236
236
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":";;;AAAA,2BAAoF;AACpF,+BAA4B;AAE5B,6CAA0C;AAC1C,6CAA8C;AAC9C,qDAA+D;AAC/D,yDAAmE;AACnE,uDAAiE;AACjE,yDAAmE;AACnE,6DAAuE;AACvE,uEAAiF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/cursor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ You are responsible for the full application lifecycle during verification:
|
|
|
12
12
|
- **Start** the dev server before navigating to any page (e.g. `npm run dev`, `docker compose up -d`)
|
|
13
13
|
- **Stop** the dev server after verification is complete (e.g. `Ctrl+C`, `docker compose down`)
|
|
14
14
|
If the application is already running, skip the start step. If the build fails, fix it before proceeding.
|
|
15
|
+
**Do NOT guess ports.** After starting, check the actual port (e.g. `docker compose ps`, process output, config files) before navigating.
|
|
15
16
|
|
|
16
17
|
Required verification steps:
|
|
17
18
|
1. Build and start the application if not already running
|
|
@@ -25,6 +25,8 @@ You are responsible for managing the application during verification:
|
|
|
25
25
|
|
|
26
26
|
If the application is already running, skip the start step. If the build fails, fix the build error before proceeding with verification.
|
|
27
27
|
|
|
28
|
+
**Do NOT guess ports.** After starting the application, check the actual port (e.g. `docker compose ps`, process output, or config files) before navigating. Never assume a default port.
|
|
29
|
+
|
|
28
30
|
## Flow
|
|
29
31
|
1. Implement your changes (write/edit code)
|
|
30
32
|
2. **Build and start** the application if not already running
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,WAAW,EAAE,OACiD,CAAC"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -5,7 +5,9 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const registry_1 = require("../clients/registry");
|
|
6
6
|
const submit_verdict_1 = require("../hooks/core/submit-verdict");
|
|
7
7
|
const verification_lifecycle_1 = require("../hooks/core/verification-lifecycle");
|
|
8
|
+
const config_1 = require("../lib/config");
|
|
8
9
|
const logger_1 = require("../lib/logger");
|
|
10
|
+
const output_1 = require("../lib/output");
|
|
9
11
|
const stdin_1 = require("../lib/stdin");
|
|
10
12
|
function resolveClient(clientName) {
|
|
11
13
|
const name = clientName ?? process.env.IRONBEE_CLIENT;
|
|
@@ -26,60 +28,78 @@ exports.hookCommand
|
|
|
26
28
|
.command("verify-gate")
|
|
27
29
|
.description("Stop hook — gates task completion until browser verification passes")
|
|
28
30
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
29
|
-
.action((options) => {
|
|
31
|
+
.action(async (options) => {
|
|
30
32
|
const client = resolveClient(options.client);
|
|
33
|
+
if (!client) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
31
36
|
const projectDir = client.resolveProjectDir();
|
|
32
|
-
client.runVerifyGate(projectDir);
|
|
37
|
+
await client.runVerifyGate(projectDir);
|
|
33
38
|
});
|
|
34
39
|
exports.hookCommand
|
|
35
40
|
.command("clear-verdict")
|
|
36
41
|
.description("PostToolUse hook — clears stale verdict after code edits")
|
|
37
42
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
38
|
-
.action((options) => {
|
|
43
|
+
.action(async (options) => {
|
|
39
44
|
const client = resolveClient(options.client);
|
|
45
|
+
if (!client) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
40
48
|
const projectDir = client.resolveProjectDir();
|
|
41
|
-
client.runClearVerdict(projectDir);
|
|
49
|
+
await client.runClearVerdict(projectDir);
|
|
42
50
|
});
|
|
43
51
|
exports.hookCommand
|
|
44
52
|
.command("track-action")
|
|
45
53
|
.description("PostToolUse hook — tracks browser-devtools tool calls in actions.jsonl")
|
|
46
54
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
47
|
-
.action((options) => {
|
|
55
|
+
.action(async (options) => {
|
|
48
56
|
const client = resolveClient(options.client);
|
|
57
|
+
if (!client) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
49
60
|
const projectDir = client.resolveProjectDir();
|
|
50
|
-
client.runTrackAction(projectDir);
|
|
61
|
+
await client.runTrackAction(projectDir);
|
|
51
62
|
});
|
|
52
63
|
exports.hookCommand
|
|
53
64
|
.command("session-start")
|
|
54
65
|
.description("SessionStart hook — records session start in actions.jsonl")
|
|
55
66
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
56
|
-
.action((options) => {
|
|
67
|
+
.action(async (options) => {
|
|
57
68
|
const client = resolveClient(options.client);
|
|
69
|
+
if (!client) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
58
72
|
const projectDir = client.resolveProjectDir();
|
|
59
|
-
client.runSessionStart(projectDir);
|
|
73
|
+
await client.runSessionStart(projectDir);
|
|
60
74
|
});
|
|
61
75
|
exports.hookCommand
|
|
62
76
|
.command("require-verdict")
|
|
63
77
|
.description("PreToolUse hook — blocks file edits until verdict is submitted after browser tool usage")
|
|
64
78
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
65
|
-
.action((options) => {
|
|
79
|
+
.action(async (options) => {
|
|
66
80
|
const client = resolveClient(options.client);
|
|
81
|
+
if (!client) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
67
84
|
const projectDir = client.resolveProjectDir();
|
|
68
|
-
client.runRequireVerdict(projectDir);
|
|
85
|
+
await client.runRequireVerdict(projectDir);
|
|
69
86
|
});
|
|
70
87
|
exports.hookCommand
|
|
71
88
|
.command("require-verification")
|
|
72
89
|
.description("PreToolUse hook — blocks browser tools until verification-start is called")
|
|
73
90
|
.option("--client <name>", "client name (overrides IRONBEE_CLIENT env var)")
|
|
74
|
-
.action((options) => {
|
|
91
|
+
.action(async (options) => {
|
|
75
92
|
const client = resolveClient(options.client);
|
|
93
|
+
if (!client) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
76
96
|
const projectDir = client.resolveProjectDir();
|
|
77
|
-
client.runRequireVerification(projectDir);
|
|
97
|
+
await client.runRequireVerification(projectDir);
|
|
78
98
|
});
|
|
79
99
|
exports.hookCommand
|
|
80
100
|
.command("verification-start")
|
|
81
101
|
.description("Start a verification cycle (called by agent via Bash)")
|
|
82
|
-
.action(() => {
|
|
102
|
+
.action(async () => {
|
|
83
103
|
const projectDir = process.env.IRONBEE_PROJECT_DIR
|
|
84
104
|
?? process.env.CLAUDE_PROJECT_DIR
|
|
85
105
|
?? process.env.CURSOR_PROJECT_DIR
|
|
@@ -99,18 +119,25 @@ exports.hookCommand
|
|
|
99
119
|
}
|
|
100
120
|
const sessionDir = `${projectDir}/.ironbee/sessions/${sessionId}`;
|
|
101
121
|
(0, logger_1.setLogFile)(`${sessionDir}/session.log`);
|
|
102
|
-
const
|
|
122
|
+
const config = (0, config_1.loadConfig)(projectDir);
|
|
123
|
+
const recordingEnabled = config.recording?.enable === true;
|
|
124
|
+
const result = await (0, verification_lifecycle_1.startVerification)({
|
|
103
125
|
sessionId,
|
|
104
126
|
sessionDir,
|
|
105
127
|
actionsFile: `${sessionDir}/actions.jsonl`,
|
|
128
|
+
recordingEnabled,
|
|
106
129
|
});
|
|
107
|
-
|
|
108
|
-
|
|
130
|
+
const output = { verification_id: result.verificationId, trace_id: result.traceId };
|
|
131
|
+
if (recordingEnabled) {
|
|
132
|
+
output.recording_required = true;
|
|
133
|
+
output.message = "Recording is required. Call bdt_content_start-recording BEFORE using any other browser tools.";
|
|
134
|
+
}
|
|
135
|
+
(0, output_1.writeAndExit)(JSON.stringify(output) + "\n", 0);
|
|
109
136
|
});
|
|
110
137
|
exports.hookCommand
|
|
111
138
|
.command("verification-end")
|
|
112
139
|
.description("End a verification cycle (called by agent via Bash)")
|
|
113
|
-
.action(() => {
|
|
140
|
+
.action(async () => {
|
|
114
141
|
const projectDir = process.env.IRONBEE_PROJECT_DIR
|
|
115
142
|
?? process.env.CLAUDE_PROJECT_DIR
|
|
116
143
|
?? process.env.CURSOR_PROJECT_DIR
|
|
@@ -130,14 +157,13 @@ exports.hookCommand
|
|
|
130
157
|
}
|
|
131
158
|
const sessionDir = `${projectDir}/.ironbee/sessions/${sessionId}`;
|
|
132
159
|
(0, logger_1.setLogFile)(`${sessionDir}/session.log`);
|
|
133
|
-
const result = (0, verification_lifecycle_1.endVerification)({
|
|
160
|
+
const result = await (0, verification_lifecycle_1.endVerification)({
|
|
134
161
|
sessionId,
|
|
135
162
|
sessionDir,
|
|
136
163
|
actionsFile: `${sessionDir}/actions.jsonl`,
|
|
137
164
|
});
|
|
138
165
|
if (result.success) {
|
|
139
|
-
|
|
140
|
-
process.exit(0);
|
|
166
|
+
(0, output_1.writeAndExit)(JSON.stringify({ verification_id: result.verificationId, trace_id: result.traceId }) + "\n", 0);
|
|
141
167
|
}
|
|
142
168
|
else {
|
|
143
169
|
process.stderr.write(result.message + "\n");
|
|
@@ -186,8 +212,7 @@ exports.hookCommand
|
|
|
186
212
|
verdictJson,
|
|
187
213
|
});
|
|
188
214
|
if (result.success) {
|
|
189
|
-
|
|
190
|
-
process.exit(0);
|
|
215
|
+
(0, output_1.writeAndExit)(result.message + "\n", 0);
|
|
191
216
|
}
|
|
192
217
|
else {
|
|
193
218
|
process.stderr.write(result.message + "\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,kDAAiD;AACjD,iEAAqF;AACrF,iFAA0I;AAC1I,0CAA2C;AAC3C,wCAAyC;AAEzC,SAAS,aAAa,CAAC,UAA8B;IACjD,MAAM,IAAI,GAAuB,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAwB,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,yCAAyC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAEY,QAAA,WAAW,GAAY,IAAI,mBAAO,CAAC,MAAM,CAAC;KAClD,WAAW,CAAC,yDAAyD,CAAC,CAAC;AAE5E,mBAAW;KACN,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,kDAAiD;AACjD,iEAAqF;AACrF,iFAA0I;AAC1I,0CAA2C;AAC3C,0CAA2C;AAC3C,0CAA6C;AAC7C,wCAAyC;AAEzC,SAAS,aAAa,CAAC,UAA8B;IACjD,MAAM,IAAI,GAAuB,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAwB,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC;IAErD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,yCAAyC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAEY,QAAA,WAAW,GAAY,IAAI,mBAAO,CAAC,MAAM,CAAC;KAClD,WAAW,CAAC,yDAAyD,CAAC,CAAC;AAE5E,mBAAW;KACN,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,wEAAwE,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,yFAAyF,CAAC;KACtG,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAiB,EAAE;IAC1D,MAAM,MAAM,GAAwB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACxB,MAAM,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAmB,EAAE;IAC9B,MAAM,UAAU,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB;WACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAErB,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA4B,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAuB,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,IAAA,mBAAU,EAAC,GAAG,UAAU,cAAc,CAAC,CAAC;IAExC,MAAM,MAAM,GAAkC,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAY,MAAM,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpE,MAAM,MAAM,GAA4B,MAAM,IAAA,0CAAiB,EAAC;QAC5D,SAAS;QACT,UAAU;QACV,WAAW,EAAE,GAAG,UAAU,gBAAgB;QAC1C,gBAAgB;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC7G,IAAI,gBAAgB,EAAE,CAAC;QACnB,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,+FAA+F,CAAC;IACrH,CAAC;IACD,IAAA,qBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAmB,EAAE;IAC9B,MAAM,UAAU,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB;WACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAErB,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA4B,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAuB,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,IAAA,mBAAU,EAAC,GAAG,UAAU,cAAc,CAAC,CAAC;IAExC,MAAM,MAAM,GAA0B,MAAM,IAAA,wCAAe,EAAC;QACxD,SAAS;QACT,UAAU;QACV,WAAW,EAAE,GAAG,UAAU,gBAAgB;KAC7C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAA,qBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACjH,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,mBAAW;KACN,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAiB,EAAE;IAC9D,MAAM,UAAU,GAAW,OAAO,CAAC,UAAU;WACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB;WAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB;WAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAErB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACD,WAAW,GAAG,IAAA,iBAAS,GAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,uCAAuC;IACvC,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA4B,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAuB,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,IAAA,mBAAU,EAAC,GAAG,UAAU,cAAc,CAAC,CAAC;IAExC,MAAM,MAAM,GAAwB,MAAM,IAAA,iCAAgB,EAAC;QACvD,SAAS;QACT,UAAU;QACV,WAAW,EAAE,GAAG,UAAU,eAAe;QACzC,WAAW,EAAE,GAAG,UAAU,gBAAgB;QAC1C,WAAW;KACd,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAA,qBAAY,EAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Event types: session_start, tool_call, verification_requested, etc.
|
|
6
6
|
*/
|
|
7
7
|
export interface ActionEntry {
|
|
8
|
+
id?: string;
|
|
8
9
|
type: string;
|
|
9
10
|
timestamp: string;
|
|
10
11
|
[key: string]: unknown;
|
|
@@ -52,7 +53,7 @@ export interface FixEndAction extends ActionEntry {
|
|
|
52
53
|
type: "fix_end";
|
|
53
54
|
fix_id: string;
|
|
54
55
|
}
|
|
55
|
-
export declare function appendAction(actionsFile: string, entry: ActionEntry): void
|
|
56
|
+
export declare function appendAction(actionsFile: string, entry: ActionEntry): Promise<void>;
|
|
56
57
|
export declare function readActionsSinceLastMarker(actionsFile: string, markerType: string): ActionEntry[];
|
|
57
58
|
export declare function getToolCallsSinceLastVerification(actionsFile: string): ToolCallAction[];
|
|
58
59
|
export declare function getToolCallsSinceLastFileEdit(actionsFile: string): ToolCallAction[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,WAAW;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA4B,SAAQ,WAAW;IAC5D,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACnD,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACnD,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IACxD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACtD,IAAI,EAAE,kBAAkB,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBzF;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CA6BjG;AAED,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAGvF;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAGnF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAGzE;AAED,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAG9E"}
|
|
@@ -13,9 +13,14 @@ exports.getToolCallsSinceLastFileEdit = getToolCallsSinceLastFileEdit;
|
|
|
13
13
|
exports.hasToolCallsSinceLastVerdict = hasToolCallsSinceLastVerdict;
|
|
14
14
|
exports.hasFileEditsSinceLastVerification = hasFileEditsSinceLastVerification;
|
|
15
15
|
const fs_1 = require("fs");
|
|
16
|
+
const crypto_1 = require("crypto");
|
|
16
17
|
const path_1 = require("path");
|
|
17
18
|
const logger_1 = require("../../lib/logger");
|
|
18
|
-
|
|
19
|
+
const collector_1 = require("../../lib/collector");
|
|
20
|
+
async function appendAction(actionsFile, entry) {
|
|
21
|
+
if (!entry.id) {
|
|
22
|
+
entry.id = (0, crypto_1.randomUUID)();
|
|
23
|
+
}
|
|
19
24
|
try {
|
|
20
25
|
(0, fs_1.mkdirSync)((0, path_1.dirname)(actionsFile), { recursive: true });
|
|
21
26
|
(0, fs_1.appendFileSync)(actionsFile, JSON.stringify(entry) + "\n");
|
|
@@ -23,6 +28,18 @@ function appendAction(actionsFile, entry) {
|
|
|
23
28
|
catch (e) {
|
|
24
29
|
logger_1.logger.debug(`failed to append action to ${actionsFile}: ${e}`);
|
|
25
30
|
}
|
|
31
|
+
// tool_call events are sent by browser-devtools-mcp directly, skip collector here
|
|
32
|
+
if (entry.type !== "tool_call") {
|
|
33
|
+
try {
|
|
34
|
+
// actionsFile: {projectDir}/.ironbee/sessions/{sessionId}/actions.jsonl
|
|
35
|
+
const sessionId = (0, path_1.basename)((0, path_1.dirname)(actionsFile));
|
|
36
|
+
const projectDir = (0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)(actionsFile))));
|
|
37
|
+
await (0, collector_1.sendToCollector)(entry, sessionId, projectDir);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
logger_1.logger.debug(`failed to send action to collector: ${e}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
26
43
|
}
|
|
27
44
|
function readActionsSinceLastMarker(actionsFile, markerType) {
|
|
28
45
|
if (!(0, fs_1.existsSync)(actionsFile)) {
|