create-principles-disciple 1.81.0 → 1.83.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 (502) hide show
  1. package/console/dist/server/config/pd-config-store.d.ts +135 -0
  2. package/console/dist/server/config/pd-config-store.js +660 -0
  3. package/console/dist/server/index.js +40 -389
  4. package/console/dist/server/models/ActivationsConsoleModel.d.ts +33 -0
  5. package/console/dist/server/models/ActivationsConsoleModel.js +112 -0
  6. package/console/dist/server/models/ApprovalsConsoleModel.d.ts +5 -0
  7. package/console/dist/server/models/ApprovalsConsoleModel.js +14 -0
  8. package/console/dist/server/models/ApprovalsGroupedConsoleModel.d.ts +25 -0
  9. package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +126 -0
  10. package/console/dist/server/models/ConsoleLifecycleDatasource.d.ts +13 -0
  11. package/console/dist/server/models/ConsoleLifecycleDatasource.js +73 -0
  12. package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +58 -0
  13. package/console/dist/server/models/EvidenceChainConsoleModel.js +493 -0
  14. package/console/dist/server/models/GovernanceConsoleModel.d.ts +74 -0
  15. package/console/dist/server/models/GovernanceConsoleModel.js +246 -0
  16. package/console/dist/server/models/HealthCheckModel.d.ts +0 -4
  17. package/console/dist/server/models/HealthCheckModel.js +49 -80
  18. package/console/dist/server/models/LifecycleConsoleModel.d.ts +19 -0
  19. package/console/dist/server/models/LifecycleConsoleModel.js +55 -0
  20. package/console/dist/server/models/PrincipleClassifier.d.ts +41 -0
  21. package/console/dist/server/models/PrincipleClassifier.js +100 -0
  22. package/console/dist/server/models/PrinciplesConsoleModel.d.ts +12 -1
  23. package/console/dist/server/models/PrinciplesConsoleModel.js +53 -6
  24. package/console/dist/server/models/WorkspaceService.d.ts +2 -1
  25. package/console/dist/server/models/WorkspaceService.js +51 -23
  26. package/console/dist/server/routes/activations.d.ts +3 -0
  27. package/console/dist/server/routes/activations.js +111 -0
  28. package/console/dist/server/routes/approvals-grouped.d.ts +3 -0
  29. package/console/dist/server/routes/approvals-grouped.js +32 -0
  30. package/console/dist/server/routes/approvals.js +28 -4
  31. package/console/dist/server/routes/config.d.ts +27 -0
  32. package/console/dist/server/routes/config.js +213 -0
  33. package/console/dist/server/routes/evidence-chain.d.ts +9 -0
  34. package/console/dist/server/routes/evidence-chain.js +32 -0
  35. package/console/dist/server/routes/governance.d.ts +3 -0
  36. package/console/dist/server/routes/governance.js +32 -0
  37. package/console/dist/server/routes/{evolution.d.ts → lifecycle.d.ts} +2 -2
  38. package/console/dist/server/routes/lifecycle.js +48 -0
  39. package/console/dist/server/routes/principles.js +74 -1
  40. package/console/dist/server/routes/workspaces.js +8 -1
  41. package/console/dist/server/utils/response.d.ts +1 -1
  42. package/console/dist/server/utils/response.js +6 -2
  43. package/console/dist/types.d.ts +1 -0
  44. package/console/dist/ui/App.js +116 -40
  45. package/console/dist/ui/api.d.ts +88 -501
  46. package/console/dist/ui/api.js +139 -162
  47. package/console/dist/ui/components/approval-card.js +1 -1
  48. package/console/dist/ui/components/approval-detail-dialog.js +1 -1
  49. package/console/dist/ui/components/auth/login-form.d.ts +3 -0
  50. package/console/dist/ui/components/auth/login-form.js +36 -0
  51. package/console/dist/ui/components/auth/splash-screen.d.ts +8 -0
  52. package/console/dist/ui/components/auth/splash-screen.js +22 -0
  53. package/console/dist/ui/components/layout/app-sidebar.d.ts +1 -0
  54. package/console/dist/ui/components/layout/app-sidebar.js +56 -0
  55. package/console/dist/ui/components/layout/page-shell.d.ts +11 -0
  56. package/console/dist/ui/components/layout/page-shell.js +10 -0
  57. package/console/dist/ui/components/layout/section-title.d.ts +10 -0
  58. package/console/dist/ui/components/layout/section-title.js +9 -0
  59. package/console/dist/ui/components/theme-provider.d.ts +1 -1
  60. package/console/dist/ui/components/theme-provider.js +13 -8
  61. package/console/dist/ui/components/theme-toggle.js +2 -21
  62. package/console/dist/ui/components/ui/badge.d.ts +1 -1
  63. package/console/dist/ui/components/ui/badge.js +7 -5
  64. package/console/dist/ui/components/ui/button.d.ts +2 -2
  65. package/console/dist/ui/components/ui/button.js +12 -11
  66. package/console/dist/ui/components/ui/card.js +6 -6
  67. package/console/dist/ui/components/ui/sheet.d.ts +1 -1
  68. package/console/dist/ui/i18n/en.json +401 -343
  69. package/console/dist/ui/i18n/index.js +2 -2
  70. package/console/dist/ui/i18n/zh-CN.json +406 -348
  71. package/console/dist/ui/main.d.ts +1 -1
  72. package/console/dist/ui/main.js +1 -0
  73. package/console/dist/ui/pages/activation/ActivationPage.d.ts +1 -0
  74. package/console/dist/ui/pages/activation/ActivationPage.js +150 -0
  75. package/console/dist/ui/pages/activation/ActivationValidators.d.ts +20 -0
  76. package/console/dist/ui/pages/activation/ActivationValidators.js +156 -0
  77. package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +1 -0
  78. package/console/dist/ui/pages/control-center/ControlCenterPage.js +447 -0
  79. package/console/dist/ui/pages/debt/DebtPage.d.ts +1 -0
  80. package/console/dist/ui/pages/debt/DebtPage.js +5 -0
  81. package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +1 -0
  82. package/console/dist/ui/pages/design-system/DesignSystemPage.js +30 -0
  83. package/console/dist/ui/pages/focus/FocusPage.d.ts +1 -0
  84. package/console/dist/ui/pages/focus/FocusPage.js +265 -0
  85. package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +59 -0
  86. package/console/dist/ui/pages/pain/PainEvidenceValidators.js +125 -0
  87. package/console/dist/ui/pages/pain/PainPage.js +136 -0
  88. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +264 -0
  89. package/console/dist/ui/pages/principles/PrinciplesPage.js +244 -0
  90. package/console/dist/ui/pages/report-problem/ReportProblemPage.js +245 -0
  91. package/console/dist/ui/pages/settings/SettingsPage.d.ts +4 -0
  92. package/console/dist/ui/pages/settings/SettingsPage.js +202 -0
  93. package/console/dist/ui/pages/settings/UpdatePage.d.ts +5 -0
  94. package/console/dist/ui/pages/settings/UpdatePage.js +168 -0
  95. package/console/dist/ui/utils/control-center-helpers.d.ts +58 -0
  96. package/console/dist/ui/utils/control-center-helpers.js +152 -0
  97. package/console/dist/ui/utils/validators.d.ts +350 -0
  98. package/console/dist/ui/utils/validators.js +995 -0
  99. package/console/dist/web/assets/app.css +672 -902
  100. package/console/dist/web/assets/app.js +6404 -15347
  101. package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-C5JECUCT.woff2 +0 -0
  102. package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-FGCZYWMY.woff +0 -0
  103. package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-C7IFWGF6.woff2 +0 -0
  104. package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-PWXUA557.woff +0 -0
  105. package/console/dist/web/assets/jetbrains-mono-greek-400-normal-JJNQZMPZ.woff +0 -0
  106. package/console/dist/web/assets/jetbrains-mono-greek-400-normal-O7JTTR3P.woff2 +0 -0
  107. package/console/dist/web/assets/jetbrains-mono-latin-400-normal-3OOWLGQ2.woff2 +0 -0
  108. package/console/dist/web/assets/jetbrains-mono-latin-400-normal-WDD34GPP.woff +0 -0
  109. package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-55RNMRQS.woff +0 -0
  110. package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-JVR3IR4Z.woff2 +0 -0
  111. package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-7ULXAK72.woff +0 -0
  112. package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-KU7YLUPA.woff2 +0 -0
  113. package/console/package.json +2 -1
  114. package/core/dist/runtime-v2/__tests__/admission-gate.test.js +49 -0
  115. package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
  116. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +16 -1
  117. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  118. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts +21 -0
  119. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts.map +1 -0
  120. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +354 -0
  121. package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -0
  122. package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts +12 -0
  123. package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts.map +1 -0
  124. package/core/dist/runtime-v2/__tests__/language-directive.test.js +162 -0
  125. package/core/dist/runtime-v2/__tests__/language-directive.test.js.map +1 -0
  126. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +23 -1
  127. package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  128. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +48 -3
  129. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  130. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +13 -1
  131. package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
  132. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts +12 -0
  133. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts.map +1 -0
  134. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js +194 -0
  135. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js.map +1 -0
  136. package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js +5 -3
  137. package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js.map +1 -1
  138. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +1 -0
  139. package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
  140. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js +54 -0
  141. package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
  142. package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js +15 -2
  143. package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js.map +1 -1
  144. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +10 -0
  145. package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
  146. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +17 -2
  147. package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
  148. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +36 -0
  149. package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
  150. package/core/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
  151. package/core/dist/runtime-v2/activation/activation-dispatcher.js +1 -1
  152. package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
  153. package/core/dist/runtime-v2/activation/activation-types.d.ts +10 -0
  154. package/core/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
  155. package/core/dist/runtime-v2/activation/activation-types.js.map +1 -1
  156. package/core/dist/runtime-v2/activation/approval-queue.d.ts +6 -0
  157. package/core/dist/runtime-v2/activation/approval-queue.d.ts.map +1 -1
  158. package/core/dist/runtime-v2/activation/approval-queue.js +3 -0
  159. package/core/dist/runtime-v2/activation/approval-queue.js.map +1 -1
  160. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts +2 -0
  161. package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts.map +1 -1
  162. package/core/dist/runtime-v2/activation/memory-activation-state-store.js +17 -1
  163. package/core/dist/runtime-v2/activation/memory-activation-state-store.js.map +1 -1
  164. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts +6 -0
  165. package/core/dist/runtime-v2/activation/memory-approval-store.d.ts.map +1 -1
  166. package/core/dist/runtime-v2/activation/memory-approval-store.js +16 -0
  167. package/core/dist/runtime-v2/activation/memory-approval-store.js.map +1 -1
  168. package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js +1 -1
  169. package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
  170. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts +2 -0
  171. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
  172. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +34 -6
  173. package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
  174. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts +6 -0
  175. package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
  176. package/core/dist/runtime-v2/activation/sqlite-approval-store.js +10 -0
  177. package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
  178. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js +51 -1
  179. package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js.map +1 -1
  180. package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js +145 -0
  181. package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js.map +1 -1
  182. package/core/dist/runtime-v2/adapter/json-extractor.d.ts +13 -0
  183. package/core/dist/runtime-v2/adapter/json-extractor.d.ts.map +1 -1
  184. package/core/dist/runtime-v2/adapter/json-extractor.js +103 -0
  185. package/core/dist/runtime-v2/adapter/json-extractor.js.map +1 -1
  186. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts +4 -2
  187. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts.map +1 -1
  188. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js +57 -5
  189. package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js.map +1 -1
  190. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts +18 -0
  191. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts.map +1 -0
  192. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +633 -0
  193. package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -0
  194. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.d.ts +13 -0
  195. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.d.ts.map +1 -0
  196. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +447 -0
  197. package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -0
  198. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.d.ts +12 -0
  199. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.d.ts.map +1 -0
  200. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +525 -0
  201. package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -0
  202. package/core/dist/runtime-v2/config/index.d.ts +3 -1
  203. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  204. package/core/dist/runtime-v2/config/index.js +1 -0
  205. package/core/dist/runtime-v2/config/index.js.map +1 -1
  206. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +93 -0
  207. package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -0
  208. package/core/dist/runtime-v2/config/pd-config-agent-binding.js +184 -0
  209. package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -0
  210. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  211. package/core/dist/runtime-v2/config/pd-config-defaults.js +2 -0
  212. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  213. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  214. package/core/dist/runtime-v2/config/pd-config-effective.js +3 -0
  215. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  216. package/core/dist/runtime-v2/config/pd-config-types.d.ts +8 -0
  217. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  218. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  219. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +13 -0
  220. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +1 -0
  221. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +97 -0
  222. package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +1 -0
  223. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +3 -2
  224. package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  225. package/core/dist/runtime-v2/diagnostician-prompt-builder.js +6 -4
  226. package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  227. package/core/dist/runtime-v2/evidence-sanitizer.d.ts +57 -0
  228. package/core/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -0
  229. package/core/dist/runtime-v2/evidence-sanitizer.js +213 -0
  230. package/core/dist/runtime-v2/evidence-sanitizer.js.map +1 -0
  231. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts +7 -0
  232. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts.map +1 -0
  233. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js +170 -0
  234. package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js.map +1 -0
  235. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts +18 -0
  236. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts.map +1 -0
  237. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js +277 -0
  238. package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js.map +1 -0
  239. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts +13 -0
  240. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts.map +1 -0
  241. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +264 -0
  242. package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -0
  243. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts +16 -0
  244. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts.map +1 -0
  245. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js +316 -0
  246. package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js.map +1 -0
  247. package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts +126 -0
  248. package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts.map +1 -0
  249. package/core/dist/runtime-v2/evidence-triage/admission-events.js +159 -0
  250. package/core/dist/runtime-v2/evidence-triage/admission-events.js.map +1 -0
  251. package/core/dist/runtime-v2/evidence-triage/index.d.ts +16 -0
  252. package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -0
  253. package/core/dist/runtime-v2/evidence-triage/index.js +13 -0
  254. package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -0
  255. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +48 -0
  256. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts.map +1 -0
  257. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +131 -0
  258. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js.map +1 -0
  259. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +32 -0
  260. package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -0
  261. package/core/dist/runtime-v2/evidence-triage/triage-policy.js +95 -0
  262. package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -0
  263. package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts +116 -0
  264. package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts.map +1 -0
  265. package/core/dist/runtime-v2/evidence-triage/trigger-controller.js +218 -0
  266. package/core/dist/runtime-v2/evidence-triage/trigger-controller.js.map +1 -0
  267. package/core/dist/runtime-v2/evidence-triage/types.d.ts +65 -0
  268. package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -0
  269. package/core/dist/runtime-v2/evidence-triage/types.js +38 -0
  270. package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -0
  271. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +10 -0
  272. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
  273. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  274. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +1 -0
  275. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  276. package/core/dist/runtime-v2/index.d.ts +8 -1
  277. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  278. package/core/dist/runtime-v2/index.js +7 -1
  279. package/core/dist/runtime-v2/index.js.map +1 -1
  280. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts +12 -0
  281. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts.map +1 -0
  282. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js +83 -0
  283. package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js.map +1 -0
  284. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +10 -0
  285. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
  286. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +13 -1
  287. package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
  288. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +3 -0
  289. package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
  290. package/core/dist/runtime-v2/internalization/scribe-runner.js +2 -0
  291. package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
  292. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +1 -1
  293. package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
  294. package/core/dist/runtime-v2/language-directive.d.ts +80 -0
  295. package/core/dist/runtime-v2/language-directive.d.ts.map +1 -0
  296. package/core/dist/runtime-v2/language-directive.js +108 -0
  297. package/core/dist/runtime-v2/language-directive.js.map +1 -0
  298. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  299. package/core/dist/runtime-v2/pain-signal-observability.js +24 -11
  300. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  301. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +16 -0
  302. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  303. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +97 -6
  304. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  305. package/core/dist/runtime-v2/pain-to-principle-service.d.ts +7 -0
  306. package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  307. package/core/dist/runtime-v2/pain-to-principle-service.js +2 -0
  308. package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  309. package/core/dist/runtime-v2/proven-channel-baseline.d.ts.map +1 -1
  310. package/core/dist/runtime-v2/proven-channel-baseline.js +14 -0
  311. package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
  312. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +40 -0
  313. package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +1 -1
  314. package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  315. package/core/dist/runtime-v2/runner/base-peer-runner.js +1 -0
  316. package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  317. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +10 -0
  318. package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +1 -1
  319. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js +1 -0
  320. package/core/dist/runtime-v2/runner/diagnostician-runner-options.js.map +1 -1
  321. package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +1 -1
  322. package/core/dist/runtime-v2/runner/diagnostician-runner.js +28 -4
  323. package/core/dist/runtime-v2/runner/diagnostician-runner.js.map +1 -1
  324. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +9 -0
  325. package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
  326. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
  327. package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js +34 -1
  328. package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js.map +1 -1
  329. package/core/dist/runtime-v2/store/runtime-state-manager.js +1 -0
  330. package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
  331. package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
  332. package/core/dist/runtime-v2/store/sqlite-connection.js +9 -1
  333. package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
  334. package/core/dist/runtime-v2/store/task/sqlite-task-store.js +1 -1
  335. package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  336. package/core/dist/runtime-v2/task-status.d.ts +4 -4
  337. package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
  338. package/core/dist/runtime-v2/task-status.js +2 -2
  339. package/core/dist/runtime-v2/task-status.js.map +1 -1
  340. package/core/package.json +1 -1
  341. package/dist/installer.js +1 -1
  342. package/dist/installer.js.map +1 -1
  343. package/package.json +2 -2
  344. package/pd-cli/dist/commands/console.d.ts +2 -0
  345. package/pd-cli/dist/commands/console.d.ts.map +1 -1
  346. package/pd-cli/dist/commands/console.js +6 -1
  347. package/pd-cli/dist/commands/console.js.map +1 -1
  348. package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
  349. package/pd-cli/dist/commands/diagnose.js +18 -1
  350. package/pd-cli/dist/commands/diagnose.js.map +1 -1
  351. package/pd-cli/dist/commands/pain-evidence.d.ts +41 -0
  352. package/pd-cli/dist/commands/pain-evidence.d.ts.map +1 -0
  353. package/pd-cli/dist/commands/pain-evidence.js +177 -0
  354. package/pd-cli/dist/commands/pain-evidence.js.map +1 -0
  355. package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
  356. package/pd-cli/dist/commands/pain-record.js +24 -9
  357. package/pd-cli/dist/commands/pain-record.js.map +1 -1
  358. package/pd-cli/dist/commands/pain-retry.d.ts +19 -0
  359. package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -0
  360. package/pd-cli/dist/commands/pain-retry.js +485 -0
  361. package/pd-cli/dist/commands/pain-retry.js.map +1 -0
  362. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  363. package/pd-cli/dist/commands/runtime-internalization-run-once.js +59 -9
  364. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  365. package/pd-cli/dist/commands/runtime-uat.d.ts +1 -0
  366. package/pd-cli/dist/commands/runtime-uat.d.ts.map +1 -1
  367. package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts +2 -0
  368. package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts.map +1 -0
  369. package/pd-cli/dist/commands/runtime-uat.guard.test.js +155 -0
  370. package/pd-cli/dist/commands/runtime-uat.guard.test.js.map +1 -0
  371. package/pd-cli/dist/commands/runtime-uat.js +29 -3
  372. package/pd-cli/dist/commands/runtime-uat.js.map +1 -1
  373. package/pd-cli/dist/config-reader.d.ts +25 -0
  374. package/pd-cli/dist/config-reader.d.ts.map +1 -0
  375. package/pd-cli/dist/config-reader.js +109 -0
  376. package/pd-cli/dist/config-reader.js.map +1 -0
  377. package/pd-cli/dist/index.js +40 -5
  378. package/pd-cli/dist/index.js.map +1 -1
  379. package/pd-cli/dist/services/console-launcher.d.ts.map +1 -1
  380. package/pd-cli/dist/services/console-launcher.js +29 -15
  381. package/pd-cli/dist/services/console-launcher.js.map +1 -1
  382. package/pd-cli/dist/services/demo-story-a-runner.d.ts.map +1 -1
  383. package/pd-cli/dist/services/demo-story-a-runner.js +1 -0
  384. package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
  385. package/pd-cli/dist/utils/production-workspace-guard.d.ts +77 -0
  386. package/pd-cli/dist/utils/production-workspace-guard.d.ts.map +1 -0
  387. package/pd-cli/dist/utils/production-workspace-guard.js +170 -0
  388. package/pd-cli/dist/utils/production-workspace-guard.js.map +1 -0
  389. package/pd-cli/dist/utils/production-workspace-guard.test.d.ts +2 -0
  390. package/pd-cli/dist/utils/production-workspace-guard.test.d.ts.map +1 -0
  391. package/pd-cli/dist/utils/production-workspace-guard.test.js +95 -0
  392. package/pd-cli/dist/utils/production-workspace-guard.test.js.map +1 -0
  393. package/pd-cli/package.json +1 -1
  394. package/plugin/dist/commands/pain.js +27 -2
  395. package/plugin/dist/core/pain-diagnostic-gate.d.ts +6 -0
  396. package/plugin/dist/core/pain-diagnostic-gate.js +9 -0
  397. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +90 -0
  398. package/plugin/dist/hooks/after-tool-call-helpers.js +486 -0
  399. package/plugin/dist/hooks/after-tool-call-types.d.ts +92 -0
  400. package/plugin/dist/hooks/after-tool-call-types.js +13 -0
  401. package/plugin/dist/hooks/gate-block-helper.js +73 -29
  402. package/plugin/dist/hooks/llm.js +49 -29
  403. package/plugin/dist/hooks/message-sanitize.d.ts +21 -0
  404. package/plugin/dist/hooks/message-sanitize.js +30 -0
  405. package/plugin/dist/hooks/pain.d.ts +26 -3
  406. package/plugin/dist/hooks/pain.js +165 -425
  407. package/plugin/dist/hooks/prompt.js +3 -2
  408. package/plugin/dist/hooks/trajectory-evidence.d.ts +11 -0
  409. package/plugin/dist/hooks/trajectory-evidence.js +65 -0
  410. package/plugin/dist/hooks/triage-adapter.d.ts +82 -0
  411. package/plugin/dist/hooks/triage-adapter.js +121 -0
  412. package/console/dist/server/models/EventLogReadModel.d.ts +0 -33
  413. package/console/dist/server/models/EventLogReadModel.js +0 -218
  414. package/console/dist/server/models/EvolutionConsoleModel.d.ts +0 -79
  415. package/console/dist/server/models/EvolutionConsoleModel.js +0 -179
  416. package/console/dist/server/models/FeedbackConsoleModel.d.ts +0 -38
  417. package/console/dist/server/models/FeedbackConsoleModel.js +0 -129
  418. package/console/dist/server/models/GateConsoleModel.d.ts +0 -50
  419. package/console/dist/server/models/GateConsoleModel.js +0 -151
  420. package/console/dist/server/models/OverviewConsoleModel.d.ts +0 -22
  421. package/console/dist/server/models/OverviewConsoleModel.js +0 -202
  422. package/console/dist/server/models/PipelineStatsModel.d.ts +0 -35
  423. package/console/dist/server/models/PipelineStatsModel.js +0 -129
  424. package/console/dist/server/models/SampleConsoleModel.d.ts +0 -21
  425. package/console/dist/server/models/SampleConsoleModel.js +0 -188
  426. package/console/dist/server/models/ThinkingModelsConsoleModel.d.ts +0 -22
  427. package/console/dist/server/models/ThinkingModelsConsoleModel.js +0 -75
  428. package/console/dist/server/routes/agents.d.ts +0 -3
  429. package/console/dist/server/routes/agents.js +0 -442
  430. package/console/dist/server/routes/central.d.ts +0 -5
  431. package/console/dist/server/routes/central.js +0 -31
  432. package/console/dist/server/routes/events.d.ts +0 -10
  433. package/console/dist/server/routes/events.js +0 -99
  434. package/console/dist/server/routes/evolution.js +0 -73
  435. package/console/dist/server/routes/feedback.d.ts +0 -3
  436. package/console/dist/server/routes/feedback.js +0 -65
  437. package/console/dist/server/routes/gates.d.ts +0 -3
  438. package/console/dist/server/routes/gates.js +0 -52
  439. package/console/dist/server/routes/overview.d.ts +0 -3
  440. package/console/dist/server/routes/overview.js +0 -49
  441. package/console/dist/server/routes/pipeline.d.ts +0 -3
  442. package/console/dist/server/routes/pipeline.js +0 -33
  443. package/console/dist/server/routes/samples.d.ts +0 -3
  444. package/console/dist/server/routes/samples.js +0 -101
  445. package/console/dist/server/routes/thinking-models.d.ts +0 -3
  446. package/console/dist/server/routes/thinking-models.js +0 -54
  447. package/console/dist/ui/components/app-sidebar.d.ts +0 -7
  448. package/console/dist/ui/components/app-sidebar.js +0 -75
  449. package/console/dist/ui/components/compare-view.d.ts +0 -7
  450. package/console/dist/ui/components/compare-view.js +0 -32
  451. package/console/dist/ui/components/data-freshness-indicator.d.ts +0 -10
  452. package/console/dist/ui/components/data-freshness-indicator.js +0 -63
  453. package/console/dist/ui/components/health-diagnostic-card.d.ts +0 -15
  454. package/console/dist/ui/components/health-diagnostic-card.js +0 -42
  455. package/console/dist/ui/components/page-header.d.ts +0 -10
  456. package/console/dist/ui/components/page-header.js +0 -37
  457. package/console/dist/ui/hooks/useAutoRefresh.d.ts +0 -13
  458. package/console/dist/ui/hooks/useAutoRefresh.js +0 -64
  459. package/console/dist/ui/hooks/useBookmarks.d.ts +0 -6
  460. package/console/dist/ui/hooks/useBookmarks.js +0 -43
  461. package/console/dist/ui/hooks/useDebounce.d.ts +0 -2
  462. package/console/dist/ui/hooks/useDebounce.js +0 -32
  463. package/console/dist/ui/hooks/useKeyboardNavigation.d.ts +0 -14
  464. package/console/dist/ui/hooks/useKeyboardNavigation.js +0 -75
  465. package/console/dist/ui/pages/AgentsPage.d.ts +0 -1
  466. package/console/dist/ui/pages/AgentsPage.js +0 -167
  467. package/console/dist/ui/pages/ApprovalsPage.d.ts +0 -1
  468. package/console/dist/ui/pages/ApprovalsPage.js +0 -123
  469. package/console/dist/ui/pages/CentralPage.d.ts +0 -1
  470. package/console/dist/ui/pages/CentralPage.js +0 -57
  471. package/console/dist/ui/pages/DataFlowPage.d.ts +0 -1
  472. package/console/dist/ui/pages/DataFlowPage.js +0 -158
  473. package/console/dist/ui/pages/EventLogPage.d.ts +0 -1
  474. package/console/dist/ui/pages/EventLogPage.js +0 -176
  475. package/console/dist/ui/pages/EvolutionPage.d.ts +0 -1
  476. package/console/dist/ui/pages/EvolutionPage.js +0 -118
  477. package/console/dist/ui/pages/FeedbackPage.d.ts +0 -1
  478. package/console/dist/ui/pages/FeedbackPage.js +0 -46
  479. package/console/dist/ui/pages/GatesPage.d.ts +0 -1
  480. package/console/dist/ui/pages/GatesPage.js +0 -31
  481. package/console/dist/ui/pages/LoginPage.d.ts +0 -5
  482. package/console/dist/ui/pages/LoginPage.js +0 -39
  483. package/console/dist/ui/pages/OverviewPage.d.ts +0 -1
  484. package/console/dist/ui/pages/OverviewPage.js +0 -50
  485. package/console/dist/ui/pages/PainPage.js +0 -50
  486. package/console/dist/ui/pages/PrincipleDetailPage.js +0 -145
  487. package/console/dist/ui/pages/PrinciplesPage.js +0 -322
  488. package/console/dist/ui/pages/ReportProblemPage.js +0 -186
  489. package/console/dist/ui/pages/SamplesPage.d.ts +0 -1
  490. package/console/dist/ui/pages/SamplesPage.js +0 -105
  491. package/console/dist/ui/pages/SettingsPage.d.ts +0 -1
  492. package/console/dist/ui/pages/SettingsPage.js +0 -86
  493. package/console/dist/ui/pages/TasksPage.d.ts +0 -1
  494. package/console/dist/ui/pages/TasksPage.js +0 -373
  495. package/console/dist/ui/pages/ThinkingModelsPage.d.ts +0 -1
  496. package/console/dist/ui/pages/ThinkingModelsPage.js +0 -32
  497. package/console/dist/ui/pages/UpdatePage.d.ts +0 -1
  498. package/console/dist/ui/pages/UpdatePage.js +0 -142
  499. /package/console/dist/ui/pages/{PainPage.d.ts → pain/PainPage.d.ts} +0 -0
  500. /package/console/dist/ui/pages/{PrincipleDetailPage.d.ts → principles/PrincipleDetailPage.d.ts} +0 -0
  501. /package/console/dist/ui/pages/{PrinciplesPage.d.ts → principles/PrinciplesPage.d.ts} +0 -0
  502. /package/console/dist/ui/pages/{ReportProblemPage.d.ts → report-problem/ReportProblemPage.d.ts} +0 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Agent Runtime Binding Resolution — PRI-306
