@principles/core 1.177.4 → 1.177.6

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pain-signal-bridge-result-shaping.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pain-signal-bridge-result-shaping.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,395 @@
1
+ /**
2
+ * PRI-456: Characterization test for PainSignalBridge result-shaping.
3
+ *
4
+ * Pins the full PainSignalBridgeResult status matrix for both:
5
+ * - onDiagnosisComplete() (fresh diagnosis path)
6
+ * - buildExistingResult() (idempotent existing-task path)
7
+ *
8
+ * This test MUST remain green before and after the refactor that extracts
9
+ * a pure shapeBridgeResult() function. If any assertion changes, it is a
10
+ * behavior change — STOP.
11
+ *
12
+ * ERR gate:
13
+ * - ERR-007 / EP-02: single source for status decision (test proves both paths)
14
+ * - ERR-002 / EP-03: every degraded/failed branch keeps its structured message
15
+ * - ERR-004 / ERR-008 / EP-07: lineage fields come from the same source rows
16
+ */
17
+ import { describe, it, expect } from 'vitest';
18
+ import { PainSignalBridge } from '../pain-signal-bridge.js';
19
+ const PAIN_ID = 'pain-char-001';
20
+ const TASK_ID = 'diagnosis_pain-char-001';
21
+ const RUN_ID = 'run-char-1';
22
+ // ── Factory helpers ──────────────────────────────────────────────────────────
23
+ function makeCandidate(id, kind, overrides = {}) {
24
+ return {
25
+ candidateId: id,
26
+ taskId: TASK_ID,
27
+ artifactId: `artifact-${id}`,
28
+ sourceRunId: `run-${id}`,
29
+ title: `Candidate ${id}`,
30
+ description: `Description for ${id}`,
31
+ confidence: 0.85,
32
+ sourceRecommendationJson: '{}',
33
+ recommendationKind: kind,
34
+ status: 'pending',
35
+ createdAt: '2026-06-24T00:00:00.000Z',
36
+ ...overrides,
37
+ };
38
+ }
39
+ function makeLedgerEntry(candidateId) {
40
+ return {
41
+ id: `ledger-${candidateId}`,
42
+ status: 'probation',
43
+ createdAt: '2026-06-24T00:00:00.000Z',
44
+ text: `Principle text for ${candidateId}`,
45
+ sourceRef: `candidate://${candidateId}`,
46
+ title: `Principle ${candidateId}`,
47
+ evaluability: 'weak_heuristic',
48
+ };
49
+ }
50
+ function makeHighConfidenceOutput() {
51
+ return {
52
+ valid: true,
53
+ diagnosisId: 'diag-high',
54
+ summary: 'Valid diagnosis with sufficient evidence',
55
+ rootCause: 'Identified root cause from session trace',
56
+ violatedPrinciples: [],
57
+ evidence: [{ sourceRef: 'session-trace-1', note: 'Owner confirmed behavior' }],
58
+ recommendations: [{ kind: 'principle', description: 'Valid principle from evidence' }],
59
+ confidence: 0.85,
60
+ };
61
+ }
62
+ function makeLowConfidenceOutput() {
63
+ return {
64
+ valid: true,
65
+ diagnosisId: 'diag-low',
66
+ summary: 'Low confidence diagnosis',
67
+ rootCause: 'Insufficient evidence',
68
+ violatedPrinciples: [],
69
+ evidence: [],
70
+ recommendations: [{ kind: 'principle', description: 'Low confidence principle' }],
71
+ confidence: 0.3,
72
+ };
73
+ }
74
+ function makeMockDeps(overrides) {
75
+ const telemetryEvents = [];
76
+ const createTaskCalls = [];
77
+ const updateCandidateStatusCalls = [];
78
+ const createTaskMock = async (input) => {
79
+ createTaskCalls.push(input);
80
+ if (overrides.createTaskFn)
81
+ return overrides.createTaskFn(input);
82
+ return { taskId: 'mock-task' };
83
+ };
84
+ const getTaskMock = overrides.getTaskFn ?? (async () => null);
85
+ const updateCandidateStatusMock = async (candidateId, patch) => {
86
+ updateCandidateStatusCalls.push({ candidateId, patch });
87
+ };
88
+ const stateManager = {
89
+ getTask: getTaskMock,
90
+ createTask: createTaskMock,
91
+ updateTask: async () => undefined,
92
+ getCandidatesByTaskId: async () => overrides.candidates ?? [],
93
+ getRunsByTask: async () => [{ runId: RUN_ID, taskId: TASK_ID, status: 'succeeded' }],
94
+ updateCandidateStatus: updateCandidateStatusMock,
95
+ };
96
+ const intakeService = {
97
+ intake: async (candidateId) => ({ id: `ledger-${candidateId}` }),
98
+ };
99
+ const ledgerEntries = overrides.ledgerEntries ?? new Map();
100
+ const ledgerAdapter = {
101
+ existsForCandidate: (candidateId) => ledgerEntries.get(candidateId) ?? null,
102
+ };
103
+ const runner = {
104
+ run: async () => ({
105
+ status: 'succeeded',
106
+ taskId: TASK_ID,
107
+ attemptCount: 1,
108
+ output: overrides.output ?? makeHighConfidenceOutput(),
109
+ }),
110
+ };
111
+ return {
112
+ stateManager,
113
+ intakeService,
114
+ ledgerAdapter,
115
+ runner,
116
+ telemetryEvents,
117
+ createTaskCalls,
118
+ updateCandidateStatusCalls,
119
+ };
120
+ }
121
+ function createBridge(deps, autoIntakeEnabled = true) {
122
+ return new PainSignalBridge({
123
+ stateManager: deps.stateManager,
124
+ runner: deps.runner,
125
+ intakeService: deps.intakeService,
126
+ ledgerAdapter: deps.ledgerAdapter,
127
+ autoIntakeEnabled,
128
+ eventEmitter: {
129
+ emitTelemetry: (event) => {
130
+ deps.telemetryEvents.push(event);
131
+ },
132
+ },
133
+ });
134
+ }
135
+ const PROVENANCE = 'openclaw_context_bound';
136
+ // ── onDiagnosisComplete() characterization ───────────────────────────────────
137
+ describe('PRI-456: onDiagnosisComplete result-shaping characterization', () => {
138
+ it('succeeded: 1 admitted candidate with ledger entry and successful dreamer seed', async () => {
139
+ const candidates = [makeCandidate('c1', 'principle')];
140
+ const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
141
+ const bridge = createBridge(deps);
142
+ const result = await bridge.onDiagnosisComplete({
143
+ taskId: TASK_ID,
144
+ diagnosticianOutput: makeHighConfidenceOutput(),
145
+ painId: PAIN_ID,
146
+ provenance: PROVENANCE,
147
+ inputEvidenceCount: 1,
148
+ });
149
+ expect(result.status).toBe('succeeded');
150
+ expect(result.painId).toBe(PAIN_ID);
151
+ expect(result.taskId).toBe(TASK_ID);
152
+ expect(result.runId).toBe(RUN_ID);
153
+ expect(result.artifactId).toBe('artifact-c1');
154
+ expect(result.candidateIds).toEqual(['c1']);
155
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
156
+ expect(result.admissionResults).toBeDefined();
157
+ expect(result.admissionResults).toHaveLength(1);
158
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
159
+ expect(result.message).toBeUndefined();
160
+ });
161
+ it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
162
+ const candidates = [makeCandidate('c1', 'principle')];
163
+ const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
164
+ const bridge = createBridge(deps, false);
165
+ const result = await bridge.onDiagnosisComplete({
166
+ taskId: TASK_ID,
167
+ diagnosticianOutput: makeHighConfidenceOutput(),
168
+ painId: PAIN_ID,
169
+ provenance: PROVENANCE,
170
+ inputEvidenceCount: 1,
171
+ });
172
+ expect(result.status).toBe('succeeded');
173
+ expect(result.candidateIds).toEqual(['c1']);
174
+ expect(result.ledgerEntryIds).toEqual([]);
175
+ expect(result.admissionResults).toBeDefined();
176
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
177
+ expect(result.message).toBeUndefined();
178
+ });
179
+ it('failed: no candidates — "Diagnostician succeeded but produced no principle candidates"', async () => {
180
+ const deps = makeMockDeps({ candidates: [], output: makeHighConfidenceOutput() });
181
+ const bridge = createBridge(deps);
182
+ const result = await bridge.onDiagnosisComplete({
183
+ taskId: TASK_ID,
184
+ diagnosticianOutput: makeHighConfidenceOutput(),
185
+ painId: PAIN_ID,
186
+ provenance: PROVENANCE,
187
+ inputEvidenceCount: 1,
188
+ });
189
+ expect(result.status).toBe('failed');
190
+ expect(result.painId).toBe(PAIN_ID);
191
+ expect(result.taskId).toBe(TASK_ID);
192
+ expect(result.runId).toBe(RUN_ID);
193
+ expect(result.artifactId).toBeUndefined();
194
+ expect(result.candidateIds).toEqual([]);
195
+ expect(result.ledgerEntryIds).toEqual([]);
196
+ expect(result.admissionResults).toEqual([]);
197
+ expect(result.message).toBe('Diagnostician succeeded but produced no principle candidates');
198
+ });
199
+ it('degraded: all_candidates_gated — 1 candidate, low confidence, not admitted', async () => {
200
+ const candidates = [makeCandidate('c-gated', 'principle')];
201
+ const deps = makeMockDeps({ candidates, output: makeLowConfidenceOutput() });
202
+ const bridge = createBridge(deps);
203
+ const result = await bridge.onDiagnosisComplete({
204
+ taskId: TASK_ID,
205
+ diagnosticianOutput: makeLowConfidenceOutput(),
206
+ painId: PAIN_ID,
207
+ provenance: PROVENANCE,
208
+ inputEvidenceCount: 1,
209
+ });
210
+ expect(result.status).toBe('degraded');
211
+ expect(result.candidateIds).toEqual(['c-gated']);
212
+ expect(result.ledgerEntryIds).toEqual([]);
213
+ expect(result.admissionResults).toBeDefined();
214
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
215
+ expect(result.message).toContain('all_candidates_gated');
216
+ expect(result.message).toContain('c-gated=needs_evidence');
217
+ });
218
+ it('degraded: partial_admission — 2 candidates, 1 admitted, 1 deferred', async () => {
219
+ // To get partial admission, one candidate must be admitted (principle, high confidence)
220
+ // and one must be non-admitted (defer kind → always deferred regardless of confidence).
221
+ const candidatesPartial = [
222
+ makeCandidate('c-ok', 'principle'),
223
+ makeCandidate('c-defer', 'defer'),
224
+ ];
225
+ const deps = makeMockDeps({ candidates: candidatesPartial, output: makeHighConfidenceOutput() });
226
+ const bridge = createBridge(deps);
227
+ const result = await bridge.onDiagnosisComplete({
228
+ taskId: TASK_ID,
229
+ diagnosticianOutput: makeHighConfidenceOutput(),
230
+ painId: PAIN_ID,
231
+ provenance: PROVENANCE,
232
+ inputEvidenceCount: 1,
233
+ });
234
+ expect(result.status).toBe('degraded');
235
+ expect(result.candidateIds).toEqual(['c-ok', 'c-defer']);
236
+ expect(result.ledgerEntryIds).toEqual(['ledger-c-ok']);
237
+ expect(result.admissionResults).toBeDefined();
238
+ expect(result.admissionResults).toHaveLength(2);
239
+ const admitted = result.admissionResults?.find((a) => a.candidateId === 'c-ok');
240
+ expect(admitted?.admission.decision).toBe('admitted');
241
+ const deferred = result.admissionResults?.find((a) => a.candidateId === 'c-defer');
242
+ expect(deferred?.admission.decision).toBe('deferred');
243
+ expect(result.message).toContain('partial_admission');
244
+ expect(result.message).toContain('1_admitted_1_gated');
245
+ });
246
+ it('degraded: dreamer_seed_failed — admitted candidate, ledger created, dreamer seed throws', async () => {
247
+ const candidates = [makeCandidate('c-fail', 'principle')];
248
+ const deps = makeMockDeps({
249
+ candidates,
250
+ output: makeHighConfidenceOutput(),
251
+ createTaskFn: async (input) => {
252
+ if (input.taskKind === 'dreamer')
253
+ throw new Error('DB write failed');
254
+ return { taskId: input.taskId ?? 'mock-task' };
255
+ },
256
+ });
257
+ const bridge = createBridge(deps);
258
+ const result = await bridge.onDiagnosisComplete({
259
+ taskId: TASK_ID,
260
+ diagnosticianOutput: makeHighConfidenceOutput(),
261
+ painId: PAIN_ID,
262
+ provenance: PROVENANCE,
263
+ inputEvidenceCount: 1,
264
+ });
265
+ expect(result.status).toBe('degraded');
266
+ expect(result.candidateIds).toEqual(['c-fail']);
267
+ expect(result.ledgerEntryIds).toEqual(['ledger-c-fail']);
268
+ expect(result.message).toContain('dreamer_seed_failed:c-fail');
269
+ // The candidate should still be consumed despite seed failure
270
+ const consumedCall = deps.updateCandidateStatusCalls.find((c) => c.candidateId === 'c-fail');
271
+ expect(consumedCall).toBeDefined();
272
+ expect(consumedCall?.patch).toEqual({ status: 'consumed' });
273
+ });
274
+ it('degraded: all_candidates_gated with seed failure note appended', async () => {
275
+ // When all candidates are gated AND a seed failure occurs (shouldn't normally happen
276
+ // since seed only runs for admitted candidates, but test the message format)
277
+ const candidates = [makeCandidate('c-gated', 'principle')];
278
+ const deps = makeMockDeps({
279
+ candidates,
280
+ output: makeLowConfidenceOutput(),
281
+ });
282
+ const bridge = createBridge(deps);
283
+ const result = await bridge.onDiagnosisComplete({
284
+ taskId: TASK_ID,
285
+ diagnosticianOutput: makeLowConfidenceOutput(),
286
+ painId: PAIN_ID,
287
+ provenance: PROVENANCE,
288
+ inputEvidenceCount: 1,
289
+ });
290
+ // All gated → degraded, no seed failure (no admitted candidates to seed)
291
+ expect(result.status).toBe('degraded');
292
+ expect(result.message).toContain('all_candidates_gated');
293
+ expect(result.message).not.toContain('dreamer_seed_failed');
294
+ });
295
+ it('diagnosticianOutput=undefined: all candidates get needs_evidence → all_candidates_gated', async () => {
296
+ const candidates = [makeCandidate('c-undef', 'principle')];
297
+ const deps = makeMockDeps({ candidates });
298
+ const bridge = createBridge(deps);
299
+ const result = await bridge.onDiagnosisComplete({
300
+ taskId: TASK_ID,
301
+ diagnosticianOutput: undefined,
302
+ painId: PAIN_ID,
303
+ provenance: PROVENANCE,
304
+ inputEvidenceCount: 1,
305
+ });
306
+ expect(result.status).toBe('degraded');
307
+ expect(result.admissionResults).toBeDefined();
308
+ expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
309
+ expect(result.admissionResults?.[0]?.admission.reason).toBe('diagnostician_output_unavailable');
310
+ expect(result.message).toContain('all_candidates_gated');
311
+ });
312
+ });
313
+ // ── buildExistingResult() characterization ───────────────────────────────────
314
+ describe('PRI-456: buildExistingResult result-shaping characterization', () => {
315
+ it('succeeded: existing task with candidates and ledger entries', async () => {
316
+ const candidates = [makeCandidate('c1', 'principle')];
317
+ const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
318
+ const deps = makeMockDeps({ candidates, ledgerEntries });
319
+ const bridge = createBridge(deps);
320
+ const result = await bridge.buildExistingResult({
321
+ painId: PAIN_ID,
322
+ taskId: TASK_ID,
323
+ });
324
+ expect(result.status).toBe('succeeded');
325
+ expect(result.painId).toBe(PAIN_ID);
326
+ expect(result.taskId).toBe(TASK_ID);
327
+ expect(result.runId).toBe(RUN_ID);
328
+ expect(result.artifactId).toBe('artifact-c1');
329
+ expect(result.candidateIds).toEqual(['c1']);
330
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
331
+ expect(result.message).toBe('Task already succeeded');
332
+ });
333
+ it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
334
+ const candidates = [makeCandidate('c1', 'principle')];
335
+ const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
336
+ const bridge = createBridge(deps, false);
337
+ const result = await bridge.buildExistingResult({
338
+ painId: PAIN_ID,
339
+ taskId: TASK_ID,
340
+ });
341
+ expect(result.status).toBe('succeeded');
342
+ expect(result.candidateIds).toEqual(['c1']);
343
+ expect(result.ledgerEntryIds).toEqual([]);
344
+ expect(result.message).toBe('Task already succeeded');
345
+ });
346
+ it('failed: no candidates — "Task has no principle candidates — treating as failed"', async () => {
347
+ const deps = makeMockDeps({ candidates: [], ledgerEntries: new Map() });
348
+ const bridge = createBridge(deps);
349
+ const result = await bridge.buildExistingResult({
350
+ painId: PAIN_ID,
351
+ taskId: TASK_ID,
352
+ });
353
+ expect(result.status).toBe('failed');
354
+ expect(result.painId).toBe(PAIN_ID);
355
+ expect(result.taskId).toBe(TASK_ID);
356
+ expect(result.runId).toBe(RUN_ID);
357
+ expect(result.artifactId).toBeUndefined();
358
+ expect(result.candidateIds).toEqual([]);
359
+ expect(result.ledgerEntryIds).toEqual([]);
360
+ expect(result.message).toBe('Task has no principle candidates — treating as failed');
361
+ });
362
+ it('failed: no ledger entries with autoIntakeEnabled=true', async () => {
363
+ const candidates = [makeCandidate('c1', 'principle')];
364
+ const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
365
+ const bridge = createBridge(deps);
366
+ const result = await bridge.buildExistingResult({
367
+ painId: PAIN_ID,
368
+ taskId: TASK_ID,
369
+ });
370
+ expect(result.status).toBe('failed');
371
+ expect(result.runId).toBe(RUN_ID);
372
+ expect(result.artifactId).toBe('artifact-c1');
373
+ expect(result.candidateIds).toEqual(['c1']);
374
+ expect(result.ledgerEntryIds).toEqual([]);
375
+ expect(result.message).toBe('Candidate intake did not produce a ledger entry — treating as failed');
376
+ });
377
+ it('multiple candidates with mixed ledger existence — only existing ledgers counted', async () => {
378
+ const candidates = [
379
+ makeCandidate('c1', 'principle'),
380
+ makeCandidate('c2', 'principle'),
381
+ ];
382
+ const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
383
+ const deps = makeMockDeps({ candidates, ledgerEntries });
384
+ const bridge = createBridge(deps);
385
+ const result = await bridge.buildExistingResult({
386
+ painId: PAIN_ID,
387
+ taskId: TASK_ID,
388
+ });
389
+ expect(result.status).toBe('succeeded');
390
+ expect(result.candidateIds).toEqual(['c1', 'c2']);
391
+ expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
392
+ expect(result.message).toBe('Task already succeeded');
393
+ });
394
+ });
395
+ //# sourceMappingURL=pain-signal-bridge-result-shaping.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pain-signal-bridge-result-shaping.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * PRI-456: Pure result-shaping function for PainSignalBridge.
3
+ *
4
+ * Extracts the duplicated status-decision tree from:
5
+ * - PainSignalBridge.onDiagnosisComplete() (fresh diagnosis path)
6
+ * - PainSignalBridge.buildExistingResult() (idempotent existing-task path)
7
+ *
8
+ * Both paths decide: no candidates → failed; admitted-but-no-ledger → failed;
9
+ * gated/partial → degraded; otherwise succeeded. But they differ in message
10
+ * strings and the fresh path has admission results + degraded states.
11
+ *
12
+ * This function is pure: zero I/O, zero side effects. Callers pass all
13
+ * computed values; the function never re-derives lineage fields.
14
+ *
15
+ * ERR gate:
16
+ * - ERR-007 / EP-02: single source for status decision — branches can't diverge
17
+ * - ERR-002 / EP-03: every degraded/failed branch keeps its structured message
18
+ * - ERR-004 / ERR-008 / EP-07: lineage fields are received, never re-derived
19
+ */
20
+ import type { PainSignalBridgeResult } from './pain-signal-bridge.js';
21
+ import type { CandidateAdmissionResult } from './admission-gate.js';
22
+ /** Base fields shared by both fresh and existing paths. */
23
+ interface ShapeBridgeResultBase {
24
+ painId: string;
25
+ taskId: string;
26
+ candidateIds: string[];
27
+ ledgerEntryIds: string[];
28
+ runId?: string;
29
+ artifactId?: string;
30
+ autoIntakeEnabled: boolean;
31
+ }
32
+ /** Fresh diagnosis path — has admission results and seed failure notes. */
33
+ export interface ShapeBridgeResultFreshInput extends ShapeBridgeResultBase {
34
+ path: 'fresh';
35
+ admissionResults: CandidateAdmissionResult[];
36
+ /** Non-empty string when dreamer seed failed; empty string otherwise. */
37
+ seedFailureNote: string;
38
+ }
39
+ /** Existing-task idempotent path — ledger-existence-derived, no admissions. */
40
+ export interface ShapeBridgeResultExistingInput extends ShapeBridgeResultBase {
41
+ path: 'existing';
42
+ }
43
+ export type ShapeBridgeResultInput = ShapeBridgeResultFreshInput | ShapeBridgeResultExistingInput;
44
+ /**
45
+ * Derive the final PainSignalBridgeResult from computed inputs.
46
+ *
47
+ * Byte-for-byte identical to the original inline logic in both call sites.
48
+ * The `path` discriminator selects the appropriate message strings and
49
+ * decision branches.
50
+ */
51
+ export declare function shapeBridgeResult(input: ShapeBridgeResultInput): PainSignalBridgeResult;
52
+ export {};
53
+ //# sourceMappingURL=bridge-result-shaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-result-shaper.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/bridge-result-shaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,2DAA2D;AAC3D,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;IAC7C,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,8BAA+B,SAAQ,qBAAqB;IAC3E,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAC9B,2BAA2B,GAC3B,8BAA8B,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB,CAoHvF"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Derive the final PainSignalBridgeResult from computed inputs.
3
+ *
4
+ * Byte-for-byte identical to the original inline logic in both call sites.
5
+ * The `path` discriminator selects the appropriate message strings and
6
+ * decision branches.
7
+ */
8
+ export function shapeBridgeResult(input) {
9
+ const { painId, taskId, candidateIds, ledgerEntryIds, runId, artifactId, autoIntakeEnabled } = input;
10
+ // Common: no candidates → failed (message differs by path)
11
+ if (candidateIds.length === 0) {
12
+ if (input.path === 'fresh') {
13
+ return {
14
+ status: 'failed',
15
+ painId,
16
+ taskId,
17
+ runId,
18
+ candidateIds,
19
+ ledgerEntryIds,
20
+ admissionResults: input.admissionResults,
21
+ message: 'Diagnostician succeeded but produced no principle candidates',
22
+ };
23
+ }
24
+ return {
25
+ status: 'failed',
26
+ painId,
27
+ taskId,
28
+ runId,
29
+ candidateIds,
30
+ ledgerEntryIds,
31
+ message: 'Task has no principle candidates — treating as failed',
32
+ };
33
+ }
34
+ if (input.path === 'fresh') {
35
+ const { admissionResults, seedFailureNote } = input;
36
+ const admittedCount = admissionResults.filter((a) => a.admission.decision === 'admitted').length;
37
+ const nonAdmittedCount = admissionResults.length - admittedCount;
38
+ // Admitted candidates exist but intake produced no ledger entries
39
+ if (autoIntakeEnabled && admittedCount > 0 && ledgerEntryIds.length === 0) {
40
+ return {
41
+ status: 'failed',
42
+ painId,
43
+ taskId,
44
+ runId,
45
+ artifactId,
46
+ candidateIds,
47
+ ledgerEntryIds,
48
+ admissionResults,
49
+ message: 'Candidate intake did not produce a ledger entry',
50
+ };
51
+ }
52
+ // All candidates gated (none admitted)
53
+ if (nonAdmittedCount > 0 && admittedCount === 0) {
54
+ return {
55
+ status: 'degraded',
56
+ painId,
57
+ taskId,
58
+ runId,
59
+ artifactId,
60
+ candidateIds,
61
+ ledgerEntryIds,
62
+ admissionResults,
63
+ message: `all_candidates_gated:${admissionResults.map((a) => `${a.candidateId}=${a.admission.decision}`).join(',')}${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
64
+ };
65
+ }
66
+ // Partial admission (some admitted, some gated)
67
+ if (nonAdmittedCount > 0 && admittedCount > 0) {
68
+ return {
69
+ status: 'degraded',
70
+ painId,
71
+ taskId,
72
+ runId,
73
+ artifactId,
74
+ candidateIds,
75
+ ledgerEntryIds,
76
+ admissionResults,
77
+ message: `partial_admission:${admittedCount}_admitted_${nonAdmittedCount}_gated${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
78
+ };
79
+ }
80
+ // Success (or degraded if seed failure occurred)
81
+ return {
82
+ status: seedFailureNote ? 'degraded' : 'succeeded',
83
+ painId,
84
+ taskId,
85
+ runId,
86
+ artifactId,
87
+ candidateIds,
88
+ ledgerEntryIds,
89
+ admissionResults,
90
+ message: seedFailureNote || undefined,
91
+ };
92
+ }
93
+ // Existing path: no admission results, simpler decision tree
94
+ if (autoIntakeEnabled && ledgerEntryIds.length === 0) {
95
+ return {
96
+ status: 'failed',
97
+ painId,
98
+ taskId,
99
+ runId,
100
+ artifactId,
101
+ candidateIds,
102
+ ledgerEntryIds,
103
+ message: 'Candidate intake did not produce a ledger entry — treating as failed',
104
+ };
105
+ }
106
+ return {
107
+ status: 'succeeded',
108
+ painId,
109
+ taskId,
110
+ runId,
111
+ artifactId,
112
+ candidateIds,
113
+ ledgerEntryIds,
114
+ message: 'Task already succeeded',
115
+ };
116
+ }
117
+ //# sourceMappingURL=bridge-result-shaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-result-shaper.js","sourceRoot":"","sources":["../../src/runtime-v2/bridge-result-shaper.ts"],"names":[],"mappings":"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"}
@@ -45,10 +45,6 @@ export { PassThroughDreamerValidator, DefaultDreamerValidator } from './dreamer-
45
45
  export type { DreamerRunnerResult, DreamerRunnerOptions, ResolvedDreamerRunnerOptions, } from './dreamer-runner.js';
46
46
  export { resolveDreamerRunnerOptions, DEFAULT_DREAMER_RUNNER_OPTIONS, } from './dreamer-runner.js';
47
47
  export { DreamerRunner } from './dreamer-runner.js';
48
- export type { PhilosopherOutputV1, PhilosopherPrincipleCandidate, PhilosopherValidationResult, PhilosopherValidator, } from './philosopher-output.js';
49
- export { DefaultPhilosopherValidator, } from './philosopher-output.js';
50
- export type { PhilosopherRunnerResultStatus, PhilosopherRunnerResult, PhilosopherRunnerOptions, ResolvedPhilosopherRunnerOptions, PhilosopherRunnerDeps, } from './philosopher-runner.js';
51
- export { PhilosopherRunner, resolvePhilosopherRunnerOptions, DEFAULT_PHILOSOPHER_RUNNER_OPTIONS, } from './philosopher-runner.js';
52
48
  export type { ScribeOutputV1, ScribePrincipleDraft, ScribeSourceTrace, ScribeValidationResult, ScribeValidator, } from './scribe-output.js';
53
49
  export { DefaultScribeValidator, } from './scribe-output.js';
54
50
  export type { ScribeRunnerResultStatus, ScribeRunnerResult, ScribeRunnerOptions, ResolvedScribeRunnerOptions, ScribeRunnerDeps, } from './scribe-runner.js';
@@ -57,18 +53,6 @@ export type { ArtificerRuleOutput, ArtificerSourceTrace, ArtificerValidationResu
57
53
  export { DefaultArtificerValidator, ArtificerRuleOutputSchema, ArtificerSourceTraceSchema, } from './artificer-output.js';
58
54
  export type { ArtificerRunnerResultStatus, ArtificerRunnerResult, ArtificerRunnerOptions, ResolvedArtificerRunnerOptions, ArtificerRunnerDeps, } from './artificer-runner.js';
59
55
  export { ArtificerRunner, resolveArtificerRunnerOptions, DEFAULT_ARTIFICER_RUNNER_OPTIONS, } from './artificer-runner.js';
60
- export type { EvaluatorEvaluation, EvaluatorSourceTrace, EvaluatorOutputV1, EvaluatorOutputV2, EvaluatorValidationResult, EvaluatorValidator, EvaluatorCodeReview, EvaluatorAdversarialResult, AdversarialCase, AdversarialFailedCase, AdversarialAttackType, } from './evaluator-output.js';
61
- export { DefaultEvaluatorValidator, EvaluatorOutputV1Schema, EvaluatorEvaluationSchema, EvaluatorSourceTraceSchema, EVALUATOR_DECISIONS, isEvaluatorOutputV2, } from './evaluator-output.js';
62
- export type { EvaluatorRunnerResultStatus, EvaluatorRunnerResult, EvaluatorRunnerOptions, ResolvedEvaluatorRunnerOptions, EvaluatorRunnerDeps, } from './evaluator-runner.js';
63
- export { EvaluatorRunner, resolveEvaluatorRunnerOptions, DEFAULT_EVALUATOR_RUNNER_OPTIONS, } from './evaluator-runner.js';
64
- export { EvaluatorPromptBuilder, EVALUATOR_PROTOCOL_INSTRUCTION, EVALUATOR_PROMPT_CONTRACT_VERSION, } from './evaluator-prompt-builder.js';
65
- export type { EvaluatorPromptBuilderInput, EvaluatorPromptInput, EvaluatorPromptBuildResult, } from './evaluator-prompt-builder.js';
66
- export type { RolloutReviewerReview, RolloutReviewerSourceTrace, RolloutReviewerOutputV1, RolloutReviewerValidationResult, RolloutReviewerValidator, } from './rollout-reviewer-output.js';
67
- export { DefaultRolloutReviewerValidator, RolloutReviewerOutputV1Schema, RolloutReviewerReviewSchema, RolloutReviewerSourceTraceSchema, ROLLOUT_REVIEWER_DECISIONS, } from './rollout-reviewer-output.js';
68
- export type { RolloutReviewerRunnerResultStatus, RolloutReviewerRunnerResult, RolloutReviewerRunnerOptions, ResolvedRolloutReviewerRunnerOptions, RolloutReviewerRunnerDeps, } from './rollout-reviewer-runner.js';
69
- export { RolloutReviewerRunner, resolveRolloutReviewerRunnerOptions, DEFAULT_ROLLOUT_REVIEWER_RUNNER_OPTIONS, } from './rollout-reviewer-runner.js';
70
- export { RolloutReviewerPromptBuilder, ROLLOUT_REVIEWER_PROTOCOL_INSTRUCTION, ROLLOUT_REVIEWER_PROMPT_CONTRACT_VERSION, } from './rollout-reviewer-prompt-builder.js';
71
- export type { RolloutReviewerPromptBuilderInput, RolloutReviewerPromptInput, RolloutReviewerPromptBuildResult, } from './rollout-reviewer-prompt-builder.js';
72
56
  export type { WakeOnceResult, NoReadyTasksResult, BlockedResult, DependencyFailedResult, LeasedResult, WouldLeaseResult, LeaseConflictResult, InvalidTaskMetadataResult, ProposalCreatedResult, ProposeNextTaskResult, CommitNextTaskResult, InternalizationOrchestratorOptions, InternalizationOrchestratorDeps, } from './internalization-orchestrator.js';
73
57
  export { InternalizationOrchestrator, WAKE_ONCE_DECISIONS } from './internalization-orchestrator.js';
74
58
  export type { PIArtifactRecord, PIArtifactStore } from './pi-artifact.js';