@ironbee-ai/cli 0.17.1 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
  3. package/dist/clients/claude/hooks/require-verification.js +16 -0
  4. package/dist/clients/claude/hooks/require-verification.js.map +1 -1
  5. package/dist/clients/codex/hooks/require-verification.d.ts.map +1 -1
  6. package/dist/clients/codex/hooks/require-verification.js +20 -7
  7. package/dist/clients/codex/hooks/require-verification.js.map +1 -1
  8. package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
  9. package/dist/clients/cursor/hooks/track-action.js +30 -1
  10. package/dist/clients/cursor/hooks/track-action.js.map +1 -1
  11. package/dist/hooks/core/session-state.d.ts +16 -0
  12. package/dist/hooks/core/session-state.d.ts.map +1 -1
  13. package/dist/hooks/core/session-state.js +25 -0
  14. package/dist/hooks/core/session-state.js.map +1 -1
  15. package/dist/hooks/core/verification-context.d.ts +87 -0
  16. package/dist/hooks/core/verification-context.d.ts.map +1 -0
  17. package/dist/hooks/core/verification-context.js +347 -0
  18. package/dist/hooks/core/verification-context.js.map +1 -0
  19. package/dist/lib/config.d.ts +47 -0
  20. package/dist/lib/config.d.ts.map +1 -1
  21. package/dist/lib/config.js +79 -2
  22. package/dist/lib/config.js.map +1 -1
  23. package/dist/lib/git.d.ts +30 -0
  24. package/dist/lib/git.d.ts.map +1 -0
  25. package/dist/lib/git.js +113 -0
  26. package/dist/lib/git.js.map +1 -0
  27. package/dist/tui/config/schema.d.ts.map +1 -1
  28. package/dist/tui/config/schema.js +36 -0
  29. package/dist/tui/config/schema.js.map +1 -1
  30. package/package.json +1 -1
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee — Path-Scoped Verification Context (core, client-agnostic)
4
+ *
5
+ * Builds the author-written, change-aware verification guidance that gets
6
+ * injected into the agent's context when a verification cycle begins. The
7
+ * pipeline:
8
+ *
9
+ * 1. `collectChangedPaths` — the absolute paths changed this cycle (git
10
+ * working tree + last N commits, with an actions.jsonl fallback).
11
+ * 2. `resolveContextFiles` — for each changed path, walk its directory up to
12
+ * `projectDir` (inclusive), collecting every `.ironbee/VERIFICATION.md`;
13
+ * dedup; ordered root→leaf.
14
+ * 3. `buildVerificationContext` — render the collected docs into one string,
15
+ * capped at `maxBytes` (leaf-first truncation priority).
16
+ *
17
+ * `buildVerificationContextForSession` ties 1–3 together (and is the single
18
+ * point that honors the `verificationContext.enable` master switch).
19
+ * `buildVerificationContextOnceForCycle` adds the per-cycle dedup the hook
20
+ * adapters use. All functions are pure-ish (fs + git reads only) and never
21
+ * throw — failures degrade to "" so a hook is never broken by this feature.
22
+ *
23
+ * Design: docs/verification-context-design.md
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.VERIFICATION_DOC_FILE = exports.VERIFICATION_DOC_DIR = void 0;
27
+ exports.collectChangedPaths = collectChangedPaths;
28
+ exports.resolveContextFiles = resolveContextFiles;
29
+ exports.buildVerificationContext = buildVerificationContext;
30
+ exports.buildVerificationContextForSession = buildVerificationContextForSession;
31
+ exports.buildVerificationContextOnceForCycle = buildVerificationContextOnceForCycle;
32
+ const fs_1 = require("fs");
33
+ const path_1 = require("path");
34
+ const config_1 = require("../../lib/config");
35
+ const git_1 = require("../../lib/git");
36
+ const logger_1 = require("../../lib/logger");
37
+ const session_state_1 = require("./session-state");
38
+ const actions_1 = require("./actions");
39
+ /** The conventional per-directory guidance file (not configurable). */
40
+ exports.VERIFICATION_DOC_DIR = ".ironbee";
41
+ exports.VERIFICATION_DOC_FILE = "VERIFICATION.md";
42
+ const HEADER = "===== IRONBEE — PROJECT VERIFICATION INSTRUCTIONS (path-scoped) =====\n";
43
+ const INTRO = "The following areas changed this cycle. Follow this guidance IN ADDITION to the standard verification flow.\n";
44
+ const FOOTER = "====================================================================\n";
45
+ function byteLen(s) {
46
+ return Buffer.byteLength(s, "utf-8");
47
+ }
48
+ /** realpath a dir, falling back to a plain resolve when it doesn't exist yet. */
49
+ function canonicalDir(dir) {
50
+ try {
51
+ return (0, fs_1.realpathSync)(dir);
52
+ }
53
+ catch {
54
+ return (0, path_1.resolve)(dir);
55
+ }
56
+ }
57
+ /**
58
+ * Resolve `p` to its physical (symlink-resolved) absolute form by realpath'ing
59
+ * the longest existing ancestor and re-appending the non-existing tail. Needed
60
+ * because the two change sources disagree on path convention: git returns
61
+ * physical paths (repo root via `git rev-parse`), while actions.jsonl carries
62
+ * the host-provided logical `file_path`. Without this, a project under a
63
+ * symlinked prefix (macOS `/var`→`/private/var`, a symlinked checkout) would
64
+ * fail the `isUnderDir(canonProject, …)` subtree filter on the actions path and
65
+ * silently drop every changed path. Handles DELETED files (the file itself need
66
+ * not exist — only some ancestor dir must).
67
+ */
68
+ function canonicalizePath(p) {
69
+ const abs = (0, path_1.resolve)(p);
70
+ const tail = [];
71
+ let cur = abs;
72
+ for (;;) {
73
+ try {
74
+ const real = (0, fs_1.realpathSync)(cur);
75
+ return tail.length > 0 ? (0, path_1.join)(real, ...tail) : real;
76
+ }
77
+ catch {
78
+ const parent = (0, path_1.dirname)(cur);
79
+ if (parent === cur) {
80
+ return abs; // no existing ancestor — best effort
81
+ }
82
+ tail.unshift((0, path_1.basename)(cur));
83
+ cur = parent;
84
+ }
85
+ }
86
+ }
87
+ /** True when `p` is a path strictly inside `dir` (not `dir` itself, not above). */
88
+ function isUnderDir(dir, p) {
89
+ const rel = (0, path_1.relative)(dir, p);
90
+ return rel.length > 0 && !rel.startsWith("..") && !(0, path_1.isAbsolute)(rel);
91
+ }
92
+ /** Changed file paths from IronBee's own `file_change` events (fallback / `source: "actions"`). */
93
+ function changedFromActions(actionsFile) {
94
+ try {
95
+ return (0, actions_1.getFileChangesSinceLastVerification)(actionsFile)
96
+ .map((fc) => fc.file_path)
97
+ .filter((p) => typeof p === "string" && p.length > 0);
98
+ }
99
+ catch (e) {
100
+ logger_1.logger.debug(`verification-context: actions fallback failed: ${e instanceof Error ? e.message : e}`);
101
+ return [];
102
+ }
103
+ }
104
+ /**
105
+ * Absolute paths changed this cycle, filtered to the `projectDir` subtree.
106
+ * `projectDir` should already be canonical (realpath-resolved). On the `git`
107
+ * source, a `null` git result (not a repo / git unavailable) falls back to the
108
+ * actions.jsonl source; an empty git result (clean tree) stays empty.
109
+ */
110
+ function collectChangedPaths(projectDir, actionsFile, opts) {
111
+ let raw;
112
+ if (opts.source === "actions") {
113
+ raw = changedFromActions(actionsFile);
114
+ }
115
+ else {
116
+ const git = (0, git_1.getChangedPaths)(projectDir, opts.commitDepth);
117
+ raw = git === null ? changedFromActions(actionsFile) : git;
118
+ }
119
+ const out = new Set();
120
+ for (const p of raw) {
121
+ // Normalize to physical absolute so git (already physical) and actions
122
+ // (host-logical) paths both agree with the realpath'd projectDir.
123
+ const abs = canonicalizePath((0, path_1.isAbsolute)(p) ? p : (0, path_1.resolve)(projectDir, p));
124
+ const rel = (0, path_1.relative)(projectDir, abs);
125
+ if (rel.length === 0 || rel.startsWith("..") || (0, path_1.isAbsolute)(rel)) {
126
+ continue; // outside the projectDir subtree
127
+ }
128
+ // Skip IronBee's own metadata/runtime (config, the VERIFICATION.md docs
129
+ // themselves, sessions/, otel/, logs). These are never "code under
130
+ // verification" — and session.log is rewritten on every hook fire, which
131
+ // would otherwise keep git perpetually dirty and inject root guidance
132
+ // on every cycle regardless of the real change.
133
+ if (rel.split(path_1.sep).includes(exports.VERIFICATION_DOC_DIR)) {
134
+ continue;
135
+ }
136
+ out.add(abs);
137
+ }
138
+ return [...out];
139
+ }
140
+ /**
141
+ * For each changed (absolute) path, walk its directory up to `projectDir`
142
+ * (inclusive) collecting every existing `.ironbee/VERIFICATION.md`. Operates on
143
+ * path STRINGS — never stats the changed file itself — so a DELETED file still
144
+ * resolves guidance via its present ancestor dirs. Deduped by doc path; ordered
145
+ * root→leaf (then by dir for determinism).
146
+ */
147
+ function resolveContextFiles(projectDir, changedAbsPaths) {
148
+ const collected = new Map();
149
+ for (const fileAbs of changedAbsPaths) {
150
+ let cur = (0, path_1.dirname)(fileAbs);
151
+ // Guard: only walk within the projectDir subtree (or projectDir itself).
152
+ if (cur !== projectDir && !isUnderDir(projectDir, cur)) {
153
+ continue;
154
+ }
155
+ for (;;) {
156
+ const candidate = (0, path_1.join)(cur, exports.VERIFICATION_DOC_DIR, exports.VERIFICATION_DOC_FILE);
157
+ if (!collected.has(candidate) && (0, fs_1.existsSync)(candidate)) {
158
+ try {
159
+ const content = (0, fs_1.readFileSync)(candidate, "utf-8");
160
+ const relDir = (0, path_1.relative)(projectDir, cur);
161
+ const normRel = relDir.length === 0 ? "" : relDir.split(path_1.sep).join("/");
162
+ const depth = normRel.length === 0 ? 0 : normRel.split("/").length;
163
+ collected.set(candidate, { absPath: candidate, relDir: normRel, depth, content });
164
+ }
165
+ catch (e) {
166
+ logger_1.logger.debug(`verification-context: failed to read ${candidate}: ${e instanceof Error ? e.message : e}`);
167
+ }
168
+ }
169
+ if (cur === projectDir) {
170
+ break;
171
+ }
172
+ const parent = (0, path_1.dirname)(cur);
173
+ if (parent === cur) {
174
+ break;
175
+ }
176
+ cur = parent;
177
+ }
178
+ }
179
+ return [...collected.values()].sort((a, b) => {
180
+ return a.depth - b.depth || a.relDir.localeCompare(b.relDir);
181
+ });
182
+ }
183
+ function provenance(doc) {
184
+ if (doc.relDir.length === 0) {
185
+ return { label: "(repo root)", path: `${exports.VERIFICATION_DOC_DIR}/${exports.VERIFICATION_DOC_FILE}` };
186
+ }
187
+ return { label: `${doc.relDir}/`, path: `${doc.relDir}/${exports.VERIFICATION_DOC_DIR}/${exports.VERIFICATION_DOC_FILE}` };
188
+ }
189
+ function renderBlock(doc) {
190
+ const p = provenance(doc);
191
+ return `\n## ${p.label} — ${p.path}\n${doc.content.trimEnd()}\n`;
192
+ }
193
+ /**
194
+ * Render collected docs into one injectable string, capped at `maxBytes`.
195
+ * Presentation order is root→leaf; truncation PRIORITY is leaf-first — when the
196
+ * total exceeds the cap, the least-specific (root-side) docs are dropped first,
197
+ * since area-specific guidance is more valuable under pressure. Returns "" for
198
+ * an empty doc set.
199
+ */
200
+ function buildVerificationContext(docs, opts) {
201
+ if (docs.length === 0) {
202
+ return "";
203
+ }
204
+ const sorted = [...docs].sort((a, b) => {
205
+ return a.depth - b.depth || a.relDir.localeCompare(b.relDir);
206
+ });
207
+ const intro = HEADER + INTRO;
208
+ const budget = Math.max(0, opts.maxBytes - byteLen(intro) - byteLen(FOOTER));
209
+ // Include leaf-first (end of array) until the budget is exhausted.
210
+ const includedReversed = [];
211
+ let used = 0;
212
+ for (let i = sorted.length - 1; i >= 0; i--) {
213
+ const block = renderBlock(sorted[i]);
214
+ const bb = byteLen(block);
215
+ if (used + bb <= budget) {
216
+ includedReversed.push(sorted[i]);
217
+ used += bb;
218
+ }
219
+ else if (includedReversed.length === 0) {
220
+ // Even the most-specific doc alone exceeds the budget — hard-truncate it.
221
+ const truncated = hardTruncate(sorted[i], budget);
222
+ includedReversed.push(truncated);
223
+ break;
224
+ }
225
+ else {
226
+ break;
227
+ }
228
+ }
229
+ const included = includedReversed.reverse();
230
+ const dropped = sorted.length - included.length;
231
+ const parts = [intro];
232
+ for (const d of included) {
233
+ parts.push(renderBlock(d));
234
+ }
235
+ if (dropped > 0) {
236
+ parts.push(`\n[${dropped} less-specific VERIFICATION.md file(s) omitted to fit the ${opts.maxBytes}-byte cap]\n`);
237
+ }
238
+ parts.push(FOOTER);
239
+ return parts.join("");
240
+ }
241
+ /** Hard-truncate a single doc's content so its rendered block fits `budget` bytes. */
242
+ function hardTruncate(doc, budget) {
243
+ const note = "\n... (truncated)";
244
+ const headerOnly = renderBlock({ ...doc, content: "" });
245
+ const room = Math.max(0, budget - byteLen(headerOnly) - byteLen(note));
246
+ // BYTE-accurate slice (not char-based) so multi-byte content can't blow past
247
+ // the budget. `toString` drops a trailing partial code unit at the boundary,
248
+ // which is fine for a truncation note.
249
+ const sliced = Buffer.from(doc.content, "utf-8").subarray(0, room).toString("utf-8");
250
+ return { ...doc, content: sliced + note };
251
+ }
252
+ /**
253
+ * End-to-end build for a session. The SINGLE honoring point for the
254
+ * `verificationContext.enable` master switch. Never throws — returns "" on any
255
+ * failure or when disabled / nothing to inject.
256
+ */
257
+ function buildVerificationContextForSession(projectDir, sessionId, config) {
258
+ if (!(0, config_1.getVerificationContextEnabled)(config)) {
259
+ return "";
260
+ }
261
+ try {
262
+ const canonProject = canonicalDir(projectDir);
263
+ const actionsFile = (0, path_1.join)(canonProject, ".ironbee", "sessions", sessionId, "actions.jsonl");
264
+ const source = (0, config_1.getVerificationContextSource)(config);
265
+ const changed = collectChangedPaths(canonProject, actionsFile, {
266
+ source,
267
+ commitDepth: (0, config_1.getVerificationContextCommitDepth)(config),
268
+ });
269
+ const filtered = changed.filter((p) => !(0, config_1.isIgnoredVerifyPath)(config, p));
270
+ // Observability: the merged set of DIRECTORIES that changed this cycle
271
+ // (after the subtree + ignoredVerifyPatterns filters), projectDir-relative
272
+ // and deduped — no need to list every file. Capped so a huge commit can't
273
+ // flood the log.
274
+ const ignoredCount = changed.length - filtered.length;
275
+ const dirSet = new Set();
276
+ for (const p of filtered) {
277
+ const relDir = (0, path_1.relative)(canonProject, (0, path_1.dirname)(p)).split(path_1.sep).join("/");
278
+ dirSet.add(relDir.length === 0 ? "(root)" : relDir);
279
+ }
280
+ const dirs = [...dirSet].sort();
281
+ const LOG_CAP = 50;
282
+ const shown = dirs.slice(0, LOG_CAP);
283
+ const more = dirs.length > LOG_CAP ? ` [+${dirs.length - LOG_CAP} more]` : "";
284
+ logger_1.logger.debug(`verification-context: source=${source} changed in ${dirs.length} dir(s)` +
285
+ (ignoredCount > 0 ? ` (${ignoredCount} ignored)` : "") +
286
+ `: ${shown.join(", ")}${more}`);
287
+ const docs = resolveContextFiles(canonProject, filtered);
288
+ // Observability: one line per resolved .ironbee/VERIFICATION.md (root→leaf)
289
+ // — byte size + a 100-char preview.
290
+ for (const d of docs) {
291
+ const label = d.relDir.length > 0
292
+ ? `${d.relDir}/${exports.VERIFICATION_DOC_DIR}/${exports.VERIFICATION_DOC_FILE}`
293
+ : `${exports.VERIFICATION_DOC_DIR}/${exports.VERIFICATION_DOC_FILE}`;
294
+ const collapsed = d.content.replace(/\s+/g, " ").trim();
295
+ const preview = collapsed.length > 100 ? `${collapsed.slice(0, 100)}...` : collapsed;
296
+ logger_1.logger.debug(`verification-context: • ${label} — ${byteLen(d.content)} bytes :: ${preview}`);
297
+ }
298
+ return buildVerificationContext(docs, { maxBytes: (0, config_1.getVerificationContextMaxBytes)(config) });
299
+ }
300
+ catch (e) {
301
+ logger_1.logger.debug(`verification-context: build failed: ${e instanceof Error ? e.message : e}`);
302
+ return "";
303
+ }
304
+ }
305
+ /**
306
+ * Per-cycle injection used by the hook adapters: build the context once per
307
+ * verification cycle. Returns the context string to inject (possibly "" when
308
+ * there's nothing to add), or "" when already injected for this cycle / no
309
+ * active cycle / disabled.
310
+ *
311
+ * The dedup id is stamped even when the resolved content is empty — so the git
312
+ * change-set isn't recomputed on every devtools call of a cycle that has no
313
+ * matching VERIFICATION.md.
314
+ */
315
+ function buildVerificationContextOnceForCycle(opts) {
316
+ const { projectDir, sessionId, sessionDir, activeVerificationId, config } = opts;
317
+ if (!activeVerificationId) {
318
+ return "";
319
+ }
320
+ if (!(0, config_1.getVerificationContextEnabled)(config)) {
321
+ return "";
322
+ }
323
+ if ((0, session_state_1.getContextInjectedVerificationId)(sessionDir) === activeVerificationId) {
324
+ return "";
325
+ }
326
+ let ctx = "";
327
+ try {
328
+ ctx = buildVerificationContextForSession(projectDir, sessionId, config);
329
+ }
330
+ catch (e) {
331
+ logger_1.logger.debug(`verification-context: once-for-cycle build failed: ${e instanceof Error ? e.message : e}`);
332
+ ctx = "";
333
+ }
334
+ // Observability: one line per cycle so `session.log` shows whether (and how
335
+ // much) path-scoped guidance was injected — the `## ` count is the number of
336
+ // resolved .ironbee/VERIFICATION.md areas.
337
+ if (ctx.length > 0) {
338
+ const areas = ctx.split("\n## ").length - 1;
339
+ logger_1.logger.debug(`verification-context: injected ${Buffer.byteLength(ctx, "utf-8")} bytes, ${areas} area(s) for cycle ${activeVerificationId}`);
340
+ }
341
+ else {
342
+ logger_1.logger.debug(`verification-context: no matching .ironbee/VERIFICATION.md for cycle ${activeVerificationId}`);
343
+ }
344
+ (0, session_state_1.setContextInjectedVerificationId)(sessionDir, activeVerificationId);
345
+ return ctx;
346
+ }
347
+ //# sourceMappingURL=verification-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-context.js","sourceRoot":"","sources":["../../../src/hooks/core/verification-context.ts"],"names":[],"mappings":"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"}
@@ -344,6 +344,29 @@ export interface IronBeeConfig {
344
344
  usageTtlSeconds?: number;
345
345
  };
