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.
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +5 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +13 -0
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +5 -0
- package/dist/cli/bundle.js +159 -150
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/bundle.js +1 -1
- package/dist/validation/index.d.ts +4 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +8 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/trigger-optimizer.d.ts +61 -0
- package/dist/validation/trigger-optimizer.d.ts.map +1 -0
- package/dist/validation/trigger-optimizer.js +356 -0
- package/dist/validation/trigger-optimizer.js.map +1 -0
- package/dist/validation/version-comparator.d.ts +115 -0
- package/dist/validation/version-comparator.d.ts.map +1 -0
- package/dist/validation/version-comparator.js +322 -0
- package/dist/validation/version-comparator.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/bundle.js
CHANGED
|
@@ -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
|
|
979
|
+
let logger25;
|
|
980
980
|
if (this.config.silent) {
|
|
981
|
-
|
|
981
|
+
logger25 = new NullLogger(domain);
|
|
982
982
|
} else if (this.customProvider) {
|
|
983
|
-
|
|
983
|
+
logger25 = this.customProvider(domain, level, context2);
|
|
984
984
|
} else {
|
|
985
|
-
|
|
985
|
+
logger25 = new ConsoleLogger(domain, level, this.config.consoleConfig, context2);
|
|
986
986
|
}
|
|
987
987
|
if (!context2) {
|
|
988
|
-
this.instances.set(domain,
|
|
988
|
+
this.instances.set(domain, logger25);
|
|
989
989
|
}
|
|
990
|
-
return
|
|
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
|
|
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 =
|
|
1396
|
-
module.exports.default =
|
|
1397
|
-
module.exports.parse =
|
|
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
|
|
20112
|
-
const parsed = this.parseYamlAgent(
|
|
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(
|
|
20188
|
+
parseYamlAgent(yaml3) {
|
|
20189
20189
|
const get = (key) => {
|
|
20190
20190
|
const re18 = new RegExp(`^${key}:\\s*(?:"([^"]*)"|(.*))`, "m");
|
|
20191
|
-
const m74 =
|
|
20191
|
+
const m74 = yaml3.match(re18);
|
|
20192
20192
|
return m74 ? (m74[1] ?? m74[2] ?? "").trim() : "";
|
|
20193
20193
|
};
|
|
20194
20194
|
let systemPrompt = "";
|
|
20195
|
-
const promptMatch =
|
|
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 =
|
|
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 =
|
|
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
|
|
20331
|
-
const parsed = this.parseYamlSkill(
|
|
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(
|
|
20397
|
+
parseYamlSkill(yaml3) {
|
|
20398
20398
|
const get = (key) => {
|
|
20399
20399
|
const re18 = new RegExp(`^${key}:\\s*(?:"([^"]*)"|(.*))`, "m");
|
|
20400
|
-
const m74 =
|
|
20400
|
+
const m74 = yaml3.match(re18);
|
|
20401
20401
|
return m74 ? (m74[1] ?? m74[2] ?? "").trim() : "";
|
|
20402
20402
|
};
|
|
20403
20403
|
const tags = [];
|
|
20404
|
-
const tagsMatch =
|
|
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 =
|
|
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(
|
|
22655
|
-
this.logger =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27495
|
+
logger23.info("Cross-domain transfer already complete", { totalPatterns: stats.totalPatterns });
|
|
27496
27496
|
}
|
|
27497
27497
|
} catch (error) {
|
|
27498
|
-
|
|
27498
|
+
logger23.warn("Cross-domain seeding failed (non-fatal)", { error });
|
|
27499
27499
|
}
|
|
27500
|
-
|
|
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
|
-
|
|
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
|
-
|
|
28226
|
+
logger23.warn("Failed to load pattern", { name: options.name, error });
|
|
28227
28227
|
}
|
|
28228
28228
|
}
|
|
28229
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
67431
|
+
constructor(client, config, logger25) {
|
|
67432
67432
|
this.client = client;
|
|
67433
67433
|
this.config = config;
|
|
67434
|
-
this.log =
|
|
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,
|
|
67714
|
-
return new BrowserOrchestrator(client, config,
|
|
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,
|
|
67721
|
+
constructor(orchestrator, logger25) {
|
|
67722
67722
|
this.orchestrator = orchestrator;
|
|
67723
|
-
this.log =
|
|
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,
|
|
68137
|
-
return new AssertionHandlers(orchestrator,
|
|
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,
|
|
68250
|
+
constructor(config, orchestrator, logger25) {
|
|
68251
68251
|
this.config = config;
|
|
68252
68252
|
this.orchestrator = orchestrator;
|
|
68253
|
-
this.assertionHandlers = createAssertionHandlers(orchestrator,
|
|
68253
|
+
this.assertionHandlers = createAssertionHandlers(orchestrator, logger25);
|
|
68254
68254
|
this.waitConditionHandler = createWaitConditionHandler(orchestrator);
|
|
68255
|
-
this.log =
|
|
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,
|
|
68684
|
-
return new StepExecutors(config, orchestrator,
|
|
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,
|
|
68694
|
+
constructor(config, stepExecutors, logger25) {
|
|
68695
68695
|
this.config = config;
|
|
68696
68696
|
this.stepExecutors = stepExecutors;
|
|
68697
|
-
this.log =
|
|
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,
|
|
68808
|
-
return new StepRetryHandler(config, stepExecutors,
|
|
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
|
|
68935
|
-
this.orchestrator = createBrowserOrchestrator(client, this.config,
|
|
68936
|
-
this.stepExecutors = createStepExecutors(this.config, this.orchestrator,
|
|
68937
|
-
this.retryHandler = createStepRetryHandler(this.config, this.stepExecutors,
|
|
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.
|
|
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
|
|
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
|
-
${
|
|
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
|
|
137549
|
+
const yaml3 = configToYAML(config);
|
|
137550
137550
|
const configPath = join25(configDir, "config.yaml");
|
|
137551
|
-
writeFileSync8(configPath,
|
|
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
|
|
139955
|
-
writeFileSync24(configPath,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
150776
|
+
logger14.info("SQLite persistence initialized");
|
|
150768
150777
|
await this.initializeHNSW();
|
|
150769
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
150816
|
+
logger14.info("HNSW initialized", { dimension, M: this.qeConfig.hnsw.M });
|
|
150808
150817
|
} catch (error) {
|
|
150809
|
-
|
|
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
|
-
|
|
150842
|
+
logger14.warn("Skipped invalid embeddings", { skipped, expectedDim });
|
|
150834
150843
|
}
|
|
150835
|
-
|
|
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
|
-
|
|
150895
|
+
logger14.warn("Failed to load foundational pattern", { name: options.name, error });
|
|
150887
150896
|
}
|
|
150888
150897
|
}
|
|
150889
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
156978
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
156970
156979
|
this.wasmLoader = wasmLoader2;
|
|
156971
|
-
this.logger =
|
|
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,
|
|
157324
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
157316
157325
|
this.wasmLoader = wasmLoader2;
|
|
157317
|
-
this.logger =
|
|
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,
|
|
157735
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
157727
157736
|
this.wasmLoader = wasmLoader2;
|
|
157728
|
-
this.logger =
|
|
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,
|
|
158030
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
158022
158031
|
this.wasmLoader = wasmLoader2;
|
|
158023
|
-
this.logger =
|
|
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,
|
|
158344
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
158336
158345
|
this.wasmLoader = wasmLoader2;
|
|
158337
|
-
this.logger =
|
|
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,
|
|
158547
|
+
constructor(wasmLoader2, logger25 = DEFAULT_COHERENCE_LOGGER) {
|
|
158539
158548
|
this.wasmLoader = wasmLoader2;
|
|
158540
|
-
this.logger =
|
|
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 = {},
|
|
158844
|
+
constructor(wasmLoader2, config = {}, logger25) {
|
|
158836
158845
|
this.wasmLoader = wasmLoader2;
|
|
158837
158846
|
this.config = { ...DEFAULT_COHERENCE_CONFIG, ...config };
|
|
158838
|
-
this.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,
|
|
159540
|
-
const service = new CoherenceService(wasmLoader2, config,
|
|
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
|
|
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
|
-
|
|
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.
|
|
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);
|