agentic-qe 3.7.12 → 3.7.13

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.
@@ -976,18 +976,18 @@ var init_logger_factory = __esm({
976
976
  return this.instances.get(domain);
977
977
  }
978
978
  const level = this.getDomainLevel(domain);
979
- let logger23;
979
+ let logger25;
980
980
  if (this.config.silent) {
981
- logger23 = new NullLogger(domain);
981
+ logger25 = new NullLogger(domain);
982
982
  } else if (this.customProvider) {
983
- logger23 = this.customProvider(domain, level, context2);
983
+ logger25 = this.customProvider(domain, level, context2);
984
984
  } else {
985
- logger23 = new ConsoleLogger(domain, level, this.config.consoleConfig, context2);
985
+ logger25 = new ConsoleLogger(domain, level, this.config.consoleConfig, context2);
986
986
  }
987
987
  if (!context2) {
988
- this.instances.set(domain, logger23);
988
+ this.instances.set(domain, logger25);
989
989
  }
990
- return logger23;
990
+ return logger25;
991
991
  }
992
992
  /**
993
993
  * Get a logger (alias for create)
@@ -1372,7 +1372,7 @@ var require_secure_json_parse = __commonJS({
1372
1372
  }
1373
1373
  return obj;
1374
1374
  }
1375
- function parse5(text, reviver, options) {
1375
+ function parse6(text, reviver, options) {
1376
1376
  const { stackTraceLimit } = Error;
1377
1377
  Error.stackTraceLimit = 0;
1378
1378
  try {
@@ -1392,9 +1392,9 @@ var require_secure_json_parse = __commonJS({
1392
1392
  Error.stackTraceLimit = stackTraceLimit;
1393
1393
  }
1394
1394
  }
1395
- module.exports = parse5;
1396
- module.exports.default = parse5;
1397
- module.exports.parse = parse5;
1395
+ module.exports = parse6;
1396
+ module.exports.default = parse6;
1397
+ module.exports.parse = parse6;
1398
1398
  module.exports.safeParse = safeParse;
1399
1399
  module.exports.scan = filter;
1400
1400
  }
@@ -20108,8 +20108,8 @@ var init_kiro_installer = __esm({
20108
20108
  continue;
20109
20109
  }
20110
20110
  try {
20111
- const yaml2 = readFileSync21(join33(sourceDir, file), "utf-8");
20112
- const parsed = this.parseYamlAgent(yaml2);
20111
+ const yaml3 = readFileSync21(join33(sourceDir, file), "utf-8");
20112
+ const parsed = this.parseYamlAgent(yaml3);
20113
20113
  const kiroAgent = this.convertToKiroAgent(parsed);
20114
20114
  writeFileSync13(targetFile, JSON.stringify(kiroAgent, null, 2) + "\n");
20115
20115
  installed.push(name);
@@ -20185,19 +20185,19 @@ var init_kiro_installer = __esm({
20185
20185
  includeMcpJson: true
20186
20186
  };
20187
20187
  }
20188
- parseYamlAgent(yaml2) {
20188
+ parseYamlAgent(yaml3) {
20189
20189
  const get = (key) => {
20190
20190
  const re18 = new RegExp(`^${key}:\\s*(?:"([^"]*)"|(.*))`, "m");
20191
- const m74 = yaml2.match(re18);
20191
+ const m74 = yaml3.match(re18);
20192
20192
  return m74 ? (m74[1] ?? m74[2] ?? "").trim() : "";
20193
20193
  };
20194
20194
  let systemPrompt = "";
20195
- const promptMatch = yaml2.match(/^systemPrompt:\s*\|\s*\n([\s\S]*?)(?=\n\w|\n$)/m);
20195
+ const promptMatch = yaml3.match(/^systemPrompt:\s*\|\s*\n([\s\S]*?)(?=\n\w|\n$)/m);
20196
20196
  if (promptMatch) {
20197
20197
  systemPrompt = promptMatch[1].split("\n").map((l75) => l75.replace(/^ {2}/, "")).join("\n").trim();
20198
20198
  }
20199
20199
  const tools = [];
20200
- const toolsMatch = yaml2.match(/^tools:\s*\n((?:\s+-\s+.*\n?)*)/m);
20200
+ const toolsMatch = yaml3.match(/^tools:\s*\n((?:\s+-\s+.*\n?)*)/m);
20201
20201
  if (toolsMatch) {
20202
20202
  const lines = toolsMatch[1].split("\n");
20203
20203
  for (const line of lines) {
@@ -20206,7 +20206,7 @@ var init_kiro_installer = __esm({
20206
20206
  }
20207
20207
  }
20208
20208
  const permissions = {};
20209
- const permMatch = yaml2.match(/^permissions:\s*\n((?:\s+.*\n?)*)/m);
20209
+ const permMatch = yaml3.match(/^permissions:\s*\n((?:\s+.*\n?)*)/m);
20210
20210
  if (permMatch) {
20211
20211
  const lines = permMatch[1].split("\n");
20212
20212
  for (const line of lines) {
@@ -20327,8 +20327,8 @@ var init_kiro_installer = __esm({
20327
20327
  } else {
20328
20328
  const yamlPath = join33(openCodeSkillsDir, `${skillName}.yaml`);
20329
20329
  if (existsSync29(yamlPath)) {
20330
- const yaml2 = readFileSync21(yamlPath, "utf-8");
20331
- const parsed = this.parseYamlSkill(yaml2);
20330
+ const yaml3 = readFileSync21(yamlPath, "utf-8");
20331
+ const parsed = this.parseYamlSkill(yaml3);
20332
20332
  const markdown = this.convertToSkillMd(parsed);
20333
20333
  mkdirSync15(kiroSkillDir, { recursive: true });
20334
20334
  writeFileSync13(targetFile, markdown, { mode: 420 });
@@ -20394,19 +20394,19 @@ ${claudeContent}`;
20394
20394
  return `${kiroFrontmatter}
20395
20395
  ${body}`;
20396
20396
  }
20397
- parseYamlSkill(yaml2) {
20397
+ parseYamlSkill(yaml3) {
20398
20398
  const get = (key) => {
20399
20399
  const re18 = new RegExp(`^${key}:\\s*(?:"([^"]*)"|(.*))`, "m");
20400
- const m74 = yaml2.match(re18);
20400
+ const m74 = yaml3.match(re18);
20401
20401
  return m74 ? (m74[1] ?? m74[2] ?? "").trim() : "";
20402
20402
  };
20403
20403
  const tags = [];
20404
- const tagsMatch = yaml2.match(/^tags:\s*\[([^\]]*)\]/m);
20404
+ const tagsMatch = yaml3.match(/^tags:\s*\[([^\]]*)\]/m);
20405
20405
  if (tagsMatch) {
20406
20406
  tags.push(...tagsMatch[1].split(",").map((t50) => t50.trim().replace(/^"|"$/g, "")));
20407
20407
  }
20408
20408
  const steps = [];
20409
- const stepsMatch = yaml2.match(/^steps:\s*\n([\s\S]*)$/m);
20409
+ const stepsMatch = yaml3.match(/^steps:\s*\n([\s\S]*)$/m);
20410
20410
  if (stepsMatch) {
20411
20411
  const rawBlocks = stepsMatch[1].split(/\n\s*-\s+name:\s*/);
