@ironbee-ai/cli 0.3.0 → 0.4.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +11 -8
  2. package/README.md +104 -3
  3. package/dist/analysis/code-changes.d.ts +22 -0
  4. package/dist/analysis/code-changes.d.ts.map +1 -0
  5. package/dist/analysis/code-changes.js +141 -0
  6. package/dist/analysis/code-changes.js.map +1 -0
  7. package/dist/analysis/cross-session.d.ts +34 -0
  8. package/dist/analysis/cross-session.d.ts.map +1 -0
  9. package/dist/analysis/cross-session.js +230 -0
  10. package/dist/analysis/cross-session.js.map +1 -0
  11. package/dist/analysis/fix-effectiveness.d.ts +16 -0
  12. package/dist/analysis/fix-effectiveness.d.ts.map +1 -0
  13. package/dist/analysis/fix-effectiveness.js +99 -0
  14. package/dist/analysis/fix-effectiveness.js.map +1 -0
  15. package/dist/analysis/scoring.d.ts +15 -0
  16. package/dist/analysis/scoring.d.ts.map +1 -0
  17. package/dist/analysis/scoring.js +57 -0
  18. package/dist/analysis/scoring.js.map +1 -0
  19. package/dist/analysis/time-analysis.d.ts +22 -0
  20. package/dist/analysis/time-analysis.d.ts.map +1 -0
  21. package/dist/analysis/time-analysis.js +174 -0
  22. package/dist/analysis/time-analysis.js.map +1 -0
  23. package/dist/analysis/verdict-details.d.ts +23 -0
  24. package/dist/analysis/verdict-details.d.ts.map +1 -0
  25. package/dist/analysis/verdict-details.js +59 -0
  26. package/dist/analysis/verdict-details.js.map +1 -0
  27. package/dist/analysis/verification-quality.d.ts +19 -0
  28. package/dist/analysis/verification-quality.d.ts.map +1 -0
  29. package/dist/analysis/verification-quality.js +182 -0
  30. package/dist/analysis/verification-quality.js.map +1 -0
  31. package/dist/clients/base.d.ts +2 -0
  32. package/dist/clients/base.d.ts.map +1 -1
  33. package/dist/clients/claude/commands/ironbee-analyze.md +42 -0
  34. package/dist/clients/claude/hooks/clear-verdict.js +1 -1
  35. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  36. package/dist/clients/claude/hooks/require-verification.d.ts +15 -0
  37. package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -0
  38. package/dist/clients/claude/hooks/require-verification.js +61 -0
  39. package/dist/clients/claude/hooks/require-verification.js.map +1 -0
  40. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  41. package/dist/clients/claude/hooks/session-start.js +7 -0
  42. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  43. package/dist/clients/claude/hooks/track-action.d.ts +1 -1
  44. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  45. package/dist/clients/claude/hooks/track-action.js +58 -13
  46. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  47. package/dist/clients/claude/hooks/verify-gate.js +1 -1
  48. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  49. package/dist/clients/claude/index.d.ts +2 -0
  50. package/dist/clients/claude/index.d.ts.map +1 -1
  51. package/dist/clients/claude/index.js +43 -9
  52. package/dist/clients/claude/index.js.map +1 -1
  53. package/dist/clients/claude/rule.md +9 -7
  54. package/dist/clients/claude/skill.md +11 -8
  55. package/dist/clients/claude/skills/ironbee-analyze.md +39 -0
  56. package/dist/clients/cursor/commands/ironbee-analyze/SKILL.md +48 -0
  57. package/dist/clients/cursor/hooks/clear-verdict.js +1 -1
  58. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  59. package/dist/clients/cursor/hooks/require-verification.d.ts +15 -0
  60. package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -0
  61. package/dist/clients/cursor/hooks/require-verification.js +63 -0
  62. package/dist/clients/cursor/hooks/require-verification.js.map +1 -0
  63. package/dist/clients/cursor/hooks/session-start.d.ts.map +1 -1
  64. package/dist/clients/cursor/hooks/session-start.js +3 -0
  65. package/dist/clients/cursor/hooks/session-start.js.map +1 -1
  66. package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
  67. package/dist/clients/cursor/hooks/track-action.js +62 -12
  68. package/dist/clients/cursor/hooks/track-action.js.map +1 -1
  69. package/dist/clients/cursor/hooks/verify-gate.js +1 -1
  70. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  71. package/dist/clients/cursor/index.d.ts +2 -0
  72. package/dist/clients/cursor/index.d.ts.map +1 -1
  73. package/dist/clients/cursor/index.js +31 -6
  74. package/dist/clients/cursor/index.js.map +1 -1
  75. package/dist/clients/cursor/rule.md +9 -7
  76. package/dist/clients/cursor/skill.md +11 -8
  77. package/dist/commands/analyze.d.ts +3 -0
  78. package/dist/commands/analyze.d.ts.map +1 -0
  79. package/dist/commands/analyze.js +298 -0
  80. package/dist/commands/analyze.js.map +1 -0
  81. package/dist/commands/hook.d.ts.map +1 -1
  82. package/dist/commands/hook.js +79 -0
  83. package/dist/commands/hook.js.map +1 -1
  84. package/dist/hooks/core/actions.d.ts +19 -0
  85. package/dist/hooks/core/actions.d.ts.map +1 -1
  86. package/dist/hooks/core/actions.js +5 -0
  87. package/dist/hooks/core/actions.js.map +1 -1
  88. package/dist/hooks/core/clear-verdict.d.ts +1 -1
  89. package/dist/hooks/core/clear-verdict.d.ts.map +1 -1
  90. package/dist/hooks/core/clear-verdict.js +13 -9
  91. package/dist/hooks/core/clear-verdict.js.map +1 -1
  92. package/dist/hooks/core/session-state.d.ts +47 -0
  93. package/dist/hooks/core/session-state.d.ts.map +1 -0
  94. package/dist/hooks/core/session-state.js +192 -0
  95. package/dist/hooks/core/session-state.js.map +1 -0
  96. package/dist/hooks/core/submit-verdict.d.ts +1 -0
  97. package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
  98. package/dist/hooks/core/submit-verdict.js +35 -27
  99. package/dist/hooks/core/submit-verdict.js.map +1 -1
  100. package/dist/hooks/core/verification-lifecycle.d.ts +30 -0
  101. package/dist/hooks/core/verification-lifecycle.d.ts.map +1 -0
  102. package/dist/hooks/core/verification-lifecycle.js +75 -0
  103. package/dist/hooks/core/verification-lifecycle.js.map +1 -0
  104. package/dist/hooks/core/verify-gate.d.ts +1 -1
  105. package/dist/hooks/core/verify-gate.d.ts.map +1 -1
  106. package/dist/hooks/core/verify-gate.js +13 -20
  107. package/dist/hooks/core/verify-gate.js.map +1 -1
  108. package/dist/index.js +3 -0
  109. package/dist/index.js.map +1 -1
  110. package/package.json +3 -2