3
+ *
4
+ * Pure functions that resolve which RuntimeProfile an internal agent uses,
5
+ * check readiness, and produce adapter configuration.
6
+ *
7
+ * No I/O — env var access is injected via getEnvVar callback.
8
+ * No `as` casts on untrusted data (ERR-001).
9
+ * Missing fields fail loud with reason + nextAction (ERR-002, ERR-009).
10
+ * Uses Object.hasOwn() for key checks (ERR-013).
11
+ */
12
+ import type { EffectivePdConfig, InternalAgentName, RuntimeProfile } from './pd-config-types.js';
13
+ export interface AgentRuntimeBindingOk {
14
+ ok: true;
15
+ /** The resolved runtime profile */
16
+ profile: RuntimeProfile;
17
+ /** The profile ID in the runtimeProfiles map */
18
+ profileId: string;
19
+ /** How this binding was resolved: 'agent_override' = per-agent override, 'default_runtime' = fallback to defaultRuntime */
20
+ source: 'agent_override' | 'default_runtime';
21
+ }
22
+ export interface AgentRuntimeBindingErr {
23
+ ok: false;
24
+ /** Readiness status */
25
+ readiness: 'needs_setup' | 'not_ready' | 'disabled';
26
+ /** Human-readable reason */
27
+ reason: string;
28
+ /** Actionable next step */
29
+ nextAction: string;
30
+ }
31
+ export type AgentRuntimeBindingResult = AgentRuntimeBindingOk | AgentRuntimeBindingErr;
32
+ export interface AgentRuntimeReadinessResult {
33
+ readiness: 'ready' | 'not_ready' | 'needs_setup';
34
+ reason?: string;
35
+ nextAction?: string;
36
+ }
37
+ export interface PiAiAdapterConfigResult {
38
+ runtimeKind: 'pi-ai';
39
+ provider: string;
40
+ model: string;
41
+ apiKeyEnv: string;
42
+ baseUrl?: string;
43
+ timeoutMs?: number;
44
+ workspace: string;
45
+ }
46
+ export interface OpenClawAdapterConfigResult {
47
+ runtimeKind: 'openclaw-cli';
48
+ workspaceDir: string;
49
+ /** 'default' = delegate to OpenClaw's own mode resolution (CLI flags, workflows.yaml).
50
+ * 'local' | 'gateway' = explicit mode from profile config. */
51
+ openclawMode: 'local' | 'gateway' | 'default';
52
+ }
53
+ export type AdapterConfigResult = PiAiAdapterConfigResult | OpenClawAdapterConfigResult;
54
+ /**
55
+ * Resolve which RuntimeProfile an internal agent should use.
56
+ *
57
+ * Resolution order:
58
+ * 1. Per-agent override (agent.runtimeProfile) → source: 'agent_override'
59
+ * 2. defaultRuntime → source: 'default_runtime'
60
+ *
61
+ * If the resolved profile ID doesn't exist in runtimeProfiles, returns an error.
62
+ * If the agent is disabled, returns a disabled result.
63
+ */
64
+ export declare function resolveAgentRuntimeBinding(effective: EffectivePdConfig, agentName: InternalAgentName): AgentRuntimeBindingResult;
65
+ /**
66
+ * Check whether a RuntimeProfile is ready for use.
67
+ *
68
+ * For openclaw profiles:
69
+ * - source=default → ready (delegated to OpenClaw)
70
+ * - provider+model set → ready
71
+ * - otherwise → needs_setup
72
+ *
73
+ * For pi-ai profiles:
74
+ * - provider, model, apiKeyEnv all set AND apiKeyEnv exists in env → ready
75
+ * - apiKeyEnv missing from env → not_ready (config is correct but env is not set up)
76
+ * - provider or model missing → needs_setup (config is incomplete)
77
+ *
78
+ * The getEnvVar callback is injected to avoid process.env access in core.
79
+ */
80
+ export declare function checkAgentRuntimeReadiness(profile: RuntimeProfile, getEnvVar: (name: string) => string | undefined): AgentRuntimeReadinessResult;
81
+ /**
82
+ * Transform a RuntimeProfile into adapter configuration.
83
+ *
84
+ * For pi-ai profiles: produces PiAiAdapterConfigResult with all fields needed
85
+ * to construct a PiAiRuntimeAdapter.
86
+ *
87
+ * For openclaw profiles: produces OpenClawAdapterConfigResult.
88
+ * OpenClaw profiles do NOT copy secrets — they only reference provider/model.
89
+ *
90
+ * This is a pure data transform. No I/O, no env access.
91
+ */
92
+ export declare function createAdapterConfigFromProfile(profile: RuntimeProfile, workspaceDir: string): AdapterConfigResult;
93
+ //# sourceMappingURL=pd-config-agent-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-config-agent-binding.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-agent-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,IAAI,CAAC;IACT,mCAAmC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,2HAA2H;IAC3H,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,KAAK,CAAC;IACV,uBAAuB;IACvB,SAAS,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;IACpD,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAIvF,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,cAAc,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB;mEAC+D;IAC/D,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC/C;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,2BAA2B,CAAC;AA0ExF;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,iBAAiB,GAC3B,yBAAyB,CAgD3B;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC9C,2BAA2B,CAK7B;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,GACnB,mBAAmB,CA4BrB"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Agent Runtime Binding Resolution — PRI-306
3
+ *
4
+ * Pure functions that resolve which RuntimeProfile an internal agent uses,
5
+ * check readiness, and produce adapter configuration.
6
+ *
7
+ * No I/O — env var access is injected via getEnvVar callback.
8
+ * No `as` casts on untrusted data (ERR-001).
9
+ * Missing fields fail loud with reason + nextAction (ERR-002, ERR-009).
10
+ * Uses Object.hasOwn() for key checks (ERR-013).
11
+ */
12
+ // ── Private helpers (defined before public functions to satisfy no-use-before-define) ──
13
+ function checkOpenClawReadiness(profile) {
14
+ // OpenClaw profile with source=default is always "ready" (delegated to OpenClaw)
15
+ if (profile.source === 'default') {
16
+ return { readiness: 'ready' };
17
+ }
18
+ // OpenClaw profile with provider+model may be ready
19
+ if (profile.provider && profile.model) {
20
+ return { readiness: 'ready' };
21
+ }
22
+ return {
23
+ readiness: 'needs_setup',
24
+ reason: `OpenClaw profile missing provider and/or model. Provide both 'provider' and 'model' fields, or set 'source: default' to delegate to OpenClaw defaults.`,
25
+ nextAction: `Add 'provider' and 'model' to the openclaw runtime profile in .pd/config.yaml, or set source: default`,
26
+ };
27
+ }
28
+ function checkPdLocalReadiness(profile, getEnvVar) {
29
+ // Check required config fields first
30
+ if (!profile.provider || profile.provider.length === 0) {
31
+ return {
32
+ readiness: 'needs_setup',
33
+ reason: `pi-ai profile missing required 'provider' field`,
34
+ nextAction: `Add 'provider' to the pi-ai runtime profile in .pd/config.yaml (e.g. "anthropic", "openrouter")`,
35
+ };
36
+ }
37
+ if (!profile.model || profile.model.length === 0) {
38
+ return {
39
+ readiness: 'needs_setup',
40
+ reason: `pi-ai profile missing required 'model' field`,
41
+ nextAction: `Add 'model' to the pi-ai runtime profile in .pd/config.yaml (e.g. "claude-3-5-sonnet")`,
42
+ };
43
+ }
44
+ if (!profile.apiKeyEnv || profile.apiKeyEnv.length === 0) {
45
+ return {
46
+ readiness: 'needs_setup',
47
+ reason: `pi-ai profile missing required 'apiKeyEnv' field`,
48
+ nextAction: `Add 'apiKeyEnv' to the pi-ai runtime profile in .pd/config.yaml (e.g. "ANTHROPIC_API_KEY")`,
49
+ };
50
+ }
51
+ // Check if the env var actually exists (empty string counts as "set but empty")
52
+ const apiKeyValue = getEnvVar(profile.apiKeyEnv);
53
+ if (apiKeyValue === undefined) {
54
+ return {
55
+ readiness: 'not_ready',
56
+ reason: `Environment variable '${profile.apiKeyEnv}' is not set. The profile is configured correctly but the API key is not available in the environment.`,
57
+ nextAction: `Set the environment variable '${profile.apiKeyEnv}' with your API key before running PD, or change apiKeyEnv in .pd/config.yaml to reference an existing env var`,
58
+ };
59
+ }
60
+ if (apiKeyValue.length === 0) {
61
+ return {
62
+ readiness: 'not_ready',
63
+ reason: `Environment variable '${profile.apiKeyEnv}' is set but empty. An API key value is required.`,
64
+ nextAction: `Provide a non-empty value for '${profile.apiKeyEnv}' or change apiKeyEnv in .pd/config.yaml to reference a different env var`,
65
+ };
66
+ }
67
+ return { readiness: 'ready' };
68
+ }
69
+ // ── resolveAgentRuntimeBinding ───────────────────────────────────────────────
70
+ /**
71
+ * Resolve which RuntimeProfile an internal agent should use.
72
+ *
73
+ * Resolution order:
74
+ * 1. Per-agent override (agent.runtimeProfile) → source: 'agent_override'
75
+ * 2. defaultRuntime → source: 'default_runtime'
76
+ *
77
+ * If the resolved profile ID doesn't exist in runtimeProfiles, returns an error.
78
+ * If the agent is disabled, returns a disabled result.
79
+ */
80
+ export function resolveAgentRuntimeBinding(effective, agentName) {
81
+ const { config } = effective;
82
+ const agentBinding = config.internalAgents.agents[agentName];
83
+ // Check if agent is disabled
84
+ if (!agentBinding || !agentBinding.enabled) {
85
+ return {
86
+ ok: false,
87
+ readiness: 'disabled',
88
+ reason: `Agent '${agentName}' is disabled`,
89
+ nextAction: `Enable agent '${agentName}' in .pd/config.yaml internalAgents.agents.${agentName}.enabled`,
90
+ };
91
+ }
92
+ // Resolve profile ID: per-agent override > defaultRuntime
93
+ // An explicit runtimeProfile that equals defaultRuntime is NOT an override
94
+ const hasExplicitOverride = agentBinding.runtimeProfile !== undefined &&
95
+ agentBinding.runtimeProfile !== config.internalAgents.defaultRuntime;
96
+ const profileId = agentBinding.runtimeProfile ?? config.internalAgents.defaultRuntime;
97
+ const source = hasExplicitOverride ? 'agent_override' : 'default_runtime';
98
+ // Look up the profile
99
+ if (!Object.hasOwn(config.runtimeProfiles, profileId)) {
100
+ return {
101
+ ok: false,
102
+ readiness: 'needs_setup',
103
+ reason: `Agent '${agentName}' references runtime profile '${profileId}' which does not exist in runtimeProfiles`,
104
+ nextAction: `Add profile '${profileId}' to runtimeProfiles in .pd/config.yaml, or change agent '${agentName}' to reference an existing profile`,
105
+ };
106
+ }
107
+ const profile = config.runtimeProfiles[profileId];
108
+ if (!profile) {
109
+ return {
110
+ ok: false,
111
+ readiness: 'needs_setup',
112
+ reason: `Agent '${agentName}' references runtime profile '${profileId}' which is null/undefined`,
113
+ nextAction: `Fix profile '${profileId}' in runtimeProfiles in .pd/config.yaml`,
114
+ };
115
+ }
116
+ return {
117
+ ok: true,
118
+ profile,
119
+ profileId,
120
+ source,
121
+ };
122
+ }
123
+ // ── checkAgentRuntimeReadiness ───────────────────────────────────────────────
124
+ /**
125
+ * Check whether a RuntimeProfile is ready for use.
126
+ *
127
+ * For openclaw profiles:
128
+ * - source=default → ready (delegated to OpenClaw)
129
+ * - provider+model set → ready
130
+ * - otherwise → needs_setup
131
+ *
132
+ * For pi-ai profiles:
133
+ * - provider, model, apiKeyEnv all set AND apiKeyEnv exists in env → ready
134
+ * - apiKeyEnv missing from env → not_ready (config is correct but env is not set up)
135
+ * - provider or model missing → needs_setup (config is incomplete)
136
+ *
137
+ * The getEnvVar callback is injected to avoid process.env access in core.
138
+ */
139
+ export function checkAgentRuntimeReadiness(profile, getEnvVar) {
140
+ if (profile.type === 'openclaw') {
141
+ return checkOpenClawReadiness(profile);
142
+ }
143
+ return checkPdLocalReadiness(profile, getEnvVar);
144
+ }
145
+ // ── createAdapterConfigFromProfile ───────────────────────────────────────────
146
+ /**
147
+ * Transform a RuntimeProfile into adapter configuration.
148
+ *
149
+ * For pi-ai profiles: produces PiAiAdapterConfigResult with all fields needed
150
+ * to construct a PiAiRuntimeAdapter.
151
+ *
152
+ * For openclaw profiles: produces OpenClawAdapterConfigResult.
153
+ * OpenClaw profiles do NOT copy secrets — they only reference provider/model.
154
+ *
155
+ * This is a pure data transform. No I/O, no env access.
156
+ */
157
+ export function createAdapterConfigFromProfile(profile, workspaceDir) {
158
+ if (profile.type === 'pi-ai') {
159
+ const result = {
160
+ runtimeKind: 'pi-ai',
161
+ provider: profile.provider,
162
+ model: profile.model,
163
+ apiKeyEnv: profile.apiKeyEnv,
164
+ workspace: workspaceDir,
165
+ };
166
+ if (profile.baseUrl) {
167
+ result.baseUrl = profile.baseUrl;
168
+ }
169
+ if (profile.timeoutMs) {
170
+ result.timeoutMs = profile.timeoutMs;
171
+ }
172
+ return result;
173
+ }
174
+ // openclaw profile — preserve delegated/default semantics
175
+ // source='default' → openclawMode='default' (let downstream resolve via CLI flags/workflows.yaml)
176
+ // explicit provider+model → openclawMode='local' (explicit profile, default to local mode)
177
+ const openclawMode = profile.source === 'default' ? 'default' : 'local';
178
+ return {
179
+ runtimeKind: 'openclaw-cli',
180
+ workspaceDir,
181
+ openclawMode,
182
+ };
183
+ }
184
+ //# sourceMappingURL=pd-config-agent-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-config-agent-binding.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-agent-binding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-defaults.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAG3B,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAI9B,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAkBlE,CAAC;AAIF,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,EAAE,sBAGrC,CAAC;AAiBF,wBAAgB,wBAAwB,IAAI,oBAAoB,CAY/D;AAID,eAAO,MAAM,UAAU,EAAE,QAExB,CAAC;AAIF,wBAAgB,kBAAkB,IAAI,QAAQ,CAU7C"}
1
+ {"version":3,"file":"pd-config-defaults.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAG3B,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAI9B,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAmBlE,CAAC;AAIF,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,EAAE,sBAGrC,CAAC;AAiBF,wBAAgB,wBAAwB,IAAI,oBAAoB,CAY/D;AAID,eAAO,MAAM,UAAU,EAAE,QAExB,CAAC;AAIF,wBAAgB,kBAAkB,IAAI,QAAQ,CAW7C"}
@@ -17,6 +17,7 @@ export const DEFAULT_FEATURE_FLAGS = {
17
17
  gfi: { category: 'quiet', enabled: false },
18
18
  evolution_worker: { category: 'quiet', enabled: false },
19
19
  empathy_observer: { category: 'quiet', enabled: false },
20
+ painEvidenceAdmission: { category: 'quiet', enabled: false },
20
21
  // MVP-Gone (ADR-0014 §2.6)
21
22
  nocturnal: { category: 'gone', enabled: false },
22
23
  idle_trigger: { category: 'gone', enabled: false },
@@ -69,6 +70,7 @@ export function getDefaultPdConfig() {
69
70
  },
70
71
  internalAgents: getDefaultInternalAgents(),
71
72
  ui: { ...DEFAULT_UI },
73
+ principles: { outputLanguage: undefined },
72
74
  };
