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,368 @@
1
+ export interface OverviewResponse {
2
+ workspaceDir: string;
3
+ generatedAt: string;
4
+ dataFreshness: string | null;
5
+ dataSource?: string;
6
+ runtimeControlPlaneSource?: string;
7
+ summary: {
8
+ repeatErrorRate: number;
9
+ userCorrectionRate: number;
10
+ pendingSamples: number;
11
+ approvedSamples: number;
12
+ thinkingCoverageRate: number;
13
+ painEvents: number;
14
+ principleEventCount: number;
15
+ gateBlocks?: number;
16
+ taskOutcomes?: number;
17
+ };
18
+ dailyTrend: Array<{
19
+ day: string;
20
+ toolCalls: number;
21
+ failures: number;
22
+ userCorrections: number;
23
+ thinkingTurns: number;
24
+ }>;
25
+ topRegressions: Array<{
26
+ toolName: string;
27
+ errorType: string;
28
+ occurrences: number;
29
+ }>;
30
+ sampleQueue: {
31
+ counters: Record<string, number>;
32
+ preview: Array<{
33
+ sampleId: string;
34
+ sessionId: string;
35
+ qualityScore: number;
36
+ reviewStatus: string;
37
+ createdAt: string;
38
+ }>;
39
+ };
40
+ thinkingSummary: {
41
+ activeModels: number;
42
+ dormantModels: number;
43
+ effectiveModels: number;
44
+ coverageRate: number;
45
+ };
46
+ }
47
+
48
+ export interface SamplesResponse {
49
+ counters: Record<string, number>;
50
+ items: Array<{
51
+ sampleId: string;
52
+ sessionId: string;
53
+ reviewStatus: string;
54
+ qualityScore: number;
55
+ failureMode: string;
56
+ relatedThinkingCount: number;
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ diffExcerpt: string;
60
+ }>;
61
+ pagination: {
62
+ page: number;
63
+ pageSize: number;
64
+ total: number;
65
+ totalPages: number;
66
+ };
67
+ }
68
+
69
+ export interface SampleDetailResponse {
70
+ sampleId: string;
71
+ sessionId: string;
72
+ reviewStatus: string;
73
+ qualityScore: number;
74
+ createdAt: string;
75
+ updatedAt: string;
76
+ badAttempt: {
77
+ assistantTurnId: number;
78
+ rawText: string;
79
+ sanitizedText: string;
80
+ createdAt: string;
81
+ };
82
+ userCorrection: {
83
+ userTurnId: number;
84
+ rawText: string;
85
+ correctionCue: string | null;
86
+ createdAt: string;
87
+ };
88
+ recoveryToolSpan: Array<{ id: number; toolName: string }>;
89
+ relatedPrinciples: Array<{
90
+ principleId: string | null;
91
+ eventType: string;
92
+ createdAt: string;
93
+ }>;
94
+ relatedThinkingHits: Array<{
95
+ id: number;
96
+ modelId: string;
97
+ modelName: string;
98
+ matchedPattern: string;
99
+ scenarios: string[];
100
+ createdAt: string;
101
+ triggerExcerpt: string;
102
+ }>;
103
+ reviewHistory: Array<{
104
+ reviewStatus: string;
105
+ note: string | null;
106
+ createdAt: string;
107
+ }>;
108
+ }
109
+
110
+ export interface ThinkingModelSummary {
111
+ modelId: string;
112
+ name: string;
113
+ description: string;
114
+ hits: number;
115
+ coverageRate: number;
116
+ successRate: number;
117
+ failureRate: number;
118
+ painRate: number;
119
+ correctionRate: number;
120
+ correctionSampleRate: number;
121
+ commonScenarios: string[];
122
+ recommendation: 'reinforce' | 'rework' | 'archive';
123
+ }
124
+
125
+ export interface ThinkingOverviewResponse {
126
+ summary: {
127
+ totalModels: number;
128
+ activeModels: number;
129
+ dormantModels: number;
130
+ effectiveModels: number;
131
+ coverageRate: number;
132
+ };
133
+ topModels: ThinkingModelSummary[];
134
+ dormantModels: Array<{
135
+ modelId: string;
136
+ name: string;
137
+ description: string;
138
+ }>;
139
+ effectiveModels: ThinkingModelSummary[];
140
+ scenarioMatrix: Array<{
141
+ modelId: string;
142
+ modelName: string;
143
+ scenario: string;
144
+ hits: number;
145
+ }>;
146
+ coverageTrend: Array<{
147
+ day: string;
148
+ assistantTurns: number;
149
+ thinkingTurns: number;
150
+ coverageRate: number;
151
+ }>;
152
+ }
153
+
154
+ export interface ThinkingModelDetailResponse {
155
+ modelMeta: {
156
+ modelId: string;
157
+ name: string;
158
+ description: string;
159
+ hits: number;
160
+ coverageRate: number;
161
+ recommendation: 'reinforce' | 'rework' | 'archive';
162
+ };
163
+ usageTrend: Array<{
164
+ day: string;
165
+ hits: number;
166
+ }>;
167
+ scenarioDistribution: Array<{
168
+ scenario: string;
169
+ hits: number;
170
+ }>;
171
+ outcomeStats: {
172
+ events: number;
173
+ successRate: number;
174
+ failureRate: number;
175
+ painRate: number;
176
+ correctionRate: number;
177
+ correctionSampleRate: number;
178
+ };
179
+ recentEvents: Array<{
180
+ id: number;
181
+ createdAt: string;
182
+ matchedPattern: string;
183
+ scenarios: string[];
184
+ triggerExcerpt: string;
185
+ toolContext: Array<{ toolName: string; outcome: string; errorType?: string | null }>;
186
+ painContext: Array<{ source: string; score: number }>;
187
+ principleContext: Array<{ principleId: string | null; eventType: string }>;
188
+ }>;
189
+ }
190
+
191
+ // Evolution Types
192
+ export interface EvolutionTaskItem {
193
+ taskId: string;
194
+ traceId: string;
195
+ source: string;
196
+ reason: string | null;
197
+ score: number;
198
+ status: string;
199
+ enqueuedAt: string | null;
200
+ startedAt: string | null;
201
+ completedAt: string | null;
202
+ duration: number | null;
203
+ resolution: string | null;
204
+ eventCount: number;
205
+ createdAt: string;
206
+ }
207
+
208
+ export interface EvolutionTasksResponse {
209
+ items: EvolutionTaskItem[];
210
+ pagination: {
211
+ page: number;
212
+ pageSize: number;
213
+ total: number;
214
+ totalPages: number;
215
+ };
216
+ }
217
+
218
+ export interface EvolutionEventItem {
219
+ id: number;
220
+ traceId: string;
221
+ taskId: string | null;
222
+ stage: string;
223
+ stageLabel: string;
224
+ stageColor: string;
225
+ level: string;
226
+ message: string;
227
+ summary: string | null;
228
+ metadata: Record<string, unknown>;
229
+ createdAt: string;
230
+ }
231
+
232
+ export interface EvolutionEventsResponse {
233
+ items: EvolutionEventItem[];
234
+ pagination: {
235
+ limit: number;
236
+ offset: number;
237
+ hasMore: boolean;
238
+ };
239
+ }
240
+
241
+ export interface EvolutionTraceResponse {
242
+ traceId: string;
243
+ task: {
244
+ taskId: string;
245
+ traceId: string;
246
+ source: string;
247
+ reason: string | null;
248
+ score: number;
249
+ status: string;
250
+ enqueuedAt: string | null;
251
+ startedAt: string | null;
252
+ completedAt: string | null;
253
+ duration: number | null;
254
+ resolution: string | null;
255
+ createdAt: string;
256
+ updatedAt: string;
257
+ };
258
+ events: EvolutionEventItem[];
259
+ timeline: Array<{
260
+ stage: string;
261
+ stageLabel: string;
262
+ stageColor: string;
263
+ timestamp: string;
264
+ message: string;
265
+ summary: string | null;
266
+ }>;
267
+ }
268
+
269
+ export interface EvolutionStatsResponse {
270
+ total: number;
271
+ pending: number;
272
+ inProgress: number;
273
+ completed: number;
274
+ failed: number;
275
+ recentActivity: Array<{
276
+ day: string;
277
+ created: number;
278
+ completed: number;
279
+ }>;
280
+ stageDistribution: Array<{
281
+ stage: string;
282
+ stageLabel: string;
283
+ count: number;
284
+ }>;
285
+ }
286
+
287
+ // ===== Phase 5: Health & Circuit API Types =====
288
+
289
+ export interface OverviewHealthResponse {
290
+ gfi: { current: number; peakToday: number; threshold: number };
291
+ trust: { stage: number; stageLabel: string; score: number };
292
+ evolution: { tier: string; points: number };
293
+ painFlag: { active: boolean; source: string | null; score: number | null };
294
+ principles: { candidate: number; probation: number; active: number; deprecated: number };
295
+ queue: { pending: number; inProgress: number; completed: number };
296
+ activeStage: string;
297
+ }
298
+
299
+ export interface EvolutionPrinciplesResponse {
300
+ principles: {
301
+ summary: { candidate: number; probation: number; active: number; deprecated: number };
302
+ recent: Array<{
303
+ principleId: string;
304
+ status: string;
305
+ triggerPattern: string;
306
+ action: string;
307
+ fromStatus: string;
308
+ toStatus: string;
309
+ timestamp: string;
310
+ }>;
311
+ };
312
+ nocturnalTraining: {
313
+ queue: { pending: number; inProgress: number; completed: number };
314
+ trinityRecords: Array<{ artifactId: string; status: string; createdAt: string }>;
315
+ arbiterPassRate: number;
316
+ orpoSampleCount: number;
317
+ deployments: Array<{ modelId: string; status: string; checkpointPath: string | null }>;
318
+ };
319
+ painSourceDistribution: Record<string, number>;
320
+ activeStage: string;
321
+ }
322
+
323
+ export interface FeedbackGfiResponse {
324
+ current: number;
325
+ peakToday: number;
326
+ threshold: number;
327
+ trend: Array<{ hour: string; value: number }>;
328
+ sources: Record<string, number>;
329
+ }
330
+
331
+ export interface EmpathyEvent {
332
+ timestamp: string;
333
+ severity: string;
334
+ score: number;
335
+ reason: string;
336
+ origin: string;
337
+ gfiAfter: number;
338
+ }
339
+
340
+ export interface FeedbackGateBlock {
341
+ timestamp: string;
342
+ toolName: string;
343
+ reason: string;
344
+ gfi: number;
345
+ trustStage: number;
346
+ }
347
+
348
+ export interface GateStatsResponse {
349
+ today: {
350
+ gfiBlocks: number;
351
+ stageBlocks: number;
352
+ p03Blocks: number;
353
+ bypassAttempts: number;
354
+ p16Exemptions: number;
355
+ };
356
+ trust: { stage: number; score: number; status: string };
357
+ evolution: { tier: string; points: number; status: string };
358
+ }
359
+
360
+ export interface GateBlockItem {
361
+ timestamp: string;
362
+ toolName: string;
363
+ filePath: string | null;
364
+ reason: string;
365
+ gateType: string;
366
+ gfi: number;
367
+ trustStage: number;
368
+ }
@@ -0,0 +1,15 @@
1
+ export function formatPercent(value: number): string {
2
+ return `${(value * 100).toFixed(1)}%`;
3
+ }
4
+
5
+ export function formatDate(value: string | null): string {
6
+ if (!value) return 'N/A';
7
+ return new Date(value).toLocaleString();
8
+ }
9
+
10
+ export function formatDuration(ms: number | null): string {
11
+ if (ms === null) return 'N/A';
12
+ if (ms < 1000) return `${ms}ms`;
13
+ if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;
14
+ return `${(ms / 60000).toFixed(1)}min`;
15
+ }
@@ -0,0 +1,23 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: 'node',
6
+ include: ['tests/**/*.test.ts', 'tests/**/*.test.tsx'],
7
+ // vitest 4: pool: 'forks' 默认启用隔离,每个测试文件在独立进程中运行
8
+ pool: 'forks',
9
+ // 确保测试完成后进程能正常退出
10
+ teardownTimeout: 15000,
11
+ coverage: {
12
+ provider: 'v8',
13
+ reporter: ['text', 'html'],
14
+ exclude: ['tests/**'],
15
+ thresholds: {
16
+ lines: 70,
17
+ functions: 70,
18
+ branches: 60,
19
+ statements: 70,
20
+ },
21
+ }
22
+ }
23
+ });
@@ -1,3 +0,0 @@
1
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
2
- export declare function handleBootstrapTools(ctx: PluginCommandContext): PluginCommandResult;
3
- export declare function handleResearchTools(ctx: PluginCommandContext): PluginCommandResult;
@@ -1,73 +0,0 @@
1
- import { execSync } from 'child_process';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import { WorkspaceContext } from '../core/workspace-context.js';
5
- const TOOLS_TO_SCAN = [
6
- { name: 'rg', cmd: ['rg', '--version'] },
7
- { name: 'sg', cmd: ['sg', '--version'] },
8
- { name: 'fd', cmd: ['fd', '--version'] },
9
- { name: 'qmd', cmd: ['qmd', '--version'] },
10
- { name: 'ast-grep', cmd: ['ast-grep', '--version'] },
11
- { name: 'shellcheck', cmd: ['shellcheck', '--version'] },
12
- ];
13
- function scanEnvironment(wctx) {
14
- const tools = {};
15
- for (const tool of TOOLS_TO_SCAN) {
16
- try {
17
- const output = execSync(tool.cmd.join(' '), { stdio: ['ignore', 'pipe', 'ignore'] }).toString();
18
- tools[tool.name] = {
19
- available: true,
20
- version: output.split('\n')[0].trim(),
21
- };
22
- }
23
- catch (_e) {
24
- tools[tool.name] = { available: false };
25
- }
26
- }
27
- const capabilities = {
28
- platform: process.platform,
29
- arch: process.arch,
30
- node: process.version,
31
- tools,
32
- timestamp: new Date().toISOString(),
33
- };
34
- const capsPath = wctx.resolve('SYSTEM_CAPABILITIES');
35
- const capsDir = path.dirname(capsPath);
36
- if (!fs.existsSync(capsDir)) {
37
- fs.mkdirSync(capsDir, { recursive: true });
38
- }
39
- fs.writeFileSync(capsPath, JSON.stringify(capabilities, null, 2), 'utf8');
40
- return capabilities;
41
- }
42
- export function handleBootstrapTools(ctx) {
43
- const workspaceDir = ctx.config?.workspaceDir || process.cwd();
44
- const wctx = WorkspaceContext.fromHookContext({ workspaceDir, ...ctx.config });
45
- try {
46
- const caps = scanEnvironment(wctx);
47
- const toolsMap = caps.tools;
48
- const available = Object.entries(toolsMap)
49
- .filter(([, data]) => data.available)
50
- .map(([name]) => `\`${name}\``)
51
- .join(', ');
52
- return {
53
- text: `🔍 Environment perception complete.\n` +
54
- `**Detected tools:** ${available || '(none)'}\n` +
55
- `**Platform:** ${process.platform}\n` +
56
- `Capabilities saved to \`.state/SYSTEM_CAPABILITIES.json\`.`,
57
- };
58
- }
59
- catch (err) {
60
- return { text: `❌ bootstrap-tools failed: ${err instanceof Error ? err.message : String(err)}` };
61
- }
62
- }
63
- export function handleResearchTools(ctx) {
64
- const category = ctx.args?.trim() || "modern high-performance CLI tools for coding and architecture";
65
- return {
66
- text: `🚀 **Tool Evolution Research Initiated**\n\n` +
67
- `**Instructions for Agent:**\n` +
68
- `1. Use \`google_web_search\` or \`web_search_exa\` to find the latest tools in the category: "${category}".\n` +
69
- `2. Compare findings with current capabilities in \`.state/SYSTEM_CAPABILITIES.json\`.\n` +
70
- `3. Focus on tools that improve speed (like \`rg\`, \`sg\`), documentation (like \`qmd\`), or automation.\n` +
71
- `4. Output a "Tool Upgrade Proposal" with installation commands and justification.`,
72
- };
73
- }
@@ -1,5 +0,0 @@
1
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
2
- /**
3
- * Main command handler
4
- */
5
- export declare function handleContextCommand(ctx: PluginCommandContext): PluginCommandResult;
@@ -1,4 +0,0 @@
1
- import type { PluginCommandContext } from '../openclaw-sdk.js';
2
- export declare function handleEvolutionStatusCommand(ctx: PluginCommandContext): {
3
- text: string;
4
- };
@@ -1,117 +0,0 @@
1
- import { EvolutionReducerImpl } from '../core/evolution-reducer.js';
2
- import { normalizeLanguage } from '../i18n/commands.js';
3
- import { RuntimeSummaryService } from '../service/runtime-summary-service.js';
4
- function formatNumber(value) {
5
- if (value === null || Number.isNaN(value)) {
6
- return '--';
7
- }
8
- return Number.isInteger(value) ? String(value) : value.toFixed(1);
9
- }
10
- function formatSources(sources) {
11
- if (sources.length === 0) {
12
- return '--';
13
- }
14
- return sources
15
- .map((source) => source.score === undefined
16
- ? source.source
17
- : `${source.source}(${formatNumber(source.score)})`)
18
- .join(', ');
19
- }
20
- function buildEnglishOutput(workspaceDir, sessionId, warnings, stats, summary) {
21
- const lines = [
22
- 'Evolution Status',
23
- '================',
24
- '',
25
- 'Control Plane',
26
- `- Session GFI: current ${formatNumber(summary.gfi.current)}, peak ${formatNumber(summary.gfi.peak)} (${summary.gfi.dataQuality})`,
27
- `- GFI Sources: ${formatSources(summary.gfi.sources)}`,
28
- `- Pain Flag: ${summary.pain.activeFlag ? 'active' : 'inactive'}${summary.pain.activeFlagSource ? ` (${summary.pain.activeFlagSource})` : ''}`,
29
- `- Last Pain Signal: ${summary.pain.lastSignal ? `${summary.pain.lastSignal.source}${summary.pain.lastSignal.reason ? ` - ${summary.pain.lastSignal.reason}` : ''}` : '--'}`,
30
- `- Gate Events: blocks ${formatNumber(summary.gate.recentBlocks)}, bypasses ${formatNumber(summary.gate.recentBypasses)} (${summary.gate.dataQuality})`,
31
- '',
32
- 'Evolution',
33
- `- Queue: pending ${summary.evolution.queue.pending}, in_progress ${summary.evolution.queue.inProgress}, completed ${summary.evolution.queue.completed} (${summary.evolution.dataQuality})`,
34
- `- Legacy Directive File: ${summary.phase3.legacyDirectiveFilePresent ? 'present' : 'missing'} (compatibility-only display artifact)`,
35
- `- Note: Legacy directive file is NOT a truth source for Phase 3 eligibility. Queue is the only authoritative execution truth source.`,
36
- `- Active Evolution Task: ${summary.evolution.directive.taskPreview ?? '--'}`,
37
- `- Phase 3: ready ${summary.phase3.phase3ShadowEligible ? 'yes' : 'no'}, queueTruthReady ${summary.phase3.queueTruthReady ? 'yes' : 'no'}, eligible ${summary.phase3.evolutionEligible}, reference_only ${summary.phase3.evolutionReferenceOnly}, rejected ${summary.phase3.evolutionRejected}${summary.phase3.evolutionReferenceOnlyReasons.length > 0 ? ` (reference ${summary.phase3.evolutionReferenceOnlyReasons.slice(0, 2).join(', ')})` : ''}${summary.phase3.evolutionRejectedReasons.length > 0 ? ` (${summary.phase3.evolutionRejectedReasons.slice(0, 3).join(', ')})` : ''}`,
38
- `- Phase 3 Legacy Directive File: ${summary.phase3.directiveStatus} (${summary.phase3.directiveIgnoredReason})`,
39
- '',
40
- 'Principles',
41
- `- candidate principles: ${stats.candidateCount}`,
42
- `- probation principles: ${stats.probationCount}`,
43
- `- active principles: ${stats.activeCount}`,
44
- `- deprecated principles: ${stats.deprecatedCount}`,
45
- `- last promoted: ${stats.lastPromotedAt ?? 'none'}`,
46
- '',
47
- 'Metadata',
48
- `- workspace: ${workspaceDir}`,
49
- `- session: ${sessionId ?? '--'} (${summary.metadata.selectedSessionReason})`,
50
- `- generatedAt: ${summary.metadata.generatedAt}`,
51
- ];
52
- if (warnings.length > 0) {
53
- lines.push('', 'Warnings');
54
- for (const warning of warnings) {
55
- lines.push(`- ${warning}`);
56
- }
57
- }
58
- return lines.join('\n');
59
- }
60
- function buildChineseOutput(workspaceDir, sessionId, warnings, stats, summary) {
61
- const lines = [
62
- '进化状态',
63
- '================',
64
- '',
65
- '控制面',
66
- `- 会话 GFI: 当前 ${formatNumber(summary.gfi.current)},峰值 ${formatNumber(summary.gfi.peak)}(${summary.gfi.dataQuality})`,
67
- `- GFI 来源: ${formatSources(summary.gfi.sources)}`,
68
- `- Pain Flag: ${summary.pain.activeFlag ? 'active' : 'inactive'}${summary.pain.activeFlagSource ? `(${summary.pain.activeFlagSource})` : ''}`,
69
- `- 最近 Pain 信号: ${summary.pain.lastSignal ? `${summary.pain.lastSignal.source}${summary.pain.lastSignal.reason ? ` - ${summary.pain.lastSignal.reason}` : ''}` : '--'}`,
70
- `- Gate 事件: block ${formatNumber(summary.gate.recentBlocks)},bypass ${formatNumber(summary.gate.recentBypasses)}(${summary.gate.dataQuality})`,
71
- '',
72
- '进化',
73
- `- 队列: pending ${summary.evolution.queue.pending},in_progress ${summary.evolution.queue.inProgress},completed ${summary.evolution.queue.completed}(${summary.evolution.dataQuality})`,
74
- `- Legacy Directive File: ${summary.phase3.legacyDirectiveFilePresent ? 'present' : 'missing'} (兼容仅显示产物)`,
75
- `- 注:Legacy directive file 不是 Phase 3 合格性的真实源。队列是唯一权威的执行真实源。`,
76
- `- Active Evolution Task: ${summary.evolution.directive.taskPreview ?? '--'}`,
77
- `- Phase 3: ready ${summary.phase3.phase3ShadowEligible ? 'yes' : 'no'},queueTruthReady ${summary.phase3.queueTruthReady ? 'yes' : 'no'},eligible ${summary.phase3.evolutionEligible},reference_only ${summary.phase3.evolutionReferenceOnly},rejected ${summary.phase3.evolutionRejected}${summary.phase3.evolutionReferenceOnlyReasons.length > 0 ? `(reference ${summary.phase3.evolutionReferenceOnlyReasons.slice(0, 2).join(', ')})` : ''}${summary.phase3.evolutionRejectedReasons.length > 0 ? `(${summary.phase3.evolutionRejectedReasons.slice(0, 3).join(', ')})` : ''}`,
78
- `- Phase 3 Legacy Directive File: ${summary.phase3.directiveStatus} (${summary.phase3.directiveIgnoredReason})`,
79
- '',
80
- '原则统计',
81
- `- 候选原则: ${stats.candidateCount}`,
82
- `- 观察期原则: ${stats.probationCount}`,
83
- `- 生效原则: ${stats.activeCount}`,
84
- `- 已废弃原则: ${stats.deprecatedCount}`,
85
- `- 最近晋升: ${stats.lastPromotedAt ?? '无'}`,
86
- '',
87
- '元数据',
88
- `- 工作区: ${workspaceDir}`,
89
- `- Session: ${sessionId ?? '--'}(${summary.metadata.selectedSessionReason})`,
90
- `- 生成时间: ${summary.metadata.generatedAt}`,
91
- ];
92
- if (warnings.length > 0) {
93
- lines.push('', '警告');
94
- for (const warning of warnings) {
95
- lines.push(`- ${warning}`);
96
- }
97
- }
98
- return lines.join('\n');
99
- }
100
- export function handleEvolutionStatusCommand(ctx) {
101
- const workspaceDir = ctx.config?.workspaceDir || process.cwd();
102
- const sessionId = ctx.sessionId ?? null;
103
- const reducer = new EvolutionReducerImpl({ workspaceDir });
104
- const stats = reducer.getStats();
105
- const summary = RuntimeSummaryService.getSummary(workspaceDir, { sessionId });
106
- const rawLang = ctx.config?.language || 'en';
107
- const lang = normalizeLanguage(rawLang);
108
- const warnings = summary.metadata.warnings.slice(0, 12);
109
- if (lang === 'zh') {
110
- return {
111
- text: buildChineseOutput(workspaceDir, summary.metadata.sessionId, warnings, stats, summary),
112
- };
113
- }
114
- return {
115
- text: buildEnglishOutput(workspaceDir, summary.metadata.sessionId, warnings, stats, summary),
116
- };
117
- }
@@ -1,9 +0,0 @@
1
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
2
- /**
3
- * /evolve-task [task description]
4
- *
5
- * Returns instructions that tell the Agent to invoke the sessions_spawn tool
6
- * targeting the evolver agent. Plugin command handlers cannot directly call
7
- * Gateway tools — only the AI agent can do that via sessions_spawn.
8
- */
9
- export declare function handleEvolveTask(ctx: PluginCommandContext): PluginCommandResult;
@@ -1,26 +0,0 @@
1
- import { WorkspaceContext } from '../core/workspace-context.js';
2
- /**
3
- * /evolve-task [task description]
4
- *
5
- * Returns instructions that tell the Agent to invoke the sessions_spawn tool
6
- * targeting the evolver agent. Plugin command handlers cannot directly call
7
- * Gateway tools — only the AI agent can do that via sessions_spawn.
8
- */
9
- export function handleEvolveTask(ctx) {
10
- const workspaceDir = ctx.config?.workspaceDir || process.cwd();
11
- const wctx = WorkspaceContext.fromHookContext({ workspaceDir, ...ctx.config });
12
- const painFlagPath = wctx.resolve('PAIN_FLAG');
13
- const relPainFlag = painFlagPath.replace(workspaceDir, '').replace(/^\/+/, '');
14
- const task = ctx.args?.trim() || `Diagnose and fix the latest pain signals in ${relPainFlag}.`;
15
- return {
16
- text: `🔧 **Evolver Handoff Requested**\n\n` +
17
- `To spin up the Evolver sub-agent, the Agent should call the \`sessions_spawn\` tool with:\n\n` +
18
- `**spawnId**: \`evolver\`\n` +
19
- `**task**: "${task}"\n\n` +
20
- `**Instructions for Agent:**\n` +
21
- `1. Use \`sessions_spawn\` now.\n` +
22
- `2. Target \`evolver\`.\n` +
23
- `3. Pass the task above.\n` +
24
- `4. No other tools needed until the sub-agent returns.`,
25
- };
26
- }
@@ -1,2 +0,0 @@
1
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
2
- export declare function handleExportCommand(ctx: PluginCommandContext): PluginCommandResult;