20412
20412
  for (const block of rawBlocks) {
@@ -22651,8 +22651,8 @@ var init_base = __esm({
22651
22651
  /**
22652
22652
  * Set logger for this tool
22653
22653
  */
22654
- setLogger(logger23) {
22655
- this.logger = logger23;
22654
+ setLogger(logger25) {
22655
+ this.logger = logger25;
22656
22656
  }
22657
22657
  /**
22658
22658
  * Mark result as coming from demo/sample data
@@ -27333,7 +27333,7 @@ __export(qe_reasoning_bank_exports, {
27333
27333
  function createQEReasoningBank(memory, eventBus, config, coherenceService) {
27334
27334
  return new QEReasoningBank(memory, eventBus, config, coherenceService);
27335
27335
  }
27336
- var logger21, DEFAULT_QE_REASONING_BANK_CONFIG, QEReasoningBank;
27336
+ var logger23, DEFAULT_QE_REASONING_BANK_CONFIG, QEReasoningBank;
27337
27337
  var init_qe_reasoning_bank = __esm({
27338
27338
  "src/learning/qe-reasoning-bank.ts"() {
27339
27339
  "use strict";
@@ -27347,7 +27347,7 @@ var init_qe_reasoning_bank = __esm({
27347
27347
  init_witness_chain();
27348
27348
  init_qe_patterns();
27349
27349
  init_qe_guidance();
27350
- logger21 = LoggerFactory.create("QEReasoningBank");
27350
+ logger23 = LoggerFactory.create("QEReasoningBank");
27351
27351
  DEFAULT_QE_REASONING_BANK_CONFIG = {
27352
27352
  enableLearning: true,
27353
27353
  enableGuidance: true,
@@ -27392,7 +27392,7 @@ var init_qe_reasoning_bank = __esm({
27392
27392
  if (!this.sqliteStore) {
27393
27393
  this.sqliteStore = createSQLitePatternStore();
27394
27394
  this.sqliteStore.initialize().catch((e20) => {
27395
- logger21.warn("SQLitePatternStore init failed", { error: toErrorMessage(e20) });
27395
+ logger23.warn("SQLitePatternStore init failed", { error: toErrorMessage(e20) });
27396
27396
  });
27397
27397
  }
27398
27398
  return this.sqliteStore;
@@ -27480,7 +27480,7 @@ var init_qe_reasoning_bank = __esm({
27480
27480
  await store.initialize();
27481
27481
  this.patternStore.setSqliteStore(store);
27482
27482
  } catch (e20) {
27483
- logger21.warn("Failed to wire SQLitePatternStore into PatternStore", { error: toErrorMessage(e20) });
27483
+ logger23.warn("Failed to wire SQLitePatternStore into PatternStore", { error: toErrorMessage(e20) });
27484
27484
  }
27485
27485
  await this.loadPretrainedPatterns();
27486
27486
  this.initialized = true;
@@ -27492,12 +27492,12 @@ var init_qe_reasoning_bank = __esm({
27492
27492
  await this.seedCrossDomainPatterns();
27493
27493
  } else {
27494
27494
  const stats = await this.patternStore.getStats();
27495
- logger21.info("Cross-domain transfer already complete", { totalPatterns: stats.totalPatterns });
27495
+ logger23.info("Cross-domain transfer already complete", { totalPatterns: stats.totalPatterns });
27496
27496
  }
27497
27497
  } catch (error) {
27498
- logger21.warn("Cross-domain seeding failed (non-fatal)", { error });
27498
+ logger23.warn("Cross-domain seeding failed (non-fatal)", { error });
27499
27499
  }
27500
- logger21.info("Initialized");
27500
+ logger23.info("Initialized");
27501
27501
  }
27502
27502
  /**
27503
27503
  * Load pre-trained patterns for common QE scenarios
@@ -27505,7 +27505,7 @@ var init_qe_reasoning_bank = __esm({
27505
27505
  async loadPretrainedPatterns() {
27506
27506
  const stats = await this.patternStore.getStats();
27507
27507
  if (stats.totalPatterns > 0) {
27508
- logger21.info("Found existing patterns", { totalPatterns: stats.totalPatterns });
27508
+ logger23.info("Found existing patterns", { totalPatterns: stats.totalPatterns });
27509
27509
  return;
27510
27510
  }
27511
27511
  const foundationalPatterns = [
@@ -28223,10 +28223,10 @@ On promotion:
28223
28223
  try {
28224
28224
  await this.patternStore.create(options);
28225
28225
  } catch (error) {
28226
- logger21.warn("Failed to load pattern", { name: options.name, error });
28226
+ logger23.warn("Failed to load pattern", { name: options.name, error });
28227
28227
  }
28228
28228
  }
28229
- logger21.info("Loaded foundational patterns", { count: foundationalPatterns.length });
28229
+ logger23.info("Loaded foundational patterns", { count: foundationalPatterns.length });
28230
28230
  }
28231
28231
  /**
28232
28232
  * Seed cross-domain patterns by transferring generalizable patterns
@@ -28309,7 +28309,7 @@ On promotion:
28309
28309
  }
28310
28310
  }
28311
28311
  }
28312
- logger21.info("Cross-domain transfer complete", { transferred, skipped });
28312
+ logger23.info("Cross-domain transfer complete", { transferred, skipped });
28313
28313
  return { transferred, skipped };
28314
28314
  }
28315
28315
  /**
@@ -28336,7 +28336,7 @@ On promotion:
28336
28336
  try {
28337
28337
  this.rvfDualWriter.writePattern(result.value.id, result.value.embedding);
28338
28338
  } catch (rvfErr) {
28339
- logger21.warn("RVF dual-write failed (non-fatal)", { patternId: result.value.id, error: toErrorMessage(rvfErr) });
28339
+ logger23.warn("RVF dual-write failed (non-fatal)", { patternId: result.value.id, error: toErrorMessage(rvfErr) });
28340
28340
  }
28341
28341
  }
28342
28342
  }
@@ -28400,7 +28400,7 @@ On promotion:
28400
28400
  outcome.feedback
28401
28401
  );
28402
28402
  } catch (persistError) {
28403
- logger21.warn("SQLite pattern usage persist failed", { error: toErrorMessage(persistError) });
28403
+ logger23.warn("SQLite pattern usage persist failed", { error: toErrorMessage(persistError) });
28404
28404
  }
28405
28405
  if (result.success) {
28406
28406
  this.stats.learningOutcomes++;
@@ -28412,7 +28412,7 @@ On promotion:
28412
28412
  const pattern = await this.getPattern(outcome.patternId);
28413
28413
  if (pattern && await this.checkPatternPromotionWithCoherence(pattern)) {
28414
28414
  await this.promotePattern(outcome.patternId);
28415
- logger21.info("Pattern promoted to long-term", { name: pattern.name });
28415
+ logger23.info("Pattern promoted to long-term", { name: pattern.name });
28416
28416
  }
28417
28417
  }
28418
28418
  return result;
@@ -28459,7 +28459,7 @@ On promotion:
28459
28459
  payload: event
28460
28460
  });
28461
28461
  }
28462
- logger21.info("Pattern promotion blocked due to coherence violation", {
28462
+ logger23.info("Pattern promotion blocked due to coherence violation", {
28463
28463
  name: pattern.name,
28464
28464
  energy: coherenceResult.energy
28465
28465
  });
@@ -28488,7 +28488,7 @@ On promotion:
28488
28488
  try {
28489
28489
  this.getSqliteStore().promotePattern(patternId);
28490
28490
  } catch (e20) {
28491
- logger21.warn("SQLite pattern promotion persist failed", { error: toErrorMessage(e20) });
28491
+ logger23.warn("SQLite pattern promotion persist failed", { error: toErrorMessage(e20) });
28492
28492
  }
28493
28493
  if (this.rvfDualWriter) {
28494
28494
  try {
@@ -28497,12 +28497,12 @@ On promotion:
28497
28497
  this.rvfDualWriter.writePattern(patternId, promoted.embedding);
28498
28498
  }
28499
28499
  } catch (rvfErr) {
28500
- logger21.warn("RVF dual-write on promote failed (non-fatal)", { patternId, error: toErrorMessage(rvfErr) });
28500
+ logger23.warn("RVF dual-write on promote failed (non-fatal)", { patternId, error: toErrorMessage(rvfErr) });
28501
28501
  }
28502
28502
  }
28503
28503
  getWitnessChain().then((wc) => wc.append("PATTERN_PROMOTE", { patternId }, "reasoning-bank")).catch(() => {
28504
28504
  });
28505
- logger21.info("Promoted pattern to long-term", { patternId });
28505
+ logger23.info("Promoted pattern to long-term", { patternId });
28506
28506
  if (this.eventBus) {
28507
28507
  await this.eventBus.publish({
28508
28508
  id: `pattern-promoted-${patternId}`,
@@ -28513,7 +28513,7 @@ On promotion:
28513
28513
  });
28514
28514
  }
28515
28515
  } else {
28516
- logger21.error("Failed to promote pattern", result.error, { patternId });
28516
+ logger23.error("Failed to promote pattern", result.error, { patternId });
28517
28517
  }
28518
28518
  }
28519
28519
  /**
@@ -28639,7 +28639,7 @@ On promotion:
28639
28639
  return embedding;
28640
28640
  } catch (error) {
28641
28641
  if (process.env.DEBUG) {
28642
- logger21.warn("ONNX embeddings unavailable, using hash fallback", {
28642
+ logger23.warn("ONNX embeddings unavailable, using hash fallback", {
28643
28643
  error: toErrorMessage(error)
28644
28644
  });
28645
28645
  }
@@ -67428,10 +67428,10 @@ var BrowserOrchestrator = class {
67428
67428
  config;
67429
67429
  log;
67430
67430
  adaptiveLocator = null;
67431
- constructor(client, config, logger23) {
67431
+ constructor(client, config, logger25) {
67432
67432
  this.client = client;
67433
67433
  this.config = config;
67434
- this.log = logger23;
67434
+ this.log = logger25;
67435
67435
  this.unifiedClient = config.browserClient ?? client;
67436
67436
  this.useAgentBrowser = isAgentBrowserClient(this.unifiedClient);
67437
67437
  if (config.adaptiveLocator?.enabled) {
@@ -67710,17 +67710,17 @@ var BrowserOrchestrator = class {
67710
67710
  return options;
67711
67711
  }
67712
67712
  };
67713
- function createBrowserOrchestrator(client, config, logger23) {
67714
- return new BrowserOrchestrator(client, config, logger23);
67713
+ function createBrowserOrchestrator(client, config, logger25) {
67714
+ return new BrowserOrchestrator(client, config, logger25);
67715
67715
  }
67716
67716
 
67717
67717
  // src/domains/test-execution/services/e2e/assertion-handlers.ts
67718
67718
  var AssertionHandlers = class {
67719
67719
  orchestrator;
67720
67720
  log;
67721
- constructor(orchestrator, logger23) {
67721
+ constructor(orchestrator, logger25) {
67722
67722
  this.orchestrator = orchestrator;
67723
- this.log = logger23;
67723
+ this.log = logger25;
67724
67724
  }
67725
67725
  // ==========================================================================
67726
67726
  // Unified Browser Client Assertions
@@ -68133,8 +68133,8 @@ var AssertionHandlers = class {
68133
68133
  this.assertCondition(matches, step, expected, actual);
68134
68134
  }
68135
68135
  };
68136
- function createAssertionHandlers(orchestrator, logger23) {
68137
- return new AssertionHandlers(orchestrator, logger23);
68136
+ function createAssertionHandlers(orchestrator, logger25) {
68137
+ return new AssertionHandlers(orchestrator, logger25);
68138
68138
  }
68139
68139
 
68140
68140
  // src/domains/test-execution/services/e2e/wait-condition-handler.ts
@@ -68247,12 +68247,12 @@ var StepExecutors = class {
68247
68247
  assertionHandlers;
68248
68248
  waitConditionHandler;
68249
68249
  log;
68250
- constructor(config, orchestrator, logger23) {
68250
+ constructor(config, orchestrator, logger25) {
68251
68251
  this.config = config;
68252
68252
  this.orchestrator = orchestrator;
68253
- this.assertionHandlers = createAssertionHandlers(orchestrator, logger23);
68253
+ this.assertionHandlers = createAssertionHandlers(orchestrator, logger25);
68254
68254
  this.waitConditionHandler = createWaitConditionHandler(orchestrator);
68255
- this.log = logger23;
68255
+ this.log = logger25;
68256
68256
  }
68257
68257
  /**
68258
68258
  * Execute a single step based on its type
@@ -68680,8 +68680,8 @@ var StepExecutors = class {
68680
68680
  return new Promise((resolve22) => setTimeout(resolve22, ms));
68681
68681
  }
68682
68682
  };
68683
- function createStepExecutors(config, orchestrator, logger23) {
68684
- return new StepExecutors(config, orchestrator, logger23);
68683
+ function createStepExecutors(config, orchestrator, logger25) {
68684
+ return new StepExecutors(config, orchestrator, logger25);
68685
68685
  }
68686
68686
 
68687
68687
  // src/domains/test-execution/services/e2e/step-retry-handler.ts
@@ -68691,10 +68691,10 @@ var StepRetryHandler = class {
68691
68691
  config;
68692
68692
  stepExecutors;
68693
68693
  log;
68694
- constructor(config, stepExecutors, logger23) {
68694
+ constructor(config, stepExecutors, logger25) {
68695
68695
  this.config = config;
68696
68696
  this.stepExecutors = stepExecutors;
68697
- this.log = logger23;
68697
+ this.log = logger25;
68698
68698
  }
68699
68699
  /**
68700
68700
  * Execute a step with retry logic
@@ -68804,8 +68804,8 @@ var StepRetryHandler = class {
68804
68804
  return new Promise((resolve22) => setTimeout(resolve22, ms));
68805
68805
  }
68806
68806
  };
68807
- function createStepRetryHandler(config, stepExecutors, logger23) {
68808
- return new StepRetryHandler(config, stepExecutors, logger23);
68807
+ function createStepRetryHandler(config, stepExecutors, logger25) {
68808
+ return new StepRetryHandler(config, stepExecutors, logger25);
68809
68809
  }
68810
68810
 
68811
68811
  // src/domains/test-execution/services/e2e/result-collector.ts
@@ -68931,10 +68931,10 @@ var E2ETestRunnerService = class {
68931
68931
  constructor(client, config = {}) {
68932
68932
  this.client = client;
68933
68933
  this.config = { ...DEFAULT_E2E_RUNNER_CONFIG, ...config };
68934
- const logger23 = (message) => this.log(message);
68935
- this.orchestrator = createBrowserOrchestrator(client, this.config, logger23);
68936
- this.stepExecutors = createStepExecutors(this.config, this.orchestrator, logger23);
68937
- this.retryHandler = createStepRetryHandler(this.config, this.stepExecutors, logger23);
68934
+ const logger25 = (message) => this.log(message);
68935
+ this.orchestrator = createBrowserOrchestrator(client, this.config, logger25);
68936
+ this.stepExecutors = createStepExecutors(this.config, this.orchestrator, logger25);
68937
+ this.retryHandler = createStepRetryHandler(this.config, this.stepExecutors, logger25);
68938
68938
  this.resultCollector = createResultCollector();
68939
68939
  this.log(
68940
68940
  `E2E Runner initialized with ${this.orchestrator.isUsingAgentBrowser() ? "agent-browser" : "vibium"} client`
@@ -134180,7 +134180,7 @@ var ALL_DOMAINS2 = [
134180
134180
  "enterprise-integration"
134181
134181
  ];
134182
134182
  function getAQEVersion() {
134183
- return true ? "3.7.12" : "3.0.0";
134183
+ return true ? "3.7.13" : "3.0.0";
134184
134184
  }
134185
134185
  function createDefaultConfig(projectName, projectRoot) {
134186
134186
  return {
@@ -135358,12 +135358,12 @@ async function migrateV2Config(projectRoot, v2Detection) {
135358
135358
  codeIntelligence: codeIntelConfig
135359
135359
  }
135360
135360
  };
135361
- const yaml2 = await import("yaml");
135361
+ const yaml3 = await import("yaml");
135362
135362
  const yamlContent = `# Agentic QE v3 Configuration
135363
135363
  # Migrated from v2 on ${(/* @__PURE__ */ new Date()).toISOString()}
135364
135364
  # Original v2 settings preserved in _v2Backup section
135365
135365
 
135366
- ${yaml2.stringify(v3Config)}`;
135366
+ ${yaml3.stringify(v3Config)}`;
135367
135367
  writeFileSync3(v3ConfigPath, yamlContent, "utf-8");
135368
135368
  console.log(" \u2713 V2 config migrated to v3 format");
135369
135369
  } catch (error) {
@@ -137546,9 +137546,9 @@ async function saveConfig(projectRoot, config) {
137546
137546
  if (!existsSync21(configDir)) {
137547
137547
  mkdirSync10(configDir, { recursive: true });
137548
137548
  }
137549
- const yaml2 = configToYAML(config);
137549
+ const yaml3 = configToYAML(config);
137550
137550
  const configPath = join25(configDir, "config.yaml");
137551
- writeFileSync8(configPath, yaml2, "utf-8");
137551
+ writeFileSync8(configPath, yaml3, "utf-8");
137552
137552
  }
137553
137553
  function configToYAML(config) {
137554
137554
  const lines = [
@@ -139951,8 +139951,8 @@ var VerificationPhase = class extends BasePhase {
139951
139951
  config = this.mergeConfigs(config, existingConfig);
139952
139952
  }
139953
139953
  }
139954
- const yaml2 = this.configToYAML(config);
139955
- writeFileSync24(configPath, yaml2, "utf-8");
139954
+ const yaml3 = this.configToYAML(config);
139955
+ writeFileSync24(configPath, yaml3, "utf-8");
139956
139956
  }
139957
139957
  /**
139958
139958
  * Load existing config.yaml and parse it
@@ -150088,10 +150088,19 @@ function createValidationResultAggregator(learner, manifestPath, config) {
150088
150088
  return new ValidationResultAggregator(learner, manifestPath, config);
150089
150089
  }
150090
150090
 
150091
+ // src/validation/trigger-optimizer.ts
150092
+ init_logging();
150093
+ import * as yaml2 from "yaml";
150094
+ var logger11 = LoggerFactory.create("trigger-optimizer");
150095
+
150096
+ // src/validation/version-comparator.ts
150097
+ init_logging();
150098
+ var logger12 = LoggerFactory.create("version-comparator");
150099
+
150091
150100
  // src/learning/skill-validation-learner.ts
150092
150101
  init_safe_json();
150093
150102
  init_logging();
150094
- var logger11 = LoggerFactory.create("skill-validation-learner");
150103
+ var logger13 = LoggerFactory.create("skill-validation-learner");
150095
150104
  var SkillValidationLearner = class {
150096
150105
  constructor(reasoningBank) {
150097
150106
  this.reasoningBank = reasoningBank;
@@ -150174,7 +150183,7 @@ var SkillValidationLearner = class {
150174
150183
  history = this.createEmptyConfidence(outcome.skillName);
150175
150184
  }
150176
150185
  } catch (e20) {
150177
- logger11.debug("Confidence history parse failed", { skill: outcome.skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150186
+ logger13.debug("Confidence history parse failed", { skill: outcome.skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150178
150187
  history = this.createEmptyConfidence(outcome.skillName);
150179
150188
  }
150180
150189
  } else {
@@ -150230,7 +150239,7 @@ var SkillValidationLearner = class {
150230
150239
  crossModel = this.createEmptyCrossModelAnalysis();
150231
150240
  }
150232
150241
  } catch (e20) {
150233
- logger11.debug("Cross-model analysis parse failed", { error: e20 instanceof Error ? e20.message : String(e20) });
150242
+ logger13.debug("Cross-model analysis parse failed", { error: e20 instanceof Error ? e20.message : String(e20) });
150234
150243
  crossModel = this.createEmptyCrossModelAnalysis();
150235
150244
  }
150236
150245
  } else {
@@ -150319,7 +150328,7 @@ var SkillValidationLearner = class {
150319
150328
  return safeJsonParse(templateContent);
150320
150329
  }
150321
150330
  } catch (e20) {
150322
- logger11.debug("Skill confidence pattern content invalid", { skill: skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150331
+ logger13.debug("Skill confidence pattern content invalid", { skill: skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150323
150332
  }
150324
150333
  }
150325
150334
  return null;
@@ -150337,7 +150346,7 @@ var SkillValidationLearner = class {
150337
150346
  return safeJsonParse(templateContent);
150338
150347
  }
150339
150348
  } catch (e20) {
150340
- logger11.debug("Cross-model pattern content invalid", { skill: skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150349
+ logger13.debug("Cross-model pattern content invalid", { skill: skillName, error: e20 instanceof Error ? e20.message : String(e20) });
150341
150350
  }
150342
150351
  }
150343
150352
  return null;
@@ -150396,7 +150405,7 @@ var SkillValidationLearner = class {
150396
150405
  }
150397
150406
  byCategory.get(category).push(pattern);
150398
150407
  } catch (e20) {
150399
- logger11.debug("Invalid pattern during category grouping", { error: e20 instanceof Error ? e20.message : String(e20) });
150408
+ logger13.debug("Invalid pattern during category grouping", { error: e20 instanceof Error ? e20.message : String(e20) });
150400
150409
  }
150401
150410
  }
150402
150411
  for (const [category, categoryPatterns] of Array.from(byCategory.entries())) {
@@ -150418,7 +150427,7 @@ var SkillValidationLearner = class {
150418
150427
  tags.filter((t50) => !["skill-validation", skillName].includes(t50)).forEach((t50) => failureIndicators.add(t50));
150419
150428
  }
150420
150429
  } catch (e20) {
150421
- logger11.debug("Invalid pattern during category extraction", { error: e20 instanceof Error ? e20.message : String(e20) });
150430
+ logger13.debug("Invalid pattern during category extraction", { error: e20 instanceof Error ? e20.message : String(e20) });
150422
150431
  }
150423
150432
  }
150424
150433
  if (categoryPatterns.length > 0) {
@@ -150643,7 +150652,7 @@ function clamp2(value, min, max) {
150643
150652
  init_types();
150644
150653
  init_circular_buffer();
150645
150654
  init_safe_json();
150646
- var logger12 = LoggerFactory.create("RealQEReasoningBank");
150655
+ var logger14 = LoggerFactory.create("RealQEReasoningBank");
150647
150656
  var DEFAULT_REAL_CONFIG = {
150648
150657
  sqlite: {
150649
150658
  // ADR-046: Now uses unified storage via UnifiedMemoryManager by default
@@ -150764,15 +150773,15 @@ var RealQEReasoningBank = class {
150764
150773
  if (this.initialized) return;
150765
150774
  const startTime = performance.now();
150766
150775
  await this.sqliteStore.initialize();
150767
- logger12.info("SQLite persistence initialized");
150776
+ logger14.info("SQLite persistence initialized");
150768
150777
  await this.initializeHNSW();
150769
- logger12.info("HNSW index initialized");
150778
+ logger14.info("HNSW index initialized");
150770
150779
  await this.loadPatternsIntoHNSW();
150771
150780
  const stats = this.sqliteStore.getStats();
150772
150781
  if (stats.totalPatterns === 0) {
150773
150782
  const hasHistoricalData = this.sqliteStore.hasAnyHistoricalData?.() ?? false;
150774
150783
  if (hasHistoricalData) {
150775
- logger12.error(
150784
+ logger14.error(
150776
150785
  "qe_patterns table is EMPTY but historical data exists \u2014 possible data loss! Restore from backup instead of loading seed patterns. Skipping foundational pattern load to avoid masking data loss."
150777
150786
  );
150778
150787
  } else {
@@ -150781,7 +150790,7 @@ var RealQEReasoningBank = class {
150781
150790
  }
150782
150791
  this.initialized = true;
150783
150792
  const initTime = performance.now() - startTime;
150784
- logger12.info("Fully initialized", { durationMs: Math.round(initTime) });
150793
+ logger14.info("Fully initialized", { durationMs: Math.round(initTime) });
150785
150794
  }
150786
150795
  /**
150787
150796
  * Initialize HNSW index for fast similarity search
@@ -150804,9 +150813,9 @@ var RealQEReasoningBank = class {
150804
150813
  this.qeConfig.hnsw.efConstruction
150805
150814
  );
150806
150815
  this.hnswIndex.setEf(this.qeConfig.hnsw.efSearch);
150807
- logger12.info("HNSW initialized", { dimension, M: this.qeConfig.hnsw.M });
150816
+ logger14.info("HNSW initialized", { dimension, M: this.qeConfig.hnsw.M });
150808
150817
  } catch (error) {
150809
- logger12.error("HNSW initialization failed", error instanceof Error ? error : void 0);
150818
+ logger14.error("HNSW initialization failed", error instanceof Error ? error : void 0);
150810
150819
  throw error;
150811
150820
  }
150812
150821
  }
@@ -150830,9 +150839,9 @@ var RealQEReasoningBank = class {
150830
150839
  loaded++;
150831
150840
  }
150832
150841
  if (skipped > 0) {
150833
- logger12.warn("Skipped invalid embeddings", { skipped, expectedDim });
150842
+ logger14.warn("Skipped invalid embeddings", { skipped, expectedDim });
150834
150843
  }
150835
- logger12.info("Loaded patterns into HNSW index", { count: loaded });
150844
+ logger14.info("Loaded patterns into HNSW index", { count: loaded });
150836
150845
  }
150837
150846
  /**
150838
150847
  * Load foundational QE patterns
@@ -150883,10 +150892,10 @@ var RealQEReasoningBank = class {
150883
150892
  try {
150884
150893
  await this.storeQEPattern(options);
150885
150894
  } catch (error) {
150886
- logger12.warn("Failed to load foundational pattern", { name: options.name, error });
150895
+ logger14.warn("Failed to load foundational pattern", { name: options.name, error });
150887
150896
  }
150888
150897
  }
150889
- logger12.info("Loaded foundational patterns", { count: foundationalPatterns.length });
150898
+ logger14.info("Loaded foundational patterns", { count: foundationalPatterns.length });
150890
150899
  }
150891
150900
  /**
150892
150901
  * Store a QE pattern with REAL embeddings
@@ -150913,7 +150922,7 @@ var RealQEReasoningBank = class {
150913
150922
  );
150914
150923
  const decision = await memoryWriteGateIntegration.evaluateWrite(memoryPattern);
150915
150924
  if (!decision.allowed) {
150916
- logger12.warn("Pattern blocked by MemoryWriteGate", {
150925
+ logger14.warn("Pattern blocked by MemoryWriteGate", {
150917
150926
  name: options.name,
150918
150927
  reason: decision.reason,
150919
150928
  conflicts: decision.conflictingPatterns?.join(", ") || "none"
@@ -150923,7 +150932,7 @@ var RealQEReasoningBank = class {
150923
150932
  }
150924
150933
  }
150925
150934
  } catch (govError) {
150926
- logger12.warn("MemoryWriteGate check error (continuing)", { error: govError });
150935
+ logger14.warn("MemoryWriteGate check error (continuing)", { error: govError });
150927
150936
  }
150928
150937
  }
150929
150938
  const patternId = v4_default();
@@ -150968,7 +150977,7 @@ var RealQEReasoningBank = class {
150968
150977
  domain: pattern.domain
150969
150978
  });
150970
150979
  } catch (regError) {
150971
- logger12.warn("Pattern registration with MemoryWriteGate failed", { error: regError });
150980
+ logger14.warn("Pattern registration with MemoryWriteGate failed", { error: regError });
150972
150981
  }
150973
150982
  }
150974
150983
  return ok(pattern);
@@ -151007,7 +151016,7 @@ var RealQEReasoningBank = class {
151007
151016
  }
151008
151017
  const searchTime = performance.now() - startTime;
151009
151018
  if (searchTime > 10) {
151010
- logger12.warn("Slow search", { searchTimeMs: Number(searchTime.toFixed(1)) });
151019
+ logger14.warn("Slow search", { searchTimeMs: Number(searchTime.toFixed(1)) });
151011
151020
  }
151012
151021
  return ok(patterns);
151013
151022
  } catch (error) {
@@ -151109,14 +151118,14 @@ var RealQEReasoningBank = class {
151109
151118
  );
151110
151119
  const quarantineDecision = this.asymmetricEngine.shouldQuarantine(newConfidence, domain);
151111
151120
  if (quarantineDecision.shouldQuarantine) {
151112
- logger12.info("Pattern quarantined (asymmetric drop)", { name: pattern.name });
151121
+ logger14.info("Pattern quarantined (asymmetric drop)", { name: pattern.name });
151113
151122
  }
151114
151123
  this.sqliteStore.updatePattern(outcome.patternId, {
151115
151124
  confidence: newConfidence
151116
151125
  });
151117
151126
  if (await this.checkPatternPromotionWithCoherence(pattern)) {
151118
151127
  this.sqliteStore.promotePattern(outcome.patternId);
151119
- logger12.info("Pattern promoted to long-term", { name: pattern.name });
151128
+ logger14.info("Pattern promoted to long-term", { name: pattern.name });
151120
151129
  }
151121
151130
  }
151122
151131
  return ok(void 0);
@@ -151150,12 +151159,12 @@ var RealQEReasoningBank = class {
151150
151159
  }));
151151
151160
  const coherenceResult = await this.coherenceService.checkCoherence(coherenceNodes);
151152
151161
  if (coherenceResult.energy >= (this.qeConfig.coherenceThreshold || 0.4)) {
151153
- logger12.info("Pattern promotion blocked due to coherence violation", {
151162
+ logger14.info("Pattern promotion blocked due to coherence violation", {
151154
151163
  name: pattern.name,
151155
151164
  energy: coherenceResult.energy
151156
151165
  });
151157
151166
  if (coherenceResult.contradictions && coherenceResult.contradictions.length > 0) {
151158
- logger12.info("Conflicts with existing patterns", {
151167
+ logger14.info("Conflicts with existing patterns", {
151159
151168
  conflictingNodeIds: coherenceResult.contradictions.map((c70) => c70.nodeIds).flat()
151160
151169
  });
151161
151170
  }
@@ -151321,7 +151330,7 @@ var RealQEReasoningBank = class {
151321
151330
  if (currentIndex > 0) {
151322
151331
  const newTier = tierOrder[currentIndex - 1];
151323
151332
  this.sqliteStore.updatePattern(patternId, { tier: newTier });
151324
- logger12.info("Pattern demoted", { name: pattern.name, newTier });
151333
+ logger14.info("Pattern demoted", { name: pattern.name, newTier });
151325
151334
  }
151326
151335
  }
151327
151336
  // ============================================================================
@@ -151348,7 +151357,7 @@ var RealQEReasoningBank = class {
151348
151357
  }
151349
151358
  }
151350
151359
  if (cleaned > 0) {
151351
- logger12.info("Cleaned stale patternIdMap entries", { count: cleaned });
151360
+ logger14.info("Cleaned stale patternIdMap entries", { count: cleaned });
151352
151361
  }
151353
151362
  return cleaned;
151354
151363
  }
@@ -151364,7 +151373,7 @@ var RealQEReasoningBank = class {
151364
151373
  for (const [hnswIdx, id] of Array.from(this.patternIdMap.entries())) {
151365
151374
  if (id === patternId) {
151366
151375
  this.patternIdMap.delete(hnswIdx);
151367
- logger12.info("Removed pattern from HNSW mapping", { patternId });
151376
+ logger14.info("Removed pattern from HNSW mapping", { patternId });
151368
151377
  return true;
151369
151378
  }
151370
151379
  }
@@ -151480,7 +151489,7 @@ var RealQEReasoningBank = class {
151480
151489
  this.stats.learningOutcomes = 0;
151481
151490
  this.stats.successfulOutcomes = 0;
151482
151491
  this.initialized = false;
151483
- logger12.info("Disposed");
151492
+ logger14.info("Disposed");
151484
151493
  }
151485
151494
  /**
151486
151495
  * Alias for dispose() for consistency with other components
@@ -154351,7 +154360,7 @@ init_error_utils();
154351
154360
  init_logging();
154352
154361
  import * as fs26 from "fs";
154353
154362
  import * as path27 from "path";
154354
- var logger13 = LoggerFactory.create("sqlite-reader");
154363
+ var logger15 = LoggerFactory.create("sqlite-reader");
154355
154364
  var SQLiteReader = class {
154356
154365
  name;
154357
154366
  type = "sqlite";
@@ -154447,7 +154456,7 @@ var SQLiteReader = class {
154447
154456
  const result = stmt.get();
154448
154457
  return result.count;
154449
154458
  } catch (error) {
154450
- logger13.debug("Record count query failed", { table: tableName, error: toErrorMessage(error) });
154459
+ logger15.debug("Record count query failed", { table: tableName, error: toErrorMessage(error) });
154451
154460
  return 0;
154452
154461
  }
154453
154462
  }
@@ -154488,7 +154497,7 @@ var SQLiteReader = class {
154488
154497
  const result = stmt.get(tableName);
154489
154498
  return !!result;
154490
154499
  } catch (e20) {
154491
- logger13.debug("Table existence check failed", { table: tableName, error: e20 instanceof Error ? e20.message : String(e20) });
154500
+ logger15.debug("Table existence check failed", { table: tableName, error: e20 instanceof Error ? e20.message : String(e20) });
154492
154501
  return false;
154493
154502
  }
154494
154503
  }
@@ -154509,7 +154518,7 @@ var SQLiteReader = class {
154509
154518
  }
154510
154519
  }
154511
154520
  } catch (e20) {
154512
- logger13.debug("Timestamp column detection failed", { table: tableName, error: e20 instanceof Error ? e20.message : String(e20) });
154521
+ logger15.debug("Timestamp column detection failed", { table: tableName, error: e20 instanceof Error ? e20.message : String(e20) });
154513
154522
  return null;
154514
154523
  }
154515
154524
  return null;
@@ -154527,7 +154536,7 @@ var SQLiteReader = class {
154527
154536
  try {
154528
154537
  transformed[key] = safeJsonParse(value);
154529
154538
  } catch (e20) {
154530
- logger13.debug("JSON parse failed for record field", { key, error: e20 instanceof Error ? e20.message : String(e20) });
154539
+ logger15.debug("JSON parse failed for record field", { key, error: e20 instanceof Error ? e20.message : String(e20) });
154531
154540
  }
154532
154541
  }
154533
154542
  if (key.endsWith("_at") && typeof value === "number") {
@@ -154850,7 +154859,7 @@ function createJSONReader(config) {
154850
154859
  init_logging();
154851
154860
  import { spawn as spawn8 } from "child_process";
154852
154861
  import { createConnection } from "net";
154853
- var logger14 = LoggerFactory.create("tunnel-manager");
154862
+ var logger16 = LoggerFactory.create("tunnel-manager");
154854
154863
  function redactConnectionString(url) {
154855
154864
  try {
154856
154865
  const parsed = new URL(url);
@@ -154859,7 +154868,7 @@ function redactConnectionString(url) {
154859
154868
  }
154860
154869
  return parsed.toString();
154861
154870
  } catch (e20) {
154862
- logger14.debug("URL parse failed during redaction, using regex fallback", { error: e20 instanceof Error ? e20.message : String(e20) });
154871
+ logger16.debug("URL parse failed during redaction, using regex fallback", { error: e20 instanceof Error ? e20.message : String(e20) });
154863
154872
  return url.replace(/:\/\/([^:]+):([^@]+)@/, "://$1:***@");
154864
154873
  }
154865
154874
  }
@@ -155085,7 +155094,7 @@ init_sql_safety();
155085
155094
  init_error_utils();
155086
155095
  init_logging();
155087
155096
  import { createRequire as createRequire9 } from "module";
155088
- var logger15 = LoggerFactory.create("postgres-writer");
155097
+ var logger17 = LoggerFactory.create("postgres-writer");
155089
155098
  var requirePg = createRequire9(import.meta.url);
155090
155099
  var PostgresWriter = class {
155091
155100
  client = null;
@@ -155111,7 +155120,7 @@ var PostgresWriter = class {
155111
155120
  try {
155112
155121
  pg = requirePg("pg");
155113
155122
  } catch (e20) {
155114
- logger15.debug("pg module not installed, using mock mode", { error: e20 instanceof Error ? e20.message : String(e20) });
155123
+ logger17.debug("pg module not installed, using mock mode", { error: e20 instanceof Error ? e20.message : String(e20) });
155115
155124
  console.warn("[PostgresWriter] pg module not installed, running in mock mode");
155116
155125
  this.client = this.createMockClient();
155117
155126
  this.connected = true;
@@ -155192,7 +155201,7 @@ var PostgresWriter = class {
155192
155201
  } catch (error) {
155193
155202
  const batchNum = Math.floor(i58 / batchSize) + 1;
155194
155203
  const totalBatches = Math.ceil(records.length / batchSize);
155195
- logger15.debug(`Batch ${batchNum}/${totalBatches} failed for ${table}, retrying individually`, { error: toErrorMessage(error) });
155204
+ logger17.debug(`Batch ${batchNum}/${totalBatches} failed for ${table}, retrying individually`, { error: toErrorMessage(error) });
155196
155205
  let recovered = 0;
155197
155206
  for (const record of batch) {
155198
155207
  try {
@@ -155200,7 +155209,7 @@ var PostgresWriter = class {
155200
155209
  recovered += inserted;
155201
155210
  } catch (retryError) {
155202
155211
  const recordId = record["id"] || record["key"] || "?";
155203
- logger15.debug(`Skipped record ${String(recordId).slice(0, 50)} in ${table}`, { error: toErrorMessage(retryError) });
155212
+ logger17.debug(`Skipped record ${String(recordId).slice(0, 50)} in ${table}`, { error: toErrorMessage(retryError) });
155204
155213
  }
155205
155214
  }
155206
155215
  totalInserted += recovered;
@@ -155250,7 +155259,7 @@ var PostgresWriter = class {
155250
155259
  const result = await this.client.query(sql, params);
155251
155260
  return result.rowCount || 0;
155252
155261
  } catch (error) {
155253
- logger15.debug(`Upsert failed for ${table}`, { error: toErrorMessage(error) });
155262
+ logger17.debug(`Upsert failed for ${table}`, { error: toErrorMessage(error) });
155254
155263
  throw error;
155255
155264
  }
155256
155265
  }
@@ -155301,7 +155310,7 @@ var PostgresWriter = class {
155301
155310
  return `[${Array.from(floats).join(",")}]`;
155302
155311
  }
155303
155312
  } catch (e20) {
155304
- logger15.debug("Buffer to float array conversion failed", { error: e20 instanceof Error ? e20.message : String(e20) });
155313
+ logger17.debug("Buffer to float array conversion failed", { error: e20 instanceof Error ? e20.message : String(e20) });
155305
155314
  }
155306
155315
  return null;
155307
155316
  }
@@ -155460,7 +155469,7 @@ function createPostgresWriter(config) {
155460
155469
  init_sql_safety();
155461
155470
  init_error_utils();
155462
155471
  init_logging();
155463
- var logger16 = LoggerFactory.create("postgres-reader");
155472
+ var logger18 = LoggerFactory.create("postgres-reader");
155464
155473
  var PostgresReader = class {
155465
155474
  writer;
155466
155475
  environment;
@@ -155499,7 +155508,7 @@ var PostgresReader = class {
155499
155508
  }
155500
155509
  try {
155501
155510
  const rows = await this.writer.query(sql, params);
155502
- logger16.debug(`Read ${rows.length} records from ${source.cloudTable}`, {
155511
+ logger18.debug(`Read ${rows.length} records from ${source.cloudTable}`, {
155503
155512
  env: this.environment
155504
155513
  });
155505
155514
  return rows.map((row) => this.transformRecord(row, source));
@@ -155516,7 +155525,7 @@ var PostgresReader = class {
155516
155525
  const safeTable = this.sanitizeCloudTable(source.cloudTable);
155517
155526
  const timestampCol = await this.findTimestampColumn(safeTable);
155518
155527
  if (!timestampCol) {
155519
- logger16.debug(`No timestamp column found for ${source.cloudTable}, falling back to readAll`);
155528
+ logger18.debug(`No timestamp column found for ${source.cloudTable}, falling back to readAll`);
155520
155529
  return this.readAll(source);
155521
155530
  }
155522
155531
  let sql;
@@ -155532,7 +155541,7 @@ var PostgresReader = class {
155532
155541
  const rows = await this.writer.query(sql, params);
155533
155542
  return rows.map((row) => this.transformRecord(row, source));
155534
155543
  } catch (error) {
155535
- logger16.debug(`Changed query failed for ${source.cloudTable}, falling back to readAll`, {
155544
+ logger18.debug(`Changed query failed for ${source.cloudTable}, falling back to readAll`, {
155536
155545
  error: toErrorMessage(error)
155537
155546
  });
155538
155547
  return this.readAll(source);
@@ -155563,7 +155572,7 @@ var PostgresReader = class {
155563
155572
  await this.writer.rollback();
155564
155573
  } catch {
155565
155574
  }
155566
- logger16.debug(`Count query failed for ${source.cloudTable}`, {
155575
+ logger18.debug(`Count query failed for ${source.cloudTable}`, {
155567
155576
  error: toErrorMessage(error)
155568
155577
  });
155569
155578
  return -1;
@@ -155655,7 +155664,7 @@ init_sql_safety();
155655
155664
  init_error_utils();
155656
155665
  init_logging();
155657
155666
  import * as fs28 from "fs";
155658
- var logger17 = LoggerFactory.create("sqlite-writer");
155667
+ var logger19 = LoggerFactory.create("sqlite-writer");
155659
155668
  var SQLiteWriter = class {
155660
155669
  db = null;
155661
155670
  dbPath;
@@ -155676,7 +155685,7 @@ var SQLiteWriter = class {
155676
155685
  this.db = openDatabase(this.dbPath);
155677
155686
  this.db.pragma("journal_mode = WAL");
155678
155687
  this.db.pragma("synchronous = NORMAL");
155679
- logger17.debug(`Opened SQLite database: ${this.dbPath}`);
155688
+ logger19.debug(`Opened SQLite database: ${this.dbPath}`);
155680
155689
  } catch (error) {
155681
155690
  throw new Error(`Failed to open SQLite database ${this.dbPath}: ${toErrorMessage(error)}`);
155682
155691
  }
@@ -155695,7 +155704,7 @@ var SQLiteWriter = class {
155695
155704
  }
155696
155705
  const localColumns = this.getTableColumns(table);
155697
155706
  if (localColumns.length === 0) {
155698
- logger17.debug(`No columns found for table ${table}`);
155707
+ logger19.debug(`No columns found for table ${table}`);
155699
155708
  return 0;
155700
155709
  }
155701
155710
  const localColumnSet = new Set(localColumns);
@@ -155707,7 +155716,7 @@ var SQLiteWriter = class {
155707
155716
  totalWritten += written;
155708
155717
  } catch (error) {
155709
155718
  const batchNum = Math.floor(i58 / this.batchSize) + 1;
155710
- logger17.debug(`Batch ${batchNum} failed for ${table}, retrying individually`, {
155719
+ logger19.debug(`Batch ${batchNum} failed for ${table}, retrying individually`, {
155711
155720
  error: toErrorMessage(error)
155712
155721
  });
155713
155722
  let recovered = 0;
@@ -155716,7 +155725,7 @@ var SQLiteWriter = class {
155716
155725
  recovered += this.upsertBatch(safeTable, [record], localColumnSet);
155717
155726
  } catch (retryError) {
155718
155727
  const recordId = record["id"] || record["key"] || "?";
155719
- logger17.debug(`Skipped record ${String(recordId).slice(0, 50)} in ${table}`, {
155728
+ logger19.debug(`Skipped record ${String(recordId).slice(0, 50)} in ${table}`, {
155720
155729
  error: toErrorMessage(retryError)
155721
155730
  });
155722
155731
  }
@@ -155747,7 +155756,7 @@ var SQLiteWriter = class {
155747
155756
  if (this.db) {
155748
155757
  this.db.close();
155749
155758
  this.db = null;
155750
- logger17.debug("SQLite writer closed");
155759
+ logger19.debug("SQLite writer closed");
155751
155760
  }
155752
155761
  }
155753
155762
  /**
@@ -155859,7 +155868,7 @@ function createSQLiteWriter(config) {
155859
155868
  init_esm_node();
155860
155869
  init_logging();
155861
155870
  init_error_utils();
155862
- var logger18 = LoggerFactory.create("sync-agent");
155871
+ var logger20 = LoggerFactory.create("sync-agent");
155863
155872
  var CloudSyncAgent = class {
155864
155873
  config;
155865
155874
  readers = /* @__PURE__ */ new Map();
@@ -156094,7 +156103,7 @@ var CloudSyncAgent = class {
156094
156103
  await this.writer.rollback();
156095
156104
  } catch {
156096
156105
  }
156097
- logger18.debug("Cloud count query failed", { source: source.name, error: e20 instanceof Error ? e20.message : String(e20) });
156106
+ logger20.debug("Cloud count query failed", { source: source.name, error: e20 instanceof Error ? e20.message : String(e20) });
156098
156107
  cloudCount = -1;
156099
156108
  }
156100
156109
  }