@@ -0,0 +1,30 @@
1
+ /**
2
+ * IronBee — Verification Lifecycle Core Logic
3
+ *
4
+ * Manages verification start/end boundaries.
5
+ * Each verification cycle gets a unique ID and an OTEL-compatible trace ID
6
+ * linking start → end → verdict.
7
+ */
8
+ export interface VerificationStartInput {
9
+ sessionId: string;
10
+ sessionDir: string;
11
+ actionsFile: string;
12
+ }
13
+ export interface VerificationStartResult {
14
+ verificationId: string;
15
+ traceId: string;
16
+ }
17
+ export interface VerificationEndInput {
18
+ sessionId: string;
19
+ sessionDir: string;
20
+ actionsFile: string;
21
+ }
22
+ export interface VerificationEndResult {
23
+ success: boolean;
24
+ verificationId?: string;
25
+ traceId?: string;
26
+ message: string;
27
+ }
28
+ export declare function startVerification(input: VerificationStartInput): VerificationStartResult;
29
+ export declare function endVerification(input: VerificationEndInput): VerificationEndResult;
30
+ //# sourceMappingURL=verification-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/verification-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CA8CxF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAsBlF"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee — Verification Lifecycle Core Logic
4
+ *
5
+ * Manages verification start/end boundaries.
6
+ * Each verification cycle gets a unique ID and an OTEL-compatible trace ID
7
+ * linking start → end → verdict.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.startVerification = startVerification;
11
+ exports.endVerification = endVerification;
12
+ const crypto_1 = require("crypto");
13
+ const logger_1 = require("../../lib/logger");
14
+ const actions_1 = require("./actions");
15
+ const session_state_1 = require("./session-state");
16
+ function startVerification(input) {
17
+ const { sessionDir, actionsFile } = input;
18
+ // if there's an active fix, end it before starting verification
19
+ const activeFixId = (0, session_state_1.getActiveFixId)(sessionDir);
20
+ if (activeFixId) {
21
+ const fixEndEntry = {
22
+ type: "fix_end",
23
+ timestamp: new Date().toISOString(),
24
+ fix_id: activeFixId,
25
+ };
26
+ (0, actions_1.appendAction)(actionsFile, fixEndEntry);
27
+ (0, session_state_1.clearActiveFix)(sessionDir);
28
+ logger_1.logger.debug(`fix-end: ${activeFixId} (starting new verification)`);
29
+ }
30
+ // if there's already an active verification, end it first
31
+ const existingId = (0, session_state_1.getActiveVerificationId)(sessionDir);
32
+ if (existingId) {
33
+ const existingTraceId = (0, session_state_1.getActiveTraceId)(sessionDir);
34
+ logger_1.logger.debug(`ending previous verification ${existingId} before starting new one`);
35
+ const endEntry = {
36
+ type: "verification_end",
37
+ timestamp: new Date().toISOString(),
38
+ verification_id: existingId,
39
+ trace_id: existingTraceId,
40
+ };
41
+ (0, actions_1.appendAction)(actionsFile, endEntry);
42
+ (0, session_state_1.clearActiveVerification)(sessionDir);
43
+ }
44
+ const verificationId = (0, crypto_1.randomUUID)();
45
+ const traceId = (0, session_state_1.generateTraceId)();
46
+ const entry = {
47
+ type: "verification_start",
48
+ timestamp: new Date().toISOString(),
49
+ verification_id: verificationId,
50
+ trace_id: traceId,
51
+ };
52
+ (0, actions_1.appendAction)(actionsFile, entry);
53
+ (0, session_state_1.setActiveVerification)(sessionDir, verificationId, traceId);
54
+ logger_1.logger.debug(`verification-start: ${verificationId} trace=${traceId}`);
55
+ return { verificationId, traceId };
56
+ }
57
+ function endVerification(input) {
58
+ const { sessionDir, actionsFile } = input;
59
+ const verificationId = (0, session_state_1.getActiveVerificationId)(sessionDir);
60
+ if (!verificationId) {
61
+ return { success: false, message: "No active verification to end." };
62
+ }
63
+ const traceId = (0, session_state_1.getActiveTraceId)(sessionDir);
64
+ const entry = {
65
+ type: "verification_end",
66
+ timestamp: new Date().toISOString(),
67
+ verification_id: verificationId,
68
+ trace_id: traceId,
69
+ };
70
+ (0, actions_1.appendAction)(actionsFile, entry);
71
+ (0, session_state_1.clearActiveVerification)(sessionDir);
72
+ logger_1.logger.debug(`verification-end: ${verificationId} trace=${traceId}`);
73
+ return { success: true, verificationId, traceId, message: `Verification ${verificationId} ended.` };
74
+ }
75
+ //# sourceMappingURL=verification-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-lifecycle.js","sourceRoot":"","sources":["../../../src/hooks/core/verification-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,9 @@
7
7
  */
