@telora/daemon 0.19.74 → 0.19.82
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/build-info.json +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +40 -5
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-merge.js +3 -3
- package/dist/focus-merge.js.map +1 -1
- package/dist/focus-prompt-builder.d.ts.map +1 -1
- package/dist/focus-prompt-builder.js +4 -1
- package/dist/focus-prompt-builder.js.map +1 -1
- package/dist/prompt-contradictions.d.ts +55 -0
- package/dist/prompt-contradictions.d.ts.map +1 -0
- package/dist/prompt-contradictions.js +114 -0
- package/dist/prompt-contradictions.js.map +1 -0
- package/dist/prompt-listing.d.ts +19 -0
- package/dist/prompt-listing.d.ts.map +1 -1
- package/dist/prompt-listing.js +49 -0
- package/dist/prompt-listing.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts +3 -2
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +70 -97
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/role-sections.js +2 -2
- package/dist/prompt-sections/role-sections.js.map +1 -1
- package/dist/queries/context-assembly.d.ts +14 -4
- package/dist/queries/context-assembly.d.ts.map +1 -1
- package/dist/queries/context-assembly.js +14 -4
- package/dist/queries/context-assembly.js.map +1 -1
- package/dist/queries/deliveries.d.ts +30 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +0 -7
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +0 -9
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/index.d.ts +1 -1
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +1 -1
- package/dist/queries/index.js.map +1 -1
- package/dist/resolvers/escalation-answers.d.ts +40 -0
- package/dist/resolvers/escalation-answers.d.ts.map +1 -1
- package/dist/resolvers/escalation-answers.js +54 -35
- package/dist/resolvers/escalation-answers.js.map +1 -1
- package/dist/resolvers/shared/wiki.d.ts +27 -0
- package/dist/resolvers/shared/wiki.d.ts.map +1 -1
- package/dist/resolvers/shared/wiki.js +39 -0
- package/dist/resolvers/shared/wiki.js.map +1 -1
- package/dist/spawn/delivered-manifest.d.ts +42 -0
- package/dist/spawn/delivered-manifest.d.ts.map +1 -0
- package/dist/spawn/delivered-manifest.js +64 -0
- package/dist/spawn/delivered-manifest.js.map +1 -0
- package/dist/spawn/process-spawn.d.ts +9 -0
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +8 -1
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +28 -1
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +16 -7
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/shared.d.ts +27 -3
- package/dist/spawn/shared.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.d.ts +50 -0
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +114 -38
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawner/lifecycle.js +3 -3
- package/dist/spawner/lifecycle.js.map +1 -1
- package/dist/spawner/resolution.js +3 -3
- package/dist/spawner/resolution.js.map +1 -1
- package/dist/types/config.d.ts +44 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/verification-baseline.d.ts +112 -0
- package/dist/verification-baseline.d.ts.map +1 -0
- package/dist/verification-baseline.js +264 -0
- package/dist/verification-baseline.js.map +1 -0
- package/dist/verification-config.d.ts +53 -0
- package/dist/verification-config.d.ts.map +1 -0
- package/dist/verification-config.js +72 -0
- package/dist/verification-config.js.map +1 -0
- package/dist/verification-default-on.d.ts +87 -0
- package/dist/verification-default-on.d.ts.map +1 -0
- package/dist/verification-default-on.js +186 -0
- package/dist/verification-default-on.js.map +1 -0
- package/dist/verification-deterministic.d.ts +56 -0
- package/dist/verification-deterministic.d.ts.map +1 -0
- package/dist/verification-deterministic.js +123 -0
- package/dist/verification-deterministic.js.map +1 -0
- package/dist/verification-engine.d.ts +22 -15
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +79 -65
- package/dist/verification-engine.js.map +1 -1
- package/dist/verification-failure-parser.d.ts +48 -0
- package/dist/verification-failure-parser.d.ts.map +1 -0
- package/dist/verification-failure-parser.js +102 -0
- package/dist/verification-failure-parser.js.map +1 -0
- package/dist/verification-feedback.d.ts +58 -0
- package/dist/verification-feedback.d.ts.map +1 -0
- package/dist/verification-feedback.js +110 -0
- package/dist/verification-feedback.js.map +1 -0
- package/package.json +2 -2
|
@@ -22,80 +22,30 @@
|
|
|
22
22
|
*
|
|
23
23
|
* @module verification-engine
|
|
24
24
|
*/
|
|
25
|
-
import {
|
|
25
|
+
import { runDeterministicStrategy } from './verification-deterministic.js';
|
|
26
|
+
export { runDeterministicStrategy } from './verification-deterministic.js';
|
|
26
27
|
import { getPendingVerifications, recordDeliveryVerificationOutcome, verifyInjectionOnPass, emitInwardDriftProposals, } from './queries/verification.js';
|
|
27
28
|
import { configForProduct } from './config.js';
|
|
28
29
|
import { authorTargetRestatements as defaultAuthorTargetRestatements, } from './verify-restatement.js';
|
|
29
30
|
import { fileEscalation as defaultFileEscalation } from './escalations.js';
|
|
30
31
|
import { getGitDiff } from './assembly-resolvers.js';
|
|
31
32
|
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
|
|
33
|
+
import { resolveDefaultVerification as defaultResolveDefaultVerification, } from './verification-config.js';
|
|
34
|
+
import { getActiveFocuses, getFocusDeliveries } from './supabase.js';
|
|
35
|
+
import { collectDefaultOnVerifications, markDefaultOnRan, verificationSemaphore, } from './verification-default-on.js';
|
|
36
|
+
import { deliverVerificationFailureFeedback } from './verification-feedback.js';
|
|
37
|
+
import { buildDefaultAttributeFailures, buildResolveVerificationCwd, applyAttribution } from './verification-baseline.js';
|
|
38
|
+
// Re-export the default-on selection + concurrency surface so existing
|
|
39
|
+
// importers (and tests) can reach it through verification-engine.
|
|
40
|
+
export { collectDefaultOnVerifications, verificationSemaphore, VerificationSemaphore, __getVerificationSemaphoreForTests, __resetDefaultOnGuardForTests, __getDefaultOnGuardForTests, __markDefaultOnRanForTests, } from './verification-default-on.js';
|
|
32
41
|
import { resolveAiInspectionInputs as defaultResolveAiInspectionInputs, } from './ai-inspection-context.js';
|
|
33
42
|
import { runAiInspection as defaultRunAiInspection, } from './ai-inspection-runner.js';
|
|
34
43
|
import { buildDefaultSecurityFindingGateDeps, evaluateFindingNoLongerPresent, escalateOnGateFail, } from './security-finding-gate.js';
|
|
35
44
|
import { callApi } from './queries/shared.js';
|
|
36
45
|
import { runInstallProbeTick } from './install-probe-tick.js';
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* repo path as fallback). Pass = exit 0.
|
|
41
|
-
*/
|
|
42
|
-
export async function runDeterministicStrategy(config, cwd) {
|
|
43
|
-
const command = config?.command;
|
|
44
|
-
if (typeof command !== 'string' || command.length === 0 || !config) {
|
|
45
|
-
return {
|
|
46
|
-
outcome: 'escalated',
|
|
47
|
-
rationale: 'deterministic strategy missing config.command',
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const timeoutMs = typeof config.timeoutMs === 'number' && config.timeoutMs > 0
|
|
51
|
-
? config.timeoutMs
|
|
52
|
-
: DEFAULT_VERIFICATION_TIMEOUT_MS;
|
|
53
|
-
return new Promise((resolve) => {
|
|
54
|
-
const child = spawn('sh', ['-c', command], {
|
|
55
|
-
cwd,
|
|
56
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
57
|
-
});
|
|
58
|
-
let stdout = '';
|
|
59
|
-
let stderr = '';
|
|
60
|
-
const tail = (buf, max = 4000) => buf.length <= max ? buf : buf.slice(buf.length - max);
|
|
61
|
-
child.stdout?.on('data', (chunk) => {
|
|
62
|
-
stdout += chunk.toString('utf8');
|
|
63
|
-
stdout = tail(stdout);
|
|
64
|
-
});
|
|
65
|
-
child.stderr?.on('data', (chunk) => {
|
|
66
|
-
stderr += chunk.toString('utf8');
|
|
67
|
-
stderr = tail(stderr);
|
|
68
|
-
});
|
|
69
|
-
const timer = setTimeout(() => {
|
|
70
|
-
try {
|
|
71
|
-
child.kill('SIGKILL');
|
|
72
|
-
}
|
|
73
|
-
catch { /* ignore */ }
|
|
74
|
-
}, timeoutMs);
|
|
75
|
-
child.on('error', (err) => {
|
|
76
|
-
clearTimeout(timer);
|
|
77
|
-
resolve({
|
|
78
|
-
outcome: 'failed',
|
|
79
|
-
rationale: `deterministic spawn error: ${err.message}`,
|
|
80
|
-
stdoutTail: stdout,
|
|
81
|
-
stderrTail: stderr,
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
child.on('close', (code) => {
|
|
85
|
-
clearTimeout(timer);
|
|
86
|
-
const passed = code === 0;
|
|
87
|
-
resolve({
|
|
88
|
-
outcome: passed ? 'passed' : 'failed',
|
|
89
|
-
rationale: passed
|
|
90
|
-
? 'deterministic check passed (exit 0)'
|
|
91
|
-
: `deterministic check failed (exit ${code})`,
|
|
92
|
-
exitCode: code,
|
|
93
|
-
stdoutTail: stdout,
|
|
94
|
-
stderrTail: stderr,
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Strategies
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
99
49
|
export async function runBehavioralStrategy() {
|
|
100
50
|
return {
|
|
101
51
|
outcome: 'pending',
|
|
@@ -174,10 +124,16 @@ const defaultDeps = (config) => {
|
|
|
174
124
|
resolveCwd,
|
|
175
125
|
integrationBranch: config.integrationBranch,
|
|
176
126
|
securityFindingGate: buildDefaultSecurityFindingGateDeps(),
|
|
127
|
+
resolveDefaultVerification: (c) => defaultResolveDefaultVerification(c),
|
|
128
|
+
getActiveFocuses,
|
|
129
|
+
getFocusDeliveries,
|
|
130
|
+
deliverFailureFeedback: (v, result) => deliverVerificationFailureFeedback(v, result, config.organizationId).then(() => undefined),
|
|
131
|
+
resolveVerificationCwd: buildResolveVerificationCwd(resolveCwd),
|
|
132
|
+
attributeFailures: buildDefaultAttributeFailures(config),
|
|
177
133
|
};
|
|
178
134
|
};
|
|
179
135
|
const STRATEGIES = {
|
|
180
|
-
deterministic: (deps, v) => deps.runDeterministic(v.verificationConfig, deps.resolveCwd(
|
|
136
|
+
deterministic: (deps, v) => deps.runDeterministic(v.verificationConfig, (deps.resolveVerificationCwd ?? ((pv) => deps.resolveCwd(pv.productId)))(v), { deliveryId: v.deliveryId, startedAtMs: Date.now() }),
|
|
181
137
|
behavioral: () => runBehavioralStrategy(),
|
|
182
138
|
ai_inspection: (deps, v) => runAiInspectionStrategy(deps, v),
|
|
183
139
|
};
|
|
@@ -264,6 +220,28 @@ export async function runVerificationForDelivery(v, deps) {
|
|
|
264
220
|
const strategy = STRATEGIES[v.verificationMethod];
|
|
265
221
|
const strategyResult = await strategy(deps, v);
|
|
266
222
|
const result = { ...strategyResult };
|
|
223
|
+
// Baseline-diff attribution (deterministic only): a failed HEAD run whose
|
|
224
|
+
// failures ALL pre-exist on the focus base introduced no regression -> demote
|
|
225
|
+
// to 'passed' (the differential gate measures only the focus's delta). Runs
|
|
226
|
+
// BEFORE the pass path so a demotion feeds injection retirement; a null
|
|
227
|
+
// classification (no baseline) leaves the outcome unchanged (all failures gate).
|
|
228
|
+
if (v.verificationMethod === 'deterministic' && result.outcome === 'failed' && deps.attributeFailures) {
|
|
229
|
+
try {
|
|
230
|
+
const classification = await deps.attributeFailures(v, result);
|
|
231
|
+
if (classification) {
|
|
232
|
+
const attributed = applyAttribution(v.deliveryId, classification);
|
|
233
|
+
result.newFailures = attributed.newFailures;
|
|
234
|
+
result.preExisting = attributed.preExisting;
|
|
235
|
+
result.outcome = attributed.outcome;
|
|
236
|
+
result.rationale = attributed.rationale;
|
|
237
|
+
if (attributed.log)
|
|
238
|
+
console.log(attributed.log);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
console.warn(`[verification] baseline attribution failed for delivery ${v.deliveryId}:`, err.message);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
267
245
|
// Pass path FIRST so a verifyInjection failure short-circuits before we
|
|
268
246
|
// record an outcome that does not match graph state.
|
|
269
247
|
if (result.outcome === 'passed' && v.injectionNodeId) {
|
|
@@ -371,6 +349,16 @@ export async function runVerificationForDelivery(v, deps) {
|
|
|
371
349
|
}
|
|
372
350
|
}
|
|
373
351
|
await deps.recordOutcome(v.deliveryId, result.outcome);
|
|
352
|
+
// Failure feedback: on a failed deterministic run, write gate_state + inject
|
|
353
|
+
// into the live team. Best-effort -- never let feedback failure crash the tick.
|
|
354
|
+
if (result.outcome === 'failed' && v.verificationMethod === 'deterministic' && deps.deliverFailureFeedback) {
|
|
355
|
+
try {
|
|
356
|
+
await deps.deliverFailureFeedback(v, result);
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
console.warn(`[verification] failure feedback failed for delivery ${v.deliveryId}:`, err.message);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
374
362
|
// Drift emission is independent of verdict — a 'passed' inspection can
|
|
375
363
|
// still observe contradictions to other CRT statements.
|
|
376
364
|
const inspection = result.inspection;
|
|
@@ -398,7 +386,12 @@ export async function runVerificationForDelivery(v, deps) {
|
|
|
398
386
|
export async function runVerificationTick(config, deps) {
|
|
399
387
|
const merged = { ...defaultDeps(config), ...deps };
|
|
400
388
|
const counts = { checked: 0, passed: 0, failed: 0, pending: 0, escalated: 0 };
|
|
389
|
+
const resolved = merged.resolveDefaultVerification(config);
|
|
390
|
+
// Apply the configured concurrency cap to the shared semaphore so overlapping
|
|
391
|
+
// ticks respect it (safeInterval has no re-entry guard).
|
|
392
|
+
verificationSemaphore.setLimit(resolved.maxConcurrent);
|
|
401
393
|
for (const product of config.products) {
|
|
394
|
+
const productConfig = configForProduct(config, product);
|
|
402
395
|
let pending;
|
|
403
396
|
try {
|
|
404
397
|
pending = await merged.getPendingVerifications(product.id);
|
|
@@ -407,8 +400,26 @@ export async function runVerificationTick(config, deps) {
|
|
|
407
400
|
console.warn(`[verification] fetch failed for product ${product.id}:`, err.message);
|
|
408
401
|
continue;
|
|
409
402
|
}
|
|
410
|
-
for
|
|
403
|
+
// Default-on: append deterministic runs for verify deliveries with no
|
|
404
|
+
// explicit method (the whole-repo suite the daemon now owns). Inert when
|
|
405
|
+
// no default command is configured (resolved.enabled === false).
|
|
406
|
+
const explicitIds = new Set(pending.map((p) => p.deliveryId));
|
|
407
|
+
let defaultOn = [];
|
|
408
|
+
try {
|
|
409
|
+
defaultOn = await collectDefaultOnVerifications(productConfig, resolved, explicitIds, merged);
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
console.warn(`[verification] default-on scan failed for product ${product.id}:`, err.message);
|
|
413
|
+
}
|
|
414
|
+
for (const v of [...pending, ...defaultOn]) {
|
|
411
415
|
counts.checked += 1;
|
|
416
|
+
// Mark default-on candidates as run BEFORE dispatch so a mid-run failure
|
|
417
|
+
// does not re-enqueue the same 30-min suite on the next tick.
|
|
418
|
+
if (v.verificationOutcome === null && !explicitIds.has(v.deliveryId)) {
|
|
419
|
+
markDefaultOnRan(v.deliveryId);
|
|
420
|
+
}
|
|
421
|
+
// Cap concurrent whole-repo runs across overlapping ticks.
|
|
422
|
+
await verificationSemaphore.acquire();
|
|
412
423
|
try {
|
|
413
424
|
const r = await runVerificationForDelivery(v, merged);
|
|
414
425
|
counts[r.outcome] = (counts[r.outcome] ?? 0) + 1;
|
|
@@ -416,6 +427,9 @@ export async function runVerificationTick(config, deps) {
|
|
|
416
427
|
catch (err) {
|
|
417
428
|
console.warn(`[verification] tick failed for delivery ${v.deliveryId}:`, err.message);
|
|
418
429
|
}
|
|
430
|
+
finally {
|
|
431
|
+
verificationSemaphore.release();
|
|
432
|
+
}
|
|
419
433
|
}
|
|
420
434
|
}
|
|
421
435
|
// Clean-environment install probe (Review Gate Hardening, deferrable): an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-readable failing-test extraction for the two runners this repo uses.
|
|
3
|
+
*
|
|
4
|
+
* The daemon-side verification run (default-on deterministic strategy) produces
|
|
5
|
+
* test output that two consumers need as a normalized SET of failing-test ids:
|
|
6
|
+
* - the failure-feedback loop (gate_state failing-test names, live inject),
|
|
7
|
+
* - baseline-diff attribution (classify HEAD failures new-vs-pre-existing by
|
|
8
|
+
* set-diff against the focus base).
|
|
9
|
+
*
|
|
10
|
+
* Two formats are supported:
|
|
11
|
+
* - vitest `--reporter=json` (root repo): a JSON blob with
|
|
12
|
+
* `testResults[].assertionResults[]`; each assertion has a `status` and a
|
|
13
|
+
* `fullName` / `title` + `ancestorTitles`.
|
|
14
|
+
* - node:test TAP (packages/daemon): `not ok <n> - <description>` lines.
|
|
15
|
+
*
|
|
16
|
+
* `auto` tries JSON first (a leading `{`), then falls back to TAP. All parsers
|
|
17
|
+
* are PURE (no I/O), so they are trivially unit-testable and safe to run on the
|
|
18
|
+
* captured stdout string. A malformed/partial blob yields an empty set rather
|
|
19
|
+
* than throwing -- a failure to PARSE must never mask or crash the run.
|
|
20
|
+
*
|
|
21
|
+
* Ids are stable, comparable strings so a set-diff across two runs is exact:
|
|
22
|
+
* - vitest: `<file> > <fullName>` (fullName already joins ancestor titles)
|
|
23
|
+
* - tap: the trimmed description after `not ok <n> - `
|
|
24
|
+
*
|
|
25
|
+
* @module verification-failure-parser
|
|
26
|
+
*/
|
|
27
|
+
export type TestRunner = 'vitest-json' | 'tap' | 'auto';
|
|
28
|
+
/**
|
|
29
|
+
* Extract the set of failing-test ids from a runner's output.
|
|
30
|
+
*
|
|
31
|
+
* @param output Raw stdout captured from the verification command.
|
|
32
|
+
* @param runner Which format to parse; `auto` (default) sniffs JSON then TAP.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseFailingTests(output: string, runner?: TestRunner): Set<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Parse a vitest `--reporter=json` blob. The report may be embedded in other
|
|
37
|
+
* stdout (npm script banners), so we slice from the first `{` to the last `}`
|
|
38
|
+
* and JSON.parse that. Returns an empty set on any parse failure.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseVitestJson(output: string): Set<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Parse node:test / TAP output: `not ok <n> - <description>` lines. A
|
|
43
|
+
* `# ` diagnostic or a `not ok` inside a YAML block is ignored (those do not
|
|
44
|
+
* start at column 0 after trim with the `not ok` token). Ids are the trimmed
|
|
45
|
+
* description; a bare `not ok <n>` with no description falls back to the number.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseTap(output: string): Set<string>;
|
|
48
|
+
//# sourceMappingURL=verification-failure-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-failure-parser.d.ts","sourceRoot":"","sources":["../src/verification-failure-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,UAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,CAY1F;AAgBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAuB3D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAapD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-readable failing-test extraction for the two runners this repo uses.
|
|
3
|
+
*
|
|
4
|
+
* The daemon-side verification run (default-on deterministic strategy) produces
|
|
5
|
+
* test output that two consumers need as a normalized SET of failing-test ids:
|
|
6
|
+
* - the failure-feedback loop (gate_state failing-test names, live inject),
|
|
7
|
+
* - baseline-diff attribution (classify HEAD failures new-vs-pre-existing by
|
|
8
|
+
* set-diff against the focus base).
|
|
9
|
+
*
|
|
10
|
+
* Two formats are supported:
|
|
11
|
+
* - vitest `--reporter=json` (root repo): a JSON blob with
|
|
12
|
+
* `testResults[].assertionResults[]`; each assertion has a `status` and a
|
|
13
|
+
* `fullName` / `title` + `ancestorTitles`.
|
|
14
|
+
* - node:test TAP (packages/daemon): `not ok <n> - <description>` lines.
|
|
15
|
+
*
|
|
16
|
+
* `auto` tries JSON first (a leading `{`), then falls back to TAP. All parsers
|
|
17
|
+
* are PURE (no I/O), so they are trivially unit-testable and safe to run on the
|
|
18
|
+
* captured stdout string. A malformed/partial blob yields an empty set rather
|
|
19
|
+
* than throwing -- a failure to PARSE must never mask or crash the run.
|
|
20
|
+
*
|
|
21
|
+
* Ids are stable, comparable strings so a set-diff across two runs is exact:
|
|
22
|
+
* - vitest: `<file> > <fullName>` (fullName already joins ancestor titles)
|
|
23
|
+
* - tap: the trimmed description after `not ok <n> - `
|
|
24
|
+
*
|
|
25
|
+
* @module verification-failure-parser
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Extract the set of failing-test ids from a runner's output.
|
|
29
|
+
*
|
|
30
|
+
* @param output Raw stdout captured from the verification command.
|
|
31
|
+
* @param runner Which format to parse; `auto` (default) sniffs JSON then TAP.
|
|
32
|
+
*/
|
|
33
|
+
export function parseFailingTests(output, runner = 'auto') {
|
|
34
|
+
if (typeof output !== 'string' || output.length === 0)
|
|
35
|
+
return new Set();
|
|
36
|
+
if (runner === 'vitest-json')
|
|
37
|
+
return parseVitestJson(output);
|
|
38
|
+
if (runner === 'tap')
|
|
39
|
+
return parseTap(output);
|
|
40
|
+
// auto: a vitest JSON report is a single JSON object; try it first, then TAP.
|
|
41
|
+
const trimmed = output.trimStart();
|
|
42
|
+
if (trimmed.startsWith('{')) {
|
|
43
|
+
const fromJson = parseVitestJson(output);
|
|
44
|
+
if (fromJson.size > 0)
|
|
45
|
+
return fromJson;
|
|
46
|
+
}
|
|
47
|
+
return parseTap(output);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parse a vitest `--reporter=json` blob. The report may be embedded in other
|
|
51
|
+
* stdout (npm script banners), so we slice from the first `{` to the last `}`
|
|
52
|
+
* and JSON.parse that. Returns an empty set on any parse failure.
|
|
53
|
+
*/
|
|
54
|
+
export function parseVitestJson(output) {
|
|
55
|
+
const ids = new Set();
|
|
56
|
+
const start = output.indexOf('{');
|
|
57
|
+
const end = output.lastIndexOf('}');
|
|
58
|
+
if (start < 0 || end <= start)
|
|
59
|
+
return ids;
|
|
60
|
+
let report;
|
|
61
|
+
try {
|
|
62
|
+
report = JSON.parse(output.slice(start, end + 1));
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return ids;
|
|
66
|
+
}
|
|
67
|
+
for (const file of report.testResults ?? []) {
|
|
68
|
+
const fileName = file.name ?? '<unknown>';
|
|
69
|
+
for (const a of file.assertionResults ?? []) {
|
|
70
|
+
if (a.status !== 'failed')
|
|
71
|
+
continue;
|
|
72
|
+
const name = (typeof a.fullName === 'string' && a.fullName.trim().length > 0)
|
|
73
|
+
? a.fullName
|
|
74
|
+
: [...(a.ancestorTitles ?? []), a.title ?? ''].filter(Boolean).join(' > ');
|
|
75
|
+
ids.add(`${fileName} > ${name}`.trim());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return ids;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Parse node:test / TAP output: `not ok <n> - <description>` lines. A
|
|
82
|
+
* `# ` diagnostic or a `not ok` inside a YAML block is ignored (those do not
|
|
83
|
+
* start at column 0 after trim with the `not ok` token). Ids are the trimmed
|
|
84
|
+
* description; a bare `not ok <n>` with no description falls back to the number.
|
|
85
|
+
*/
|
|
86
|
+
export function parseTap(output) {
|
|
87
|
+
const ids = new Set();
|
|
88
|
+
for (const rawLine of output.split('\n')) {
|
|
89
|
+
const line = rawLine.trim();
|
|
90
|
+
// Match: not ok 12 - some test name (the ` - ` separator is optional)
|
|
91
|
+
const m = /^not ok\s+(\d+)\s*(?:-\s*(.*))?$/.exec(line);
|
|
92
|
+
if (!m)
|
|
93
|
+
continue;
|
|
94
|
+
const desc = (m[2] ?? '').trim();
|
|
95
|
+
// Skip TODO/SKIP directives -- those are not failures.
|
|
96
|
+
if (/#\s*(TODO|SKIP)\b/i.test(desc))
|
|
97
|
+
continue;
|
|
98
|
+
ids.add(desc.length > 0 ? desc : `not ok ${m[1]}`);
|
|
99
|
+
}
|
|
100
|
+
return ids;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=verification-failure-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-failure-parser.js","sourceRoot":"","sources":["../src/verification-failure-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verification-failure feedback loop.
|
|
3
|
+
*
|
|
4
|
+
* When a daemon-side deterministic verification run FAILS, a failure discovered
|
|
5
|
+
* after the team context-switched must not cost a cold respawn. This module:
|
|
6
|
+
* 1. writes gate_state on the delivery row (blocking entry + failing tests +
|
|
7
|
+
* log path) so the dashboard "Waiting on" line surfaces it,
|
|
8
|
+
* 2. injects the failure context into the live team session when one is
|
|
9
|
+
* running (reusing the same leadStdin channel the directive inject uses),
|
|
10
|
+
* 3. leaves the failure in gate_state so the requeue/respawn prompt can carry
|
|
11
|
+
* it when no team is live (rendered by the wake/resume prompt builders).
|
|
12
|
+
*
|
|
13
|
+
* The gate_state write does NOT change execution_status (passes the current
|
|
14
|
+
* `verify` status, idempotent) -- the same pattern install-probe-tick uses.
|
|
15
|
+
*
|
|
16
|
+
* @module verification-feedback
|
|
17
|
+
*/
|
|
18
|
+
import { sendMessage } from '@telora/daemon-core';
|
|
19
|
+
import { type DeliveryGateState, type VerificationFailureDetail } from './queries/deliveries.js';
|
|
20
|
+
import { getActiveTeams } from './focus-team-state.js';
|
|
21
|
+
import type { PendingVerification } from './queries/verification.js';
|
|
22
|
+
/** gate_state guard name a deterministic verification failure reports under. */
|
|
23
|
+
export declare const DETERMINISTIC_VERIFICATION_GUARD = "deterministic_verification";
|
|
24
|
+
/** The slice of a StrategyResult the feedback loop needs. */
|
|
25
|
+
export interface VerificationFailureResult {
|
|
26
|
+
logPath?: string;
|
|
27
|
+
exitCode?: number | null;
|
|
28
|
+
stdoutTail?: string;
|
|
29
|
+
stderrTail?: string;
|
|
30
|
+
rationale?: string;
|
|
31
|
+
/** Baseline-diff attribution: NEW failures the focus introduced (the gating set). */
|
|
32
|
+
newFailures?: string[];
|
|
33
|
+
/** Baseline-diff attribution: pre-existing base failures (recorded, non-blocking). */
|
|
34
|
+
preExisting?: string[];
|
|
35
|
+
}
|
|
36
|
+
/** Build the gate_state for a failed deterministic run. Pure -- exported for testing. */
|
|
37
|
+
export declare function buildVerificationFailureGateState(detail: VerificationFailureDetail): DeliveryGateState;
|
|
38
|
+
/** Build the failure message injected into a live team session. Pure -- exported for testing. */
|
|
39
|
+
export declare function buildFailureInjectMessage(deliveryName: string, detail: VerificationFailureDetail): string;
|
|
40
|
+
/** Injected IO for the feedback loop; defaults reach the real implementations. */
|
|
41
|
+
export interface VerificationFeedbackDeps {
|
|
42
|
+
writeGateState: (deliveryId: string, gateState: DeliveryGateState, organizationId: string) => Promise<void>;
|
|
43
|
+
getActiveTeams: typeof getActiveTeams;
|
|
44
|
+
sendMessage: typeof sendMessage;
|
|
45
|
+
now: () => string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Deliver failure feedback for a failed deterministic verification: write
|
|
49
|
+
* gate_state, and inject into the live team session when one is running (and is
|
|
50
|
+
* a coding team, not a reviewer). Best-effort throughout -- a feedback failure
|
|
51
|
+
* must never crash the verification tick.
|
|
52
|
+
*/
|
|
53
|
+
export declare function deliverVerificationFailureFeedback(v: Pick<PendingVerification, 'deliveryId' | 'deliveryName' | 'focusId'>, result: VerificationFailureResult, organizationId: string, deps?: Partial<VerificationFeedbackDeps>): Promise<{
|
|
54
|
+
gateWritten: boolean;
|
|
55
|
+
injected: boolean;
|
|
56
|
+
detail: VerificationFailureDetail;
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=verification-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-feedback.d.ts","sourceRoot":"","sources":["../src/verification-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAmB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,+BAA+B,CAAC;AAE7E,6DAA6D;AAC7D,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,yFAAyF;AACzF,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,yBAAyB,GAAG,iBAAiB,CAOtG;AAED,iGAAiG;AACjG,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAsBzG;AAED,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAaD;;;;;GAKG;AACH,wBAAsB,kCAAkC,CACtD,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC,EACvE,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC3C,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAsCzF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verification-failure feedback loop.
|
|
3
|
+
*
|
|
4
|
+
* When a daemon-side deterministic verification run FAILS, a failure discovered
|
|
5
|
+
* after the team context-switched must not cost a cold respawn. This module:
|
|
6
|
+
* 1. writes gate_state on the delivery row (blocking entry + failing tests +
|
|
7
|
+
* log path) so the dashboard "Waiting on" line surfaces it,
|
|
8
|
+
* 2. injects the failure context into the live team session when one is
|
|
9
|
+
* running (reusing the same leadStdin channel the directive inject uses),
|
|
10
|
+
* 3. leaves the failure in gate_state so the requeue/respawn prompt can carry
|
|
11
|
+
* it when no team is live (rendered by the wake/resume prompt builders).
|
|
12
|
+
*
|
|
13
|
+
* The gate_state write does NOT change execution_status (passes the current
|
|
14
|
+
* `verify` status, idempotent) -- the same pattern install-probe-tick uses.
|
|
15
|
+
*
|
|
16
|
+
* @module verification-feedback
|
|
17
|
+
*/
|
|
18
|
+
import { DELIVERY_STATUS, sendMessage } from '@telora/daemon-core';
|
|
19
|
+
import { updateDeliveryStatus, } from './queries/deliveries.js';
|
|
20
|
+
import { getActiveTeams } from './focus-team-state.js';
|
|
21
|
+
import { parseFailingTests } from './verification-failure-parser.js';
|
|
22
|
+
/** gate_state guard name a deterministic verification failure reports under. */
|
|
23
|
+
export const DETERMINISTIC_VERIFICATION_GUARD = 'deterministic_verification';
|
|
24
|
+
/** Build the gate_state for a failed deterministic run. Pure -- exported for testing. */
|
|
25
|
+
export function buildVerificationFailureGateState(detail) {
|
|
26
|
+
return {
|
|
27
|
+
blocking: [{ guardName: DETERMINISTIC_VERIFICATION_GUARD, passed: false }],
|
|
28
|
+
warnings: [],
|
|
29
|
+
evaluatedAt: detail.failedAt,
|
|
30
|
+
verification: detail,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Build the failure message injected into a live team session. Pure -- exported for testing. */
|
|
34
|
+
export function buildFailureInjectMessage(deliveryName, detail) {
|
|
35
|
+
const lines = [
|
|
36
|
+
`VERIFICATION FAILED for delivery "${deliveryName}".`,
|
|
37
|
+
'',
|
|
38
|
+
detail.exitCode != null ? `Exit code: ${detail.exitCode}` : 'Exit code: (unknown)',
|
|
39
|
+
detail.logPath ? `Full log: ${detail.logPath}` : 'Full log: (not captured)',
|
|
40
|
+
];
|
|
41
|
+
if (detail.failingTests.length > 0) {
|
|
42
|
+
lines.push('', `Failing tests (${detail.failingTests.length}):`);
|
|
43
|
+
for (const t of detail.failingTests.slice(0, 50))
|
|
44
|
+
lines.push(`- ${t}`);
|
|
45
|
+
if (detail.failingTests.length > 50) {
|
|
46
|
+
lines.push(`- ... and ${detail.failingTests.length - 50} more (see full log)`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
lines.push('', 'Failing tests could not be parsed from the run output -- read the full log.');
|
|
51
|
+
}
|
|
52
|
+
lines.push('', 'Fix the failing tests for the files you changed, then commit. The daemon re-verifies ' +
|
|
53
|
+
'at the coding -> verify edge -- do NOT run the whole-repo suite yourself.');
|
|
54
|
+
return lines.join('\n');
|
|
55
|
+
}
|
|
56
|
+
const defaultDeps = () => ({
|
|
57
|
+
writeGateState: async (deliveryId, gateState, organizationId) => {
|
|
58
|
+
// Write gate_state WITHOUT changing execution_status (stays verify) -- same
|
|
59
|
+
// idempotent same-status pattern as install-probe-tick.
|
|
60
|
+
await updateDeliveryStatus(deliveryId, DELIVERY_STATUS.VERIFY, undefined, gateState, undefined, { organizationId });
|
|
61
|
+
},
|
|
62
|
+
getActiveTeams,
|
|
63
|
+
sendMessage,
|
|
64
|
+
now: () => new Date().toISOString(),
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Deliver failure feedback for a failed deterministic verification: write
|
|
68
|
+
* gate_state, and inject into the live team session when one is running (and is
|
|
69
|
+
* a coding team, not a reviewer). Best-effort throughout -- a feedback failure
|
|
70
|
+
* must never crash the verification tick.
|
|
71
|
+
*/
|
|
72
|
+
export async function deliverVerificationFailureFeedback(v, result, organizationId, deps = {}) {
|
|
73
|
+
const d = { ...defaultDeps(), ...deps };
|
|
74
|
+
// Prefer the classified NEW failures (the gating set) when baseline-diff
|
|
75
|
+
// attribution ran; otherwise parse the run output best-effort.
|
|
76
|
+
const failingTests = result.newFailures
|
|
77
|
+
?? [...parseFailingTests(`${result.stdoutTail ?? ''}\n${result.stderrTail ?? ''}`)];
|
|
78
|
+
const detail = {
|
|
79
|
+
failingTests,
|
|
80
|
+
...(result.preExisting ? { preExisting: result.preExisting } : {}),
|
|
81
|
+
logPath: result.logPath ?? null,
|
|
82
|
+
exitCode: result.exitCode ?? null,
|
|
83
|
+
failedAt: d.now(),
|
|
84
|
+
};
|
|
85
|
+
const gateState = buildVerificationFailureGateState(detail);
|
|
86
|
+
let gateWritten = false;
|
|
87
|
+
try {
|
|
88
|
+
await d.writeGateState(v.deliveryId, gateState, organizationId);
|
|
89
|
+
gateWritten = true;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
console.warn(`[verification] failed to write gate_state for delivery ${v.deliveryId}:`, err.message);
|
|
93
|
+
}
|
|
94
|
+
let injected = false;
|
|
95
|
+
if (v.focusId) {
|
|
96
|
+
const team = d.getActiveTeams().get(v.focusId);
|
|
97
|
+
// Do not retask a live review team (parity with directive inject guard).
|
|
98
|
+
if (team && team.leadStdin && team.sessionType !== 'review') {
|
|
99
|
+
try {
|
|
100
|
+
d.sendMessage(team.leadStdin, buildFailureInjectMessage(v.deliveryName, detail));
|
|
101
|
+
injected = true;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.warn(`[verification] failed to inject failure to team ${v.focusId}:`, err.message);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { gateWritten, injected, detail };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=verification-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-feedback.js","sourceRoot":"","sources":["../src/verification-feedback.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telora/daemon",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.82",
|
|
4
4
|
"description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@telora/daemon": "^0.19.38",
|
|
41
41
|
"@telora/daemon-core": "^0.2.63",
|
|
42
|
-
"@telora/mcp-products": "^0.22.
|
|
42
|
+
"@telora/mcp-products": "^0.22.100",
|
|
43
43
|
"commander": "^14.0.3",
|
|
44
44
|
"yaml": "^2.4.0",
|
|
45
45
|
"zod": "^4.3.6"
|