@principles/pd-cli 1.93.0 → 1.95.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.
@@ -1 +1 @@
1
- {"version":3,"file":"synthetic-baseline-runner.d.ts","sourceRoot":"","sources":["../../src/services/synthetic-baseline-runner.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,wBAAwB,EAGxB,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA6PlH"}
1
+ {"version":3,"file":"synthetic-baseline-runner.d.ts","sourceRoot":"","sources":["../../src/services/synthetic-baseline-runner.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,wBAAwB,EAGxB,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA6VlH"}
@@ -4,8 +4,7 @@ import { RuntimeStateManager } from '@principles/core/runtime-v2';
4
4
  import { SqliteContextAssembler } from '@principles/core/runtime-v2';
5
5
  import { SqliteHistoryQuery } from '@principles/core/runtime-v2';
6
6
  import { StoreEventEmitter } from '@principles/core/runtime-v2';
7
- import { DiagnosticianRunner } from '@principles/core/runtime-v2';
8
- import { PassThroughValidator } from '@principles/core/runtime-v2';
7
+ import { SplitDiagnosticianRunner, DiagRootCauseRunner, DiagDistillerRunner, DiagRouterRunner, DefaultDiagRootCauseValidator, DefaultDiagDistillerValidator, } from '@principles/core/runtime-v2';
9
8
  import { SqliteDiagnosticianCommitter } from '@principles/core/runtime-v2';
10
9
  import { TestDoubleRuntimeAdapter } from '@principles/core/runtime-v2';
11
10
  import { PainSignalBridge } from '@principles/core/runtime-v2';
@@ -47,14 +46,98 @@ export async function runSyntheticBaseline(opts) {
47
46
  const contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
48
47
  const eventEmitter = new StoreEventEmitter();
49
48
  const committer = new SqliteDiagnosticianCommitter(sqliteConn);
50
- const validator = new PassThroughValidator();
51
- const runtimeAdapter = new TestDoubleRuntimeAdapter({ onFetchOutput: () => ({ runId: `synth-${painId}`, payload: diagnosticianOutput }) }, `diagnosis_${painId}`);
52
- const runner = new DiagnosticianRunner({
49
+ const runIdToTaskId = new Map();
50
+ let runCounter = 0;
51
+ // Single test-double adapter handles all pains with stage-aware output
52
+ const runtimeAdapter = new TestDoubleRuntimeAdapter({
53
+ onStartRun: (input) => {
54
+ runCounter += 1;
55
+ const runId = `td-${runCounter}`;
56
+ const taskId = input.taskRef?.taskId ?? '';
57
+ runIdToTaskId.set(runId, taskId);
58
+ return {
59
+ runId,
60
+ runtimeKind: 'test-double',
61
+ startedAt: new Date().toISOString(),
62
+ };
63
+ },
64
+ onFetchOutput: async (runId) => {
65
+ const taskId = runIdToTaskId.get(runId) ?? '';
66
+ if (taskId.includes('diag_rootcause')) {
67
+ return {
68
+ runId,
69
+ payload: {
70
+ valid: true,
71
+ diagnosisId: `diag-${runId}`,
72
+ taskId,
73
+ summary: 'Mock rootcause summary for synthetic-baseline',
74
+ causalChain: [{ why: 1, statement: 'why', evidenceRefs: ['ref-1'] }],
75
+ rootCause: 'Design: Mock rootcause',
76
+ rootCauseCategory: 'Design',
77
+ evidence: [{ sourceRef: 'ref-1', note: 'note' }],
78
+ confidence: 0.9,
79
+ },
80
+ };
81
+ }
82
+ else if (taskId.includes('diag_distiller')) {
83
+ const parentTaskId = taskId.replace('diag_distiller-', '');
84
+ const stageATaskId = `diag_rootcause-${parentTaskId}`;
85
+ const artifacts = stateManager
86
+ ? await stateManager.piArtifactStore.listBySourceTaskId(stageATaskId)
87
+ : [];
88
+ const sourceRootCauseArtifactId = artifacts[0]?.artifactId ?? 'art-rc';
89
+ return {
90
+ runId,
91
+ payload: {
92
+ valid: true,
93
+ taskId,
94
+ sourceRootCauseArtifactId,
95
+ abstractedPrinciple: 'Mock abstracted principle',
96
+ rationale: 'Mock rationale',
97
+ groundedOnCorePrincipleIds: ['T-01'],
98
+ scope: 'domain',
99
+ confidence: 0.9,
100
+ },
101
+ };
102
+ }
103
+ else {
104
+ return {
105
+ runId,
106
+ payload: diagnosticianOutput,
107
+ };
108
+ }
109
+ },
110
+ });
111
+ const rootCauseRunner = new DiagRootCauseRunner({
53
112
  stateManager,
113
+ runtimeAdapter,
114
+ eventEmitter,
115
+ artifactStore: stateManager.piArtifactStore,
116
+ validator: new DefaultDiagRootCauseValidator(),
54
117
  contextAssembler,
118
+ }, {
119
+ owner: 'synthetic-baseline',
120
+ runtimeKind: 'test-double',
121
+ pollIntervalMs: 50,
122
+ timeoutMs: 10000,
123
+ });
124
+ const distillerRunner = new DiagDistillerRunner({
125
+ stateManager,
126
+ runtimeAdapter,
127
+ eventEmitter,
128
+ artifactStore: stateManager.piArtifactStore,
129
+ validator: new DefaultDiagDistillerValidator(),
130
+ }, {
131
+ owner: 'synthetic-baseline',
132
+ runtimeKind: 'test-double',
133
+ pollIntervalMs: 50,
134
+ timeoutMs: 10000,
135
+ });
136
+ const routerRunner = new DiagRouterRunner({
137
+ stateManager,
55
138
  runtimeAdapter,
56
139
  eventEmitter,
57
- validator,
140
+ artifactStore: stateManager.piArtifactStore,
58
141
  committer,
59
142
  }, {
60
143
  owner: 'synthetic-baseline',
@@ -62,6 +145,14 @@ export async function runSyntheticBaseline(opts) {
62
145
  pollIntervalMs: 50,
63
146
  timeoutMs: 10000,
64
147
  });
148
+ const runner = new SplitDiagnosticianRunner({
149
+ rootCauseRunner,
150
+ distillerRunner,
151
+ routerRunner,
152
+ stateManager,
153
+ committer,
154
+ perStageTimeoutMs: 10000,
155
+ });
65
156
  const ledgerAdapter = new PrincipleTreeLedgerAdapter({ stateDir });
66
157
  const intakeService = new CandidateIntakeService({ stateManager, ledgerAdapter });
67
158
  const bridge = new PainSignalBridge({
@@ -1 +1 @@
1
- {"version":3,"file":"synthetic-baseline-runner.js","sourceRoot":"","sources":["../../src/services/synthetic-baseline-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synthetic-baseline-runner.js","sourceRoot":"","sources":["../../src/services/synthetic-baseline-runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principles/pd-cli",
3
- "version": "1.93.0",
3
+ "version": "1.95.0",
4
4
  "description": "PD CLI — Pain recording, sample management, and evolution tasks",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,8 +14,14 @@ import {
14
14
  SqliteSourceTraceLocator,
15
15
  StoreEventEmitter,
16
16
  storeEmitter,
17
- DiagnosticianRunner,
18
- DefaultDiagnosticianValidator,
17
+ SplitDiagnosticianRunner,
18
+ DiagRootCauseRunner,
19
+ DiagDistillerRunner,
20
+ DiagRouterRunner,
21
+ DefaultDiagRootCauseValidator,
22
+ DefaultDiagDistillerValidator,
23
+ DisabledDiagnosticianRunner,
24
+ type DiagnosticianRunnerLike,
19
25
  TestDoubleRuntimeAdapter,
20
26
  OpenClawCliRuntimeAdapter,
21
27
  PiAiRuntimeAdapter,
@@ -295,24 +301,32 @@ export async function handleDiagnoseRun(opts: DiagnoseRunOptions): Promise<void>
295
301
  const isSplitPipeline = isFeatureEnabled(featureFlags, 'diagnostician_split_pipeline');
296
302
  const pipelineTimeoutMs = isSplitPipeline ? SPLIT_PIPELINE_TOTAL_TIMEOUT_MS : 300_000;
297
303
 
298
- const runner = new DiagnosticianRunner(
299
- {
304
+ let runner: DiagnosticianRunnerLike;
305
+ if (isSplitPipeline) {
306
+ const rootCauseRunner = new DiagRootCauseRunner(
307
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, validator: new DefaultDiagRootCauseValidator(), contextAssembler },
308
+ { owner: 'pd-cli-diagnose', runtimeKind, outputLanguage },
309
+ );
310
+ const distillerRunner = new DiagDistillerRunner(
311
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, validator: new DefaultDiagDistillerValidator() },
312
+ { owner: 'pd-cli-diagnose', runtimeKind, outputLanguage },
313
+ );
314
+ const routerRunner = new DiagRouterRunner(
315
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, committer },
316
+ { owner: 'pd-cli-diagnose', runtimeKind, outputLanguage },
317
+ );
318
+
319
+ runner = new SplitDiagnosticianRunner({
320
+ rootCauseRunner,
321
+ distillerRunner,
322
+ routerRunner,
300
323
  stateManager,
301
- contextAssembler,
302
- runtimeAdapter,
303
- eventEmitter,
304
- validator: new DefaultDiagnosticianValidator(),
305
324
  committer,
306
- },
307
- {
308
- owner: 'pd-cli-diagnose',
309
- runtimeKind,
310
- pollIntervalMs: 100,
311
- timeoutMs: pipelineTimeoutMs,
312
- agentId: opts.agent,
313
- outputLanguage,
314
- },
315
- );
325
+ perStageTimeoutMs: pipelineTimeoutMs / 3,
326
+ });
327
+ } else {
328
+ runner = new DisabledDiagnosticianRunner();
329
+ }
316
330
 
317
331
  if (!opts.json) {
318
332
  console.log(`\nRunning diagnostician for task: ${opts.taskId}`);
@@ -163,12 +163,23 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
163
163
 
164
164
  if (result.message) console.error(` Details: ${result.message}`);
165
165
  process.exit(1);
166
+ return;
166
167
  }
167
168
  }
168
169
 
169
170
  if (opts.json) {
170
- console.log(JSON.stringify(result, null, 2));
171
- if (result.status !== 'succeeded' && result.status !== 'skipped' && result.status !== 'retried' && result.status !== 'submitted') process.exit(1);
171
+ const out = { ...result };
172
+ // Ensure nextAction is present for actionable states
173
+ if (out.status === 'submitted') {
174
+ if (!out.nextAction) {
175
+ out.nextAction = `pd diagnose run --task-id ${out.taskId} --workspace "${workspaceDir}"`;
176
+ }
177
+ }
178
+ console.log(JSON.stringify(out, null, 2));
179
+ if (result.status !== 'succeeded' && result.status !== 'skipped' && result.status !== 'retried' && result.status !== 'submitted') {
180
+ process.exit(1);
181
+ return;
182
+ }
172
183
  } else {
173
184
  if (result.status === 'succeeded') {
174
185
  console.log('[OK] Pain signal recorded via PainToPrincipleService');
@@ -190,7 +201,7 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
190
201
  console.log(` Pain ID: ${result.painId}`);
191
202
  console.log(` Task ID: ${result.taskId}`);
192
203
  console.log(` Status: submitted`);
193
- console.log(` Next action: pd task show ${result.taskId} --workspace "${workspaceDir}"`);
204
+ console.log(` Next action: pd diagnose run --task-id ${result.taskId} --workspace "${workspaceDir}"`);
194
205
  if (result.latencyMs !== undefined) console.log(` Submit latency: ${result.latencyMs}ms`);
195
206
  } else if (result.status === 'skipped') {
196
207
  console.log(`[SKIP] Task already in progress: ${result.message ?? 'unknown'}`);
@@ -203,6 +214,7 @@ export async function handlePainRecord(opts: RecordOptions): Promise<void> {
203
214
  } else {
204
215
  console.error('[FAIL] Pain signal failed:', result.message);
205
216
  process.exit(1);
217
+ return;
206
218
  }
207
219
  }
208
220
  }
@@ -18,8 +18,14 @@ import {
18
18
  SqliteTrajectoryLocator,
19
19
  SqliteSourceTraceLocator,
20
20
  StoreEventEmitter,
21
- DiagnosticianRunner,
22
- DefaultDiagnosticianValidator,
21
+ SplitDiagnosticianRunner,
22
+ DiagRootCauseRunner,
23
+ DiagDistillerRunner,
24
+ DiagRouterRunner,
25
+ DefaultDiagRootCauseValidator,
26
+ DefaultDiagDistillerValidator,
27
+ DisabledDiagnosticianRunner,
28
+ type DiagnosticianRunnerLike,
23
29
  TestDoubleRuntimeAdapter,
24
30
  OpenClawCliRuntimeAdapter,
25
31
  PiAiRuntimeAdapter,
@@ -28,8 +34,11 @@ import {
28
34
  isRuntimeConfigError,
29
35
  CandidateIntakeService,
30
36
  run as diagnoseRun,
37
+ isFeatureEnabled,
38
+ SPLIT_PIPELINE_TOTAL_TIMEOUT_MS,
31
39
  } from '@principles/core/runtime-v2';
32
40
  import type { PDRuntimeAdapter, RuntimeConfig, OutputLanguage } from '@principles/core/runtime-v2';
41
+ import { loadPdConfig, computeFlagsFromLoadResult } from '../services/pd-config-loader.js';
33
42
  import type { PDTaskStatus } from '@principles/core/runtime-v2';
34
43
  import { PrincipleTreeLedgerAdapter } from '../principle-tree-ledger-adapter.js';
35
44
  import { readOutputLanguageFromWorkspace } from '../config-reader.js';
@@ -368,24 +377,38 @@ export async function handlePainRetry(opts: PainRetryOptions): Promise<void> {
368
377
  const outputLangResult = readOutputLanguageFromWorkspace(workspaceDir);
369
378
  const outputLanguage: OutputLanguage | undefined = outputLangResult.outputLanguage;
370
379
 
371
- const runner = new DiagnosticianRunner(
372
- {
380
+ // Check if split pipeline is enabled — 3 serial LLM calls need more time
381
+ const configLoadResult = loadPdConfig(workspaceDir);
382
+ const featureFlags = computeFlagsFromLoadResult(configLoadResult);
383
+ const isSplitPipeline = isFeatureEnabled(featureFlags, 'diagnostician_split_pipeline');
384
+ const pipelineTimeoutMs = isSplitPipeline ? SPLIT_PIPELINE_TOTAL_TIMEOUT_MS : 300_000;
385
+
386
+ let runner: DiagnosticianRunnerLike;
387
+ if (isSplitPipeline) {
388
+ const rootCauseRunner = new DiagRootCauseRunner(
389
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, validator: new DefaultDiagRootCauseValidator(), contextAssembler },
390
+ { owner: 'pd-cli-pain-retry', runtimeKind, outputLanguage },
391
+ );
392
+ const distillerRunner = new DiagDistillerRunner(
393
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, validator: new DefaultDiagDistillerValidator() },
394
+ { owner: 'pd-cli-pain-retry', runtimeKind, outputLanguage },
395
+ );
396
+ const routerRunner = new DiagRouterRunner(
397
+ { stateManager, runtimeAdapter, eventEmitter, artifactStore: stateManager.piArtifactStore, committer },
398
+ { owner: 'pd-cli-pain-retry', runtimeKind, outputLanguage },
399
+ );
400
+
401
+ runner = new SplitDiagnosticianRunner({
402
+ rootCauseRunner,
403
+ distillerRunner,
404
+ routerRunner,
373
405
  stateManager,
374
- contextAssembler,
375
- runtimeAdapter,
376
- eventEmitter,
377
- validator: new DefaultDiagnosticianValidator(),
378
406
  committer,
379
- },
380
- {
381
- owner: 'pd-cli-pain-retry',
382
- runtimeKind,
383
- pollIntervalMs: 100,
384
- timeoutMs: 300_000,
385
- agentId: opts.agent,
386
- outputLanguage,
387
- },
388
- );
407
+ perStageTimeoutMs: pipelineTimeoutMs / 3,
408
+ });
409
+ } else {
410
+ runner = new DisabledDiagnosticianRunner();
411
+ }
389
412
 
390
413
  if (!opts.json) {
391
414
  console.log(`\nRetrying diagnosis for pain: ${opts.painId}`);
@@ -56,7 +56,7 @@ const PORT_FALLBACK_LIMIT = 20; // try 3100..3119 before giving up
56
56
 
57
57
  /** Returns true if the host resolves to a loopback address. */
58
58
  export function isLoopbackHost(host: string): boolean {
59
- if (host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]') return true;
59
+ if (host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]' || host === '0:0:0:0:0:0:0:1' || host === '[0:0:0:0:0:0:0:1]') return true;
60
60
  // Reject any IPv4 host that doesn't start with 127.
61
61
  if (/^127\./.test(host)) return true;
62
62
  return false;
@@ -4,8 +4,14 @@ import { RuntimeStateManager } from '@principles/core/runtime-v2';
4
4
  import { SqliteContextAssembler } from '@principles/core/runtime-v2';
5
5
  import { SqliteHistoryQuery } from '@principles/core/runtime-v2';
6
6
  import { StoreEventEmitter } from '@principles/core/runtime-v2';
7
- import { DiagnosticianRunner } from '@principles/core/runtime-v2';
8
- import { PassThroughValidator } from '@principles/core/runtime-v2';
7
+ import {
8
+ SplitDiagnosticianRunner,
9
+ DiagRootCauseRunner,
10
+ DiagDistillerRunner,
11
+ DiagRouterRunner,
12
+ DefaultDiagRootCauseValidator,
13
+ DefaultDiagDistillerValidator,
14
+ } from '@principles/core/runtime-v2';
9
15
  import { SqliteDiagnosticianCommitter } from '@principles/core/runtime-v2';
10
16
  import { TestDoubleRuntimeAdapter } from '@principles/core/runtime-v2';
11
17
  import { PainSignalBridge } from '@principles/core/runtime-v2';
@@ -170,23 +176,107 @@ export async function runPainFloodSimulation(opts: PainFloodSimulationRunnerOpti
170
176
  const contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
171
177
  const eventEmitter = new StoreEventEmitter();
172
178
  const committer = new SqliteDiagnosticianCommitter(sqliteConn);
173
- const validator = new PassThroughValidator();
179
+ const runIdToTaskId = new Map<string, string>();
180
+ let runCounter = 0;
174
181
 
175
- // Single test-double adapter handles all pains with deterministic output
182
+ // Single test-double adapter handles all pains with stage-aware output
176
183
  const runtimeAdapter = new TestDoubleRuntimeAdapter({
177
- onFetchOutput: (runId: string) => ({
178
- runId,
179
- payload: makeDeterministicDiagnosticianOutput(runId),
180
- }),
184
+ onStartRun: (input) => {
185
+ runCounter += 1;
186
+ const runId = `td-${runCounter}`;
187
+ const taskId = input.taskRef?.taskId ?? '';
188
+ runIdToTaskId.set(runId, taskId);
189
+ return {
190
+ runId,
191
+ runtimeKind: 'test-double',
192
+ startedAt: new Date().toISOString(),
193
+ };
194
+ },
195
+ onFetchOutput: async (runId: string) => {
196
+ const taskId = runIdToTaskId.get(runId) ?? '';
197
+ if (taskId.includes('diag_rootcause')) {
198
+ return {
199
+ runId,
200
+ payload: {
201
+ valid: true,
202
+ diagnosisId: `diag-${runId}`,
203
+ taskId,
204
+ summary: 'Mock rootcause summary for pain-flood-simulation',
205
+ causalChain: [{ why: 1, statement: 'why', evidenceRefs: ['ref-1'] }],
206
+ rootCause: 'Design: Mock rootcause',
207
+ rootCauseCategory: 'Design',
208
+ evidence: [{ sourceRef: 'ref-1', note: 'note' }],
209
+ confidence: 0.9,
210
+ },
211
+ };
212
+ } else if (taskId.includes('diag_distiller')) {
213
+ const parentTaskId = taskId.replace('diag_distiller-', '');
214
+ const stageATaskId = `diag_rootcause-${parentTaskId}`;
215
+ const artifacts = stateManager
216
+ ? await stateManager.piArtifactStore.listBySourceTaskId(stageATaskId)
217
+ : [];
218
+ const sourceRootCauseArtifactId = artifacts[0]?.artifactId ?? 'art-rc';
219
+ return {
220
+ runId,
221
+ payload: {
222
+ valid: true,
223
+ taskId,
224
+ sourceRootCauseArtifactId,
225
+ abstractedPrinciple: 'Mock abstracted principle',
226
+ rationale: 'Mock rationale',
227
+ groundedOnCorePrincipleIds: ['T-01'],
228
+ scope: 'domain',
229
+ confidence: 0.9,
230
+ },
231
+ };
232
+ } else {
233
+ return {
234
+ runId,
235
+ payload: makeDeterministicDiagnosticianOutput(runId),
236
+ };
237
+ }
238
+ },
181
239
  });
182
240
 
183
- const runner = new DiagnosticianRunner(
241
+ const rootCauseRunner = new DiagRootCauseRunner(
184
242
  {
185
243
  stateManager,
244
+ runtimeAdapter,
245
+ eventEmitter,
246
+ artifactStore: stateManager.piArtifactStore,
247
+ validator: new DefaultDiagRootCauseValidator(),
186
248
  contextAssembler,
249
+ },
250
+ {
251
+ owner: 'pain-flood-simulation',
252
+ runtimeKind: 'test-double',
253
+ pollIntervalMs: 50,
254
+ timeoutMs: 10000,
255
+ },
256
+ );
257
+
258
+ const distillerRunner = new DiagDistillerRunner(
259
+ {
260
+ stateManager,
187
261
  runtimeAdapter,
188
262
  eventEmitter,
189
- validator,
263
+ artifactStore: stateManager.piArtifactStore,
264
+ validator: new DefaultDiagDistillerValidator(),
265
+ },
266
+ {
267
+ owner: 'pain-flood-simulation',
268
+ runtimeKind: 'test-double',
269
+ pollIntervalMs: 50,
270
+ timeoutMs: 10000,
271
+ },
272
+ );
273
+
274
+ const routerRunner = new DiagRouterRunner(
275
+ {
276
+ stateManager,
277
+ runtimeAdapter,
278
+ eventEmitter,
279
+ artifactStore: stateManager.piArtifactStore,
190
280
  committer,
191
281
  },
192
282
  {
@@ -197,6 +287,15 @@ export async function runPainFloodSimulation(opts: PainFloodSimulationRunnerOpti
197
287
  },
198
288
  );
199
289
 
290
+ const runner = new SplitDiagnosticianRunner({
291
+ rootCauseRunner,
292
+ distillerRunner,
293
+ routerRunner,
294
+ stateManager,
295
+ committer,
296
+ perStageTimeoutMs: 10000,
297
+ });
298
+
200
299
  const ledgerAdapter = new PrincipleTreeLedgerAdapter({ stateDir });
201
300
  const intakeService = new CandidateIntakeService({ stateManager, ledgerAdapter });
202
301