346
346
  };
347
+ /**
348
+ * Path-scoped verification context. When a verification cycle begins, the
349
+ * first devtools tool call injects the contents of the `.ironbee/VERIFICATION.md`
350
+ * files that sit on (or above) the changed paths — author-written, area-specific
351
+ * verification guidance — into the agent's context via the host's formal
352
+ * `additionalContext` channel. Advisory only (does not gate). **Inverse
353
+ * semantics — default-on; opt out with `enable: false`.** Not artifact-affecting
354
+ * (read live at injection time). See `docs/verification-context-design.md`.
355
+ */
356
+ verificationContext?: {
357
+ /** Master switch (default true — opt out with false). */
358
+ enable?: boolean;
359
+ /**
360
+ * Changed-path source. `"git"` (default) = working tree + last N commits,
361
+ * with an `actions.jsonl` fallback when not a git repo. `"actions"` =
362
+ * IronBee's own `file_change` events only (no git subprocess).
363
+ */
364
+ source?: "git" | "actions";
365
+ /** Recent commits included on the `git` source. Default 1; `0` = uncommitted only. Ignored for `source: "actions"`. */
366
+ commitDepth?: number;
367
+ /** Aggregate byte cap on the injected context (truncated leaf-first past the cap). Default 65536. */
368
+ maxBytes?: number;
369
+ };
347
370
  /** Allow additional config fields (e.g. `browserDevTools` / `nodeDevTools`). */