73
75
  }
74
76
  //# sourceMappingURL=pd-config-defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-defaults.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAQL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,2BAA2B;IAC3B,MAAM,EAAc,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,IAAI,EAAE;IACxD,cAAc,EAAM,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,IAAI,EAAE;IACxD,aAAa,EAAO,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,IAAI,EAAE;IACxD,mBAAmB,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAEzD,4BAA4B;IAC5B,gBAAgB,EAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IACxD,GAAG,EAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACzD,gBAAgB,EAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACzD,gBAAgB,EAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAEzD,2BAA2B;IAC3B,SAAS,EAAW,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,KAAK,EAAE;IACzD,YAAY,EAAQ,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,KAAK,EAAE;IACzD,cAAc,EAAM,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,KAAK,EAAE;IACzD,OAAO,EAAa,EAAE,QAAQ,EAAE,MAAM,EAAG,OAAO,EAAE,KAAK,EAAE;CAC1D,CAAC;AAEF,+EAA+E;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,+EAA+E;AAE/E,MAAM,qBAAqB,GAAuC;IAChE,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,KAAK;IACtB,OAAO,EAAE,KAAK;IACd,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,MAAM,UAAU,wBAAwB;IACtC,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,0BAA0B;SAC3C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,cAAc,EAAE,0BAA0B;QAC1C,MAAM,EAAE,MAAyD;KAClE,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAChC,CAAC;AAEF,+EAA+E;AAE/E,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,EAAE,GAAG,qBAAqB,EAAE;QACtC,eAAe,EAAE;YACf,CAAC,0BAA0B,CAAC,EAAE,EAAE,GAAG,uBAAuB,EAAE;SAC7D;QACD,cAAc,EAAE,wBAAwB,EAAE;QAC1C,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pd-config-defaults.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-defaults.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-effective.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-effective.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,iBAAiB,EASvB,MAAM,sBAAsB,CAAC;AAU9B;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAgHnG"}
