@principles/core 1.146.0 → 1.146.2
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__/pain-signal-observability.test.js +53 -0
- package/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
- package/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +128 -0
- package/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
- package/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js +126 -0
- package/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js +227 -0
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js.map +1 -0
- package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts +38 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js +184 -139
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -1
- package/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-observability.js +32 -7
- package/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +5 -3
- package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-runtime-factory.js +5 -3
- package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Stage A (diag_rootcause) → Stage B (diag_distiller) → Stage C (diag_router)
|
|
10
10
|
*
|
|
11
11
|
* After Stage C succeeds, onDiagnosisComplete is invoked by the bridge
|
|
12
|
-
* (PainSignalBridge.onPainDetected), not by this
|
|
12
|
+
* (PainSignalBridge.onPainDetected), not by this router or the router.
|
|
13
13
|
*
|
|
14
14
|
* Key constraints:
|
|
15
15
|
* - Each stage gets its own task with the correct taskKind
|
|
@@ -18,8 +18,12 @@
|
|
|
18
18
|
* - If any stage fails, the pipeline stops and returns the failure
|
|
19
19
|
* - The parent diagnostician task is NOT created — the bridge already
|
|
20
20
|
* creates it; this runner only creates the 3 sub-tasks
|
|
21
|
+
* - If a sub-runner returns `retried`, this orchestrator waits for the
|
|
22
|
+
* backoff period and re-runs the stage until it succeeds or fails
|
|
23
|
+
* (ERR-067 fix: previously `retried` was treated as failure)
|
|
21
24
|
*
|
|
22
25
|
* @see PRI-372
|
|
26
|
+
* @see ERR-067
|
|
23
27
|
*/
|
|
24
28
|
import { createPITaskDiagnosticJson } from './pitask-metadata.js';
|
|
25
29
|
// ── SplitDiagnosticianRunner ─────────────────────────────────────────────────
|
|
@@ -29,6 +33,10 @@ import { createPITaskDiagnosticJson } from './pitask-metadata.js';
|
|
|
29
33
|
* This class is a thin orchestrator — it does NOT extend BasePeerRunner.
|
|
30
34
|
* It creates sub-tasks, runs each stage's runner, and returns a RunnerResult
|
|
31
35
|
* compatible with the monolithic DiagnosticianRunner's output.
|
|
36
|
+
*
|
|
37
|
+
* ERR-067 fix: when a sub-runner returns `retried`, this orchestrator
|
|
38
|
+
* waits for the backoff period and re-runs the stage, up to maxAttempts.
|
|
39
|
+
* Previously, `retried` was treated as failure, breaking the retry chain.
|
|
32
40
|
*/
|
|
33
41
|
export class SplitDiagnosticianRunner {
|
|
34
42
|
rootCauseRunner;
|
|
@@ -36,12 +44,14 @@ export class SplitDiagnosticianRunner {
|
|
|
36
44
|
routerRunner;
|
|
37
45
|
stateManager;
|
|
38
46
|
perStageTimeoutMs;
|
|
47
|
+
retryPolicy;
|
|
39
48
|
constructor(deps) {
|
|
40
49
|
this.rootCauseRunner = deps.rootCauseRunner;
|
|
41
50
|
this.distillerRunner = deps.distillerRunner;
|
|
42
51
|
this.routerRunner = deps.routerRunner;
|
|
43
52
|
this.stateManager = deps.stateManager;
|
|
44
53
|
this.perStageTimeoutMs = deps.perStageTimeoutMs ?? 300_000;
|
|
54
|
+
this.retryPolicy = deps.retryPolicy ?? deps.stateManager.getRetryPolicy();
|
|
45
55
|
}
|
|
46
56
|
/**
|
|
47
57
|
* Execute the full split pipeline A→B→C for a parent diagnostician task.
|
|
@@ -57,139 +67,46 @@ export class SplitDiagnosticianRunner {
|
|
|
57
67
|
async run(parentTaskId) {
|
|
58
68
|
// ── Stage A: Root Cause ────────────────────────────────────────────────
|
|
59
69
|
const stageATaskId = `diag_rootcause-${parentTaskId}`;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
channel: 'prompt',
|
|
72
|
-
timeoutMs: this.perStageTimeoutMs,
|
|
73
|
-
inputArtifactRefs: [],
|
|
74
|
-
outputArtifactRefs: [],
|
|
75
|
-
}),
|
|
76
|
-
});
|
|
77
|
-
stageATask = await this.stateManager.getTask(stageATaskId);
|
|
78
|
-
}
|
|
79
|
-
else if (stageATask.status === 'failed' || stageATask.status === 'retry_wait') {
|
|
80
|
-
await this.stateManager.updateTask(stageATaskId, {
|
|
81
|
-
status: 'pending',
|
|
82
|
-
attemptCount: 0,
|
|
83
|
-
lastError: null,
|
|
84
|
-
});
|
|
85
|
-
stageATask = await this.stateManager.getTask(stageATaskId);
|
|
86
|
-
}
|
|
87
|
-
let resultA;
|
|
88
|
-
if (stageATask && stageATask.status === 'succeeded') {
|
|
89
|
-
resultA = {
|
|
90
|
-
status: 'succeeded',
|
|
91
|
-
taskId: stageATaskId,
|
|
92
|
-
attemptCount: stageATask.attemptCount,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
resultA = await this.rootCauseRunner.run(stageATaskId);
|
|
97
|
-
}
|
|
70
|
+
await this.ensureSubTask({
|
|
71
|
+
taskId: stageATaskId,
|
|
72
|
+
taskKind: 'diag_rootcause',
|
|
73
|
+
parentTaskId,
|
|
74
|
+
dependencyTaskIds: [],
|
|
75
|
+
});
|
|
76
|
+
const resultA = await this.runStageWithRetry({
|
|
77
|
+
taskId: stageATaskId,
|
|
78
|
+
runFn: (id) => this.rootCauseRunner.run(id),
|
|
79
|
+
stageLabel: 'A (rootcause)',
|
|
80
|
+
});
|
|
98
81
|
if (resultA.status !== 'succeeded') {
|
|
99
|
-
|
|
100
|
-
await this.stateManager.markTaskFailed(parentTaskId, resultA.errorCategory ?? 'execution_failed');
|
|
101
|
-
}
|
|
102
|
-
catch { /* best-effort — return failure regardless */ }
|
|
103
|
-
return {
|
|
104
|
-
status: resultA.status,
|
|
105
|
-
taskId: parentTaskId,
|
|
106
|
-
errorCategory: resultA.errorCategory,
|
|
107
|
-
failureReason: resultA.failureReason ?? `Stage A (rootcause) failed for ${parentTaskId}`,
|
|
108
|
-
attemptCount: resultA.attemptCount,
|
|
109
|
-
};
|
|
82
|
+
return this.failParent(parentTaskId, resultA);
|
|
110
83
|
}
|
|
111
84
|
// ── Stage B: Distiller ─────────────────────────────────────────────────
|
|
112
85
|
const stageBTaskId = `diag_distiller-${parentTaskId}`;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
channel: 'prompt',
|
|
125
|
-
timeoutMs: this.perStageTimeoutMs,
|
|
126
|
-
inputArtifactRefs: [],
|
|
127
|
-
outputArtifactRefs: [],
|
|
128
|
-
}),
|
|
129
|
-
});
|
|
130
|
-
stageBTask = await this.stateManager.getTask(stageBTaskId);
|
|
131
|
-
}
|
|
132
|
-
else if (stageBTask.status === 'failed' || stageBTask.status === 'retry_wait') {
|
|
133
|
-
await this.stateManager.updateTask(stageBTaskId, {
|
|
134
|
-
status: 'pending',
|
|
135
|
-
attemptCount: 0,
|
|
136
|
-
lastError: null,
|
|
137
|
-
});
|
|
138
|
-
stageBTask = await this.stateManager.getTask(stageBTaskId);
|
|
139
|
-
}
|
|
140
|
-
let resultB;
|
|
141
|
-
if (stageBTask && stageBTask.status === 'succeeded') {
|
|
142
|
-
resultB = {
|
|
143
|
-
status: 'succeeded',
|
|
144
|
-
taskId: stageBTaskId,
|
|
145
|
-
attemptCount: stageBTask.attemptCount,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
resultB = await this.distillerRunner.run(stageBTaskId);
|
|
150
|
-
}
|
|
86
|
+
await this.ensureSubTask({
|
|
87
|
+
taskId: stageBTaskId,
|
|
88
|
+
taskKind: 'diag_distiller',
|
|
89
|
+
parentTaskId,
|
|
90
|
+
dependencyTaskIds: [stageATaskId],
|
|
91
|
+
});
|
|
92
|
+
const resultB = await this.runStageWithRetry({
|
|
93
|
+
taskId: stageBTaskId,
|
|
94
|
+
runFn: (id) => this.distillerRunner.run(id),
|
|
95
|
+
stageLabel: 'B (distiller)',
|
|
96
|
+
});
|
|
151
97
|
if (resultB.status !== 'succeeded') {
|
|
152
|
-
|
|
153
|
-
await this.stateManager.markTaskFailed(parentTaskId, resultB.errorCategory ?? 'execution_failed');
|
|
154
|
-
}
|
|
155
|
-
catch { /* best-effort — return failure regardless */ }
|
|
156
|
-
return {
|
|
157
|
-
status: resultB.status,
|
|
158
|
-
taskId: parentTaskId,
|
|
159
|
-
errorCategory: resultB.errorCategory,
|
|
160
|
-
failureReason: resultB.failureReason ?? `Stage B (distiller) failed for ${parentTaskId}`,
|
|
161
|
-
attemptCount: resultB.attemptCount,
|
|
162
|
-
};
|
|
98
|
+
return this.failParent(parentTaskId, resultB);
|
|
163
99
|
}
|
|
164
100
|
// ── Stage C: Router ────────────────────────────────────────────────────
|
|
165
101
|
const stageCTaskId = `diag_router-${parentTaskId}`;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
maxAttempts: 3,
|
|
175
|
-
diagnosticJson: createPITaskDiagnosticJson({
|
|
176
|
-
dependencyTaskIds: [stageATaskId, stageBTaskId],
|
|
177
|
-
channel: 'prompt',
|
|
178
|
-
timeoutMs: this.perStageTimeoutMs,
|
|
179
|
-
inputArtifactRefs: [],
|
|
180
|
-
outputArtifactRefs: [],
|
|
181
|
-
}),
|
|
182
|
-
});
|
|
183
|
-
stageCTask = await this.stateManager.getTask(stageCTaskId);
|
|
184
|
-
}
|
|
185
|
-
else if (stageCTask.status === 'failed' || stageCTask.status === 'retry_wait') {
|
|
186
|
-
await this.stateManager.updateTask(stageCTaskId, {
|
|
187
|
-
status: 'pending',
|
|
188
|
-
attemptCount: 0,
|
|
189
|
-
lastError: null,
|
|
190
|
-
});
|
|
191
|
-
stageCTask = await this.stateManager.getTask(stageCTaskId);
|
|
192
|
-
}
|
|
102
|
+
await this.ensureSubTask({
|
|
103
|
+
taskId: stageCTaskId,
|
|
104
|
+
taskKind: 'diag_router',
|
|
105
|
+
parentTaskId,
|
|
106
|
+
dependencyTaskIds: [stageATaskId, stageBTaskId],
|
|
107
|
+
});
|
|
108
|
+
// Stage C may already be succeeded from a previous partial run
|
|
109
|
+
const stageCTask = await this.stateManager.getTask(stageCTaskId);
|
|
193
110
|
let resultC;
|
|
194
111
|
if (stageCTask && stageCTask.status === 'succeeded') {
|
|
195
112
|
const runs = await this.stateManager.getRunsByTask(stageCTaskId);
|
|
@@ -205,20 +122,14 @@ export class SplitDiagnosticianRunner {
|
|
|
205
122
|
};
|
|
206
123
|
}
|
|
207
124
|
else {
|
|
208
|
-
resultC = await this.
|
|
125
|
+
resultC = await this.runStageWithRetry({
|
|
126
|
+
taskId: stageCTaskId,
|
|
127
|
+
runFn: (id) => this.routerRunner.run(id),
|
|
128
|
+
stageLabel: 'C (router)',
|
|
129
|
+
});
|
|
209
130
|
}
|
|
210
131
|
if (resultC.status !== 'succeeded') {
|
|
211
|
-
|
|
212
|
-
await this.stateManager.markTaskFailed(parentTaskId, resultC.errorCategory ?? 'execution_failed');
|
|
213
|
-
}
|
|
214
|
-
catch { /* best-effort — return failure regardless */ }
|
|
215
|
-
return {
|
|
216
|
-
status: resultC.status,
|
|
217
|
-
taskId: parentTaskId,
|
|
218
|
-
errorCategory: resultC.errorCategory,
|
|
219
|
-
failureReason: resultC.failureReason ?? `Stage C (router) failed for ${parentTaskId}`,
|
|
220
|
-
attemptCount: resultC.attemptCount,
|
|
221
|
-
};
|
|
132
|
+
return this.failParent(parentTaskId, resultC);
|
|
222
133
|
}
|
|
223
134
|
// ── Pipeline complete ──────────────────────────────────────────────────
|
|
224
135
|
// onDiagnosisComplete is invoked by the bridge (PainSignalBridge.onPainDetected)
|
|
@@ -229,12 +140,146 @@ export class SplitDiagnosticianRunner {
|
|
|
229
140
|
await this.stateManager.markTaskSucceeded(parentTaskId, parentResultRef);
|
|
230
141
|
}
|
|
231
142
|
catch { /* best-effort — return success regardless */ }
|
|
143
|
+
const stageA = await this.stateManager.getTask(stageATaskId);
|
|
144
|
+
const stageB = await this.stateManager.getTask(stageBTaskId);
|
|
145
|
+
const stageC = await this.stateManager.getTask(stageCTaskId);
|
|
232
146
|
return {
|
|
233
147
|
status: 'succeeded',
|
|
234
148
|
taskId: parentTaskId,
|
|
235
149
|
contextHash: resultC.contextHash,
|
|
236
150
|
output: resultC.output,
|
|
237
|
-
attemptCount: (
|
|
151
|
+
attemptCount: (stageA?.attemptCount ?? resultA.attemptCount) + (stageB?.attemptCount ?? resultB.attemptCount) + (stageC?.attemptCount ?? resultC.attemptCount),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// ── Private helpers ────────────────────────────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Ensure a sub-task exists. If it already exists in `retry_wait` status,
|
|
157
|
+
* transition it to `pending` WITHOUT resetting attemptCount (ERR-067 fix:
|
|
158
|
+
* previously attemptCount was reset to 0, losing retry progress).
|
|
159
|
+
*
|
|
160
|
+
* If it exists in `failed` status, also transition to `pending` without
|
|
161
|
+
* resetting attemptCount — the retry policy will check shouldRetry().
|
|
162
|
+
*/
|
|
163
|
+
async ensureSubTask(opts) {
|
|
164
|
+
const { taskId, taskKind, parentTaskId, dependencyTaskIds } = opts;
|
|
165
|
+
const existing = await this.stateManager.getTask(taskId);
|
|
166
|
+
if (!existing) {
|
|
167
|
+
await this.stateManager.createTask({
|
|
168
|
+
taskId,
|
|
169
|
+
taskKind,
|
|
170
|
+
inputRef: parentTaskId,
|
|
171
|
+
status: 'pending',
|
|
172
|
+
attemptCount: 0,
|
|
173
|
+
maxAttempts: 3,
|
|
174
|
+
diagnosticJson: createPITaskDiagnosticJson({
|
|
175
|
+
dependencyTaskIds,
|
|
176
|
+
channel: 'prompt',
|
|
177
|
+
timeoutMs: this.perStageTimeoutMs,
|
|
178
|
+
inputArtifactRefs: [],
|
|
179
|
+
outputArtifactRefs: [],
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// ERR-067 fix: do NOT reset attemptCount on retry_wait/failed tasks.
|
|
185
|
+
// The retry policy (shouldRetry) uses attemptCount to decide whether
|
|
186
|
+
// to retry. Resetting it would cause infinite retries.
|
|
187
|
+
// P1-2 fix: check shouldRetry() before transitioning failed → pending.
|
|
188
|
+
if (existing.status === 'retry_wait') {
|
|
189
|
+
await this.stateManager.updateTask(taskId, {
|
|
190
|
+
status: 'pending',
|
|
191
|
+
lastError: null,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else if (existing.status === 'failed') {
|
|
195
|
+
if (!this.retryPolicy.shouldRetry(existing)) {
|
|
196
|
+
// Task has exhausted its retry budget — do not re-pend
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
await this.stateManager.updateTask(taskId, {
|
|
200
|
+
status: 'pending',
|
|
201
|
+
lastError: null,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Run a stage's runner with retry support (ERR-067 fix).
|
|
207
|
+
*
|
|
208
|
+
* When the sub-runner returns `retried`, this method:
|
|
209
|
+
* 1. Waits for the backoff period calculated by the retry policy
|
|
210
|
+
* 2. Re-runs the sub-runner
|
|
211
|
+
* 3. Repeats until the result is `succeeded` or `failed`
|
|
212
|
+
*
|
|
213
|
+
* This ensures that transient LLM failures (e.g., schema non-compliance)
|
|
214
|
+
* are actually retried instead of being treated as terminal failures.
|
|
215
|
+
*/
|
|
216
|
+
async runStageWithRetry(opts) {
|
|
217
|
+
const { taskId, runFn, stageLabel } = opts;
|
|
218
|
+
const maxRetries = 10; // Safety limit to prevent infinite loops
|
|
219
|
+
let attempt = 0;
|
|
220
|
+
while (true) {
|
|
221
|
+
attempt++;
|
|
222
|
+
const result = await runFn(taskId);
|
|
223
|
+
if (result.status === 'succeeded' || result.status === 'failed') {
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
if (result.status === 'retried') {
|
|
227
|
+
// Get the current task state for shouldRetry check and backoff calculation
|
|
228
|
+
const task = await this.stateManager.getTask(taskId);
|
|
229
|
+
// P1-1 fix: check shouldRetry() against task's maxAttempts
|
|
230
|
+
if (task && !this.retryPolicy.shouldRetry(task)) {
|
|
231
|
+
return {
|
|
232
|
+
status: 'failed',
|
|
233
|
+
taskId: result.taskId,
|
|
234
|
+
errorCategory: result.errorCategory ?? 'max_attempts_exceeded',
|
|
235
|
+
failureReason: `Stage ${stageLabel}: attemptCount (${task.attemptCount}) >= maxAttempts (${task.maxAttempts}). ${result.failureReason ?? ''}`,
|
|
236
|
+
attemptCount: result.attemptCount,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (attempt >= maxRetries) {
|
|
240
|
+
// Safety: break out of potential infinite loop
|
|
241
|
+
return {
|
|
242
|
+
status: 'failed',
|
|
243
|
+
taskId: result.taskId,
|
|
244
|
+
errorCategory: result.errorCategory ?? 'max_attempts_exceeded',
|
|
245
|
+
failureReason: `Stage ${stageLabel}: max retry loop iterations (${maxRetries}) exceeded. ${result.failureReason ?? ''}`,
|
|
246
|
+
attemptCount: result.attemptCount,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
// Calculate backoff from task state
|
|
250
|
+
const backoffMs = task
|
|
251
|
+
? this.retryPolicy.calculateBackoff(task.attemptCount)
|
|
252
|
+
: 30_000; // fallback: 30s
|
|
253
|
+
// Wait for backoff period
|
|
254
|
+
await new Promise((resolve) => setTimeout(resolve, backoffMs));
|
|
255
|
+
// Re-run the stage — the sub-runner will acquire the lease on the
|
|
256
|
+
// retry_wait task and attempt execution again
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
// Unknown status — treat as failure (fail-loud, ERR-009)
|
|
260
|
+
return {
|
|
261
|
+
status: 'failed',
|
|
262
|
+
taskId: result.taskId,
|
|
263
|
+
errorCategory: result.errorCategory ?? 'execution_failed',
|
|
264
|
+
failureReason: `Stage ${stageLabel}: unexpected status '${result.status}'`,
|
|
265
|
+
attemptCount: result.attemptCount,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Mark the parent task as failed and return a failure result.
|
|
271
|
+
*/
|
|
272
|
+
async failParent(parentTaskId, stageResult) {
|
|
273
|
+
try {
|
|
274
|
+
await this.stateManager.markTaskFailed(parentTaskId, stageResult.errorCategory ?? 'execution_failed');
|
|
275
|
+
}
|
|
276
|
+
catch { /* best-effort — return failure regardless */ }
|
|
277
|
+
return {
|
|
278
|
+
status: stageResult.status === 'retried' ? 'failed' : stageResult.status,
|
|
279
|
+
taskId: parentTaskId,
|
|
280
|
+
errorCategory: stageResult.errorCategory,
|
|
281
|
+
failureReason: stageResult.failureReason ?? `Stage failed for parent task ${parentTaskId}`,
|
|
282
|
+
attemptCount: stageResult.attemptCount,
|
|
238
283
|
};
|
|
239
284
|
}
|
|
240
285
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-diagnostician-runner.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/split-diagnostician-runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"split-diagnostician-runner.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/split-diagnostician-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-observability.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"pain-signal-observability.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAkLD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,oCAAoC,GACzC,6BAA6B,CAiE/B"}
|
|
@@ -115,13 +115,38 @@ function recordTrajectoryPainEvent(opts) {
|
|
|
115
115
|
ON CONFLICT(session_id) DO UPDATE SET updated_at = excluded.updated_at
|
|
116
116
|
`).run(sessionId, timestamp, timestamp);
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
118
|
+
// Try INSERT; on UNIQUE constraint violation for canonical_pain_id, do UPDATE instead.
|
|
119
|
+
// SQLite UPSERT (ON CONFLICT) does not support partial unique indexes, so we
|
|
120
|
+
// handle the conflict manually.
|
|
121
|
+
try {
|
|
122
|
+
const result = db.prepare(`
|
|
123
|
+
INSERT INTO pain_events (
|
|
124
|
+
session_id, source, score, reason, severity, origin, confidence, text, created_at,
|
|
125
|
+
canonical_pain_id, runtime_task_id
|
|
126
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
127
|
+
`).run(sessionId, data.source, data.score ?? 80, sanitizeString(data.reason ?? '', workspaceDir), severityFromScore(data.score ?? 80), data.source === 'manual' ? 'user_manual' : 'system_infer', 1, sanitizeString(data.reason ?? '', workspaceDir), timestamp, canonicalPainId ?? null, runtimeTaskId ?? null);
|
|
128
|
+
return Number(result.lastInsertRowid);
|
|
129
|
+
}
|
|
130
|
+
catch (insertErr) {
|
|
131
|
+
// If UNIQUE constraint violation on canonical_pain_id, upsert manually
|
|
132
|
+
if (canonicalPainId &&
|
|
133
|
+
insertErr instanceof Error &&
|
|
134
|
+
insertErr.message.includes('UNIQUE constraint failed') &&
|
|
135
|
+
insertErr.message.includes('canonical_pain_id')) {
|
|
136
|
+
db.prepare(`
|
|
137
|
+
UPDATE pain_events
|
|
138
|
+
SET runtime_task_id = COALESCE(?, runtime_task_id)
|
|
139
|
+
WHERE canonical_pain_id = ?
|
|
140
|
+
`).run(runtimeTaskId ?? null, canonicalPainId);
|
|
141
|
+
const rawRow = db.prepare('SELECT id FROM pain_events WHERE canonical_pain_id = ?').get(canonicalPainId);
|
|
142
|
+
// Runtime Contract #1/#2: validate DB row instead of `as` cast
|
|
143
|
+
if (rawRow && typeof rawRow === 'object' && Object.hasOwn(rawRow, 'id') && typeof rawRow.id === 'number') {
|
|
144
|
+
return rawRow.id;
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
throw insertErr;
|
|
149
|
+
}
|
|
125
150
|
}
|
|
126
151
|
finally {
|
|
127
152
|
db.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pain-signal-observability.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,11 @@ export interface PainSignalRuntimeFactoryOptions {
|
|
|
27
27
|
/** PRI-306: Env var accessor for readiness checks. Defaults to process.env. */
|
|
28
28
|
getEnvVar?: (name: string) => string | undefined;
|
|
29
29
|
}
|
|
30
|
-
/** Total timeout for the 3-stage split pipeline (3 ×
|
|
31
|
-
*
|
|
32
|
-
|
|
30
|
+
/** Total timeout for the 3-stage split pipeline (3 × 20 min = 60 min).
|
|
31
|
+
* Local GPU inference (e.g. qwen3.6-27b-mtp with 200K context) needs
|
|
32
|
+
* 10-18 min per stage; 20 min per stage provides headroom.
|
|
33
|
+
* Shared with pd-cli diagnose command. */
|
|
34
|
+
export declare const SPLIT_PIPELINE_TOTAL_TIMEOUT_MS = 3600000;
|
|
33
35
|
/** Resolved runtime configuration from funnel policy. */
|
|
34
36
|
export interface RuntimeConfig {
|
|
35
37
|
runtimeKind: RuntimeKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-runtime-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAyB9D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;qEACiE;IACjE,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD;AAQD
|
|
1
|
+
{"version":3,"file":"pain-signal-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-runtime-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAyB9D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;qEACiE;IACjE,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD;AAQD;;;2CAG2C;AAC3C,eAAO,MAAM,+BAA+B,UAAY,CAAC;AAEzD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAErE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,IAAI,kBAAkB,CAE9F;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,2BAA2B,GAAG,mBAAmB,CAiHxH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CA6CjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC9C,mBAAmB,CAkDrB;AAMD;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAEnE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CASjD;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,gBAAgB,CAAC,CAgJ3B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAO3F"}
|
|
@@ -38,9 +38,11 @@ import { resolveAgentRuntimeBinding, checkAgentRuntimeReadiness, createAdapterCo
|
|
|
38
38
|
const DIAGNOSTIC_FUNNEL_ID = 'pd-runtime-v2-diagnosis';
|
|
39
39
|
/** Default per-stage timeout (5 min). Same for monolith and split-per-stage. */
|
|
40
40
|
const DEFAULT_TIMEOUT_MS = 300_000;
|
|
41
|
-
/** Total timeout for the 3-stage split pipeline (3 ×
|
|
42
|
-
*
|
|
43
|
-
|
|
41
|
+
/** Total timeout for the 3-stage split pipeline (3 × 20 min = 60 min).
|
|
42
|
+
* Local GPU inference (e.g. qwen3.6-27b-mtp with 200K context) needs
|
|
43
|
+
* 10-18 min per stage; 20 min per stage provides headroom.
|
|
44
|
+
* Shared with pd-cli diagnose command. */
|
|
45
|
+
export const SPLIT_PIPELINE_TOTAL_TIMEOUT_MS = 3_600_000;
|
|
44
46
|
export function isRuntimeConfigError(result) {
|
|
45
47
|
return 'ok' in result && result.ok === false;
|
|
46
48
|
}
|