principles-disciple 1.8.1 → 1.8.2

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 (470) 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/zh/skills/pd-diagnostician/SKILL.md +70 -1
  138. package/templates/pain_settings.json +2 -1
  139. package/tests/README.md +120 -0
  140. package/tests/build-artifacts.test.ts +111 -0
  141. package/tests/commands/evolution-status.test.ts +222 -0
  142. package/tests/commands/evolver.test.ts +22 -0
  143. package/tests/commands/export.test.ts +78 -0
  144. package/tests/commands/nocturnal-review.test.ts +448 -0
  145. package/tests/commands/nocturnal-train.test.ts +97 -0
  146. package/tests/commands/pain.test.ts +108 -0
  147. package/tests/commands/samples.test.ts +65 -0
  148. package/tests/commands/strategy.test.ts +34 -0
  149. package/tests/commands/thinking-os.test.ts +88 -0
  150. package/tests/core/adaptive-thresholds.test.ts +261 -0
  151. package/tests/core/config-service.test.ts +89 -0
  152. package/tests/core/config.test.ts +90 -0
  153. package/tests/core/control-ui-db.test.ts +75 -0
  154. package/tests/core/core-template-guidance.test.ts +21 -0
  155. package/tests/core/detection-funnel.test.ts +63 -0
  156. package/tests/core/detection-service.test.ts +50 -0
  157. package/tests/core/dictionary-service.test.ts +116 -0
  158. package/tests/core/dictionary.test.ts +168 -0
  159. package/tests/core/empathy-keyword-matcher.test.ts +209 -0
  160. package/tests/core/event-log.test.ts +181 -0
  161. package/tests/core/evolution-e2e.test.ts +58 -0
  162. package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
  163. package/tests/core/evolution-engine.test.ts +562 -0
  164. package/tests/core/evolution-logger.test.ts +148 -0
  165. package/tests/core/evolution-migration.test.ts +50 -0
  166. package/tests/core/evolution-paths.test.ts +21 -0
  167. package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
  168. package/tests/core/evolution-reducer.test.ts +180 -0
  169. package/tests/core/evolution-types-loop.test.ts +48 -0
  170. package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
  171. package/tests/core/external-training-contract.test.ts +463 -0
  172. package/tests/core/focus-history.test.ts +682 -0
  173. package/tests/core/init-flatten.test.ts +69 -0
  174. package/tests/core/init-refactor.test.ts +87 -0
  175. package/tests/core/init-v1.3.test.ts +46 -0
  176. package/tests/core/init.test.ts +190 -0
  177. package/tests/core/local-worker-routing.test.ts +757 -0
  178. package/tests/core/migration.test.ts +84 -0
  179. package/tests/core/model-deployment-registry.test.ts +845 -0
  180. package/tests/core/model-training-registry.test.ts +889 -0
  181. package/tests/core/nocturnal-arbiter.test.ts +494 -0
  182. package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
  183. package/tests/core/nocturnal-compliance.test.ts +646 -0
  184. package/tests/core/nocturnal-dataset.test.ts +892 -0
  185. package/tests/core/nocturnal-executability.test.ts +357 -0
  186. package/tests/core/nocturnal-export.test.ts +462 -0
  187. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
  188. package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
  189. package/tests/core/nocturnal-trinity.test.ts +953 -0
  190. package/tests/core/pain.test.ts +33 -0
  191. package/tests/core/path-resolver.test.ts +57 -0
  192. package/tests/core/paths-refactor.test.ts +42 -0
  193. package/tests/core/phase7-rollout-integration.test.ts +477 -0
  194. package/tests/core/principle-training-state.test.ts +712 -0
  195. package/tests/core/profile.test.ts +56 -0
  196. package/tests/core/promotion-gate.test.ts +556 -0
  197. package/tests/core/risk-calculator.test.ts +168 -0
  198. package/tests/core/session-tracker.test.ts +191 -0
  199. package/tests/core/training-program.test.ts +472 -0
  200. package/tests/core/trajectory.test.ts +265 -0
  201. package/tests/core/workspace-context-factory.test.ts +18 -0
  202. package/tests/core/workspace-context.test.ts +134 -0
  203. package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
  204. package/tests/fixtures/production-compatibility.test.ts +147 -0
  205. package/tests/fixtures/production-mock-generator.ts +282 -0
  206. package/tests/hooks/bash-risk-integration.test.ts +137 -0
  207. package/tests/hooks/bash-risk.test.ts +81 -0
  208. package/tests/hooks/edit-verification.test.ts +678 -0
  209. package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
  210. package/tests/hooks/gate-edit-verification.test.ts +435 -0
  211. package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
  212. package/tests/hooks/gate.test.ts +271 -0
  213. package/tests/hooks/gfi-gate-unit.test.ts +422 -0
  214. package/tests/hooks/gfi-gate.test.ts +669 -0
  215. package/tests/hooks/lifecycle.test.ts +248 -0
  216. package/tests/hooks/llm.test.ts +308 -0
  217. package/tests/hooks/message-sanitize.test.ts +36 -0
  218. package/tests/hooks/pain.test.ts +141 -0
  219. package/tests/hooks/progressive-trust-gate.test.ts +277 -0
  220. package/tests/hooks/prompt.test.ts +1411 -0
  221. package/tests/hooks/subagent.test.ts +467 -0
  222. package/tests/hooks/thinking-gate.test.ts +313 -0
  223. package/tests/http/principles-console-route.test.ts +140 -0
  224. package/tests/hygiene-tracker.test.ts +77 -0
  225. package/tests/index.integration.test.ts +179 -0
  226. package/tests/index.shadow-routing.integration.test.ts +140 -0
  227. package/tests/index.test.ts +9 -0
  228. package/tests/integration/empathy-workflow-integration.test.ts +627 -0
  229. package/tests/service/control-ui-query-service.test.ts +121 -0
  230. package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
  231. package/tests/service/evolution-worker.test.ts +585 -0
  232. package/tests/service/nocturnal-runtime.test.ts +470 -0
  233. package/tests/service/nocturnal-service.test.ts +577 -0
  234. package/tests/service/nocturnal-target-selector.test.ts +615 -0
  235. package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
  236. package/tests/service/phase3-input-filter.test.ts +289 -0
  237. package/tests/service/runtime-summary-service.test.ts +919 -0
  238. package/tests/task-compliance.test.ts +166 -0
  239. package/tests/test-utils.ts +48 -0
  240. package/tests/tools/critique-prompt.test.ts +260 -0
  241. package/tests/tools/deep-reflect.test.ts +232 -0
  242. package/tests/tools/model-index.test.ts +246 -0
  243. package/tests/ui/app.test.tsx +114 -0
  244. package/tests/utils/file-lock.test.ts +407 -0
  245. package/tests/utils/hashing.test.ts +32 -0
  246. package/tests/utils/io.test.ts +39 -0
  247. package/tests/utils/nlp.test.ts +53 -0
  248. package/tests/utils/plugin-logger.test.ts +156 -0
  249. package/tsconfig.json +16 -0
  250. package/tsconfig.tsbuildinfo +1 -0
  251. package/ui/src/App.tsx +45 -0
  252. package/ui/src/api.ts +216 -0
  253. package/ui/src/charts.tsx +586 -0
  254. package/ui/src/components/ErrorState.tsx +6 -0
  255. package/ui/src/components/Loading.tsx +13 -0
  256. package/ui/src/components/ProtectedRoute.tsx +12 -0
  257. package/ui/src/components/Shell.tsx +91 -0
  258. package/ui/src/components/WorkspaceConfig.tsx +146 -0
  259. package/ui/src/components/index.ts +5 -0
  260. package/ui/src/context/auth.tsx +80 -0
  261. package/ui/src/context/theme.tsx +66 -0
  262. package/ui/src/hooks/useAutoRefresh.ts +39 -0
  263. package/ui/src/i18n/ui.ts +363 -0
  264. package/ui/src/main.tsx +16 -0
  265. package/ui/src/pages/EvolutionPage.tsx +352 -0
  266. package/ui/src/pages/FeedbackPage.tsx +140 -0
  267. package/ui/src/pages/GateMonitorPage.tsx +136 -0
  268. package/ui/src/pages/LoginPage.tsx +88 -0
  269. package/ui/src/pages/OverviewPage.tsx +238 -0
  270. package/ui/src/pages/SamplesPage.tsx +174 -0
  271. package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
  272. package/ui/src/styles.css +1661 -0
  273. package/ui/src/types.ts +368 -0
  274. package/ui/src/utils/format.ts +15 -0
  275. package/vitest.config.ts +23 -0
  276. package/dist/commands/capabilities.d.ts +0 -3
  277. package/dist/commands/capabilities.js +0 -73
  278. package/dist/commands/context.d.ts +0 -5
  279. package/dist/commands/evolution-status.d.ts +0 -4
  280. package/dist/commands/evolution-status.js +0 -117
  281. package/dist/commands/evolver.d.ts +0 -9
  282. package/dist/commands/evolver.js +0 -26
  283. package/dist/commands/export.d.ts +0 -2
  284. package/dist/commands/export.js +0 -98
  285. package/dist/commands/focus.d.ts +0 -14
  286. package/dist/commands/focus.js +0 -457
  287. package/dist/commands/nocturnal-review.d.ts +0 -24
  288. package/dist/commands/nocturnal-review.js +0 -265
  289. package/dist/commands/nocturnal-rollout.d.ts +0 -27
  290. package/dist/commands/nocturnal-rollout.js +0 -671
  291. package/dist/commands/nocturnal-train.d.ts +0 -25
  292. package/dist/commands/nocturnal-train.js +0 -919
  293. package/dist/commands/pain.d.ts +0 -5
  294. package/dist/commands/principle-rollback.d.ts +0 -4
  295. package/dist/commands/principle-rollback.js +0 -22
  296. package/dist/commands/rollback.d.ts +0 -19
  297. package/dist/commands/samples.d.ts +0 -2
  298. package/dist/commands/samples.js +0 -55
  299. package/dist/commands/strategy.d.ts +0 -3
  300. package/dist/commands/strategy.js +0 -29
  301. package/dist/commands/thinking-os.d.ts +0 -2
  302. package/dist/config/defaults/runtime.d.ts +0 -40
  303. package/dist/config/errors.d.ts +0 -84
  304. package/dist/config/errors.js +0 -94
  305. package/dist/config/index.js +0 -7
  306. package/dist/constants/diagnostician.d.ts +0 -12
  307. package/dist/constants/diagnostician.js +0 -56
  308. package/dist/constants/tools.d.ts +0 -17
  309. package/dist/constants/tools.js +0 -54
  310. package/dist/core/adaptive-thresholds.d.ts +0 -186
  311. package/dist/core/adaptive-thresholds.js +0 -300
  312. package/dist/core/config-service.d.ts +0 -15
  313. package/dist/core/config.d.ts +0 -129
  314. package/dist/core/control-ui-db.d.ts +0 -95
  315. package/dist/core/control-ui-db.js +0 -292
  316. package/dist/core/detection-funnel.d.ts +0 -33
  317. package/dist/core/detection-service.d.ts +0 -15
  318. package/dist/core/dictionary-service.d.ts +0 -15
  319. package/dist/core/dictionary.d.ts +0 -38
  320. package/dist/core/event-log.d.ts +0 -82
  321. package/dist/core/event-log.js +0 -463
  322. package/dist/core/evolution-engine.d.ts +0 -118
  323. package/dist/core/evolution-engine.js +0 -464
  324. package/dist/core/evolution-logger.d.ts +0 -137
  325. package/dist/core/evolution-logger.js +0 -256
  326. package/dist/core/evolution-migration.d.ts +0 -5
  327. package/dist/core/evolution-migration.js +0 -65
  328. package/dist/core/evolution-reducer.d.ts +0 -98
  329. package/dist/core/evolution-reducer.js +0 -465
  330. package/dist/core/evolution-types.d.ts +0 -287
  331. package/dist/core/evolution-types.js +0 -78
  332. package/dist/core/external-training-contract.d.ts +0 -276
  333. package/dist/core/external-training-contract.js +0 -269
  334. package/dist/core/focus-history.d.ts +0 -210
  335. package/dist/core/focus-history.js +0 -1185
  336. package/dist/core/hygiene/tracker.d.ts +0 -22
  337. package/dist/core/hygiene/tracker.js +0 -106
  338. package/dist/core/init.d.ts +0 -12
  339. package/dist/core/local-worker-routing.d.ts +0 -175
  340. package/dist/core/local-worker-routing.js +0 -525
  341. package/dist/core/migration.d.ts +0 -6
  342. package/dist/core/model-deployment-registry.d.ts +0 -218
  343. package/dist/core/model-deployment-registry.js +0 -503
  344. package/dist/core/model-training-registry.d.ts +0 -295
  345. package/dist/core/model-training-registry.js +0 -475
  346. package/dist/core/nocturnal-arbiter.d.ts +0 -159
  347. package/dist/core/nocturnal-arbiter.js +0 -534
  348. package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
  349. package/dist/core/nocturnal-candidate-scoring.js +0 -266
  350. package/dist/core/nocturnal-compliance.d.ts +0 -175
  351. package/dist/core/nocturnal-compliance.js +0 -824
  352. package/dist/core/nocturnal-dataset.d.ts +0 -224
  353. package/dist/core/nocturnal-dataset.js +0 -443
  354. package/dist/core/nocturnal-executability.d.ts +0 -85
  355. package/dist/core/nocturnal-executability.js +0 -331
  356. package/dist/core/nocturnal-export.d.ts +0 -124
  357. package/dist/core/nocturnal-export.js +0 -275
  358. package/dist/core/nocturnal-paths.d.ts +0 -124
  359. package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
  360. package/dist/core/nocturnal-trajectory-extractor.js +0 -307
  361. package/dist/core/nocturnal-trinity.d.ts +0 -311
  362. package/dist/core/nocturnal-trinity.js +0 -880
  363. package/dist/core/pain.d.ts +0 -4
  364. package/dist/core/pain.js +0 -70
  365. package/dist/core/path-resolver.d.ts +0 -46
  366. package/dist/core/paths.d.ts +0 -65
  367. package/dist/core/principle-training-state.d.ts +0 -121
  368. package/dist/core/principle-training-state.js +0 -321
  369. package/dist/core/profile.d.ts +0 -62
  370. package/dist/core/profile.js +0 -210
  371. package/dist/core/promotion-gate.d.ts +0 -238
  372. package/dist/core/promotion-gate.js +0 -529
  373. package/dist/core/risk-calculator.d.ts +0 -22
  374. package/dist/core/session-tracker.d.ts +0 -101
  375. package/dist/core/shadow-observation-registry.d.ts +0 -217
  376. package/dist/core/shadow-observation-registry.js +0 -308
  377. package/dist/core/system-logger.d.ts +0 -8
  378. package/dist/core/thinking-models.d.ts +0 -38
  379. package/dist/core/thinking-models.js +0 -170
  380. package/dist/core/training-program.d.ts +0 -233
  381. package/dist/core/training-program.js +0 -433
  382. package/dist/core/trajectory.d.ts +0 -411
  383. package/dist/core/trajectory.js +0 -1307
  384. package/dist/core/workspace-context.d.ts +0 -71
  385. package/dist/hooks/bash-risk.d.ts +0 -57
  386. package/dist/hooks/bash-risk.js +0 -137
  387. package/dist/hooks/edit-verification.d.ts +0 -62
  388. package/dist/hooks/edit-verification.js +0 -256
  389. package/dist/hooks/gate-block-helper.d.ts +0 -44
  390. package/dist/hooks/gate-block-helper.js +0 -119
  391. package/dist/hooks/gate.d.ts +0 -24
  392. package/dist/hooks/gate.js +0 -173
  393. package/dist/hooks/gfi-gate.d.ts +0 -40
  394. package/dist/hooks/gfi-gate.js +0 -113
  395. package/dist/hooks/lifecycle.d.ts +0 -5
  396. package/dist/hooks/lifecycle.js +0 -284
  397. package/dist/hooks/llm.d.ts +0 -13
  398. package/dist/hooks/message-sanitize.d.ts +0 -3
  399. package/dist/hooks/message-sanitize.js +0 -37
  400. package/dist/hooks/pain.d.ts +0 -5
  401. package/dist/hooks/pain.js +0 -301
  402. package/dist/hooks/progressive-trust-gate.d.ts +0 -52
  403. package/dist/hooks/progressive-trust-gate.js +0 -134
  404. package/dist/hooks/prompt.d.ts +0 -49
  405. package/dist/hooks/prompt.js +0 -905
  406. package/dist/hooks/subagent.d.ts +0 -10
  407. package/dist/hooks/subagent.js +0 -387
  408. package/dist/hooks/thinking-checkpoint.d.ts +0 -37
  409. package/dist/hooks/thinking-checkpoint.js +0 -51
  410. package/dist/hooks/trajectory-collector.d.ts +0 -32
  411. package/dist/hooks/trajectory-collector.js +0 -256
  412. package/dist/http/principles-console-route.d.ts +0 -9
  413. package/dist/http/principles-console-route.js +0 -681
  414. package/dist/i18n/commands.d.ts +0 -26
  415. package/dist/i18n/commands.js +0 -116
  416. package/dist/index.d.ts +0 -7
  417. package/dist/index.js +0 -581
  418. package/dist/service/central-database.d.ts +0 -104
  419. package/dist/service/central-database.js +0 -649
  420. package/dist/service/control-ui-query-service.d.ts +0 -221
  421. package/dist/service/control-ui-query-service.js +0 -543
  422. package/dist/service/empathy-observer-manager.d.ts +0 -88
  423. package/dist/service/empathy-observer-manager.js +0 -414
  424. package/dist/service/evolution-query-service.d.ts +0 -155
  425. package/dist/service/evolution-query-service.js +0 -258
  426. package/dist/service/evolution-worker.d.ts +0 -101
  427. package/dist/service/evolution-worker.js +0 -975
  428. package/dist/service/health-query-service.d.ts +0 -170
  429. package/dist/service/health-query-service.js +0 -662
  430. package/dist/service/nocturnal-runtime.d.ts +0 -183
  431. package/dist/service/nocturnal-service.d.ts +0 -163
  432. package/dist/service/nocturnal-service.js +0 -787
  433. package/dist/service/nocturnal-target-selector.d.ts +0 -145
  434. package/dist/service/nocturnal-target-selector.js +0 -315
  435. package/dist/service/phase3-input-filter.d.ts +0 -73
  436. package/dist/service/phase3-input-filter.js +0 -172
  437. package/dist/service/runtime-summary-service.d.ts +0 -122
  438. package/dist/service/runtime-summary-service.js +0 -485
  439. package/dist/service/subagent-workflow/empathy-observer-workflow-manager.d.ts +0 -48
  440. package/dist/service/subagent-workflow/index.d.ts +0 -4
  441. package/dist/service/subagent-workflow/index.js +0 -3
  442. package/dist/service/subagent-workflow/runtime-direct-driver.d.ts +0 -77
  443. package/dist/service/subagent-workflow/runtime-direct-driver.js +0 -75
  444. package/dist/service/subagent-workflow/types.js +0 -11
  445. package/dist/service/subagent-workflow/workflow-store.d.ts +0 -26
  446. package/dist/service/subagent-workflow/workflow-store.js +0 -165
  447. package/dist/service/trajectory-service.d.ts +0 -2
  448. package/dist/service/trajectory-service.js +0 -15
  449. package/dist/tools/critique-prompt.d.ts +0 -14
  450. package/dist/tools/deep-reflect.d.ts +0 -39
  451. package/dist/tools/deep-reflect.js +0 -350
  452. package/dist/tools/model-index.d.ts +0 -9
  453. package/dist/types/event-types.d.ts +0 -306
  454. package/dist/types/event-types.js +0 -106
  455. package/dist/types/hygiene-types.d.ts +0 -20
  456. package/dist/types/hygiene-types.js +0 -12
  457. package/dist/types/runtime-summary.d.ts +0 -47
  458. package/dist/types/runtime-summary.js +0 -1
  459. package/dist/types.d.ts +0 -50
  460. package/dist/types.js +0 -22
  461. package/dist/utils/file-lock.d.ts +0 -71
  462. package/dist/utils/file-lock.js +0 -309
  463. package/dist/utils/glob-match.d.ts +0 -28
  464. package/dist/utils/hashing.d.ts +0 -9
  465. package/dist/utils/io.d.ts +0 -6
  466. package/dist/utils/io.js +0 -106
  467. package/dist/utils/nlp.d.ts +0 -9
  468. package/dist/utils/plugin-logger.d.ts +0 -39
  469. package/dist/utils/subagent-probe.d.ts +0 -34
  470. package/dist/utils/subagent-probe.js +0 -81