1
+ {"version":3,"file":"pd-config-effective.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-effective.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,iBAAiB,EASvB,MAAM,sBAAsB,CAAC;AAU9B;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAoHnG"}
@@ -102,12 +102,15 @@ export function computeEffectivePdConfig(userConfig) {
102
102
  };
103
103
  // UI: use user config or default
104
104
  const ui = userConfig.ui ?? { ...DEFAULT_UI };
105
+ // Principles: use user config or default (PRI-336)
106
+ const principles = userConfig.principles ?? { outputLanguage: undefined };
105
107
  const config = {
106
108
  version: PD_CONFIG_VERSION,
107
109
  features,
108
110
  runtimeProfiles,
109
111
  internalAgents,
110
112
  ui,
113
+ principles,
111
114
  };
112
115
  return {
113
116
  config,
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-effective.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-effective.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAQL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,UAAU,EACV,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAuC;IAC9E,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO;YACL,MAAM,EAAE,kBAAkB,EAAE;YAC5B,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,uEAAuE;IACvE,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YACD,qCAAqC;YACrC,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,mCAAmC,CAAC,CAAC;gBACrE,SAAS;YACX,CAAC;YACD,mCAAmC;YACnC,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC3D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,iCAAiC,CAAC,CAAC;gBACnE,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,gCAAgC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9E,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAC5C,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAChE,eAAe,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,uBAAuB,EAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,oBAAoB,0BAA0B,sCAAsC,CAAC,CAAC;IACtG,CAAC;IAED,sDAAsD;IACtD,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAyC,EAAE,CAAC;IAExD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,2DAA2D;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,cAAc,EAAE,WAAW,CAAC,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,cAAc;aACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,wFAAwF;YACxF,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACpH,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,uBAAuB,OAAO,CAAC,cAAc,gCAAgC,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAyB;QAC3C,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc;QACxD,MAAM,EAAE,MAAyD;KAClE,CAAC;IAEF,iCAAiC;IACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;IAE9C,MAAM,MAAM,GAAa;QACvB,OAAO,EAAE,iBAAiB;QAC1B,QAAQ;QACR,eAAe;QACf,cAAc;QACd,EAAE;KACH,CAAC;IAEF,OAAO;QACL,MAAM;QACN,MAAM,EAAE,aAAa;QACrB,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pd-config-effective.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-effective.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAQL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,UAAU,EACV,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAuC;IAC9E,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO;YACL,MAAM,EAAE,kBAAkB,EAAE;YAC5B,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,uEAAuE;IACvE,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YACD,qCAAqC;YACrC,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,mCAAmC,CAAC,CAAC;gBACrE,SAAS;YACX,CAAC;YACD,mCAAmC;YACnC,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC3D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,iCAAiC,CAAC,CAAC;gBACnE,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,gCAAgC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,eAAe,GAAmC,EAAE,CAAC;IAC3D,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9E,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAC5C,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAChE,eAAe,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,uBAAuB,EAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,oBAAoB,0BAA0B,sCAAsC,CAAC,CAAC;IACtG,CAAC;IAED,sDAAsD;IACtD,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAyC,EAAE,CAAC;IAExD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,2DAA2D;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,cAAc,EAAE,WAAW,CAAC,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,cAAc;aACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,wFAAwF;YACxF,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACpH,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,uBAAuB,OAAO,CAAC,cAAc,gCAAgC,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAyB;QAC3C,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc;QACxD,MAAM,EAAE,MAAyD;KAClE,CAAC;IAEF,iCAAiC;IACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;IAE9C,mDAAmD;IACnD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IAE1E,MAAM,MAAM,GAAa;QACvB,OAAO,EAAE,iBAAiB;QAC1B,QAAQ;QACR,eAAe;QACf,cAAc;QACd,EAAE;QACF,UAAU;KACX,CAAC;IAEF,OAAO;QACL,MAAM;QACN,MAAM,EAAE,aAAa;QACrB,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -62,12 +62,20 @@ export interface UiConfig {
62
62
  mode: DiagnosticsMode;
63
63
  };
64
64
  }