8
8
  export interface VerifyGateInput {
9
9
  sessionId: string;
10
+ sessionDir: string;
10
11
  actionsFile: string;
11
12
  verdictFile: string;
12
- retryFile: string;
13
13
  maxRetries?: number;
14
14
  }
15
15
  export interface VerifyGateResult {
@@ -1 +1 @@
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"}
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,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAgED,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsLrF"}
@@ -9,10 +9,10 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.runVerifyGate = runVerifyGate;
11
11
  const fs_1 = require("fs");
12
- const path_1 = require("path");
13
12
  const logger_1 = require("../../lib/logger");
14
13
  const telemetry_1 = require("../../lib/telemetry");
15
14
  const actions_1 = require("./actions");
15
+ const session_state_1 = require("./session-state");
16
16
  const DEFAULT_MAX_RETRIES = 3;
17
17
  function verdictExamplePass(sessionId) {
18
18
  return JSON.stringify({
@@ -36,11 +36,12 @@ function verdictExampleFail(sessionId) {
36
36
  });
37
37
  }
38
38
  const MCP_SERVER = "browser-devtools";
39
+ const TOOL_PREFIX = "bdt_";
39
40
  const REQUIRED_TOOLS = [
40
- { toolName: `mcp__${MCP_SERVER}__navigation_go-to`, name: `mcp__${MCP_SERVER}__navigation_go-to`, purpose: "navigate to a page" },
41
- { toolName: `mcp__${MCP_SERVER}__content_take-screenshot`, name: `mcp__${MCP_SERVER}__content_take-screenshot`, purpose: "take a screenshot" },
42
- { toolName: `mcp__${MCP_SERVER}__a11y_take-aria-snapshot`, name: `mcp__${MCP_SERVER}__a11y_take-aria-snapshot`, purpose: "check accessibility/page structure" },
43
- { toolName: `mcp__${MCP_SERVER}__o11y_get-console-messages`, name: `mcp__${MCP_SERVER}__o11y_get-console-messages`, purpose: "check console for errors" },
41
+ { toolName: `mcp__${MCP_SERVER}__${TOOL_PREFIX}navigation_go-to`, name: `mcp__${MCP_SERVER}__${TOOL_PREFIX}navigation_go-to`, purpose: "navigate to a page" },
42
+ { toolName: `mcp__${MCP_SERVER}__${TOOL_PREFIX}content_take-screenshot`, name: `mcp__${MCP_SERVER}__${TOOL_PREFIX}content_take-screenshot`, purpose: "take a screenshot" },
43
+ { toolName: `mcp__${MCP_SERVER}__${TOOL_PREFIX}a11y_take-aria-snapshot`, name: `mcp__${MCP_SERVER}__${TOOL_PREFIX}a11y_take-aria-snapshot`, purpose: "check accessibility/page structure" },
44
+ { toolName: `mcp__${MCP_SERVER}__${TOOL_PREFIX}o11y_get-console-messages`, name: `mcp__${MCP_SERVER}__${TOOL_PREFIX}o11y_get-console-messages`, purpose: "check console for errors" },
44
45
  ];
45
46
  function cleanup(...files) {
46
47
  for (const f of files) {
@@ -55,7 +56,7 @@ function cleanup(...files) {
55
56
  }
56
57
  }
57
58
  async function runVerifyGate(input) {
58
- const { sessionId: sid, actionsFile, verdictFile, retryFile, maxRetries: inputMaxRetries } = input;
59
+ const { sessionId: sid, sessionDir, actionsFile, verdictFile, maxRetries: inputMaxRetries } = input;
59
60
  const maxRetries = inputMaxRetries ?? DEFAULT_MAX_RETRIES;
60
61
  logger_1.logger.debug(`verify-gate: session=${sid} verdictExists=${(0, fs_1.existsSync)(verdictFile)}`);
61
62
  // ── Check 1: Were code files edited? ───────────────────
@@ -65,8 +66,8 @@ async function runVerifyGate(input) {
65
66
  await recordMarker(actionsFile, sid, "allow", "no_edits");
66
67
  return { action: "allow" };
67
68
  }
68
- // ── Check 2: Were required IronBee tools used? ─────────
69
- const toolCalls = (0, actions_1.getToolCallsSinceLastVerification)(actionsFile);
69
+ // ── Check 2: Were required IronBee tools used AFTER the latest code edit?
70
+ const toolCalls = (0, actions_1.getToolCallsSinceLastFileEdit)(actionsFile);
70
71
  const usedToolNames = new Set(toolCalls.map((t) => t.tool_name));
71
72
  const missingTools = REQUIRED_TOOLS.filter((t) => !usedToolNames.has(t.toolName));
72
73
  logger_1.logger.debug(`verify-gate: missingTools=${missingTools.length}/${REQUIRED_TOOLS.length} usedTools=${[...usedToolNames].join(",")}`);
@@ -177,24 +178,16 @@ Your verdict must include error counts.
177
178
  // ── Check 6: Pass or fail? ─────────────────────────────
178
179
  if (verdict.status === "pass") {
179
180
  logger_1.logger.debug("verdict passed, allowing completion");
180
- cleanup(retryFile);
181
+ (0, session_state_1.resetRetries)(sessionDir);
181
182
  await recordMarker(actionsFile, sid, "allow", "verdict_pass");
182
183
  return { action: "allow" };
183
184
  }
184
185
  if (verdict.status === "fail") {
185
- let retries = 0;
186
- try {
187
- retries = parseInt((0, fs_1.readFileSync)(retryFile, "utf-8"), 10) || 0;
188
- }
189
- catch (e) {
190
- logger_1.logger.debug(`failed to read retry file ${retryFile}: ${e}`);
191
- }
192
- retries++;
193
- (0, fs_1.mkdirSync)((0, path_1.dirname)(retryFile), { recursive: true });
194
- (0, fs_1.writeFileSync)(retryFile, String(retries));
186
+ const retries = (0, session_state_1.incrementRetries)(sessionDir);
195
187
  const issues = (verdict.issues ?? ["unknown"]).join("\n - ");
196
188
  if (retries >= maxRetries) {
197
- cleanup(verdictFile, retryFile);
189
+ cleanup(verdictFile);
190
+ (0, session_state_1.resetRetries)(sessionDir);
198
191
  await recordMarker(actionsFile, sid, "allow", "max_retries_exceeded");
199
192
  return {
200
193
  action: "allow",
@@ -1 +1 @@
1
- {"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../src/hooks/core/verify-gate.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ const update_1 = require("./commands/update");
10
10
  const hook_1 = require("./commands/hook");
11
11
  const status_1 = require("./commands/status");
12
12
  const verify_1 = require("./commands/verify");
13
+ const analyze_1 = require("./commands/analyze");
13
14
  const icon_1 = require("./lib/icon");
14
15
  const version_1 = require("./lib/version");
15
16
  const output_1 = require("./lib/output");
@@ -24,6 +25,7 @@ program.addCommand(uninstall_1.uninstallCommand);
24
25
  program.addCommand(update_1.updateCommand);
25
26
  program.addCommand(status_1.statusCommand);
26
27
  program.addCommand(verify_1.verifyCommand);
28
+ program.addCommand(analyze_1.analyzeCommand);
27
29
  program.addCommand(hook_1.hookCommand);
28
30
  // hook subcommands run in the background — skip banner and update check
29
31
  const isHookCommand = process.argv[2] === "hook";
@@ -41,6 +43,7 @@ if (process.argv.length === 2) {
41
43
  console.log(` ${output_1.pc.green("update")} Update to the latest version`);
42
44
  console.log(` ${output_1.pc.green("status")} ${output_1.pc.dim("[project-dir]")} Show verification status for sessions`);
43
45
  console.log(` ${output_1.pc.green("verify")} ${output_1.pc.dim("[session-id]")} Dry-run verdict validation`);
46
+ console.log(` ${output_1.pc.green("analyze")} ${output_1.pc.dim("[session-id]")} Analyze session metrics (or all sessions)`);
44
47
  console.log();
45
48
  console.log(` ${output_1.pc.dim("Run")} ${output_1.pc.cyan("ironbee <command> --help")} ${output_1.pc.dim("for more info on a command.")}`);
46
49
  console.log();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ironbee-ai/cli",
3
- "version": "0.3.0",
4
- "description": "The CLI for IronBee — The Verification Layer for Agentic Development",
3
+ "version": "0.4.0",
4
+ "description": "The CLI for IronBee — Verification and Intelligence Layer for Agentic Development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "ironbee": "dist/index.js"
@@ -30,6 +30,7 @@
30
30
  "ai",
31
31
  "ai-agent",
32
32
  "verification",
33
+ "intelligence",
33
34
  "browser-testing",
34
35
  "claude",
35
36
  "claude-code",