@ironbee-ai/cli 0.2.0 → 0.3.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 +30 -3
- package/README.md +14 -0
- package/dist/assets/banner.txt +9 -6
- package/dist/clients/claude/hooks/session-start.d.ts +1 -1
- package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-start.js +3 -1
- package/dist/clients/claude/hooks/session-start.js.map +1 -1
- package/dist/clients/claude/hooks/verify-gate.d.ts +1 -1
- package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/claude/hooks/verify-gate.js +2 -2
- package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
- package/dist/clients/cursor/hooks/session-start.d.ts +1 -1
- package/dist/clients/cursor/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/session-start.js +3 -1
- package/dist/clients/cursor/hooks/session-start.js.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.d.ts +1 -1
- package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.js +2 -2
- package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
- package/dist/commands/hook.js +2 -2
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +3 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +3 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/hooks/core/submit-verdict.d.ts +1 -1
- package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
- package/dist/hooks/core/submit-verdict.js +3 -1
- package/dist/hooks/core/submit-verdict.js.map +1 -1
- package/dist/hooks/core/verify-gate.d.ts +1 -1
- package/dist/hooks/core/verify-gate.d.ts.map +1 -1
- package/dist/hooks/core/verify-gate.js +15 -13
- package/dist/hooks/core/verify-gate.js.map +1 -1
- package/dist/lib/telemetry.d.ts +23 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +265 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +7 -0
- package/dist/scripts/postinstall.d.ts.map +1 -0
- package/dist/scripts/postinstall.js +12 -0
- package/dist/scripts/postinstall.js.map +1 -0
- package/dist/scripts/preuninstall.d.ts +8 -0
- package/dist/scripts/preuninstall.d.ts.map +1 -0
- package/dist/scripts/preuninstall.js +13 -0
- package/dist/scripts/preuninstall.js.map +1 -0
- package/package.json +14 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## 0.1.1 (2026-03-14)
|
|
3
|
+
## 0.3.0 (2026-03-17)
|
|
6
4
|
|
|
7
5
|
All notable changes to this project will be documented in this file.
|
|
6
|
+
|
|
7
|
+
## [0.2.1](https://github.com/ironbee-ai/ironbee-cli/compare/v0.2.0...v0.2.1) (2026-03-16)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Refactors
|
|
11
|
+
|
|
12
|
+
* **banner:** update banner for the terminals without color support ([3865968](https://github.com/ironbee-ai/ironbee-cli/commit/3865968))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [0.2.0](https://github.com/ironbee-ai/ironbee-cli/compare/v0.1.1...v0.2.0) (2026-03-16)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* **cursor:** initial impl ([#2](https://github.com/ironbee-ai/ironbee-cli/issues/2)) ([872a91e](https://github.com/ironbee-ai/ironbee-cli/commit/872a91e))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* **build:** fix banner.txt path resolution for npm global install ([1830699](https://github.com/ironbee-ai/ironbee-cli/commit/1830699))
|
|
26
|
+
* **readme:** fix license and CI badges ([42ea61c](https://github.com/ironbee-ai/ironbee-cli/commit/42ea61c))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## [0.1.1](https://github.com/ironbee-ai/ironbee-cli/compare/v0.1.0...v0.1.1) (2026-03-14)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
* **claude:** initial impl ([#1](https://github.com/ironbee-ai/ironbee-cli/issues/1)) ([960c59d](https://github.com/ironbee-ai/ironbee-cli/commit/960c59d))
|
package/README.md
CHANGED
|
@@ -173,6 +173,20 @@ Each AI session gets its own directory under `.ironbee/sessions/<session-id>/`:
|
|
|
173
173
|
|
|
174
174
|
This means parallel sessions (e.g., multiple Claude Code instances) don't interfere with each other.
|
|
175
175
|
|
|
176
|
+
## Telemetry
|
|
177
|
+
|
|
178
|
+
IronBee collects anonymous usage data to help improve the product. No source code, file contents, or personally identifiable information is ever sent.
|
|
179
|
+
|
|
180
|
+
Events collected: install/uninstall, session start, verdict submissions (pass/fail status only), and verification gate decisions.
|
|
181
|
+
|
|
182
|
+
To opt out, set the environment variable:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
export IRONBEE_TELEMETRY=false
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Or set `telemetryEnabled: false` in `~/.ironbee/telemetry.json`.
|
|
189
|
+
|
|
176
190
|
## Development
|
|
177
191
|
|
|
178
192
|
```bash
|
package/dist/assets/banner.txt
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
|
|
2
|
+
██╗ ██████╗ ██████╗ ███╗ ██╗ ██████╗ ███████╗ ███████╗
|
|
3
|
+
██║ ██╔══██╗ ██╔═══██╗ ████╗ ██║ ██╔══██╗ ██╔════╝ ██╔════╝
|
|
4
|
+
██║ ██████╔╝ ██║ ██║ ██╔██╗ ██║ ██████╔╝ █████╗ █████╗
|
|
5
|
+
██║ ██╔══██╗ ██║ ██║ ██║╚██╗██║ ██╔══██╗ ██╔══╝ ██╔══╝
|
|
6
|
+
██║ ██║ ██║ ╚██████╔╝ ██║ ╚████║ ██████╔╝ ███████╗ ███████╗
|
|
7
|
+
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚══════╝ ╚══════╝
|
|
8
|
+
|
|
9
|
+
The Verification Layer for Agentic Development
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* Bash commands (like submit-verdict) can access it automatically,
|
|
7
7
|
* and outputs the session ID and submit-verdict command to stdout.
|
|
8
8
|
*/
|
|
9
|
-
export declare function run(projectDir: string): void
|
|
9
|
+
export declare function run(projectDir: string): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=session-start.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/session-start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/session-start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE3D"}
|
|
@@ -12,7 +12,8 @@ exports.run = run;
|
|
|
12
12
|
const actions_1 = require("../../../hooks/core/actions");
|
|
13
13
|
const logger_1 = require("../../../lib/logger");
|
|
14
14
|
const stdin_1 = require("../../../lib/stdin");
|
|
15
|
-
|
|
15
|
+
const telemetry_1 = require("../../../lib/telemetry");
|
|
16
|
+
async function run(projectDir) {
|
|
16
17
|
let input;
|
|
17
18
|
try {
|
|
18
19
|
input = JSON.parse((0, stdin_1.readStdin)());
|
|
@@ -31,6 +32,7 @@ function run(projectDir) {
|
|
|
31
32
|
source: input.source,
|
|
32
33
|
};
|
|
33
34
|
(0, actions_1.appendAction)(actionsFile, entry);
|
|
35
|
+
await (0, telemetry_1.trackSessionStart)("claude", sessionId);
|
|
34
36
|
logger_1.logger.debug(`session-start: ${sessionId} (${input.source ?? "unknown"})`);
|
|
35
37
|
const verdictPass = JSON.stringify({
|
|
36
38
|
session_id: sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/session-start.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/session-start.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAYH,kBAkEC;AA5ED,yDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;AAC/C,sDAA2D;AAOpD,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA8B,CAAC;IACnC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA4B,CAAC;IAC/D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,MAAM,WAAW,GAAW,GAAG,UAAU,sBAAsB,SAAS,gBAAgB,CAAC;IACzF,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAuB;QAC9B,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;KACvB,CAAC;IAEF,IAAA,sBAAY,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,IAAA,6BAAiB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,eAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,KAAK,KAAK,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAW,IAAI,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,CAAC,qCAAqC,CAAC;QACrD,MAAM,EAAE,CAAC,2BAA2B,EAAE,0BAA0B,CAAC;QACjE,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,WAAW,GAAW,IAAI,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,CAAC,qCAAqC,CAAC;QACrD,MAAM,EAAE,CAAC,cAAc,EAAE,4BAA4B,CAAC;QACtD,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,iCAAiC,EAAE,sBAAsB,CAAC;KACtE,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;cAIX,SAAS;;;;;;;;UAQb,WAAW;;;UAGX,WAAW;;;;;;CAMpB,CAAC,CAAC;IAEC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,
|
|
1
|
+
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC3D"}
|
|
@@ -14,7 +14,7 @@ const verify_gate_1 = require("../../../hooks/core/verify-gate");
|
|
|
14
14
|
const config_1 = require("../../../lib/config");
|
|
15
15
|
const logger_1 = require("../../../lib/logger");
|
|
16
16
|
const stdin_1 = require("../../../lib/stdin");
|
|
17
|
-
function run(projectDir) {
|
|
17
|
+
async function run(projectDir) {
|
|
18
18
|
let input;
|
|
19
19
|
try {
|
|
20
20
|
input = JSON.parse((0, stdin_1.readStdin)());
|
|
@@ -26,7 +26,7 @@ function run(projectDir) {
|
|
|
26
26
|
const sessionId = input.session_id ?? "default";
|
|
27
27
|
(0, logger_1.setLogFile)(`${projectDir}/.ironbee/sessions/${sessionId}/session.log`);
|
|
28
28
|
const config = (0, config_1.loadConfig)(projectDir);
|
|
29
|
-
const result = (0, verify_gate_1.runVerifyGate)({
|
|
29
|
+
const result = await (0, verify_gate_1.runVerifyGate)({
|
|
30
30
|
sessionId,
|
|
31
31
|
actionsFile: `${projectDir}/.ironbee/sessions/${sessionId}/actions.jsonl`,
|
|
32
32
|
verdictFile: `${projectDir}/.ironbee/sessions/${sessionId}/verdict.json`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAWH,kBAkCC;AA3CD,iEAAkF;AAClF,gDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;
|
|
1
|
+
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAWH,kBAkCC;AA3CD,iEAAkF;AAClF,gDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;AAMxC,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,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,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,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,gBAAgB;QACzE,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,eAAe;QACxE,SAAS,EAAE,GAAG,UAAU,sBAAsB,SAAS,UAAU;QACjE,UAAU,EAAE,IAAA,sBAAa,EAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* and outputs the session ID and submit-verdict instructions via
|
|
6
6
|
* additional_context (Cursor's field for injecting into agent context).
|
|
7
7
|
*/
|
|
8
|
-
export declare function run(projectDir: string): void
|
|
8
|
+
export declare function run(projectDir: string): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=session-start.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/session-start.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/session-start.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE3D"}
|
|
@@ -11,7 +11,8 @@ exports.run = run;
|
|
|
11
11
|
const actions_1 = require("../../../hooks/core/actions");
|
|
12
12
|
const logger_1 = require("../../../lib/logger");
|
|
13
13
|
const stdin_1 = require("../../../lib/stdin");
|
|
14
|
-
|
|
14
|
+
const telemetry_1 = require("../../../lib/telemetry");
|
|
15
|
+
async function run(projectDir) {
|
|
15
16
|
let input;
|
|
16
17
|
try {
|
|
17
18
|
input = JSON.parse((0, stdin_1.readStdin)());
|
|
@@ -31,6 +32,7 @@ function run(projectDir) {
|
|
|
31
32
|
source: "cursor",
|
|
32
33
|
};
|
|
33
34
|
(0, actions_1.appendAction)(actionsFile, entry);
|
|
35
|
+
await (0, telemetry_1.trackSessionStart)("cursor", sessionId);
|
|
34
36
|
logger_1.logger.debug(`session-start: ${sessionId}`);
|
|
35
37
|
const verdictPass = JSON.stringify({
|
|
36
38
|
session_id: sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/session-start.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/session-start.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAiBH,kBAkEC;AAjFD,yDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;AAC/C,sDAA2D;AAYpD,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA8B,CAAC;IACnC,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAA4B,CAAC;IAC/D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,eAAe,IAAI,SAAS,CAAC;IAC7D,MAAM,WAAW,GAAW,GAAG,UAAU,sBAAsB,SAAS,gBAAgB,CAAC;IACzF,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAuB;QAC9B,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,QAAQ;KACnB,CAAC;IAEF,IAAA,sBAAY,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,IAAA,6BAAiB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,eAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAW,IAAI,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,CAAC,qCAAqC,CAAC;QACrD,MAAM,EAAE,CAAC,2BAA2B,EAAE,0BAA0B,CAAC;QACjE,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,WAAW,GAAW,IAAI,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,CAAC,qCAAqC,CAAC;QACrD,MAAM,EAAE,CAAC,cAAc,EAAE,4BAA4B,CAAC;QACtD,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,iCAAiC,EAAE,sBAAsB,CAAC;KACtE,CAAC,CAAC;IAEH,MAAM,OAAO,GAAW;cACd,SAAS;;;;;;;;UAQb,WAAW;;;UAGX,WAAW;;;;2FAIsE,CAAC;IAExF,MAAM,MAAM,GAA6B;QACrC,kBAAkB,EAAE,OAAO;KAC9B,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* mechanically preventing completion until verification passes
|
|
10
10
|
* (up to Cursor's loop_limit, default 5).
|
|
11
11
|
*/
|
|
12
|
-
export declare function run(projectDir: string): void
|
|
12
|
+
export declare function run(projectDir: string): Promise<void>;
|
|
13
13
|
//# sourceMappingURL=verify-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,
|
|
1
|
+
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC3D"}
|
|
@@ -16,7 +16,7 @@ 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
18
|
const stdin_1 = require("../../../lib/stdin");
|
|
19
|
-
function run(projectDir) {
|
|
19
|
+
async function run(projectDir) {
|
|
20
20
|
let input;
|
|
21
21
|
try {
|
|
22
22
|
input = JSON.parse((0, stdin_1.readStdin)());
|
|
@@ -29,7 +29,7 @@ function run(projectDir) {
|
|
|
29
29
|
const sessionId = input.conversation_id ?? "default";
|
|
30
30
|
(0, logger_1.setLogFile)(`${projectDir}/.ironbee/sessions/${sessionId}/session.log`);
|
|
31
31
|
const config = (0, config_1.loadConfig)(projectDir);
|
|
32
|
-
const result = (0, verify_gate_1.runVerifyGate)({
|
|
32
|
+
const result = await (0, verify_gate_1.runVerifyGate)({
|
|
33
33
|
sessionId,
|
|
34
34
|
actionsFile: `${projectDir}/.ironbee/sessions/${sessionId}/actions.jsonl`,
|
|
35
35
|
verdictFile: `${projectDir}/.ironbee/sessions/${sessionId}/verdict.json`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAmBH,kBAkCC;AAnDD,iEAAkF;AAClF,gDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;
|
|
1
|
+
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/cursor/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAmBH,kBAkCC;AAnDD,iEAAkF;AAClF,gDAA+E;AAC/E,gDAAyD;AACzD,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,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,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,gBAAgB;QACzE,WAAW,EAAE,GAAG,UAAU,sBAAsB,SAAS,eAAe;QACxE,SAAS,EAAE,GAAG,UAAU,sBAAsB,SAAS,UAAU;QACjE,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -70,7 +70,7 @@ exports.hookCommand
|
|
|
70
70
|
.command("submit-verdict")
|
|
71
71
|
.description("Submit verification verdict (called by agent via Bash)")
|
|
72
72
|
.option("--project-dir <dir>", "project directory (overrides env vars)")
|
|
73
|
-
.action((options) => {
|
|
73
|
+
.action(async (options) => {
|
|
74
74
|
const projectDir = options.projectDir
|
|
75
75
|
?? process.env.IRONBEE_PROJECT_DIR
|
|
76
76
|
?? process.env.CLAUDE_PROJECT_DIR
|
|
@@ -100,7 +100,7 @@ exports.hookCommand
|
|
|
100
100
|
}
|
|
101
101
|
const sessionDir = `${projectDir}/.ironbee/sessions/${sessionId}`;
|
|
102
102
|
(0, logger_1.setLogFile)(`${sessionDir}/session.log`);
|
|
103
|
-
const result = (0, submit_verdict_1.runSubmitVerdict)({
|
|
103
|
+
const result = await (0, submit_verdict_1.runSubmitVerdict)({
|
|
104
104
|
sessionId,
|
|
105
105
|
verdictFile: `${sessionDir}/verdict.json`,
|
|
106
106
|
actionsFile: `${sessionDir}/actions.jsonl`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,cAAc,EAAE,OA8CvB,CAAC"}
|
package/dist/commands/install.js
CHANGED
|
@@ -7,6 +7,7 @@ const path_1 = require("path");
|
|
|
7
7
|
const registry_1 = require("../clients/registry");
|
|
8
8
|
const claude_1 = require("../clients/claude");
|
|
9
9
|
const output_1 = require("../lib/output");
|
|
10
|
+
const telemetry_1 = require("../lib/telemetry");
|
|
10
11
|
function clientNames() {
|
|
11
12
|
const names = registry_1.REGISTERED_CLIENTS.map((c) => c.name);
|
|
12
13
|
return names.join(", ");
|
|
@@ -15,7 +16,7 @@ exports.installCommand = new commander_1.Command("install")
|
|
|
15
16
|
.description("Install IronBee hooks and guidance files into a project")
|
|
16
17
|
.argument("[project-dir]", "target project directory", ".")
|
|
17
18
|
.option("--client <name>", `client to install for (${clientNames()}), or "all"`)
|
|
18
|
-
.action((dir, options) => {
|
|
19
|
+
.action(async (dir, options) => {
|
|
19
20
|
const projectDir = (0, path_1.resolve)(dir);
|
|
20
21
|
if (!(0, fs_1.existsSync)(projectDir)) {
|
|
21
22
|
output_1.log.error(`Directory not found: ${projectDir}`);
|
|
@@ -53,5 +54,6 @@ exports.installCommand = new commander_1.Command("install")
|
|
|
53
54
|
output_1.log.label("project", output_1.pc.dim(projectDir));
|
|
54
55
|
output_1.log.blank();
|
|
55
56
|
output_1.log.success(`IronBee installed. ${output_1.pc.dim("Restart your AI coding client to activate the hooks.")}`);
|
|
57
|
+
await (0, telemetry_1.trackInstall)(clients.map((c) => c.name));
|
|
56
58
|
});
|
|
57
59
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAAgC;AAChC,+BAA+B;AAE/B,kDAAoF;AACpF,8CAAsD;AACtD,0CAAwC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,gBAAgB,EAAE,OA6CzB,CAAC"}
|
|
@@ -6,6 +6,7 @@ const fs_1 = require("fs");
|
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const registry_1 = require("../clients/registry");
|
|
8
8
|
const output_1 = require("../lib/output");
|
|
9
|
+
const telemetry_1 = require("../lib/telemetry");
|
|
9
10
|
function clientNames() {
|
|
10
11
|
const names = registry_1.REGISTERED_CLIENTS.map((c) => c.name);
|
|
11
12
|
return names.join(", ");
|
|
@@ -14,7 +15,7 @@ exports.uninstallCommand = new commander_1.Command("uninstall")
|
|
|
14
15
|
.description("Remove IronBee hooks and guidance files from a project")
|
|
15
16
|
.argument("[project-dir]", "target project directory", ".")
|
|
16
17
|
.option("--client <name>", `client to uninstall for (${clientNames()}), or "all"`)
|
|
17
|
-
.action((dir, options) => {
|
|
18
|
+
.action(async (dir, options) => {
|
|
18
19
|
const projectDir = (0, path_1.resolve)(dir);
|
|
19
20
|
if (!(0, fs_1.existsSync)(projectDir)) {
|
|
20
21
|
output_1.log.error(`Directory not found: ${projectDir}`);
|
|
@@ -50,5 +51,6 @@ exports.uninstallCommand = new commander_1.Command("uninstall")
|
|
|
50
51
|
}
|
|
51
52
|
output_1.log.blank();
|
|
52
53
|
output_1.log.success(`IronBee removed. ${output_1.pc.dim("Restart your AI coding client to apply changes.")}`);
|
|
54
|
+
await (0, telemetry_1.trackUninstall)(clients.map((c) => c.name));
|
|
53
55
|
});
|
|
54
56
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAAwC;AACxC,+BAAqC;AAErC,kDAAoF;AACpF,0CAAwC;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAAwC;AACxC,+BAAqC;AAErC,kDAAoF;AACpF,0CAAwC;AACxC,gDAAkD;AAElD,SAAS,WAAW;IAChB,MAAM,KAAK,GAAa,6BAAkB,CAAC,GAAG,CAAC,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAEY,QAAA,gBAAgB,GAAY,IAAI,mBAAO,CAAC,WAAW,CAAC;KAC5D,WAAW,CAAC,wDAAwD,CAAC;KACrE,QAAQ,CAAC,eAAe,EAAE,0BAA0B,EAAE,GAAG,CAAC;KAC1D,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,WAAW,EAAE,aAAa,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAA4B,EAAiB,EAAE;IACvE,MAAM,UAAU,GAAW,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC;IAExC,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,YAAG,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAkB,CAAC;IAEvB,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,GAAG,6BAAkB,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,KAAK,GAAwB,IAAA,qBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,YAAG,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,MAAM,iBAAiB,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,IAAA,wBAAa,EAAC,UAAU,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,YAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACtD,OAAO;QACX,CAAC;IACL,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,oCAAoC;IACpC,MAAM,UAAU,GAAW,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QACzB,IAAA,WAAM,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,YAAG,CAAC,IAAI,CAAC,WAAW,WAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAG,CAAC,KAAK,EAAE,CAAC;IACZ,YAAG,CAAC,OAAO,CAAC,oBAAoB,WAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;IAC7F,MAAM,IAAA,0BAAc,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC"}
|
|
@@ -17,5 +17,5 @@ export interface SubmitVerdictResult {
|
|
|
17
17
|
success: boolean;
|
|
18
18
|
message: string;
|
|
19
19
|
}
|
|
20
|
-
export declare function runSubmitVerdict(input: SubmitVerdictInput): SubmitVerdictResult
|
|
20
|
+
export declare function runSubmitVerdict(input: SubmitVerdictInput): Promise<SubmitVerdictResult>;
|
|
21
21
|
//# sourceMappingURL=submit-verdict.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-verdict.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/submit-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"submit-verdict.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/submit-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAoCD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8E9F"}
|
|
@@ -13,6 +13,7 @@ exports.runSubmitVerdict = runSubmitVerdict;
|
|
|
13
13
|
const fs_1 = require("fs");
|
|
14
14
|
const path_1 = require("path");
|
|
15
15
|
const logger_1 = require("../../lib/logger");
|
|
16
|
+
const telemetry_1 = require("../../lib/telemetry");
|
|
16
17
|
const actions_1 = require("./actions");
|
|
17
18
|
function getLastVerdictStatus(actionsFile) {
|
|
18
19
|
if (!(0, fs_1.existsSync)(actionsFile)) {
|
|
@@ -39,7 +40,7 @@ function getLastVerdictStatus(actionsFile) {
|
|
|
39
40
|
return undefined;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
function runSubmitVerdict(input) {
|
|
43
|
+
async function runSubmitVerdict(input) {
|
|
43
44
|
const { sessionId, verdictFile, actionsFile, verdictJson } = input;
|
|
44
45
|
// parse JSON
|
|
45
46
|
let verdict;
|
|
@@ -98,6 +99,7 @@ function runSubmitVerdict(input) {
|
|
|
98
99
|
verdict: verdict,
|
|
99
100
|
};
|
|
100
101
|
(0, actions_1.appendAction)(actionsFile, entry);
|
|
102
|
+
await (0, telemetry_1.trackVerdictWrite)(sessionId, verdict.status);
|
|
101
103
|
logger_1.logger.debug(`submit-verdict: session=${sessionId} status=${verdict.status}`);
|
|
102
104
|
if (verdict.status === "pass") {
|
|
103
105
|
const fixesInfo = verdict.fixes?.length ? ` Fixes: ${verdict.fixes.join(", ")}` : "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-verdict.js","sourceRoot":"","sources":["../../../src/hooks/core/submit-verdict.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"submit-verdict.js","sourceRoot":"","sources":["../../../src/hooks/core/submit-verdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,5 +16,5 @@ export interface VerifyGateResult {
|
|
|
16
16
|
action: "allow" | "block";
|
|
17
17
|
message?: string;
|
|
18
18
|
}
|
|
19
|
-
export declare function runVerifyGate(input: VerifyGateInput): VerifyGateResult
|
|
19
|
+
export declare function runVerifyGate(input: VerifyGateInput): Promise<VerifyGateResult>;
|
|
20
20
|
//# sourceMappingURL=verify-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AA+DD,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6LrF"}
|
|
@@ -11,6 +11,7 @@ exports.runVerifyGate = runVerifyGate;
|
|
|
11
11
|
const fs_1 = require("fs");
|
|
12
12
|
const path_1 = require("path");
|
|
13
13
|
const logger_1 = require("../../lib/logger");
|
|
14
|
+
const telemetry_1 = require("../../lib/telemetry");
|
|
14
15
|
const actions_1 = require("./actions");
|
|
15
16
|
const DEFAULT_MAX_RETRIES = 3;
|
|
16
17
|
function verdictExamplePass(sessionId) {
|
|
@@ -53,7 +54,7 @@ function cleanup(...files) {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
function runVerifyGate(input) {
|
|
57
|
+
async function runVerifyGate(input) {
|
|
57
58
|
const { sessionId: sid, actionsFile, verdictFile, retryFile, maxRetries: inputMaxRetries } = input;
|
|
58
59
|
const maxRetries = inputMaxRetries ?? DEFAULT_MAX_RETRIES;
|
|
59
60
|
logger_1.logger.debug(`verify-gate: session=${sid} verdictExists=${(0, fs_1.existsSync)(verdictFile)}`);
|
|
@@ -61,7 +62,7 @@ function runVerifyGate(input) {
|
|
|
61
62
|
const hasEdit = (0, actions_1.hasFileEditsSinceLastVerification)(actionsFile);
|
|
62
63
|
if (!hasEdit) {
|
|
63
64
|
logger_1.logger.debug("no code edits detected, allowing completion");
|
|
64
|
-
recordMarker(actionsFile, "allow", "no_edits");
|
|
65
|
+
await recordMarker(actionsFile, sid, "allow", "no_edits");
|
|
65
66
|
return { action: "allow" };
|
|
66
67
|
}
|
|
67
68
|
// ── Check 2: Were required IronBee tools used? ─────────
|
|
@@ -98,7 +99,7 @@ You made code changes but did not verify them through the browser.
|
|
|
98
99
|
}
|
|
99
100
|
if (missingTools.length > 0) {
|
|
100
101
|
const missing = missingTools.map((t) => ` - ${t.name} (${t.purpose})`).join("\n");
|
|
101
|
-
recordMarker(actionsFile, "block", "incomplete_tools");
|
|
102
|
+
await recordMarker(actionsFile, sid, "block", "incomplete_tools");
|
|
102
103
|
return {
|
|
103
104
|
action: "block",
|
|
104
105
|
message: `INCOMPLETE VERIFICATION.
|
|
@@ -112,7 +113,7 @@ Run the missing tools, functionally test your changes, then submit your verdict:
|
|
|
112
113
|
}
|
|
113
114
|
// ── Check 3: Verdict file exists? ──────────────────────
|
|
114
115
|
if (!(0, fs_1.existsSync)(verdictFile)) {
|
|
115
|
-
recordMarker(actionsFile, "block", "no_verdict");
|
|
116
|
+
await recordMarker(actionsFile, sid, "block", "no_verdict");
|
|
116
117
|
return {
|
|
117
118
|
action: "block",
|
|
118
119
|
message: `VERDICT MISSING.
|
|
@@ -130,7 +131,7 @@ Submit your verdict:
|
|
|
130
131
|
catch (e) {
|
|
131
132
|
logger_1.logger.debug(`failed to parse verdict ${verdictFile}: ${e}`);
|
|
132
133
|
cleanup(verdictFile);
|
|
133
|
-
recordMarker(actionsFile, "block", "invalid_verdict");
|
|
134
|
+
await recordMarker(actionsFile, sid, "block", "invalid_verdict");
|
|
134
135
|
return {
|
|
135
136
|
action: "block",
|
|
136
137
|
message: `INVALID VERDICT. Submit valid JSON:
|
|
@@ -142,7 +143,7 @@ Submit your verdict:
|
|
|
142
143
|
const checks = verdict.checks;
|
|
143
144
|
if (!Array.isArray(pages) || pages.length === 0) {
|
|
144
145
|
cleanup(verdictFile);
|
|
145
|
-
recordMarker(actionsFile, "block", "invalid_verdict");
|
|
146
|
+
await recordMarker(actionsFile, sid, "block", "invalid_verdict");
|
|
146
147
|
return {
|
|
147
148
|
action: "block",
|
|
148
149
|
message: `VERDICT REJECTED: missing pages_tested.
|
|
@@ -153,7 +154,7 @@ Your verdict must include which pages you tested.
|
|
|
153
154
|
}
|
|
154
155
|
if (!Array.isArray(checks) || checks.length === 0) {
|
|
155
156
|
cleanup(verdictFile);
|
|
156
|
-
recordMarker(actionsFile, "block", "invalid_verdict");
|
|
157
|
+
await recordMarker(actionsFile, sid, "block", "invalid_verdict");
|
|
157
158
|
return {
|
|
158
159
|
action: "block",
|
|
159
160
|
message: `VERDICT REJECTED: missing checks.
|
|
@@ -164,7 +165,7 @@ Your verdict must describe what you functionally tested.
|
|
|
164
165
|
}
|
|
165
166
|
if (typeof verdict.console_errors !== "number" || typeof verdict.network_failures !== "number") {
|
|
166
167
|
cleanup(verdictFile);
|
|
167
|
-
recordMarker(actionsFile, "block", "invalid_verdict");
|
|
168
|
+
await recordMarker(actionsFile, sid, "block", "invalid_verdict");
|
|
168
169
|
return {
|
|
169
170
|
action: "block",
|
|
170
171
|
message: `VERDICT REJECTED: missing console_errors or network_failures count.
|
|
@@ -177,7 +178,7 @@ Your verdict must include error counts.
|
|
|
177
178
|
if (verdict.status === "pass") {
|
|
178
179
|
logger_1.logger.debug("verdict passed, allowing completion");
|
|
179
180
|
cleanup(retryFile);
|
|
180
|
-
recordMarker(actionsFile, "allow", "verdict_pass");
|
|
181
|
+
await recordMarker(actionsFile, sid, "allow", "verdict_pass");
|
|
181
182
|
return { action: "allow" };
|
|
182
183
|
}
|
|
183
184
|
if (verdict.status === "fail") {
|
|
@@ -194,7 +195,7 @@ Your verdict must include error counts.
|
|
|
194
195
|
const issues = (verdict.issues ?? ["unknown"]).join("\n - ");
|
|
195
196
|
if (retries >= maxRetries) {
|
|
196
197
|
cleanup(verdictFile, retryFile);
|
|
197
|
-
recordMarker(actionsFile, "allow", "max_retries_exceeded");
|
|
198
|
+
await recordMarker(actionsFile, sid, "allow", "max_retries_exceeded");
|
|
198
199
|
return {
|
|
199
200
|
action: "allow",
|
|
200
201
|
message: `VERIFICATION FAILED ${maxRetries} TIMES. Allowing completion.
|
|
@@ -206,7 +207,7 @@ Report these issues in your final response.`,
|
|
|
206
207
|
};
|
|
207
208
|
}
|
|
208
209
|
cleanup(verdictFile);
|
|
209
|
-
recordMarker(actionsFile, "block", "verdict_fail");
|
|
210
|
+
await recordMarker(actionsFile, sid, "block", "verdict_fail");
|
|
210
211
|
return {
|
|
211
212
|
action: "block",
|
|
212
213
|
message: `VERIFICATION FAILED (attempt ${retries}/${maxRetries}).
|
|
@@ -220,14 +221,14 @@ Submit verdict: echo '<verdict-json>' | ironbee hook submit-verdict`,
|
|
|
220
221
|
}
|
|
221
222
|
// ── Unknown status ─────────────────────────────────────
|
|
222
223
|
cleanup(verdictFile);
|
|
223
|
-
recordMarker(actionsFile, "block", "invalid_verdict");
|
|
224
|
+
await recordMarker(actionsFile, sid, "block", "invalid_verdict");
|
|
224
225
|
return {
|
|
225
226
|
action: "block",
|
|
226
227
|
message: `INVALID VERDICT STATUS: "${verdict.status}". Status must be "pass" or "fail".
|
|
227
228
|
echo '${verdictExamplePass(sid)}' | ironbee hook submit-verdict`,
|
|
228
229
|
};
|
|
229
230
|
}
|
|
230
|
-
function recordMarker(actionsFile, action, reason) {
|
|
231
|
+
async function recordMarker(actionsFile, sessionId, action, reason) {
|
|
231
232
|
const marker = {
|
|
232
233
|
type: "verification_requested",
|
|
233
234
|
timestamp: new Date().toISOString(),
|
|
@@ -235,5 +236,6 @@ function recordMarker(actionsFile, action, reason) {
|
|
|
235
236
|
reason,
|
|
236
237
|
};
|
|
237
238
|
(0, actions_1.appendAction)(actionsFile, marker);
|
|
239
|
+
await (0, telemetry_1.trackVerificationRequested)(sessionId, action, reason);
|
|
238
240
|
}
|
|
239
241
|
//# sourceMappingURL=verify-gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IronBee CLI — Telemetry
|
|
3
|
+
*
|
|
4
|
+
* Sends anonymous usage events to PostHog.
|
|
5
|
+
* Uses ~/.ironbee/telemetry.json for anonymousId.
|
|
6
|
+
* Opt-out: IRONBEE_TELEMETRY=false or telemetryEnabled=false in telemetry.json.
|
|
7
|
+
*
|
|
8
|
+
* Events:
|
|
9
|
+
* - npm_installed / npm_uninstalled: npm lifecycle
|
|
10
|
+
* - cli_installed / cli_uninstalled: ironbee install/uninstall
|
|
11
|
+
* - session_start: session-start hook
|
|
12
|
+
* - verdict_write: submit-verdict hook
|
|
13
|
+
*
|
|
14
|
+
* All functions are safe — never throw, never block CLI for more than 3s.
|
|
15
|
+
*/
|
|
16
|
+
export declare function trackInstall(clients: string[]): Promise<void>;
|
|
17
|
+
export declare function trackUninstall(clients: string[]): Promise<void>;
|
|
18
|
+
export declare function trackNpmInstall(): Promise<void>;
|
|
19
|
+
export declare function trackNpmUninstall(): Promise<void>;
|
|
20
|
+
export declare function trackSessionStart(client: string, sessionId: string): Promise<void>;
|
|
21
|
+
export declare function trackVerdictWrite(sessionId: string, status: string): Promise<void>;
|
|
22
|
+
export declare function trackVerificationRequested(sessionId: string, action: string, reason: string): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqIH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAarD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAavD;AAID,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxF;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxF;AAED,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBjH"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IronBee CLI — Telemetry
|
|
4
|
+
*
|
|
5
|
+
* Sends anonymous usage events to PostHog.
|
|
6
|
+
* Uses ~/.ironbee/telemetry.json for anonymousId.
|
|
7
|
+
* Opt-out: IRONBEE_TELEMETRY=false or telemetryEnabled=false in telemetry.json.
|
|
8
|
+
*
|
|
9
|
+
* Events:
|
|
10
|
+
* - npm_installed / npm_uninstalled: npm lifecycle
|
|
11
|
+
* - cli_installed / cli_uninstalled: ironbee install/uninstall
|
|
12
|
+
* - session_start: session-start hook
|
|
13
|
+
* - verdict_write: submit-verdict hook
|
|
14
|
+
*
|
|
15
|
+
* All functions are safe — never throw, never block CLI for more than 3s.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.trackInstall = trackInstall;
|
|
19
|
+
exports.trackUninstall = trackUninstall;
|
|
20
|
+
exports.trackNpmInstall = trackNpmInstall;
|
|
21
|
+
exports.trackNpmUninstall = trackNpmUninstall;
|
|
22
|
+
exports.trackSessionStart = trackSessionStart;
|
|
23
|
+
exports.trackVerdictWrite = trackVerdictWrite;
|
|
24
|
+
exports.trackVerificationRequested = trackVerificationRequested;
|
|
25
|
+
const crypto_1 = require("crypto");
|
|
26
|
+
const fs_1 = require("fs");
|
|
27
|
+
const https_1 = require("https");
|
|
28
|
+
const os_1 = require("os");
|
|
29
|
+
const path_1 = require("path");
|
|
30
|
+
const version_1 = require("./version");
|
|
31
|
+
const logger_1 = require("./logger");
|
|
32
|
+
const DEFAULT_POSTHOG_API_KEY = "phc_ekFEnQ9ipk0F1BbO0KCkaD8OaYPa4bIqqUoxsCfeFsy";
|
|
33
|
+
const POSTHOG_API_KEY = process.env.POSTHOG_API_KEY ?? DEFAULT_POSTHOG_API_KEY;
|
|
34
|
+
const POSTHOG_HOST = "us.i.posthog.com";
|
|
35
|
+
const POSTHOG_PATH = "/i/v0/e/";
|
|
36
|
+
const SEND_TIMEOUT_MS = 3000;
|
|
37
|
+
const CONFIG_DIR = (0, path_1.join)((0, os_1.homedir)(), ".ironbee");
|
|
38
|
+
const CONFIG_FILE = (0, path_1.join)(CONFIG_DIR, "telemetry.json");
|
|
39
|
+
function readOrCreateConfig() {
|
|
40
|
+
try {
|
|
41
|
+
let existing = {};
|
|
42
|
+
if ((0, fs_1.existsSync)(CONFIG_FILE)) {
|
|
43
|
+
try {
|
|
44
|
+
const raw = JSON.parse((0, fs_1.readFileSync)(CONFIG_FILE, "utf-8"));
|
|
45
|
+
existing = {
|
|
46
|
+
anonymousId: typeof raw.anonymousId === "string" ? raw.anonymousId : undefined,
|
|
47
|
+
telemetryEnabled: typeof raw.telemetryEnabled === "boolean" ? raw.telemetryEnabled : undefined,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
logger_1.logger.debug(`telemetry: corrupt config: ${e}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let dirty = false;
|
|
55
|
+
if (!existing.anonymousId) {
|
|
56
|
+
existing.anonymousId = (0, crypto_1.randomUUID)();
|
|
57
|
+
dirty = true;
|
|
58
|
+
}
|
|
59
|
+
if (existing.telemetryEnabled === undefined) {
|
|
60
|
+
existing.telemetryEnabled = true;
|
|
61
|
+
dirty = true;
|
|
62
|
+
}
|
|
63
|
+
if (dirty) {
|
|
64
|
+
try {
|
|
65
|
+
if (!(0, fs_1.existsSync)(CONFIG_DIR)) {
|
|
66
|
+
(0, fs_1.mkdirSync)(CONFIG_DIR, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
(0, fs_1.writeFileSync)(CONFIG_FILE, JSON.stringify(existing, null, 2), "utf-8");
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
logger_1.logger.debug(`telemetry: failed to write config: ${e}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return existing;
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
logger_1.logger.debug(`telemetry: readOrCreateConfig failed: ${e}`);
|
|
78
|
+
return { anonymousId: "", telemetryEnabled: false };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function isTelemetryEnabled() {
|
|
82
|
+
try {
|
|
83
|
+
if (process.env.IRONBEE_TELEMETRY === "false") {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return readOrCreateConfig().telemetryEnabled === true;
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
logger_1.logger.debug(`telemetry: isTelemetryEnabled failed: ${e}`);
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function sendEvent(event, distinctId, properties) {
|
|
94
|
+
return new Promise((resolve) => {
|
|
95
|
+
try {
|
|
96
|
+
const body = JSON.stringify({
|
|
97
|
+
api_key: POSTHOG_API_KEY,
|
|
98
|
+
event,
|
|
99
|
+
distinct_id: distinctId,
|
|
100
|
+
properties,
|
|
101
|
+
});
|
|
102
|
+
const timeout = setTimeout(() => {
|
|
103
|
+
logger_1.logger.debug(`telemetry timeout: ${event}`);
|
|
104
|
+
resolve();
|
|
105
|
+
}, SEND_TIMEOUT_MS);
|
|
106
|
+
const req = (0, https_1.request)({
|
|
107
|
+
hostname: POSTHOG_HOST,
|
|
108
|
+
path: POSTHOG_PATH,
|
|
109
|
+
method: "POST",
|
|
110
|
+
headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) },
|
|
111
|
+
timeout: SEND_TIMEOUT_MS,
|
|
112
|
+
}, (res) => {
|
|
113
|
+
res.on("data", () => { });
|
|
114
|
+
res.on("end", () => { clearTimeout(timeout); resolve(); });
|
|
115
|
+
res.on("close", () => { clearTimeout(timeout); resolve(); });
|
|
116
|
+
});
|
|
117
|
+
req.on("error", () => { clearTimeout(timeout); resolve(); });
|
|
118
|
+
req.on("timeout", () => { clearTimeout(timeout); req.destroy(); resolve(); });
|
|
119
|
+
req.write(body);
|
|
120
|
+
req.end();
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
logger_1.logger.debug(`telemetry: sendEvent failed: ${e}`);
|
|
124
|
+
resolve();
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function buildBaseProperties() {
|
|
129
|
+
return {
|
|
130
|
+
source: "ironbee-cli",
|
|
131
|
+
cli_version: (0, version_1.getLocalVersion)(),
|
|
132
|
+
node_version: process.version,
|
|
133
|
+
os_platform: process.platform,
|
|
134
|
+
os_arch: process.arch,
|
|
135
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
136
|
+
timestamp: new Date().toISOString(),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// ── Awaitable (install/uninstall, npm lifecycle) ─────────
|
|
140
|
+
async function trackInstall(clients) {
|
|
141
|
+
try {
|
|
142
|
+
if (!isTelemetryEnabled()) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const config = readOrCreateConfig();
|
|
146
|
+
if (!config.anonymousId) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await sendEvent("cli_installed", config.anonymousId, {
|
|
150
|
+
...buildBaseProperties(),
|
|
151
|
+
clients,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
logger_1.logger.debug("telemetry failed: cli_installed");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async function trackUninstall(clients) {
|
|
159
|
+
try {
|
|
160
|
+
if (!isTelemetryEnabled()) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const config = readOrCreateConfig();
|
|
164
|
+
if (!config.anonymousId) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
await sendEvent("cli_uninstalled", config.anonymousId, {
|
|
168
|
+
...buildBaseProperties(),
|
|
169
|
+
clients,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
logger_1.logger.debug("telemetry failed: cli_uninstalled");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function trackNpmInstall() {
|
|
177
|
+
try {
|
|
178
|
+
if (!isTelemetryEnabled()) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const config = readOrCreateConfig();
|
|
182
|
+
if (!config.anonymousId) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
await sendEvent("npm_installed", config.anonymousId, buildBaseProperties());
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
logger_1.logger.debug("telemetry failed: npm_installed");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async function trackNpmUninstall() {
|
|
192
|
+
try {
|
|
193
|
+
if (!isTelemetryEnabled()) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const config = readOrCreateConfig();
|
|
197
|
+
if (!config.anonymousId) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
await sendEvent("npm_uninstalled", config.anonymousId, buildBaseProperties());
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
logger_1.logger.debug("telemetry failed: npm_uninstalled");
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// ── Awaitable (hooks) ────────────────────────────────────
|
|
207
|
+
async function trackSessionStart(client, sessionId) {
|
|
208
|
+
try {
|
|
209
|
+
if (!isTelemetryEnabled()) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const config = readOrCreateConfig();
|
|
213
|
+
if (!config.anonymousId) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
await sendEvent("session_start", config.anonymousId, {
|
|
217
|
+
...buildBaseProperties(),
|
|
218
|
+
client,
|
|
219
|
+
session_id: sessionId,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
logger_1.logger.debug(`telemetry failed: session_start: ${e}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async function trackVerdictWrite(sessionId, status) {
|
|
227
|
+
try {
|
|
228
|
+
if (!isTelemetryEnabled()) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const config = readOrCreateConfig();
|
|
232
|
+
if (!config.anonymousId) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
await sendEvent("verdict_write", config.anonymousId, {
|
|
236
|
+
...buildBaseProperties(),
|
|
237
|
+
session_id: sessionId,
|
|
238
|
+
verdict_status: status,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
logger_1.logger.debug(`telemetry failed: verdict_write: ${e}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function trackVerificationRequested(sessionId, action, reason) {
|
|
246
|
+
try {
|
|
247
|
+
if (!isTelemetryEnabled()) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const config = readOrCreateConfig();
|
|
251
|
+
if (!config.anonymousId) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
await sendEvent("verification_requested", config.anonymousId, {
|
|
255
|
+
...buildBaseProperties(),
|
|
256
|
+
session_id: sessionId,
|
|
257
|
+
action,
|
|
258
|
+
reason,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
catch (e) {
|
|
262
|
+
logger_1.logger.debug(`telemetry failed: verification_requested: ${e}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../src/scripts/postinstall.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* npm postinstall — sends npm_installed telemetry event.
|
|
5
|
+
* Runs after `npm install -g @ironbee-ai/cli`.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const telemetry_1 = require("../lib/telemetry");
|
|
9
|
+
(0, telemetry_1.trackNpmInstall)()
|
|
10
|
+
.then(() => process.exit(0))
|
|
11
|
+
.catch(() => process.exit(0));
|
|
12
|
+
//# sourceMappingURL=postinstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../../src/scripts/postinstall.ts"],"names":[],"mappings":";;AACA;;;GAGG;;AAEH,gDAAmD;AAEnD,IAAA,2BAAe,GAAE;KACZ,IAAI,CAAC,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjC,KAAK,CAAC,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* npm preuninstall — sends npm_uninstalled telemetry event.
|
|
4
|
+
* Runs before `npm uninstall -g @ironbee-ai/cli`.
|
|
5
|
+
* Must await completion since files are deleted after this script exits.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=preuninstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preuninstall.d.ts","sourceRoot":"","sources":["../../src/scripts/preuninstall.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* npm preuninstall — sends npm_uninstalled telemetry event.
|
|
5
|
+
* Runs before `npm uninstall -g @ironbee-ai/cli`.
|
|
6
|
+
* Must await completion since files are deleted after this script exits.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const telemetry_1 = require("../lib/telemetry");
|
|
10
|
+
(0, telemetry_1.trackNpmUninstall)()
|
|
11
|
+
.then(() => process.exit(0))
|
|
12
|
+
.catch(() => process.exit(0));
|
|
13
|
+
//# sourceMappingURL=preuninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preuninstall.js","sourceRoot":"","sources":["../../src/scripts/preuninstall.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,gDAAqD;AAErD,IAAA,6BAAiB,GAAE;KACd,IAAI,CAAC,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjC,KAAK,CAAC,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ironbee-ai/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "The CLI for IronBee — The Verification Layer for Agentic Development",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"ironbee": "dist/index.js"
|
|
@@ -22,19 +22,29 @@
|
|
|
22
22
|
"clean": "rm -rf dist",
|
|
23
23
|
"release:patch": "release-it --ci -VV",
|
|
24
24
|
"release:minor": "release-it minor --ci -VV",
|
|
25
|
-
"release:major": "release-it major --ci -VV"
|
|
25
|
+
"release:major": "release-it major --ci -VV",
|
|
26
|
+
"postinstall": "node dist/scripts/postinstall.js || true",
|
|
27
|
+
"preuninstall": "node dist/scripts/preuninstall.js || true"
|
|
26
28
|
},
|
|
27
29
|
"keywords": [
|
|
28
30
|
"ai",
|
|
31
|
+
"ai-agent",
|
|
29
32
|
"verification",
|
|
30
33
|
"browser-testing",
|
|
31
34
|
"claude",
|
|
32
35
|
"claude-code",
|
|
36
|
+
"cursor",
|
|
37
|
+
"cursor-ide",
|
|
33
38
|
"mcp",
|
|
39
|
+
"mcp-server",
|
|
34
40
|
"browser-devtools",
|
|
35
41
|
"coding-agent",
|
|
42
|
+
"agentic",
|
|
43
|
+
"devtools",
|
|
36
44
|
"e2e",
|
|
37
|
-
"qa"
|
|
45
|
+
"qa",
|
|
46
|
+
"testing",
|
|
47
|
+
"automation"
|
|
38
48
|
],
|
|
39
49
|
"author": "IronBee",
|
|
40
50
|
"license": "MIT",
|