agent-inspect 6.3.0 → 6.4.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 (59) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -2
  3. package/package.json +2 -2
  4. package/packages/cli/dist/{chunk-YS2I722C.mjs → chunk-M6PC5KUT.mjs} +78 -31
  5. package/packages/cli/dist/chunk-M6PC5KUT.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +153 -42
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +88 -36
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-FVNE44UA.mjs → src-27LC2BB3.mjs} +8 -5
  11. package/packages/cli/dist/src-27LC2BB3.mjs.map +1 -0
  12. package/packages/core/dist/advanced.cjs +91 -35
  13. package/packages/core/dist/advanced.cjs.map +1 -1
  14. package/packages/core/dist/advanced.d.cts +36 -12
  15. package/packages/core/dist/advanced.d.ts +36 -12
  16. package/packages/core/dist/advanced.mjs +77 -24
  17. package/packages/core/dist/advanced.mjs.map +1 -1
  18. package/packages/core/dist/checks.cjs +113 -0
  19. package/packages/core/dist/checks.cjs.map +1 -1
  20. package/packages/core/dist/checks.d.cts +40 -599
  21. package/packages/core/dist/checks.d.ts +40 -599
  22. package/packages/core/dist/checks.mjs +1 -1
  23. package/packages/core/dist/{chunk-QLYOCCEF.mjs → chunk-EWHN6NA4.mjs} +114 -3
  24. package/packages/core/dist/chunk-EWHN6NA4.mjs.map +1 -0
  25. package/packages/core/dist/{context-DyKbkmd4.d.cts → context-BHAgRjOe.d.cts} +4 -4
  26. package/packages/core/dist/{context-BJ5UQLDi.d.ts → context-Blyjb5my.d.ts} +4 -4
  27. package/packages/core/dist/diff.d.cts +3 -3
  28. package/packages/core/dist/diff.d.ts +3 -3
  29. package/packages/core/dist/exporters.cjs +75 -0
  30. package/packages/core/dist/exporters.cjs.map +1 -1
  31. package/packages/core/dist/exporters.d.cts +29 -4
  32. package/packages/core/dist/exporters.d.ts +29 -4
  33. package/packages/core/dist/exporters.mjs +71 -1
  34. package/packages/core/dist/exporters.mjs.map +1 -1
  35. package/packages/core/dist/index-BblJEdYZ.d.ts +618 -0
  36. package/packages/core/dist/index-DyKk7iR9.d.cts +618 -0
  37. package/packages/core/dist/index.d.cts +7 -7
  38. package/packages/core/dist/index.d.ts +7 -7
  39. package/packages/core/dist/{inspect-event-IqwOHbGo.d.cts → inspect-event-DVg84S4v.d.cts} +1 -1
  40. package/packages/core/dist/{inspect-event-IqwOHbGo.d.ts → inspect-event-DVg84S4v.d.ts} +1 -1
  41. package/packages/core/dist/{log-config-CW8w5YQ9.d.cts → log-config-BG1WmWf2.d.cts} +1 -1
  42. package/packages/core/dist/{log-config-SRA4xTp8.d.ts → log-config-Ck0aT_Ou.d.ts} +1 -1
  43. package/packages/core/dist/logs.d.cts +3 -3
  44. package/packages/core/dist/logs.d.ts +3 -3
  45. package/packages/core/dist/{persisted-inspect-event-DruwqARZ.d.ts → persisted-inspect-event-ChE7pGb7.d.ts} +1 -1
  46. package/packages/core/dist/{persisted-inspect-event-Gd-W8vB7.d.cts → persisted-inspect-event-d-mSP8kd.d.cts} +1 -1
  47. package/packages/core/dist/persisted.d.cts +5 -5
  48. package/packages/core/dist/persisted.d.ts +5 -5
  49. package/packages/core/dist/readers.d.cts +2 -2
  50. package/packages/core/dist/readers.d.ts +2 -2
  51. package/packages/core/dist/{types-J3Xtuf9x.d.cts → types-B562HgN_.d.cts} +1 -1
  52. package/packages/core/dist/{types-J3Xtuf9x.d.ts → types-B562HgN_.d.ts} +1 -1
  53. package/packages/core/dist/{types-B1X87dUW.d.cts → types-BLX3tiOW.d.cts} +1 -1
  54. package/packages/core/dist/{types-BVkjSd0q.d.ts → types-MuwXSJ4b.d.ts} +1 -1
  55. package/packages/core/dist/writers.d.cts +2 -2
  56. package/packages/core/dist/writers.d.ts +2 -2
  57. package/packages/cli/dist/chunk-YS2I722C.mjs.map +0 -1
  58. package/packages/cli/dist/src-FVNE44UA.mjs.map +0 -1
  59. package/packages/core/dist/chunk-QLYOCCEF.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { __commonJS, __require, __toESM, resolveTraceDir, TraceDirectory, parseTraceJsonl, validateEvent } from './chunk-YS2I722C.mjs';
1
+ import { __commonJS, __require, __toESM, resolveTraceDir, TraceDirectory, parseTraceJsonl, validateEvent } from './chunk-M6PC5KUT.mjs';
2
2
  import { readFile, mkdir, rm } from 'fs/promises';
3
3
  import path from 'path';
4
4
  import { existsSync } from 'fs';
