@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diag-rootcause-output.js","sourceRoot":"","sources":["../../../src/runtime-v2/diagnostician/diag-rootcause-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * DistillerPromptBuilder — Stage B prompt builder for the split diagnostician pipeline.
3
+ *
4
+ * Constructs the prompt for the Distiller stage (Stage B). It receives the
5
+ * Stage A root cause artifact as input and produces an abstracted principle
6
+ * grounded on core axioms (T-01..T-10).
7
+ *
8
+ * ## Prompt Sections
9
+ *
10
+ * 1. Role — principle distiller identity
11
+ * 2. Input — Stage A root cause output (structured data)
12
+ * 3. Core Axioms — T-01..T-10 list (when coreGrounding=true)
13
+ * 4. Output Requirements — DiagDistillerOutputV1Schema
14
+ * 5. Quality Guard — abstract vs rule-like distinction
15
+ *
16
+ * @see PRI-372
17
+ */
18
+ import type { TSchema } from '@sinclair/typebox';
19
+ import type { SchemaPromptAdapter } from '../adapter/schema-prompt-adapter.js';
20
+ import type { DiagRootCauseOutputV1 } from './diag-rootcause-output.js';
21
+ import type { OutputLanguage } from '../language-directive.js';
22
+ import type { BuildPromptOptions } from '../diagnostician-prompt-builder.js';
23
+ /**
24
+ * Options for DistillerPromptBuilder constructor and buildDistillerInstruction.
25
+ *
26
+ * Uses an opts-object pattern to satisfy @typescript-eslint/max-params.
27
+ *
28
+ * @see PRI-372
29
+ */
30
+ export interface DistillerPromptBuilderOptions {
31
+ /** Schema prompt adapter (default: DefaultSchemaPromptAdapter) */
32
+ adapter?: SchemaPromptAdapter;
33
+ /** TypeBox schema for output validation (default: DiagDistillerOutputV1Schema) */
34
+ schema?: TSchema;
35
+ /** Output language directive (default: none) */
36
+ outputLanguage?: OutputLanguage;
37
+ /** Inject core axiom grounding section (default: false) */
38
+ coreGrounding?: boolean;
39
+ }
40
+ /**
41
+ * Input context for the Distiller stage (Stage B).
42
+ *
43
+ * Contains the Stage A root cause artifact ID and output, plus an optional
44
+ * coreGrounding flag that overrides the builder-level default.
45
+ *
46
+ * @see PRI-372
47
+ */
48
+ export interface DistillerContextInput {
49
+ /** Artifact ID of the Stage A root cause output — used for lineage tracing */
50
+ rootCauseArtifactId: string;
51
+ /** Stage A root cause output — the structured data to abstract from */
52
+ rootCauseOutput: DiagRootCauseOutputV1;
53
+ /** Override builder-level coreGrounding for this specific invocation */
54
+ coreGrounding?: boolean;
55
+ }
56
+ /**
57
+ * PromptInput for the Distiller stage (Stage B).
58
+ *
59
+ * Unlike Stage A (which uses the full DiagnosticianContextPayload),
60
+ * Stage B receives only the Stage A root cause artifact and the
61
+ * distiller instruction.
62
+ *
63
+ * @see PRI-372
64
+ */
65
+ export interface DistillerPromptInput {
66
+ /** Artifact ID of the Stage A root cause output — for lineage tracing */
67
+ rootCauseArtifactId: string;
68
+ /** Stage A root cause output — the structured data to abstract from */
69
+ rootCauseOutput: DiagRootCauseOutputV1;
70
+ /** Distiller protocol instruction for the LLM */
71
+ distillerInstruction: string;
72
+ }
73
+ /**
74
+ * Build result for the Distiller stage (Stage B).
75
+ *
76
+ * Follows the same contract as PromptBuildResult but with a
77
+ * DistillerPromptInput shape specific to Stage B.
78
+ *
79
+ * @see PRI-372
80
+ */
81
+ export interface DistillerPromptBuildResult {
82
+ /** JSON string — the exact value to pass as openclaw agent --message argument */
83
+ readonly message: string;
84
+ /** The DistillerPromptInput object that was serialized to JSON */
85
+ readonly promptInput: DistillerPromptInput;
86
+ }
87
+ /**
88
+ * Build the Stage B distiller protocol instruction.
89
+ *
90
+ * When `coreGrounding` is true, the Core Axioms section is included with
91
+ * the full T-01..T-10 list and a strict instruction prohibiting fabricated
92
+ * axiom IDs. When false or undefined, the section is omitted.
93
+ *
94
+ * @see PRI-372
95
+ */
96
+ export declare function buildDistillerProtocolInstruction(opts?: DistillerPromptBuilderOptions): string;
97
+ /**
98
+ * DistillerPromptBuilder — Stage B prompt builder for the split diagnostician pipeline.
99
+ *
100
+ * Receives the Stage A root cause artifact as input and produces an abstracted
101
+ * principle grounded on core axioms (T-01..T-10).
102
+ *
103
+ * Uses an opts-object pattern for all methods to satisfy @typescript-eslint/max-params.
104
+ *
105
+ * @see PRI-372
106
+ */
107
+ export declare class DistillerPromptBuilder {
108
+ private readonly adapter;
109
+ private readonly schema;
110
+ constructor(opts?: DistillerPromptBuilderOptions);
111
+ /**
112
+ * Build the Stage B distiller protocol instruction.
113
+ *
114
+ * Contains the role definition, input description, core axioms section
115
+ * (when coreGrounding=true), output requirements, and quality guard.
116
+ *
117
+ * @see PRI-372
118
+ */
119
+ buildDistillerInstruction(opts?: DistillerPromptBuilderOptions): string;
120
+ /**
121
+ * Build the full prompt for Stage B.
122
+ *
123
+ * Constructs a DistillerPromptBuildResult containing the JSON message to pass
124
+ * as the --message argument to the LLM agent. The message includes the
125
+ * distiller instruction and the Stage A root cause context.
126
+ *
127
+ * Per DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls.
128
+ * Per DPB-05: This method only builds the prompt; it does NOT commit to PD database.
129
+ *
130
+ * @see PRI-372
131
+ */
132
+ buildPrompt(context: DistillerContextInput, opts?: BuildPromptOptions): DistillerPromptBuildResult;
133
+ }
134
+ //# sourceMappingURL=distiller-prompt-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller-prompt-builder.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/diagnostician/distiller-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,kEAAkE;IAClE,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,eAAe,EAAE,qBAAqB,CAAC;IACvC,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,eAAe,EAAE,qBAAqB,CAAC;IACvC,iDAAiD;IACjD,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;CAC5C;AAID;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,GAAE,6BAAkC,GACvC,MAAM,CAgER;AAID;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,IAAI,GAAE,6BAAkC;IAKpD;;;;;;;OAOG;IACH,yBAAyB,CAAC,IAAI,GAAE,6BAAkC,GAAG,MAAM;IAS3E;;;;;;;;;;;OAWG;IACH,WAAW,CACT,OAAO,EAAE,qBAAqB,EAC9B,IAAI,GAAE,kBAAuB,GAC5B,0BAA0B;CAmB9B"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * DistillerPromptBuilder — Stage B prompt builder for the split diagnostician pipeline.
3
+ *
4
+ * Constructs the prompt for the Distiller stage (Stage B). It receives the
5
+ * Stage A root cause artifact as input and produces an abstracted principle
6
+ * grounded on core axioms (T-01..T-10).
7
+ *
8
+ * ## Prompt Sections
9
+ *
10
+ * 1. Role — principle distiller identity
11
+ * 2. Input — Stage A root cause output (structured data)
12
+ * 3. Core Axioms — T-01..T-10 list (when coreGrounding=true)
13
+ * 4. Output Requirements — DiagDistillerOutputV1Schema
14
+ * 5. Quality Guard — abstract vs rule-like distinction
15
+ *
16
+ * @see PRI-372
17
+ */
18
+ import { DefaultSchemaPromptAdapter } from '../adapter/schema-prompt-adapter.js';
19
+ import { DiagDistillerOutputV1Schema } from './diag-distiller-output.js';
20
+ import { CORE_PRINCIPLES } from '../core-principles/core-principle-registry.js';
21
+ import { buildLanguageDirective } from '../language-directive.js';
22
+ // ── Instruction builder ──────────────────────────────────────────────────────
23
+ /**
24
+ * Build the Stage B distiller protocol instruction.
25
+ *
26
+ * When `coreGrounding` is true, the Core Axioms section is included with
27
+ * the full T-01..T-10 list and a strict instruction prohibiting fabricated
28
+ * axiom IDs. When false or undefined, the section is omitted.
29
+ *
30
+ * @see PRI-372
31
+ */
32
+ export function buildDistillerProtocolInstruction(opts = {}) {
33
+ const adapter = opts.adapter ?? new DefaultSchemaPromptAdapter();
34
+ const schema = opts.schema ?? DiagDistillerOutputV1Schema;
35
+ const { outputLanguage, coreGrounding } = opts;
36
+ const example = adapter.generateExample(schema);
37
+ const constraints = adapter.generateConstraints(schema);
38
+ const languageDirective = buildLanguageDirective(outputLanguage);
39
+ // Core Axioms section — only when coreGrounding is true
40
+ const coreAxiomsBlock = coreGrounding
41
+ ? `
42
+ CORE AXIOMS:
43
+ The following core axioms are the system's foundational behavioral principles.
44
+ You MUST only reference axiom IDs from this list. Fabricating IDs not in this
45
+ list will cause validation failure.
46
+
47
+ ${CORE_PRINCIPLES.map(p => `${p.id}: ${p.statement}`).join('\n')}
48
+
49
+ `
50
+ : '';
51
+ return `You are a principle distiller. Your job is to abstract a specific root cause into a general, cross-scenario principle.
52
+
53
+ INPUT:
54
+ You will receive the Stage A root cause output as structured data. This contains:
55
+ - summary: a concise description of the diagnosis
56
+ - causalChain: the 5-Whys causal chain
57
+ - rootCause: the classified root cause with category prefix
58
+ - rootCauseCategory: People | Design | Assumption | Tooling
59
+ - evidence: supporting evidence entries
60
+ - confidence: the Stage A confidence score
61
+ ${coreAxiomsBlock}OUTPUT REQUIREMENTS:
62
+ Your output MUST match the following JSON schema exactly.
63
+
64
+ COMPLETE EXAMPLE OUTPUT (follow this exact structure):
65
+ ${example}
66
+
67
+ Key fields:
68
+ - abstractedPrinciple: ≤200 chars, abstract, cross-scenario principle that grows from the root cause
69
+ - groundedOnCorePrincipleIds: subset of the provided axiom IDs above (empty array if none apply)
70
+ - sourceRootCauseArtifactId: MUST match the provided artifact ID exactly
71
+ - scope: 'general' | 'domain' | 'scenario'
72
+ - rationale: why this principle addresses the root cause
73
+ - confidence: 0-1 scale
74
+
75
+ QUALITY GUARD:
76
+ Your principle must be ABSTRACT, not rule-like. Avoid concrete trigger patterns,
77
+ specific tools, or implementation details. A principle is directional wisdom;
78
+ a rule is a boundary condition.
79
+
80
+ Examples:
81
+ - GOOD (abstract principle): "Prefer understanding the existing structure before modifying it"
82
+ - BAD (rule-like): "Always run grep before editing files" or "Never use as casts"
83
+ - GOOD (intent over technique): "Explicitly stated user constraints take precedence over inferred optimal paths"
84
+ - BAD (technique-specific): "Do not create project files in /tmp directory"
85
+
86
+ CONSTRAINTS:
87
+ - Output ONLY valid JSON — no markdown, no explanatory text, no code fences, no prose before or after
88
+ - Do NOT read files, call tools, or write to any database
89
+ - abstractedPrinciple MUST be ≤200 characters
90
+ - groundedOnCorePrincipleIds MUST only contain IDs from the provided axiom list${coreGrounding ? ' above' : ''}; fabricated IDs cause validation failure
91
+ - sourceRootCauseArtifactId MUST match the provided artifact ID
92
+ ${constraints}${languageDirective}`;
93
+ }
94
+ // ── Prompt builder class ─────────────────────────────────────────────────────
95
+ /**
96
+ * DistillerPromptBuilder — Stage B prompt builder for the split diagnostician pipeline.
97
+ *
98
+ * Receives the Stage A root cause artifact as input and produces an abstracted
99
+ * principle grounded on core axioms (T-01..T-10).
100
+ *
101
+ * Uses an opts-object pattern for all methods to satisfy @typescript-eslint/max-params.
102
+ *
103
+ * @see PRI-372
104
+ */
105
+ export class DistillerPromptBuilder {
106
+ adapter;
107
+ schema;
108
+ constructor(opts = {}) {
109
+ this.adapter = opts.adapter ?? new DefaultSchemaPromptAdapter();
110
+ this.schema = opts.schema ?? DiagDistillerOutputV1Schema;
111
+ }
112
+ /**
113
+ * Build the Stage B distiller protocol instruction.
114
+ *
115
+ * Contains the role definition, input description, core axioms section
116
+ * (when coreGrounding=true), output requirements, and quality guard.
117
+ *
118
+ * @see PRI-372
119
+ */
120
+ buildDistillerInstruction(opts = {}) {
121
+ return buildDistillerProtocolInstruction({
122
+ adapter: opts.adapter ?? this.adapter,
123
+ schema: opts.schema ?? this.schema,
124
+ outputLanguage: opts.outputLanguage,
125
+ coreGrounding: opts.coreGrounding,
126
+ });
127
+ }
128
+ /**
129
+ * Build the full prompt for Stage B.
130
+ *
131
+ * Constructs a DistillerPromptBuildResult containing the JSON message to pass
132
+ * as the --message argument to the LLM agent. The message includes the
133
+ * distiller instruction and the Stage A root cause context.
134
+ *
135
+ * Per DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls.
136
+ * Per DPB-05: This method only builds the prompt; it does NOT commit to PD database.
137
+ *
138
+ * @see PRI-372
139
+ */
140
+ buildPrompt(context, opts = {}) {
141
+ const { outputLanguage } = opts;
142
+ const coreGrounding = context.coreGrounding ?? opts.coreGrounding;
143
+ const distillerInstruction = this.buildDistillerInstruction({
144
+ outputLanguage,
145
+ coreGrounding,
146
+ });
147
+ const promptInput = {
148
+ rootCauseArtifactId: context.rootCauseArtifactId,
149
+ rootCauseOutput: context.rootCauseOutput,
150
+ distillerInstruction,
151
+ };
152
+ const message = JSON.stringify(promptInput);
153
+ return { message, promptInput };
154
+ }
155
+ }
156
+ //# sourceMappingURL=distiller-prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller-prompt-builder.js","sourceRoot":"","sources":["../../../src/runtime-v2/diagnostician/distiller-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAEhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA6ElE,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,UAAU,iCAAiC,CAC/C,OAAsC,EAAE;IAExC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,0BAA0B,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,2BAA2B,CAAC;IAC1D,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAEjE,wDAAwD;IACxD,MAAM,eAAe,GAAG,aAAa;QACnC,CAAC,CAAC;;;;;;EAMJ,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;CAE/D;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;;;;;EAUP,eAAe;;;;EAIf,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;iFAyBwE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;EAE5G,WAAW,GAAG,iBAAiB,EAAE,CAAC;AACpC,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,OAAO,sBAAsB;IAChB,OAAO,CAAsB;IAC7B,MAAM,CAAU;IAEjC,YAAY,OAAsC,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,0BAA0B,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,2BAA2B,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACH,yBAAyB,CAAC,OAAsC,EAAE;QAChE,OAAO,iCAAiC,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAClC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CACT,OAA8B,EAC9B,OAA2B,EAAE;QAE7B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QAElE,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAC1D,cAAc;YACd,aAAa;SACd,CAAC,CAAC;QAEH,MAAM,WAAW,GAAyB;YACxC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,oBAAoB;SACrB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE5C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * RootCausePromptBuilder — Stage A prompt builder for the split diagnostician pipeline.
3
+ *
4
+ * Constructs the prompt for the Root Cause stage (Stage A), which identifies
5
+ * the underlying cause of a pain signal using a 5-Whys causal chain and
6
+ * categorises it into one of four root-cause categories.
7
+ *
8
+ * ## Phases
9
+ *
10
+ * - PHASE 1 — Evidence Review
11
+ * - PHASE 2 — Causal Chain (5 Whys)
12
+ * - PHASE 3 — Root Cause Classification
13
+ * - PHASE 3.5 — Core Axiom Grounding (when coreGrounding=true, PRI-371)
14
+ *
15
+ * ## Output
16
+ *
17
+ * The prompt requires output matching DiagRootCauseOutputV1Schema.
18
+ *
19
+ * @see PRI-372
20
+ */
21
+ import type { TSchema } from '@sinclair/typebox';
22
+ import type { SchemaPromptAdapter } from '../adapter/schema-prompt-adapter.js';
23
+ import type { DiagnosticianContextPayload } from '../context-payload.js';
24
+ import type { OutputLanguage } from '../language-directive.js';
25
+ import type { BuildPromptOptions, PromptBuildResult } from '../diagnostician-prompt-builder.js';
26
+ /**
27
+ * Options for RootCausePromptBuilder constructor and buildRootCauseInstruction.
28
+ *
29
+ * Uses an opts-object pattern to satisfy @typescript-eslint/max-params.
30
+ *
31
+ * @see PRI-372
32
+ */
33
+ export interface RootCausePromptBuilderOptions {
34
+ /** Schema prompt adapter (default: DefaultSchemaPromptAdapter) */
35
+ adapter?: SchemaPromptAdapter;
36
+ /** TypeBox schema for output validation (default: DiagRootCauseOutputV1Schema) */
37
+ schema?: TSchema;
38
+ /** Output language directive (default: none) */
39
+ outputLanguage?: OutputLanguage;
40
+ /** T-E (PRI-371): Inject core axiom grounding as PHASE 3.5 (default: false) */
41
+ coreGrounding?: boolean;
42
+ }
43
+ /**
44
+ * Build the Stage A diagnostic protocol instruction (PHASE 1–3 + optional PHASE 3.5).
45
+ *
46
+ * Per DPB-02 (LOCKED): Output is ONLY JSON — no markdown, no file ops, no tool calls.
47
+ * Per DPB-04: LLM can only analyse the context provided in the prompt; it must NOT
48
+ * read files, call tools, or write to databases.
49
+ *
50
+ * When `coreGrounding` is true, PHASE 3.5 (Core Axiom Grounding) is inserted
51
+ * between PHASE 3 and the final output instruction. When false or undefined,
52
+ * a newline is inserted to preserve byte-identical output (EP-03: no silent fallback).
53
+ *
54
+ * @see PRI-372
55
+ */
56
+ export declare function buildRootCauseProtocolInstruction(opts?: RootCausePromptBuilderOptions): string;
57
+ /**
58
+ * RootCausePromptBuilder — Stage A prompt builder for the split diagnostician pipeline.
59
+ *
60
+ * Transforms DiagnosticianContextPayload into a PromptBuildResult for the
61
+ * Root Cause stage (Stage A). The output prompt requires the LLM to produce
62
+ * JSON matching DiagRootCauseOutputV1Schema.
63
+ *
64
+ * Uses an opts-object pattern for all methods to satisfy @typescript-eslint/max-params.
65
+ *
66
+ * @see PRI-372
67
+ */
68
+ export declare class RootCausePromptBuilder {
69
+ private readonly adapter;
70
+ private readonly schema;
71
+ constructor(opts?: RootCausePromptBuilderOptions);
72
+ /**
73
+ * Build the Stage A diagnostic protocol instruction.
74
+ *
75
+ * Contains PHASE 1 (evidence review), PHASE 2 (causal chain / 5-Whys),
76
+ * PHASE 3 (root cause classification), and optional PHASE 3.5 (core axiom
77
+ * grounding when coreGrounding=true).
78
+ *
79
+ * @see PRI-372
80
+ */
81
+ buildRootCauseInstruction(opts?: RootCausePromptBuilderOptions): string;
82
+ /**
83
+ * Build the full prompt for Stage A.
84
+ *
85
+ * Transforms DiagnosticianContextPayload into a PromptBuildResult containing
86
+ * the JSON message to pass as the --message argument to the LLM agent.
87
+ *
88
+ * Per DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls.
89
+ * Per DPB-05: This method only builds the prompt; it does NOT commit to PD database.
90
+ * Per DPB-07: NO extraSystemPrompt is added — agent profile is the source of truth.
91
+ *
92
+ * @see PRI-372
93
+ */
94
+ buildPrompt(payload: DiagnosticianContextPayload, opts?: BuildPromptOptions): PromptBuildResult;
95
+ }
96
+ //# sourceMappingURL=rootcause-prompt-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootcause-prompt-builder.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/diagnostician/rootcause-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAS5C;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,kEAAkE;IAClE,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,GAAE,6BAAkC,GACvC,MAAM,CAsER;AAID;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,IAAI,GAAE,6BAAkC;IAKpD;;;;;;;;OAQG;IACH,yBAAyB,CAAC,IAAI,GAAE,6BAAkC,GAAG,MAAM;IAS3E;;;;;;;;;;;OAWG;IACH,WAAW,CACT,OAAO,EAAE,2BAA2B,EACpC,IAAI,GAAE,kBAAuB,GAC5B,iBAAiB;CAwErB"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * RootCausePromptBuilder — Stage A prompt builder for the split diagnostician pipeline.
3
+ *
4
+ * Constructs the prompt for the Root Cause stage (Stage A), which identifies
5
+ * the underlying cause of a pain signal using a 5-Whys causal chain and
6
+ * categorises it into one of four root-cause categories.
7
+ *
8
+ * ## Phases
9
+ *
10
+ * - PHASE 1 — Evidence Review
11
+ * - PHASE 2 — Causal Chain (5 Whys)
12
+ * - PHASE 3 — Root Cause Classification
13
+ * - PHASE 3.5 — Core Axiom Grounding (when coreGrounding=true, PRI-371)
14
+ *
15
+ * ## Output
16
+ *
17
+ * The prompt requires output matching DiagRootCauseOutputV1Schema.
18
+ *
19
+ * @see PRI-372
20
+ */
21
+ import { DefaultSchemaPromptAdapter } from '../adapter/schema-prompt-adapter.js';
22
+ import { DiagRootCauseOutputV1Schema } from './diag-rootcause-output.js';
23
+ import { buildLanguageDirective } from '../language-directive.js';
24
+ import { CORE_PRINCIPLES } from '../core-principles/core-principle-registry.js';
25
+ import { DEFAULT_PROMPT_BUILDER_LIMITS, summarizeConversationWindow, } from '../diagnostician-prompt-builder.js';
26
+ // ── Instruction builder ──────────────────────────────────────────────────────
27
+ /**
28
+ * Build the Stage A diagnostic protocol instruction (PHASE 1–3 + optional PHASE 3.5).
29
+ *
30
+ * Per DPB-02 (LOCKED): Output is ONLY JSON — no markdown, no file ops, no tool calls.
31
+ * Per DPB-04: LLM can only analyse the context provided in the prompt; it must NOT
32
+ * read files, call tools, or write to databases.
33
+ *
34
+ * When `coreGrounding` is true, PHASE 3.5 (Core Axiom Grounding) is inserted
35
+ * between PHASE 3 and the final output instruction. When false or undefined,
36
+ * a newline is inserted to preserve byte-identical output (EP-03: no silent fallback).
37
+ *
38
+ * @see PRI-372
39
+ */
40
+ export function buildRootCauseProtocolInstruction(opts = {}) {
41
+ const adapter = opts.adapter ?? new DefaultSchemaPromptAdapter();
42
+ const schema = opts.schema ?? DiagRootCauseOutputV1Schema;
43
+ const { outputLanguage, coreGrounding } = opts;
44
+ const example = adapter.generateExample(schema);
45
+ const constraints = adapter.generateConstraints(schema);
46
+ const languageDirective = buildLanguageDirective(outputLanguage);
47
+ // T-E (PRI-371): When coreGrounding is true, insert PHASE 3.5.
48
+ // When false or undefined, output is byte-identical to the original
49
+ // (EP-03: no silent fallback).
50
+ const phase35Block = coreGrounding
51
+ ? `
52
+ PHASE 3.5 — Core Axiom Grounding:
53
+ The following core axioms are the system's foundational behavioral principles.
54
+ If the root cause relates to any of these axioms, note the axiom ID (e.g. T-01)
55
+ in the ambiguityNotes field of your output.
56
+
57
+ Core Axioms:
58
+ ${CORE_PRINCIPLES.map(p => `${p.id}: ${p.statement}`).join('\n')}
59
+
60
+ `
61
+ : '\n';
62
+ return `You are a root cause analysis expert. Follow this protocol:
63
+
64
+ PHASE 1 — Evidence Review:
65
+ Review the provided sourceRefs, diagnosisTarget.evidence entries, and conversationWindow
66
+ entries from the context payload. Do NOT read any files or call any tools.
67
+ Record all evidence by referencing the sourceRef identifiers and conversation
68
+ entries already present in the context. Each evidence item must cite its source.
69
+ Pay special attention to diagnosisTarget.evidence — these are the primary behavioral
70
+ evidence (owner messages and agent actions) that the root cause analysis must address.
71
+
72
+ PHASE 2 — Causal Chain (5 Whys):
73
+ Build a Why-1 through Why-5 causal chain. Each Why MUST have at least one evidenceRefs entry referencing a sourceRef from Phase 1.
74
+ - If no evidence is available for a Why level, reference the closest available evidence and note the gap in ambiguityNotes.
75
+ - evidenceRefs MUST NOT be an empty array — every causal chain entry must cite at least one evidence source.
76
+ - Why 1: Surface phenomenon (visible error)
77
+ - Why 2: Direct cause (nearest trigger)
78
+ - Why 3: Process gap (missing check/gate)
79
+ - Why 4: Design flaw (why gap exists)
80
+ - Why 5: Root cause (systemic defect)
81
+ Stop early if you find a directly fixable problem.
82
+
83
+ PHASE 3 — Root Cause Classification:
84
+ Classify into ONE: People | Design | Assumption | Tooling
85
+ - People: capability blind spots, habit issues
86
+ - Design: architecture defects, missing gates, process gaps
87
+ - Assumption: wrong assumptions about env/versions/deps
88
+ - Tooling: tool misconfiguration, API changes
89
+ ${phase35Block}CRITICAL: Your ENTIRE response must be ONLY the JSON object below. Do NOT include any text before or after the JSON. Do NOT wrap the JSON in markdown code fences. Do NOT add explanatory prose. Output the raw JSON object and nothing else.
90
+
91
+ COMPLETE EXAMPLE OUTPUT (follow this exact structure):
92
+ ${example}
93
+
94
+ IMPORTANT: The example above is ILLUSTRATIVE ONLY. Your root cause analysis MUST be based on the actual evidence in this context — do not copy the example text verbatim.
95
+
96
+ CONSTRAINTS:
97
+ - Output ONLY valid JSON — no markdown, no explanatory text, no code fences, no prose before or after
98
+ - Do NOT read files, call tools, or write to any database
99
+ - rootCause MUST include category prefix: "People: ..." or "Design: ..." or "Assumption: ..." or "Tooling: ..."
100
+ - rootCauseCategory MUST match the category prefix in rootCause
101
+ - If diagnosisTarget.evidence is an empty array (length === 0), you MUST NOT fabricate evidence entries.
102
+ Output confidence < 0.3 and set ambiguityNotes to include "Insufficient evidence".
103
+ - evidence: list all evidence items that support your analysis. If sourceRefs or diagnosisTarget.evidence
104
+ were provided in the input, you MUST reference them here. Only leave empty if the input genuinely
105
+ contains no evidence at all.
106
+ ${constraints}${languageDirective}`;
107
+ }
108
+ // ── Prompt builder class ─────────────────────────────────────────────────────
109
+ /**
110
+ * RootCausePromptBuilder — Stage A prompt builder for the split diagnostician pipeline.
111
+ *
112
+ * Transforms DiagnosticianContextPayload into a PromptBuildResult for the
113
+ * Root Cause stage (Stage A). The output prompt requires the LLM to produce
114
+ * JSON matching DiagRootCauseOutputV1Schema.
115
+ *
116
+ * Uses an opts-object pattern for all methods to satisfy @typescript-eslint/max-params.
117
+ *
118
+ * @see PRI-372
119
+ */
120
+ export class RootCausePromptBuilder {
121
+ adapter;
122
+ schema;
123
+ constructor(opts = {}) {
124
+ this.adapter = opts.adapter ?? new DefaultSchemaPromptAdapter();
125
+ this.schema = opts.schema ?? DiagRootCauseOutputV1Schema;
126
+ }
127
+ /**
128
+ * Build the Stage A diagnostic protocol instruction.
129
+ *
130
+ * Contains PHASE 1 (evidence review), PHASE 2 (causal chain / 5-Whys),
131
+ * PHASE 3 (root cause classification), and optional PHASE 3.5 (core axiom
132
+ * grounding when coreGrounding=true).
133
+ *
134
+ * @see PRI-372
135
+ */
136
+ buildRootCauseInstruction(opts = {}) {
137
+ return buildRootCauseProtocolInstruction({
138
+ adapter: opts.adapter ?? this.adapter,
139
+ schema: opts.schema ?? this.schema,
140
+ outputLanguage: opts.outputLanguage,
141
+ coreGrounding: opts.coreGrounding,
142
+ });
143
+ }
144
+ /**
145
+ * Build the full prompt for Stage A.
146
+ *
147
+ * Transforms DiagnosticianContextPayload into a PromptBuildResult containing
148
+ * the JSON message to pass as the --message argument to the LLM agent.
149
+ *
150
+ * Per DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls.
151
+ * Per DPB-05: This method only builds the prompt; it does NOT commit to PD database.
152
+ * Per DPB-07: NO extraSystemPrompt is added — agent profile is the source of truth.
153
+ *
154
+ * @see PRI-372
155
+ */
156
+ buildPrompt(payload, opts = {}) {
157
+ const limits = opts.limits ?? DEFAULT_PROMPT_BUILDER_LIMITS;
158
+ const { outputLanguage, coreGrounding } = opts;
159
+ const truncationWarnings = [];
160
+ // DPB-04: Apply truncation to conversationWindow to prevent token overflow
161
+ const rawWindow = summarizeConversationWindow(payload.conversationWindow);
162
+ const windowEntries = rawWindow.slice(0, limits.maxConversationEntries);
163
+ if (rawWindow.length > limits.maxConversationEntries) {
164
+ truncationWarnings.push(`conversationWindow truncated from ${rawWindow.length} to ${limits.maxConversationEntries} entries`);
165
+ }
166
+ // Truncate individual entry text
167
+ const conversationWindow = windowEntries.map((entry) => {
168
+ if (entry.text && entry.text.length > limits.maxEntryTextChars) {
169
+ return {
170
+ ...entry,
171
+ text: entry.text.slice(0, limits.maxEntryTextChars) + '...[truncated]',
172
+ };
173
+ }
174
+ return entry;
175
+ });
176
+ // Build compact context — replace conversationWindow with truncated version
177
+ const compactContext = {
178
+ ...payload,
179
+ conversationWindow,
180
+ };
181
+ const diagnosticInstruction = this.buildRootCauseInstruction({
182
+ outputLanguage,
183
+ coreGrounding,
184
+ });
185
+ // DPB-04: Explicit top-level fields at the prompt level
186
+ const promptInput = {
187
+ taskId: payload.taskId,
188
+ contextHash: payload.contextHash,
189
+ diagnosisTarget: payload.diagnosisTarget,
190
+ conversationWindow,
191
+ sourceRefs: payload.sourceRefs,
192
+ context: compactContext,
193
+ diagnosticInstruction,
194
+ ...(truncationWarnings.length > 0 ? { truncationWarnings } : {}),
195
+ };
196
+ // DPB-02: Output is ONLY JSON — no markdown, no file ops, no tool calls
197
+ let message = JSON.stringify(promptInput);
198
+ // If message exceeds maxMessageChars, truncate the diagnostic instruction
199
+ if (message.length > limits.maxMessageChars) {
200
+ const surplus = message.length - limits.maxMessageChars;
201
+ const instruction = diagnosticInstruction;
202
+ // Keep at least the first 200 chars of the instruction + a note
203
+ const keepLength = Math.max(200, instruction.length - surplus - 100);
204
+ const truncatedInstruction = instruction.slice(0, keepLength) +
205
+ '\n\n[OUTPUT FORMAT section is REQUIRED; other sections may be summarized if needed]';
206
+ promptInput.diagnosticInstruction = truncatedInstruction;
207
+ promptInput.truncationWarnings = [
208
+ ...truncationWarnings,
209
+ `diagnosticInstruction truncated due to size (${message.length} > ${limits.maxMessageChars})`,
210
+ ];
211
+ message = JSON.stringify(promptInput);
212
+ }
213
+ return { message, promptInput };
214
+ }
215
+ }
216
+ //# sourceMappingURL=rootcause-prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootcause-prompt-builder.js","sourceRoot":"","sources":["../../../src/runtime-v2/diagnostician/rootcause-prompt-builder.ts"],"names":[],"mappings":"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"}