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
@@ -0,0 +1,328 @@
1
+ import Database from 'better-sqlite3';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import type { WorkflowRow, WorkflowEventRow, WorkflowState, WorkflowTransport } from './types.js';
5
+ import type { DreamerOutput, PhilosopherOutput } from '../../core/nocturnal-trinity.js';
6
+
7
+ const SCHEMA_VERSION = 1;
8
+
9
+ const DEFAULT_BUSY_TIMEOUT_MS = 5000;
10
+
11
+ export interface WorkflowStoreOptions {
12
+ workspaceDir: string;
13
+ busyTimeoutMs?: number;
14
+ }
15
+
16
+ export class WorkflowStore {
17
+ private readonly workspaceDir: string;
18
+ private readonly dbPath: string;
19
+ private readonly db: Database.Database;
20
+
21
+ constructor(opts: WorkflowStoreOptions) {
22
+ this.workspaceDir = path.resolve(opts.workspaceDir);
23
+ const stateDir = path.join(this.workspaceDir, '.state');
24
+ this.dbPath = path.join(stateDir, 'subagent_workflows.db');
25
+
26
+ fs.mkdirSync(stateDir, { recursive: true });
27
+
28
+ this.db = new Database(this.dbPath);
29
+ this.db.pragma('journal_mode = WAL');
30
+ this.db.pragma('foreign_keys = ON');
31
+ this.db.pragma('synchronous = NORMAL');
32
+ this.db.pragma(`busy_timeout = ${Math.max(0, opts.busyTimeoutMs ?? DEFAULT_BUSY_TIMEOUT_MS)}`);
33
+ this.initSchema();
34
+ }
35
+
36
+ dispose(): void {
37
+ this.db.close();
38
+ }
39
+
40
+ private initSchema(): void {
41
+ this.db.exec(`
42
+ CREATE TABLE IF NOT EXISTS schema_version (
43
+ version INTEGER NOT NULL
44
+ );
45
+
46
+ CREATE TABLE IF NOT EXISTS subagent_workflows (
47
+ workflow_id TEXT PRIMARY KEY,
48
+ workflow_type TEXT NOT NULL,
49
+ transport TEXT NOT NULL,
50
+ parent_session_id TEXT NOT NULL,
51
+ child_session_key TEXT NOT NULL,
52
+ run_id TEXT,
53
+ state TEXT NOT NULL DEFAULT 'pending',
54
+ cleanup_state TEXT NOT NULL DEFAULT 'none',
55
+ created_at INTEGER NOT NULL,
56
+ updated_at INTEGER NOT NULL,
57
+ last_observed_at INTEGER,
58
+ metadata_json TEXT NOT NULL DEFAULT '{}'
59
+ );
60
+
61
+ CREATE TABLE IF NOT EXISTS subagent_workflow_events (
62
+ workflow_id TEXT NOT NULL,
63
+ event_type TEXT NOT NULL,
64
+ from_state TEXT,
65
+ to_state TEXT NOT NULL,
66
+ reason TEXT NOT NULL,
67
+ payload_json TEXT NOT NULL DEFAULT '{}',
68
+ created_at INTEGER NOT NULL,
69
+ FOREIGN KEY (workflow_id) REFERENCES subagent_workflows(workflow_id) ON DELETE CASCADE
70
+ );
71
+
72
+ CREATE INDEX IF NOT EXISTS idx_workflows_parent_session ON subagent_workflows(parent_session_id);
73
+ CREATE INDEX IF NOT EXISTS idx_workflows_child_session ON subagent_workflows(child_session_key);
74
+ CREATE INDEX IF NOT EXISTS idx_workflows_state ON subagent_workflows(state);
75
+ CREATE INDEX IF NOT EXISTS idx_workflows_type ON subagent_workflows(workflow_type);
76
+ CREATE TABLE IF NOT EXISTS subagent_workflow_stage_outputs (
77
+ workflow_id TEXT NOT NULL,
78
+ stage TEXT NOT NULL CHECK (stage IN ('dreamer', 'philosopher')),
79
+ output_json TEXT NOT NULL,
80
+ idempotency_key TEXT NOT NULL,
81
+ created_at INTEGER NOT NULL,
82
+ FOREIGN KEY (workflow_id) REFERENCES subagent_workflows(workflow_id) ON DELETE CASCADE
83
+ );
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_stage_outputs_workflow ON subagent_workflow_stage_outputs(workflow_id);
86
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_stage_outputs_idempotency ON subagent_workflow_stage_outputs(idempotency_key);
87
+
88
+ CREATE INDEX IF NOT EXISTS idx_events_workflow ON subagent_workflow_events(workflow_id);
89
+ `);
90
+
91
+ const row = this.db.prepare('SELECT version FROM schema_version LIMIT 1').get() as { version?: number } | undefined;
92
+ if (!row) {
93
+ this.db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION);
94
+ } else if (row.version !== SCHEMA_VERSION) {
95
+ this.db.prepare('UPDATE schema_version SET version = ?').run(SCHEMA_VERSION);
96
+ }
97
+ }
98
+
99
+ createWorkflow(row: Omit<WorkflowRow, 'cleanup_state'>): void {
100
+ const now = Date.now();
101
+ this.db.prepare(`
102
+ INSERT INTO subagent_workflows (
103
+ workflow_id, workflow_type, transport, parent_session_id, child_session_key,
104
+ run_id, state, cleanup_state, created_at, updated_at, last_observed_at, metadata_json
105
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, 'none', ?, ?, NULL, ?)
106
+ `).run(
107
+ row.workflow_id,
108
+ row.workflow_type,
109
+ row.transport,
110
+ row.parent_session_id,
111
+ row.child_session_key,
112
+ row.run_id,
113
+ row.state,
114
+ row.created_at,
115
+ row.updated_at,
116
+ row.metadata_json
117
+ );
118
+ }
119
+
120
+ updateWorkflowState(workflowId: string, state: WorkflowState, reason?: string): void {
121
+ const now = Date.now();
122
+ const current = this.getWorkflow(workflowId);
123
+ if (!current) return;
124
+
125
+ this.db.prepare(`
126
+ UPDATE subagent_workflows SET state = ?, updated_at = ?, last_observed_at = ? WHERE workflow_id = ?
127
+ `).run(state, now, now, workflowId);
128
+
129
+ if (reason) {
130
+ this.recordEvent(workflowId, 'state_change', current.state, state, reason, {});
131
+ }
132
+ }
133
+
134
+ updateWorkflowRunId(workflowId: string, runId: string): void {
135
+ const now = Date.now();
136
+ this.db.prepare(`
137
+ UPDATE subagent_workflows SET run_id = ?, updated_at = ? WHERE workflow_id = ?
138
+ `).run(runId, now, workflowId);
139
+ }
140
+
141
+ updateCleanupState(workflowId: string, cleanupState: 'none' | 'pending' | 'failed' | 'completed'): void {
142
+ const now = Date.now();
143
+ this.db.prepare(`
144
+ UPDATE subagent_workflows SET cleanup_state = ?, updated_at = ? WHERE workflow_id = ?
145
+ `).run(cleanupState, now, workflowId);
146
+ }
147
+
148
+ touchWorkflow(workflowId: string): void {
149
+ const now = Date.now();
150
+ this.db.prepare(`
151
+ UPDATE subagent_workflows SET last_observed_at = ?, updated_at = ? WHERE workflow_id = ?
152
+ `).run(now, now, workflowId);
153
+ }
154
+
155
+ getWorkflow(workflowId: string): WorkflowRow | null {
156
+ const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE workflow_id = ?').get(workflowId) as WorkflowRow | undefined;
157
+ return row ?? null;
158
+ }
159
+
160
+ getWorkflowByChildSession(childSessionKey: string): WorkflowRow | null {
161
+ const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE child_session_key = ?').get(childSessionKey) as WorkflowRow | undefined;
162
+ return row ?? null;
163
+ }
164
+
165
+ getWorkflowByParentSession(parentSessionId: string, workflowType?: string): WorkflowRow | null {
166
+ let sql = 'SELECT * FROM subagent_workflows WHERE parent_session_id = ?';
167
+ const params: unknown[] = [parentSessionId];
168
+
169
+ if (workflowType) {
170
+ sql += ' AND workflow_type = ?';
171
+ params.push(workflowType);
172
+ }
173
+
174
+ sql += ' ORDER BY created_at DESC LIMIT 1';
175
+
176
+ const row = this.db.prepare(sql).get(...params) as WorkflowRow | undefined;
177
+ return row ?? null;
178
+ }
179
+
180
+ getActiveWorkflows(workflowType?: string): WorkflowRow[] {
181
+ let sql = "SELECT * FROM subagent_workflows WHERE state NOT IN ('completed', 'terminal_error', 'expired')";
182
+ const params: unknown[] = [];
183
+
184
+ if (workflowType) {
185
+ sql += ' AND workflow_type = ?';
186
+ params.push(workflowType);
187
+ }
188
+
189
+ sql += ' ORDER BY created_at ASC';
190
+
191
+ return this.db.prepare(sql).all(...params) as WorkflowRow[];
192
+ }
193
+
194
+ getExpiredWorkflows(maxAgeMs: number): WorkflowRow[] {
195
+ const cutoff = Date.now() - maxAgeMs;
196
+ return this.db.prepare(`
197
+ SELECT * FROM subagent_workflows
198
+ WHERE last_observed_at IS NOT NULL
199
+ AND last_observed_at < ?
200
+ AND state NOT IN ('completed', 'terminal_error', 'expired')
201
+ ORDER BY last_observed_at ASC
202
+ `).all(cutoff) as WorkflowRow[];
203
+ }
204
+
205
+ recordEvent(
206
+ workflowId: string,
207
+ eventType: string,
208
+ fromState: WorkflowState | null,
209
+ toState: WorkflowState,
210
+ reason: string,
211
+ payload: Record<string, unknown>
212
+ ): void {
213
+ const now = Date.now();
214
+ this.db.prepare(`
215
+ INSERT INTO subagent_workflow_events (
216
+ workflow_id, event_type, from_state, to_state, reason, payload_json, created_at
217
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
218
+ `).run(
219
+ workflowId,
220
+ eventType,
221
+ fromState,
222
+ toState,
223
+ reason,
224
+ JSON.stringify(payload),
225
+ now
226
+ );
227
+ }
228
+
229
+ getEvents(workflowId: string): WorkflowEventRow[] {
230
+ return this.db.prepare(`
231
+ SELECT * FROM subagent_workflow_events WHERE workflow_id = ? ORDER BY created_at ASC
232
+ `).all(workflowId) as WorkflowEventRow[];
233
+ }
234
+
235
+ /**
236
+ * Record a Trinity stage output to the database (NOC-11).
237
+ * idempotencyKey must be unique per (workflow_id, stage). If a row with the
238
+ * same idempotency_key already exists, this is a no-op (idempotent).
239
+ */
240
+ recordStageOutput(
241
+ workflowId: string,
242
+ stage: 'dreamer' | 'philosopher',
243
+ output: DreamerOutput | PhilosopherOutput,
244
+ idempotencyKey: string
245
+ ): void {
246
+ const now = Date.now();
247
+ // Use INSERT OR IGNORE for idempotency — if idempotency_key already exists, silently skip
248
+ this.db.prepare(`
249
+ INSERT OR IGNORE INTO subagent_workflow_stage_outputs (
250
+ workflow_id, stage, output_json, idempotency_key, created_at
251
+ ) VALUES (?, ?, ?, ?, ?)
252
+ `).run(
253
+ workflowId,
254
+ stage,
255
+ JSON.stringify(output),
256
+ idempotencyKey,
257
+ now
258
+ );
259
+ }
260
+
261
+ /**
262
+ * Get all stage outputs for a workflow (NOC-13 crash recovery).
263
+ * Returns outputs ordered by created_at ascending.
264
+ */
265
+ getStageOutputs(workflowId: string): Array<{
266
+ stage: string;
267
+ output: DreamerOutput | PhilosopherOutput;
268
+ idempotencyKey: string;
269
+ createdAt: number;
270
+ }> {
271
+ const rows = this.db.prepare(`
272
+ SELECT workflow_id, stage, output_json, idempotency_key, created_at
273
+ FROM subagent_workflow_stage_outputs
274
+ WHERE workflow_id = ?
275
+ ORDER BY created_at ASC
276
+ `).all(workflowId) as Array<{
277
+ workflow_id: string;
278
+ stage: string;
279
+ output_json: string;
280
+ idempotency_key: string;
281
+ created_at: number;
282
+ }>;
283
+
284
+ return rows.map(row => ({
285
+ workflowId: row.workflow_id,
286
+ stage: row.stage,
287
+ output: JSON.parse(row.output_json) as DreamerOutput | PhilosopherOutput,
288
+ idempotencyKey: row.idempotency_key,
289
+ createdAt: row.created_at,
290
+ }));
291
+ }
292
+
293
+ /**
294
+ * Get a stage output by its idempotency key (NOC-12 idempotency check).
295
+ * Returns null if not found.
296
+ */
297
+ getStageOutputByKey(idempotencyKey: string): {
298
+ stage: string;
299
+ output: DreamerOutput | PhilosopherOutput;
300
+ workflowId: string;
301
+ createdAt: number;
302
+ } | null {
303
+ const row = this.db.prepare(`
304
+ SELECT workflow_id, stage, output_json, idempotency_key, created_at
305
+ FROM subagent_workflow_stage_outputs
306
+ WHERE idempotency_key = ?
307
+ `).get(idempotencyKey) as {
308
+ workflow_id: string;
309
+ stage: string;
310
+ output_json: string;
311
+ idempotency_key: string;
312
+ created_at: number;
313
+ } | undefined;
314
+
315
+ if (!row) return null;
316
+
317
+ return {
318
+ workflowId: row.workflow_id,
319
+ stage: row.stage,
320
+ output: JSON.parse(row.output_json) as DreamerOutput | PhilosopherOutput,
321
+ createdAt: row.created_at,
322
+ };
323
+ }
324
+
325
+ deleteWorkflow(workflowId: string): void {
326
+ this.db.prepare('DELETE FROM subagent_workflows WHERE workflow_id = ?').run(workflowId);
327
+ }
328
+ }
@@ -0,0 +1,15 @@
1
+ import type { OpenClawPluginService, OpenClawPluginServiceContext } from '../openclaw-sdk.js';
2
+ import { TrajectoryRegistry } from '../core/trajectory.js';
3
+ import { WorkspaceContext } from '../core/workspace-context.js';
4
+
5
+ export const TrajectoryService: OpenClawPluginService = {
6
+ id: 'principles-disciple-trajectory',
7
+ start(ctx: OpenClawPluginServiceContext): void {
8
+ if (!ctx.workspaceDir) return;
9
+ WorkspaceContext.fromHookContext(ctx).trajectory;
10
+ },
11
+ stop(ctx: OpenClawPluginServiceContext): void {
12
+ if (!ctx.workspaceDir) return;
13
+ TrajectoryRegistry.dispose(ctx.workspaceDir);
14
+ },
15
+ };
@@ -1,4 +1,7 @@
1
+ import type { OpenClawPluginApi } from '../openclaw-sdk.js';
1
2
  import { loadModelIndex } from './model-index.js';