65
+ import type { OutputLanguage } from '../language-directive.js';
66
+ /** Configuration for principle generation behavior. */
67
+ export interface PrinciplesConfig {
68
+ /** Preferred language for generated principle text. Source of truth for generation. */
69
+ outputLanguage?: OutputLanguage;
70
+ }
65
71
  export interface PdConfig {
66
72
  version: PdConfigVersion;
67
73
  features: Record<string, FeatureFlagEntry>;
68
74
  runtimeProfiles: Record<string, RuntimeProfile>;
69
75
  internalAgents: InternalAgentsConfig;
70
76
  ui: UiConfig;
77
+ /** Principle generation preferences (PRI-336). */
78
+ principles?: PrinciplesConfig;
71
79
  }
72
80
  export interface PdConfigValidationError {
73
81
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pd-config-types.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pd-config-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAGnC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAU3E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAU,CAAC;AA6BlE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,SAAS;IACT,aAAa;IACb,QAAQ;IACR,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,oBAAoB;IACpB,iBAAiB;CACT,CAAC;AAqBX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AAuFvE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"pd-config-types.js","sourceRoot":"","sources":["../../../src/runtime-v2/config/pd-config-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAGnC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAU3E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAU,CAAC;AA6BlE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,SAAS;IACT,aAAa;IACb,QAAQ;IACR,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,oBAAoB;IACpB,iBAAiB;CACT,CAAC;AAqBX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AAmGvE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tests for outputLanguage integration into DiagnosticianPromptBuilder (PRI-336).
3
+ *
4
+ * Validates:
5
+ * - config → diagnostician prompt contains language directive
6
+ * - zh-CN: prompt explicitly requests Chinese principle text
7
+ * - en: prompt explicitly requests English principle text
8
+ * - technical identifiers not translated instruction exists
9
+ * - undefined outputLanguage: no language directive (backward compatible)
10
+ * - lineage fields are not translated
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=diagnostician-prompt-language.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostician-prompt-language.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Tests for outputLanguage integration into DiagnosticianPromptBuilder (PRI-336).
3
+ *
4
+ * Validates:
5
+ * - config → diagnostician prompt contains language directive
6
+ * - zh-CN: prompt explicitly requests Chinese principle text
7
+ * - en: prompt explicitly requests English principle text
8
+ * - technical identifiers not translated instruction exists
9
+ * - undefined outputLanguage: no language directive (backward compatible)
10
+ * - lineage fields are not translated
11
+ */
12
+ import { describe, it, expect } from 'vitest';
13
+ import { DiagnosticianPromptBuilder, buildDiagnosticProtocolInstruction } from '../../diagnostician-prompt-builder.js';
14
+ /** Trust-boundary helper: validate parsed prompt JSON before property access. */
15
+ function parsePromptJson(raw) {
16
+ const parsed = JSON.parse(raw);
17
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
18
+ throw new Error(`parsePromptJson: expected object, got ${typeof parsed}`);
19
+ }
20
+ return parsed;
21
+ }
22
+ const MINIMAL_PAYLOAD = {
23
+ contextId: 'ctx-1',
24
+ contextHash: 'hash-abc123',
25
+ taskId: 'task-xyz',
26
+ workspaceDir: 'D:/work',
27
+ sourceRefs: ['ref-1'],
28
+ diagnosisTarget: {
29
+ painId: 'pain-1',
30
+ reasonSummary: 'Agent failed to use tool',
31
+ },
32
+ conversationWindow: [],
33
+ };
34
+ describe('DiagnosticianPromptBuilder — outputLanguage (PRI-336)', () => {
35
+ it('includes Chinese language directive when outputLanguage is zh-CN', () => {
36
+ const builder = new DiagnosticianPromptBuilder();
37
+ const result = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, 'zh-CN');
38
+ const parsed = parsePromptJson(result.message);
39
+ expect(parsed.diagnosticInstruction).toContain('Simplified Chinese');
40
+ expect(parsed.diagnosticInstruction).toContain('简体中文');
41
+ expect(parsed.diagnosticInstruction).toContain('LANGUAGE DIRECTIVE');
42
+ });
43
+ it('includes English language directive when outputLanguage is en', () => {
44
+ const builder = new DiagnosticianPromptBuilder();
45
+ const result = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, 'en');
46
+ const parsed = parsePromptJson(result.message);
47
+ expect(parsed.diagnosticInstruction).toContain('English');
48
+ expect(parsed.diagnosticInstruction).toContain('PRI-336');
49
+ });
50
+ it('does NOT include language directive when outputLanguage is undefined', () => {
51
+ const builder = new DiagnosticianPromptBuilder();
52
+ const result = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, undefined);
53
+ const parsed = parsePromptJson(result.message);
54
+ expect(parsed.diagnosticInstruction).not.toContain('LANGUAGE DIRECTIVE');
55
+ expect(parsed.diagnosticInstruction).not.toContain('PRI-336');
56
+ });
57
+ it('includes technical identifiers not translated instruction', () => {
58
+ const builder = new DiagnosticianPromptBuilder();
59
+ const result = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, 'zh-CN');
60
+ const parsed = parsePromptJson(result.message);
61
+ expect(parsed.diagnosticInstruction).toContain('taskId');
62
+ expect(parsed.diagnosticInstruction).toContain('sourcePainId');
63
+ expect(parsed.diagnosticInstruction).toContain('MUST NOT be translated');
64
+ });
65
+ it('includes lineage fields not translated instruction', () => {
66
+ const builder = new DiagnosticianPromptBuilder();
67
+ const result = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, 'en');
68
+ const parsed = parsePromptJson(result.message);
69
+ expect(parsed.diagnosticInstruction).toContain('Lineage and evidence fields MUST NOT be translated');
70
+ });
71
+ it('preserves all other prompt fields when outputLanguage is provided', () => {
72
+ const builder = new DiagnosticianPromptBuilder();
73
+ const resultWithout = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, undefined);
74
+ const resultWith = builder.buildPrompt(MINIMAL_PAYLOAD, undefined, 'zh-CN');
75
+ const parsedWithout = parsePromptJson(resultWithout.message);
76
+ const parsedWith = parsePromptJson(resultWith.message);
77
+ // Same fields except diagnosticInstruction
78
+ expect(parsedWith.taskId).toBe(parsedWithout.taskId);
79
+ expect(parsedWith.contextHash).toBe(parsedWithout.contextHash);
80
+ expect(parsedWith.diagnosisTarget).toEqual(parsedWithout.diagnosisTarget);
81
+ expect(parsedWith.conversationWindow).toEqual(parsedWithout.conversationWindow);
82
+ expect(parsedWith.sourceRefs).toEqual(parsedWithout.sourceRefs);
83
+ expect(parsedWith.context).toEqual(parsedWithout.context);
84
+ });
85
+ });
86
+ describe('buildDiagnosticProtocolInstruction — outputLanguage (PRI-336)', () => {
87
+ it('includes language directive when outputLanguage is provided', () => {
88
+ const instruction = buildDiagnosticProtocolInstruction(undefined, undefined, 'zh-CN');
89
+ expect(instruction).toContain('LANGUAGE DIRECTIVE');
90
+ expect(instruction).toContain('Simplified Chinese');
91
+ });
92
+ it('does not include language directive when outputLanguage is undefined', () => {
93
+ const instruction = buildDiagnosticProtocolInstruction(undefined, undefined, undefined);
94
+ expect(instruction).not.toContain('LANGUAGE DIRECTIVE');
95
+ });
96
+ });
97
+ //# sourceMappingURL=diagnostician-prompt-language.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostician-prompt-language.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@
30
30
  import type { DiagnosticianContextPayload, HistoryQueryEntry, DiagnosisTarget } from './context-payload.js';
