@principles/core 1.123.0 → 1.125.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/dist/runtime-v2/__tests__/architecture-regression.test.js +42 -74
  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/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  11. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +4 -0
  12. package/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  13. package/dist/runtime-v2/cli/diagnose.d.ts +2 -2
  14. package/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
  15. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +3 -3
  16. package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
  17. package/dist/runtime-v2/config/pd-config-defaults.js +3 -3
  18. package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  19. package/dist/runtime-v2/config/pd-config-types.d.ts +2 -0
  20. package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  21. package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  22. package/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts +2 -0
  23. package/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts.map +1 -0
  24. package/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js +45 -0
  25. package/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js.map +1 -0
  26. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts +2 -0
  27. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts.map +1 -0
  28. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +57 -0
  29. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -0
  30. package/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts +2 -0
  31. package/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts.map +1 -0
  32. package/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js +39 -0
  33. package/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js.map +1 -0
  34. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts +2 -0
  35. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts.map +1 -0
  36. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +34 -0
  37. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -0
  38. package/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts +2 -0
  39. package/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts.map +1 -0
  40. package/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js +57 -0
  41. package/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js.map +1 -0
  42. package/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts +80 -0
  43. package/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts.map +1 -0
  44. package/dist/runtime-v2/diagnostician/diag-distiller-output.js +103 -0
  45. package/dist/runtime-v2/diagnostician/diag-distiller-output.js.map +1 -0
  46. package/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +115 -0
  47. package/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -0
  48. package/dist/runtime-v2/diagnostician/diag-rootcause-output.js +166 -0
  49. package/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -0
  50. package/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts +134 -0
  51. package/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts.map +1 -0
  52. package/dist/runtime-v2/diagnostician/distiller-prompt-builder.js +156 -0
  53. package/dist/runtime-v2/diagnostician/distiller-prompt-builder.js.map +1 -0
  54. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +96 -0
  55. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -0
  56. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +216 -0
  57. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -0
  58. package/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts +127 -0
  59. package/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts.map +1 -0
  60. package/dist/runtime-v2/diagnostician/router-prompt-builder.js +131 -0
  61. package/dist/runtime-v2/diagnostician/router-prompt-builder.js.map +1 -0
  62. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts +1 -64
  63. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  64. package/dist/runtime-v2/diagnostician-prompt-builder.js +0 -186
  65. package/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  66. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +13 -7
  67. package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  68. package/dist/runtime-v2/feature-flags/feature-flag-contract.js +3 -3
  69. package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  70. package/dist/runtime-v2/index.d.ts +14 -10
  71. package/dist/runtime-v2/index.d.ts.map +1 -1
  72. package/dist/runtime-v2/index.js +9 -6
  73. package/dist/runtime-v2/index.js.map +1 -1
  74. package/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts +25 -0
  75. package/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts.map +1 -0
  76. package/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js +123 -0
  77. package/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js.map +1 -0
  78. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts +2 -0
  79. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts.map +1 -0
  80. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +734 -0
  81. package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -0
  82. package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts +2 -0
  83. package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts.map +1 -0
  84. package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js +437 -0
  85. package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js.map +1 -0
  86. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts +2 -0
  87. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts.map +1 -0
  88. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +336 -0
  89. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -0
  90. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts +2 -0
  91. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts.map +1 -0
  92. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +437 -0
  93. package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -0
  94. package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js +3 -3
  95. package/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js.map +1 -1
  96. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +83 -0
  97. package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -0
  98. package/dist/runtime-v2/internalization/diag-distiller-runner.js +274 -0
  99. package/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -0
  100. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +73 -0
  101. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -0
  102. package/dist/runtime-v2/internalization/diag-rootcause-runner.js +229 -0
  103. package/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -0
  104. package/dist/runtime-v2/internalization/diag-router-runner.d.ts +85 -0
  105. package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -0
  106. package/dist/runtime-v2/internalization/diag-router-runner.js +353 -0
  107. package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -0
  108. package/dist/runtime-v2/internalization/evaluator-runner.d.ts +1 -1
  109. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  110. package/dist/runtime-v2/internalization/evaluator-runner.js +1 -1
  111. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  112. package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts +66 -0
  113. package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -0
  114. package/dist/runtime-v2/internalization/split-diagnostician-runner.js +241 -0
  115. package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -0
  116. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +28 -21
  117. package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
  118. package/dist/runtime-v2/pain-signal-bridge.d.ts +22 -3
  119. package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  120. package/dist/runtime-v2/pain-signal-bridge.js +16 -7
  121. package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  122. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +13 -1
  123. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  124. package/dist/runtime-v2/pain-signal-runtime-factory.js +64 -34
  125. package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  126. package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +2 -2
  127. package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -1
  128. package/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
  129. package/dist/runtime-v2/runner/base-peer-runner.d.ts +3 -3
  130. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  131. package/dist/runtime-v2/runner/base-peer-runner.js +6 -6
  132. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  133. package/dist/runtime-v2/runner/peer-runner-types.d.ts +3 -3
  134. package/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  135. package/dist/runtime-v2/store/candidate/sqlite-candidate-store.js +2 -2
  136. package/dist/runtime-v2/store/candidate/sqlite-candidate-store.js.map +1 -1
  137. package/dist/runtime-v2/types/principle-enums.d.ts +2 -2
  138. package/dist/runtime-v2/types/principle-enums.d.ts.map +1 -1
  139. package/dist/runtime-v2/types/principle-enums.js +1 -0
  140. package/dist/runtime-v2/types/principle-enums.js.map +1 -1
  141. package/dist/runtime-v2/types/principle-schema.d.ts +1 -1
  142. package/dist/runtime-v2/types/principle-tree-store.d.ts +1 -1
  143. package/dist/telemetry-event.d.ts +2 -2
  144. package/dist/telemetry-event.d.ts.map +1 -1
  145. package/dist/telemetry-event.js +1 -0
  146. package/dist/telemetry-event.js.map +1 -1
  147. package/package.json +1 -1
  148. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts +0 -2
  149. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.d.ts.map +0 -1
  150. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js +0 -122
  151. package/dist/runtime-v2/__tests__/diagnostician-core-grounding.test.js.map +0 -1
  152. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts +0 -2
  153. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts.map +0 -1
  154. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js +0 -169
  155. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js.map +0 -1
  156. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts +0 -2
  157. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts.map +0 -1
  158. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +0 -462
  159. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +0 -1
  160. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +0 -13
  161. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +0 -1
  162. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +0 -97
  163. package/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +0 -1
  164. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts +0 -2
  165. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts.map +0 -1
  166. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js +0 -378
  167. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js.map +0 -1
  168. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts +0 -2
  169. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts.map +0 -1
  170. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +0 -682
  171. package/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +0 -1
  172. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts +0 -2
  173. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts.map +0 -1
  174. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js +0 -286
  175. package/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js.map +0 -1
  176. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts +0 -2
  177. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts.map +0 -1
  178. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js +0 -320
  179. package/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js.map +0 -1
  180. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts +0 -2
  181. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts.map +0 -1
  182. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js +0 -261
  183. package/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js.map +0 -1
  184. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts +0 -2
  185. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts.map +0 -1
  186. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js +0 -405
  187. package/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js.map +0 -1
  188. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts +0 -2
  189. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts.map +0 -1
  190. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js +0 -347
  191. package/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js.map +0 -1
  192. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts +0 -2
  193. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts.map +0 -1
  194. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js +0 -186
  195. package/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js.map +0 -1
  196. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts +0 -2
  197. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts.map +0 -1
  198. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js +0 -355
  199. package/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js.map +0 -1
  200. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts +0 -2
  201. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts.map +0 -1
  202. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +0 -486
  203. package/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +0 -1
  204. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts +0 -2
  205. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts.map +0 -1
  206. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js +0 -171
  207. package/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js.map +0 -1
  208. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts +0 -2
  209. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts.map +0 -1
  210. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +0 -175
  211. package/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +0 -1
  212. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts +0 -2
  213. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts.map +0 -1
  214. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js +0 -276
  215. package/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js.map +0 -1
  216. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts +0 -2
  217. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts.map +0 -1
  218. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js +0 -272
  219. package/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js.map +0 -1
  220. package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts +0 -2
  221. package/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts.map +0 -1
  222. package/dist/runtime-v2/runner/__tests__/start-run-input.test.js +0 -67
  223. package/dist/runtime-v2/runner/__tests__/start-run-input.test.js.map +0 -1
  224. package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +0 -57
  225. package/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +0 -1
  226. package/dist/runtime-v2/runner/diagnostician-runner-options.js +0 -21
  227. package/dist/runtime-v2/runner/diagnostician-runner-options.js.map +0 -1
  228. package/dist/runtime-v2/runner/diagnostician-runner.d.ts +0 -89
  229. package/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +0 -1
  230. package/dist/runtime-v2/runner/diagnostician-runner.js +0 -470
  231. package/dist/runtime-v2/runner/diagnostician-runner.js.map +0 -1