@@ -1,307 +0,0 @@
1
- /**
2
- * Nocturnal Trajectory Extractor — Structured Session Snapshot API
3
- * ==============================================================
4
- *
5
- * PURPOSE: Provide minimal necessary structured trajectory extraction
6
- * for the nocturnal reflection pipeline. NOT a general-purpose data mirror.
7
- *
8
- * DESIGN PRINCIPLES:
9
- * - Uses sanitized text ONLY — never raw_text or blob payloads
10
- * - Two distinct query paths:
11
- * 1. Analytics query (listRecentNocturnalCandidateSessions) — for target selection
12
- * 2. Runtime query (getNocturnalSessionSnapshot) — for sample generation
13
- * - All snapshots are self-contained and principle-relevant metadata-rich
14
- *
15
- * WHAT THIS MODULE DOES:
16
- * - List recent sessions with metadata relevant to nocturnal target selection
17
- * - Extract structured session snapshots for a selected violating session
18
- *
19
- * WHAT THIS MODULE DOES NOT DO:
20
- * - NO snapshot database cloning
21
- * - NO full trajectory export
22
- * - NO raw text exposure
23
- * - NO target selection logic
24
- * - NO sample generation
25
- *
26
- * ARTIFACT OUTPUTS go to:
27
- * .state/nocturnal/samples/ ← structured JSON artifacts
28
- *
29
- * FILE: {stateDir}/nocturnal/snapshots/ (cached snapshots if needed, optional)
30
- */
31
- import { TrajectoryRegistry } from './trajectory.js';
32
- import { detectThinkingModelMatches, listThinkingModels } from './thinking-models.js';
33
- // ---------------------------------------------------------------------------
34
- // Core Extractor
35
- // ---------------------------------------------------------------------------
36
- /**
37
- * Nocturnal Trajectory Extractor.
38
- *
39
- * Provides sanitized, structured access to session data for the nocturnal
40
- * reflection pipeline. All queries return sanitized text only.
41
- *
42
- * This class is a thin, focused wrapper around TrajectoryDatabase.
43
- * It does NOT cache snapshots or maintain its own state.
44
- */
45
- export class NocturnalTrajectoryExtractor {
46
- trajectory;
47
- constructor(trajectory) {
48
- this.trajectory = trajectory;
49
- }
50
- /**
51
- * List recent sessions suitable for nocturnal target selection.
52
- *
53
- * ANALYTICS QUERY — used by nocturnal target selector to find candidate sessions.
54
- *
55
- * @param options - Query options
56
- * @returns Lightweight session summaries ordered by most recently updated
57
- */
58
- listRecentNocturnalCandidateSessions(options = {}) {
59
- const limit = options.limit ?? 20;
60
- const minToolCalls = options.minToolCalls ?? 1;
61
- // Get recent sessions from trajectory DB
62
- const sessions = this.trajectory.listRecentSessions({
63
- limit: limit * 3, // Over-fetch to allow filtering
64
- dateFrom: options.dateFrom,
65
- dateTo: options.dateTo,
66
- });
67
- if (sessions.length === 0) {
68
- return [];
69
- }
70
- // For each session, get counts
71
- // We batch these by fetching tool_calls count per session
72
- const summaries = [];
73
- for (const session of sessions) {
74
- if (summaries.length >= limit)
75
- break;
76
- const toolCalls = this.trajectory.listToolCallsForSession(session.sessionId);
77
- const painEvents = this.trajectory.listPainEventsForSession(session.sessionId);
78
- const gateBlocks = this.trajectory.listGateBlocksForSession(session.sessionId);
79
- // Filter by minimum tool calls threshold
80
- if (toolCalls.length < minToolCalls) {
81
- continue;
82
- }
83
- const failureCount = toolCalls.filter((tc) => tc.outcome === 'failure').length;
84
- summaries.push({
85
- sessionId: session.sessionId,
86
- startedAt: session.startedAt,
87
- updatedAt: session.updatedAt,
88
- assistantTurnCount: 0, // Not readily available without extra query
89
- toolCallCount: toolCalls.length,
90
- painEventCount: painEvents.length,
91
- gateBlockCount: gateBlocks.length,
92
- failureCount,
93
- });
94
- }
95
- return summaries;
96
- }
97
- /**
98
- * Get a full structured snapshot for a specific session.
99
- *
100
- * RUNTIME QUERY — used by nocturnal service after target selection.
101
- *
102
- * SECURITY GUARANTEES:
103
- * - Only sanitizedText from assistant turns (never raw_text)
104
- * - Only correction cues from user turns (never raw user text)
105
- * - Tool calls with outcome and error info (no raw parameters)
106
- * - Pain events with score and reason (no raw event data)
107
- * - Gate blocks with tool/reason info (no file content)
108
- *
109
- * @param sessionId - Session ID to snapshot
110
- * @returns Full structured snapshot, or null if session not found
111
- */
112
- getNocturnalSessionSnapshot(sessionId) {
113
- // Verify session exists — must use a large enough limit to cover all candidates,
114
- // not just the single most-recent session (which would cause false negatives when
115
- // the selector targets an older session).
116
- const sessions = this.trajectory.listRecentSessions({ limit: 1000 });
117
- const sessionExists = sessions.some((s) => s.sessionId === sessionId);
118
- if (!sessionExists) {
119
- // Session might not be in trajectory DB — try to get basic info
120
- // If no data at all, return null for fail-safe
121
- return null;
122
- }
123
- // Fetch all turn data
124
- const assistantTurns = this.trajectory.listAssistantTurns(sessionId);
125
- const userTurns = this.trajectory.listUserTurnsForSession(sessionId);
126
- const toolCalls = this.trajectory.listToolCallsForSession(sessionId);
127
- const painEvents = this.trajectory.listPainEventsForSession(sessionId);
128
- const gateBlocks = this.trajectory.listGateBlocksForSession(sessionId);
129
- // Map to sanitized structures
130
- // SECURITY: Only sanitizedText from assistant turns
131
- const sanitizedAssistantTurns = assistantTurns.map((turn, index) => ({
132
- turnIndex: index,
133
- sanitizedText: turn.sanitizedText,
134
- model: turn.model,
135
- createdAt: turn.createdAt,
136
- }));
137
- // SECURITY: Only derived cues from user turns
138
- const sanitizedUserTurns = userTurns.map((turn) => ({
139
- turnIndex: turn.turnIndex,
140
- correctionDetected: turn.correctionDetected,
141
- correctionCue: turn.correctionCue,
142
- createdAt: turn.createdAt,
143
- }));
144
- // Tool calls — include outcome and error info but not raw params
145
- const nocturnalToolCalls = toolCalls.map((tc) => ({
146
- toolName: tc.toolName,
147
- outcome: tc.outcome,
148
- filePath: tc.filePath,
149
- durationMs: tc.durationMs,
150
- exitCode: tc.exitCode,
151
- errorType: tc.errorType,
152
- errorMessage: tc.errorMessage,
153
- createdAt: tc.createdAt,
154
- }));
155
- // Pain events — score and reason only
156
- const nocturnalPainEvents = painEvents.map((pe) => ({
157
- source: pe.source,
158
- score: pe.score,
159
- severity: pe.severity,
160
- reason: pe.reason,
161
- createdAt: pe.createdAt,
162
- }));
163
- // Gate blocks — tool and reason only
164
- const nocturnalGateBlocks = gateBlocks.map((gb) => ({
165
- toolName: gb.toolName,
166
- filePath: gb.filePath,
167
- reason: gb.reason,
168
- planStatus: gb.planStatus,
169
- createdAt: gb.createdAt,
170
- }));
171
- // Compute summary stats
172
- const failureCount = toolCalls.filter((tc) => tc.outcome === 'failure').length;
173
- // Get session metadata (use trajectory data)
174
- const sessionMeta = sessions.find((s) => s.sessionId === sessionId);
175
- return {
176
- sessionId,
177
- startedAt: sessionMeta?.startedAt ?? new Date(0).toISOString(),
178
- updatedAt: sessionMeta?.updatedAt ?? new Date(0).toISOString(),
179
- assistantTurns: sanitizedAssistantTurns,
180
- userTurns: sanitizedUserTurns,
181
- toolCalls: nocturnalToolCalls,
182
- painEvents: nocturnalPainEvents,
183
- gateBlocks: nocturnalGateBlocks,
184
- stats: {
185
- totalAssistantTurns: sanitizedAssistantTurns.length,
186
- totalToolCalls: nocturnalToolCalls.length,
187
- totalPainEvents: nocturnalPainEvents.length,
188
- totalGateBlocks: nocturnalGateBlocks.length,
189
- failureCount,
190
- },
191
- };
192
- }
193
- }
194
- // ---------------------------------------------------------------------------
195
- // Factory
196
- // ---------------------------------------------------------------------------
197
- /**
198
- * Creates a NocturnalTrajectoryExtractor from a workspace directory.
199
- *
200
- * USAGE:
201
- * const extractor = createNocturnalTrajectoryExtractor(workspaceDir);
202
- * const sessions = extractor.listRecentNocturnalCandidateSessions({ limit: 10 });
203
- * const snapshot = extractor.getNocturnalSessionSnapshot(sessionId);
204
- */
205
- export function createNocturnalTrajectoryExtractor(workspaceDir, _stateDir // Ignored; kept for API compatibility with existing call sites
206
- ) {
207
- // Use the registry to get or create the TrajectoryDatabase instance
208
- const trajectory = TrajectoryRegistry.get(workspaceDir);
209
- return new NocturnalTrajectoryExtractor(trajectory);
210
- }
211
- // ---------------------------------------------------------------------------
212
- // Direct module helpers (for cases where you already have TrajectoryDatabase)
213
- // ---------------------------------------------------------------------------
214
- /**
215
- * List recent sessions for nocturnal target selection.
216
- * Convenience wrapper around NocturnalTrajectoryExtractor.
217
- */
218
- export function listNocturnalCandidateSessions(trajectory, options = {}) {
219
- return new NocturnalTrajectoryExtractor(trajectory).listRecentNocturnalCandidateSessions(options);
220
- }
221
- /**
222
- * Get a session snapshot for nocturnal reflection.
223
- * Convenience wrapper around NocturnalTrajectoryExtractor.
224
- */
225
- export function getNocturnalSessionSnapshot(trajectory, sessionId) {
226
- return new NocturnalTrajectoryExtractor(trajectory).getNocturnalSessionSnapshot(sessionId);
227
- }
228
- // ---------------------------------------------------------------------------
229
- // Reflection Quality Metrics
230
- // ---------------------------------------------------------------------------
231
- /**
232
- * Compute thinking model activation for a text.
233
- * Returns 0-1 ratio of matched thinking models to total available models.
234
- *
235
- * @param text - Text to analyze
236
- * @returns Activation ratio (0-1)
237
- */
238
- export function computeThinkingModelActivation(text) {
239
- if (!text || text.trim().length === 0)
240
- return 0;
241
- const matches = detectThinkingModelMatches(text);
242
- const totalModels = listThinkingModels().length;
243
- return Math.round((matches.length / totalModels) * 100) / 100;
244
- }
245
- /**
246
- * Compute planning ratio from a session snapshot.
247
- * Planning ratio = write operations preceded immediately by a read tool / total write operations.
248
- * A higher ratio indicates more careful planning behavior (reading before writing).
249
- *
250
- * Only the immediately preceding tool is checked — each write needs its own
251
- * preceding read to count as planned. This prevents a single read from satisfying
252
- * multiple writes in sequence.
253
- *
254
- * @param snapshot - Session snapshot to analyze
255
- * @returns Planning ratio (0-1), or 0 if no write operations
256
- */
257
- export function computePlanningRatio(snapshot) {
258
- const toolCalls = snapshot.toolCalls;
259
- let totalWrites = 0;
260
- let writesWithPrecedingRead = 0;
261
- for (let i = 0; i < toolCalls.length; i++) {
262
- const tc = toolCalls[i];
263
- const isWriteTool = /^(edit|write|create|delete|remove|move|rename)/i.test(tc.toolName);
264
- if (isWriteTool) {
265
- totalWrites++;
266
- // Check only the immediately preceding tool
267
- if (i > 0) {
268
- const prevTc = toolCalls[i - 1];
269
- const isReadTool = /^(read|grep|search|find|inspect|look)/i.test(prevTc.toolName);
270
- if (isReadTool) {
271
- writesWithPrecedingRead++;
272
- }
273
- }
274
- }
275
- }
276
- if (totalWrites === 0)
277
- return 0;
278
- return Math.round((writesWithPrecedingRead / totalWrites) * 100) / 100;
279
- }
280
- /**
281
- * Compute thinking model delta between original and improved decisions.
282
- * Positive delta means the improved decision uses more thinking models.
283
- *
284
- * @param originalText - Original (bad) decision text
285
- * @param improvedText - Improved (better) decision text
286
- * @returns Delta in thinking model activation (-1 to 1)
287
- */
288
- export function computeThinkingModelDelta(originalText, improvedText) {
289
- const originalActivation = computeThinkingModelActivation(originalText);
290
- const improvedActivation = computeThinkingModelActivation(improvedText);
291
- const delta = improvedActivation - originalActivation;
292
- return Math.round(delta * 100) / 100;
293
- }
294
- /**
295
- * Compute planning ratio gain between original and improved snapshots.
296
- * Positive gain means the improved behavior has better planning (more reads before writes).
297
- *
298
- * @param originalSnapshot - Original session snapshot
299
- * @param improvedSnapshot - Improved session snapshot
300
- * @returns Planning ratio gain (-1 to 1)
301
- */
302
- export function computePlanningRatioGain(originalSnapshot, improvedSnapshot) {
303
- const originalRatio = computePlanningRatio(originalSnapshot);
304
- const improvedRatio = computePlanningRatio(improvedSnapshot);
305
- const gain = improvedRatio - originalRatio;
306
- return Math.round(gain * 100) / 100;
307
- }
@@ -1,311 +0,0 @@
1
- /**
2
- * Nocturnal Trinity — Three-Stage Reflection Chain
3
- * ================================================
4
- *
5
- * PURPOSE: Upgrade single-reflector nocturnal sample generation to a
6
- * Dreamer -> Philosopher -> Scribe Trinity chain that produces higher quality
7
- * decision-point samples through structured multi-stage reflection.
8
- *
9
- * TRINITY STAGES:
10
- * 1. Dreamer — Generates multiple candidate corrections/alternatives
11
- * 2. Philosopher — Provides principle-grounded critique and ranking
12
- * 3. Scribe — Produces the final structured artifact draft using tournament selection
13
- *
14
- * DESIGN CONSTRAINTS:
15
- * - All stage I/O is structured JSON contracts (not prose)
16
- * - Any malformed stage output fails the entire chain closed
17
- * - Single-reflector fallback is preserved via useTrinity flag
18
- * - Trinity mode is configurable but defaults to enabled
19
- * - Final artifact still passes arbiter + executability validation
20
- * - Telemetry records chain mode, stage outcomes, candidate counts
21
- * - Tournament selection is deterministic (same inputs → same winner)
22
- *
23
- * RUNTIME ADAPTER:
24
- * - useStubs=true: uses synchronous stub implementations (no external calls)
25
- * - useStubs=false: requires a TrinityRuntimeAdapter for real subagent execution
26
- * - Adapter uses ONLY public plugin runtime APIs (api.runtime.subagent.*)
27
- */
28
- import type { NocturnalSessionSnapshot } from './nocturnal-trajectory-extractor.js';
29
- import { type ScoringWeights, type TournamentTraceEntry } from './nocturnal-candidate-scoring.js';
30
- import { type ThresholdValues } from './adaptive-thresholds.js';
31
- /**
32
- * Interface for Trinity stage invocation.
33
- * Implementations can use real subagent runtimes or stubs.
34
- */
35
- export interface TrinityRuntimeAdapter {
36
- /**
37
- * Invoke the Dreamer stage.
38
- * @param snapshot Session trajectory snapshot
39
- * @param principleId Target principle ID
40
- * @param maxCandidates Maximum number of candidates to generate
41
- * @returns Dreamer output JSON
42
- */
43
- invokeDreamer(snapshot: NocturnalSessionSnapshot, principleId: string, maxCandidates: number): Promise<DreamerOutput>;
44
- /**
45
- * Invoke the Philosopher stage.
46
- * @param dreamerOutput Dreamer's output
47
- * @param principleId Target principle ID
48
- * @returns Philosopher output JSON
49
- */
50
- invokePhilosopher(dreamerOutput: DreamerOutput, principleId: string): Promise<PhilosopherOutput>;
51
- /**
52
- * Invoke the Scribe stage.
53
- * @param dreamerOutput Dreamer's output
54
- * @param philosopherOutput Philosopher's output
55
- * @param snapshot Session snapshot
56
- * @param principleId Target principle ID
57
- * @param telemetry Running telemetry
58
- * @param config Trinity config
59
- * @returns Scribe draft artifact or null if failed
60
- */
61
- invokeScribe(dreamerOutput: DreamerOutput, philosopherOutput: PhilosopherOutput, snapshot: NocturnalSessionSnapshot, principleId: string, telemetry: TrinityTelemetry, config: TrinityConfig): Promise<TrinityDraftArtifact | null>;
62
- /**
63
- * Clean up any resources used by the adapter.
64
- * Called after Trinity chain completes (success or failure).
65
- */
66
- close?(): Promise<void>;
67
- }
68
- /**
69
- * OpenClaw-backed Trinity runtime adapter.
70
- * Uses ONLY public plugin runtime APIs (api.runtime.subagent.*).
71
- * Does NOT depend on OpenClaw internals.
72
- */
73
- export declare class OpenClawTrinityRuntimeAdapter implements TrinityRuntimeAdapter {
74
- private readonly api;
75
- private readonly stageTimeoutMs;
76
- constructor(api: OpenClawTrinityRuntimeAdapter['api'], stageTimeoutMs?: number);
77
- invokeDreamer(snapshot: NocturnalSessionSnapshot, principleId: string, maxCandidates: number): Promise<DreamerOutput>;
78
- invokePhilosopher(dreamerOutput: DreamerOutput, principleId: string): Promise<PhilosopherOutput>;
79
- invokeScribe(dreamerOutput: DreamerOutput, philosopherOutput: PhilosopherOutput, snapshot: NocturnalSessionSnapshot, principleId: string, telemetry: TrinityTelemetry, config: TrinityConfig): Promise<TrinityDraftArtifact | null>;
80
- close(): Promise<void>;
81
- private extractAssistantText;
82
- private buildDreamerPrompt;
83
- private buildPhilosopherPrompt;
84
- private buildScribePrompt;
85
- private parseDreamerOutput;
86
- private parsePhilosopherOutput;
87
- private parseScribeOutput;
88
- /**
89
- * Extract JSON object from text that may contain markdown code blocks.
90
- */
91
- private extractJson;
92
- }
93
- /**
94
- * Configuration for Trinity chain execution.
95
- */
96
- export interface TrinityConfig {
97
- /**
98
- * Whether to use Trinity chain (true) or single-reflector (false).
99
- * Default: true
100
- */
101
- useTrinity: boolean;
102
- /**
103
- * Maximum candidates Dreamer should generate.
104
- * Default: 3
105
- */
106
- maxCandidates: number;
107
- /**
108
- * Whether to use stub stage outputs (for testing without real model calls).
109
- * Default: false (real subagent calls via runtimeAdapter)
110
- */
111
- useStubs: boolean;
112
- /**
113
- * Runtime adapter for real subagent execution.
114
- * Required when useStubs is false. Ignored when useStubs is true.
115
- * Default: undefined
116
- */
117
- runtimeAdapter?: TrinityRuntimeAdapter;
118
- /**
119
- * Scoring weights for tournament selection.
120
- * Default: DEFAULT_SCORING_WEIGHTS
121
- */
122
- scoringWeights?: ScoringWeights;
123
- /**
124
- * Threshold values for tournament eligibility.
125
- * Default: DEFAULT_THRESHOLDS
126
- */
127
- thresholds?: ThresholdValues;
128
- /**
129
- * State directory for threshold persistence.
130
- * If provided, thresholds will be loaded from state.
131
- */
132
- stateDir?: string;
133
- }
134
- /**
135
- * Dreamer output — multiple candidate corrections.
136
- * Each candidate represents an alternative "better decision" approach.
137
- */
138
- export interface DreamerCandidate {
139
- /** Unique index for this candidate within the Dreamer output */
140
- candidateIndex: number;
141
- /** The bad decision this candidate addresses */
142
- badDecision: string;
143
- /** The alternative/better decision */
144
- betterDecision: string;
145
- /** Why this alternative is better (brief) */
146
- rationale: string;
147
- /** Confidence that this candidate is valid (0-1) */
148
- confidence: number;
149
- }
150
- export interface DreamerOutput {
151
- /** Whether Dreamer succeeded */
152
- valid: boolean;
153
- /** List of candidate corrections */
154
- candidates: DreamerCandidate[];
155
- /** Why Dreamer could not generate (if valid === false) */
156
- reason?: string;
157
- /** Timestamp of generation */
158
- generatedAt: string;
159
- }
160
- /**
161
- * Philosopher output — principle-grounded critique and ranking.
162
- * Philosopher evaluates Dreamer's candidates and ranks them.
163
- */
164
- export interface PhilosopherJudgment {
165
- /** Index of the judged candidate (references DreamerCandidate.candidateIndex) */
166
- candidateIndex: number;
167
- /** Principle-grounded critique of this candidate */
168
- critique: string;
169
- /** Whether this candidate aligns with the target principle */
170
- principleAligned: boolean;
171
- /** Ranking score (higher = better, 0-1) */
172
- score: number;
173
- /** Rank among all candidates (1 = best) */
174
- rank: number;
175
- }
176
- export interface PhilosopherOutput {
177
- /** Whether Philosopher succeeded */
178
- valid: boolean;
179
- /** Judgments for each candidate */
180
- judgments: PhilosopherJudgment[];
181
- /** Overall assessment of the candidate set */
182
- overallAssessment: string;
183
- /** Why Philosopher could not judge (if valid === false) */
184
- reason?: string;
185
- /** Timestamp of generation */
186
- generatedAt: string;
187
- }
188
- /**
189
- * Scribe output — final structured artifact draft.
190
- * Scribe synthesizes the best candidate into an approved artifact format.
191
- */
192
- export interface TrinityDraftArtifact {
193
- /** The selected winning candidate index */
194
- selectedCandidateIndex: number;
195
- /** The final badDecision */
196
- badDecision: string;
197
- /** The final betterDecision */
198
- betterDecision: string;
199
- /** The final rationale */
200
- rationale: string;
201
- /** Source session from snapshot */
202
- sessionId: string;
203
- /** Target principle ID */
204
- principleId: string;
205
- /** Reference to snapshot used */
206
- sourceSnapshotRef: string;
207
- /** Chain telemetry */
208
- telemetry: TrinityTelemetry;
209
- /** Reflection quality: delta in thinking model activation (-1 to 1) */
210
- thinkingModelDelta?: number;
211
- /** Reflection quality: gain in planning ratio (-1 to 1) */
212
- planningRatioGain?: number;
213
- }
214
- export interface TrinityTelemetry {
215
- /** Whether Trinity or single-reflector was used */
216
- chainMode: 'trinity' | 'single-reflector';
217
- /** Whether stub implementations were used (always true in Phase 8) */
218
- usedStubs: boolean;
219
- /** Whether each stage passed */
220
- dreamerPassed: boolean;
221
- philosopherPassed: boolean;
222
- scribePassed: boolean;
223
- /** Number of candidates generated */
224
- candidateCount: number;
225
- /** Final selected candidate index */
226
- selectedCandidateIndex: number;
227
- /** Stage failure reasons (if any) */
228
- stageFailures: string[];
229
- /** Tournament trace for explainability (optional) */
230
- tournamentTrace?: TournamentTraceEntry[];
231
- /** Winner aggregate score (optional) */
232
- winnerAggregateScore?: number;
233
- /** Whether winner passed all thresholds (optional) */
234
- winnerThresholdPassed?: boolean;
235
- /** Number of eligible candidates after threshold check (optional) */
236
- eligibleCandidateCount?: number;
237
- }
238
- /**
239
- * Validation failure for a Trinity stage.
240
- */
241
- export interface TrinityStageFailure {
242
- stage: 'dreamer' | 'philosopher' | 'scribe';
243
- reason: string;
244
- }
245
- /**
246
- * Result of Trinity chain execution.
247
- */
248
- export interface TrinityResult {
249
- /** Whether Trinity chain completed successfully */
250
- success: boolean;
251
- /** The final draft artifact (if success) */
252
- artifact?: TrinityDraftArtifact;
253
- /** Telemetry about the chain execution */
254
- telemetry: TrinityTelemetry;
255
- /** Stage failures (if any) */
256
- failures: TrinityStageFailure[];
257
- /** Whether fallback to single-reflector occurred */
258
- fallbackOccurred: boolean;
259
- }
260
- export interface RunTrinityOptions {
261
- /** Snapshot to generate candidates from */
262
- snapshot: NocturnalSessionSnapshot;
263
- /** Target principle ID */
264
- principleId: string;
265
- /** Trinity configuration */
266
- config: TrinityConfig;
267
- }
268
- /**
269
- * Execute the Trinity chain using stubs (synchronous).
270
- * Use runTrinityAsync for real subagent execution via runtime adapter.
271
- *
272
- * @param options - Trinity execution options
273
- * @returns TrinityResult with final artifact or failure info
274
- */
275
- export declare function runTrinity(options: RunTrinityOptions): TrinityResult;
276
- /**
277
- * Execute the Trinity chain with real subagent runtime (asynchronous).
278
- * Requires config.runtimeAdapter to be set.
279
- *
280
- * @param options - Trinity execution options
281
- * @returns Promise<TrinityResult> with final artifact or failure info
282
- */
283
- export declare function runTrinityAsync(options: RunTrinityOptions): Promise<TrinityResult>;
284
- /**
285
- * Validate that a Trinity draft artifact can pass final arbiter validation.
286
- * This checks the draft against the same rules as single-reflector artifacts.
287
- */
288
- export interface DraftValidationResult {
289
- valid: boolean;
290
- failures: string[];
291
- }
292
- /**
293
- * Validate a TrinityDraftArtifact before passing to arbiter.
294
- */
295
- export declare function validateDraftArtifact(draft: TrinityDraftArtifact): DraftValidationResult;
296
- /**
297
- * Convert a TrinityDraftArtifact to a NocturnalArtifact-compatible structure.
298
- */
299
- export declare function draftToArtifact(draft: TrinityDraftArtifact): {
300
- artifactId: string;
301
- sessionId: string;
302
- principleId: string;
303
- sourceSnapshotRef: string;
304
- badDecision: string;
305
- betterDecision: string;
306
- rationale: string;
307
- createdAt: string;
308
- thinkingModelDelta?: number;
309
- planningRatioGain?: number;
310
- };
311
- export declare const DEFAULT_TRINITY_CONFIG: TrinityConfig;