31
31
  import type { TSchema } from '@sinclair/typebox';
32
32
  import type { SchemaPromptAdapter } from './adapter/schema-prompt-adapter.js';
33
+ import type { OutputLanguage } from './language-directive.js';
33
34
  /**
34
35
  * PromptInput — the JSON message sent to openclaw agent via --message flag.
35
36
  *
@@ -99,7 +100,7 @@ export interface PromptBuildResult {
99
100
  * The 5-phase protocol is embedded directly in the prompt so the LLM follows it
100
101
  * regardless of whether OpenClaw loads SKILL.md as the agent system prompt.
101
102
  */
102
- export declare function buildDiagnosticProtocolInstruction(adapter?: SchemaPromptAdapter, schema?: TSchema): string;
103
+ export declare function buildDiagnosticProtocolInstruction(adapter?: SchemaPromptAdapter, schema?: TSchema, outputLanguage?: OutputLanguage): string;
103
104
  /**
104
105
  * Summarizes a conversation window for inclusion in the prompt.
105
106
  * DPB-04: Prompt includes conversationWindow summary.
@@ -125,6 +126,6 @@ export declare class DiagnosticianPromptBuilder {
125
126
  *
126
127
  * Per DPB-07: NO extraSystemPrompt is added — agent profile is the source of truth.
127
128
  */