@@ -1072,15 +1072,18 @@ function indexStatus(dbPath) {
1072
1072
  try {
1073
1073
  const runs = db.prepare(`SELECT COUNT(*) AS c FROM runs`).get().c;
1074
1074
  const steps = db.prepare(`SELECT COUNT(*) AS c FROM steps`).get().c;
1075
+ const builtAt = meta(db, META_KEYS.builtAt);
1076
+ const refreshStatus = runs === 0 ? "fallback-scan" : builtAt ? "complete" : "partial";
1075
1077
  return {
1076
1078
  dbPath,
1077
1079
  exists: true,
1078
1080
  healthy: true,
1079
- builtAt: meta(db, META_KEYS.builtAt),
1081
+ builtAt,
1080
1082
  sourceDir: meta(db, META_KEYS.sourceDir),
1081
1083
  schemaVersion: meta(db, META_KEYS.schemaVersion),
1082
1084
  runs,
1083
- steps
1085
+ steps,
1086
+ refreshStatus
1084
1087
  };
1085
1088
  } finally {
1086
1089
  db.close();
@@ -1153,5 +1156,5 @@ function queryRuns(dbPath, query = {}) {
1153
1156
  }
1154
1157
 
1155
1158
  export { INDEX_DB_FILENAME, INDEX_SCHEMA_VERSION, buildIndex, cleanIndex, indexStatus, isIndexStale, queryRuns, rebuildIndex, resolveIndexDbPath };
1156
- //# sourceMappingURL=src-FVNE44UA.mjs.map
1157
- //# sourceMappingURL=src-FVNE44UA.mjs.map
1159
+ //# sourceMappingURL=src-27LC2BB3.mjs.map
1160
+ //# sourceMappingURL=src-27LC2BB3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/util.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/sqlite-error.js","../../../node_modules/.pnpm/file-uri-to-path@1.0.0/node_modules/file-uri-to-path/index.js","../../../node_modules/.pnpm/bindings@1.5.0/node_modules/bindings/bindings.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/wrappers.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/transaction.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/pragma.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/backup.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/serialize.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/function.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/aggregate.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/table.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/methods/inspect.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/database.js","../../../node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/lib/index.js","../../index-sqlite/src/types.ts","../../index-sqlite/src/builder.ts","../../index-sqlite/src/schema.ts","../../index-sqlite/src/query.ts"],"names":["exports","path","i","str","Database","meta","import_better_sqlite3"],"mappings":"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","file":"src-27LC2BB3.mjs","sourcesContent":["'use strict';\n\nexports.getBooleanOption = (options, key) => {\n\tlet value = false;\n\tif (key in options && typeof (value = options[key]) !== 'boolean') {\n\t\tthrow new TypeError(`Expected the \"${key}\" option to be a boolean`);\n\t}\n\treturn value;\n};\n\nexports.cppdb = Symbol();\nexports.inspect = Symbol.for('nodejs.util.inspect.custom');\n","'use strict';\nconst descriptor = { value: 'SqliteError', writable: true, enumerable: false, configurable: true };\n\nfunction SqliteError(message, code) {\n\tif (new.target !== SqliteError) {\n\t\treturn new SqliteError(message, code);\n\t}\n\tif (typeof code !== 'string') {\n\t\tthrow new TypeError('Expected second argument to be a string');\n\t}\n\tError.call(this, message);\n\tdescriptor.value = '' + message;\n\tObject.defineProperty(this, 'message', descriptor);\n\tError.captureStackTrace(this, SqliteError);\n\tthis.code = code;\n}\nObject.setPrototypeOf(SqliteError, Error);\nObject.setPrototypeOf(SqliteError.prototype, Error.prototype);\nObject.defineProperty(SqliteError.prototype, 'name', descriptor);\nmodule.exports = SqliteError;\n","\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n","/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' → ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nexports.prepare = function prepare(sql) {\n\treturn this[cppdb].prepare(sql, this, false);\n};\n\nexports.exec = function exec(sql) {\n\tthis[cppdb].exec(sql);\n\treturn this;\n};\n\nexports.close = function close() {\n\tthis[cppdb].close();\n\treturn this;\n};\n\nexports.loadExtension = function loadExtension(...args) {\n\tthis[cppdb].loadExtension(...args);\n\treturn this;\n};\n\nexports.defaultSafeIntegers = function defaultSafeIntegers(...args) {\n\tthis[cppdb].defaultSafeIntegers(...args);\n\treturn this;\n};\n\nexports.unsafeMode = function unsafeMode(...args) {\n\tthis[cppdb].unsafeMode(...args);\n\treturn this;\n};\n\nexports.getters = {\n\tname: {\n\t\tget: function name() { return this[cppdb].name; },\n\t\tenumerable: true,\n\t},\n\topen: {\n\t\tget: function open() { return this[cppdb].open; },\n\t\tenumerable: true,\n\t},\n\tinTransaction: {\n\t\tget: function inTransaction() { return this[cppdb].inTransaction; },\n\t\tenumerable: true,\n\t},\n\treadonly: {\n\t\tget: function readonly() { return this[cppdb].readonly; },\n\t\tenumerable: true,\n\t},\n\tmemory: {\n\t\tget: function memory() { return this[cppdb].memory; },\n\t\tenumerable: true,\n\t},\n};\n","'use strict';\nconst { cppdb } = require('../util');\nconst controllers = new WeakMap();\n\nmodule.exports = function transaction(fn) {\n\tif (typeof fn !== 'function') throw new TypeError('Expected first argument to be a function');\n\n\tconst db = this[cppdb];\n\tconst controller = getController(db, this);\n\tconst { apply } = Function.prototype;\n\n\t// Each version of the transaction function has these same properties\n\tconst properties = {\n\t\tdefault: { value: wrapTransaction(apply, fn, db, controller.default) },\n\t\tdeferred: { value: wrapTransaction(apply, fn, db, controller.deferred) },\n\t\timmediate: { value: wrapTransaction(apply, fn, db, controller.immediate) },\n\t\texclusive: { value: wrapTransaction(apply, fn, db, controller.exclusive) },\n\t\tdatabase: { value: this, enumerable: true },\n\t};\n\n\tObject.defineProperties(properties.default.value, properties);\n\tObject.defineProperties(properties.deferred.value, properties);\n\tObject.defineProperties(properties.immediate.value, properties);\n\tObject.defineProperties(properties.exclusive.value, properties);\n\n\t// Return the default version of the transaction function\n\treturn properties.default.value;\n};\n\n// Return the database's cached transaction controller, or create a new one\nconst getController = (db, self) => {\n\tlet controller = controllers.get(db);\n\tif (!controller) {\n\t\tconst shared = {\n\t\t\tcommit: db.prepare('COMMIT', self, false),\n\t\t\trollback: db.prepare('ROLLBACK', self, false),\n\t\t\tsavepoint: db.prepare('SAVEPOINT `\\t_bs3.\\t`', self, false),\n\t\t\trelease: db.prepare('RELEASE `\\t_bs3.\\t`', self, false),\n\t\t\trollbackTo: db.prepare('ROLLBACK TO `\\t_bs3.\\t`', self, false),\n\t\t};\n\t\tcontrollers.set(db, controller = {\n\t\t\tdefault: Object.assign({ begin: db.prepare('BEGIN', self, false) }, shared),\n\t\t\tdeferred: Object.assign({ begin: db.prepare('BEGIN DEFERRED', self, false) }, shared),\n\t\t\timmediate: Object.assign({ begin: db.prepare('BEGIN IMMEDIATE', self, false) }, shared),\n\t\t\texclusive: Object.assign({ begin: db.prepare('BEGIN EXCLUSIVE', self, false) }, shared),\n\t\t});\n\t}\n\treturn controller;\n};\n\n// Return a new transaction function by wrapping the given function\nconst wrapTransaction = (apply, fn, db, { begin, commit, rollback, savepoint, release, rollbackTo }) => function sqliteTransaction() {\n\tlet before, after, undo;\n\tif (db.inTransaction) {\n\t\tbefore = savepoint;\n\t\tafter = release;\n\t\tundo = rollbackTo;\n\t} else {\n\t\tbefore = begin;\n\t\tafter = commit;\n\t\tundo = rollback;\n\t}\n\tbefore.run();\n\ttry {\n\t\tconst result = apply.call(fn, this, arguments);\n\t\tif (result && typeof result.then === 'function') {\n\t\t\tthrow new TypeError('Transaction function cannot return a promise');\n\t\t}\n\t\tafter.run();\n\t\treturn result;\n\t} catch (ex) {\n\t\tif (db.inTransaction) {\n\t\t\tundo.run();\n\t\t\tif (undo !== rollback) after.run();\n\t\t}\n\t\tthrow ex;\n\t}\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function pragma(source, options) {\n\tif (options == null) options = {};\n\tif (typeof source !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tconst simple = getBooleanOption(options, 'simple');\n\n\tconst stmt = this[cppdb].prepare(`PRAGMA ${source}`, this, true);\n\treturn simple ? stmt.pluck().get() : stmt.all();\n};\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst { promisify } = require('util');\nconst { cppdb } = require('../util');\nconst fsAccess = promisify(fs.access);\n\nmodule.exports = async function backup(filename, options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filename !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\n\t// Interpret options\n\tfilename = filename.trim();\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tconst handler = 'progress' in options ? options.progress : null;\n\n\t// Validate interpreted options\n\tif (!filename) throw new TypeError('Backup filename cannot be an empty string');\n\tif (filename === ':memory:') throw new TypeError('Invalid backup filename \":memory:\"');\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\tif (handler != null && typeof handler !== 'function') throw new TypeError('Expected the \"progress\" option to be a function');\n\n\t// Make sure the specified directory exists\n\tawait fsAccess(path.dirname(filename)).catch(() => {\n\t\tthrow new TypeError('Cannot save backup because the directory does not exist');\n\t});\n\n\tconst isNewFile = await fsAccess(filename).then(() => false, () => true);\n\treturn runBackup(this[cppdb].backup(this, attachedName, filename, isNewFile), handler || null);\n};\n\nconst runBackup = (backup, handler) => {\n\tlet rate = 0;\n\tlet useDefault = true;\n\n\treturn new Promise((resolve, reject) => {\n\t\tsetImmediate(function step() {\n\t\t\ttry {\n\t\t\t\tconst progress = backup.transfer(rate);\n\t\t\t\tif (!progress.remainingPages) {\n\t\t\t\t\tbackup.close();\n\t\t\t\t\tresolve(progress);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (useDefault) {\n\t\t\t\t\tuseDefault = false;\n\t\t\t\t\trate = 100;\n\t\t\t\t}\n\t\t\t\tif (handler) {\n\t\t\t\t\tconst ret = handler(progress);\n\t\t\t\t\tif (ret !== undefined) {\n\t\t\t\t\t\tif (typeof ret === 'number' && ret === ret) rate = Math.max(0, Math.min(0x7fffffff, Math.round(ret)));\n\t\t\t\t\t\telse throw new TypeError('Expected progress callback to return a number or undefined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetImmediate(step);\n\t\t\t} catch (err) {\n\t\t\t\tbackup.close();\n\t\t\t\treject(err);\n\t\t\t}\n\t\t});\n\t});\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function serialize(options) {\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof options !== 'object') throw new TypeError('Expected first argument to be an options object');\n\n\t// Interpret and validate options\n\tconst attachedName = 'attached' in options ? options.attached : 'main';\n\tif (typeof attachedName !== 'string') throw new TypeError('Expected the \"attached\" option to be a string');\n\tif (!attachedName) throw new TypeError('The \"attached\" option cannot be an empty string');\n\n\treturn this[cppdb].serialize(attachedName);\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineFunction(name, options, fn) {\n\t// Apply defaults\n\tif (options == null) options = {};\n\tif (typeof options === 'function') { fn = options; options = {}; }\n\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof fn !== 'function') throw new TypeError('Expected last argument to be a function');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = fn.length;\n\t\tif (!Number.isInteger(argCount) || argCount < 0) throw new TypeError('Expected function.length to be a positive integer');\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].function(fn, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n","'use strict';\nconst { getBooleanOption, cppdb } = require('../util');\n\nmodule.exports = function defineAggregate(name, options) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object' || options === null) throw new TypeError('Expected second argument to be an options object');\n\tif (!name) throw new TypeError('User-defined function name cannot be an empty string');\n\n\t// Interpret options\n\tconst start = 'start' in options ? options.start : null;\n\tconst step = getFunctionOption(options, 'step', true);\n\tconst inverse = getFunctionOption(options, 'inverse', false);\n\tconst result = getFunctionOption(options, 'result', false);\n\tconst safeIntegers = 'safeIntegers' in options ? +getBooleanOption(options, 'safeIntegers') : 2;\n\tconst deterministic = getBooleanOption(options, 'deterministic');\n\tconst directOnly = getBooleanOption(options, 'directOnly');\n\tconst varargs = getBooleanOption(options, 'varargs');\n\tlet argCount = -1;\n\n\t// Determine argument count\n\tif (!varargs) {\n\t\targCount = Math.max(getLength(step), inverse ? getLength(inverse) : 0);\n\t\tif (argCount > 0) argCount -= 1;\n\t\tif (argCount > 100) throw new RangeError('User-defined functions cannot have more than 100 arguments');\n\t}\n\n\tthis[cppdb].aggregate(start, step, inverse, result, name, argCount, safeIntegers, deterministic, directOnly);\n\treturn this;\n};\n\nconst getFunctionOption = (options, key, required) => {\n\tconst value = key in options ? options[key] : null;\n\tif (typeof value === 'function') return value;\n\tif (value != null) throw new TypeError(`Expected the \"${key}\" option to be a function`);\n\tif (required) throw new TypeError(`Missing required option \"${key}\"`);\n\treturn null;\n};\n\nconst getLength = ({ length }) => {\n\tif (Number.isInteger(length) && length >= 0) return length;\n\tthrow new TypeError('Expected function.length to be a positive integer');\n};\n","'use strict';\nconst { cppdb } = require('../util');\n\nmodule.exports = function defineTable(name, factory) {\n\t// Validate arguments\n\tif (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (!name) throw new TypeError('Virtual table module name cannot be an empty string');\n\n\t// Determine whether the module is eponymous-only or not\n\tlet eponymous = false;\n\tif (typeof factory === 'object' && factory !== null) {\n\t\teponymous = true;\n\t\tfactory = defer(parseTableDefinition(factory, 'used', name));\n\t} else {\n\t\tif (typeof factory !== 'function') throw new TypeError('Expected second argument to be a function or a table definition object');\n\t\tfactory = wrapFactory(factory);\n\t}\n\n\tthis[cppdb].table(factory, name, eponymous);\n\treturn this;\n};\n\nfunction wrapFactory(factory) {\n\treturn function virtualTableFactory(moduleName, databaseName, tableName, ...args) {\n\t\tconst thisObject = {\n\t\t\tmodule: moduleName,\n\t\t\tdatabase: databaseName,\n\t\t\ttable: tableName,\n\t\t};\n\n\t\t// Generate a new table definition by invoking the factory\n\t\tconst def = apply.call(factory, thisObject, args);\n\t\tif (typeof def !== 'object' || def === null) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" did not return a table definition object`);\n\t\t}\n\n\t\treturn parseTableDefinition(def, 'returned', moduleName);\n\t};\n}\n\nfunction parseTableDefinition(def, verb, moduleName) {\n\t// Validate required properties\n\tif (!hasOwnProperty.call(def, 'rows')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"rows\" property`);\n\t}\n\tif (!hasOwnProperty.call(def, 'columns')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition without a \"columns\" property`);\n\t}\n\n\t// Validate \"rows\" property\n\tconst rows = def.rows;\n\tif (typeof rows !== 'function' || Object.getPrototypeOf(rows) !== GeneratorFunctionPrototype) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"rows\" property (should be a generator function)`);\n\t}\n\n\t// Validate \"columns\" property\n\tlet columns = def.columns;\n\tif (!Array.isArray(columns) || !(columns = [...columns]).every(x => typeof x === 'string')) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"columns\" property (should be an array of strings)`);\n\t}\n\tif (columns.length !== new Set(columns).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate column names`);\n\t}\n\tif (!columns.length) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with zero columns`);\n\t}\n\n\t// Validate \"parameters\" property\n\tlet parameters;\n\tif (hasOwnProperty.call(def, 'parameters')) {\n\t\tparameters = def.parameters;\n\t\tif (!Array.isArray(parameters) || !(parameters = [...parameters]).every(x => typeof x === 'string')) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"parameters\" property (should be an array of strings)`);\n\t\t}\n\t} else {\n\t\tparameters = inferParameters(rows);\n\t}\n\tif (parameters.length !== new Set(parameters).size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with duplicate parameter names`);\n\t}\n\tif (parameters.length > 32) {\n\t\tthrow new RangeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with more than the maximum number of 32 parameters`);\n\t}\n\tfor (const parameter of parameters) {\n\t\tif (columns.includes(parameter)) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with column \"${parameter}\" which was ambiguously defined as both a column and parameter`);\n\t\t}\n\t}\n\n\t// Validate \"safeIntegers\" option\n\tlet safeIntegers = 2;\n\tif (hasOwnProperty.call(def, 'safeIntegers')) {\n\t\tconst bool = def.safeIntegers;\n\t\tif (typeof bool !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"safeIntegers\" property (should be a boolean)`);\n\t\t}\n\t\tsafeIntegers = +bool;\n\t}\n\n\t// Validate \"directOnly\" option\n\tlet directOnly = false;\n\tif (hasOwnProperty.call(def, 'directOnly')) {\n\t\tdirectOnly = def.directOnly;\n\t\tif (typeof directOnly !== 'boolean') {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" ${verb} a table definition with an invalid \"directOnly\" property (should be a boolean)`);\n\t\t}\n\t}\n\n\t// Generate SQL for the virtual table definition\n\tconst columnDefinitions = [\n\t\t...parameters.map(identifier).map(str => `${str} HIDDEN`),\n\t\t...columns.map(identifier),\n\t];\n\treturn [\n\t\t`CREATE TABLE x(${columnDefinitions.join(', ')});`,\n\t\twrapGenerator(rows, new Map(columns.map((x, i) => [x, parameters.length + i])), moduleName),\n\t\tparameters,\n\t\tsafeIntegers,\n\t\tdirectOnly,\n\t];\n}\n\nfunction wrapGenerator(generator, columnMap, moduleName) {\n\treturn function* virtualTable(...args) {\n\t\t/*\n\t\t\tWe must defensively clone any buffers in the arguments, because\n\t\t\totherwise the generator could mutate one of them, which would cause\n\t\t\tus to return incorrect values for hidden columns, potentially\n\t\t\tcorrupting the database.\n\t\t */\n\t\tconst output = args.map(x => Buffer.isBuffer(x) ? Buffer.from(x) : x);\n\t\tfor (let i = 0; i < columnMap.size; ++i) {\n\t\t\toutput.push(null); // Fill with nulls to prevent gaps in array (v8 optimization)\n\t\t}\n\t\tfor (const row of generator(...args)) {\n\t\t\tif (Array.isArray(row)) {\n\t\t\t\textractRowArray(row, output, columnMap.size, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else if (typeof row === 'object' && row !== null) {\n\t\t\t\textractRowObject(row, output, columnMap, moduleName);\n\t\t\t\tyield output;\n\t\t\t} else {\n\t\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded something that isn't a valid row object`);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction extractRowArray(row, output, columnCount, moduleName) {\n\tif (row.length !== columnCount) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an incorrect number of columns`);\n\t}\n\tconst offset = output.length - columnCount;\n\tfor (let i = 0; i < columnCount; ++i) {\n\t\toutput[i + offset] = row[i];\n\t}\n}\n\nfunction extractRowObject(row, output, columnMap, moduleName) {\n\tlet count = 0;\n\tfor (const key of Object.keys(row)) {\n\t\tconst index = columnMap.get(key);\n\t\tif (index === undefined) {\n\t\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with an undeclared column \"${key}\"`);\n\t\t}\n\t\toutput[index] = row[key];\n\t\tcount += 1;\n\t}\n\tif (count !== columnMap.size) {\n\t\tthrow new TypeError(`Virtual table module \"${moduleName}\" yielded a row with missing columns`);\n\t}\n}\n\nfunction inferParameters({ length }) {\n\tif (!Number.isInteger(length) || length < 0) {\n\t\tthrow new TypeError('Expected function.length to be a positive integer');\n\t}\n\tconst params = [];\n\tfor (let i = 0; i < length; ++i) {\n\t\tparams.push(`$${i + 1}`);\n\t}\n\treturn params;\n}\n\nconst { hasOwnProperty } = Object.prototype;\nconst { apply } = Function.prototype;\nconst GeneratorFunctionPrototype = Object.getPrototypeOf(function*(){});\nconst identifier = str => `\"${str.replace(/\"/g, '\"\"')}\"`;\nconst defer = x => () => x;\n","'use strict';\nconst DatabaseInspection = function Database() {};\n\nmodule.exports = function inspect(depth, opts) {\n\treturn Object.assign(new DatabaseInspection(), this);\n};\n\n","'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst util = require('./util');\nconst SqliteError = require('./sqlite-error');\n\nlet DEFAULT_ADDON;\n\nfunction Database(filenameGiven, options) {\n\tif (new.target == null) {\n\t\treturn new Database(filenameGiven, options);\n\t}\n\n\t// Apply defaults\n\tlet buffer;\n\tif (Buffer.isBuffer(filenameGiven)) {\n\t\tbuffer = filenameGiven;\n\t\tfilenameGiven = ':memory:';\n\t}\n\tif (filenameGiven == null) filenameGiven = '';\n\tif (options == null) options = {};\n\n\t// Validate arguments\n\tif (typeof filenameGiven !== 'string') throw new TypeError('Expected first argument to be a string');\n\tif (typeof options !== 'object') throw new TypeError('Expected second argument to be an options object');\n\tif ('readOnly' in options) throw new TypeError('Misspelled option \"readOnly\" should be \"readonly\"');\n\tif ('memory' in options) throw new TypeError('Option \"memory\" was removed in v7.0.0 (use \":memory:\" filename instead)');\n\n\t// Interpret options\n\tconst filename = filenameGiven.trim();\n\tconst anonymous = filename === '' || filename === ':memory:';\n\tconst readonly = util.getBooleanOption(options, 'readonly');\n\tconst fileMustExist = util.getBooleanOption(options, 'fileMustExist');\n\tconst timeout = 'timeout' in options ? options.timeout : 5000;\n\tconst verbose = 'verbose' in options ? options.verbose : null;\n\tconst nativeBinding = 'nativeBinding' in options ? options.nativeBinding : null;\n\n\t// Validate interpreted options\n\tif (readonly && anonymous && !buffer) throw new TypeError('In-memory/temporary databases cannot be readonly');\n\tif (!Number.isInteger(timeout) || timeout < 0) throw new TypeError('Expected the \"timeout\" option to be a positive integer');\n\tif (timeout > 0x7fffffff) throw new RangeError('Option \"timeout\" cannot be greater than 2147483647');\n\tif (verbose != null && typeof verbose !== 'function') throw new TypeError('Expected the \"verbose\" option to be a function');\n\tif (nativeBinding != null && typeof nativeBinding !== 'string' && typeof nativeBinding !== 'object') throw new TypeError('Expected the \"nativeBinding\" option to be a string or addon object');\n\n\t// Load the native addon\n\tlet addon;\n\tif (nativeBinding == null) {\n\t\taddon = DEFAULT_ADDON || (DEFAULT_ADDON = require('bindings')('better_sqlite3.node'));\n\t} else if (typeof nativeBinding === 'string') {\n\t\t// See <https://webpack.js.org/api/module-variables/#__non_webpack_require__-webpack-specific>\n\t\tconst requireFunc = typeof __non_webpack_require__ === 'function' ? __non_webpack_require__ : require;\n\t\taddon = requireFunc(path.resolve(nativeBinding).replace(/(\\.node)?$/, '.node'));\n\t} else {\n\t\t// See <https://github.com/WiseLibs/better-sqlite3/issues/972>\n\t\taddon = nativeBinding;\n\t}\n\n\tif (!addon.isInitialized) {\n\t\taddon.setErrorConstructor(SqliteError);\n\t\taddon.isInitialized = true;\n\t}\n\n\t// Make sure the specified directory exists\n\tif (!anonymous && !fs.existsSync(path.dirname(filename))) {\n\t\tthrow new TypeError('Cannot open database because the directory does not exist');\n\t}\n\n\tObject.defineProperties(this, {\n\t\t[util.cppdb]: { value: new addon.Database(filename, filenameGiven, anonymous, readonly, fileMustExist, timeout, verbose || null, buffer || null) },\n\t\t...wrappers.getters,\n\t});\n}\n\nconst wrappers = require('./methods/wrappers');\nDatabase.prototype.prepare = wrappers.prepare;\nDatabase.prototype.transaction = require('./methods/transaction');\nDatabase.prototype.pragma = require('./methods/pragma');\nDatabase.prototype.backup = require('./methods/backup');\nDatabase.prototype.serialize = require('./methods/serialize');\nDatabase.prototype.function = require('./methods/function');\nDatabase.prototype.aggregate = require('./methods/aggregate');\nDatabase.prototype.table = require('./methods/table');\nDatabase.prototype.loadExtension = wrappers.loadExtension;\nDatabase.prototype.exec = wrappers.exec;\nDatabase.prototype.close = wrappers.close;\nDatabase.prototype.defaultSafeIntegers = wrappers.defaultSafeIntegers;\nDatabase.prototype.unsafeMode = wrappers.unsafeMode;\nDatabase.prototype[util.inspect] = require('./methods/inspect');\n\nmodule.exports = Database;\n","'use strict';\nmodule.exports = require('./database');\nmodule.exports.SqliteError = require('./sqlite-error');\n","/**\n * Public types for the optional local SQLite trace index (v4.1, experimental).\n *\n * @remarks\n * Local-only. The index is derived from JSONL traces and is always safe to\n * delete. Trace files are never mutated. No network access.\n */\n\n/** Current index schema version. Bumped when table layout changes. */\nexport const INDEX_SCHEMA_VERSION = \"1\" as const;\n\n/** Default index database filename. */\nexport const INDEX_DB_FILENAME = \"trace-index.sqlite\";\n\n/** A derived run row in the index. */\nexport interface IndexedRun {\n runId: string;\n file: string;\n mtimeMs: number;\n name: string | null;\n status: string | null;\n startedAt: number | null;\n endedAt: number | null;\n durationMs: number | null;\n sessionId: string | null;\n groupId: string | null;\n correlationId: string | null;\n}\n\n/** A derived step row in the index. */\nexport interface IndexedStep {\n runId: string;\n stepId: string;\n kind: string | null;\n name: string | null;\n status: string | null;\n durationMs: number | null;\n toolName: string | null;\n model: string | null;\n parentId: string | null;\n}\n\n/** Options for building/rebuilding the index. */\nexport interface BuildIndexOptions {\n /** Trace directory to index. Resolved via core `resolveTraceDir` when omitted. */\n traceDir?: string;\n /** Index database path. Defaults to `<traceDir>/<INDEX_DB_FILENAME>`. */\n dbPath?: string;\n /** Cap on the number of trace files indexed (default 10000). */\n maxRuns?: number;\n}\n\n/** Result of a build/rebuild. */\nexport interface BuildIndexResult {\n dbPath: string;\n traceDir: string;\n runs: number;\n steps: number;\n errors: number;\n builtAt: string;\n warnings: string[];\n}\n\n/** Status of an existing index. */\nexport interface IndexStatus {\n dbPath: string;\n exists: boolean;\n healthy: boolean;\n builtAt: string | null;\n sourceDir: string | null;\n schemaVersion: string | null;\n runs: number;\n steps: number;\n /** Derived lifecycle: complete, partial, stale, or fallback-scan */\n refreshStatus?: \"complete\" | \"partial\" | \"stale\" | \"fallback-scan\";\n}\n\n/** Filter for querying indexed runs. */\nexport interface RunQuery {\n status?: string;\n sessionId?: string;\n /** Case-insensitive substring match on run name. */\n name?: string;\n /** Match runs that contain a step of this kind. */\n kind?: string;\n /** Match runs that contain a step with this tool name (substring). */\n tool?: string;\n limit?: number;\n}\n","import { mkdir, readFile, rm } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport Database from \"better-sqlite3\";\nimport {\n TraceDirectory,\n parseTraceJsonl,\n resolveTraceDir,\n validateEvent,\n} from \"agent-inspect/advanced\";\nimport type { TraceEvent } from \"agent-inspect/advanced\";\n\nimport {\n DERIVE_SESSIONS_SQL,\n INDEX_SCHEMA_SQL,\n META_KEYS,\n metaDefaults,\n} from \"./schema.js\";\nimport {\n INDEX_DB_FILENAME,\n type BuildIndexOptions,\n type BuildIndexResult,\n type IndexedRun,\n type IndexedStep,\n} from \"./types.js\";\n\nconst DEFAULT_MAX_RUNS = 10_000;\n\n/** Resolves the index database path for a trace directory. */\nexport function resolveIndexDbPath(traceDir: string, dbPath?: string): string {\n if (dbPath && dbPath.trim() !== \"\") return path.resolve(dbPath);\n return path.join(path.resolve(traceDir), INDEX_DB_FILENAME);\n}\n\nfunction str(value: unknown): string | null {\n return typeof value === \"string\" && value !== \"\" ? value : null;\n}\n\nfunction num(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\ninterface DerivedRun {\n run: IndexedRun;\n steps: IndexedStep[];\n errors: Array<{ stepId: string | null; message: string | null; code: string | null }>;\n}\n\nfunction deriveRun(file: string, mtimeMs: number, events: TraceEvent[]): DerivedRun | null {\n const started = events.find((e) => e.event === \"run_started\");\n if (!started || started.event !== \"run_started\") return null;\n\n const completed = events.find((e) => e.event === \"run_completed\");\n const metadata = (started.metadata ?? {}) as Record<string, unknown>;\n\n const run: IndexedRun = {\n runId: started.runId,\n file,\n mtimeMs,\n name: str(started.name),\n status: completed && completed.event === \"run_completed\" ? completed.status : null,\n startedAt: num(started.startTime),\n endedAt: completed && completed.event === \"run_completed\" ? num(completed.endTime) : null,\n durationMs:\n completed && completed.event === \"run_completed\" ? num(completed.durationMs) : null,\n sessionId: str(metadata.sessionId),\n groupId: str(metadata.groupId),\n correlationId: str(metadata.correlationId),\n };\n\n const stepStarts = new Map<string, Extract<TraceEvent, { event: \"step_started\" }>>();\n const steps: IndexedStep[] = [];\n const errors: DerivedRun[\"errors\"] = [];\n\n if (completed && completed.event === \"run_completed\" && completed.error) {\n errors.push({\n stepId: null,\n message: str(completed.error.message),\n code: str((completed.error as { code?: unknown }).code),\n });\n }\n\n for (const event of events) {\n if (event.event === \"step_started\") {\n stepStarts.set(event.stepId, event);\n }\n }\n\n for (const event of events) {\n if (event.event !== \"step_completed\") continue;\n const start = stepStarts.get(event.stepId);\n const meta = (start?.metadata ?? {}) as Record<string, unknown>;\n steps.push({\n runId: run.runId,\n stepId: event.stepId,\n kind: start ? str(start.type) : null,\n name: start ? str(start.name) : null,\n status: event.status,\n durationMs: num(event.durationMs),\n toolName: str(meta.toolName),\n model: str(meta.model),\n parentId: start ? str(start.parentId) : null,\n });\n if (event.error) {\n errors.push({\n stepId: event.stepId,\n message: str(event.error.message),\n code: str((event.error as { code?: unknown }).code),\n });\n }\n }\n\n return { run, steps, errors };\n}\n\n/**\n * Builds (or fully rebuilds) the local SQLite index from a trace directory.\n * Idempotent: rebuilding from identical inputs yields identical contents.\n * Never mutates trace files.\n */\nexport async function buildIndex(\n options: BuildIndexOptions = {},\n): Promise<BuildIndexResult> {\n const traceDir = resolveTraceDir({ dir: options.traceDir });\n const dbPath = resolveIndexDbPath(traceDir, options.dbPath);\n const maxRuns = options.maxRuns ?? DEFAULT_MAX_RUNS;\n const warnings: string[] = [];\n\n const td = new TraceDirectory({ dir: traceDir });\n const files = await td.list();\n if (files.length > maxRuns) {\n warnings.push(\n `index.truncated: ${files.length} trace files present; indexing first ${maxRuns}`,\n );\n }\n const slice = files.slice(0, maxRuns);\n\n const derived: DerivedRun[] = [];\n for (const file of slice) {\n try {\n const raw = await readFile(td.getPath(file), \"utf-8\");\n const parsed = parseTraceJsonl(raw, { validate: validateEvent });\n const stats = await td.getFileStats(file);\n const one = deriveRun(file, stats.mtimeMs, parsed.events);\n if (one) derived.push(one);\n else warnings.push(`index.skipped: ${file} has no run_started event`);\n } catch {\n warnings.push(`index.unreadable: ${file}`);\n }\n }\n\n await mkdir(path.dirname(dbPath), { recursive: true });\n // Remove any prior (possibly corrupt) file so the rebuild is deterministic.\n await rm(dbPath, { force: true });\n\n const db = new Database(dbPath);\n let runCount = 0;\n let stepCount = 0;\n let errorCount = 0;\n try {\n db.pragma(\"journal_mode = WAL\");\n db.exec(INDEX_SCHEMA_SQL);\n\n const insertRun = db.prepare(\n `INSERT INTO runs (run_id, file, mtime_ms, name, status, started_at, ended_at, duration_ms, session_id, group_id, correlation_id)\n VALUES (@runId, @file, @mtimeMs, @name, @status, @startedAt, @endedAt, @durationMs, @sessionId, @groupId, @correlationId)`,\n );\n const insertStep = db.prepare(\n `INSERT INTO steps (run_id, step_id, kind, name, status, duration_ms, tool_name, model, parent_id)\n VALUES (@runId, @stepId, @kind, @name, @status, @durationMs, @toolName, @model, @parentId)`,\n );\n const insertError = db.prepare(\n `INSERT INTO errors (run_id, step_id, message, code) VALUES (@runId, @stepId, @message, @code)`,\n );\n const insertMeta = db.prepare(`INSERT INTO meta (key, value) VALUES (?, ?)`);\n\n const write = db.transaction((items: DerivedRun[]) => {\n const seen = new Set<string>();\n for (const item of items) {\n if (seen.has(item.run.runId)) continue;\n seen.add(item.run.runId);\n insertRun.run(item.run);\n runCount += 1;\n for (const step of item.steps) {\n insertStep.run(step);\n stepCount += 1;\n }\n for (const err of item.errors) {\n insertError.run({ runId: item.run.runId, ...err });\n errorCount += 1;\n }\n }\n db.exec(DERIVE_SESSIONS_SQL);\n for (const [key, value] of Object.entries(metaDefaults(traceDir, slice.length))) {\n insertMeta.run(key, value);\n }\n });\n write(derived);\n } finally {\n db.close();\n }\n\n const builtAtRow = readMetaValue(dbPath, META_KEYS.builtAt);\n\n return {\n dbPath,\n traceDir,\n runs: runCount,\n steps: stepCount,\n errors: errorCount,\n builtAt: builtAtRow ?? new Date().toISOString(),\n warnings,\n };\n}\n\n/** Alias for {@link buildIndex}; a rebuild is a full, idempotent build. */\nexport const rebuildIndex = buildIndex;\n\nfunction readMetaValue(dbPath: string, key: string): string | null {\n try {\n const db = new Database(dbPath, { readonly: true, fileMustExist: true });\n try {\n const row = db.prepare(`SELECT value FROM meta WHERE key = ?`).get(key) as\n | { value: string }\n | undefined;\n return row?.value ?? null;\n } finally {\n db.close();\n }\n } catch {\n return null;\n }\n}\n\n/** Deletes the index database file. Always safe; traces are unaffected. */\nexport async function cleanIndex(dbPath: string): Promise<void> {\n await rm(dbPath, { force: true });\n await rm(`${dbPath}-wal`, { force: true });\n await rm(`${dbPath}-shm`, { force: true });\n}\n","import { INDEX_SCHEMA_VERSION } from \"./types.js\";\n\n/**\n * Idempotent DDL for the local trace index. A full rebuild drops and recreates\n * all tables, so building twice from the same inputs yields identical contents.\n */\nexport const INDEX_SCHEMA_SQL = `\nDROP TABLE IF EXISTS meta;\nDROP TABLE IF EXISTS errors;\nDROP TABLE IF EXISTS steps;\nDROP TABLE IF EXISTS sessions;\nDROP TABLE IF EXISTS runs;\n\nCREATE TABLE meta (\n key TEXT PRIMARY KEY,\n value TEXT\n);\n\nCREATE TABLE runs (\n run_id TEXT PRIMARY KEY,\n file TEXT NOT NULL,\n mtime_ms REAL NOT NULL,\n name TEXT,\n status TEXT,\n started_at REAL,\n ended_at REAL,\n duration_ms REAL,\n session_id TEXT,\n group_id TEXT,\n correlation_id TEXT\n);\n\nCREATE TABLE steps (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id TEXT NOT NULL,\n step_id TEXT NOT NULL,\n kind TEXT,\n name TEXT,\n status TEXT,\n duration_ms REAL,\n tool_name TEXT,\n model TEXT,\n parent_id TEXT\n);\n\nCREATE TABLE errors (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n run_id TEXT NOT NULL,\n step_id TEXT,\n message TEXT,\n code TEXT\n);\n\nCREATE TABLE sessions (\n session_id TEXT PRIMARY KEY,\n run_count INTEGER NOT NULL,\n first_started_at REAL,\n last_ended_at REAL\n);\n\nCREATE INDEX idx_runs_status ON runs(status);\nCREATE INDEX idx_runs_session ON runs(session_id);\nCREATE INDEX idx_runs_started ON runs(started_at);\nCREATE INDEX idx_steps_run ON steps(run_id);\nCREATE INDEX idx_steps_kind ON steps(kind);\nCREATE INDEX idx_steps_tool ON steps(tool_name);\n`;\n\n/** SQL to derive the sessions table from indexed runs. */\nexport const DERIVE_SESSIONS_SQL = `\nINSERT INTO sessions (session_id, run_count, first_started_at, last_ended_at)\nSELECT session_id, COUNT(*), MIN(started_at), MAX(ended_at)\nFROM runs\nWHERE session_id IS NOT NULL\nGROUP BY session_id;\n`;\n\nexport const META_KEYS = {\n schemaVersion: \"schemaVersion\",\n builtAt: \"builtAt\",\n sourceDir: \"sourceDir\",\n fileCount: \"fileCount\",\n driver: \"driver\",\n} as const;\n\nexport function metaDefaults(sourceDir: string, fileCount: number) {\n return {\n [META_KEYS.schemaVersion]: INDEX_SCHEMA_VERSION,\n [META_KEYS.builtAt]: new Date().toISOString(),\n [META_KEYS.sourceDir]: sourceDir,\n [META_KEYS.fileCount]: String(fileCount),\n [META_KEYS.driver]: \"better-sqlite3\",\n } as Record<string, string>;\n}\n","import { existsSync } from \"node:fs\";\n\nimport Database from \"better-sqlite3\";\n\nimport { META_KEYS } from \"./schema.js\";\nimport type { IndexStatus, IndexedRun, RunQuery } from \"./types.js\";\n\ninterface OpenResult {\n db: Database.Database;\n healthy: boolean;\n}\n\n/**\n * Opens the index read-only and verifies integrity. Returns `null` when the\n * file is missing or fails `integrity_check` (corruption), so callers can fall\n * back to a full rebuild or a directory scan.\n */\nfunction openHealthy(dbPath: string): OpenResult | null {\n if (!existsSync(dbPath)) return null;\n try {\n const db = new Database(dbPath, { readonly: true, fileMustExist: true });\n try {\n const result = db.pragma(\"integrity_check\", { simple: true });\n if (result !== \"ok\") {\n db.close();\n return null;\n }\n // Confirm the expected schema is present.\n db.prepare(`SELECT 1 FROM meta LIMIT 1`).get();\n db.prepare(`SELECT 1 FROM runs LIMIT 1`).get();\n return { db, healthy: true };\n } catch {\n db.close();\n return null;\n }\n } catch {\n return null;\n }\n}\n\nfunction meta(db: Database.Database, key: string): string | null {\n const row = db.prepare(`SELECT value FROM meta WHERE key = ?`).get(key) as\n | { value: string }\n | undefined;\n return row?.value ?? null;\n}\n\n/** Reports index presence, health, and basic counts. Never throws. */\nexport function indexStatus(dbPath: string): IndexStatus {\n const opened = openHealthy(dbPath);\n if (!opened) {\n return {\n dbPath,\n exists: existsSync(dbPath),\n healthy: false,\n builtAt: null,\n sourceDir: null,\n schemaVersion: null,\n runs: 0,\n steps: 0,\n };\n }\n const { db } = opened;\n try {\n const runs = (db.prepare(`SELECT COUNT(*) AS c FROM runs`).get() as { c: number }).c;\n const steps = (db.prepare(`SELECT COUNT(*) AS c FROM steps`).get() as { c: number }).c;\n const builtAt = meta(db, META_KEYS.builtAt);\n const refreshStatus: IndexStatus[\"refreshStatus\"] =\n runs === 0 ? \"fallback-scan\" : builtAt ? \"complete\" : \"partial\";\n return {\n dbPath,\n exists: true,\n healthy: true,\n builtAt,\n sourceDir: meta(db, META_KEYS.sourceDir),\n schemaVersion: meta(db, META_KEYS.schemaVersion),\n runs,\n steps,\n refreshStatus,\n };\n } finally {\n db.close();\n }\n}\n\n/** Returns true when the index is missing, corrupt, or older than any trace. */\nexport function isIndexStale(dbPath: string, newestTraceMtimeMs: number): boolean {\n const opened = openHealthy(dbPath);\n if (!opened) return true;\n try {\n const builtAt = meta(opened.db, META_KEYS.builtAt);\n if (!builtAt) return true;\n const builtMs = Date.parse(builtAt);\n if (Number.isNaN(builtMs)) return true;\n return newestTraceMtimeMs > builtMs;\n } finally {\n opened.db.close();\n }\n}\n\nfunction mapRow(row: Record<string, unknown>): IndexedRun {\n return {\n runId: row.run_id as string,\n file: row.file as string,\n mtimeMs: row.mtime_ms as number,\n name: (row.name as string | null) ?? null,\n status: (row.status as string | null) ?? null,\n startedAt: (row.started_at as number | null) ?? null,\n endedAt: (row.ended_at as number | null) ?? null,\n durationMs: (row.duration_ms as number | null) ?? null,\n sessionId: (row.session_id as string | null) ?? null,\n groupId: (row.group_id as string | null) ?? null,\n correlationId: (row.correlation_id as string | null) ?? null,\n };\n}\n\n/**\n * Queries indexed runs. Returns an empty array when the index is missing or\n * corrupt (the caller should fall back to a directory scan).\n */\nexport function queryRuns(dbPath: string, query: RunQuery = {}): IndexedRun[] {\n const opened = openHealthy(dbPath);\n if (!opened) return [];\n const { db } = opened;\n try {\n const where: string[] = [];\n const params: Record<string, unknown> = {};\n\n if (query.status) {\n where.push(`r.status = @status`);\n params.status = query.status;\n }\n if (query.sessionId) {\n where.push(`r.session_id = @sessionId`);\n params.sessionId = query.sessionId;\n }\n if (query.name) {\n where.push(`LOWER(r.name) LIKE @name`);\n params.name = `%${query.name.toLowerCase()}%`;\n }\n if (query.kind) {\n where.push(`EXISTS (SELECT 1 FROM steps s WHERE s.run_id = r.run_id AND s.kind = @kind)`);\n params.kind = query.kind;\n }\n if (query.tool) {\n where.push(\n `EXISTS (SELECT 1 FROM steps s WHERE s.run_id = r.run_id AND LOWER(s.tool_name) LIKE @tool)`,\n );\n params.tool = `%${query.tool.toLowerCase()}%`;\n }\n\n const limit = Number.isInteger(query.limit) && query.limit! > 0 ? query.limit! : 100;\n const sql = `SELECT r.* FROM runs r ${\n where.length ? `WHERE ${where.join(\" AND \")}` : \"\"\n } ORDER BY r.started_at DESC LIMIT ${limit}`;\n\n const rows = db.prepare(sql).all(params) as Array<Record<string, unknown>>;\n return rows.map(mapRow);\n } finally {\n db.close();\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  var async_hooks = require('async_hooks');
4
4
  var crypto = require('crypto');
5
5
  var promises = require('fs/promises');
6
- var path = require('path');
6
+ var path5 = require('path');
7
7
  var os = require('os');
8
8
  var process2 = require('process');
9
9
  var tty = require('tty');
@@ -14,7 +14,7 @@ var url = require('url');
14
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
 
16
16
  var crypto__default = /*#__PURE__*/_interopDefault(crypto);
17
- var path__default = /*#__PURE__*/_interopDefault(path);
17
+ var path5__default = /*#__PURE__*/_interopDefault(path5);
18
18
  var os__default = /*#__PURE__*/_interopDefault(os);
19
19
  var process2__default = /*#__PURE__*/_interopDefault(process2);
20
20
  var tty__default = /*#__PURE__*/_interopDefault(tty);
@@ -794,7 +794,7 @@ function formatDuration(ms) {
794
794
  // packages/core/src/utils.ts
795
795
  var DEFAULT_TRACE_DIR_NAME = ".agent-inspect";
796
796
  var RUNS_DIR_NAME = "runs";
797
- var FALLBACK_TRACE_DIR = path__default.default.join(
797
+ var FALLBACK_TRACE_DIR = path5__default.default.join(
798
798
  os__default.default.tmpdir(),
799
799
  "agent-inspect",
800
800
  RUNS_DIR_NAME
@@ -835,7 +835,7 @@ function getDefaultTraceDir() {
835
835
  if (typeof home !== "string" || home.trim() === "") {
836
836
  return FALLBACK_TRACE_DIR;
837
837
  }
838
- return path__default.default.join(home, DEFAULT_TRACE_DIR_NAME, RUNS_DIR_NAME);
838
+ return path5__default.default.join(home, DEFAULT_TRACE_DIR_NAME, RUNS_DIR_NAME);
839
839
  } catch {
840
840
  return FALLBACK_TRACE_DIR;
841
841
  }
@@ -843,20 +843,20 @@ function getDefaultTraceDir() {
843
843
  function getTraceFilePath(runId, traceDir) {
844
844
  const baseDir = traceDir ?? getDefaultTraceDir();
845
845
  let safeId = typeof runId === "string" && runId.trim() !== "" ? runId.trim() : "run_unknown";
846
- safeId = path__default.default.basename(safeId);
846
+ safeId = path5__default.default.basename(safeId);
847
847
  if (safeId === "" || safeId === "." || safeId === "..") {
848
848
  safeId = "run_unknown";
849
849
  }
850
- return path__default.default.join(baseDir, `${safeId}.jsonl`);
850
+ return path5__default.default.join(baseDir, `${safeId}.jsonl`);
851
851
  }
852
852
  async function ensureTraceDir(traceDir) {
853
- const primary = path__default.default.resolve(traceDir);
853
+ const primary = path5__default.default.resolve(traceDir);
854
854
  try {
855
855
  await promises.mkdir(primary, { recursive: true });
856
856
  return primary;
857
857
  } catch {
858
858
  warn(`Failed to create trace directory: ${primary}`);
859
- const fallback = path__default.default.resolve(FALLBACK_TRACE_DIR);
859
+ const fallback = path5__default.default.resolve(FALLBACK_TRACE_DIR);
860
860
  try {
861
861
  await promises.mkdir(fallback, { recursive: true });
862
862
  return fallback;
@@ -1154,13 +1154,13 @@ async function readTraceEventsFromFile(filePath) {
1154
1154
  }
1155
1155
  async function listTraceFiles(traceDir) {
1156
1156
  try {
1157
- const usable = path__default.default.resolve(traceDir);
1157
+ const usable = path5__default.default.resolve(traceDir);
1158
1158
  const names = await promises.readdir(usable);
1159
1159
  const jsonl = names.filter((n) => n.endsWith(".jsonl"));
1160
1160
  const withStat = await Promise.all(
1161
1161
  jsonl.map(async (name) => {
1162
1162
  try {
1163
- const st = await promises.stat(path__default.default.join(usable, name));
1163
+ const st = await promises.stat(path5__default.default.join(usable, name));
1164
1164
  return { name, mtime: st.mtimeMs };
1165
1165
  } catch {
1166
1166
  return { name, mtime: 0 };
@@ -1178,7 +1178,7 @@ async function listTraceFiles(traceDir) {
1178
1178
  }
1179
1179
  function getRunIdFromTraceFileName(fileName) {
1180
1180
  try {
1181
- const base = path__default.default.basename(fileName);
1181
+ const base = path5__default.default.basename(fileName);
1182
1182
  if (!base.endsWith(".jsonl")) return void 0;
1183
1183
  const id = base.slice(0, -".jsonl".length);
1184
1184
  return id === "" ? void 0 : id;
@@ -3109,7 +3109,7 @@ var TraceDirectory = class {
3109
3109
  this.#dir = resolveTraceDir(options);
3110
3110
  }
3111
3111
  getPath(filename) {
3112
- return filename ? path__default.default.join(this.#dir, filename) : this.#dir;
3112
+ return filename ? path5__default.default.join(this.#dir, filename) : this.#dir;
3113
3113
  }
3114
3114
  async list() {
3115
3115
  try {
@@ -3136,7 +3136,7 @@ function parseIsoToMs2(value) {
3136
3136
  }
3137
3137
  async function extractMetadata(filePath, _quickScan) {
3138
3138
  const stats = await promises.stat(filePath);
3139
- let runIdFromFile = path__default.default.basename(filePath);
3139
+ let runIdFromFile = path5__default.default.basename(filePath);
3140
3140
  if (runIdFromFile.endsWith(".jsonl")) {
3141
3141
  runIdFromFile = runIdFromFile.slice(0, -".jsonl".length);
3142
3142
  }
@@ -5288,21 +5288,43 @@ function buildBundleSummaryMarkdown(parts) {
5288
5288
  );
5289
5289
  return lines.join("\n");
5290
5290
  }
5291
+ function sanitizeBundleRunId(runId) {
5292
+ let safe = typeof runId === "string" && runId.trim() !== "" ? runId.trim() : "run_unknown";
5293
+ safe = path5__default.default.basename(safe);
5294
+ safe = safe.replace(/[^a-zA-Z0-9._-]+/g, "_");
5295
+ if (safe === "" || safe === "." || safe === "..") {
5296
+ safe = "run_unknown";
5297
+ }
5298
+ return safe;
5299
+ }
5300
+ function bundleRunAssetRelativePath(runId, extension) {
5301
+ const safe = sanitizeBundleRunId(runId);
5302
+ const ext = extension.startsWith(".") ? extension : `.${extension}`;
5303
+ return path5__default.default.posix.join("assets", "runs", `${safe}${ext}`);
5304
+ }
5305
+ function assertBundlePathContained(outputDir, relativePath) {
5306
+ const base = path5__default.default.resolve(outputDir);
5307
+ const resolved = path5__default.default.resolve(base, relativePath);
5308
+ if (resolved !== base && !resolved.startsWith(base + path5__default.default.sep)) {
5309
+ throw new Error(`Bundle path escapes output directory: ${relativePath}`);
5310
+ }
5311
+ return resolved;
5312
+ }
5291
5313
  function normalizeBundleOutputPath(out) {
5292
5314
  const trimmed = out.trim();
5293
5315
  if (trimmed === "") {
5294
5316
  throw new Error("--out requires a non-empty path.");
5295
5317
  }
5296
- const resolved = path__default.default.resolve(trimmed);
5318
+ const resolved = path5__default.default.resolve(trimmed);
5297
5319
  if (resolved.toLowerCase().endsWith(".zip")) {
5298
5320
  return resolved.slice(0, -4);
5299
5321
  }
5300
5322
  return resolved;
5301
5323
  }
5302
5324
  function defaultBundleOutputPath(runIds) {
5303
- const label = runIds.length === 1 ? runIds[0] : `multi-${runIds.length}`;
5325
+ const label = runIds.length === 1 ? sanitizeBundleRunId(runIds[0]) : `multi-${runIds.length}`;
5304
5326
  const stamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
5305
- return path__default.default.resolve(`agent-inspect-bundle-${label}-${stamp}`);
5327
+ return path5__default.default.resolve(`agent-inspect-bundle-${label}-${stamp}`);
5306
5328
  }
5307
5329
 
5308
5330
  // packages/core/src/suite/types.ts
@@ -5456,7 +5478,7 @@ function normalizeSuiteConfig(value) {
5456
5478
  }
5457
5479
  async function validateSuiteConfig(config, options) {
5458
5480
  const diagnostics = [];
5459
- const tracesDir = path__default.default.resolve(options.configDir, config.traces);
5481
+ const tracesDir = path5__default.default.resolve(options.configDir, config.traces);
5460
5482
  try {
5461
5483
  await promises.access(tracesDir);
5462
5484
  } catch {
@@ -5466,7 +5488,7 @@ async function validateSuiteConfig(config, options) {
5466
5488
  }
5467
5489
  for (const suiteCase of config.cases) {
5468
5490
  if (suiteCase.input !== void 0) {
5469
- const inputPath = path__default.default.resolve(options.configDir, suiteCase.input);
5491
+ const inputPath = path5__default.default.resolve(options.configDir, suiteCase.input);
5470
5492
  try {
5471
5493
  await promises.access(inputPath);
5472
5494
  } catch {
@@ -5499,12 +5521,12 @@ async function fileExists(filePath) {
5499
5521
  }
5500
5522
  }
5501
5523
  async function resolveSuiteConfigPath(options = {}) {
5502
- const cwd = path__default.default.resolve(options.cwd ?? process.cwd());
5524
+ const cwd = path5__default.default.resolve(options.cwd ?? process.cwd());
5503
5525
  if (options.configPath !== void 0 && options.configPath.trim() !== "") {
5504
- return path__default.default.resolve(cwd, options.configPath.trim());
5526
+ return path5__default.default.resolve(cwd, options.configPath.trim());
5505
5527
  }
5506
5528
  for (const name of DEFAULT_SUITE_CONFIG_NAMES) {
5507
- const candidate = path__default.default.join(cwd, name);
5529
+ const candidate = path5__default.default.join(cwd, name);
5508
5530
  if (await fileExists(candidate)) return candidate;
5509
5531
  }
5510
5532
  throw new Error(
@@ -5521,7 +5543,7 @@ async function loadSuiteConfig(options = {}) {
5521
5543
  diagnostics: [diagnostic2("AI_SUITE_CONFIG_LOAD_FAILED", message)]
5522
5544
  });
5523
5545
  }
5524
- const extension = path__default.default.extname(configPath);
5546
+ const extension = path5__default.default.extname(configPath);
5525
5547
  if (TS_CONFIG_EXTENSIONS.has(extension)) {
5526
5548
  const message = "TypeScript suite configs require an explicit precompiled JavaScript config or future --config-loader support.";
5527
5549
  throw Object.assign(new Error(message), {
@@ -5546,7 +5568,7 @@ async function loadSuiteConfig(options = {}) {
5546
5568
  return {
5547
5569
  config,
5548
5570
  configPath,
5549
- configDir: path__default.default.dirname(configPath)
5571
+ configDir: path5__default.default.dirname(configPath)
5550
5572
  };
5551
5573
  } catch (error) {
5552
5574
  const message = error instanceof Error ? error.message : String(error);
@@ -5587,7 +5609,7 @@ async function exists(filePath) {
5587
5609
  }
5588
5610
  async function resolveSuiteCaseTrace(suiteCase, options) {
5589
5611
  if (suiteCase.trace !== void 0) {
5590
- const tracePath = path__default.default.resolve(options.configDir, suiteCase.trace);
5612
+ const tracePath = path5__default.default.resolve(options.configDir, suiteCase.trace);
5591
5613
  if (await exists(tracePath)) {
5592
5614
  return { caseId: suiteCase.id, tracePath, missing: false };
5593
5615
  }
@@ -5603,7 +5625,7 @@ async function resolveSuiteCaseTrace(suiteCase, options) {
5603
5625
  if (await exists(directPath)) {
5604
5626
  return { caseId: suiteCase.id, tracePath: directPath, runId: runKey, missing: false };
5605
5627
  }
5606
- const nestedPath = path__default.default.join(options.tracesDir, `${path__default.default.basename(runKey)}.jsonl`);
5628
+ const nestedPath = path5__default.default.join(options.tracesDir, `${path5__default.default.basename(runKey)}.jsonl`);
5607
5629
  if (await exists(nestedPath)) {
5608
5630
  return { caseId: suiteCase.id, tracePath: nestedPath, runId: runKey, missing: false };
5609
5631
  }
@@ -6743,7 +6765,7 @@ function findReaderByFormat(format, readers) {
6743
6765
  }
6744
6766
  async function jsonlFilesInDirectory(dirPath) {
6745
6767
  const entries = await promises.readdir(dirPath, { withFileTypes: true });
6746
- return entries.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path__default.default.join(dirPath, entry.name)).sort((a, b) => a.localeCompare(b));
6768
+ return entries.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path5__default.default.join(dirPath, entry.name)).sort((a, b) => a.localeCompare(b));
6747
6769
  }
6748
6770
  async function resolveInput(input) {
6749
6771
  const cached = resolvedInputCache.get(input);
@@ -8363,7 +8385,7 @@ async function runSuiteCase(suiteCase, config, options) {
8363
8385
  async function runSuite(options = {}) {
8364
8386
  const startedAt = new Date(options.nowMs ?? Date.now()).toISOString();
8365
8387
  const { config, configPath, configDir } = await loadSuiteConfig(options);
8366
- const tracesDir = path__default.default.resolve(configDir, config.traces);
8388
+ const tracesDir = path5__default.default.resolve(configDir, config.traces);
8367
8389
  const cases = [];
8368
8390
  const diagnostics = [];
8369
8391
  for (const suiteCase of config.cases) {
@@ -8381,8 +8403,9 @@ async function runSuite(options = {}) {
8381
8403
  skipped: cases.filter((item) => item.status === "skipped").length
8382
8404
  };
8383
8405
  const finishedAt = new Date(options.nowMs ?? Date.now()).toISOString();
8384
- const ok = summary.failed === 0 && summary.errors === 0;
8385
- const status = summary.errors > 0 ? "error" : summary.failed > 0 || !ok ? "fail" : "pass";
8406
+ const allSkipped = cases.length > 0 && summary.skipped === cases.length;
8407
+ const ok = summary.failed === 0 && summary.errors === 0 && !allSkipped;
8408
+ const status = summary.errors > 0 ? "error" : allSkipped ? "fail" : summary.failed > 0 || !ok ? "fail" : "pass";
8386
8409
  return {
8387
8410
  ok,
8388
8411
  status,
@@ -8574,10 +8597,14 @@ var COHORT_METRIC_IDS = [
8574
8597
  ];
8575
8598
 
8576
8599
  // packages/core/src/cohort/compare.ts
8577
- function compareNumber(metric, label, baseline, candidate, higherIsWorse = true) {
8600
+ function compareNumber(metric, label, baseline, candidate, higherIsWorse = true, maxRelativeDelta) {
8578
8601
  if (baseline === void 0 && candidate === void 0) return void 0;
8579
8602
  const delta = baseline !== void 0 && candidate !== void 0 ? candidate - baseline : void 0;
8580
- const regression = delta !== void 0 && (higherIsWorse && delta > 0 || !higherIsWorse && delta < 0);
8603
+ let regression = delta !== void 0 && (higherIsWorse && delta > 0 || !higherIsWorse && delta < 0);
8604
+ if (regression && maxRelativeDelta !== void 0 && baseline !== void 0 && baseline !== 0 && delta !== void 0) {
8605
+ const relative = Math.abs(delta / baseline);
8606
+ if (relative <= maxRelativeDelta) regression = false;
8607
+ }
8581
8608
  return {
8582
8609
  metric,
8583
8610
  baseline,
@@ -8596,6 +8623,7 @@ function compareCohortAggregates(groups, options) {
8596
8623
  const baselineAgg = pickAggregate(groups, options.baseline, options.groupKey);
8597
8624
  const candidateAgg = pickAggregate(groups, options.candidate, options.groupKey);
8598
8625
  const comparisons = [];
8626
+ const tolerance = options.maxRelativeDelta;
8599
8627
  for (const metric of options.metrics) {
8600
8628
  switch (metric) {
8601
8629
  case "errorRate": {
@@ -8603,7 +8631,9 @@ function compareCohortAggregates(groups, options) {
8603
8631
  metric,
8604
8632
  "Error rate",
8605
8633
  baselineAgg?.errorRate,
8606
- candidateAgg?.errorRate
8634
+ candidateAgg?.errorRate,
8635
+ true,
8636
+ tolerance
8607
8637
  );
8608
8638
  if (item) comparisons.push(item);
8609
8639
  break;
@@ -8957,13 +8987,27 @@ async function analyzeCohort(runsInput, options) {
8957
8987
  ...new Set(groups.map((group) => group.groupKey))
8958
8988
  ].sort((a, b) => a.localeCompare(b));
8959
8989
  const items = [];
8990
+ const minSample = options.tolerance?.minSampleSize ?? 1;
8960
8991
  for (const groupKey of groupKeys) {
8992
+ const baselineGroup = groups.find(
8993
+ (group) => group.groupKey === groupKey && group.cohortLabel === options.baseline
8994
+ );
8995
+ const candidateGroup = groups.find(
8996
+ (group) => group.groupKey === groupKey && group.cohortLabel === options.candidate
8997
+ );
8998
+ if (baselineGroup && baselineGroup.runCount < minSample || candidateGroup && candidateGroup.runCount < minSample) {
8999
+ warnings.push(
9000
+ `Insufficient sample for group ${groupKey}: need at least ${minSample} run(s) per cohort.`
9001
+ );
9002
+ continue;
9003
+ }
8961
9004
  items.push(
8962
9005
  ...compareCohortAggregates(groups, {
8963
9006
  baseline: options.baseline,
8964
9007
  candidate: options.candidate,
8965
9008
  metrics,
8966
- groupKey
9009
+ groupKey,
9010
+ maxRelativeDelta: options.tolerance?.maxRelativeDelta
8967
9011
  })
8968
9012
  );
8969
9013
  }
@@ -9084,12 +9128,18 @@ function parseGateList(value) {
9084
9128
  if (value === void 0 || value.trim() === "") return [];
9085
9129
  return value.split(",").map((item) => item.trim()).filter((item) => item.length > 0);
9086
9130
  }
9087
- function parseGateNumber(value, label) {
9131
+ function parseGateNumber(value, label, options = {}) {
9088
9132
  if (value === void 0 || value.trim() === "") return void 0;
9089
9133
  const parsed = Number(value);
9090
9134
  if (!Number.isFinite(parsed)) {
9091
9135
  throw new Error(`Invalid ${label}: ${value}`);
9092
9136
  }
9137
+ if (options.min !== void 0 && parsed < options.min) {
9138
+ throw new Error(`${label} must be at least ${options.min}.`);
9139
+ }
9140
+ if (options.max !== void 0 && parsed > options.max) {
9141
+ throw new Error(`${label} must be at most ${options.max}.`);
9142
+ }
9093
9143
  return parsed;
9094
9144
  }
9095
9145
 
@@ -9269,6 +9319,9 @@ function validateOptions(options) {
9269
9319
  if (options.maxErrorRate !== void 0 && options.maxErrorRate < 0) {
9270
9320
  errors.push("--max-error-rate must be a non-negative percentage.");
9271
9321
  }
9322
+ if (options.maxErrorRate !== void 0 && options.maxErrorRate > 100) {
9323
+ errors.push("--max-error-rate must be at most 100.");
9324
+ }
9272
9325
  if (options.maxP95DurationMs !== void 0 && options.maxP95DurationMs < 0) {
9273
9326
  errors.push("--max-p95-duration must be a non-negative millisecond value.");
9274
9327
  }
@@ -9276,7 +9329,7 @@ function validateOptions(options) {
9276
9329
  }
9277
9330
  function isConfigLoadError(error) {
9278
9331
  if (!(error instanceof Error)) return false;
9279
- const ext = path__default.default.extname(error.message);
9332
+ const ext = path5__default.default.extname(error.message);
9280
9333
  if (error.message.includes("Unsupported suite config extension")) return true;
9281
9334
  if (error.message.includes("TypeScript suite configs require")) return true;
9282
9335
  if (error.message.includes("No suite config found")) return true;
@@ -9624,6 +9677,7 @@ exports.TraceDirectory = TraceDirectory;
9624
9677
  exports.aggregateBundleSafeStatus = aggregateBundleSafeStatus;
9625
9678
  exports.aggregateSessionCheckResults = aggregateSessionCheckResults;
9626
9679
  exports.analyzeCohort = analyzeCohort;
9680
+ exports.assertBundlePathContained = assertBundlePathContained;
9627
9681
  exports.buildActivitySummary = buildActivitySummary;
9628
9682
  exports.buildBundleMetadata = buildBundleMetadata;
9629
9683
  exports.buildBundleSummaryMarkdown = buildBundleSummaryMarkdown;
@@ -9635,6 +9689,7 @@ exports.buildRunWhatSummary = buildRunWhatSummary;
9635
9689
  exports.buildSessionIndex = buildSessionIndex;
9636
9690
  exports.buildTraceStats = buildTraceStats;
9637
9691
  exports.bundleFailsOnSafety = bundleFailsOnSafety;
9692
+ exports.bundleRunAssetRelativePath = bundleRunAssetRelativePath;
9638
9693
  exports.compareCohortAggregates = compareCohortAggregates;
9639
9694
  exports.createInspector = createInspector;
9640
9695
  exports.createInspectorRuntime = createInspectorRuntime;
@@ -9731,6 +9786,7 @@ exports.runGate = runGate;
9731
9786
  exports.runSuite = runSuite;
9732
9787
  exports.runWithContext = runWithContext;
9733
9788
  exports.runWithStepContext = runWithStepContext;
9789
+ exports.sanitizeBundleRunId = sanitizeBundleRunId;
9734
9790
  exports.searchTraces = searchTraces;
9735
9791
  exports.serializeEvent = serializeEvent;
9736
9792
  exports.sessionKeyForRun = sessionKeyForRun;