3
+ import { resolveWorkspaceDirFromApi } from '../core/path-resolver.js';
4
+
2
5
  /**
3
6
  * 深度指令模板 (必须与测试用例中的 quick/balanced/thorough 关键字对齐)
4
7
  */
@@ -7,37 +10,51 @@ const DEPTH_INSTRUCTIONS = {
7
10
  2: 'Provide a balanced analysis with moderate depth.',
8
11
  3: 'Provide an extremely thorough and exhaustive analysis.',
9
12
  };
13
+
10
14
  /**
11
15
  * 构建反思提示词 (Critique Prompt) V2
12
- *
16
+ *
13
17
  * 严格按照测试用例的调用习惯和断言要求进行重写。
14
18
  * 增加 OpenClaw 兼容性路径解析。
15
19
  */
16
- export function buildCritiquePromptV2(params) {
20
+ export function buildCritiquePromptV2(
21
+ params: {
22
+ context: string;
23
+ depth?: number;
24
+ model_id?: string;
25
+ workspaceDir?: string;
26
+ api?: OpenClawPluginApi;
27
+ }
28
+ ): string {
17
29
  const { context, depth = 2, model_id, workspaceDir, api } = params;
18
- // 1. 确定工作区目录 (优先级:显式传入 > api.config > api.workspaceDir > api.resolvePath)
30
+
31
+ // 1. 确定工作区目录 (优先级:显式传入 > api.config > official API > api.resolvePath)
19
32
  const effectiveWorkspaceDir = workspaceDir
20
- || api?.config?.workspaceDir
21
- || api?.workspaceDir
33
+ || (api?.config?.workspaceDir as string)
34
+ || resolveWorkspaceDirFromApi(api)
22
35
  || api?.resolvePath?.('.');
36
+
23
37
  if (!effectiveWorkspaceDir) {
24
38
  throw new Error('Workspace directory is required for deep reflection.');
25
39
  }
40
+
26
41
  // 2. 深度校验与警告日志
27
42
  let validatedDepth = 2;
28
43
  if (typeof depth === 'number') {
29
44
  if (depth >= 1 && depth <= 3) {
30
45
  validatedDepth = depth;
31
- }
32
- else {
46
+ } else {
33
47
  if (api?.logger) {
34
48
  api.logger.warn(`[DeepReflect] Invalid depth value ${depth}. Falling back to 2.`);
35
49
  }
36
50
  }
37
51
  }
38
- const depthMsg = DEPTH_INSTRUCTIONS[validatedDepth];
52
+
53
+ const depthMsg = DEPTH_INSTRUCTIONS[validatedDepth as keyof typeof DEPTH_INSTRUCTIONS];
54
+
39
55
  // 3. 加载模型索引
40
56
  const modelIndexMessage = loadModelIndex(effectiveWorkspaceDir, api);
57
+
41
58
  // 4. 构造最终提示词
42
59
  return `
43
60
  # Role: Principal Critical Thinker & Strategist