128
- buildPrompt(payload: DiagnosticianContextPayload, limits?: PromptBuilderLimits): PromptBuildResult;
129
+ buildPrompt(payload: DiagnosticianContextPayload, limits?: PromptBuilderLimits, outputLanguage?: OutputLanguage): PromptBuildResult;
129
130
  }
130
131
  //# sourceMappingURL=diagnostician-prompt-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostician-prompt-builder.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAI9E;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,2BAA2B,CAAC;IACrC;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAIlC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC,GAC5C,MAAM,CAwDR;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,EAAE,CAErB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAG/B,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC;IAM/C;;;;;;;;;;;;OAYG;IACH,WAAW,CACT,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,mBAAmD,GAC1D,iBAAiB;CAkErB"}
1
+ {"version":3,"file":"diagnostician-prompt-builder.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/diagnostician-prompt-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAG9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,2BAA2B,CAAC;IACrC;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAIlC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC,EAC7C,cAAc,CAAC,EAAE,cAAc,GAC9B,MAAM,CAyDR;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,EAAE,CAErB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAG/B,OAAO,GAAE,mBAAsD,EAC/D,MAAM,GAAE,OAAqC;IAM/C;;;;;;;;;;;;OAYG;IACH,WAAW,CACT,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,mBAAmD,EAC3D,cAAc,CAAC,EAAE,cAAc,GAC9B,iBAAiB;CAkErB"}
@@ -1,5 +1,6 @@
1
1
  import { DefaultSchemaPromptAdapter } from './adapter/schema-prompt-adapter.js';