348
371
  [key: string]: unknown;
349
372
  }
@@ -696,6 +719,30 @@ export declare function getVerificationEnabled(config: IronBeeConfig): boolean;
696
719
  * resolved tri-state callers should branch on.
697
720
  */
698
721
  export declare function getAutoVerifyEnabled(config: IronBeeConfig): boolean;
722
+ /** Default aggregate byte cap for injected verification context. */
723
+ export declare const DEFAULT_VERIFICATION_CONTEXT_MAX_BYTES: number;
724
+ /** Default number of recent commits included on the `git` change source. */
725
+ export declare const DEFAULT_VERIFICATION_CONTEXT_COMMIT_DEPTH: number;
726
+ /**
727
+ * Whether path-scoped verification-context injection is enabled.
728
+ * **Inverse semantics (default-on)** — section absent / empty / `enable: true`
729
+ * → true; only `enable: false` → false. Mirrors `getVerificationEnabled`.
730
+ */
731
+ export declare function getVerificationContextEnabled(config: IronBeeConfig): boolean;
732
+ /** Changed-path source for verification context. Default `"git"`. */
733
+ export declare function getVerificationContextSource(config: IronBeeConfig): "git" | "actions";
734
+ /** Recent-commit depth for the `git` source. Default 1; clamped to `>= 0`. */
735
+ export declare function getVerificationContextCommitDepth(config: IronBeeConfig): number;
736
+ /** Aggregate byte cap for injected context. Default 65536; clamped to `> 0`. */
737
+ export declare function getVerificationContextMaxBytes(config: IronBeeConfig): number;
738
+ /**
739
+ * Whether `filePath` matches the cross-cycle `ignoredVerifyPatterns` ignore
740
+ * list. Exposed so the verification-context collector can drop ignored paths
741
+ * (docs, generated files, …) without re-implementing glob matching. Globs are
742
+ * anchored with `(^|/)…$`, so an absolute path matches the same patterns a
743
+ * repo-relative one would.
744
+ */
745
+ export declare function isIgnoredVerifyPath(config: IronBeeConfig, filePath: string): boolean;
699
746
  /**
700
747
  * Resolved verification mode — the tri-state every client's `install()` and the
701
748
  * docs branch on. Collapses the `verification.enable` × `verification.auto`
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * `.ironbee/config.local.json` to `.gitignore` automatically.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.DEFAULT_OTEL_EMIT_MIN_INTERVAL_SECONDS = exports.DEFAULT_OTEL_ENSURE_MIN_INTERVAL_SECONDS = exports.DEFAULT_OTEL_IDLE_TIMEOUT_SECONDS = exports.DEFAULT_OTEL_PORT = exports.DEFAULT_OAUTH_USAGE_TTL_SECONDS = exports.ENV_OVERRIDES = exports.CONFIG_TARGETS_BY_PRECEDENCE = exports.DEFAULT_BACKEND_EVIDENCE_PATHS = exports.DEFAULT_BACKEND_ALWAYS_REQUIRED = exports.DEFAULT_NODE_EVIDENCE_PATHS = exports.DEFAULT_NODE_ALWAYS_REQUIRED = exports.DEFAULT_BROWSER_ALWAYS_REQUIRED = exports.CYCLE_DEFAULT_VERIFY_PATTERNS = exports.DEFAULT_BACKEND_VERIFY_PATTERNS = exports.DEFAULT_NODE_VERIFY_PATTERNS = exports.DEFAULT_BROWSER_VERIFY_PATTERNS = exports.CYCLE_TO_SERVER = exports.CYCLES_ENABLED_BY_DEFAULT = exports.ALL_CYCLES = exports.OPTIONAL_CYCLES = void 0;
18
+ exports.DEFAULT_VERIFICATION_CONTEXT_COMMIT_DEPTH = exports.DEFAULT_VERIFICATION_CONTEXT_MAX_BYTES = exports.DEFAULT_OTEL_EMIT_MIN_INTERVAL_SECONDS = exports.DEFAULT_OTEL_ENSURE_MIN_INTERVAL_SECONDS = exports.DEFAULT_OTEL_IDLE_TIMEOUT_SECONDS = exports.DEFAULT_OTEL_PORT = exports.DEFAULT_OAUTH_USAGE_TTL_SECONDS = exports.ENV_OVERRIDES = exports.CONFIG_TARGETS_BY_PRECEDENCE = exports.DEFAULT_BACKEND_EVIDENCE_PATHS = exports.DEFAULT_BACKEND_ALWAYS_REQUIRED = exports.DEFAULT_NODE_EVIDENCE_PATHS = exports.DEFAULT_NODE_ALWAYS_REQUIRED = exports.DEFAULT_BROWSER_ALWAYS_REQUIRED = exports.CYCLE_DEFAULT_VERIFY_PATTERNS = exports.DEFAULT_BACKEND_VERIFY_PATTERNS = exports.DEFAULT_NODE_VERIFY_PATTERNS = exports.DEFAULT_BROWSER_VERIFY_PATTERNS = exports.CYCLE_TO_SERVER = exports.CYCLES_ENABLED_BY_DEFAULT = exports.ALL_CYCLES = exports.OPTIONAL_CYCLES = void 0;
19
19
  exports.getConfigLayerPaths = getConfigLayerPaths;
20
20
  exports.getTargetConfigPath = getTargetConfigPath;
21
21
  exports.resolveConfigTargetFromFlags = resolveConfigTargetFromFlags;
@@ -46,6 +46,11 @@ exports.getOTELEmitMinIntervalSeconds = getOTELEmitMinIntervalSeconds;
46
46
  exports.getStatusLineRefreshInterval = getStatusLineRefreshInterval;
47
47
  exports.getVerificationEnabled = getVerificationEnabled;
48
48
  exports.getAutoVerifyEnabled = getAutoVerifyEnabled;
49
+ exports.getVerificationContextEnabled = getVerificationContextEnabled;
50
+ exports.getVerificationContextSource = getVerificationContextSource;
51
+ exports.getVerificationContextCommitDepth = getVerificationContextCommitDepth;
52
+ exports.getVerificationContextMaxBytes = getVerificationContextMaxBytes;
53
+ exports.isIgnoredVerifyPath = isIgnoredVerifyPath;
49
54
  exports.getVerificationMode = getVerificationMode;
50
55
  exports.getTelemetryEnabled = getTelemetryEnabled;
51
56
  exports.getCaptureFileChangeset = getCaptureFileChangeset;
@@ -363,8 +368,20 @@ function mergeConfigLayers(base, override) {
363
368
  merged.backend = mergeCycleConfig(base.backend, override.backend);
364
369
  merged.claude = mergeClaudeConfig(base.claude, override.claude);
365
370
  merged.verification = mergeVerificationConfig(base.verification, override.verification);
371
+ merged.verificationContext = mergeVerificationContextConfig(base.verificationContext, override.verificationContext);
366
372
  return merged;
367
373
  }
374
+ /**
375
+ * Deep merge for the `verificationContext` block so a write to one key in a
376
+ * higher-priority layer doesn't wipe a sibling key set in a lower layer (e.g. a
377
+ * `--local` write of `commitDepth` must not drop a project-set `source`).
378
+ */
379
+ function mergeVerificationContextConfig(base, override) {
380
+ if (base === undefined && override === undefined) {
381
+ return undefined;
382
+ }
383
+ return { ...(base ?? {}), ...(override ?? {}) };
384
+ }
368
385
  /**
369
386
  * Deep merge for the `verification` block (`enable` + `auto`) so a write to one
370
387
  * key in a higher-priority layer doesn't wipe the sibling key set in a lower
@@ -738,7 +755,20 @@ function getRequiredToolsConfig(config, cycle) {
738
755
  return { alwaysRequired, evidencePaths };
739
756
  }
740
757
  const DEFAULT_MCP_COMMAND = "npx";
741
- const DEFAULT_MCP_ARGS = ["-y", "@ironbee-ai/devtools"];
758
+ /**
759
+ * Pinned IronBee DevTools package version range baked into the `npx` spec.
760
+ *
761
+ * Bumping this matters beyond just selecting a version: `npx` keys its install
762
+ * cache (`~/.npm/_npx/<hash>`) on the *spec string*, and it reuses a cached
763
+ * install without re-resolving the registry — so a host that already ran the
764
+ * bare `@ironbee-ai/devtools` spec keeps executing the stale cached build (and
765
+ * never re-runs the postinstall that downloads Chromium) indefinitely. Changing
766
+ * the spec string changes the hash, which forces a fresh install on the next
767
+ * host session. Bump this on every devtools release that MUST reach existing
768
+ * users (e.g. >= 0.10.6, which fixes the Playwright/Chromium auto-install).
769
+ */
770
+ const DEVTOOLS_PACKAGE_VERSION = "^0.10.6";
771
+ const DEFAULT_MCP_ARGS = ["-y", `@ironbee-ai/devtools@${DEVTOOLS_PACKAGE_VERSION}`];
742
772
  const BROWSER_IRONBEE_ENV = {
743
773
  TOOL_NAME_PREFIX: "bdt_",
744
774
  TOOL_INPUT_METADATA_ENABLE: "true",
@@ -1143,6 +1173,53 @@ function getAutoVerifyEnabled(config) {
1143
1173
  }
1144
1174
  return section.auto !== false;
1145
1175
  }