@@ -156217,7 +156226,7 @@ import * as fs29 from "fs";
156217
156226
  import * as path29 from "path";
156218
156227
  init_error_utils();
156219
156228
  init_logging();
156220
- var logger19 = LoggerFactory.create("pull-agent");
156229
+ var logger21 = LoggerFactory.create("pull-agent");
156221
156230
  var PullSyncAgent = class {
156222
156231
  config;
156223
156232
  reader = null;
@@ -156530,7 +156539,7 @@ init_safe_json();
156530
156539
  init_logging();
156531
156540
  import { resolve as resolve21, dirname as dirname25 } from "path";
156532
156541
  import { fileURLToPath as fileURLToPath8 } from "url";
156533
- var logger20 = LoggerFactory.create("sync-embedding-generator");
156542
+ var logger22 = LoggerFactory.create("sync-embedding-generator");
156534
156543
  var __filename6 = fileURLToPath8(import.meta.url);
156535
156544
  var __dirname6 = dirname25(__filename6);
156536
156545
 
@@ -156966,9 +156975,9 @@ var CohomologyAdapter = class {
156966
156975
  * @param wasmLoader - WASM module loader
156967
156976
  * @param logger - Optional logger for diagnostics
156968
156977
  */
156969
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
156978
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
156970
156979
  this.wasmLoader = wasmLoader2;
156971
- this.logger = logger23;
156980
+ this.logger = logger25;
156972
156981
  }
156973
156982
  engine = null;
156974
156983
  initialized = false;
@@ -157312,9 +157321,9 @@ var SpectralAdapter = class {
157312
157321
  * @param wasmLoader - WASM module loader
157313
157322
  * @param logger - Optional logger for diagnostics
157314
157323
  */
157315
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
157324
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
157316
157325
  this.wasmLoader = wasmLoader2;
157317
- this.logger = logger23;
157326
+ this.logger = logger25;
157318
157327
  }
157319
157328
  engine = null;
157320
157329
  initialized = false;
@@ -157723,9 +157732,9 @@ var CausalAdapter = class {
157723
157732
  * @param wasmLoader - WASM module loader
157724
157733
  * @param logger - Optional logger for diagnostics
157725
157734
  */
157726
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
157735
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
157727
157736
  this.wasmLoader = wasmLoader2;
157728
- this.logger = logger23;
157737
+ this.logger = logger25;
157729
157738
  }
157730
157739
  engine = null;
157731
157740
  initialized = false;
@@ -158018,9 +158027,9 @@ var CategoryAdapter = class {
158018
158027
  * @param wasmLoader - WASM module loader
158019
158028
  * @param logger - Optional logger for diagnostics
158020
158029
  */
158021
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
158030
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
158022
158031
  this.wasmLoader = wasmLoader2;
158023
- this.logger = logger23;
158032
+ this.logger = logger25;
158024
158033
  }
158025
158034
  engine = null;
158026
158035
  initialized = false;
@@ -158332,9 +158341,9 @@ var HomotopyAdapter = class {
158332
158341
  * @param wasmLoader - WASM module loader
158333
158342
  * @param logger - Optional logger for diagnostics
158334
158343
  */
158335
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
158344
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
158336
158345
  this.wasmLoader = wasmLoader2;
158337
- this.logger = logger23;
158346
+ this.logger = logger25;
158338
158347
  }
158339
158348
  engine = null;
158340
158349
  initialized = false;
@@ -158535,9 +158544,9 @@ var WitnessAdapter = class {
158535
158544
  * @param wasmLoader - WASM module loader
158536
158545
  * @param logger - Optional logger for diagnostics
158537
158546
  */
158538
- constructor(wasmLoader2, logger23 = DEFAULT_COHERENCE_LOGGER) {
158547
+ constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
158539
158548
  this.wasmLoader = wasmLoader2;
158540
- this.logger = logger23;
158549
+ this.logger = logger25;
158541
158550
  }
158542
158551
  engine = null;
158543
158552
  initialized = false;
@@ -158832,10 +158841,10 @@ var CoherenceService = class {
158832
158841
  * @param config - Optional service configuration
158833
158842
  * @param logger - Optional logger for diagnostics
158834
158843
  */
158835
- constructor(wasmLoader2, config = {}, logger23) {
158844
+ constructor(wasmLoader2, config = {}, logger25) {
158836
158845
  this.wasmLoader = wasmLoader2;
158837
158846
  this.config = { ...DEFAULT_COHERENCE_CONFIG, ...config };
158838
- this.logger = logger23 || DEFAULT_COHERENCE_LOGGER;
158847
+ this.logger = logger25 || DEFAULT_COHERENCE_LOGGER;
158839
158848
  }
158840
158849
  config;
158841
158850
  logger;
@@ -159536,8 +159545,8 @@ var CoherenceService = class {
159536
159545
  return (hash >>> 0).toString(16).padStart(8, "0");
159537
159546
  }
159538
159547
  };
159539
- async function createCoherenceService(wasmLoader2, config, logger23) {
159540
- const service = new CoherenceService(wasmLoader2, config, logger23);
159548
+ async function createCoherenceService(wasmLoader2, config, logger25) {
159549
+ const service = new CoherenceService(wasmLoader2, config, logger25);
159541
159550
  await service.initialize();
159542
159551
  return service;
159543
159552
  }
@@ -161393,7 +161402,7 @@ init_safe_json();
161393
161402
  init_logging();
161394
161403
  import path32 from "node:path";
161395
161404
  import { existsSync as existsSync64 } from "node:fs";
161396
- var logger22 = LoggerFactory.create("metrics-tracker");
161405
+ var logger24 = LoggerFactory.create("metrics-tracker");
161397
161406
  var LearningMetricsTracker = class {
161398
161407
  db = null;
161399
161408
  dbPath;
@@ -161674,7 +161683,7 @@ var LearningMetricsTracker = class {
161674
161683
  try {
161675
161684
  domainCoverage = safeJsonParse(row.domain_coverage_json || "{}");
161676
161685
  } catch (e20) {
161677
- logger22.debug("Domain coverage JSON parse failed", { error: e20 instanceof Error ? e20.message : String(e20) });
161686
+ logger24.debug("Domain coverage JSON parse failed", { error: e20 instanceof Error ? e20.message : String(e20) });
161678
161687
  for (const domain of QE_DOMAIN_LIST) {
161679
161688
  domainCoverage[domain] = 0;
161680
161689
  }
@@ -163406,7 +163415,7 @@ async function cleanupAndExit(code = 0) {
163406
163415
  process.exit(code);
163407
163416
  }
163408
163417
  var program = new Command20();
163409
- var VERSION = true ? "3.7.12" : "0.0.0-dev";
163418
+ var VERSION = true ? "3.7.13" : "0.0.0-dev";
163410
163419
  program.name("aqe").description("Agentic QE - Domain-Driven Quality Engineering").version(VERSION);
163411
163420
  var registry2 = createCommandRegistry(context, cleanupAndExit, ensureInitialized, ensureInitializedStrict);
163412
163421
  registry2.registerAll(program);