2
2
  import { DiagnosticianOutputV1Schema } from './diagnostician-output.js';
3
+ import { buildLanguageDirective } from './language-directive.js';
3
4
  export const DEFAULT_PROMPT_BUILDER_LIMITS = {
4
5
  maxConversationEntries: 30,
5
6
  maxEntryTextChars: 2000,
@@ -16,9 +17,10 @@ export const DEFAULT_PROMPT_BUILDER_LIMITS = {
16
17
  * The 5-phase protocol is embedded directly in the prompt so the LLM follows it
17
18
  * regardless of whether OpenClaw loads SKILL.md as the agent system prompt.
18
19
  */
19
- export function buildDiagnosticProtocolInstruction(adapter = new DefaultSchemaPromptAdapter(), schema = DiagnosticianOutputV1Schema) {
20
+ export function buildDiagnosticProtocolInstruction(adapter = new DefaultSchemaPromptAdapter(), schema = DiagnosticianOutputV1Schema, outputLanguage) {
20
21
  const example = adapter.generateExample(schema);
21
22
  const constraints = adapter.generateConstraints(schema);
23
+ const languageDirective = buildLanguageDirective(outputLanguage);
22
24
  return `You are a root cause analysis expert. Follow this protocol:
23
25
 
24
26
  PHASE 1 — Evidence Review:
@@ -70,7 +72,7 @@ IMPORTANT: The example above is ILLUSTRATIVE ONLY. Your recommendations MUST be
70
72
  CONSTRAINTS:
71
73
  - Output ONLY valid JSON — no markdown, no explanatory text, no code fences, no prose before or after
72
74
  - Do NOT read files, call tools, or write to any database
73
- ${constraints}`;
75
+ ${constraints}${languageDirective}`;
74
76
  }
75
77
  /**
76
78
  * Summarizes a conversation window for inclusion in the prompt.
@@ -102,7 +104,7 @@ export class DiagnosticianPromptBuilder {
102
104
  *
103
105
  * Per DPB-07: NO extraSystemPrompt is added — agent profile is the source of truth.
104
106
  */
105
- buildPrompt(payload, limits = DEFAULT_PROMPT_BUILDER_LIMITS) {
107
+ buildPrompt(payload, limits = DEFAULT_PROMPT_BUILDER_LIMITS, outputLanguage) {
106
108
  const truncationWarnings = [];
107
109
  // DPB-04: Apply truncation to conversationWindow to prevent token overflow
108
110
  const rawWindow = summarizeConversationWindow(payload.conversationWindow);
@@ -126,7 +128,7 @@ export class DiagnosticianPromptBuilder {
126
128
  ...payload,
127
129
  conversationWindow,
128
130
  };
129
- const diagnosticInstruction = buildDiagnosticProtocolInstruction(this.adapter, this.schema);
131
+ const diagnosticInstruction = buildDiagnosticProtocolInstruction(this.adapter, this.schema, outputLanguage);
130
132
  // DPB-04: Explicit top-level fields at the prompt level
131
133
  const promptInput = {
132
134
  taskId: payload.taskId,