@@ -1,171 +0,0 @@
1
- /**
2
- * E2E m9-adapter-integration — PiAiRuntimeAdapter + DiagnosticianRunner integration.
3
- *
4
- * Verifies PiAiRuntimeAdapter integrates correctly with DiagnosticianRunner.
5
- * Tests pain → task → run → DiagnosticianOutputV1 artifact → candidate records.
6
- * Does NOT go through PainSignalBridge or ledger (plan 01 scope).
7
- *
8
- * Uses module-level vi.mock('@mariozechner/pi-ai') — real PiAiRuntimeAdapter
9
- * code runs, only LLM API calls are intercepted.
10
- */
11
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
12
- import * as fs from 'fs';
13
- import * as path from 'path';
14
- import * as os from 'os';
15
- import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
16
- import { SqliteContextAssembler } from '../../store/context/sqlite-context-assembler.js';
17
- import { SqliteHistoryQuery } from '../../store/history/sqlite-history-query.js';
18
- import { StoreEventEmitter } from '../../store/event-emitter.js';
19
- import { DiagnosticianRunner } from '../diagnostician-runner.js';
20
- import { PassThroughValidator } from '../diagnostician-validator.js';
21
- import { SqliteDiagnosticianCommitter } from '../../store/commit/diagnostician-committer.js';
22
- // ── Module mock (MUST be before imports) ──────────────────────────────────────
23
- vi.mock('@mariozechner/pi-ai', () => ({
24
- getModel: vi.fn(),
25
- getProviders: vi.fn(() => ['openrouter', 'anthropic', 'openai']),
26
- completeSimple: vi.fn(),
27
- }));
28
- import { getModel, completeSimple } from '@mariozechner/pi-ai';
29
- import { PiAiRuntimeAdapter } from '../../adapter/pi-ai-runtime-adapter.js';
30
- const mockComplete = completeSimple;
31
- const mockGetModel = getModel;
32
- // ── Test fixtures ──────────────────────────────────────────────────────────────
33
- function makeAssistantMessage(text, overrides = {}) {
34
- return {
35
- content: [{ type: 'text', text }],
36
- role: 'assistant',
37
- stopReason: 'stop',
38
- api: 'openai-completions',
39
- provider: 'openrouter',
40
- model: 'anthropic/claude-sonnet-4',
41
- usage: { input: 10, output: 5, cacheRead: 0, cacheWrite: 0, totalTokens: 15, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
42
- timestamp: Date.now(),
43
- ...overrides,
44
- };
45
- }
46
- function makeDiagnosticianOutputWithCandidates(_taskId) {
47
- return {
48
- valid: true,
49
- diagnosisId: `diag-m9-adapter-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
50
- summary: 'E2E m9-04 adapter integration test diagnosis summary',
51
- rootCause: 'E2E m9-04 root cause — adapter integration test',
52
- violatedPrinciples: [],
53
- evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
54
- recommendations: [
55
- { kind: 'principle', description: 'Always validate tool arguments before execution to prevent silent failures' },
56
- { kind: 'principle', description: 'Log all tool invocations with argument summaries for traceability' },
57
- { kind: 'rule', description: 'Use schema validation for external inputs' },
58
- ],
59
- confidence: 0.92,
60
- };
61
- }
62
- const VALID_DIAGNOSIS = {
63
- valid: true,
64
- diagnosisId: 'diag-adapter-integration-1',
65
- taskId: 'task-adapter-integration-1',
66
- summary: 'Adapter integration test summary',
67
- rootCause: 'Adapter integration root cause',
68
- violatedPrinciples: [],
69
- evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
70
- recommendations: [],
71
- confidence: 0.9,
72
- };
73
- // ── Test setup ─────────────────────────────────────────────────────────────────
74
- const TMP_ROOT = path.join(os.tmpdir(), `pd-e2e-m9-adapter-integration-${process.pid}`);
75
- describe('E2E m9-adapter-integration — PiAiRuntimeAdapter + DiagnosticianRunner', () => {
76
- // eslint-disable-next-line @typescript-eslint/init-declarations
77
- let testDir;
78
- // eslint-disable-next-line @typescript-eslint/init-declarations
79
- let stateManager;
80
- // eslint-disable-next-line @typescript-eslint/init-declarations
81
- let sqliteConn;
82
- // eslint-disable-next-line @typescript-eslint/init-declarations
83
- let contextAssembler;
84
- // eslint-disable-next-line @typescript-eslint/init-declarations
85
- let historyQuery;
86
- // eslint-disable-next-line @typescript-eslint/init-declarations
87
- let eventEmitter;
88
- beforeEach(async () => {
89
- testDir = path.join(TMP_ROOT, `e2e-${Date.now()}-${Math.random().toString(36).slice(2)}`);
90
- fs.mkdirSync(testDir, { recursive: true });
91
- stateManager = new RuntimeStateManager({ workspaceDir: testDir });
92
- await stateManager.initialize();
93
- sqliteConn = stateManager.connection;
94
- historyQuery = new SqliteHistoryQuery(sqliteConn);
95
- const taskStore = stateManager.taskStore;
96
- const runStore = stateManager.runStore;
97
- contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
98
- eventEmitter = new StoreEventEmitter();
99
- vi.clearAllMocks();
100
- process.env.TEST_API_KEY = 'test-key-123';
101
- mockGetModel.mockReturnValue({ id: 'anthropic/claude-sonnet-4' });
102
- mockComplete.mockResolvedValue(makeAssistantMessage(JSON.stringify(VALID_DIAGNOSIS)));
103
- });
104
- afterEach(() => {
105
- stateManager.close();
106
- try {
107
- fs.rmSync(TMP_ROOT, { recursive: true, force: true });
108
- }
109
- catch {
110
- // ignore Windows cleanup errors
111
- }
112
- });
113
- function createRunner(runtimeAdapter) {
114
- const committer = new SqliteDiagnosticianCommitter(sqliteConn);
115
- return new DiagnosticianRunner({
116
- stateManager,
117
- contextAssembler,
118
- runtimeAdapter,
119
- eventEmitter,
120
- validator: new PassThroughValidator(),
121
- committer,
122
- }, {
123
- owner: 'e2e-m9-adapter-integration',
124
- runtimeKind: 'pi-ai',
125
- pollIntervalMs: 50,
126
- timeoutMs: 5000,
127
- });
128
- }
129
- // ═══════════════════════════════════════════════════════════════════════════
130
- // TEST: PiAiRuntimeAdapter + DiagnosticianRunner full chain
131
- // ═══════════════════════════════════════════════════════════════════════════
132
- it('PiAiRuntimeAdapter + DiagnosticianRunner: full chain task → artifact → candidates', async () => {
133
- const taskId = 'diagnosis_test-pain-m9-adapter-01';
134
- // Create task via stateManager (bridge would normally do this)
135
- await stateManager.createTask({
136
- taskId,
137
- taskKind: 'diagnostician',
138
- status: 'pending',
139
- attemptCount: 0,
140
- maxAttempts: 3,
141
- });
142
- // Configure mock to return diagnosis with candidates
143
- const output = makeDiagnosticianOutputWithCandidates(taskId);
144
- mockComplete.mockResolvedValueOnce(makeAssistantMessage(JSON.stringify(output)));
145
- // Create adapter and runner
146
- const adapter = new PiAiRuntimeAdapter({
147
- provider: 'openrouter',
148
- model: 'anthropic/claude-sonnet-4',
149
- apiKeyEnv: 'TEST_API_KEY',
150
- maxRetries: 0,
151
- timeoutMs: 60_000,
152
- outputPathStrategy: 'free_form_only',
153
- });
154
- const runner = createRunner(adapter);
155
- const result = await runner.run(taskId);
156
- // Assert runner succeeded
157
- expect(result.status).toBe('succeeded');
158
- expect(result.contextHash).toBeDefined();
159
- // Assert artifact was written
160
- const db = sqliteConn.getDb();
161
- const artifacts = db.prepare('SELECT * FROM artifacts WHERE task_id = ?').all(taskId);
162
- expect(artifacts).toHaveLength(1);
163
- const artifact = artifacts[0];
164
- expect(artifact.artifact_kind).toBe('diagnostician_output');
165
- // Assert >= 2 candidate records were created
166
- const artifactId = artifact.artifact_id;
167
- const candidates = db.prepare('SELECT * FROM principle_candidates WHERE artifact_id = ?').all(artifactId);
168
- expect(candidates.length).toBeGreaterThanOrEqual(2);
169
- });
170
- });
171
- //# sourceMappingURL=m9-adapter-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m9-adapter-integration.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m9-adapter-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=m9-e2e.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m9-e2e.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m9-e2e.test.ts"],"names":[],"mappings":""}
@@ -1,175 +0,0 @@
1
- /**
2
- * E2E m9 — PainSignalBridge + PiAiRuntimeAdapter full chain.
3
- * Pain → task → run → DiagnosticianOutputV1 artifact → candidates → ledger probation entry.
4
- * Idempotency: same painId twice produces no duplicate candidates/ledger entries.
5
- * Uses vi.mock('@mariozechner/pi-ai') — real adapter code, only LLM calls intercepted.
6
- */
7
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
8
- import * as fs from 'fs';
9
- import * as path from 'path';
10
- import * as os from 'os';
11
- import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
12
- import { SqliteContextAssembler } from '../../store/context/sqlite-context-assembler.js';
13
- import { SqliteHistoryQuery } from '../../store/history/sqlite-history-query.js';
14
- import { StoreEventEmitter } from '../../store/event-emitter.js';
15
- import { DiagnosticianRunner } from '../diagnostician-runner.js';
16
- import { PassThroughValidator } from '../diagnostician-validator.js';
17
- import { SqliteDiagnosticianCommitter } from '../../store/commit/diagnostician-committer.js';
18
- import { PainSignalBridge } from '../../pain-signal-bridge.js';
19
- import { CandidateIntakeService } from '../../candidate-intake-service.js';
20
- vi.mock('@mariozechner/pi-ai', () => ({
21
- getModel: vi.fn(),
22
- getProviders: vi.fn(() => ['openrouter', 'anthropic', 'openai']),
23
- completeSimple: vi.fn(),
24
- }));
25
- import { getModel, completeSimple } from '@mariozechner/pi-ai';
26
- import { PiAiRuntimeAdapter } from '../../adapter/pi-ai-runtime-adapter.js';
27
- const mockComplete = completeSimple;
28
- const mockGetModel = getModel;
29
- // ── In-memory ledger adapter ──────────────────────────────────────────────────
30
- class InMemoryLedgerAdapter {
31
- entries = new Map();
32
- writeProbationEntry(entry) {
33
- const candidateId = this.#extractCandidateId(entry.sourceRef);
34
- const existing = this.existsForCandidate(candidateId);
35
- if (existing)
36
- return existing;
37
- this.entries.set(candidateId, entry);
38
- return entry;
39
- }
40
- existsForCandidate(candidateId) { return this.entries.get(candidateId) ?? null; }
41
- // eslint-disable-next-line @typescript-eslint/class-methods-use-this
42
- #extractCandidateId(sourceRef) { return sourceRef.startsWith('candidate://') ? sourceRef.slice('candidate://'.length) : sourceRef; }
43
- }
44
- // ── Fixtures ─────────────────────────────────────────────────────────────────
45
- function makeAssistantMessage(text, overrides = {}) {
46
- return {
47
- content: [{ type: 'text', text }],
48
- role: 'assistant',
49
- stopReason: 'stop',
50
- api: 'openai-completions',
51
- provider: 'openrouter',
52
- model: 'anthropic/claude-sonnet-4',
53
- usage: { input: 10, output: 5, cacheRead: 0, cacheWrite: 0, totalTokens: 15, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
54
- timestamp: Date.now(),
55
- ...overrides,
56
- };
57
- }
58
- function makeDiagnosticianOutputWithCandidates(_taskId) {
59
- return {
60
- valid: true,
61
- diagnosisId: `diag-m9-e2e-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
62
- summary: 'E2E m9-04 full chain test diagnosis summary',
63
- rootCause: 'E2E m9-04 full chain root cause — missing validation before tool call',
64
- violatedPrinciples: [],
65
- evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }],
66
- recommendations: [
67
- { kind: 'principle', description: 'Always validate tool arguments before execution to prevent silent failures' },
68
- { kind: 'principle', description: 'Log all tool invocations with argument summaries for traceability' },
69
- { kind: 'rule', description: 'Use schema validation for external inputs' },
70
- ],
71
- confidence: 0.92,
72
- };
73
- }
74
- // ── Test setup ─────────────────────────────────────────────────────────────────
75
- const TMP_ROOT = path.join(os.tmpdir(), `pd-e2e-m9-${process.pid}`);
76
- describe('E2E m9 — PainSignalBridge + PiAiRuntimeAdapter full chain', () => {
77
- let testDir;
78
- let stateManager;
79
- let sqliteConn;
80
- let contextAssembler;
81
- let eventEmitter;
82
- let ledgerAdapter;
83
- let intakeService;
84
- beforeEach(async () => {
85
- testDir = path.join(TMP_ROOT, `e2e-${Date.now()}-${Math.random().toString(36).slice(2)}`);
86
- fs.mkdirSync(testDir, { recursive: true });
87
- stateManager = new RuntimeStateManager({ workspaceDir: testDir });
88
- await stateManager.initialize();
89
- sqliteConn = stateManager.connection;
90
- const historyQuery = new SqliteHistoryQuery(sqliteConn);
91
- const taskStore = stateManager.taskStore;
92
- const runStore = stateManager.runStore;
93
- contextAssembler = new SqliteContextAssembler(taskStore, historyQuery, runStore);
94
- eventEmitter = new StoreEventEmitter();
95
- ledgerAdapter = new InMemoryLedgerAdapter();
96
- intakeService = new CandidateIntakeService({ stateManager, ledgerAdapter });
97
- vi.clearAllMocks();
98
- process.env.TEST_API_KEY = 'test-key-123';
99
- mockGetModel.mockReturnValue({ id: 'anthropic/claude-sonnet-4' });
100
- });
101
- afterEach(() => {
102
- stateManager.close();
103
- try {
104
- fs.rmSync(TMP_ROOT, { recursive: true, force: true });
105
- }
106
- catch { /* ignore */ }
107
- });
108
- function createRunner(runtimeAdapter) {
109
- const committer = new SqliteDiagnosticianCommitter(sqliteConn);
110
- return new DiagnosticianRunner({ stateManager, contextAssembler, runtimeAdapter, eventEmitter, validator: new PassThroughValidator(), committer }, { owner: 'e2e-m9-full-chain', runtimeKind: 'pi-ai', pollIntervalMs: 50, timeoutMs: 5000 });
111
- }
112
- function makePiAiAdapter() {
113
- return new PiAiRuntimeAdapter({ provider: 'openrouter', model: 'anthropic/claude-sonnet-4', apiKeyEnv: 'TEST_API_KEY', maxRetries: 0, timeoutMs: 60_000, outputPathStrategy: 'free_form_only' });
114
- }
115
- // TEST 1: Full chain
116
- it('full chain: pain → task → artifact → candidates → ledger probation entry via pi-ai', async () => {
117
- const painId = 'test-pain-m9-e2e-01';
118
- const expectedTaskId = `diagnosis_${painId}`;
119
- const output = makeDiagnosticianOutputWithCandidates(expectedTaskId);
120
- mockComplete.mockResolvedValueOnce(makeAssistantMessage(JSON.stringify(output)));
121
- const bridge = new PainSignalBridge({
122
- stateManager,
123
- runner: createRunner(makePiAiAdapter()),
124
- intakeService,
125
- ledgerAdapter,
126
- autoIntakeEnabled: true,
127
- });
128
- const result = await bridge.onPainDetected({ painId, painType: 'tool_failure', source: 'test', reason: 'test failure', evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }] });
129
- expect(result.status).toBe('succeeded');
130
- expect(result.painId).toBe(painId);
131
- expect(result.taskId).toBe(expectedTaskId);
132
- expect(result.candidateIds.length).toBeGreaterThanOrEqual(1);
133
- expect(result.ledgerEntryIds.length).toBeGreaterThanOrEqual(1);
134
- const db = sqliteConn.getDb();
135
- const artifacts = db.prepare('SELECT * FROM artifacts WHERE task_id = ?').all(expectedTaskId);
136
- expect(artifacts).toHaveLength(1);
137
- const artifact = artifacts[0];
138
- expect(artifact.artifact_kind).toBe('diagnostician_output');
139
- const candidates = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
140
- expect(candidates.length).toBeGreaterThanOrEqual(1);
141
- for (const row of candidates) {
142
- const ledgerEntry = ledgerAdapter.existsForCandidate(row.candidate_id);
143
- expect(ledgerEntry).not.toBeNull();
144
- const entry = ledgerEntry;
145
- expect(entry.status).toBe('probation');
146
- }
147
- });
148
- // TEST 2: Idempotency
149
- it('idempotency: same painId twice produces no duplicate candidates or ledger entries', async () => {
150
- const painId = 'test-pain-m9-e2e-idempotent';
151
- const expectedTaskId = `diagnosis_${painId}`;
152
- const output = makeDiagnosticianOutputWithCandidates(expectedTaskId);
153
- mockComplete.mockResolvedValueOnce(makeAssistantMessage(JSON.stringify(output)));
154
- const bridge = new PainSignalBridge({
155
- stateManager,
156
- runner: createRunner(makePiAiAdapter()),
157
- intakeService,
158
- ledgerAdapter,
159
- autoIntakeEnabled: true,
160
- });
161
- const result1 = await bridge.onPainDetected({ painId, painType: 'tool_failure', source: 'test', reason: 'test', evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }] });
162
- expect(result1.status).toBe('succeeded');
163
- const db = sqliteConn.getDb();
164
- const firstCandidates = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
165
- const firstCandidateCount = firstCandidates.length;
166
- const firstLedgerCount = result1.ledgerEntryIds.length;
167
- // Second call — same painId, NOOP path (task already succeeded)
168
- const result2 = await bridge.onPainDetected({ painId, painType: 'tool_failure', source: 'test', reason: 'test', evidence: [{ sourceRef: 'test', note: 'E2E test evidence' }] });
169
- expect(result2.status).toBe('succeeded');
170
- const secondCandidates = db.prepare('SELECT * FROM principle_candidates WHERE task_id = ?').all(expectedTaskId);
171
- expect(secondCandidates.length).toBe(firstCandidateCount);
172
- expect(result2.ledgerEntryIds.length).toBe(firstLedgerCount);
173
- });
174
- });
175
- //# sourceMappingURL=m9-e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"m9-e2e.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/m9-e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAI7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,MAAM,YAAY,GAAG,cAA0C,CAAC;AAChE,MAAM,YAAY,GAAG,QAAoC,CAAC;AAE1D,iFAAiF;AACjF,MAAM,qBAAqB;IACR,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IACnE,mBAAmB,CAAC,KAA2B;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAAC,OAAO,KAAK,CAAC;IACrD,CAAC;IACD,kBAAkB,CAAC,WAAmB,IAAiC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACtH,qEAAqE;IACrE,mBAAmB,CAAC,SAAiB,IAAY,OAAO,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CACrJ;AAED,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,IAAY,EAAE,YAAqC,EAAE;IACjF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,EAAE,WAAoB;QAC1B,UAAU,EAAE,MAAe;QAC3B,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAAC,OAAe;IAC5D,OAAO;QACL,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAClF,OAAO,EAAE,6CAA6C;QACtD,SAAS,EAAE,uEAAuE;QAClF,kBAAkB,EAAE,EAAE;QACtB,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QAC5D,eAAe,EAAE;YACf,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,4EAA4E,EAAE;YAChH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mEAAmE,EAAE;YACvG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2CAA2C,EAAE;SAC3E;QACD,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEpE,QAAQ,CAAC,2DAA2D,EAAE,GAAG,EAAE;IAEzE,IAAI,OAAe,CAAC;IAEpB,IAAI,YAAiC,CAAC;IAEtC,IAAI,UAA4B,CAAC;IAEjC,IAAI,gBAAwC,CAAC;IAE7C,IAAI,YAA+B,CAAC;IAEpC,IAAI,aAAoC,CAAC;IAEzC,IAAI,aAAqC,CAAC;IAE1C,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,YAAY,GAAG,IAAI,mBAAmB,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAChC,UAAU,GAAI,YAAmD,CAAC,UAA8B,CAAC;QACjG,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,SAAS,GAAI,YAAkD,CAAC,SAAkB,CAAC;QACzF,MAAM,QAAQ,GAAI,YAAiD,CAAC,QAAiB,CAAC;QACtF,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjF,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,aAAa,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC5C,aAAa,GAAG,IAAI,sBAAsB,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5E,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC;QAC1C,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC;YAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,SAAS,YAAY,CAAC,cAAgC;QACpD,MAAM,SAAS,GAAG,IAAI,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,OAAO,IAAI,mBAAmB,CAC5B,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,oBAAoB,EAAE,EAAE,SAAS,EAAE,EAClH,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,SAAS,eAAe;QACtB,OAAO,IAAI,kBAAkB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnM,CAAC;IAED,qBAAqB;IACrB,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,MAAM,cAAc,GAAG,aAAa,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,qCAAqC,CAAC,cAAc,CAAC,CAAC;QACrE,YAAY,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,YAAY;YACZ,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;YACvC,aAAa;YACb,aAAa;YACb,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvL,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,cAAc,CAAqD,CAAC;QAClJ,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAmD,CAAC;QAChF,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,cAAc,CAA+B,CAAC;QACxI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAEpD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,WAAiC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC7C,MAAM,cAAc,GAAG,aAAa,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,qCAAqC,CAAC,cAAc,CAAC,CAAC;QACrE,YAAY,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,YAAY;YACZ,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;YACvC,aAAa;YACb,aAAa;YACb,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;QAChL,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,cAAc,CAA+B,CAAC;QAC7I,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC;QACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;QAEvD,gEAAgE;QAChE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;QAChL,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,cAAc,CAA+B,CAAC;QAC9I,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=max-attempts-exceeded.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"max-attempts-exceeded.integration.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.ts"],"names":[],"mappings":""}