principles-disciple 1.8.1 → 1.8.3

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 (508) hide show
  1. package/ADVANCED_CONFIG_ZH.md +97 -0
  2. package/AGENT_INSTALL.md +173 -0
  3. package/AGENT_INSTALL_EN.md +173 -0
  4. package/INSTALL.md +256 -0
  5. package/SKILL.md +63 -0
  6. package/docs/COMMAND_REFERENCE.md +76 -0
  7. package/docs/COMMAND_REFERENCE_EN.md +79 -0
  8. package/esbuild.config.js +75 -0
  9. package/openclaw.plugin.json +4 -4
  10. package/package.json +11 -13
  11. package/scripts/build-web.mjs +46 -0
  12. package/scripts/install-dependencies.cjs +47 -0
  13. package/scripts/sync-plugin.mjs +802 -0
  14. package/scripts/verify-build.mjs +109 -0
  15. package/src/agents/nocturnal-dreamer.md +152 -0
  16. package/src/agents/nocturnal-philosopher.md +138 -0
  17. package/src/agents/nocturnal-reflector.md +126 -0
  18. package/src/agents/nocturnal-scribe.md +164 -0
  19. package/src/commands/capabilities.ts +85 -0
  20. package/{dist/commands/context.js → src/commands/context.ts} +78 -38
  21. package/src/commands/evolution-status.ts +146 -0
  22. package/src/commands/export.ts +111 -0
  23. package/src/commands/focus.ts +533 -0
  24. package/src/commands/nocturnal-review.ts +311 -0
  25. package/src/commands/nocturnal-rollout.ts +763 -0
  26. package/src/commands/nocturnal-train.ts +1002 -0
  27. package/{dist/commands/pain.js → src/commands/pain.ts} +68 -49
  28. package/src/commands/principle-rollback.ts +27 -0
  29. package/{dist/commands/rollback.js → src/commands/rollback.ts} +44 -12
  30. package/src/commands/samples.ts +60 -0
  31. package/src/commands/strategy.ts +38 -0
  32. package/{dist/commands/thinking-os.js → src/commands/thinking-os.ts} +59 -36
  33. package/src/commands/workflow-debug.ts +128 -0
  34. package/{dist/config/defaults/runtime.js → src/config/defaults/runtime.ts} +12 -5
  35. package/src/config/errors.ts +163 -0
  36. package/{dist/config/index.d.ts → src/config/index.ts} +2 -1
  37. package/src/constants/diagnostician.ts +66 -0
  38. package/src/constants/tools.ts +62 -0
  39. package/src/core/adaptive-thresholds.ts +476 -0
  40. package/{dist/core/config-service.js → src/core/config-service.ts} +7 -4
  41. package/{dist/core/config.js → src/core/config.ts} +158 -46
  42. package/src/core/control-ui-db.ts +435 -0
  43. package/{dist/core/detection-funnel.js → src/core/detection-funnel.ts} +36 -21
  44. package/{dist/core/detection-service.js → src/core/detection-service.ts} +7 -4
  45. package/{dist/core/dictionary-service.js → src/core/dictionary-service.ts} +7 -4
  46. package/{dist/core/dictionary.js → src/core/dictionary.ts} +57 -34
  47. package/src/core/empathy-keyword-matcher.ts +327 -0
  48. package/src/core/empathy-types.ts +218 -0
  49. package/src/core/event-log.ts +544 -0
  50. package/src/core/evolution-engine.ts +612 -0
  51. package/src/core/evolution-logger.ts +353 -0
  52. package/src/core/evolution-migration.ts +77 -0
  53. package/src/core/evolution-reducer.ts +731 -0
  54. package/src/core/evolution-types.ts +456 -0
  55. package/src/core/external-training-contract.ts +527 -0
  56. package/src/core/focus-history.ts +1458 -0
  57. package/src/core/hygiene/tracker.ts +117 -0
  58. package/{dist/core/init.js → src/core/init.ts} +39 -26
  59. package/src/core/local-worker-routing.ts +617 -0
  60. package/{dist/core/migration.js → src/core/migration.ts} +18 -11
  61. package/src/core/model-deployment-registry.ts +722 -0
  62. package/src/core/model-training-registry.ts +813 -0
  63. package/src/core/nocturnal-arbiter.ts +706 -0
  64. package/src/core/nocturnal-candidate-scoring.ts +392 -0
  65. package/src/core/nocturnal-compliance.ts +1075 -0
  66. package/src/core/nocturnal-dataset.ts +668 -0
  67. package/src/core/nocturnal-executability.ts +428 -0
  68. package/src/core/nocturnal-export.ts +390 -0
  69. package/{dist/core/nocturnal-paths.js → src/core/nocturnal-paths.ts} +49 -23
  70. package/src/core/nocturnal-trajectory-extractor.ts +484 -0
  71. package/src/core/nocturnal-trinity.ts +1384 -0
  72. package/src/core/pain.ts +122 -0
  73. package/{dist/core/path-resolver.js → src/core/path-resolver.ts} +157 -36
  74. package/{dist/core/paths.js → src/core/paths.ts} +13 -4
  75. package/src/core/principle-training-state.ts +450 -0
  76. package/src/core/profile.ts +226 -0
  77. package/src/core/promotion-gate.ts +822 -0
  78. package/{dist/core/risk-calculator.js → src/core/risk-calculator.ts} +42 -16
  79. package/{dist/core/session-tracker.js → src/core/session-tracker.ts} +175 -62
  80. package/src/core/shadow-observation-registry.ts +534 -0
  81. package/{dist/core/system-logger.js → src/core/system-logger.ts} +9 -5
  82. package/src/core/thinking-models.ts +217 -0
  83. package/src/core/training-program.ts +630 -0
  84. package/src/core/trajectory-types.ts +243 -0
  85. package/src/core/trajectory.ts +1673 -0
  86. package/{dist/core/workspace-context.js → src/core/workspace-context.ts} +57 -32
  87. package/src/hooks/bash-risk.ts +171 -0
  88. package/src/hooks/edit-verification.ts +295 -0
  89. package/src/hooks/gate-block-helper.ts +160 -0
  90. package/src/hooks/gate.ts +210 -0
  91. package/src/hooks/gfi-gate.ts +177 -0
  92. package/src/hooks/lifecycle.ts +326 -0
  93. package/{dist/hooks/llm.js → src/hooks/llm.ts} +160 -80
  94. package/src/hooks/message-sanitize.ts +45 -0
  95. package/src/hooks/pain.ts +384 -0
  96. package/src/hooks/progressive-trust-gate.ts +174 -0
  97. package/src/hooks/prompt.ts +920 -0
  98. package/src/hooks/subagent.ts +207 -0
  99. package/src/hooks/thinking-checkpoint.ts +73 -0
  100. package/src/hooks/trajectory-collector.ts +290 -0
  101. package/src/http/principles-console-route.ts +716 -0
  102. package/src/i18n/commands.ts +117 -0
  103. package/src/index.ts +694 -0
  104. package/src/service/central-database.ts +831 -0
  105. package/src/service/control-ui-query-service.ts +888 -0
  106. package/src/service/evolution-query-service.ts +405 -0
  107. package/src/service/evolution-worker.ts +1646 -0
  108. package/src/service/health-query-service.ts +836 -0
  109. package/{dist/service/nocturnal-runtime.js → src/service/nocturnal-runtime.ts} +235 -79
  110. package/src/service/nocturnal-service.ts +1015 -0
  111. package/src/service/nocturnal-target-selector.ts +532 -0
  112. package/src/service/phase3-input-filter.ts +237 -0
  113. package/src/service/runtime-summary-service.ts +757 -0
  114. package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +513 -0
  115. package/{dist/service/subagent-workflow/empathy-observer-workflow-manager.js → src/service/subagent-workflow/empathy-observer-workflow-manager.ts} +240 -117
  116. package/src/service/subagent-workflow/index.ts +51 -0
  117. package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +856 -0
  118. package/src/service/subagent-workflow/runtime-direct-driver.ts +166 -0
  119. package/{dist/service/subagent-workflow/types.d.ts → src/service/subagent-workflow/types.ts} +137 -18
  120. package/src/service/subagent-workflow/workflow-store.ts +328 -0
  121. package/src/service/trajectory-service.ts +15 -0
  122. package/{dist/tools/critique-prompt.js → src/tools/critique-prompt.ts} +25 -8
  123. package/src/tools/deep-reflect.ts +349 -0
  124. package/{dist/tools/model-index.js → src/tools/model-index.ts} +33 -17
  125. package/src/types/event-types.ts +453 -0
  126. package/src/types/hygiene-types.ts +31 -0
  127. package/src/types/principle-tree-schema.ts +244 -0
  128. package/src/types/runtime-summary.ts +49 -0
  129. package/src/types.ts +74 -0
  130. package/src/utils/file-lock.ts +391 -0
  131. package/{dist/utils/glob-match.js → src/utils/glob-match.ts} +21 -20
  132. package/{dist/utils/hashing.js → src/utils/hashing.ts} +6 -4
  133. package/src/utils/io.ts +110 -0
  134. package/{dist/utils/nlp.js → src/utils/nlp.ts} +19 -12
  135. package/{dist/utils/plugin-logger.js → src/utils/plugin-logger.ts} +33 -8
  136. package/src/utils/subagent-probe.ts +94 -0
  137. package/templates/langs/en/skills/ai-sprint-orchestration/EXAMPLES.md +63 -0
  138. package/templates/langs/en/skills/ai-sprint-orchestration/REFERENCE.md +136 -0
  139. package/templates/langs/en/skills/ai-sprint-orchestration/SKILL.md +67 -0
  140. package/templates/langs/en/skills/ai-sprint-orchestration/references/agent-registry.json +214 -0
  141. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +107 -0
  142. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +107 -0
  143. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +105 -0
  144. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +108 -0
  145. package/templates/langs/en/skills/ai-sprint-orchestration/references/workflow-v1-acceptance-checklist.md +58 -0
  146. package/templates/langs/en/skills/ai-sprint-orchestration/references/workflow-v1.4-work-unit-handoff.md +190 -0
  147. package/templates/langs/en/skills/ai-sprint-orchestration/runtime/.gitignore +2 -0
  148. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/archive.mjs +310 -0
  149. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/contract-enforcement.mjs +683 -0
  150. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/decision.mjs +604 -0
  151. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/state-store.mjs +32 -0
  152. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/task-specs.mjs +707 -0
  153. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/run.mjs +3419 -0
  154. package/templates/langs/zh/skills/ai-sprint-orchestration/EXAMPLES.md +63 -0
  155. package/templates/langs/zh/skills/ai-sprint-orchestration/REFERENCE.md +136 -0
  156. package/templates/langs/zh/skills/ai-sprint-orchestration/SKILL.md +67 -0
  157. package/templates/langs/zh/skills/ai-sprint-orchestration/references/agent-registry.json +214 -0
  158. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +107 -0
  159. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +107 -0
  160. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +105 -0
  161. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +108 -0
  162. package/templates/langs/zh/skills/ai-sprint-orchestration/references/workflow-v1-acceptance-checklist.md +58 -0
  163. package/templates/langs/zh/skills/ai-sprint-orchestration/references/workflow-v1.4-work-unit-handoff.md +190 -0
  164. package/templates/langs/zh/skills/ai-sprint-orchestration/runtime/.gitignore +2 -0
  165. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/archive.mjs +310 -0
  166. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/contract-enforcement.mjs +683 -0
  167. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/decision.mjs +604 -0
  168. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/state-store.mjs +32 -0
  169. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/task-specs.mjs +707 -0
  170. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/run.mjs +3419 -0
  171. package/templates/langs/zh/skills/ai-sprint-orchestration/test/archive.test.mjs +230 -0
  172. package/templates/langs/zh/skills/ai-sprint-orchestration/test/contract-enforcement.test.mjs +672 -0
  173. package/templates/langs/zh/skills/ai-sprint-orchestration/test/decision.test.mjs +1321 -0
  174. package/templates/langs/zh/skills/ai-sprint-orchestration/test/run.test.mjs +1419 -0
  175. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +70 -1
  176. package/templates/pain_settings.json +2 -1
  177. package/tests/README.md +120 -0
  178. package/tests/build-artifacts.test.ts +111 -0
  179. package/tests/commands/evolution-status.test.ts +222 -0
  180. package/tests/commands/evolver.test.ts +22 -0
  181. package/tests/commands/export.test.ts +78 -0
  182. package/tests/commands/nocturnal-review.test.ts +448 -0
  183. package/tests/commands/nocturnal-train.test.ts +97 -0
  184. package/tests/commands/pain.test.ts +108 -0
  185. package/tests/commands/samples.test.ts +65 -0
  186. package/tests/commands/strategy.test.ts +34 -0
  187. package/tests/commands/thinking-os.test.ts +88 -0
  188. package/tests/core/adaptive-thresholds.test.ts +261 -0
  189. package/tests/core/config-service.test.ts +89 -0
  190. package/tests/core/config.test.ts +90 -0
  191. package/tests/core/control-ui-db.test.ts +75 -0
  192. package/tests/core/core-template-guidance.test.ts +21 -0
  193. package/tests/core/detection-funnel.test.ts +63 -0
  194. package/tests/core/detection-service.test.ts +50 -0
  195. package/tests/core/dictionary-service.test.ts +116 -0
  196. package/tests/core/dictionary.test.ts +168 -0
  197. package/tests/core/empathy-keyword-matcher.test.ts +209 -0
  198. package/tests/core/event-log.test.ts +181 -0
  199. package/tests/core/evolution-e2e.test.ts +58 -0
  200. package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
  201. package/tests/core/evolution-engine.test.ts +562 -0
  202. package/tests/core/evolution-logger.test.ts +148 -0
  203. package/tests/core/evolution-migration.test.ts +50 -0
  204. package/tests/core/evolution-paths.test.ts +21 -0
  205. package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
  206. package/tests/core/evolution-reducer.test.ts +180 -0
  207. package/tests/core/evolution-types-loop.test.ts +48 -0
  208. package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
  209. package/tests/core/external-training-contract.test.ts +463 -0
  210. package/tests/core/focus-history.test.ts +682 -0
  211. package/tests/core/init-flatten.test.ts +69 -0
  212. package/tests/core/init-refactor.test.ts +87 -0
  213. package/tests/core/init-v1.3.test.ts +46 -0
  214. package/tests/core/init.test.ts +190 -0
  215. package/tests/core/local-worker-routing.test.ts +757 -0
  216. package/tests/core/migration.test.ts +84 -0
  217. package/tests/core/model-deployment-registry.test.ts +845 -0
  218. package/tests/core/model-training-registry.test.ts +889 -0
  219. package/tests/core/nocturnal-arbiter.test.ts +494 -0
  220. package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
  221. package/tests/core/nocturnal-compliance.test.ts +646 -0
  222. package/tests/core/nocturnal-dataset.test.ts +892 -0
  223. package/tests/core/nocturnal-executability.test.ts +357 -0
  224. package/tests/core/nocturnal-export.test.ts +462 -0
  225. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
  226. package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
  227. package/tests/core/nocturnal-trinity.test.ts +953 -0
  228. package/tests/core/pain.test.ts +33 -0
  229. package/tests/core/path-resolver.test.ts +57 -0
  230. package/tests/core/paths-refactor.test.ts +42 -0
  231. package/tests/core/phase7-rollout-integration.test.ts +477 -0
  232. package/tests/core/principle-training-state.test.ts +712 -0
  233. package/tests/core/profile.test.ts +56 -0
  234. package/tests/core/promotion-gate.test.ts +556 -0
  235. package/tests/core/risk-calculator.test.ts +168 -0
  236. package/tests/core/session-tracker.test.ts +191 -0
  237. package/tests/core/training-program.test.ts +472 -0
  238. package/tests/core/trajectory.test.ts +265 -0
  239. package/tests/core/workspace-context-factory.test.ts +18 -0
  240. package/tests/core/workspace-context.test.ts +134 -0
  241. package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
  242. package/tests/fixtures/production-compatibility.test.ts +147 -0
  243. package/tests/fixtures/production-mock-generator.ts +282 -0
  244. package/tests/hooks/bash-risk-integration.test.ts +137 -0
  245. package/tests/hooks/bash-risk.test.ts +81 -0
  246. package/tests/hooks/edit-verification.test.ts +678 -0
  247. package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
  248. package/tests/hooks/gate-edit-verification.test.ts +435 -0
  249. package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
  250. package/tests/hooks/gate.test.ts +271 -0
  251. package/tests/hooks/gfi-gate-unit.test.ts +422 -0
  252. package/tests/hooks/gfi-gate.test.ts +669 -0
  253. package/tests/hooks/lifecycle.test.ts +248 -0
  254. package/tests/hooks/llm.test.ts +308 -0
  255. package/tests/hooks/message-sanitize.test.ts +36 -0
  256. package/tests/hooks/pain.test.ts +141 -0
  257. package/tests/hooks/progressive-trust-gate.test.ts +277 -0
  258. package/tests/hooks/prompt.test.ts +1411 -0
  259. package/tests/hooks/subagent.test.ts +467 -0
  260. package/tests/hooks/thinking-gate.test.ts +313 -0
  261. package/tests/http/principles-console-route.test.ts +140 -0
  262. package/tests/hygiene-tracker.test.ts +77 -0
  263. package/tests/index.integration.test.ts +179 -0
  264. package/tests/index.shadow-routing.integration.test.ts +140 -0
  265. package/tests/index.test.ts +9 -0
  266. package/tests/integration/empathy-workflow-integration.test.ts +627 -0
  267. package/tests/service/control-ui-query-service.test.ts +121 -0
  268. package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
  269. package/tests/service/evolution-worker.test.ts +585 -0
  270. package/tests/service/nocturnal-runtime.test.ts +470 -0
  271. package/tests/service/nocturnal-service.test.ts +577 -0
  272. package/tests/service/nocturnal-target-selector.test.ts +615 -0
  273. package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
  274. package/tests/service/phase3-input-filter.test.ts +289 -0
  275. package/tests/service/runtime-summary-service.test.ts +919 -0
  276. package/tests/task-compliance.test.ts +166 -0
  277. package/tests/test-utils.ts +48 -0
  278. package/tests/tools/critique-prompt.test.ts +260 -0
  279. package/tests/tools/deep-reflect.test.ts +232 -0
  280. package/tests/tools/model-index.test.ts +246 -0
  281. package/tests/ui/app.test.tsx +114 -0
  282. package/tests/utils/file-lock.test.ts +407 -0
  283. package/tests/utils/hashing.test.ts +32 -0
  284. package/tests/utils/io.test.ts +39 -0
  285. package/tests/utils/nlp.test.ts +53 -0
  286. package/tests/utils/plugin-logger.test.ts +156 -0
  287. package/tsconfig.json +16 -0
  288. package/tsconfig.tsbuildinfo +1 -0
  289. package/ui/src/App.tsx +45 -0
  290. package/ui/src/api.ts +216 -0
  291. package/ui/src/charts.tsx +586 -0
  292. package/ui/src/components/ErrorState.tsx +6 -0
  293. package/ui/src/components/Loading.tsx +13 -0
  294. package/ui/src/components/ProtectedRoute.tsx +12 -0
  295. package/ui/src/components/Shell.tsx +91 -0
  296. package/ui/src/components/WorkspaceConfig.tsx +146 -0
  297. package/ui/src/components/index.ts +5 -0
  298. package/ui/src/context/auth.tsx +80 -0
  299. package/ui/src/context/theme.tsx +66 -0
  300. package/ui/src/hooks/useAutoRefresh.ts +39 -0
  301. package/ui/src/i18n/ui.ts +363 -0
  302. package/ui/src/main.tsx +16 -0
  303. package/ui/src/pages/EvolutionPage.tsx +352 -0
  304. package/ui/src/pages/FeedbackPage.tsx +140 -0
  305. package/ui/src/pages/GateMonitorPage.tsx +136 -0
  306. package/ui/src/pages/LoginPage.tsx +88 -0
  307. package/ui/src/pages/OverviewPage.tsx +238 -0
  308. package/ui/src/pages/SamplesPage.tsx +174 -0
  309. package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
  310. package/ui/src/styles.css +1661 -0
  311. package/ui/src/types.ts +368 -0
  312. package/ui/src/utils/format.ts +15 -0
  313. package/vitest.config.ts +23 -0
  314. package/dist/commands/capabilities.d.ts +0 -3
  315. package/dist/commands/capabilities.js +0 -73
  316. package/dist/commands/context.d.ts +0 -5
  317. package/dist/commands/evolution-status.d.ts +0 -4
  318. package/dist/commands/evolution-status.js +0 -117
  319. package/dist/commands/evolver.d.ts +0 -9
  320. package/dist/commands/evolver.js +0 -26
  321. package/dist/commands/export.d.ts +0 -2
  322. package/dist/commands/export.js +0 -98
  323. package/dist/commands/focus.d.ts +0 -14
  324. package/dist/commands/focus.js +0 -457
  325. package/dist/commands/nocturnal-review.d.ts +0 -24
  326. package/dist/commands/nocturnal-review.js +0 -265
  327. package/dist/commands/nocturnal-rollout.d.ts +0 -27
  328. package/dist/commands/nocturnal-rollout.js +0 -671
  329. package/dist/commands/nocturnal-train.d.ts +0 -25
  330. package/dist/commands/nocturnal-train.js +0 -919
  331. package/dist/commands/pain.d.ts +0 -5
  332. package/dist/commands/principle-rollback.d.ts +0 -4
  333. package/dist/commands/principle-rollback.js +0 -22
  334. package/dist/commands/rollback.d.ts +0 -19
  335. package/dist/commands/samples.d.ts +0 -2
  336. package/dist/commands/samples.js +0 -55
  337. package/dist/commands/strategy.d.ts +0 -3
  338. package/dist/commands/strategy.js +0 -29
  339. package/dist/commands/thinking-os.d.ts +0 -2
  340. package/dist/config/defaults/runtime.d.ts +0 -40
  341. package/dist/config/errors.d.ts +0 -84
  342. package/dist/config/errors.js +0 -94
  343. package/dist/config/index.js +0 -7
  344. package/dist/constants/diagnostician.d.ts +0 -12
  345. package/dist/constants/diagnostician.js +0 -56
  346. package/dist/constants/tools.d.ts +0 -17
  347. package/dist/constants/tools.js +0 -54
  348. package/dist/core/adaptive-thresholds.d.ts +0 -186
  349. package/dist/core/adaptive-thresholds.js +0 -300
  350. package/dist/core/config-service.d.ts +0 -15
  351. package/dist/core/config.d.ts +0 -129
  352. package/dist/core/control-ui-db.d.ts +0 -95
  353. package/dist/core/control-ui-db.js +0 -292
  354. package/dist/core/detection-funnel.d.ts +0 -33
  355. package/dist/core/detection-service.d.ts +0 -15
  356. package/dist/core/dictionary-service.d.ts +0 -15
  357. package/dist/core/dictionary.d.ts +0 -38
  358. package/dist/core/event-log.d.ts +0 -82
  359. package/dist/core/event-log.js +0 -463
  360. package/dist/core/evolution-engine.d.ts +0 -118
  361. package/dist/core/evolution-engine.js +0 -464
  362. package/dist/core/evolution-logger.d.ts +0 -137
  363. package/dist/core/evolution-logger.js +0 -256
  364. package/dist/core/evolution-migration.d.ts +0 -5
  365. package/dist/core/evolution-migration.js +0 -65
  366. package/dist/core/evolution-reducer.d.ts +0 -98
  367. package/dist/core/evolution-reducer.js +0 -465
  368. package/dist/core/evolution-types.d.ts +0 -287
  369. package/dist/core/evolution-types.js +0 -78
  370. package/dist/core/external-training-contract.d.ts +0 -276
  371. package/dist/core/external-training-contract.js +0 -269
  372. package/dist/core/focus-history.d.ts +0 -210
  373. package/dist/core/focus-history.js +0 -1185
  374. package/dist/core/hygiene/tracker.d.ts +0 -22
  375. package/dist/core/hygiene/tracker.js +0 -106
  376. package/dist/core/init.d.ts +0 -12
  377. package/dist/core/local-worker-routing.d.ts +0 -175
  378. package/dist/core/local-worker-routing.js +0 -525
  379. package/dist/core/migration.d.ts +0 -6
  380. package/dist/core/model-deployment-registry.d.ts +0 -218
  381. package/dist/core/model-deployment-registry.js +0 -503
  382. package/dist/core/model-training-registry.d.ts +0 -295
  383. package/dist/core/model-training-registry.js +0 -475
  384. package/dist/core/nocturnal-arbiter.d.ts +0 -159
  385. package/dist/core/nocturnal-arbiter.js +0 -534
  386. package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
  387. package/dist/core/nocturnal-candidate-scoring.js +0 -266
  388. package/dist/core/nocturnal-compliance.d.ts +0 -175
  389. package/dist/core/nocturnal-compliance.js +0 -824
  390. package/dist/core/nocturnal-dataset.d.ts +0 -224
  391. package/dist/core/nocturnal-dataset.js +0 -443
  392. package/dist/core/nocturnal-executability.d.ts +0 -85
  393. package/dist/core/nocturnal-executability.js +0 -331
  394. package/dist/core/nocturnal-export.d.ts +0 -124
  395. package/dist/core/nocturnal-export.js +0 -275
  396. package/dist/core/nocturnal-paths.d.ts +0 -124
  397. package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
  398. package/dist/core/nocturnal-trajectory-extractor.js +0 -307
  399. package/dist/core/nocturnal-trinity.d.ts +0 -311
  400. package/dist/core/nocturnal-trinity.js +0 -880
  401. package/dist/core/pain.d.ts +0 -4
  402. package/dist/core/pain.js +0 -70
  403. package/dist/core/path-resolver.d.ts +0 -46
  404. package/dist/core/paths.d.ts +0 -65
  405. package/dist/core/principle-training-state.d.ts +0 -121
  406. package/dist/core/principle-training-state.js +0 -321
  407. package/dist/core/profile.d.ts +0 -62
  408. package/dist/core/profile.js +0 -210
  409. package/dist/core/promotion-gate.d.ts +0 -238
  410. package/dist/core/promotion-gate.js +0 -529
  411. package/dist/core/risk-calculator.d.ts +0 -22
  412. package/dist/core/session-tracker.d.ts +0 -101
  413. package/dist/core/shadow-observation-registry.d.ts +0 -217
  414. package/dist/core/shadow-observation-registry.js +0 -308
  415. package/dist/core/system-logger.d.ts +0 -8
  416. package/dist/core/thinking-models.d.ts +0 -38
  417. package/dist/core/thinking-models.js +0 -170
  418. package/dist/core/training-program.d.ts +0 -233
  419. package/dist/core/training-program.js +0 -433
  420. package/dist/core/trajectory.d.ts +0 -411
  421. package/dist/core/trajectory.js +0 -1307
  422. package/dist/core/workspace-context.d.ts +0 -71
  423. package/dist/hooks/bash-risk.d.ts +0 -57
  424. package/dist/hooks/bash-risk.js +0 -137
  425. package/dist/hooks/edit-verification.d.ts +0 -62
  426. package/dist/hooks/edit-verification.js +0 -256
  427. package/dist/hooks/gate-block-helper.d.ts +0 -44
  428. package/dist/hooks/gate-block-helper.js +0 -119
  429. package/dist/hooks/gate.d.ts +0 -24
  430. package/dist/hooks/gate.js +0 -173
  431. package/dist/hooks/gfi-gate.d.ts +0 -40
  432. package/dist/hooks/gfi-gate.js +0 -113
  433. package/dist/hooks/lifecycle.d.ts +0 -5
  434. package/dist/hooks/lifecycle.js +0 -284
  435. package/dist/hooks/llm.d.ts +0 -13
  436. package/dist/hooks/message-sanitize.d.ts +0 -3
  437. package/dist/hooks/message-sanitize.js +0 -37
  438. package/dist/hooks/pain.d.ts +0 -5
  439. package/dist/hooks/pain.js +0 -301
  440. package/dist/hooks/progressive-trust-gate.d.ts +0 -52
  441. package/dist/hooks/progressive-trust-gate.js +0 -134
  442. package/dist/hooks/prompt.d.ts +0 -49
  443. package/dist/hooks/prompt.js +0 -905
  444. package/dist/hooks/subagent.d.ts +0 -10
  445. package/dist/hooks/subagent.js +0 -387
  446. package/dist/hooks/thinking-checkpoint.d.ts +0 -37
  447. package/dist/hooks/thinking-checkpoint.js +0 -51
  448. package/dist/hooks/trajectory-collector.d.ts +0 -32
  449. package/dist/hooks/trajectory-collector.js +0 -256
  450. package/dist/http/principles-console-route.d.ts +0 -9
  451. package/dist/http/principles-console-route.js +0 -681
  452. package/dist/i18n/commands.d.ts +0 -26
  453. package/dist/i18n/commands.js +0 -116
  454. package/dist/index.d.ts +0 -7
  455. package/dist/index.js +0 -581
  456. package/dist/service/central-database.d.ts +0 -104
  457. package/dist/service/central-database.js +0 -649
  458. package/dist/service/control-ui-query-service.d.ts +0 -221
  459. package/dist/service/control-ui-query-service.js +0 -543
  460. package/dist/service/empathy-observer-manager.d.ts +0 -88
  461. package/dist/service/empathy-observer-manager.js +0 -414
  462. package/dist/service/evolution-query-service.d.ts +0 -155
  463. package/dist/service/evolution-query-service.js +0 -258
  464. package/dist/service/evolution-worker.d.ts +0 -101
  465. package/dist/service/evolution-worker.js +0 -975
  466. package/dist/service/health-query-service.d.ts +0 -170
  467. package/dist/service/health-query-service.js +0 -662
  468. package/dist/service/nocturnal-runtime.d.ts +0 -183
  469. package/dist/service/nocturnal-service.d.ts +0 -163
  470. package/dist/service/nocturnal-service.js +0 -787
  471. package/dist/service/nocturnal-target-selector.d.ts +0 -145
  472. package/dist/service/nocturnal-target-selector.js +0 -315
  473. package/dist/service/phase3-input-filter.d.ts +0 -73
  474. package/dist/service/phase3-input-filter.js +0 -172
  475. package/dist/service/runtime-summary-service.d.ts +0 -122
  476. package/dist/service/runtime-summary-service.js +0 -485
  477. package/dist/service/subagent-workflow/empathy-observer-workflow-manager.d.ts +0 -48
  478. package/dist/service/subagent-workflow/index.d.ts +0 -4
  479. package/dist/service/subagent-workflow/index.js +0 -3
  480. package/dist/service/subagent-workflow/runtime-direct-driver.d.ts +0 -77
  481. package/dist/service/subagent-workflow/runtime-direct-driver.js +0 -75
  482. package/dist/service/subagent-workflow/types.js +0 -11
  483. package/dist/service/subagent-workflow/workflow-store.d.ts +0 -26
  484. package/dist/service/subagent-workflow/workflow-store.js +0 -165
  485. package/dist/service/trajectory-service.d.ts +0 -2
  486. package/dist/service/trajectory-service.js +0 -15
  487. package/dist/tools/critique-prompt.d.ts +0 -14
  488. package/dist/tools/deep-reflect.d.ts +0 -39
  489. package/dist/tools/deep-reflect.js +0 -350
  490. package/dist/tools/model-index.d.ts +0 -9
  491. package/dist/types/event-types.d.ts +0 -306
  492. package/dist/types/event-types.js +0 -106
  493. package/dist/types/hygiene-types.d.ts +0 -20
  494. package/dist/types/hygiene-types.js +0 -12
  495. package/dist/types/runtime-summary.d.ts +0 -47
  496. package/dist/types/runtime-summary.js +0 -1
  497. package/dist/types.d.ts +0 -50
  498. package/dist/types.js +0 -22
  499. package/dist/utils/file-lock.d.ts +0 -71
  500. package/dist/utils/file-lock.js +0 -309
  501. package/dist/utils/glob-match.d.ts +0 -28
  502. package/dist/utils/hashing.d.ts +0 -9
  503. package/dist/utils/io.d.ts +0 -6
  504. package/dist/utils/io.js +0 -106
  505. package/dist/utils/nlp.d.ts +0 -9
  506. package/dist/utils/plugin-logger.d.ts +0 -39
  507. package/dist/utils/subagent-probe.d.ts +0 -34
  508. package/dist/utils/subagent-probe.js +0 -81
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Verify build artifacts after production build.
4
+ * Catches issues like missing static files in the bundle.
5
+ *
6
+ * Usage: node scripts/verify-build.mjs
7
+ * Exit: 0 on success, 1 on failure
8
+ */
9
+
10
+ import { existsSync, readdirSync, statSync } from 'fs';
11
+ import { join, relative } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ import { dirname } from 'path';
14
+
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ const rootDir = join(__dirname, '..');
18
+
19
+ // Required paths in dist/
20
+ const requiredPaths = [
21
+ 'dist/bundle.js',
22
+ 'dist/openclaw.plugin.json',
23
+ 'dist/templates',
24
+ ];
25
+
26
+ // Expected minimum counts
27
+ const expectedCounts = {
28
+ 'dist/templates': { min: 1, label: 'template directories' },
29
+ };
30
+
31
+ function getFilesRecursively(dir, extension = null) {
32
+ if (!existsSync(dir)) return [];
33
+
34
+ const result = [];
35
+ const entries = readdirSync(dir, { withFileTypes: true });
36
+
37
+ for (const entry of entries) {
38
+ const fullPath = join(dir, entry.name);
39
+ if (entry.isDirectory()) {
40
+ result.push(...getFilesRecursively(fullPath, extension));
41
+ } else if (extension) {
42
+ if (entry.name.endsWith(extension)) {
43
+ result.push(fullPath);
44
+ }
45
+ } else {
46
+ result.push(fullPath);
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+
52
+ function getDirectories(dir) {
53
+ if (!existsSync(dir)) return [];
54
+ return readdirSync(dir, { withFileTypes: true })
55
+ .filter(e => e.isDirectory())
56
+ .map(e => e.name);
57
+ }
58
+
59
+ console.log('🔍 Verifying build artifacts...\n');
60
+
61
+ let hasError = false;
62
+
63
+ // 1. Check required paths exist
64
+ for (const path of requiredPaths) {
65
+ const fullPath = join(rootDir, path);
66
+ if (!existsSync(fullPath)) {
67
+ console.error(`❌ Missing: ${path}`);
68
+ hasError = true;
69
+ } else {
70
+ console.log(`✅ Found: ${path}`);
71
+ }
72
+ }
73
+
74
+ // 2. Check expected counts
75
+ for (const [path, config] of Object.entries(expectedCounts)) {
76
+ const fullPath = join(rootDir, path);
77
+
78
+ if (!existsSync(fullPath)) {
79
+ continue; // Already reported above
80
+ }
81
+
82
+ let count;
83
+ if (config.extension) {
84
+ count = getFilesRecursively(fullPath, config.extension).length;
85
+ } else {
86
+ count = getDirectories(fullPath).length;
87
+ }
88
+
89
+ if (count < config.min) {
90
+ console.error(`❌ ${path} has only ${count} ${config.label} (expected at least ${config.min})`);
91
+ hasError = true;
92
+ } else {
93
+ console.log(`✅ ${path} contains ${count} ${config.label}`);
94
+ }
95
+ }
96
+
97
+ // 3. List skill files for visibility (agents migrated to skills in templates/)
98
+ const skillsDir = join(rootDir, 'dist/templates/langs/zh/skills');
99
+ if (existsSync(skillsDir)) {
100
+ const skillFiles = readdirSync(skillsDir)
101
+ .filter(f => f.endsWith('.md'));
102
+
103
+ if (skillFiles.length > 0) {
104
+ console.log(`\n📦 Skills available: ${skillFiles.length} (in dist/templates/langs/zh/skills/)`);
105
+ }
106
+ }
107
+
108
+ console.log(hasError ? '\n❌ Build verification failed!' : '\n✅ Build verification passed!');
109
+ process.exit(hasError ? 1 : 0);
@@ -0,0 +1,152 @@
1
+ # Nocturnal Dreamer — Candidate Generation
2
+
3
+ > System prompt for Trinity Dreamer stage.
4
+ > Role: Generate multiple alternative "better decision" candidates from a session snapshot.
5
+
6
+ ## Role
7
+
8
+ You are a principles analyst specializing in identifying decision alternatives.
9
+ Your task is to analyze a session trajectory and generate **multiple candidate corrections**,
10
+ each representing a different valid approach to the same problem.
11
+
12
+ ## Input
13
+
14
+ You will receive:
15
+ - A **target principle** (principle ID and description)
16
+ - A **session trajectory snapshot** containing:
17
+ - Assistant turns (sanitized text, no raw content)
18
+ - User turns (correction cues only, no raw content)
19
+ - Tool calls with outcomes and error messages
20
+ - Pain events and gate blocks
21
+ - Session metadata
22
+
23
+ ## Task
24
+
25
+ Analyze the session and generate **2-3 candidate corrections**, each capturing:
26
+
27
+ 1. **The bad decision**: What the agent decided or did that violated the target principle
28
+ 2. **The better decision**: What the agent should have done instead (unique per candidate)
29
+ 3. **The rationale**: Why this alternative is better
30
+ 4. **Confidence**: How confident you are this is a valid alternative (0.0-1.0)
31
+
32
+ ## Output Format
33
+
34
+ You MUST respond with ONLY a valid JSON object. No markdown, no explanation, no preamble.
35
+
36
+ ```json
37
+ {
38
+ "valid": true,
39
+ "candidates": [
40
+ {
41
+ "candidateIndex": 0,
42
+ "badDecision": "<what the agent did wrong>",
43
+ "betterDecision": "<what the agent should have done>",
44
+ "rationale": "<why this is better>",
45
+ "confidence": 0.95
46
+ },
47
+ {
48
+ "candidateIndex": 1,
49
+ "badDecision": "<same or different bad decision>",
50
+ "betterDecision": "<different alternative approach>",
51
+ "rationale": "<why this alternative is better>",
52
+ "confidence": 0.85
53
+ }
54
+ ],
55
+ "generatedAt": "<ISO timestamp>"
56
+ }
57
+ ```
58
+
59
+ ## Quality Standards
60
+
61
+ ### Each candidate MUST:
62
+ - Have a `candidateIndex` that is unique within the candidate list
63
+ - Describe a **specific, concrete** badDecision (not generic anti-patterns)
64
+ - Propose a **specific, actionable** betterDecision (contains an action verb)
65
+ - Provide a **principle-grounded** rationale (explicitly references the principle)
66
+ - Include a **confidence** score (0.0-1.0, higher = more confident)
67
+
68
+ ### Candidates should DIFFER from each other:
69
+ - Different candidates should represent genuinely different approaches
70
+ - Do not generate candidates with identical betterDecisions
71
+ - Vary the confidence scores to reflect genuine uncertainty
72
+
73
+ ### Candidates must NOT:
74
+ - Contain raw user text or private content
75
+ - Reference non-existent tools or impossible actions
76
+ - Propose vague improvements ("be more careful")
77
+ - Exceed the requested number of candidates
78
+
79
+ ## Validation
80
+
81
+ If you cannot generate valid candidates (e.g., no clear violation found, insufficient data), respond with:
82
+
83
+ ```json
84
+ {
85
+ "valid": false,
86
+ "candidates": [],
87
+ "reason": "<why valid candidates cannot be generated>",
88
+ "generatedAt": "<ISO timestamp>"
89
+ }
90
+ ```
91
+
92
+ ## Examples
93
+
94
+ ### Example: T-01 (Map Before Territory)
95
+
96
+ Input principle: `T-01` — "Map Before Territory: Always survey the existing structure before making changes"
97
+
98
+ Session: Agent edits `src/main.ts` without reading it first, causing a merge conflict.
99
+
100
+ Valid output:
101
+ ```json
102
+ {
103
+ "valid": true,
104
+ "candidates": [
105
+ {
106
+ "candidateIndex": 0,
107
+ "badDecision": "Edited src/main.ts without first reading its contents, leading to a merge conflict",
108
+ "betterDecision": "Read src/main.ts to understand its current structure before making any edits",
109
+ "rationale": "Surveying existing territory prevents conflicts and ensures edits integrate properly",
110
+ "confidence": 0.95
111
+ },
112
+ {
113
+ "candidateIndex": 1,
114
+ "badDecision": "Made assumptions about function signatures without verifying them",
115
+ "betterDecision": "Search for existing function definitions to understand the API contract",
116
+ "rationale": "Verifying API contracts before use prevents integration errors",
117
+ "confidence": 0.88
118
+ }
119
+ ],
120
+ "generatedAt": "2026-03-27T12:00:00.000Z"
121
+ }
122
+ ```
123
+
124
+ ### Example: T-08 (Pain as Signal)
125
+
126
+ Input principle: `T-08` — "Pain as Signal: Treat failures and errors as signals to pause and reflect"
127
+
128
+ Session: Agent retries a failing bash command 3 times without any diagnosis.
129
+
130
+ Valid output:
131
+ ```json
132
+ {
133
+ "valid": true,
134
+ "candidates": [
135
+ {
136
+ "candidateIndex": 0,
137
+ "badDecision": "Retried failing bash command 3 times without diagnosing the root cause",
138
+ "betterDecision": "Check the error message and verify tool installation before retrying",
139
+ "rationale": "Diagnosing failures prevents repeated failures and respects action cost",
140
+ "confidence": 0.92
141
+ },
142
+ {
143
+ "candidateIndex": 1,
144
+ "badDecision": "Continued to the next operation after a bash failure without addressing it",
145
+ "betterDecision": "Pause and diagnose the failure before continuing with dependent operations",
146
+ "rationale": "Unaddressed failures compound and cause larger issues downstream",
147
+ "confidence": 0.85
148
+ }
149
+ ],
150
+ "generatedAt": "2026-03-27T12:05:00.000Z"
151
+ }
152
+ ```
@@ -0,0 +1,138 @@
1
+ # Nocturnal Philosopher — Candidate Evaluation and Ranking
2
+
3
+ > System prompt for Trinity Philosopher stage.
4
+ > Role: Evaluate Dreamer's candidates and rank them by principle alignment and quality.
5
+
6
+ ## Role
7
+
8
+ You are a principles analyst specializing in critical evaluation.
9
+ Your task is to evaluate Dreamer's candidate corrections and rank them
10
+ based on principle alignment, specificity, and actionability.
11
+
12
+ ## Input
13
+
14
+ You will receive:
15
+ - A **target principle** (principle ID and description)
16
+ - **Dreamer's candidates** — a list of alternative corrections to evaluate
17
+
18
+ ## Task
19
+
20
+ For each candidate, provide:
21
+ 1. **Critique**: A principle-grounded assessment of this candidate's strengths and weaknesses
22
+ 2. **Principle alignment**: Whether this candidate properly aligns with the target principle
23
+ 3. **Score**: Overall quality score (0.0-1.0, higher = better)
24
+ 4. **Rank**: Relative ranking among all candidates (1 = best)
25
+
26
+ Finally, provide an **overall assessment** of the candidate set.
27
+
28
+ ## Output Format
29
+
30
+ You MUST respond with ONLY a valid JSON object. No markdown, no explanation, no preamble.
31
+
32
+ ```json
33
+ {
34
+ "valid": true,
35
+ "judgments": [
36
+ {
37
+ "candidateIndex": 0,
38
+ "critique": "<principle-grounded critique of candidate 0>",
39
+ "principleAligned": true,
40
+ "score": 0.92,
41
+ "rank": 1
42
+ },
43
+ {
44
+ "candidateIndex": 1,
45
+ "critique": "<principle-grounded critique of candidate 1>",
46
+ "principleAligned": true,
47
+ "score": 0.78,
48
+ "rank": 2
49
+ }
50
+ ],
51
+ "overallAssessment": "<summary of candidate set quality and best approach>",
52
+ "generatedAt": "<ISO timestamp>"
53
+ }
54
+ ```
55
+
56
+ ## Evaluation Criteria
57
+
58
+ ### Score Components (0-1 scale each):
59
+
60
+ 1. **Principle Alignment** (weight: 0.4)
61
+ - Does the betterDecision properly reflect the target principle?
62
+ - Does the rationale explicitly connect to the principle?
63
+
64
+ 2. **Specificity** (weight: 0.3)
65
+ - Is badDecision specific (not generic)?
66
+ - Is betterDecision actionable and concrete?
67
+
68
+ 3. **Actionability** (weight: 0.3)
69
+ - Does betterDecision describe a specific next step?
70
+ - Does it contain an actionable verb?
71
+
72
+ ### Ranking Rules:
73
+
74
+ - Candidates are ranked by score (highest = rank 1)
75
+ - Ties should be broken by:
76
+ 1. Higher principle alignment preferred
77
+ 2. Then by candidateIndex (lower = preferred for stability)
78
+
79
+ ### Critique Guidelines:
80
+
81
+ - Be specific about what makes each candidate strong or weak
82
+ - Connect critiques explicitly to the target principle
83
+ - Note if a candidate is generic, vague, or misaligned
84
+
85
+ ## Validation
86
+
87
+ If you cannot judge the candidates (e.g., empty list, principle mismatch), respond with:
88
+
89
+ ```json
90
+ {
91
+ "valid": false,
92
+ "judgments": [],
93
+ "overallAssessment": "",
94
+ "reason": "<why judgment cannot be produced>",
95
+ "generatedAt": "<ISO timestamp>"
96
+ }
97
+ ```
98
+
99
+ ## Examples
100
+
101
+ ### Example: T-01 Candidates
102
+
103
+ Principle: `T-01` — "Map Before Territory"
104
+
105
+ Candidate 0:
106
+ - badDecision: "Edited src/main.ts without reading it first"
107
+ - betterDecision: "Read src/main.ts before making edits"
108
+ - rationale: "Surveying prevents conflicts"
109
+
110
+ Candidate 1:
111
+ - badDecision: "Made assumptions without verification"
112
+ - betterDecision: "Search for existing function definitions"
113
+ - rationale: "Verifying API contracts prevents errors"
114
+
115
+ Valid judgment output:
116
+ ```json
117
+ {
118
+ "valid": true,
119
+ "judgments": [
120
+ {
121
+ "candidateIndex": 0,
122
+ "critique": "Strong alignment with T-01. The badDecision identifies a specific failure point (not reading before editing), and betterDecision is a concrete action (read the file). Rationale directly connects to mapping territory.",
123
+ "principleAligned": true,
124
+ "score": 0.92,
125
+ "rank": 1
126
+ },
127
+ {
128
+ "candidateIndex": 1,
129
+ "critique": "Partial alignment with T-01. While searching for function definitions is a valid mapping activity, the badDecision is somewhat generic ('assumptions without verification' could describe many situations). More specificity would strengthen this candidate.",
130
+ "principleAligned": true,
131
+ "score": 0.78,
132
+ "rank": 2
133
+ }
134
+ ],
135
+ "overallAssessment": "Both candidates show alignment with T-01's core principle of surveying before acting. Candidate 0 is stronger due to its specificity. Consider using Candidate 0 as the primary approach.",
136
+ "generatedAt": "2026-03-27T12:10:00.000Z"
137
+ }
138
+ ```
@@ -0,0 +1,126 @@
1
+ # Nocturnal Reflector Prompt
2
+
3
+ > System prompt for single-reflector decision-point sample generation.
4
+
5
+ ## Role
6
+
7
+ You are a principles analyst. Your task is to analyze a session trajectory and generate a structured decision-point correction sample for principle-based training.
8
+
9
+ ## Input
10
+
11
+ You will receive:
12
+ - A **target principle** (principle ID and description)
13
+ - A **session trajectory snapshot** containing:
14
+ - Assistant turns (sanitized text, no raw content)
15
+ - User turns (correction cues only, no raw content)
16
+ - Tool calls with outcomes and error messages
17
+ - Pain events and gate blocks
18
+ - Session metadata
19
+
20
+ ## Task
21
+
22
+ Analyze the session and generate a **decision-point sample** that captures:
23
+
24
+ 1. **The bad decision**: What the agent decided or did that violated or failed to follow the target principle
25
+ 2. **The better decision**: What the agent should have done instead
26
+ 3. **The rationale**: Why the better decision would have been correct
27
+
28
+ ## Output Format
29
+
30
+ You MUST respond with ONLY a valid JSON object. No markdown, no explanation, no preamble.
31
+
32
+ ```json
33
+ {
34
+ "artifactId": "<uuid>",
35
+ "sessionId": "<source session ID>",
36
+ "principleId": "<principle ID>",
37
+ "sourceSnapshotRef": "<session snapshot reference>",
38
+ "badDecision": "<what the agent did wrong>",
39
+ "betterDecision": "<what the agent should have done>",
40
+ "rationale": "<why this is better>",
41
+ "createdAt": "<ISO timestamp>"
42
+ }
43
+ ```
44
+
45
+ ## Constraints
46
+
47
+ ### MUST include:
48
+ - `artifactId`: A unique identifier (UUID v4 recommended)
49
+ - `sessionId`: The source session ID from the input
50
+ - `principleId`: The target principle ID from the input
51
+ - `badDecision`: A specific, concrete description of the bad decision
52
+ - `betterDecision`: A specific, concrete alternative action
53
+ - `rationale`: Explanation connecting the principle to the better decision
54
+ - All fields must be non-empty strings
55
+
56
+ ### MUST NOT include:
57
+ - Raw user text or private content
58
+ - File paths with actual project content
59
+ - Vague moralizing statements
60
+ - Suggestions that contradict the target principle
61
+ - Anything that is not a decision-point correction
62
+
63
+ ### Quality standards:
64
+ - `badDecision` should identify the specific point of failure, not just the outcome
65
+ - `betterDecision` should be an actionable next step, not a vague improvement
66
+ - `rationale` should explicitly reference the target principle
67
+
68
+ ## Validation
69
+
70
+ If you cannot generate a valid sample (e.g., no clear violation found, insufficient data), respond with:
71
+
72
+ ```json
73
+ {
74
+ "invalid": true,
75
+ "reason": "<why a valid sample cannot be generated>",
76
+ "artifactId": "<placeholder>",
77
+ "sessionId": "<source session ID>",
78
+ "principleId": "<principle ID>",
79
+ "badDecision": "",
80
+ "betterDecision": "",
81
+ "rationale": "",
82
+ "createdAt": "<ISO timestamp>"
83
+ }
84
+ ```
85
+
86
+ ## Examples
87
+
88
+ ### T-01 (Map Before Territory) Example
89
+
90
+ Input principle: `T-01` — "Map Before Territory: Always survey the existing structure before making changes"
91
+
92
+ Session: Agent edits `src/main.ts` without reading it first, causing a merge conflict.
93
+
94
+ Valid output:
95
+ ```json
96
+ {
97
+ "artifactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
98
+ "sessionId": "session-abc123",
99
+ "principleId": "T-01",
100
+ "sourceSnapshotRef": "snapshot-2026-03-27-001",
101
+ "badDecision": "Edited src/main.ts without first reading its contents, leading to a merge conflict with parallel changes",
102
+ "betterDecision": "Before editing, read src/main.ts to understand its current structure and identify any conflicting sections",
103
+ "rationale": "Surveying the existing territory before making changes prevents conflicts and ensures the edit integrates properly with the current implementation",
104
+ "createdAt": "2026-03-27T12:00:00.000Z"
105
+ }
106
+ ```
107
+
108
+ ### T-08 (Pain as Signal) Example
109
+
110
+ Input principle: `T-08` — "Pain as Signal: Treat failures and errors as signals to pause and reflect"
111
+
112
+ Session: Agent attempts a bash command that fails, then immediately retries the same command without any reflection.
113
+
114
+ Valid output:
115
+ ```json
116
+ {
117
+ "artifactId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
118
+ "sessionId": "session-def456",
119
+ "principleId": "T-08",
120
+ "sourceSnapshotRef": "snapshot-2026-03-27-002",
121
+ "badDecision": "After bash command failed with 'command not found', immediately retried the exact same command without pausing to diagnose the root cause",
122
+ "betterDecision": "When the bash command fails, pause to check if the tool is installed, verify the path, or consult documentation before retrying",
123
+ "rationale": "Treating each failure as a signal to diagnose rather than blindly retry prevents repeated failures and respects the cost of each action",
124
+ "createdAt": "2026-03-27T12:05:00.000Z"
125
+ }
126
+ ```
@@ -0,0 +1,164 @@
1
+ # Nocturnal Scribe — Final Artifact Synthesis
2
+
3
+ > System prompt for Trinity Scribe stage.
4
+ > Role: Synthesize the best candidate into a final structured artifact.
5
+
6
+ ## Role
7
+
8
+ You are a principles analyst specializing in structured output.
9
+ Your task is to take the top-ranked candidate from Philosopher's evaluation
10
+ and synthesize it into a final decision-point artifact that passes arbiter validation.
11
+
12
+ ## Input
13
+
14
+ You will receive:
15
+ - A **target principle** (principle ID and description)
16
+ - A **session trajectory snapshot**
17
+ - **Philosopher's judgments** — ranked candidates with critiques
18
+ - **Dreamer's candidates** — the original candidate list
19
+
20
+ ## Task
21
+
22
+ Select the best candidate (Philosopher's rank 1) and synthesize it into
23
+ a final **TrinityDraftArtifact** with:
24
+ - The selected candidate index
25
+ - The final badDecision, betterDecision, and rationale
26
+ - Session and principle references
27
+ - Chain telemetry
28
+
29
+ ## Output Format
30
+
31
+ You MUST respond with ONLY a valid JSON object. No markdown, no explanation, no preamble.
32
+
33
+ ```json
34
+ {
35
+ "selectedCandidateIndex": 0,
36
+ "badDecision": "<final bad decision text>",
37
+ "betterDecision": "<final better decision text>",
38
+ "rationale": "<final rationale text>",
39
+ "sessionId": "<source session ID>",
40
+ "principleId": "<principle ID>",
41
+ "sourceSnapshotRef": "<snapshot reference>",
42
+ "telemetry": {
43
+ "chainMode": "trinity",
44
+ "dreamerPassed": true,
45
+ "philosopherPassed": true,
46
+ "scribePassed": true,
47
+ "candidateCount": 2,
48
+ "selectedCandidateIndex": 0,
49
+ "stageFailures": []
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Synthesis Guidelines
55
+
56
+ ### The final artifact MUST:
57
+
58
+ 1. **Be well-formed**: All required fields present and non-empty
59
+ 2. **Be specific**: badDecision and betterDecision describe concrete situations and actions
60
+ 3. **Be actionable**: betterDecision contains a clear, executable next step
61
+ 4. **Be principled**: rationale explicitly connects to the target principle
62
+ 5. **Be distinct**: badDecision and betterDecision must not be identical
63
+
64
+ ### Synthesis Rules:
65
+
66
+ - Use the Philosopher's top-ranked candidate as the base
67
+ - If the top candidate has issues (e.g., too generic), you may refine it
68
+ - Refinements must maintain principle alignment and improve specificity
69
+ - The final artifact must pass arbiter validation rules
70
+
71
+ ### Telemetry:
72
+
73
+ - `chainMode`: Always "trinity" for Trinity chain artifacts
74
+ - `dreamerPassed`: Whether Dreamer stage succeeded
75
+ - `philosopherPassed`: Whether Philosopher stage succeeded
76
+ - `scribePassed`: Always true if you are producing output
77
+ - `candidateCount`: Number of candidates Dreamer generated
78
+ - `selectedCandidateIndex`: Index of the candidate you selected
79
+ - `stageFailures`: Any failure messages from earlier stages
80
+
81
+ ## Validation
82
+
83
+ If you cannot synthesize an artifact (e.g., no valid candidates, all rejected), respond with:
84
+
85
+ ```json
86
+ {
87
+ "selectedCandidateIndex": -1,
88
+ "badDecision": "",
89
+ "betterDecision": "",
90
+ "rationale": "",
91
+ "sessionId": "<source session ID>",
92
+ "principleId": "<principle ID>",
93
+ "sourceSnapshotRef": "",
94
+ "telemetry": {
95
+ "chainMode": "trinity",
96
+ "dreamerPassed": true,
97
+ "philosopherPassed": false,
98
+ "scribePassed": false,
99
+ "candidateCount": 2,
100
+ "selectedCandidateIndex": -1,
101
+ "stageFailures": ["Philosopher: no valid judgments produced"]
102
+ }
103
+ }
104
+ ```
105
+
106
+ ## Examples
107
+
108
+ ### Example: T-01 Artifact
109
+
110
+ Principle: `T-01` — "Map Before Territory"
111
+
112
+ Session: Agent edited file without reading it.
113
+
114
+ Philosopher ranked Candidate 0 as best (score 0.92).
115
+
116
+ Synthesized artifact:
117
+ ```json
118
+ {
119
+ "selectedCandidateIndex": 0,
120
+ "badDecision": "Edited src/main.ts without first reading its contents, leading to a merge conflict with parallel changes",
121
+ "betterDecision": "Before editing, read src/main.ts to understand its current structure and identify any conflicting sections",
122
+ "rationale": "Surveying the existing territory before making changes prevents conflicts and ensures the edit integrates properly with the current implementation",
123
+ "sessionId": "session-abc123",
124
+ "principleId": "T-01",
125
+ "sourceSnapshotRef": "snapshot-session-abc123-1711536000000",
126
+ "telemetry": {
127
+ "chainMode": "trinity",
128
+ "dreamerPassed": true,
129
+ "philosopherPassed": true,
130
+ "scribePassed": true,
131
+ "candidateCount": 2,
132
+ "selectedCandidateIndex": 0,
133
+ "stageFailures": []
134
+ }
135
+ }
136
+ ```
137
+
138
+ ### Example: T-08 Artifact
139
+
140
+ Principle: `T-08` — "Pain as Signal"
141
+
142
+ Session: Agent retried failing command without diagnosis.
143
+
144
+ Synthesized artifact:
145
+ ```json
146
+ {
147
+ "selectedCandidateIndex": 0,
148
+ "badDecision": "After bash command failed with 'command not found', immediately retried the exact same command without pausing to diagnose the root cause",
149
+ "betterDecision": "When the bash command fails, pause to check if the tool is installed, verify the path, or consult documentation before retrying",
150
+ "rationale": "Treating each failure as a signal to diagnose rather than blindly retry prevents repeated failures and respects the cost of each action attempt",
151
+ "sessionId": "session-def456",
152
+ "principleId": "T-08",
153
+ "sourceSnapshotRef": "snapshot-session-def456-1711536300000",
154
+ "telemetry": {
155
+ "chainMode": "trinity",
156
+ "dreamerPassed": true,
157
+ "philosopherPassed": true,
158
+ "scribePassed": true,
159
+ "candidateCount": 2,
160
+ "selectedCandidateIndex": 0,
161
+ "stageFailures": []
162
+ }
163
+ }
164
+ ```