1176
+ /** Default aggregate byte cap for injected verification context. */
1177
+ exports.DEFAULT_VERIFICATION_CONTEXT_MAX_BYTES = 65536;
1178
+ /** Default number of recent commits included on the `git` change source. */
1179
+ exports.DEFAULT_VERIFICATION_CONTEXT_COMMIT_DEPTH = 1;
1180
+ /**
1181
+ * Whether path-scoped verification-context injection is enabled.
1182
+ * **Inverse semantics (default-on)** — section absent / empty / `enable: true`
1183
+ * → true; only `enable: false` → false. Mirrors `getVerificationEnabled`.
1184
+ */
1185
+ function getVerificationContextEnabled(config) {
1186
+ const section = config.verificationContext;
1187
+ if (section === undefined || section === null || typeof section !== "object" || Array.isArray(section)) {
1188
+ return true;
1189
+ }
1190
+ return section.enable !== false;
1191
+ }
1192
+ /** Changed-path source for verification context. Default `"git"`. */
1193
+ function getVerificationContextSource(config) {
1194
+ return config.verificationContext?.source === "actions" ? "actions" : "git";
1195
+ }
1196
+ /** Recent-commit depth for the `git` source. Default 1; clamped to `>= 0`. */
1197
+ function getVerificationContextCommitDepth(config) {
1198
+ const v = config.verificationContext?.commitDepth;
1199
+ if (typeof v === "number" && Number.isFinite(v) && v >= 0) {
1200
+ return Math.floor(v);
1201
+ }
1202
+ return exports.DEFAULT_VERIFICATION_CONTEXT_COMMIT_DEPTH;
1203
+ }
1204
+ /** Aggregate byte cap for injected context. Default 65536; clamped to `> 0`. */
1205
+ function getVerificationContextMaxBytes(config) {
1206
+ const v = config.verificationContext?.maxBytes;
1207
+ if (typeof v === "number" && Number.isFinite(v) && v > 0) {
1208
+ return Math.floor(v);
1209
+ }
1210
+ return exports.DEFAULT_VERIFICATION_CONTEXT_MAX_BYTES;
1211
+ }
1212
+ /**
1213
+ * Whether `filePath` matches the cross-cycle `ignoredVerifyPatterns` ignore
1214
+ * list. Exposed so the verification-context collector can drop ignored paths
1215
+ * (docs, generated files, …) without re-implementing glob matching. Globs are
1216
+ * anchored with `(^|/)…$`, so an absolute path matches the same patterns a
1217
+ * repo-relative one would.
1218
+ */
1219
+ function isIgnoredVerifyPath(config, filePath) {
1220
+ const ignored = config.ignoredVerifyPatterns ?? [];
1221
+ return ignored.length > 0 && matchesAny(filePath, ignored);
1222
+ }
1146
1223
  function getVerificationMode(config) {
1147
1224
  if (!getVerificationEnabled(config)) {
1148
1225
  return "monitor";