@principles/core 1.124.0 → 1.126.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.
Files changed (130) hide show
  1. package/dist/runtime-v2/__tests__/architecture-regression.test.js +5 -1
  2. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  3. package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +115 -21
  4. package/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
  5. package/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js.map +1 -1
  6. package/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js +7 -6
  7. package/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js.map +1 -1
  8. package/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js.map +1 -1
  9. package/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js.map +1 -1
  10. package/dist/runtime-v2/cli/diagnose.d.ts +2 -2
  11. package/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
  12. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +3 -3
  13. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  14. package/dist/runtime-v2/config/pd-config-defaults.js +2 -2
  15. package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  16. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts +1 -64
  17. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  18. package/dist/runtime-v2/diagnostician-prompt-builder.js +0 -186
  19. package/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  20. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +17 -30
  21. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  22. package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  23. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +3 -8
  24. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  25. package/dist/runtime-v2/index.d.ts +8 -7
  26. package/dist/runtime-v2/index.d.ts.map +1 -1
  27. package/dist/runtime-v2/index.js +8 -5
  28. package/dist/runtime-v2/index.js.map +1 -1
  29. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +108 -105
  30. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  31. package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js +3 -3
  32. package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js.map +1 -1
  33. package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -1
  34. package/dist/runtime-v2/internalization/split-diagnostician-runner.js +121 -52
  35. package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -1
  36. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +28 -21
  37. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
  38. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +10 -1
  39. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  40. package/dist/runtime-v2/pain-signal-runtime-factory.js +42 -40
  41. package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  42. package/dist/runtime-v2/pain-to-principle-service.d.ts +1 -0
  43. package/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  44. package/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  45. package/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts +0 -2
  48. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts.map +0 -1
  49. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js +0 -122
  50. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js.map +0 -1
  51. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts +0 -2
  52. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts.map +0 -1
  53. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js +0 -169
  54. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js.map +0 -1
  55. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts +0 -2
  56. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts.map +0 -1
  57. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +0 -462
  58. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +0 -1
  59. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +0 -13
  60. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +0 -1
  61. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +0 -97
  62. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +0 -1
  63. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts +0 -2
  64. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts.map +0 -1
  65. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js +0 -378
  66. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js.map +0 -1
  67. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts +0 -2
  68. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts.map +0 -1
  69. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +0 -682
  70. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +0 -1
  71. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts +0 -2
  72. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts.map +0 -1
  73. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js +0 -286
  74. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js.map +0 -1
  75. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts +0 -2
  76. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts.map +0 -1
  77. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js +0 -320
  78. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js.map +0 -1
  79. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts +0 -2
  80. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts.map +0 -1
  81. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js +0 -261
  82. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js.map +0 -1
  83. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts +0 -2
  84. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts.map +0 -1
  85. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js +0 -405
  86. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js.map +0 -1
  87. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts +0 -2
  88. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts.map +0 -1
  89. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js +0 -347
  90. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js.map +0 -1
  91. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts +0 -2
  92. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts.map +0 -1
  93. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js +0 -186
  94. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js.map +0 -1
  95. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts +0 -2
  96. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts.map +0 -1
  97. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js +0 -355
  98. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js.map +0 -1
  99. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts +0 -2
  100. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts.map +0 -1
  101. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +0 -486
  102. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +0 -1
  103. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts +0 -2
  104. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts.map +0 -1
  105. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js +0 -171
  106. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js.map +0 -1
  107. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts +0 -2
  108. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts.map +0 -1
  109. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +0 -175
  110. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +0 -1
  111. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts +0 -2
  112. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts.map +0 -1
  113. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js +0 -276
  114. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js.map +0 -1
  115. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts +0 -2
  116. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts.map +0 -1
  117. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js +0 -272
  118. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js.map +0 -1
  119. package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts +0 -2
  120. package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts.map +0 -1
  121. package/dist/runtime-v2/runner/__tests__/start-run-input.test.js +0 -67
  122. package/dist/runtime-v2/runner/__tests__/start-run-input.test.js.map +0 -1
  123. package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +0 -57
  124. package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +0 -1
  125. package/dist/runtime-v2/runner/diagnostician-runner-options.js +0 -21
  126. package/dist/runtime-v2/runner/diagnostician-runner-options.js.map +0 -1
  127. package/dist/runtime-v2/runner/diagnostician-runner.d.ts +0 -89
  128. package/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +0 -1
  129. package/dist/runtime-v2/runner/diagnostician-runner.js +0 -470
  130. package/dist/runtime-v2/runner/diagnostician-runner.js.map +0 -1
