principles-disciple 1.8.1 → 1.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/ADVANCED_CONFIG_ZH.md +97 -0
  2. package/AGENT_INSTALL.md +173 -0
  3. package/AGENT_INSTALL_EN.md +173 -0
  4. package/INSTALL.md +256 -0
  5. package/SKILL.md +63 -0
  6. package/docs/COMMAND_REFERENCE.md +76 -0
  7. package/docs/COMMAND_REFERENCE_EN.md +79 -0
  8. package/esbuild.config.js +75 -0
  9. package/openclaw.plugin.json +4 -4
  10. package/package.json +11 -13
  11. package/scripts/build-web.mjs +46 -0
  12. package/scripts/install-dependencies.cjs +47 -0
  13. package/scripts/sync-plugin.mjs +802 -0
  14. package/scripts/verify-build.mjs +109 -0
  15. package/src/agents/nocturnal-dreamer.md +152 -0
  16. package/src/agents/nocturnal-philosopher.md +138 -0
  17. package/src/agents/nocturnal-reflector.md +126 -0
  18. package/src/agents/nocturnal-scribe.md +164 -0
  19. package/src/commands/capabilities.ts +85 -0
  20. package/{dist/commands/context.js → src/commands/context.ts} +78 -38
  21. package/src/commands/evolution-status.ts +146 -0
  22. package/src/commands/export.ts +111 -0
  23. package/src/commands/focus.ts +533 -0
  24. package/src/commands/nocturnal-review.ts +311 -0
  25. package/src/commands/nocturnal-rollout.ts +763 -0
  26. package/src/commands/nocturnal-train.ts +1002 -0
  27. package/{dist/commands/pain.js → src/commands/pain.ts} +68 -49
  28. package/src/commands/principle-rollback.ts +27 -0
  29. package/{dist/commands/rollback.js → src/commands/rollback.ts} +44 -12
  30. package/src/commands/samples.ts +60 -0
  31. package/src/commands/strategy.ts +38 -0
  32. package/{dist/commands/thinking-os.js → src/commands/thinking-os.ts} +59 -36
  33. package/src/commands/workflow-debug.ts +128 -0
  34. package/{dist/config/defaults/runtime.js → src/config/defaults/runtime.ts} +12 -5
  35. package/src/config/errors.ts +163 -0
  36. package/{dist/config/index.d.ts → src/config/index.ts} +2 -1
  37. package/src/constants/diagnostician.ts +66 -0
  38. package/src/constants/tools.ts +62 -0
  39. package/src/core/adaptive-thresholds.ts +476 -0
  40. package/{dist/core/config-service.js → src/core/config-service.ts} +7 -4
  41. package/{dist/core/config.js → src/core/config.ts} +158 -46
  42. package/src/core/control-ui-db.ts +435 -0
  43. package/{dist/core/detection-funnel.js → src/core/detection-funnel.ts} +36 -21
  44. package/{dist/core/detection-service.js → src/core/detection-service.ts} +7 -4
  45. package/{dist/core/dictionary-service.js → src/core/dictionary-service.ts} +7 -4
  46. package/{dist/core/dictionary.js → src/core/dictionary.ts} +57 -34
  47. package/src/core/empathy-keyword-matcher.ts +327 -0
  48. package/src/core/empathy-types.ts +218 -0
  49. package/src/core/event-log.ts +544 -0
  50. package/src/core/evolution-engine.ts +612 -0
  51. package/src/core/evolution-logger.ts +353 -0
  52. package/src/core/evolution-migration.ts +77 -0
  53. package/src/core/evolution-reducer.ts +731 -0
  54. package/src/core/evolution-types.ts +456 -0
  55. package/src/core/external-training-contract.ts +527 -0
  56. package/src/core/focus-history.ts +1458 -0
  57. package/src/core/hygiene/tracker.ts +117 -0
  58. package/{dist/core/init.js → src/core/init.ts} +39 -26
  59. package/src/core/local-worker-routing.ts +617 -0
  60. package/{dist/core/migration.js → src/core/migration.ts} +18 -11
  61. package/src/core/model-deployment-registry.ts +722 -0
  62. package/src/core/model-training-registry.ts +813 -0
  63. package/src/core/nocturnal-arbiter.ts +706 -0
  64. package/src/core/nocturnal-candidate-scoring.ts +392 -0
  65. package/src/core/nocturnal-compliance.ts +1075 -0
  66. package/src/core/nocturnal-dataset.ts +668 -0
  67. package/src/core/nocturnal-executability.ts +428 -0
  68. package/src/core/nocturnal-export.ts +390 -0
  69. package/{dist/core/nocturnal-paths.js → src/core/nocturnal-paths.ts} +49 -23
  70. package/src/core/nocturnal-trajectory-extractor.ts +484 -0
  71. package/src/core/nocturnal-trinity.ts +1384 -0
  72. package/src/core/pain.ts +122 -0
  73. package/{dist/core/path-resolver.js → src/core/path-resolver.ts} +157 -36
  74. package/{dist/core/paths.js → src/core/paths.ts} +13 -4
  75. package/src/core/principle-training-state.ts +450 -0
  76. package/src/core/profile.ts +226 -0
  77. package/src/core/promotion-gate.ts +822 -0
  78. package/{dist/core/risk-calculator.js → src/core/risk-calculator.ts} +42 -16
  79. package/{dist/core/session-tracker.js → src/core/session-tracker.ts} +175 -62
  80. package/src/core/shadow-observation-registry.ts +534 -0
  81. package/{dist/core/system-logger.js → src/core/system-logger.ts} +9 -5
  82. package/src/core/thinking-models.ts +217 -0
  83. package/src/core/training-program.ts +630 -0
  84. package/src/core/trajectory-types.ts +243 -0
  85. package/src/core/trajectory.ts +1673 -0
  86. package/{dist/core/workspace-context.js → src/core/workspace-context.ts} +57 -32
  87. package/src/hooks/bash-risk.ts +171 -0
  88. package/src/hooks/edit-verification.ts +295 -0
  89. package/src/hooks/gate-block-helper.ts +160 -0
  90. package/src/hooks/gate.ts +210 -0
  91. package/src/hooks/gfi-gate.ts +177 -0
  92. package/src/hooks/lifecycle.ts +326 -0
  93. package/{dist/hooks/llm.js → src/hooks/llm.ts} +160 -80
  94. package/src/hooks/message-sanitize.ts +45 -0
  95. package/src/hooks/pain.ts +384 -0
  96. package/src/hooks/progressive-trust-gate.ts +174 -0
  97. package/src/hooks/prompt.ts +920 -0
  98. package/src/hooks/subagent.ts +207 -0
  99. package/src/hooks/thinking-checkpoint.ts +73 -0
  100. package/src/hooks/trajectory-collector.ts +290 -0
  101. package/src/http/principles-console-route.ts +716 -0
  102. package/src/i18n/commands.ts +117 -0
  103. package/src/index.ts +694 -0
  104. package/src/service/central-database.ts +831 -0
  105. package/src/service/control-ui-query-service.ts +888 -0
  106. package/src/service/evolution-query-service.ts +405 -0
  107. package/src/service/evolution-worker.ts +1646 -0
  108. package/src/service/health-query-service.ts +836 -0
  109. package/{dist/service/nocturnal-runtime.js → src/service/nocturnal-runtime.ts} +235 -79
  110. package/src/service/nocturnal-service.ts +1015 -0
  111. package/src/service/nocturnal-target-selector.ts +532 -0
  112. package/src/service/phase3-input-filter.ts +237 -0
  113. package/src/service/runtime-summary-service.ts +757 -0
  114. package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +513 -0
  115. package/{dist/service/subagent-workflow/empathy-observer-workflow-manager.js → src/service/subagent-workflow/empathy-observer-workflow-manager.ts} +240 -117
  116. package/src/service/subagent-workflow/index.ts +51 -0
  117. package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +856 -0
  118. package/src/service/subagent-workflow/runtime-direct-driver.ts +166 -0
  119. package/{dist/service/subagent-workflow/types.d.ts → src/service/subagent-workflow/types.ts} +137 -18
  120. package/src/service/subagent-workflow/workflow-store.ts +328 -0
  121. package/src/service/trajectory-service.ts +15 -0
  122. package/{dist/tools/critique-prompt.js → src/tools/critique-prompt.ts} +25 -8
  123. package/src/tools/deep-reflect.ts +349 -0
  124. package/{dist/tools/model-index.js → src/tools/model-index.ts} +33 -17
  125. package/src/types/event-types.ts +453 -0
  126. package/src/types/hygiene-types.ts +31 -0
  127. package/src/types/principle-tree-schema.ts +244 -0
  128. package/src/types/runtime-summary.ts +49 -0
  129. package/src/types.ts +74 -0
  130. package/src/utils/file-lock.ts +391 -0
  131. package/{dist/utils/glob-match.js → src/utils/glob-match.ts} +21 -20
  132. package/{dist/utils/hashing.js → src/utils/hashing.ts} +6 -4
  133. package/src/utils/io.ts +110 -0
  134. package/{dist/utils/nlp.js → src/utils/nlp.ts} +19 -12
  135. package/{dist/utils/plugin-logger.js → src/utils/plugin-logger.ts} +33 -8
  136. package/src/utils/subagent-probe.ts +94 -0
  137. package/templates/langs/en/skills/ai-sprint-orchestration/EXAMPLES.md +63 -0
  138. package/templates/langs/en/skills/ai-sprint-orchestration/REFERENCE.md +136 -0
  139. package/templates/langs/en/skills/ai-sprint-orchestration/SKILL.md +67 -0
  140. package/templates/langs/en/skills/ai-sprint-orchestration/references/agent-registry.json +214 -0
  141. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +107 -0
  142. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +107 -0
  143. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +105 -0
  144. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +108 -0
  145. package/templates/langs/en/skills/ai-sprint-orchestration/references/workflow-v1-acceptance-checklist.md +58 -0
  146. package/templates/langs/en/skills/ai-sprint-orchestration/references/workflow-v1.4-work-unit-handoff.md +190 -0
  147. package/templates/langs/en/skills/ai-sprint-orchestration/runtime/.gitignore +2 -0
  148. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/archive.mjs +310 -0
  149. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/contract-enforcement.mjs +683 -0
  150. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/decision.mjs +604 -0
  151. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/state-store.mjs +32 -0
  152. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/lib/task-specs.mjs +707 -0
  153. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/run.mjs +3419 -0
  154. package/templates/langs/zh/skills/ai-sprint-orchestration/EXAMPLES.md +63 -0
  155. package/templates/langs/zh/skills/ai-sprint-orchestration/REFERENCE.md +136 -0
  156. package/templates/langs/zh/skills/ai-sprint-orchestration/SKILL.md +67 -0
  157. package/templates/langs/zh/skills/ai-sprint-orchestration/references/agent-registry.json +214 -0
  158. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +107 -0
  159. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +107 -0
  160. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +105 -0
  161. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +108 -0
  162. package/templates/langs/zh/skills/ai-sprint-orchestration/references/workflow-v1-acceptance-checklist.md +58 -0
  163. package/templates/langs/zh/skills/ai-sprint-orchestration/references/workflow-v1.4-work-unit-handoff.md +190 -0
  164. package/templates/langs/zh/skills/ai-sprint-orchestration/runtime/.gitignore +2 -0
  165. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/archive.mjs +310 -0
  166. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/contract-enforcement.mjs +683 -0
  167. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/decision.mjs +604 -0
  168. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/state-store.mjs +32 -0
  169. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/lib/task-specs.mjs +707 -0
  170. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/run.mjs +3419 -0
  171. package/templates/langs/zh/skills/ai-sprint-orchestration/test/archive.test.mjs +230 -0
  172. package/templates/langs/zh/skills/ai-sprint-orchestration/test/contract-enforcement.test.mjs +672 -0
  173. package/templates/langs/zh/skills/ai-sprint-orchestration/test/decision.test.mjs +1321 -0
  174. package/templates/langs/zh/skills/ai-sprint-orchestration/test/run.test.mjs +1419 -0
  175. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +70 -1
  176. package/templates/pain_settings.json +2 -1
  177. package/tests/README.md +120 -0
  178. package/tests/build-artifacts.test.ts +111 -0
  179. package/tests/commands/evolution-status.test.ts +222 -0
  180. package/tests/commands/evolver.test.ts +22 -0
  181. package/tests/commands/export.test.ts +78 -0
  182. package/tests/commands/nocturnal-review.test.ts +448 -0
  183. package/tests/commands/nocturnal-train.test.ts +97 -0
  184. package/tests/commands/pain.test.ts +108 -0
  185. package/tests/commands/samples.test.ts +65 -0
  186. package/tests/commands/strategy.test.ts +34 -0
  187. package/tests/commands/thinking-os.test.ts +88 -0
  188. package/tests/core/adaptive-thresholds.test.ts +261 -0
  189. package/tests/core/config-service.test.ts +89 -0
  190. package/tests/core/config.test.ts +90 -0
  191. package/tests/core/control-ui-db.test.ts +75 -0
  192. package/tests/core/core-template-guidance.test.ts +21 -0
  193. package/tests/core/detection-funnel.test.ts +63 -0
  194. package/tests/core/detection-service.test.ts +50 -0
  195. package/tests/core/dictionary-service.test.ts +116 -0
  196. package/tests/core/dictionary.test.ts +168 -0
  197. package/tests/core/empathy-keyword-matcher.test.ts +209 -0
  198. package/tests/core/event-log.test.ts +181 -0
  199. package/tests/core/evolution-e2e.test.ts +58 -0
  200. package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
  201. package/tests/core/evolution-engine.test.ts +562 -0
  202. package/tests/core/evolution-logger.test.ts +148 -0
  203. package/tests/core/evolution-migration.test.ts +50 -0
  204. package/tests/core/evolution-paths.test.ts +21 -0
  205. package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
  206. package/tests/core/evolution-reducer.test.ts +180 -0
  207. package/tests/core/evolution-types-loop.test.ts +48 -0
  208. package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
  209. package/tests/core/external-training-contract.test.ts +463 -0
  210. package/tests/core/focus-history.test.ts +682 -0
  211. package/tests/core/init-flatten.test.ts +69 -0
  212. package/tests/core/init-refactor.test.ts +87 -0
  213. package/tests/core/init-v1.3.test.ts +46 -0
  214. package/tests/core/init.test.ts +190 -0
  215. package/tests/core/local-worker-routing.test.ts +757 -0
  216. package/tests/core/migration.test.ts +84 -0
  217. package/tests/core/model-deployment-registry.test.ts +845 -0
  218. package/tests/core/model-training-registry.test.ts +889 -0
  219. package/tests/core/nocturnal-arbiter.test.ts +494 -0
  220. package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
  221. package/tests/core/nocturnal-compliance.test.ts +646 -0
  222. package/tests/core/nocturnal-dataset.test.ts +892 -0
  223. package/tests/core/nocturnal-executability.test.ts +357 -0
  224. package/tests/core/nocturnal-export.test.ts +462 -0
  225. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
  226. package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
  227. package/tests/core/nocturnal-trinity.test.ts +953 -0
  228. package/tests/core/pain.test.ts +33 -0
  229. package/tests/core/path-resolver.test.ts +57 -0
  230. package/tests/core/paths-refactor.test.ts +42 -0
  231. package/tests/core/phase7-rollout-integration.test.ts +477 -0
  232. package/tests/core/principle-training-state.test.ts +712 -0
  233. package/tests/core/profile.test.ts +56 -0
  234. package/tests/core/promotion-gate.test.ts +556 -0
  235. package/tests/core/risk-calculator.test.ts +168 -0
  236. package/tests/core/session-tracker.test.ts +191 -0
  237. package/tests/core/training-program.test.ts +472 -0
  238. package/tests/core/trajectory.test.ts +265 -0
  239. package/tests/core/workspace-context-factory.test.ts +18 -0
  240. package/tests/core/workspace-context.test.ts +134 -0
  241. package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
  242. package/tests/fixtures/production-compatibility.test.ts +147 -0
  243. package/tests/fixtures/production-mock-generator.ts +282 -0
  244. package/tests/hooks/bash-risk-integration.test.ts +137 -0
  245. package/tests/hooks/bash-risk.test.ts +81 -0
  246. package/tests/hooks/edit-verification.test.ts +678 -0
  247. package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
  248. package/tests/hooks/gate-edit-verification.test.ts +435 -0
  249. package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
  250. package/tests/hooks/gate.test.ts +271 -0
  251. package/tests/hooks/gfi-gate-unit.test.ts +422 -0
  252. package/tests/hooks/gfi-gate.test.ts +669 -0
  253. package/tests/hooks/lifecycle.test.ts +248 -0
  254. package/tests/hooks/llm.test.ts +308 -0
  255. package/tests/hooks/message-sanitize.test.ts +36 -0
  256. package/tests/hooks/pain.test.ts +141 -0
  257. package/tests/hooks/progressive-trust-gate.test.ts +277 -0
  258. package/tests/hooks/prompt.test.ts +1411 -0
  259. package/tests/hooks/subagent.test.ts +467 -0
  260. package/tests/hooks/thinking-gate.test.ts +313 -0
  261. package/tests/http/principles-console-route.test.ts +140 -0
  262. package/tests/hygiene-tracker.test.ts +77 -0
  263. package/tests/index.integration.test.ts +179 -0
  264. package/tests/index.shadow-routing.integration.test.ts +140 -0
  265. package/tests/index.test.ts +9 -0
  266. package/tests/integration/empathy-workflow-integration.test.ts +627 -0
  267. package/tests/service/control-ui-query-service.test.ts +121 -0
  268. package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
  269. package/tests/service/evolution-worker.test.ts +585 -0
  270. package/tests/service/nocturnal-runtime.test.ts +470 -0
  271. package/tests/service/nocturnal-service.test.ts +577 -0
  272. package/tests/service/nocturnal-target-selector.test.ts +615 -0
  273. package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
  274. package/tests/service/phase3-input-filter.test.ts +289 -0
  275. package/tests/service/runtime-summary-service.test.ts +919 -0
  276. package/tests/task-compliance.test.ts +166 -0
  277. package/tests/test-utils.ts +48 -0
  278. package/tests/tools/critique-prompt.test.ts +260 -0
  279. package/tests/tools/deep-reflect.test.ts +232 -0
  280. package/tests/tools/model-index.test.ts +246 -0
  281. package/tests/ui/app.test.tsx +114 -0
  282. package/tests/utils/file-lock.test.ts +407 -0
  283. package/tests/utils/hashing.test.ts +32 -0
  284. package/tests/utils/io.test.ts +39 -0
  285. package/tests/utils/nlp.test.ts +53 -0
  286. package/tests/utils/plugin-logger.test.ts +156 -0
  287. package/tsconfig.json +16 -0
  288. package/tsconfig.tsbuildinfo +1 -0
  289. package/ui/src/App.tsx +45 -0
  290. package/ui/src/api.ts +216 -0
  291. package/ui/src/charts.tsx +586 -0
  292. package/ui/src/components/ErrorState.tsx +6 -0
  293. package/ui/src/components/Loading.tsx +13 -0
  294. package/ui/src/components/ProtectedRoute.tsx +12 -0
  295. package/ui/src/components/Shell.tsx +91 -0
  296. package/ui/src/components/WorkspaceConfig.tsx +146 -0
  297. package/ui/src/components/index.ts +5 -0
  298. package/ui/src/context/auth.tsx +80 -0
  299. package/ui/src/context/theme.tsx +66 -0
  300. package/ui/src/hooks/useAutoRefresh.ts +39 -0
  301. package/ui/src/i18n/ui.ts +363 -0
  302. package/ui/src/main.tsx +16 -0
  303. package/ui/src/pages/EvolutionPage.tsx +352 -0
  304. package/ui/src/pages/FeedbackPage.tsx +140 -0
  305. package/ui/src/pages/GateMonitorPage.tsx +136 -0
  306. package/ui/src/pages/LoginPage.tsx +88 -0
  307. package/ui/src/pages/OverviewPage.tsx +238 -0
  308. package/ui/src/pages/SamplesPage.tsx +174 -0
  309. package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
  310. package/ui/src/styles.css +1661 -0
  311. package/ui/src/types.ts +368 -0
  312. package/ui/src/utils/format.ts +15 -0
  313. package/vitest.config.ts +23 -0
  314. package/dist/commands/capabilities.d.ts +0 -3
  315. package/dist/commands/capabilities.js +0 -73
  316. package/dist/commands/context.d.ts +0 -5
  317. package/dist/commands/evolution-status.d.ts +0 -4
  318. package/dist/commands/evolution-status.js +0 -117
  319. package/dist/commands/evolver.d.ts +0 -9
  320. package/dist/commands/evolver.js +0 -26
  321. package/dist/commands/export.d.ts +0 -2
  322. package/dist/commands/export.js +0 -98
  323. package/dist/commands/focus.d.ts +0 -14
  324. package/dist/commands/focus.js +0 -457
  325. package/dist/commands/nocturnal-review.d.ts +0 -24
  326. package/dist/commands/nocturnal-review.js +0 -265
  327. package/dist/commands/nocturnal-rollout.d.ts +0 -27
  328. package/dist/commands/nocturnal-rollout.js +0 -671
  329. package/dist/commands/nocturnal-train.d.ts +0 -25
  330. package/dist/commands/nocturnal-train.js +0 -919
  331. package/dist/commands/pain.d.ts +0 -5
  332. package/dist/commands/principle-rollback.d.ts +0 -4
  333. package/dist/commands/principle-rollback.js +0 -22
  334. package/dist/commands/rollback.d.ts +0 -19
  335. package/dist/commands/samples.d.ts +0 -2
  336. package/dist/commands/samples.js +0 -55
  337. package/dist/commands/strategy.d.ts +0 -3
  338. package/dist/commands/strategy.js +0 -29
  339. package/dist/commands/thinking-os.d.ts +0 -2
  340. package/dist/config/defaults/runtime.d.ts +0 -40
  341. package/dist/config/errors.d.ts +0 -84
  342. package/dist/config/errors.js +0 -94
  343. package/dist/config/index.js +0 -7
  344. package/dist/constants/diagnostician.d.ts +0 -12
  345. package/dist/constants/diagnostician.js +0 -56
  346. package/dist/constants/tools.d.ts +0 -17
  347. package/dist/constants/tools.js +0 -54
  348. package/dist/core/adaptive-thresholds.d.ts +0 -186
  349. package/dist/core/adaptive-thresholds.js +0 -300
  350. package/dist/core/config-service.d.ts +0 -15
  351. package/dist/core/config.d.ts +0 -129
  352. package/dist/core/control-ui-db.d.ts +0 -95
  353. package/dist/core/control-ui-db.js +0 -292
  354. package/dist/core/detection-funnel.d.ts +0 -33
  355. package/dist/core/detection-service.d.ts +0 -15
  356. package/dist/core/dictionary-service.d.ts +0 -15
  357. package/dist/core/dictionary.d.ts +0 -38
  358. package/dist/core/event-log.d.ts +0 -82
  359. package/dist/core/event-log.js +0 -463
  360. package/dist/core/evolution-engine.d.ts +0 -118
  361. package/dist/core/evolution-engine.js +0 -464
  362. package/dist/core/evolution-logger.d.ts +0 -137
  363. package/dist/core/evolution-logger.js +0 -256
  364. package/dist/core/evolution-migration.d.ts +0 -5
  365. package/dist/core/evolution-migration.js +0 -65
  366. package/dist/core/evolution-reducer.d.ts +0 -98
  367. package/dist/core/evolution-reducer.js +0 -465
  368. package/dist/core/evolution-types.d.ts +0 -287
  369. package/dist/core/evolution-types.js +0 -78
  370. package/dist/core/external-training-contract.d.ts +0 -276
  371. package/dist/core/external-training-contract.js +0 -269
  372. package/dist/core/focus-history.d.ts +0 -210
  373. package/dist/core/focus-history.js +0 -1185
  374. package/dist/core/hygiene/tracker.d.ts +0 -22
  375. package/dist/core/hygiene/tracker.js +0 -106
  376. package/dist/core/init.d.ts +0 -12
  377. package/dist/core/local-worker-routing.d.ts +0 -175
  378. package/dist/core/local-worker-routing.js +0 -525
  379. package/dist/core/migration.d.ts +0 -6
  380. package/dist/core/model-deployment-registry.d.ts +0 -218
  381. package/dist/core/model-deployment-registry.js +0 -503
  382. package/dist/core/model-training-registry.d.ts +0 -295
  383. package/dist/core/model-training-registry.js +0 -475
  384. package/dist/core/nocturnal-arbiter.d.ts +0 -159
  385. package/dist/core/nocturnal-arbiter.js +0 -534
  386. package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
  387. package/dist/core/nocturnal-candidate-scoring.js +0 -266
  388. package/dist/core/nocturnal-compliance.d.ts +0 -175
  389. package/dist/core/nocturnal-compliance.js +0 -824
  390. package/dist/core/nocturnal-dataset.d.ts +0 -224
  391. package/dist/core/nocturnal-dataset.js +0 -443
  392. package/dist/core/nocturnal-executability.d.ts +0 -85
  393. package/dist/core/nocturnal-executability.js +0 -331
  394. package/dist/core/nocturnal-export.d.ts +0 -124
  395. package/dist/core/nocturnal-export.js +0 -275
  396. package/dist/core/nocturnal-paths.d.ts +0 -124
  397. package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
  398. package/dist/core/nocturnal-trajectory-extractor.js +0 -307
  399. package/dist/core/nocturnal-trinity.d.ts +0 -311
  400. package/dist/core/nocturnal-trinity.js +0 -880
  401. package/dist/core/pain.d.ts +0 -4
  402. package/dist/core/pain.js +0 -70
  403. package/dist/core/path-resolver.d.ts +0 -46
  404. package/dist/core/paths.d.ts +0 -65
  405. package/dist/core/principle-training-state.d.ts +0 -121
  406. package/dist/core/principle-training-state.js +0 -321
  407. package/dist/core/profile.d.ts +0 -62
  408. package/dist/core/profile.js +0 -210
  409. package/dist/core/promotion-gate.d.ts +0 -238
  410. package/dist/core/promotion-gate.js +0 -529
  411. package/dist/core/risk-calculator.d.ts +0 -22
  412. package/dist/core/session-tracker.d.ts +0 -101
  413. package/dist/core/shadow-observation-registry.d.ts +0 -217
  414. package/dist/core/shadow-observation-registry.js +0 -308
  415. package/dist/core/system-logger.d.ts +0 -8
  416. package/dist/core/thinking-models.d.ts +0 -38
  417. package/dist/core/thinking-models.js +0 -170
  418. package/dist/core/training-program.d.ts +0 -233
  419. package/dist/core/training-program.js +0 -433
  420. package/dist/core/trajectory.d.ts +0 -411
  421. package/dist/core/trajectory.js +0 -1307
  422. package/dist/core/workspace-context.d.ts +0 -71
  423. package/dist/hooks/bash-risk.d.ts +0 -57
  424. package/dist/hooks/bash-risk.js +0 -137
  425. package/dist/hooks/edit-verification.d.ts +0 -62
  426. package/dist/hooks/edit-verification.js +0 -256
  427. package/dist/hooks/gate-block-helper.d.ts +0 -44
  428. package/dist/hooks/gate-block-helper.js +0 -119
  429. package/dist/hooks/gate.d.ts +0 -24
  430. package/dist/hooks/gate.js +0 -173
  431. package/dist/hooks/gfi-gate.d.ts +0 -40
  432. package/dist/hooks/gfi-gate.js +0 -113
  433. package/dist/hooks/lifecycle.d.ts +0 -5
  434. package/dist/hooks/lifecycle.js +0 -284
  435. package/dist/hooks/llm.d.ts +0 -13
  436. package/dist/hooks/message-sanitize.d.ts +0 -3
  437. package/dist/hooks/message-sanitize.js +0 -37
  438. package/dist/hooks/pain.d.ts +0 -5
  439. package/dist/hooks/pain.js +0 -301
  440. package/dist/hooks/progressive-trust-gate.d.ts +0 -52
  441. package/dist/hooks/progressive-trust-gate.js +0 -134
  442. package/dist/hooks/prompt.d.ts +0 -49
  443. package/dist/hooks/prompt.js +0 -905
  444. package/dist/hooks/subagent.d.ts +0 -10
  445. package/dist/hooks/subagent.js +0 -387
  446. package/dist/hooks/thinking-checkpoint.d.ts +0 -37
  447. package/dist/hooks/thinking-checkpoint.js +0 -51
  448. package/dist/hooks/trajectory-collector.d.ts +0 -32
  449. package/dist/hooks/trajectory-collector.js +0 -256
  450. package/dist/http/principles-console-route.d.ts +0 -9
  451. package/dist/http/principles-console-route.js +0 -681
  452. package/dist/i18n/commands.d.ts +0 -26
  453. package/dist/i18n/commands.js +0 -116
  454. package/dist/index.d.ts +0 -7
  455. package/dist/index.js +0 -581
  456. package/dist/service/central-database.d.ts +0 -104
  457. package/dist/service/central-database.js +0 -649
  458. package/dist/service/control-ui-query-service.d.ts +0 -221
  459. package/dist/service/control-ui-query-service.js +0 -543
  460. package/dist/service/empathy-observer-manager.d.ts +0 -88
  461. package/dist/service/empathy-observer-manager.js +0 -414
  462. package/dist/service/evolution-query-service.d.ts +0 -155
  463. package/dist/service/evolution-query-service.js +0 -258
  464. package/dist/service/evolution-worker.d.ts +0 -101
  465. package/dist/service/evolution-worker.js +0 -975
  466. package/dist/service/health-query-service.d.ts +0 -170
  467. package/dist/service/health-query-service.js +0 -662
  468. package/dist/service/nocturnal-runtime.d.ts +0 -183
  469. package/dist/service/nocturnal-service.d.ts +0 -163
  470. package/dist/service/nocturnal-service.js +0 -787
  471. package/dist/service/nocturnal-target-selector.d.ts +0 -145
  472. package/dist/service/nocturnal-target-selector.js +0 -315
  473. package/dist/service/phase3-input-filter.d.ts +0 -73
  474. package/dist/service/phase3-input-filter.js +0 -172
  475. package/dist/service/runtime-summary-service.d.ts +0 -122
  476. package/dist/service/runtime-summary-service.js +0 -485
  477. package/dist/service/subagent-workflow/empathy-observer-workflow-manager.d.ts +0 -48
  478. package/dist/service/subagent-workflow/index.d.ts +0 -4
  479. package/dist/service/subagent-workflow/index.js +0 -3
  480. package/dist/service/subagent-workflow/runtime-direct-driver.d.ts +0 -77
  481. package/dist/service/subagent-workflow/runtime-direct-driver.js +0 -75
  482. package/dist/service/subagent-workflow/types.js +0 -11
  483. package/dist/service/subagent-workflow/workflow-store.d.ts +0 -26
  484. package/dist/service/subagent-workflow/workflow-store.js +0 -165
  485. package/dist/service/trajectory-service.d.ts +0 -2
  486. package/dist/service/trajectory-service.js +0 -15
  487. package/dist/tools/critique-prompt.d.ts +0 -14
  488. package/dist/tools/deep-reflect.d.ts +0 -39
  489. package/dist/tools/deep-reflect.js +0 -350
  490. package/dist/tools/model-index.d.ts +0 -9
  491. package/dist/types/event-types.d.ts +0 -306
  492. package/dist/types/event-types.js +0 -106
  493. package/dist/types/hygiene-types.d.ts +0 -20
  494. package/dist/types/hygiene-types.js +0 -12
  495. package/dist/types/runtime-summary.d.ts +0 -47
  496. package/dist/types/runtime-summary.js +0 -1
  497. package/dist/types.d.ts +0 -50
  498. package/dist/types.js +0 -22
  499. package/dist/utils/file-lock.d.ts +0 -71
  500. package/dist/utils/file-lock.js +0 -309
  501. package/dist/utils/glob-match.d.ts +0 -28
  502. package/dist/utils/hashing.d.ts +0 -9
  503. package/dist/utils/io.d.ts +0 -6
  504. package/dist/utils/io.js +0 -106
  505. package/dist/utils/nlp.d.ts +0 -9
  506. package/dist/utils/plugin-logger.d.ts +0 -39
  507. package/dist/utils/subagent-probe.d.ts +0 -34
  508. package/dist/utils/subagent-probe.js +0 -81
@@ -0,0 +1,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;