@gobing-ai/spur 0.2.4 → 0.2.5

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 (2) hide show
  1. package/package.json +9 -8
  2. package/spur.js +217 -145
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Spur CLI — local-first harness for mainstream coding agents: constraint checking, workflow orchestration, agent health, and history analytics. Bun-native; exposes the `spur` command.",
5
5
  "keywords": [
6
6
  "spur",
@@ -52,15 +52,16 @@
52
52
  "@gobing-ai/spur-app": "^0.1.0",
53
53
  "@gobing-ai/spur-config": "^0.1.0",
54
54
  "@gobing-ai/spur-domain": "^0.1.0",
55
- "@gobing-ai/ts-ai-runner": "^0.3.10",
56
- "@gobing-ai/ts-dual-workflow-engine": "^0.3.10",
57
- "@gobing-ai/ts-infra": "^0.3.10",
58
- "@gobing-ai/ts-llm-jsonl-importer": "^0.3.10",
59
- "@gobing-ai/ts-rule-engine": "^0.3.10",
60
- "@gobing-ai/ts-runtime": "^0.3.10",
61
- "@gobing-ai/ts-utils": "^0.3.10",
55
+ "@gobing-ai/ts-ai-runner": "^0.3.11",
56
+ "@gobing-ai/ts-dual-workflow-engine": "^0.3.11",
57
+ "@gobing-ai/ts-infra": "^0.3.11",
58
+ "@gobing-ai/ts-llm-jsonl-importer": "^0.3.11",
59
+ "@gobing-ai/ts-rule-engine": "^0.3.11",
60
+ "@gobing-ai/ts-runtime": "^0.3.11",
61
+ "@gobing-ai/ts-utils": "^0.3.11",
62
62
  "@types/bun": "1.3.14",
63
63
  "@types/figlet": "^1.7.0",
64
+ "@types/node-notifier": "8.0.5",
64
65
  "commander": "^14.0.3",
65
66
  "figlet": "^1.11.0",
66
67
  "zod": "4.4.3"
package/spur.js CHANGED
@@ -2157,7 +2157,7 @@ var require_extra_typings = __commonJS((exports, module) => {
2157
2157
  exports.createArgument = (name, description) => new commander.Argument(name, description);
2158
2158
  });
2159
2159
 
2160
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/errors.js
2160
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/errors.js
2161
2161
  var ErrorCode;
2162
2162
  var init_errors = __esm(() => {
2163
2163
  ErrorCode = {
@@ -2168,7 +2168,7 @@ var init_errors = __esm(() => {
2168
2168
  };
2169
2169
  });
2170
2170
 
2171
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/api-response.js
2171
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/api-response.js
2172
2172
  var API_ERROR_CODES, ERROR_CODE_TO_HTTP, CLIENT_SAFE_CODES;
2173
2173
  var init_api_response = __esm(() => {
2174
2174
  init_errors();
@@ -2191,10 +2191,10 @@ var init_api_response = __esm(() => {
2191
2191
  CLIENT_SAFE_CODES = new Set([ErrorCode.NotFound, ErrorCode.Validation, ErrorCode.Conflict]);
2192
2192
  });
2193
2193
 
2194
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/cursor.js
2194
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/cursor.js
2195
2195
  var init_cursor = () => {};
2196
2196
 
2197
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/object.js
2197
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/object.js
2198
2198
  function isPlainObject(value) {
2199
2199
  return typeof value === "object" && value !== null && !Array.isArray(value);
2200
2200
  }
@@ -2210,7 +2210,7 @@ function deepMerge(target, source) {
2210
2210
  return result;
2211
2211
  }
2212
2212
 
2213
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/output.js
2213
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/output.js
2214
2214
  function processStream(name) {
2215
2215
  const proc = globalThis.process;
2216
2216
  const stream = proc?.[name];
@@ -2231,7 +2231,7 @@ function echoError(message, target = defaultStderrTarget ?? processStream("stder
2231
2231
  }
2232
2232
  var defaultStdoutTarget, defaultStderrTarget;
2233
2233
 
2234
- // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.10/node_modules/@gobing-ai/ts-utils/dist/index.js
2234
+ // ../../node_modules/.bun/@gobing-ai+ts-utils@0.3.11/node_modules/@gobing-ai/ts-utils/dist/index.js
2235
2235
  var init_dist = __esm(() => {
2236
2236
  init_api_response();
2237
2237
  init_cursor();
@@ -23853,7 +23853,7 @@ var init_zod = __esm(() => {
23853
23853
  init_external();
23854
23854
  });
23855
23855
 
23856
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/config.js
23856
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/config.js
23857
23857
  function parseYamlObject(text) {
23858
23858
  let parsed;
23859
23859
  try {
@@ -23956,7 +23956,7 @@ var init_config = __esm(() => {
23956
23956
  };
23957
23957
  });
23958
23958
 
23959
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/file-system-node.js
23959
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/file-system-node.js
23960
23960
  import { appendFileSync, cpSync, createWriteStream, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "fs";
23961
23961
  import { dirname, resolve as resolvePath } from "path";
23962
23962
  function createNodeFileSystem(root) {
@@ -31205,7 +31205,7 @@ var init_execa = __esm(() => {
31205
31205
  } = getIpcExport());
31206
31206
  });
31207
31207
 
31208
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
31208
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
31209
31209
  import { isatty } from "tty";
31210
31210
 
31211
31211
  class ProcessExecutor {
@@ -31446,7 +31446,7 @@ var init_process_executor = __esm(() => {
31446
31446
  };
31447
31447
  });
31448
31448
 
31449
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/context.js
31449
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/context.js
31450
31450
  class RuntimeContext {
31451
31451
  scope;
31452
31452
  runtimeName;
@@ -31515,7 +31515,7 @@ var init_context = __esm(() => {
31515
31515
  init_process_executor();
31516
31516
  });
31517
31517
 
31518
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/path.js
31518
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/path.js
31519
31519
  function normalizeSeparators(path6) {
31520
31520
  return path6.replaceAll("\\", "/");
31521
31521
  }
@@ -31623,7 +31623,7 @@ var init_path = __esm(() => {
31623
31623
  SEP = globalThis.process?.platform === "win32" ? "\\" : "/";
31624
31624
  });
31625
31625
 
31626
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/fs.js
31626
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/fs.js
31627
31627
  import { mkdirSync as mkdirSync2, readdirSync as readdirSync2, readFileSync as readFileSync4, rmSync as rmSync2, statSync as statSync3, writeFileSync as writeFileSync3 } from "fs";
31628
31628
  function nodeFsPromises() {
31629
31629
  fsPromisesModule ??= import("fs/promises");
@@ -31805,7 +31805,7 @@ var init_fs = __esm(() => {
31805
31805
  activeFileSystem = new NodeFileSystem;
31806
31806
  });
31807
31807
 
31808
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
31808
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
31809
31809
  async function loadStructuredConfig(path6, options = {}) {
31810
31810
  const content = await (options.fileSystem ?? getFs()).readFile(path6);
31811
31811
  return await parseStructuredConfig(content, path6, options);
@@ -32085,10 +32085,10 @@ var init_schema_validation = __esm(() => {
32085
32085
  defaultResolve = typeof Bun !== "undefined" ? (specifier, from) => Bun.resolveSync(specifier, from) : undefined;
32086
32086
  });
32087
32087
 
32088
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/types.js
32088
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/types.js
32089
32089
  var init_types = () => {};
32090
32090
 
32091
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/index.js
32091
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/index.js
32092
32092
  var init_dist3 = __esm(() => {
32093
32093
  init_file_system_node();
32094
32094
  init_fs();
@@ -32101,7 +32101,7 @@ var init_dist3 = __esm(() => {
32101
32101
  init_types();
32102
32102
  });
32103
32103
 
32104
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/bun-sqlite.js
32104
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/bun-sqlite.js
32105
32105
  import { Database } from "bun:sqlite";
32106
32106
  var init_bun_sqlite = () => {};
32107
32107
 
@@ -36327,7 +36327,7 @@ var init_bun_sqlite2 = __esm(() => {
36327
36327
  init_session2();
36328
36328
  });
36329
36329
 
36330
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/inbox-messages.js
36330
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/inbox-messages.js
36331
36331
  var inboxMessages;
36332
36332
  var init_inbox_messages = __esm(() => {
36333
36333
  init_sqlite_core();
@@ -36346,7 +36346,7 @@ var init_inbox_messages = __esm(() => {
36346
36346
  }, (table2) => [index("idx_inbox_messages_to_status").on(table2.toId, table2.status)]);
36347
36347
  });
36348
36348
 
36349
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/common.js
36349
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/common.js
36350
36350
  function nowTimestamp() {
36351
36351
  return Date.now();
36352
36352
  }
@@ -36375,7 +36375,7 @@ var init_common3 = __esm(() => {
36375
36375
  appendOnlyColumns = buildAppendOnlyColumns();
36376
36376
  });
36377
36377
 
36378
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/queue-jobs.js
36378
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/queue-jobs.js
36379
36379
  var queueJobs;
36380
36380
  var init_queue_jobs = __esm(() => {
36381
36381
  init_sqlite_core();
@@ -36395,7 +36395,7 @@ var init_queue_jobs = __esm(() => {
36395
36395
  }, (table2) => [index("queue_jobs_ready_idx").on(table2.status, table2.nextRetryAt, table2.createdAt)]);
36396
36396
  });
36397
36397
 
36398
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/runtime.js
36398
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/runtime.js
36399
36399
  var exports_runtime = {};
36400
36400
  __export(exports_runtime, {
36401
36401
  queueJobs: () => queueJobs,
@@ -36406,7 +36406,7 @@ var init_runtime = __esm(() => {
36406
36406
  init_queue_jobs();
36407
36407
  });
36408
36408
 
36409
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapters/bun-sqlite.js
36409
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapters/bun-sqlite.js
36410
36410
  var exports_bun_sqlite = {};
36411
36411
  __export(exports_bun_sqlite, {
36412
36412
  BunSqliteAdapter: () => BunSqliteAdapter
@@ -36685,7 +36685,7 @@ var init_d1 = __esm(() => {
36685
36685
  init_session3();
36686
36686
  });
36687
36687
 
36688
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapters/d1.js
36688
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapters/d1.js
36689
36689
  var exports_d1 = {};
36690
36690
  __export(exports_d1, {
36691
36691
  D1Adapter: () => D1Adapter
@@ -43905,8 +43905,8 @@ var require_Tracer = __commonJS((exports) => {
43905
43905
  const parentSpan = api6.trace.getSpan(context3);
43906
43906
  if ((0, core_1.isTracingSuppressed)(context3)) {
43907
43907
  api6.diag.debug("Instrumentation suppressed, returning Noop Span");
43908
- const nonRecordingSpan = api6.trace.wrapSpanContext(api6.INVALID_SPAN_CONTEXT);
43909
- return nonRecordingSpan;
43908
+ const nonRecordingSpan2 = api6.trace.wrapSpanContext(api6.INVALID_SPAN_CONTEXT);
43909
+ return nonRecordingSpan2;
43910
43910
  }
43911
43911
  const parentSpanContext = parentSpan?.spanContext();
43912
43912
  const spanId = this._idGenerator.generateSpanId();
@@ -43935,8 +43935,8 @@ var require_Tracer = __commonJS((exports) => {
43935
43935
  const spanContext = { traceId, spanId, traceFlags, traceState };
43936
43936
  if (samplingResult.decision === api6.SamplingDecision.NOT_RECORD) {
43937
43937
  api6.diag.debug("Recording is off, propagating context in a non-recording span");
43938
- const nonRecordingSpan = api6.trace.wrapSpanContext(spanContext);
43939
- return nonRecordingSpan;
43938
+ const nonRecordingSpan2 = api6.trace.wrapSpanContext(spanContext);
43939
+ return nonRecordingSpan2;
43940
43940
  }
43941
43941
  const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes));
43942
43942
  const span = new Span_1.SpanImpl({
@@ -44506,11 +44506,11 @@ var {
44506
44506
  Help
44507
44507
  } = import__.default;
44508
44508
 
44509
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application-node.js
44509
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application-node.js
44510
44510
  import { appendFileSync as appendFileSync3, mkdirSync as mkdirSync3, readFileSync as readFileSync5 } from "fs";
44511
44511
  import { dirname as dirname2 } from "path";
44512
44512
 
44513
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapter.js
44513
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/adapter.js
44514
44514
  async function createDbAdapter(config3) {
44515
44515
  switch (config3.driver) {
44516
44516
  case "bun-sqlite": {
@@ -44526,7 +44526,7 @@ async function createDbAdapter(config3) {
44526
44526
  }
44527
44527
  }
44528
44528
  }
44529
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/query-spec.js
44529
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/query-spec.js
44530
44530
  var COMPARISON_BUILDERS = {
44531
44531
  eq: (col, value) => eq(col, value),
44532
44532
  ne: (col, value) => ne(col, value),
@@ -44560,7 +44560,7 @@ function compileOrderBy(orderBy) {
44560
44560
  return orderBy.map((term) => term.dir === "desc" ? desc(term.col) : asc(term.col));
44561
44561
  }
44562
44562
 
44563
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/base-dao.js
44563
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/base-dao.js
44564
44564
  function asSelectQuery(query) {
44565
44565
  return query;
44566
44566
  }
@@ -44599,7 +44599,7 @@ class BaseDao {
44599
44599
  }
44600
44600
  }
44601
44601
 
44602
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/entity-dao.js
44602
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/entity-dao.js
44603
44603
  class EntityDao extends BaseDao {
44604
44604
  table;
44605
44605
  primaryKey;
@@ -44754,7 +44754,7 @@ class EntityDao extends BaseDao {
44754
44754
  return { and: [where, active] };
44755
44755
  }
44756
44756
  }
44757
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/inbox-message-dao.js
44757
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/inbox-message-dao.js
44758
44758
  init_inbox_messages();
44759
44759
 
44760
44760
  class InboxMessageDao extends EntityDao {
@@ -44822,7 +44822,7 @@ class InboxMessageDao extends EntityDao {
44822
44822
  return this.findBy(inboxMessages.id, id);
44823
44823
  }
44824
44824
  }
44825
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application-node.js
44825
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application-node.js
44826
44826
  init_dist3();
44827
44827
  // ../../node_modules/.bun/@logtape+logtape@2.1.1/node_modules/@logtape/logtape/dist/context.js
44828
44828
  var categoryPrefixSymbol = Symbol.for("logtape.categoryPrefix");
@@ -46595,7 +46595,7 @@ var ConfigError = class extends Error {
46595
46595
  }
46596
46596
  };
46597
46597
 
46598
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/logger.js
46598
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/logger.js
46599
46599
  var ROOT_CATEGORY = "app";
46600
46600
  function toLogTapeLevel(level) {
46601
46601
  return level === "warn" ? "warning" : level;
@@ -46665,10 +46665,10 @@ async function initializeLogger(options = {}) {
46665
46665
  }
46666
46666
  }
46667
46667
 
46668
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
46668
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
46669
46669
  var import_api2 = __toESM(require_src(), 1);
46670
46670
 
46671
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/sdk.js
46671
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/sdk.js
46672
46672
  var import_api = __toESM(require_src(), 1);
46673
46673
  var CONFIG_DEFAULTS = {
46674
46674
  enabled: true,
@@ -46687,6 +46687,9 @@ var TRACER_NAME = "@gobing-ai/ts-infra";
46687
46687
  var TRACER_VERSION = "0.1.0";
46688
46688
  var telemetryInitialized = false;
46689
46689
  var resolvedConfig = getTelemetryConfig();
46690
+ function getResolvedConfig() {
46691
+ return resolvedConfig;
46692
+ }
46690
46693
  function initTelemetry(config3) {
46691
46694
  if (telemetryInitialized)
46692
46695
  return;
@@ -46701,8 +46704,16 @@ function getTracer() {
46701
46704
  return import_api.trace.getTracer(TRACER_NAME, TRACER_VERSION);
46702
46705
  }
46703
46706
 
46704
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
46707
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
46708
+ function isSuppressed(tracer2) {
46709
+ return tracer2 === undefined && !getResolvedConfig().enabled;
46710
+ }
46711
+ function nonRecordingSpan() {
46712
+ return import_api2.trace.wrapSpanContext(import_api2.INVALID_SPAN_CONTEXT);
46713
+ }
46705
46714
  async function traceAsync(name, fn, options, tracer2) {
46715
+ if (isSuppressed(tracer2))
46716
+ return fn(nonRecordingSpan());
46706
46717
  const resolvedTracer = tracer2 ?? getTracer();
46707
46718
  return resolvedTracer.startActiveSpan(name, options ?? {}, async (span) => {
46708
46719
  try {
@@ -46728,7 +46739,7 @@ function addSpanEvent(name, attributes) {
46728
46739
  }
46729
46740
  }
46730
46741
 
46731
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/metrics.js
46742
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/metrics.js
46732
46743
  var import_api3 = __toESM(require_src(), 1);
46733
46744
  var metricsInitialized = false;
46734
46745
  var METER_NAME = "@gobing-ai/ts-infra";
@@ -46737,13 +46748,29 @@ function getMeter() {
46737
46748
  return import_api3.metrics.getMeter(METER_NAME, METER_VERSION);
46738
46749
  }
46739
46750
  var instruments = {};
46751
+ var _noopCounter;
46752
+ var _noopHistogram;
46753
+ function noopCounter() {
46754
+ if (!_noopCounter)
46755
+ _noopCounter = import_api3.createNoopMeter().createCounter("noop");
46756
+ return _noopCounter;
46757
+ }
46758
+ function noopHistogram() {
46759
+ if (!_noopHistogram)
46760
+ _noopHistogram = import_api3.createNoopMeter().createHistogram("noop");
46761
+ return _noopHistogram;
46762
+ }
46740
46763
  function getOrCreateCounter(key, name, description, unit = "{operation}") {
46764
+ if (!getResolvedConfig().enabled)
46765
+ return noopCounter();
46741
46766
  if (!instruments[key]) {
46742
46767
  instruments[key] = getMeter().createCounter(name, { description, unit });
46743
46768
  }
46744
46769
  return instruments[key];
46745
46770
  }
46746
46771
  function getOrCreateHistogram(key, name, description, unit = "ms") {
46772
+ if (!getResolvedConfig().enabled)
46773
+ return noopHistogram();
46747
46774
  if (!instruments[key]) {
46748
46775
  instruments[key] = getMeter().createHistogram(name, { description, unit });
46749
46776
  }
@@ -46810,7 +46837,7 @@ function shutdownMetrics() {
46810
46837
  return Promise.resolve();
46811
46838
  }
46812
46839
 
46813
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/event-bus/event-bus.js
46840
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/event-bus/event-bus.js
46814
46841
  var _busLogger;
46815
46842
  function busLogger() {
46816
46843
  if (!_busLogger)
@@ -46821,7 +46848,8 @@ function busLogger() {
46821
46848
  class EventBus {
46822
46849
  syncHandlers = new Map;
46823
46850
  asyncHandlers = new Map;
46824
- asyncHandlerIds = new WeakMap;
46851
+ asyncHandlerIds = new Map;
46852
+ asyncHandlersById = new Map;
46825
46853
  jobQueue;
46826
46854
  lifecycleBus;
46827
46855
  logger;
@@ -46833,7 +46861,7 @@ class EventBus {
46833
46861
  }
46834
46862
  on(event, handler, opts) {
46835
46863
  if (opts?.async) {
46836
- this.registerAsync(event, handler);
46864
+ this.registerAsync(event, handler, opts.name);
46837
46865
  } else {
46838
46866
  this.registerSync(event, handler);
46839
46867
  }
@@ -46859,15 +46887,23 @@ class EventBus {
46859
46887
  if (asyncSet.size === 0) {
46860
46888
  this.asyncHandlers.delete(event);
46861
46889
  }
46890
+ this.releaseAsyncIdIfUnsubscribed(handler);
46862
46891
  }
46863
46892
  }
46864
46893
  removeAllListeners(event) {
46865
46894
  if (event !== undefined) {
46866
46895
  this.syncHandlers.delete(event);
46896
+ const asyncSet = this.asyncHandlers.get(event);
46867
46897
  this.asyncHandlers.delete(event);
46898
+ if (asyncSet) {
46899
+ for (const handler of asyncSet)
46900
+ this.releaseAsyncIdIfUnsubscribed(handler);
46901
+ }
46868
46902
  } else {
46869
46903
  this.syncHandlers.clear();
46870
46904
  this.asyncHandlers.clear();
46905
+ this.asyncHandlerIds.clear();
46906
+ this.asyncHandlersById.clear();
46871
46907
  }
46872
46908
  }
46873
46909
  async emit(event, ...args) {
@@ -46964,13 +47000,21 @@ class EventBus {
46964
47000
  }
46965
47001
  set2.add(handler);
46966
47002
  }
46967
- registerAsync(event, handler) {
47003
+ registerAsync(event, handler, name) {
46968
47004
  let set2 = this.asyncHandlers.get(event);
46969
47005
  if (!set2) {
46970
47006
  set2 = new Set;
46971
47007
  this.asyncHandlers.set(event, set2);
46972
47008
  }
46973
47009
  set2.add(handler);
47010
+ if (!this.asyncHandlerIds.has(handler)) {
47011
+ const id = name ?? `handler-${++this.nextAsyncHandlerId}`;
47012
+ if (this.asyncHandlersById.has(id)) {
47013
+ throw new Error(`Duplicate async handler name: "${id}"`);
47014
+ }
47015
+ this.asyncHandlerIds.set(handler, id);
47016
+ this.asyncHandlersById.set(id, handler);
47017
+ }
46974
47018
  }
46975
47019
  getAsyncHandlerId(handler) {
46976
47020
  const existing = this.asyncHandlerIds.get(handler);
@@ -46978,8 +47022,30 @@ class EventBus {
46978
47022
  return existing;
46979
47023
  const id = `handler-${++this.nextAsyncHandlerId}`;
46980
47024
  this.asyncHandlerIds.set(handler, id);
47025
+ this.asyncHandlersById.set(id, handler);
46981
47026
  return id;
46982
47027
  }
47028
+ releaseAsyncIdIfUnsubscribed(handler) {
47029
+ for (const set2 of this.asyncHandlers.values()) {
47030
+ if (set2.has(handler))
47031
+ return;
47032
+ }
47033
+ const id = this.asyncHandlerIds.get(handler);
47034
+ if (id !== undefined) {
47035
+ this.asyncHandlerIds.delete(handler);
47036
+ this.asyncHandlersById.delete(id);
47037
+ }
47038
+ }
47039
+ createJobHandler() {
47040
+ return async (job) => {
47041
+ const { event, args, handlerId } = job.payload;
47042
+ const handler = this.asyncHandlersById.get(handlerId);
47043
+ if (!handler) {
47044
+ throw new Error(`No async handler registered for id "${handlerId}" (event "${event}")`);
47045
+ }
47046
+ await handler(...args);
47047
+ };
47048
+ }
46983
47049
  publishEmitDone(detail) {
46984
47050
  if (this.lifecycleBus) {
46985
47051
  try {
@@ -47012,7 +47078,7 @@ class EventBus {
47012
47078
  }
47013
47079
  }
47014
47080
 
47015
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/event-bus/default-observers.js
47081
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/event-bus/default-observers.js
47016
47082
  var _obsLogger;
47017
47083
  function obsLogger() {
47018
47084
  if (!_obsLogger)
@@ -47071,7 +47137,7 @@ function attachDefaultObservers(lifecycleBus) {
47071
47137
  attachTelemetryObserver(lifecycleBus);
47072
47138
  }
47073
47139
 
47074
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/scheduler/noop.js
47140
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/scheduler/noop.js
47075
47141
  class NoopSchedulerAdapter {
47076
47142
  constructor() {}
47077
47143
  register(_cron, _action) {}
@@ -47079,7 +47145,7 @@ class NoopSchedulerAdapter {
47079
47145
  async stop() {}
47080
47146
  }
47081
47147
 
47082
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/scheduler/factory.js
47148
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/scheduler/factory.js
47083
47149
  function initScheduler(adapter, cronEntries) {
47084
47150
  const resolved = adapter ?? new NoopSchedulerAdapter;
47085
47151
  if (cronEntries) {
@@ -47090,7 +47156,7 @@ function initScheduler(adapter, cronEntries) {
47090
47156
  return resolved;
47091
47157
  }
47092
47158
 
47093
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application/plugins/builtins.js
47159
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application/plugins/builtins.js
47094
47160
  function telemetryPlugin(config3) {
47095
47161
  return {
47096
47162
  name: "builtin:telemetry",
@@ -47098,21 +47164,21 @@ function telemetryPlugin(config3) {
47098
47164
  failFast: true,
47099
47165
  onLoad: async () => {},
47100
47166
  onStart: async () => {
47167
+ initTelemetry({
47168
+ enabled: config3.enabled,
47169
+ serviceName: config3.serviceName,
47170
+ environment: config3.environment,
47171
+ dbStatementDebug: config3.dbStatementDebug
47172
+ });
47101
47173
  if (config3.enabled) {
47102
- initTelemetry({
47103
- enabled: config3.enabled,
47104
- serviceName: config3.serviceName,
47105
- environment: config3.environment,
47106
- dbStatementDebug: config3.dbStatementDebug
47107
- });
47108
47174
  initMetrics();
47109
47175
  }
47110
47176
  },
47111
47177
  onStop: async () => {
47112
47178
  if (config3.enabled) {
47113
47179
  shutdownMetrics();
47114
- await shutdownTelemetry();
47115
47180
  }
47181
+ await shutdownTelemetry();
47116
47182
  }
47117
47183
  };
47118
47184
  }
@@ -47180,7 +47246,7 @@ function dbPlugin(db2) {
47180
47246
  };
47181
47247
  }
47182
47248
 
47183
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application/plugins/host.js
47249
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application/plugins/host.js
47184
47250
  class PluginHost {
47185
47251
  logger;
47186
47252
  events;
@@ -47266,7 +47332,7 @@ class PluginHost {
47266
47332
  }
47267
47333
  }
47268
47334
 
47269
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application/index.js
47335
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application/index.js
47270
47336
  async function performShutdown(state, reason) {
47271
47337
  if (state.stopped)
47272
47338
  return;
@@ -47313,7 +47379,7 @@ async function runApplication(options) {
47313
47379
  if (lifecycleBus && eventsDefaultObservers) {
47314
47380
  attachDefaultObservers(lifecycleBus);
47315
47381
  }
47316
- const events = options.services?.events ? options.services.events : new EventBus({ lifecycleBus });
47382
+ const events = options.services?.events ?? options.config?.events?.bus ?? new EventBus({ lifecycleBus });
47317
47383
  const db2 = options.services?.db;
47318
47384
  let scheduler3;
47319
47385
  if (schedulerConfig.enabled) {
@@ -47361,19 +47427,24 @@ async function runApplication(options) {
47361
47427
  }
47362
47428
  }
47363
47429
 
47364
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/scheduler/node.js
47430
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/scheduler/node.js
47365
47431
  function parseInterval(cron) {
47366
- const num = Number(cron);
47367
- if (!Number.isNaN(num))
47368
- return num;
47369
- const parts = cron.trim().split(/\s+/);
47370
- if (parts.length === 5 && parts[0] === "*") {
47371
- return 60000;
47372
- }
47373
- const match = parts[0]?.match(/^\*\/(\d+)$/);
47374
- if (match) {
47375
- return Number(match[1]) * 60000;
47432
+ const trimmed = cron.trim();
47433
+ const num = Number(trimmed);
47434
+ if (trimmed !== "" && !Number.isNaN(num)) {
47435
+ if (num > 0)
47436
+ return num;
47437
+ } else {
47438
+ const parts = trimmed.split(/\s+/);
47439
+ if (parts.length === 5 && parts[0] === "*") {
47440
+ return 60000;
47441
+ }
47442
+ const match = parts[0]?.match(/^\*\/(\d+)$/);
47443
+ if (match && Number(match[1]) > 0) {
47444
+ return Number(match[1]) * 60000;
47445
+ }
47376
47446
  }
47447
+ getLogger2("scheduler.node").warn("Unsupported cron expression \u2014 falling back to a 60s interval", { cron });
47377
47448
  return 60000;
47378
47449
  }
47379
47450
 
@@ -47425,7 +47496,7 @@ class NodeSchedulerAdapter {
47425
47496
  }
47426
47497
  }
47427
47498
  }
47428
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
47499
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
47429
47500
  var import_api14 = __toESM(require_src(), 1);
47430
47501
 
47431
47502
  // ../../node_modules/.bun/@opentelemetry+exporter-metrics-otlp-http@0.218.0+e40b0dfdd726a224/node_modules/@opentelemetry/exporter-metrics-otlp-http/build/esm/OTLPMetricExporterBase.js
@@ -50441,7 +50512,7 @@ class OTLPTraceExporter extends import_otlp_exporter_base2.OTLPExporterBase {
50441
50512
  }), JsonTraceSerializer));
50442
50513
  }
50443
50514
  }
50444
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
50515
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
50445
50516
  var import_resources2 = __toESM(require_src4(), 1);
50446
50517
  var import_sdk_trace_node = __toESM(require_src8(), 1);
50447
50518
  var import_semantic_conventions = __toESM(require_src2(), 1);
@@ -50492,7 +50563,7 @@ async function shutdownNodeTelemetry() {
50492
50563
  await Promise.all(pending);
50493
50564
  }
50494
50565
 
50495
- // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.10+b08a8f4cb39e7846/node_modules/@gobing-ai/ts-infra/dist/application-node.js
50566
+ // ../../node_modules/.bun/@gobing-ai+ts-infra@0.3.11+b297f31fc53502e3/node_modules/@gobing-ai/ts-infra/dist/application-node.js
50496
50567
  class ConfigValidationError extends Error {
50497
50568
  constructor(message) {
50498
50569
  super(message);
@@ -50587,18 +50658,19 @@ async function runNodeApplication(options) {
50587
50658
  }
50588
50659
  const plugins = [];
50589
50660
  let dbAdapter = options.services?.db;
50590
- const rawTel = { ...telemetryOpts };
50591
- if (rawTel.enabled !== false && rawTel.endpoint) {
50661
+ const otlpEndpoint = telemetryOpts.endpoint;
50662
+ if (telemetryOpts.enabled !== false && otlpEndpoint) {
50663
+ const otlpHeaders = telemetryOpts.headers;
50664
+ const serviceName = telemetryOpts.serviceName ?? "ts-libs";
50592
50665
  plugins.push({
50593
50666
  name: "builtin:node-telemetry",
50594
50667
  version: "0.0.0",
50595
50668
  failFast: true,
50596
- onLoad: async () => {},
50597
- onStart: async () => {
50669
+ onLoad: async () => {
50598
50670
  initNodeTelemetry({
50599
- serviceName: rawTel.serviceName ?? "ts-libs",
50600
- endpoint: rawTel.endpoint,
50601
- headers: rawTel.headers
50671
+ serviceName,
50672
+ endpoint: otlpEndpoint,
50673
+ ...otlpHeaders ? { headers: otlpHeaders } : {}
50602
50674
  });
50603
50675
  },
50604
50676
  onStop: async () => {
@@ -54262,7 +54334,7 @@ Font modified May 20, 2012 by patorjk to add the 0xCA0 character
54262
54334
  import { stat } from "fs/promises";
54263
54335
  import { isatty as isatty2 } from "tty";
54264
54336
 
54265
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agents/shims.js
54337
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agents/shims.js
54266
54338
  var claudeShim = {
54267
54339
  name: "claude",
54268
54340
  command: "claude",
@@ -54398,10 +54470,10 @@ function isAgentName(value) {
54398
54470
  function getAgentShim(agent) {
54399
54471
  return AGENT_SHIMS[agent];
54400
54472
  }
54401
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
54473
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
54402
54474
  init_dist3();
54403
54475
 
54404
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/identity.js
54476
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/identity.js
54405
54477
  function buildIdentityPreamble(ctx) {
54406
54478
  const sections = [
54407
54479
  `You are agent \`${ctx.agentId}\` (${ctx.agentType}) in workspace \`${ctx.workspace}\`.`
@@ -54442,7 +54514,7 @@ function buildIdentityPreamble(ctx) {
54442
54514
  `;
54443
54515
  }
54444
54516
 
54445
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/slash-command.js
54517
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/slash-command.js
54446
54518
  var SLASH_COMMAND_RE = /^\/([a-zA-Z0-9._-]+):([a-zA-Z0-9._-]+)(\s.*)?$/;
54447
54519
  function isClaudeStyleSlashCommand(input) {
54448
54520
  return SLASH_COMMAND_RE.test(input);
@@ -54466,7 +54538,7 @@ function translateSlashCommand(agent, input) {
54466
54538
  }
54467
54539
  }
54468
54540
 
54469
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
54541
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
54470
54542
  class AiRunner {
54471
54543
  processExecutor;
54472
54544
  defaultCwd;
@@ -54568,7 +54640,7 @@ function hasIdentityOptions(options) {
54568
54640
  return options.purpose !== undefined || options.systemPrompt !== undefined || options.taskId !== undefined || options.peers !== undefined && options.peers.length > 0;
54569
54641
  }
54570
54642
 
54571
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agent-detector.js
54643
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agent-detector.js
54572
54644
  var DEFAULT_TIMEOUT_MS = 5000;
54573
54645
  var VERSION_PATTERN = /(?<version>\d+\.\d+(?:\.\d+)?)/;
54574
54646
 
@@ -54630,7 +54702,7 @@ function unavailable(name, error51) {
54630
54702
  return { name, installed: false, version: null, channels: [], error: error51 };
54631
54703
  }
54632
54704
 
54633
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agent-spec.js
54705
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/agent-spec.js
54634
54706
  init_dist3();
54635
54707
 
54636
54708
  class ValueError extends Error {
@@ -54725,7 +54797,7 @@ function requireRecord(source, key, fileName) {
54725
54797
  return value;
54726
54798
  }
54727
54799
 
54728
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/doctor-runner.js
54800
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/doctor-runner.js
54729
54801
  init_dist3();
54730
54802
  var DEFAULT_TIMEOUT_MS2 = 5000;
54731
54803
  var AUTH_PATTERNS = {
@@ -54844,12 +54916,12 @@ ${result.stderr}`;
54844
54916
  }
54845
54917
  }
54846
54918
 
54847
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/messages.js
54919
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/messages.js
54848
54920
  function formatMessage(msg) {
54849
54921
  return `[task from=${msg.fromId ?? "operator"} id=${msg.id}] ${msg.body}`;
54850
54922
  }
54851
54923
 
54852
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/team-agent-process.js
54924
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/team-agent-process.js
54853
54925
  import { Buffer as Buffer5 } from "buffer";
54854
54926
  init_dist3();
54855
54927
 
@@ -54980,7 +55052,7 @@ class TeamAgentProcess {
54980
55052
  }
54981
55053
  }
54982
55054
 
54983
- // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.10+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/team-orchestrator.js
55055
+ // ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.3.11+fbd66d84c9f9ab42/node_modules/@gobing-ai/ts-ai-runner/dist/team-orchestrator.js
54984
55056
  class TeamOrchestrator {
54985
55057
  configDir;
54986
55058
  inbox;
@@ -55484,11 +55556,11 @@ function etlToCostRecord(payload, source) {
55484
55556
  costUsd: 0
55485
55557
  };
55486
55558
  }
55487
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/index.js
55559
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/index.js
55488
55560
  init_sqlite_core();
55489
55561
  init_common3();
55490
55562
 
55491
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
55563
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
55492
55564
  init_sqlite_core();
55493
55565
 
55494
55566
  // ../../node_modules/.bun/drizzle-orm@0.38.4+a0473b45aab9bf33/node_modules/drizzle-orm/mysql-core/columns/common.js
@@ -55599,10 +55671,10 @@ function p(e) {
55599
55671
  return m2 || (m2 = exports_external.any()), m2;
55600
55672
  }
55601
55673
 
55602
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
55674
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
55603
55675
  init_sqlite_core();
55604
55676
 
55605
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/drizzle-internals.js
55677
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/drizzle-internals.js
55606
55678
  function sqlExpressionToText(value) {
55607
55679
  if (typeof value !== "object" || value === null || !("queryChunks" in value)) {
55608
55680
  return;
@@ -55625,7 +55697,7 @@ function getDrizzleTableName(table2) {
55625
55697
  return String(table2[nameSym]);
55626
55698
  }
55627
55699
 
55628
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
55700
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
55629
55701
  function quoteIdent(name) {
55630
55702
  return `"${name.replace(/"/g, '""')}"`;
55631
55703
  }
@@ -55716,7 +55788,7 @@ function generateCreateTableSql(table2) {
55716
55788
  )`;
55717
55789
  }
55718
55790
 
55719
- // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.10+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
55791
+ // ../../node_modules/.bun/@gobing-ai+ts-db@0.3.11+30cfa7dfb09a2dc3/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
55720
55792
  function defineTable(name, columns2) {
55721
55793
  const table2 = sqliteTable(name, columns2);
55722
55794
  let insert2;
@@ -55834,10 +55906,10 @@ var workflowStates = workflowStatesTable.table;
55834
55906
  import { readdir as readdir2 } from "fs/promises";
55835
55907
  import { join as join2 } from "path";
55836
55908
 
55837
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
55909
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
55838
55910
  init_dist3();
55839
55911
 
55840
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/errors.js
55912
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/errors.js
55841
55913
  class WorkflowValidationError extends Error {
55842
55914
  details;
55843
55915
  constructor(message, details) {
@@ -55863,7 +55935,7 @@ class RunCollisionError extends Error {
55863
55935
  }
55864
55936
  }
55865
55937
 
55866
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/run-lifecycle.js
55938
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/run-lifecycle.js
55867
55939
  init_dist3();
55868
55940
  var RUNTIME_BUILTIN_KEYS = [
55869
55941
  "workflow",
@@ -55991,7 +56063,7 @@ class RunLifecycle {
55991
56063
  }
55992
56064
  }
55993
56065
 
55994
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema.js
56066
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema.js
55995
56067
  init_zod();
55996
56068
  var RESERVED_VAR_NAMES = new Set(["task", "state", "node", "iteration", "run", "runtime"]);
55997
56069
  var IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
@@ -56070,7 +56142,7 @@ var TransitionFlowWorkflowDefSchema = exports_external.object({
56070
56142
  }).strict();
56071
56143
  var WorkflowDefSchema = exports_external.union([StateMachineWorkflowDefSchema, TransitionFlowWorkflowDefSchema]);
56072
56144
 
56073
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
56145
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
56074
56146
  async function loadWorkflowDef(path8, options = {}) {
56075
56147
  return parseWorkflowDef(await loadStructuredConfig(path8, options), path8);
56076
56148
  }
@@ -56221,10 +56293,10 @@ function throwIfErrors(workflow, errors5) {
56221
56293
  throw new WorkflowValidationError(`Workflow "${workflow.name}" is invalid: ${errors5.join("; ")}`, errors5);
56222
56294
  }
56223
56295
  }
56224
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
56296
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
56225
56297
  init_dist3();
56226
56298
 
56227
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/extension/capability-registry.js
56299
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/extension/capability-registry.js
56228
56300
  class CapabilityRegistry {
56229
56301
  kind;
56230
56302
  capabilities = new Map;
@@ -56255,7 +56327,7 @@ class CapabilityRegistry {
56255
56327
  }
56256
56328
  }
56257
56329
 
56258
- // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.10/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-path.js
56330
+ // ../../node_modules/.bun/@gobing-ai+ts-runtime@0.3.11/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-path.js
56259
56331
  function assertRelativeExtensionPath(path8, options = {}) {
56260
56332
  const where = options.sourceName !== undefined ? ` declared by "${options.sourceName}"` : "";
56261
56333
  if (/^([/\\]|[A-Za-z]:[/\\])/.test(path8)) {
@@ -56266,7 +56338,7 @@ function assertRelativeExtensionPath(path8, options = {}) {
56266
56338
  }
56267
56339
  }
56268
56340
 
56269
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
56341
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
56270
56342
  class WorkflowEngineHost {
56271
56343
  actions = new CapabilityRegistry("workflow action");
56272
56344
  guards = new CapabilityRegistry("workflow guard");
@@ -56383,7 +56455,7 @@ function arrayOption(options, key) {
56383
56455
  return value;
56384
56456
  throw new WorkflowValidationError(`Action option "${key}" must be a string array`);
56385
56457
  }
56386
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema-sql.js
56458
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema-sql.js
56387
56459
  var WORKFLOW_ENGINE_SCHEMA_SQL = `
56388
56460
  CREATE TABLE IF NOT EXISTS runs (
56389
56461
  id TEXT PRIMARY KEY,
@@ -56433,7 +56505,7 @@ CREATE TABLE IF NOT EXISTS workflow_states (
56433
56505
  );
56434
56506
  `.trim();
56435
56507
 
56436
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/persistence.js
56508
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/persistence.js
56437
56509
  async function applyWorkflowEngineSchema(db2) {
56438
56510
  for (const statement of WORKFLOW_ENGINE_SCHEMA_SQL.split(";")) {
56439
56511
  const sql3 = statement.trim();
@@ -56515,7 +56587,7 @@ class MemoryWorkflowPersistenceAdapter {
56515
56587
  return [...this.runs.values()];
56516
56588
  }
56517
56589
  }
56518
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/variables.js
56590
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/variables.js
56519
56591
  var TEMPLATE_REF = /\$\{([^}]+)\}/g;
56520
56592
  function mergeVars(workflowVars = {}, overrideVars = {}) {
56521
56593
  return { ...workflowVars, ...overrideVars };
@@ -56571,7 +56643,7 @@ function resolveOnErrorPolicy(actionOnError, workflowDefault, runOptionOverride)
56571
56643
  return actionOnError ?? workflowDefault ?? runOptionOverride ?? "fail";
56572
56644
  }
56573
56645
 
56574
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/state-machine.js
56646
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/state-machine.js
56575
56647
  class StateMachineDriver {
56576
56648
  options;
56577
56649
  constructor(options) {
@@ -56682,7 +56754,7 @@ async function firstPassingTransition(transitions, host, context3) {
56682
56754
  return;
56683
56755
  }
56684
56756
 
56685
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/transition-flow.js
56757
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/transition-flow.js
56686
56758
  class TransitionFlowDriver {
56687
56759
  options;
56688
56760
  constructor(options) {
@@ -56776,7 +56848,7 @@ async function firstPassingEdge(edges, host, context3) {
56776
56848
  return;
56777
56849
  }
56778
56850
 
56779
- // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.10+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/service.js
56851
+ // ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.3.11+3f1a4ed45f5d8e5a/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/service.js
56780
56852
  class WorkflowService {
56781
56853
  host;
56782
56854
  persistence;
@@ -56800,10 +56872,10 @@ class WorkflowService {
56800
56872
  return await this.persistence.listRuns();
56801
56873
  }
56802
56874
  }
56803
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
56875
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
56804
56876
  init_dist3();
56805
56877
 
56806
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/errors.js
56878
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/errors.js
56807
56879
  class HistoryImportError extends Error {
56808
56880
  details;
56809
56881
  constructor(message, details) {
@@ -56813,7 +56885,7 @@ class HistoryImportError extends Error {
56813
56885
  }
56814
56886
  }
56815
56887
 
56816
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/hash.js
56888
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/hash.js
56817
56889
  import { createHash } from "crypto";
56818
56890
  function stableJson(value) {
56819
56891
  if (Array.isArray(value)) {
@@ -56829,7 +56901,7 @@ function sha256(value) {
56829
56901
  return createHash("sha256").update(stableJson(value)).digest("hex");
56830
56902
  }
56831
56903
 
56832
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/redaction.js
56904
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/redaction.js
56833
56905
  var DEFAULT_REDACTION_RULES = [
56834
56906
  {
56835
56907
  name: "api-key",
@@ -56863,7 +56935,7 @@ function redactRecord(record2, rules = DEFAULT_REDACTION_RULES) {
56863
56935
  return redactValue(record2, rules);
56864
56936
  }
56865
56937
 
56866
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/schema-sql.js
56938
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/schema-sql.js
56867
56939
  var HISTORY_IMPORT_SCHEMA_SQL = `
56868
56940
  CREATE TABLE IF NOT EXISTS history_import_checkpoint (
56869
56941
  source TEXT NOT NULL,
@@ -56947,7 +57019,7 @@ CREATE TABLE IF NOT EXISTS history_etl_openclaw (
56947
57019
  );
56948
57020
  `.trim();
56949
57021
 
56950
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/sources.js
57022
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/sources.js
56951
57023
  init_zod();
56952
57024
  var sourceRecordSchema = exports_external.object({
56953
57025
  source_record_id: exports_external.string().min(1),
@@ -57032,7 +57104,7 @@ function getSourceDefinition(source) {
57032
57104
  return SOURCE_DEFINITIONS[source];
57033
57105
  }
57034
57106
 
57035
- // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.10+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
57107
+ // ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.3.11+7d2c76e58a76f847/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
57036
57108
  var VALID_TABLE_NAME = /^history_etl_[a-z_]+$/;
57037
57109
  async function applyHistoryImportSchema(db2) {
57038
57110
  for (const statement of HISTORY_IMPORT_SCHEMA_SQL.split(";")) {
@@ -57485,7 +57557,7 @@ function buildConfigFromEnv(env = process.env) {
57485
57557
  });
57486
57558
  }
57487
57559
 
57488
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/config/extensions.js
57560
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/config/extensions.js
57489
57561
  init_dist3();
57490
57562
  function collectExtensions(sourceName, sourceDir, extensions) {
57491
57563
  if (extensions === undefined)
@@ -57499,10 +57571,10 @@ function collectExtensions(sourceName, sourceDir, extensions) {
57499
57571
  return refs;
57500
57572
  }
57501
57573
 
57502
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
57574
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
57503
57575
  init_dist3();
57504
57576
 
57505
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/types.js
57577
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/types.js
57506
57578
  init_zod();
57507
57579
  var SEVERITY_RANK = {
57508
57580
  error: 3,
@@ -57569,7 +57641,7 @@ var PresetDefinitionSchema = exports_external.object({
57569
57641
  extensions: ExtensionsSchema.optional()
57570
57642
  });
57571
57643
 
57572
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
57644
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
57573
57645
  async function loadPreset(name, options) {
57574
57646
  const merged = await buildMergedRoots(options.roots.map((root) => resolvePath2(root)));
57575
57647
  const presetPath = findMergedPreset(merged, name);
@@ -57779,10 +57851,10 @@ function normalizeRule(rule, _sourceDir) {
57779
57851
  };
57780
57852
  }
57781
57853
 
57782
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
57854
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
57783
57855
  init_dist3();
57784
57856
 
57785
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/test-stub-fixer.js
57857
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/test-stub-fixer.js
57786
57858
  init_dist3();
57787
57859
  var realFileSystem = new NodeFileSystem;
57788
57860
  function normalizeFindingPath(filePath) {
@@ -57844,7 +57916,7 @@ class TestStubFixer {
57844
57916
  }
57845
57917
  }
57846
57918
 
57847
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
57919
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
57848
57920
  var FIX_MODE_RANK = {
57849
57921
  none: 0,
57850
57922
  suggest: 1,
@@ -58044,7 +58116,7 @@ function getLineRange(source, oneBasedLine) {
58044
58116
  return { start, end: newline === -1 ? source.length : newline };
58045
58117
  }
58046
58118
 
58047
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-utils.js
58119
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-utils.js
58048
58120
  init_dist3();
58049
58121
  var DEFAULT_EXCLUDES = new Set([".git", "node_modules", "dist", ".coverage", ".astro", ".wrangler"]);
58050
58122
  async function discoverFiles2(options) {
@@ -58147,7 +58219,7 @@ function parseInlineFlags(source) {
58147
58219
  return { flags, rest: source.slice(match[0].length) };
58148
58220
  }
58149
58221
 
58150
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/agent-detection-evaluator.js
58222
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/agent-detection-evaluator.js
58151
58223
  class AgentDetectionEvaluator {
58152
58224
  detector;
58153
58225
  constructor(detector = new AgentDetector) {
@@ -58170,7 +58242,7 @@ class AgentDetectionEvaluator {
58170
58242
  }
58171
58243
  }
58172
58244
 
58173
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/coverage-gate-evaluator.js
58245
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/coverage-gate-evaluator.js
58174
58246
  init_dist3();
58175
58247
  class CoverageGateEvaluator {
58176
58248
  fs;
@@ -58252,7 +58324,7 @@ function normalizeLcovSourcePath(workdir, filePath) {
58252
58324
  return normalized.replaceAll("\\", "/");
58253
58325
  }
58254
58326
 
58255
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/exit-code-evaluator.js
58327
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/exit-code-evaluator.js
58256
58328
  init_dist3();
58257
58329
  class ExitCodeEvaluator {
58258
58330
  executor;
@@ -58284,7 +58356,7 @@ class ExitCodeEvaluator {
58284
58356
  }
58285
58357
  }
58286
58358
 
58287
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/forbidden-import-evaluator.js
58359
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/forbidden-import-evaluator.js
58288
58360
  class ForbiddenImportEvaluator {
58289
58361
  async evaluate(rule, context3) {
58290
58362
  const config3 = rule.evaluator.config ?? {};
@@ -58356,7 +58428,7 @@ function compileEntry(entry) {
58356
58428
  return { regex: new RegExp(entry.pattern), label: entry.pattern };
58357
58429
  }
58358
58430
 
58359
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/import-boundary-evaluator.js
58431
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/import-boundary-evaluator.js
58360
58432
  class ImportBoundaryEvaluator {
58361
58433
  async evaluate(rule, context3) {
58362
58434
  const config3 = rule.evaluator.config ?? {};
@@ -58443,7 +58515,7 @@ function isStringArray(value) {
58443
58515
  return Array.isArray(value) && value.every((item) => typeof item === "string");
58444
58516
  }
58445
58517
 
58446
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/path-evaluator.js
58518
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/path-evaluator.js
58447
58519
  init_dist3();
58448
58520
  class PathEvaluator {
58449
58521
  fs;
@@ -58501,7 +58573,7 @@ class PathEvaluator {
58501
58573
  }
58502
58574
  }
58503
58575
 
58504
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/regex-evaluator.js
58576
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/regex-evaluator.js
58505
58577
  class RegexEvaluator {
58506
58578
  constructor() {}
58507
58579
  async evaluate(rule, context3) {
@@ -58572,7 +58644,7 @@ function lineForOffset(content, offset) {
58572
58644
  return line;
58573
58645
  }
58574
58646
 
58575
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/ripgrep-evaluator.js
58647
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/ripgrep-evaluator.js
58576
58648
  init_dist3();
58577
58649
  class RipgrepEvaluator {
58578
58650
  executor;
@@ -58656,7 +58728,7 @@ function requireFindings(rule, pattern, stdout) {
58656
58728
  return findings;
58657
58729
  }
58658
58730
 
58659
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/schema-artifact-evaluator.js
58731
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/schema-artifact-evaluator.js
58660
58732
  init_dist3();
58661
58733
  class SchemaArtifactEvaluator {
58662
58734
  fs;
@@ -58732,7 +58804,7 @@ class SchemaArtifactEvaluator {
58732
58804
  }
58733
58805
  }
58734
58806
 
58735
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/secrets-scanner-evaluator.js
58807
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/secrets-scanner-evaluator.js
58736
58808
  var ASSIGN = "\\s*[=:]\\s*";
58737
58809
  var QUOTED = (body) => `["'\`]${body}["'\`]`;
58738
58810
  var keyworded = (keywords, value) => `(?i)(${keywords})${ASSIGN}${QUOTED(value)}`;
@@ -58797,7 +58869,7 @@ function compile(source) {
58797
58869
  return new RegExp(rest, flags);
58798
58870
  }
58799
58871
 
58800
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/sg-evaluator.js
58872
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/sg-evaluator.js
58801
58873
  init_dist3();
58802
58874
  class SgEvaluator {
58803
58875
  executor;
@@ -58890,7 +58962,7 @@ function parseSgJson(stdout) {
58890
58962
  return results;
58891
58963
  }
58892
58964
 
58893
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/resolvers/test-path-resolver.js
58965
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/resolvers/test-path-resolver.js
58894
58966
  class TypeScriptTestPathResolver {
58895
58967
  name = "typescript";
58896
58968
  constructor() {}
@@ -58973,7 +59045,7 @@ function testify(rel) {
58973
59045
  return `${dir}test_${base2}`;
58974
59046
  }
58975
59047
 
58976
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/test-location-evaluator.js
59048
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/test-location-evaluator.js
58977
59049
  class TestLocationEvaluator {
58978
59050
  resolvers;
58979
59051
  constructor(resolvers) {
@@ -59041,7 +59113,7 @@ class TestLocationEvaluator {
59041
59113
  }
59042
59114
  var TYPESCRIPT_FALLBACK = new TypeScriptTestPathResolver;
59043
59115
 
59044
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/tsdoc-export-evaluator.js
59116
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/tsdoc-export-evaluator.js
59045
59117
  var VALID_KINDS = ["function", "class", "type", "const", "enum", "interface"];
59046
59118
  var KIND_PATTERN = {
59047
59119
  function: /^export\s+(?:default\s+)?(?:async\s+)?function\s*\*?\s+([A-Za-z0-9_$]+)/,
@@ -59110,7 +59182,7 @@ function precededByJsdoc(lines, declarationLine) {
59110
59182
  return false;
59111
59183
  }
59112
59184
 
59113
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/json.js
59185
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/json.js
59114
59186
  class JsonFormatter {
59115
59187
  constructor() {}
59116
59188
  format(result) {
@@ -59118,7 +59190,7 @@ class JsonFormatter {
59118
59190
  }
59119
59191
  }
59120
59192
 
59121
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/text.js
59193
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/text.js
59122
59194
  class TextFormatter {
59123
59195
  constructor() {}
59124
59196
  format(result) {
@@ -59132,7 +59204,7 @@ class TextFormatter {
59132
59204
  }
59133
59205
  }
59134
59206
 
59135
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/host/builtins.js
59207
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/host/builtins.js
59136
59208
  function registerBuiltins(host, executor) {
59137
59209
  const path8 = new PathEvaluator;
59138
59210
  host.evaluators.register("regex", new RegexEvaluator, "builtin");
@@ -59157,7 +59229,7 @@ function registerBuiltins(host, executor) {
59157
59229
  host.formatters.register("json", new JsonFormatter, "builtin");
59158
59230
  }
59159
59231
 
59160
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/host/rule-engine-host.js
59232
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/host/rule-engine-host.js
59161
59233
  class RuleEngineHost {
59162
59234
  evaluators;
59163
59235
  formatters;
@@ -59171,7 +59243,7 @@ class RuleEngineHost {
59171
59243
  }
59172
59244
  }
59173
59245
 
59174
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/engine.js
59246
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/engine.js
59175
59247
  class RuleEngine {
59176
59248
  host;
59177
59249
  events;
@@ -59294,7 +59366,7 @@ function effectiveFixMode(ruleMode, requestedMode) {
59294
59366
  return FIX_MODE_RANK[ruleMode] <= FIX_MODE_RANK[requestedMode] ? ruleMode : requestedMode;
59295
59367
  }
59296
59368
 
59297
- // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.10+723de5bf5f5fc534/node_modules/@gobing-ai/ts-rule-engine/dist/host/bundled-rules.js
59369
+ // ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.3.11+fe1d37f180adfcae/node_modules/@gobing-ai/ts-rule-engine/dist/host/bundled-rules.js
59298
59370
  init_dist3();
59299
59371
  var BUNDLED_RULES_DIR = "rules";
59300
59372
  var cachedRoot2;
@@ -60817,7 +60889,7 @@ import { join as join6, resolve as resolve3 } from "path";
60817
60889
  var CLI_CONFIG = {
60818
60890
  binaryName: "spur",
60819
60891
  binaryLabel: "spur",
60820
- binaryVersion: "0.2.4",
60892
+ binaryVersion: "0.2.5",
60821
60893
  configDir: ".spur",
60822
60894
  configFile: ".spur/config.yaml",
60823
60895
  databaseFile: ".spur/spur.db"