@@ -1,347 +0,0 @@
1
- /**
2
- * E2E m6-06 — OpenClawCliRuntimeAdapter + FakeCliProcessRunner
3
- *
4
- * Unit-level E2E with FakeCliProcessRunner — prove the openclaw-cli adapter path
5
- * works end-to-end without spawning a real openclaw binary.
6
- *
7
- * Covers:
8
- * E2EV-01: FakeCliProcessRunner proves adapter path (fake runner intercepts runCliProcess)
9
- * E2EV-02: Full chain task -> run -> DiagnosticianOutputV1 -> artifact -> candidates
10
- * E2EV-03: TestDoubleRuntimeAdapter regression (dual-track-e2e reference still passes)
11
- * HG-3: Both 'local' and 'gateway' runtimeModes produce correct CLI args
12
- *
13
- * Test file per m6-06-01-PLAN.md.
14
- * vi.mock pattern mirrors m5-05-e2e.test.ts setup.
15
- */
16
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
17
- import * as fs from 'fs';
18
- import * as path from 'path';
19
- import * as os from 'os';
20
- import { randomUUID } from 'node:crypto';
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 { OpenClawCliRuntimeAdapter } from '../../adapter/openclaw-cli-runtime-adapter.js';
29
- import { TestDoubleRuntimeAdapter } from '../../adapter/test-double-runtime-adapter.js';
30
- // Typed status constant for SQL query parameters (avoids magic strings)
31
- const PENDING_STATUS = 'pending';
32
- // ── Module mock setup ──────────────────────────────────────────────────────────
33
- // vi.mock MUST be called before importing the module under test.
34
- // This intercepts runCliProcess so no real CLI binary is spawned.
35
- vi.mock('../../utils/cli-process-runner.js', () => {
36
- return {
37
- runCliProcess: vi.fn(),
38
- };
39
- });
40
- // Import after vi.mock so the mock is active
41
- import { runCliProcess } from '../../utils/cli-process-runner.js';
42
- // ── Test fixtures ──────────────────────────────────────────────────────────────
43
- function makeFakeCliOutput(overrides = {}) {
44
- return {
45
- stdout: '',
46
- stderr: '',
47
- exitCode: 0,
48
- timedOut: false,
49
- durationMs: 100,
50
- ...overrides,
51
- };
52
- }
53
- /**
54
- * Create DiagnosticianOutputV1 with >= 2 kind='principle' recommendations.
55
- * Schema-valid (passes Value.Check(DiagnosticianOutputV1Schema, output)).
56
- */
57
- function makeDiagnosticianOutputWithCandidates(_taskId) {
58
- return {
59
- valid: true,
60
- diagnosisId: `diag-m6e2e-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
61
- summary: 'E2E m6-06 test diagnosis summary',
62
- rootCause: 'E2E m6-06 root cause — missing validation before tool call',
63
- violatedPrinciples: [],
64
- evidence: [],
65
- recommendations: [
66
- { kind: 'principle', description: 'Always validate tool arguments before execution to prevent silent failures' },
67
- { kind: 'principle', description: 'Log all tool invocations with argument summaries for traceability' },
68
- { kind: 'rule', description: 'Use schema validation for external inputs' },
69
- ],
70
- confidence: 0.92,
71
- };
72
- }
73
- function makeDiagnosticianTaskInput(options) {
74
- const { taskId, workspaceDir, diagnostic } = options;
75
- const diagnosticJson = JSON.stringify({
76
- workspaceDir,
77
- reasonSummary: diagnostic?.reasonSummary ?? 'E2E m6-06 test task',
78
- sourcePainId: diagnostic?.sourcePainId,
79
- severity: diagnostic?.severity,
80
- source: diagnostic?.source,
81
- });
82
- return {
83
- taskId,
84
- taskKind: 'diagnostician',
85
- status: 'pending',
86
- attemptCount: 0,
87
- maxAttempts: 3,
88
- diagnosticJson,
89
- };
90
- }
91
- // ── Test setup ─────────────────────────────────────────────────────────────────
92
- const TMP_ROOT = path.join(os.tmpdir(), `pd-e2e-m6-06-${process.pid}`);
93
- describe('E2E m6-06 — OpenClawCliRuntimeAdapter + FakeCliProcessRunner', () => {
94
- // eslint-disable-next-line @typescript-eslint/init-declarations
95
- let testDir;
96
- // eslint-disable-next-line @typescript-eslint/init-declarations
97
- let stateManager;
98
- // eslint-disable-next-line @typescript-eslint/init-declarations
99
- let contextAssembler;
100
- // eslint-disable-next-line @typescript-eslint/init-declarations
101
- let historyQuery;
102
- // eslint-disable-next-line @typescript-eslint/init-declarations
103
- let eventEmitter;
104
- // eslint-disable-next-line @typescript-eslint/init-declarations
105
- let sqliteConn;
106
- beforeEach(async () => {
107
- testDir = path.join(TMP_ROOT, `e2e-${Date.now()}-${Math.random().toString(36).slice(2)}`);
108
- fs.mkdirSync(testDir, { recursive: true });
109
- stateManager = new RuntimeStateManager({ workspaceDir: testDir });
110
- await stateManager.initialize();
111
- sqliteConn = stateManager.connection;
112
- historyQuery = new SqliteHistoryQuery(sqliteConn);
113
- const taskStore = stateManager.taskStore;
114
- const runStore = stateManager.runStore;
115
- contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
116
- eventEmitter = new StoreEventEmitter();
117
- // Reset mock before each test
118
- vi.mocked(runCliProcess).mockReset();
119
- });
120
- afterEach(() => {
121
- stateManager.close();
122
- try {
123
- fs.rmSync(TMP_ROOT, { recursive: true, force: true });
124
- }
125
- catch {
126
- // ignore cleanup errors on Windows
127
- }
128
- });
129
- /**
130
- * Build a DiagnosticianRunner wired with REAL SqliteDiagnosticianCommitter.
131
- * pollIntervalMs: 50, timeoutMs: 3000 per m5-05-e2e.test.ts pattern.
132
- */
133
- function createRunner(runtimeAdapter, validator = new PassThroughValidator()) {
134
- const committer = new SqliteDiagnosticianCommitter(sqliteConn);
135
- return new DiagnosticianRunner({
136
- stateManager,
137
- contextAssembler,
138
- runtimeAdapter,
139
- eventEmitter,
140
- validator,
141
- committer,
142
- }, {
143
- owner: 'e2e-m6-06-runner',
144
- runtimeKind: 'openclaw-cli',
145
- pollIntervalMs: 50,
146
- timeoutMs: 3000,
147
- });
148
- }
149
- // ═══════════════════════════════════════════════════════════════════════════
150
- // SCENARIO 1: FakeCliProcessRunner Proves Adapter Path (E2EV-01, E2EV-02)
151
- // ═══════════════════════════════════════════════════════════════════════════
152
- // Verifies E2EV-01: FakeCliProcessRunner intercepts runCliProcess without real binary
153
- // Verifies E2EV-02: Full chain task -> run -> DiagnosticianOutputV1 -> artifact -> candidates
154
- describe('Scenario 1: FakeCliProcessRunner Proves Adapter Path (E2EV-01, E2EV-02)', () => {
155
- it('full chain with FakeCliProcessRunner — openclaw-cli adapter path', async () => {
156
- const taskId = randomUUID();
157
- // Create task
158
- await stateManager.createTask(makeDiagnosticianTaskInput({
159
- taskId,
160
- workspaceDir: testDir,
161
- diagnostic: {
162
- reasonSummary: 'E2EV-01 happy path test',
163
- sourcePainId: 'pain-e2ev01-001',
164
- severity: 'high',
165
- source: 'e2e-test',
166
- },
167
- }));
168
- // Configure fake output with >= 2 kind='principle' recommendations
169
- const output = makeDiagnosticianOutputWithCandidates(taskId);
170
- // Configure FakeCliProcessRunner mock — returns success with DiagnosticianOutputV1 JSON
171
- vi.mocked(runCliProcess).mockResolvedValue(makeFakeCliOutput({
172
- stdout: JSON.stringify(output),
173
- exitCode: 0,
174
- timedOut: false,
175
- }));
176
- // Create OpenClawCliRuntimeAdapter with local mode
177
- const runtimeAdapter = new OpenClawCliRuntimeAdapter({
178
- runtimeMode: 'local',
179
- workspaceDir: testDir,
180
- });
181
- const runner = createRunner(runtimeAdapter);
182
- const result = await runner.run(taskId);
183
- // E2EV-01/E2EV-02 assertion 1: result.status === 'succeeded'
184
- expect(result.status).toBe('succeeded');
185
- // E2EV-01/E2EV-02 assertion 2: task.resultRef starts with 'commit://'
186
- const task = await stateManager.getTask(taskId);
187
- expect(task).not.toBeNull();
188
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
189
- expect(task.resultRef).toMatch(/^commit:\/\/.+/);
190
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
191
- const commitId = task.resultRef.replace('commit://', '');
192
- // E2EV-01/E2EV-02 assertion 3: task status is 'succeeded'
193
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
194
- expect(task.status).toBe('succeeded');
195
- // E2EV-02 assertion 4: artifact row exists with correct artifact_kind
196
- const db = sqliteConn.getDb();
197
- const artifactRow = db.prepare('SELECT * FROM artifacts WHERE task_id = ?').get(taskId);
198
- expect(artifactRow).toBeDefined();
199
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
200
- expect(artifactRow.artifact_kind).toBe('diagnostician_output');
201
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
202
- const artifactId = artifactRow.artifact_id;
203
- // E2EV-02 assertion 5: >= 3 candidate rows exist (all recommendation kinds)
204
- const candidateRows = db.prepare('SELECT * FROM principle_candidates WHERE artifact_id = ? AND status = ?').all(artifactId, PENDING_STATUS);
205
- expect(candidateRows).toHaveLength(3);
206
- expect(candidateRows.every((c) => c.description.length > 0)).toBe(true);
207
- // E2EV-02 assertion 6: commit row links task to artifact with status === 'committed'
208
- const commitRow = db.prepare('SELECT * FROM commits WHERE commit_id = ?').get(commitId);
209
- expect(commitRow).toBeDefined();
210
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
211
- expect(commitRow.artifact_id).toBe(artifactId);
212
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
213
- expect(commitRow.task_id).toBe(taskId);
214
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
215
- expect(commitRow.status).toBe('committed');
216
- // E2EV-01 CRITICAL: runCliProcess was called (fake was invoked, no real binary)
217
- expect(vi.mocked(runCliProcess)).toHaveBeenCalled();
218
- // E2EV-01 CRITICAL: command was 'openclaw'
219
- const rawCalls = vi.mocked(runCliProcess).mock.calls;
220
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
221
- const firstArg = rawCalls[0][0];
222
- expect(firstArg.command).toBe('openclaw');
223
- // E2EV-01 CRITICAL: args include '--local' when runtimeMode is 'local'
224
- expect(firstArg.args).toContain('--local');
225
- });
226
- });
227
- // ═══════════════════════════════════════════════════════════════════════════
228
- // SCENARIO 2: HG-3 — Both RuntimeModes Produce Correct CLI Args
229
- // ═══════════════════════════════════════════════════════════════════════════
230
- // Verifies HG-3: No silent fallback. '--local' only passed when mode === 'local'.
231
- describe('Scenario 2: HG-3 — Both RuntimeModes Produce Correct CLI Args', () => {
232
- it('local mode passes --local, gateway mode omits --local', async () => {
233
- // ── Sub-case: local mode ────────────────────────────────────────────────
234
- const taskIdLocal = randomUUID();
235
- await stateManager.createTask(makeDiagnosticianTaskInput({
236
- taskId: taskIdLocal,
237
- workspaceDir: testDir,
238
- diagnostic: { reasonSummary: 'HG-3 local mode test' },
239
- }));
240
- const outputLocal = makeDiagnosticianOutputWithCandidates(taskIdLocal);
241
- vi.mocked(runCliProcess).mockResolvedValue(makeFakeCliOutput({
242
- stdout: JSON.stringify(outputLocal),
243
- exitCode: 0,
244
- timedOut: false,
245
- }));
246
- const localAdapter = new OpenClawCliRuntimeAdapter({
247
- runtimeMode: 'local',
248
- workspaceDir: testDir,
249
- });
250
- const localRunner = createRunner(localAdapter);
251
- const localResult = await localRunner.run(taskIdLocal);
252
- expect(localResult.status).toBe('succeeded');
253
- // HG-3 CRITICAL: args include '--local'
254
- const rawLocal = vi.mocked(runCliProcess).mock.calls[0]?.[0];
255
- expect(rawLocal.args).toContain('--local');
256
- // ── Sub-case: gateway mode ──────────────────────────────────────────────
257
- const taskIdGateway = randomUUID();
258
- await stateManager.createTask(makeDiagnosticianTaskInput({
259
- taskId: taskIdGateway,
260
- workspaceDir: testDir,
261
- diagnostic: { reasonSummary: 'HG-3 gateway mode test' },
262
- }));
263
- const outputGateway = makeDiagnosticianOutputWithCandidates(taskIdGateway);
264
- vi.mocked(runCliProcess).mockClear();
265
- vi.mocked(runCliProcess).mockResolvedValue(makeFakeCliOutput({
266
- stdout: JSON.stringify(outputGateway),
267
- exitCode: 0,
268
- timedOut: false,
269
- }));
270
- const gatewayAdapter = new OpenClawCliRuntimeAdapter({
271
- runtimeMode: 'gateway',
272
- workspaceDir: testDir,
273
- });
274
- const gatewayRunner = createRunner(gatewayAdapter);
275
- const gatewayResult = await gatewayRunner.run(taskIdGateway);
276
- expect(gatewayResult.status).toBe('succeeded');
277
- // HG-3 CRITICAL: args do NOT include '--local'
278
- const rawGateway = vi.mocked(runCliProcess).mock.calls[0]?.[0];
279
- expect(rawGateway.args).not.toContain('--local');
280
- });
281
- });
282
- // ═══════════════════════════════════════════════════════════════════════════
283
- // SCENARIO 3: TestDoubleRuntimeAdapter Regression (E2EV-03)
284
- // ═══════════════════════════════════════════════════════════════════════════
285
- // Verifies E2EV-03: TestDoubleRuntimeAdapter path still works after
286
- // OpenClawCliRuntimeAdapter changes (dual-track-e2e.test.ts Scenario 1 regression)
287
- describe('Scenario 3: TestDoubleRuntimeAdapter Regression (E2EV-03)', () => {
288
- it('E2EV-03: TestDoubleRuntimeAdapter path unaffected — dual-track-e2e regression', async () => {
289
- const taskId = randomUUID();
290
- // Create task
291
- await stateManager.createTask(makeDiagnosticianTaskInput({
292
- taskId,
293
- workspaceDir: testDir,
294
- diagnostic: {
295
- reasonSummary: 'E2EV-03 TestDoubleRuntimeAdapter regression test',
296
- sourcePainId: 'pain-e2ev03-001',
297
- severity: 'medium',
298
- source: 'e2e-test',
299
- },
300
- }));
301
- // Configure output with >= 2 kind='principle' recommendations
302
- const output = makeDiagnosticianOutputWithCandidates(taskId);
303
- // Configure TestDoubleRuntimeAdapter — same pattern as dual-track-e2e.test.ts Scenario 1
304
- const runtimeAdapter = new TestDoubleRuntimeAdapter({
305
- onPollRun: () => ({
306
- runId: 'td-poll-m6e2e-1',
307
- status: 'succeeded',
308
- startedAt: new Date().toISOString(),
309
- endedAt: new Date().toISOString(),
310
- }),
311
- onFetchOutput: () => ({
312
- runId: 'td-fetch-m6e2e-1',
313
- payload: output,
314
- }),
315
- });
316
- const runner = createRunner(runtimeAdapter);
317
- const result = await runner.run(taskId);
318
- // E2EV-03 assertion 1: result.status === 'succeeded'
319
- expect(result.status).toBe('succeeded');
320
- // E2EV-03 assertion 2: task.status === 'succeeded'
321
- const task = await stateManager.getTask(taskId);
322
- expect(task).not.toBeNull();
323
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
324
- expect(task.status).toBe('succeeded');
325
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
326
- expect(task.resultRef).toMatch(/^commit:\/\/.+/);
327
- // E2EV-03 assertion 3: artifact exists in DB
328
- const db = sqliteConn.getDb();
329
- const artifactRow = db.prepare('SELECT * FROM artifacts WHERE task_id = ?').get(taskId);
330
- expect(artifactRow).toBeDefined();
331
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
332
- expect(artifactRow.artifact_kind).toBe('diagnostician_output');
333
- // E2EV-03 assertion 4: >= 2 candidate rows exist
334
- const candidateRows = db.prepare('SELECT * FROM principle_candidates WHERE artifact_id = ? AND status = ?').all(artifactRow.artifact_id, PENDING_STATUS);
335
- expect(candidateRows).toHaveLength(3); // 2 principles + 1 rule
336
- // E2EV-03 assertion 5: output.payload.diagnosisId matches committed output
337
- expect(result.output).toBeDefined();
338
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
339
- expect(result.output.diagnosisId).toBe(output.diagnosisId);
340
- // E2EV-03 assertion 6: contextHash is present (proves context assembly ran)
341
- expect(result.contextHash).toBeDefined();
342
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
343
- expect(result.contextHash.length).toBeGreaterThan(0);
344
- });
345
- });
346
- });
347
- //# sourceMappingURL=m6-06-e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m6-06-e2e.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m6-06-e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=m6-06-legacy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m6-06-legacy.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m6-06-legacy.test.ts"],"names":[],"mappings":""}
@@ -1,186 +0,0 @@
1
- /**
2
- * Legacy openclaw-history Import Regression Test — M6 E2E E2EV-08
3
- *
4
- * Verifies that DiagnosticianRunner can handle tasks with openclaw-history
5
- * runtime kind (imported from existing openclaw conversations) without errors.
6
- *
7
- * This is a regression test for the legacy openclaw-history import path.
8
- * Based on dual-track-e2e.test.ts Scenario 4 pattern.
9
- *
10
- * Requirement: E2EV-08
11
- */
12
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
13
- import * as fs from 'fs';
14
- import * as path from 'path';
15
- import * as os from 'os';
16
- import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
17
- import { SqliteContextAssembler } from '../../store/context/sqlite-context-assembler.js';
18
- import { SqliteHistoryQuery } from '../../store/history/sqlite-history-query.js';
19
- import { StoreEventEmitter } from '../../store/event-emitter.js';
20
- import { DiagnosticianRunner } from '../diagnostician-runner.js';
21
- import { PassThroughValidator } from '../diagnostician-validator.js';
22
- import { TestDoubleRuntimeAdapter } from '../../adapter/test-double-runtime-adapter.js';
23
- // -- Test fixtures --
24
- function makeDiagnosticianOutput(taskId) {
25
- return {
26
- valid: true,
27
- diagnosisId: `diag-legacy-${Date.now()}`,
28
- taskId,
29
- summary: 'Legacy openclaw-history regression test diagnosis summary',
30
- rootCause: 'Legacy openclaw-history regression test root cause analysis',
31
- violatedPrinciples: [],
32
- evidence: [],
33
- recommendations: [],
34
- confidence: 0.85,
35
- };
36
- }
37
- function makeDiagnosticianTaskInput(options) {
38
- const { taskId, workspaceDir, diagnostic, overrides } = options;
39
- const diagnosticJson = JSON.stringify({
40
- workspaceDir,
41
- reasonSummary: diagnostic?.reasonSummary ?? 'Legacy openclaw-history regression test',
42
- sourcePainId: diagnostic?.sourcePainId,
43
- severity: diagnostic?.severity,
44
- source: diagnostic?.source,
45
- });
46
- return {
47
- taskId,
48
- taskKind: 'diagnostician',
49
- status: 'pending',
50
- attemptCount: 0,
51
- maxAttempts: 3,
52
- ...overrides,
53
- diagnosticJson,
54
- };
55
- }
56
- // -- Mock committer --
57
- const mockCommitter = {
58
- commit: async () => ({
59
- commitId: 'legacy-test-commit-id',
60
- artifactId: 'legacy-test-artifact-id',
61
- candidateCount: 0,
62
- }),
63
- };
64
- // -- Test setup --
65
- const TMP_ROOT = path.join(os.tmpdir(), `pd-legacy-e2e-${process.pid}`);
66
- describe('E2E m6-06 — Legacy openclaw-history Import Regression (E2EV-08)', () => {
67
- // eslint-disable-next-line @typescript-eslint/init-declarations
68
- let testDir;
69
- // eslint-disable-next-line @typescript-eslint/init-declarations
70
- let stateManager;
71
- // eslint-disable-next-line @typescript-eslint/init-declarations
72
- let contextAssembler;
73
- // eslint-disable-next-line @typescript-eslint/init-declarations
74
- let historyQuery;
75
- // eslint-disable-next-line @typescript-eslint/init-declarations
76
- let eventEmitter;
77
- beforeEach(async () => {
78
- testDir = path.join(TMP_ROOT, `legacy-${Date.now()}-${Math.random().toString(36).slice(2)}`);
79
- fs.mkdirSync(testDir, { recursive: true });
80
- stateManager = new RuntimeStateManager({ workspaceDir: testDir });
81
- await stateManager.initialize();
82
- const sqliteConn = stateManager.connection;
83
- historyQuery = new SqliteHistoryQuery(sqliteConn);
84
- const taskStore = stateManager.taskStore;
85
- const runStore = stateManager.runStore;
86
- contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
87
- eventEmitter = new StoreEventEmitter();
88
- });
89
- afterEach(() => {
90
- stateManager.close();
91
- try {
92
- fs.rmSync(TMP_ROOT, { recursive: true, force: true });
93
- }
94
- catch {
95
- // ignore cleanup errors on Windows
96
- }
97
- });
98
- function createRunner(runtimeAdapter, validator = new PassThroughValidator()) {
99
- return new DiagnosticianRunner({
100
- stateManager,
101
- contextAssembler,
102
- runtimeAdapter,
103
- eventEmitter,
104
- validator,
105
- committer: mockCommitter,
106
- }, {
107
- owner: 'legacy-e2e-runner',
108
- runtimeKind: 'test-double',
109
- pollIntervalMs: 50,
110
- timeoutMs: 3000,
111
- });
112
- }
113
- // ═══════════════════════════════════════════════════════════════
114
- // E2EV-08: openclaw-history runtime imported context does not break DiagnosticianRunner
115
- // ═══════════════════════════════════════════════════════════════
116
- it('E2EV-08: openclaw-history runtime imported context does not break DiagnosticianRunner', async () => {
117
- const taskId = 'e2e-legacy-001';
118
- // Step 1: Create a task
119
- await stateManager.createTask(makeDiagnosticianTaskInput({
120
- taskId,
121
- workspaceDir: testDir,
122
- diagnostic: { reasonSummary: 'E2EV-08 legacy import regression test' },
123
- }));
124
- // Step 2: Acquire a lease with runtimeKind 'openclaw-history'
125
- // This simulates importing an existing openclaw conversation
126
- await stateManager.acquireLease({
127
- taskId,
128
- owner: 'setup-agent',
129
- runtimeKind: 'openclaw-history',
130
- });
131
- // Step 3: Mark task succeeded to create a completed run with output
132
- // (mimics imported openclaw-history context)
133
- await stateManager.markTaskSucceeded(taskId, 'run://setup-run');
134
- // Step 4: Reset task to pending state for the runner to process
135
- await stateManager.updateTask(taskId, {
136
- status: 'pending',
137
- attemptCount: 0,
138
- lastError: null,
139
- resultRef: null,
140
- });
141
- // Step 5: Verify openclaw-history run exists (pre-condition check)
142
- const runsBefore = await stateManager.getRunsByTask(taskId);
143
- expect(runsBefore.length).toBeGreaterThan(0);
144
- // Step 6: Configure TestDoubleRuntimeAdapter for success
145
- const successOutput = makeDiagnosticianOutput(taskId);
146
- const runtimeAdapter = new TestDoubleRuntimeAdapter({
147
- onPollRun: (_runId) => ({
148
- runId: 'td-legacy-1',
149
- status: 'succeeded',
150
- startedAt: new Date().toISOString(),
151
- endedAt: new Date().toISOString(),
152
- }),
153
- onFetchOutput: (_runId) => ({
154
- runId: 'td-legacy-fetch-1',
155
- payload: successOutput,
156
- }),
157
- });
158
- // Step 7: Create DiagnosticianRunner
159
- const runner = createRunner(runtimeAdapter, new PassThroughValidator());
160
- // Step 8: Call runner.run(taskId)
161
- const result = await runner.run(taskId);
162
- // Assertion 1: result.status === 'succeeded'
163
- expect(result.status).toBe('succeeded');
164
- // Assertion 2: result.contextHash is defined and non-empty
165
- // (context assembly ran without errors from openclaw-history run)
166
- expect(result.contextHash).toBeDefined();
167
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
168
- expect(result.contextHash.length).toBeGreaterThan(0);
169
- // Assertion 3: result.output.valid === true
170
- expect(result.output).toBeDefined();
171
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
172
- expect(result.output.valid).toBe(true);
173
- // Assertion 4: Verify task in store has status === 'succeeded'
174
- const task = await stateManager.getTask(taskId);
175
- expect(task).not.toBeNull();
176
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
177
- expect(task.status).toBe('succeeded');
178
- // Assertion 5: Verify at least one run with runtimeKind === 'openclaw-history' exists
179
- const allRuns = await stateManager.getRunsByTask(taskId);
180
- const openclawHistoryRuns = allRuns.filter((r) => r.runtimeKind === 'openclaw-history');
181
- expect(openclawHistoryRuns.length).toBeGreaterThan(0);
182
- // Assertion 6: Verify result.taskId matches
183
- expect(result.taskId).toBe(taskId);
184
- });
185
- });
186
- //# sourceMappingURL=m6-06-legacy.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m6-06-legacy.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m6-06-legacy.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=m6-06-real-path.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m6-06-real-path.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m6-06-real-path.test.ts"],"names":[],"mappings":""}