@principles/core 1.124.0 → 1.125.0
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/dist/runtime-v2/__tests__/architecture-regression.test.js +5 -1
- package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +115 -21
- package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js +7 -6
- package/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js.map +1 -1
- package/dist/runtime-v2/cli/diagnose.d.ts +2 -2
- package/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +3 -3
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-defaults.js +3 -3
- package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/dist/runtime-v2/diagnostician-prompt-builder.d.ts +1 -64
- package/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/diagnostician-prompt-builder.js +0 -186
- package/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +13 -7
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js +3 -3
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +8 -7
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +8 -5
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +108 -105
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js +3 -3
- package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js.map +1 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js +121 -52
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +28 -21
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
- package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +10 -1
- package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-runtime-factory.js +42 -40
- package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts +0 -2
- package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts.map +0 -1
- package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js +0 -122
- package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts +0 -2
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js +0 -169
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts +0 -2
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +0 -462
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +0 -13
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +0 -1
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +0 -97
- package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js +0 -378
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +0 -682
- package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js +0 -286
- package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js +0 -320
- package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js +0 -261
- package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js +0 -405
- package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js +0 -347
- package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js +0 -186
- package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js +0 -355
- package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +0 -486
- package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js +0 -171
- package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +0 -175
- package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js +0 -276
- package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js +0 -272
- package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js.map +0 -1
- package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts +0 -2
- package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts.map +0 -1
- package/dist/runtime-v2/runner/__tests__/start-run-input.test.js +0 -67
- package/dist/runtime-v2/runner/__tests__/start-run-input.test.js.map +0 -1
- package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +0 -57
- package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +0 -1
- package/dist/runtime-v2/runner/diagnostician-runner-options.js +0 -21
- package/dist/runtime-v2/runner/diagnostician-runner-options.js.map +0 -1
- package/dist/runtime-v2/runner/diagnostician-runner.d.ts +0 -89
- package/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +0 -1
- package/dist/runtime-v2/runner/diagnostician-runner.js +0 -470
- package/dist/runtime-v2/runner/diagnostician-runner.js.map +0 -1
|
@@ -1,486 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* E2E m8-02 — PainSignalBridge full chain with autoIntakeEnabled.
|
|
3
|
-
*
|
|
4
|
-
* Machine-verifiable proof the M8 single path works end-to-end:
|
|
5
|
-
* pain → TaskStore → DiagnosticianRunner → ledger probation entry
|
|
6
|
-
*
|
|
7
|
-
* Tests:
|
|
8
|
-
* E2E-01: Full chain — pain signal → task succeeded → artifact → candidates → ledger probation entry
|
|
9
|
-
* E2E-02: Legacy .state/diagnostician_tasks.json NOT created
|
|
10
|
-
* E2E-03: Same painId twice — NO duplicate candidates or ledger entries
|
|
11
|
-
* E2E-04: autoIntakeEnabled=false — candidate pending but NO ledger write
|
|
12
|
-
* E2E-05: Leased task not interrupted by second trigger
|
|
13
|
-
*
|
|
14
|
-
* Uses StubRuntimeAdapter (in-process test double) — no real CLI binary needed.
|
|
15
|
-
* Temp workspace via os.tmpdir(), cleaned after each test.
|
|
16
|
-
*/
|
|
17
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
18
|
-
import * as fs from 'fs';
|
|
19
|
-
import * as path from 'path';
|
|
20
|
-
import * as os from 'os';
|
|
21
|
-
import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
|
|
22
|
-
import { SqliteContextAssembler } from '../../store/context/sqlite-context-assembler.js';
|
|
23
|
-
import { SqliteHistoryQuery } from '../../store/history/sqlite-history-query.js';
|
|
24
|
-
import { StoreEventEmitter } from '../../store/event-emitter.js';
|
|
25
|
-
import { DiagnosticianRunner } from '../diagnostician-runner.js';
|
|
26
|
-
import { PassThroughValidator } from '../diagnostician-validator.js';
|
|
27
|
-
import { SqliteDiagnosticianCommitter } from '../../store/commit/diagnostician-committer.js';
|
|
28
|
-
import { PainSignalBridge } from '../../pain-signal-bridge.js';
|
|
29
|
-
import { CandidateIntakeService } from '../../candidate-intake-service.js';
|
|
30
|
-
// ── In-memory ledger adapter for E2E testing ────────────────────────────────────
|
|
31
|
-
class InMemoryLedgerAdapter {
|
|
32
|
-
entries = new Map();
|
|
33
|
-
writeProbationEntry(entry) {
|
|
34
|
-
const candidateId = this.#extractCandidateId(entry.sourceRef);
|
|
35
|
-
const existing = this.existsForCandidate(candidateId);
|
|
36
|
-
if (existing)
|
|
37
|
-
return existing;
|
|
38
|
-
this.entries.set(candidateId, entry);
|
|
39
|
-
return entry;
|
|
40
|
-
}
|
|
41
|
-
existsForCandidate(candidateId) {
|
|
42
|
-
return this.entries.get(candidateId) ?? null;
|
|
43
|
-
}
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
45
|
-
#extractCandidateId(sourceRef) {
|
|
46
|
-
return sourceRef.startsWith('candidate://')
|
|
47
|
-
? sourceRef.slice('candidate://'.length)
|
|
48
|
-
: sourceRef;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// ── StubRuntimeAdapter — in-process test double for PDRuntimeAdapter ──────────
|
|
52
|
-
/**
|
|
53
|
-
* In-process test double for PDRuntimeAdapter.
|
|
54
|
-
* Lets tests control pollRun status and fetchOutput payload precisely.
|
|
55
|
-
* No real CLI binary spawned.
|
|
56
|
-
*/
|
|
57
|
-
class StubRuntimeAdapter {
|
|
58
|
-
kindValue;
|
|
59
|
-
nextOutput = null;
|
|
60
|
-
nextStatus = 'succeeded';
|
|
61
|
-
runIdCounter = 0;
|
|
62
|
-
constructor(kindValue = 'test-double') {
|
|
63
|
-
this.kindValue = kindValue;
|
|
64
|
-
}
|
|
65
|
-
setOutput(output) {
|
|
66
|
-
this.nextOutput = output;
|
|
67
|
-
}
|
|
68
|
-
setRunStatus(status) {
|
|
69
|
-
this.nextStatus = status;
|
|
70
|
-
}
|
|
71
|
-
kind() {
|
|
72
|
-
return this.kindValue;
|
|
73
|
-
}
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
75
|
-
async getCapabilities() {
|
|
76
|
-
return {
|
|
77
|
-
supportsStructuredJsonOutput: true,
|
|
78
|
-
supportsToolUse: false,
|
|
79
|
-
supportsWorkingDirectory: false,
|
|
80
|
-
supportsModelSelection: false,
|
|
81
|
-
supportsLongRunningSessions: false,
|
|
82
|
-
supportsCancellation: true,
|
|
83
|
-
supportsArtifactWriteBack: false,
|
|
84
|
-
supportsConcurrentRuns: false,
|
|
85
|
-
supportsStreaming: false,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
89
|
-
async healthCheck() {
|
|
90
|
-
return { healthy: true, degraded: false, warnings: [], lastCheckedAt: new Date().toISOString() };
|
|
91
|
-
}
|
|
92
|
-
async startRun(_input) {
|
|
93
|
-
this.runIdCounter += 1;
|
|
94
|
-
return { runId: `stub-run-${this.runIdCounter}`, runtimeKind: this.kindValue, startedAt: new Date().toISOString() };
|
|
95
|
-
}
|
|
96
|
-
async pollRun(runId) {
|
|
97
|
-
return { runId, status: this.nextStatus, startedAt: new Date().toISOString(), endedAt: new Date().toISOString() };
|
|
98
|
-
}
|
|
99
|
-
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
100
|
-
async cancelRun(_runId) {
|
|
101
|
-
// no-op
|
|
102
|
-
}
|
|
103
|
-
async fetchOutput(runId) {
|
|
104
|
-
if (this.nextOutput === null)
|
|
105
|
-
return null;
|
|
106
|
-
return { runId, payload: this.nextOutput };
|
|
107
|
-
}
|
|
108
|
-
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
109
|
-
async fetchArtifacts(_runId) {
|
|
110
|
-
return [];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// ── Deferred helper ─────────────────────────────────────────────────────────────
|
|
114
|
-
class Deferred {
|
|
115
|
-
resolve;
|
|
116
|
-
reject;
|
|
117
|
-
promise;
|
|
118
|
-
constructor() {
|
|
119
|
-
this.promise = new Promise((resolve, reject) => {
|
|
120
|
-
this.resolve = resolve;
|
|
121
|
-
this.reject = reject;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/** StubRuntimeAdapter variant whose pollRun stays 'running' until resolved. */
|
|
126
|
-
class _SlowStubRuntimeAdapter extends StubRuntimeAdapter {
|
|
127
|
-
pollDeferred = new Deferred();
|
|
128
|
-
pollCount = 0;
|
|
129
|
-
async pollRun(runId) {
|
|
130
|
-
this.pollCount += 1;
|
|
131
|
-
if (this.pollCount === 1) {
|
|
132
|
-
// First poll returns 'running' and waits
|
|
133
|
-
this.pollDeferred.promise.then((_status) => {
|
|
134
|
-
// This won't be called since we replace pollDeferred each time
|
|
135
|
-
});
|
|
136
|
-
return { runId, status: 'running', startedAt: new Date().toISOString() };
|
|
137
|
-
}
|
|
138
|
-
// Subsequent polls use whatever was resolved
|
|
139
|
-
return { runId, status: 'succeeded', startedAt: new Date().toISOString(), endedAt: new Date().toISOString() };
|
|
140
|
-
}
|
|
141
|
-
resolvePoll(status) {
|
|
142
|
-
this.pollDeferred.resolve(status);
|
|
143
|
-
}
|
|
144
|
-
setOutput(output) {
|
|
145
|
-
// Delegate to parent so nextOutput is actually set
|
|
146
|
-
super.setOutput(output);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// ── Test fixtures ──────────────────────────────────────────────────────────────
|
|
150
|
-
/**
|
|
151
|
-
* Create DiagnosticianOutputV1 with >= 2 kind='principle' recommendations.
|
|
152
|
-
* Per SqliteDiagnosticianCommitter, the full DiagnosticianOutputV1 JSON is stored
|
|
153
|
-
* as artifact.content_json. CandidateIntakeService.intake() reads this via
|
|
154
|
-
* JSON.parse(artifact.contentJson) and extracts the recommendation from it.
|
|
155
|
-
*
|
|
156
|
-
* The artifact.contentJson format is:
|
|
157
|
-
* { recommendation: { title, text, triggerPattern, action } }
|
|
158
|
-
*/
|
|
159
|
-
function makeDiagnosticianOutputWithCandidates(_taskId) {
|
|
160
|
-
return {
|
|
161
|
-
valid: true,
|
|
162
|
-
diagnosisId: `diag-m8e2e-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
163
|
-
summary: 'E2E m8-02 test diagnosis summary',
|
|
164
|
-
rootCause: 'E2E m8-02 root cause — missing validation before tool call',
|
|
165
|
-
violatedPrinciples: [],
|
|
166
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
167
|
-
recommendations: [
|
|
168
|
-
{
|
|
169
|
-
kind: 'principle',
|
|
170
|
-
description: 'Always validate tool arguments before execution to prevent silent failures',
|
|
171
|
-
triggerPattern: 'missing validation before tool call',
|
|
172
|
-
action: 'add schema validation before execution',
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
kind: 'principle',
|
|
176
|
-
description: 'Log all tool invocations with argument summaries for traceability',
|
|
177
|
-
triggerPattern: 'tool invocation without logging',
|
|
178
|
-
action: 'add logging to all tool invocations',
|
|
179
|
-
},
|
|
180
|
-
{ kind: 'rule', description: 'Use schema validation for external inputs' },
|
|
181
|
-
],
|
|
182
|
-
confidence: 0.92,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
// ── Test setup ─────────────────────────────────────────────────────────────────
|
|
186
|
-
const TMP_ROOT = path.join(os.tmpdir(), `pd-e2e-m8-${process.pid}`);
|
|
187
|
-
describe('E2E m8-02 — PainSignalBridge full chain', () => {
|
|
188
|
-
let testDir;
|
|
189
|
-
let stateManager;
|
|
190
|
-
let contextAssembler;
|
|
191
|
-
let historyQuery;
|
|
192
|
-
let eventEmitter;
|
|
193
|
-
let sqliteConn;
|
|
194
|
-
let ledgerAdapter;
|
|
195
|
-
let intakeService;
|
|
196
|
-
let bridge;
|
|
197
|
-
beforeEach(async () => {
|
|
198
|
-
testDir = path.join(TMP_ROOT, `e2e-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
199
|
-
fs.mkdirSync(testDir, { recursive: true });
|
|
200
|
-
stateManager = new RuntimeStateManager({ workspaceDir: testDir });
|
|
201
|
-
await stateManager.initialize();
|
|
202
|
-
sqliteConn = stateManager.connection;
|
|
203
|
-
historyQuery = new SqliteHistoryQuery(sqliteConn);
|
|
204
|
-
const taskStore = stateManager.taskStore;
|
|
205
|
-
const runStore = stateManager.runStore;
|
|
206
|
-
contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
|
|
207
|
-
eventEmitter = new StoreEventEmitter();
|
|
208
|
-
ledgerAdapter = new InMemoryLedgerAdapter();
|
|
209
|
-
intakeService = new CandidateIntakeService({ stateManager, ledgerAdapter });
|
|
210
|
-
});
|
|
211
|
-
afterEach(() => {
|
|
212
|
-
stateManager.close();
|
|
213
|
-
try {
|
|
214
|
-
fs.rmSync(TMP_ROOT, { recursive: true, force: true });
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
// ignore cleanup errors on Windows
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
/**
|
|
221
|
-
* Build a DiagnosticianRunner wired with REAL SqliteDiagnosticianCommitter.
|
|
222
|
-
*/
|
|
223
|
-
function createRunner(runtimeAdapter) {
|
|
224
|
-
const committer = new SqliteDiagnosticianCommitter(sqliteConn);
|
|
225
|
-
return new DiagnosticianRunner({
|
|
226
|
-
stateManager,
|
|
227
|
-
contextAssembler,
|
|
228
|
-
runtimeAdapter,
|
|
229
|
-
eventEmitter,
|
|
230
|
-
validator: new PassThroughValidator(),
|
|
231
|
-
committer,
|
|
232
|
-
}, {
|
|
233
|
-
owner: 'e2e-m8-02-bridge',
|
|
234
|
-
runtimeKind: 'test-double',
|
|
235
|
-
pollIntervalMs: 50,
|
|
236
|
-
timeoutMs: 5000,
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
240
|
-
// E2E-01: Full chain — pain → task → artifact → candidates → ledger probation
|
|
241
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
242
|
-
it('E2E-01: Full chain — pain signal → task succeeded → artifact → candidates → ledger probation entry', async () => {
|
|
243
|
-
const painId = 'test-pain-e2e01';
|
|
244
|
-
const expectedTaskId = `diagnosis_${painId}`;
|
|
245
|
-
const output = makeDiagnosticianOutputWithCandidates(painId);
|
|
246
|
-
const stubAdapter = new StubRuntimeAdapter();
|
|
247
|
-
stubAdapter.setOutput(output);
|
|
248
|
-
bridge = new PainSignalBridge({
|
|
249
|
-
stateManager,
|
|
250
|
-
runner: createRunner(stubAdapter),
|
|
251
|
-
intakeService,
|
|
252
|
-
ledgerAdapter,
|
|
253
|
-
autoIntakeEnabled: true,
|
|
254
|
-
});
|
|
255
|
-
const result = await bridge.onPainDetected({
|
|
256
|
-
painId,
|
|
257
|
-
painType: 'tool_failure',
|
|
258
|
-
source: 'test',
|
|
259
|
-
reason: 'test failure',
|
|
260
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
261
|
-
});
|
|
262
|
-
// E2E-01 assertion 1: taskId is distinct from painId
|
|
263
|
-
expect(result.painId).toBe(painId);
|
|
264
|
-
expect(result.taskId).toBe(expectedTaskId);
|
|
265
|
-
expect(result.status).toBe('succeeded');
|
|
266
|
-
// E2E-01 assertion 2: task record exists, status === 'succeeded'
|
|
267
|
-
const task = await stateManager.getTask(expectedTaskId);
|
|
268
|
-
expect(task).not.toBeNull();
|
|
269
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
270
|
-
expect(task.status).toBe('succeeded');
|
|
271
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
272
|
-
expect(task.inputRef).toBe(painId);
|
|
273
|
-
// E2E-01 assertion 3: artifact row exists with artifact_kind === 'diagnostician_output'
|
|
274
|
-
const db = sqliteConn.getDb();
|
|
275
|
-
const artifactRow = db.prepare('SELECT * FROM artifacts WHERE task_id = ?').get(expectedTaskId);
|
|
276
|
-
expect(artifactRow).toBeDefined();
|
|
277
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
278
|
-
expect(artifactRow.artifact_kind).toBe('diagnostician_output');
|
|
279
|
-
// E2E-01 assertion 4: >= 1 candidate rows exist
|
|
280
|
-
const candidateRows = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
|
|
281
|
-
expect(candidateRows.length).toBeGreaterThanOrEqual(1);
|
|
282
|
-
// E2E-01 assertion 5: ledger has a probation entry for each candidate
|
|
283
|
-
for (const row of candidateRows) {
|
|
284
|
-
const ledgerEntry = ledgerAdapter.existsForCandidate(row.candidate_id);
|
|
285
|
-
expect(ledgerEntry).not.toBeNull();
|
|
286
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
287
|
-
expect(ledgerEntry.status).toBe('probation');
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
291
|
-
// E2E-02: Legacy path NOT created
|
|
292
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
293
|
-
it('E2E-02: Legacy .state/diagnostician_tasks.json NOT created', async () => {
|
|
294
|
-
const painId = 'test-pain-e2e02';
|
|
295
|
-
const output = makeDiagnosticianOutputWithCandidates(painId);
|
|
296
|
-
const stubAdapter = new StubRuntimeAdapter();
|
|
297
|
-
stubAdapter.setOutput(output);
|
|
298
|
-
bridge = new PainSignalBridge({
|
|
299
|
-
stateManager,
|
|
300
|
-
runner: createRunner(stubAdapter),
|
|
301
|
-
intakeService,
|
|
302
|
-
ledgerAdapter,
|
|
303
|
-
autoIntakeEnabled: true,
|
|
304
|
-
});
|
|
305
|
-
await bridge.onPainDetected({
|
|
306
|
-
painId,
|
|
307
|
-
painType: 'tool_failure',
|
|
308
|
-
source: 'test',
|
|
309
|
-
reason: 'test failure',
|
|
310
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
311
|
-
});
|
|
312
|
-
// E2E-02: .state/diagnostician_tasks.json does NOT exist
|
|
313
|
-
const legacyPath = path.join(testDir, '.state', 'diagnostician_tasks.json');
|
|
314
|
-
expect(fs.existsSync(legacyPath)).toBe(false);
|
|
315
|
-
});
|
|
316
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
317
|
-
// E2E-03: Same painId twice — NO duplicate candidates
|
|
318
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
319
|
-
it('E2E-03: Same painId twice — NO duplicate candidates or ledger entries', async () => {
|
|
320
|
-
const painId = 'test-pain-idempotent';
|
|
321
|
-
const expectedTaskId = `diagnosis_${painId}`;
|
|
322
|
-
const output = makeDiagnosticianOutputWithCandidates(painId);
|
|
323
|
-
const stubAdapter = new StubRuntimeAdapter();
|
|
324
|
-
stubAdapter.setOutput(output);
|
|
325
|
-
bridge = new PainSignalBridge({
|
|
326
|
-
stateManager,
|
|
327
|
-
runner: createRunner(stubAdapter),
|
|
328
|
-
intakeService,
|
|
329
|
-
ledgerAdapter,
|
|
330
|
-
autoIntakeEnabled: true,
|
|
331
|
-
});
|
|
332
|
-
// First call
|
|
333
|
-
const firstResult = await bridge.onPainDetected({
|
|
334
|
-
painId,
|
|
335
|
-
painType: 'tool_failure',
|
|
336
|
-
source: 'test',
|
|
337
|
-
reason: 'test',
|
|
338
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
339
|
-
});
|
|
340
|
-
expect(firstResult.taskId).toBe(expectedTaskId);
|
|
341
|
-
expect(firstResult.status).toBe('succeeded');
|
|
342
|
-
// Record candidate count after first call
|
|
343
|
-
const db = sqliteConn.getDb();
|
|
344
|
-
const firstCandidateRows = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
|
|
345
|
-
const firstCandidateCount = firstCandidateRows.length;
|
|
346
|
-
expect(firstCandidateCount).toBeGreaterThanOrEqual(1);
|
|
347
|
-
// Second call with SAME painId — should NO-OP (task already succeeded → Rule a)
|
|
348
|
-
const secondResult = await bridge.onPainDetected({
|
|
349
|
-
painId,
|
|
350
|
-
painType: 'tool_failure',
|
|
351
|
-
source: 'test',
|
|
352
|
-
reason: 'test',
|
|
353
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
354
|
-
});
|
|
355
|
-
expect(secondResult.taskId).toBe(expectedTaskId);
|
|
356
|
-
expect(secondResult.status).toBe('succeeded');
|
|
357
|
-
// E2E-03 assertion 1: candidate count is UNCHANGED
|
|
358
|
-
const secondCandidateRows = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
|
|
359
|
-
expect(secondCandidateRows.length).toBe(firstCandidateCount);
|
|
360
|
-
// E2E-03 assertion 2: task status === 'succeeded'
|
|
361
|
-
const task = await stateManager.getTask(expectedTaskId);
|
|
362
|
-
expect(task).not.toBeNull();
|
|
363
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
364
|
-
expect(task.status).toBe('succeeded');
|
|
365
|
-
});
|
|
366
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
367
|
-
// E2E-04: autoIntakeEnabled=false
|
|
368
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
369
|
-
it('E2E-04: autoIntakeEnabled=false — candidates exist but NO ledger write', async () => {
|
|
370
|
-
const painId = 'test-pain-no-intake';
|
|
371
|
-
const expectedTaskId = `diagnosis_${painId}`;
|
|
372
|
-
const output = makeDiagnosticianOutputWithCandidates(painId);
|
|
373
|
-
const stubAdapter = new StubRuntimeAdapter();
|
|
374
|
-
stubAdapter.setOutput(output);
|
|
375
|
-
const bridgeNoIntake = new PainSignalBridge({
|
|
376
|
-
stateManager,
|
|
377
|
-
runner: createRunner(stubAdapter),
|
|
378
|
-
intakeService,
|
|
379
|
-
ledgerAdapter,
|
|
380
|
-
autoIntakeEnabled: false, // debug mode — no ledger write
|
|
381
|
-
});
|
|
382
|
-
const result = await bridgeNoIntake.onPainDetected({
|
|
383
|
-
painId,
|
|
384
|
-
painType: 'tool_failure',
|
|
385
|
-
source: 'test',
|
|
386
|
-
reason: 'test failure',
|
|
387
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
388
|
-
});
|
|
389
|
-
expect(result.taskId).toBe(expectedTaskId);
|
|
390
|
-
// E2E-04 assertion 1: task record exists, status === 'succeeded'
|
|
391
|
-
const task = await stateManager.getTask(expectedTaskId);
|
|
392
|
-
expect(task).not.toBeNull();
|
|
393
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
394
|
-
expect(task.status).toBe('succeeded');
|
|
395
|
-
// E2E-04 assertion 2: candidate rows exist
|
|
396
|
-
const db = sqliteConn.getDb();
|
|
397
|
-
const candidateRows = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
|
|
398
|
-
expect(candidateRows.length).toBeGreaterThanOrEqual(1);
|
|
399
|
-
// E2E-04 assertion 3: ledger has NO entry for these candidates
|
|
400
|
-
for (const row of candidateRows) {
|
|
401
|
-
const ledgerEntry = ledgerAdapter.existsForCandidate(row.candidate_id);
|
|
402
|
-
expect(ledgerEntry).toBeNull();
|
|
403
|
-
}
|
|
404
|
-
});
|
|
405
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
406
|
-
// E2E-05: Leased task not interrupted
|
|
407
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
408
|
-
it('E2E-05: Second trigger returns immediately while first run in-flight', async () => {
|
|
409
|
-
const painId = 'test-pain-lease';
|
|
410
|
-
const expectedTaskId = `diagnosis_${painId}`;
|
|
411
|
-
// Track runner.run() invocations
|
|
412
|
-
let runnerRunCallCount = 0;
|
|
413
|
-
// Slow adapter: first pollRun takes 200ms (blocks), subsequent succeed immediately.
|
|
414
|
-
// This gives us a window where the first call is in pollUntilTerminal while
|
|
415
|
-
// we fire the second call.
|
|
416
|
-
let pollCallCount = 0;
|
|
417
|
-
const slowAdapter = new StubRuntimeAdapter();
|
|
418
|
-
slowAdapter.setOutput(makeDiagnosticianOutputWithCandidates(painId));
|
|
419
|
-
vi.spyOn(slowAdapter, 'pollRun').mockImplementation(async (runId) => {
|
|
420
|
-
pollCallCount += 1;
|
|
421
|
-
if (pollCallCount === 1) {
|
|
422
|
-
// First poll: delay 200ms to simulate long-running task.
|
|
423
|
-
// During this time, the second pain signal fires.
|
|
424
|
-
await new Promise((r) => setTimeout(r, 200));
|
|
425
|
-
return { runId, status: 'succeeded', startedAt: new Date().toISOString(), endedAt: new Date().toISOString() };
|
|
426
|
-
}
|
|
427
|
-
return { runId, status: 'succeeded', startedAt: new Date().toISOString(), endedAt: new Date().toISOString() };
|
|
428
|
-
});
|
|
429
|
-
function countingRunner(adapter) {
|
|
430
|
-
const runner = createRunner(adapter);
|
|
431
|
-
const originalRun = runner.run.bind(runner);
|
|
432
|
-
runner.run = async (taskId) => {
|
|
433
|
-
runnerRunCallCount += 1;
|
|
434
|
-
return originalRun(taskId);
|
|
435
|
-
};
|
|
436
|
-
return runner;
|
|
437
|
-
}
|
|
438
|
-
bridge = new PainSignalBridge({
|
|
439
|
-
stateManager,
|
|
440
|
-
runner: countingRunner(slowAdapter),
|
|
441
|
-
intakeService,
|
|
442
|
-
ledgerAdapter,
|
|
443
|
-
autoIntakeEnabled: true,
|
|
444
|
-
});
|
|
445
|
-
const startTime = Date.now();
|
|
446
|
-
// Fire first call — DiagnosticianRunner.run() will:
|
|
447
|
-
// 1. acquireLease (sets task to 'leased')
|
|
448
|
-
// 2. startRun
|
|
449
|
-
// 3. pollUntilTerminal (calls pollRun which blocks 200ms)
|
|
450
|
-
const firstPromise = bridge.onPainDetected({
|
|
451
|
-
painId,
|
|
452
|
-
painType: 'tool_failure',
|
|
453
|
-
source: 'test',
|
|
454
|
-
reason: 'test failure',
|
|
455
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
456
|
-
});
|
|
457
|
-
// Wait 50ms — first call should be inside pollUntilTerminal by now
|
|
458
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
459
|
-
// Fire second call while first is still in pollUntilTerminal
|
|
460
|
-
const secondResult = await bridge.onPainDetected({
|
|
461
|
-
painId,
|
|
462
|
-
painType: 'tool_failure',
|
|
463
|
-
source: 'test',
|
|
464
|
-
reason: 'test failure',
|
|
465
|
-
evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
|
|
466
|
-
});
|
|
467
|
-
const secondCallReturnTime = Date.now() - startTime;
|
|
468
|
-
// E2E-05 assertion 1: second call returns in < 200ms (proves it didn't wait for first run)
|
|
469
|
-
// If it waited for the first run to complete, second call would take ~200ms+
|
|
470
|
-
expect(secondCallReturnTime).toBeLessThan(200);
|
|
471
|
-
// E2E-05 assertion 2: second call returns the SKIP result for the same task
|
|
472
|
-
expect(secondResult.status).toBe('skipped');
|
|
473
|
-
expect(secondResult.painId).toBe(painId);
|
|
474
|
-
expect(secondResult.taskId).toBe(expectedTaskId);
|
|
475
|
-
// Wait for first call to complete (it takes ~200ms due to poll delay)
|
|
476
|
-
const firstResult = await firstPromise;
|
|
477
|
-
expect(firstResult.status).toBe('succeeded');
|
|
478
|
-
expect(firstResult.taskId).toBe(expectedTaskId);
|
|
479
|
-
// E2E-05 assertion 3: at least one runner.run() was called (proves first call ran)
|
|
480
|
-
expect(runnerRunCallCount).toBeGreaterThanOrEqual(1);
|
|
481
|
-
// E2E-05 assertion 4: candidates exist (proves chain produced candidates)
|
|
482
|
-
const candidates = await stateManager.getCandidatesByTaskId(expectedTaskId);
|
|
483
|
-
expect(candidates.length).toBeGreaterThanOrEqual(1);
|
|
484
|
-
});
|
|
485
|
-
});
|
|
486
|
-
//# sourceMappingURL=m8-02-e2e.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"m8-02-e2e.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m8-02-e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"m9-adapter-integration.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m9-adapter-integration.test.ts"],"names":[],"mappings":""}
|