principles-disciple 1.126.0 → 1.128.0

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 (593) hide show
  1. package/dist/commands/archive-impl.d.ts +18 -0
  2. package/dist/commands/archive-impl.js +105 -0
  3. package/dist/commands/capabilities.d.ts +3 -0
  4. package/dist/commands/capabilities.js +76 -0
  5. package/dist/commands/context.d.ts +5 -0
  6. package/{src/commands/context.ts → dist/commands/context.js} +34 -83
  7. package/dist/commands/disable-impl.d.ts +22 -0
  8. package/dist/commands/disable-impl.js +118 -0
  9. package/dist/commands/evolution-status.d.ts +4 -0
  10. package/dist/commands/evolution-status.js +187 -0
  11. package/dist/commands/export.d.ts +2 -0
  12. package/dist/commands/export.js +53 -0
  13. package/dist/commands/focus.d.ts +14 -0
  14. package/dist/commands/focus.js +443 -0
  15. package/dist/commands/pain.d.ts +6 -0
  16. package/{src/commands/pain.ts → dist/commands/pain.js} +137 -188
  17. package/dist/commands/principle-rollback.d.ts +4 -0
  18. package/dist/commands/principle-rollback.js +26 -0
  19. package/dist/commands/promote-impl.d.ts +22 -0
  20. package/dist/commands/promote-impl.js +194 -0
  21. package/dist/commands/rollback-impl.d.ts +32 -0
  22. package/dist/commands/rollback-impl.js +180 -0
  23. package/dist/commands/rollback.d.ts +19 -0
  24. package/{src/commands/rollback.ts → dist/commands/rollback.js} +10 -53
  25. package/dist/commands/samples.d.ts +2 -0
  26. package/dist/commands/samples.js +58 -0
  27. package/dist/commands/strategy.d.ts +2 -0
  28. package/dist/commands/strategy.js +16 -0
  29. package/dist/commands/thinking-os.d.ts +2 -0
  30. package/{src/commands/thinking-os.ts → dist/commands/thinking-os.js} +35 -58
  31. package/dist/commands/workflow-debug.d.ts +6 -0
  32. package/{src/commands/workflow-debug.ts → dist/commands/workflow-debug.js} +13 -33
  33. package/dist/config/defaults/runtime.d.ts +58 -0
  34. package/{src/config/defaults/runtime.ts → dist/config/defaults/runtime.js} +4 -41
  35. package/dist/config/errors.d.ts +86 -0
  36. package/dist/config/errors.js +107 -0
  37. package/{src/config/index.ts → dist/config/index.d.ts} +1 -2
  38. package/dist/config/index.js +7 -0
  39. package/dist/constants/diagnostician.d.ts +12 -0
  40. package/{src/constants/diagnostician.ts → dist/constants/diagnostician.js} +0 -1
  41. package/dist/constants/tools.d.ts +17 -0
  42. package/dist/constants/tools.js +53 -0
  43. package/dist/core/__tests__/focus-history.test.d.ts +1 -0
  44. package/dist/core/__tests__/focus-history.test.js +160 -0
  45. package/dist/core/bootstrap-rules.d.ts +50 -0
  46. package/dist/core/bootstrap-rules.js +187 -0
  47. package/dist/core/code-implementation-storage.d.ts +71 -0
  48. package/dist/core/code-implementation-storage.js +139 -0
  49. package/dist/core/config-health.d.ts +27 -0
  50. package/dist/core/config-health.js +60 -0
  51. package/dist/core/config-service.d.ts +15 -0
  52. package/{src/core/config-service.ts → dist/core/config-service.js} +4 -7
  53. package/dist/core/config.d.ts +111 -0
  54. package/{src/core/config.ts → dist/core/config.js} +46 -146
  55. package/dist/core/control-ui-db.d.ts +106 -0
  56. package/dist/core/control-ui-db.js +309 -0
  57. package/dist/core/correction-cue-learner.d.ts +33 -0
  58. package/dist/core/correction-cue-learner.js +184 -0
  59. package/dist/core/correction-types.d.ts +3 -0
  60. package/dist/core/correction-types.js +1 -0
  61. package/dist/core/detection-funnel.d.ts +33 -0
  62. package/{src/core/detection-funnel.ts → dist/core/detection-funnel.js} +17 -37
  63. package/dist/core/detection-service.d.ts +15 -0
  64. package/{src/core/detection-service.ts → dist/core/detection-service.js} +4 -7
  65. package/dist/core/dictionary-service.d.ts +15 -0
  66. package/{src/core/dictionary-service.ts → dist/core/dictionary-service.js} +4 -7
  67. package/dist/core/dictionary.d.ts +38 -0
  68. package/{src/core/dictionary.ts → dist/core/dictionary.js} +33 -59
  69. package/dist/core/empathy-keyword-matcher.d.ts +5 -0
  70. package/dist/core/empathy-keyword-matcher.js +40 -0
  71. package/dist/core/empathy-types.d.ts +2 -0
  72. package/dist/core/empathy-types.js +1 -0
  73. package/dist/core/event-log.d.ts +90 -0
  74. package/dist/core/event-log.js +702 -0
  75. package/dist/core/evolution-engine.d.ts +119 -0
  76. package/dist/core/evolution-engine.js +460 -0
  77. package/dist/core/evolution-logger.d.ts +137 -0
  78. package/dist/core/evolution-logger.js +261 -0
  79. package/dist/core/evolution-migration.d.ts +5 -0
  80. package/dist/core/evolution-migration.js +65 -0
  81. package/dist/core/evolution-reducer.d.ts +124 -0
  82. package/dist/core/evolution-reducer.js +730 -0
  83. package/dist/core/evolution-types.d.ts +50 -0
  84. package/dist/core/evolution-types.js +11 -0
  85. package/dist/core/external-training-contract.d.ts +276 -0
  86. package/dist/core/external-training-contract.js +269 -0
  87. package/dist/core/file-store.d.ts +41 -0
  88. package/dist/core/file-store.js +46 -0
  89. package/dist/core/focus-history.d.ts +50 -0
  90. package/dist/core/focus-history.js +574 -0
  91. package/dist/core/hygiene/tracker.d.ts +22 -0
  92. package/dist/core/hygiene/tracker.js +110 -0
  93. package/dist/core/init.d.ts +30 -0
  94. package/{src/core/init.ts → dist/core/init.js} +87 -118
  95. package/dist/core/local-worker-routing.d.ts +124 -0
  96. package/dist/core/local-worker-routing.js +216 -0
  97. package/dist/core/migration.d.ts +6 -0
  98. package/{src/core/migration.ts → dist/core/migration.js} +10 -18
  99. package/dist/core/model-deployment-registry.d.ts +218 -0
  100. package/dist/core/model-deployment-registry.js +502 -0
  101. package/dist/core/model-training-registry.d.ts +295 -0
  102. package/dist/core/model-training-registry.js +474 -0
  103. package/dist/core/observability.d.ts +40 -0
  104. package/dist/core/observability.js +164 -0
  105. package/dist/core/pain-diagnostic-gate.d.ts +36 -0
  106. package/dist/core/pain-diagnostic-gate.js +105 -0
  107. package/dist/core/pain.d.ts +87 -0
  108. package/dist/core/pain.js +223 -0
  109. package/dist/core/path-resolver.d.ts +60 -0
  110. package/{src/core/path-resolver.ts → dist/core/path-resolver.js} +41 -131
  111. package/dist/core/paths.d.ts +60 -0
  112. package/{src/core/paths.ts → dist/core/paths.js} +4 -13
  113. package/dist/core/pd-config-loader.d.ts +96 -0
  114. package/dist/core/pd-config-loader.js +307 -0
  115. package/dist/core/pd-task-reconciler.d.ts +89 -0
  116. package/dist/core/pd-task-reconciler.js +262 -0
  117. package/dist/core/pd-task-service.d.ts +2 -0
  118. package/dist/core/pd-task-service.js +32 -0
  119. package/dist/core/pd-task-store.d.ts +5 -0
  120. package/dist/core/pd-task-store.js +62 -0
  121. package/dist/core/pd-task-types.d.ts +8 -0
  122. package/dist/core/pd-task-types.js +2 -0
  123. package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.d.ts +1 -0
  124. package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.js +132 -0
  125. package/dist/core/principle-compiler/code-validator.d.ts +14 -0
  126. package/dist/core/principle-compiler/code-validator.js +86 -0
  127. package/dist/core/principle-compiler/compiler.d.ts +45 -0
  128. package/dist/core/principle-compiler/compiler.js +287 -0
  129. package/{src/core/principle-compiler/index.ts → dist/core/principle-compiler/index.d.ts} +0 -1
  130. package/dist/core/principle-compiler/index.js +10 -0
  131. package/dist/core/principle-compiler/ledger-registrar.d.ts +28 -0
  132. package/dist/core/principle-compiler/ledger-registrar.js +95 -0
  133. package/{src/core/principle-compiler/template-generator.ts → dist/core/principle-compiler/template-generator.d.ts} +0 -1
  134. package/dist/core/principle-compiler/template-generator.js +7 -0
  135. package/{src/core/principle-injection.ts → dist/core/principle-injection.d.ts} +1 -7
  136. package/dist/core/principle-injection.js +10 -0
  137. package/dist/core/principle-internalization/filesystem-lifecycle-datasource.d.ts +15 -0
  138. package/dist/core/principle-internalization/filesystem-lifecycle-datasource.js +34 -0
  139. package/dist/core/principle-internalization/lifecycle-read-model.d.ts +17 -0
  140. package/{src/core/principle-internalization/lifecycle-read-model.ts → dist/core/principle-internalization/lifecycle-read-model.js} +2 -21
  141. package/dist/core/principle-internalization/lifecycle-refresh.d.ts +2 -0
  142. package/dist/core/principle-internalization/lifecycle-refresh.js +4 -0
  143. package/dist/core/principle-internalization/principle-lifecycle-service.d.ts +28 -0
  144. package/dist/core/principle-internalization/principle-lifecycle-service.js +89 -0
  145. package/dist/core/principle-training-state.d.ts +47 -0
  146. package/dist/core/principle-training-state.js +113 -0
  147. package/dist/core/principle-tree-ledger-adapter.d.ts +32 -0
  148. package/dist/core/principle-tree-ledger-adapter.js +125 -0
  149. package/dist/core/principle-tree-ledger.d.ts +82 -0
  150. package/dist/core/principle-tree-ledger.js +527 -0
  151. package/dist/core/profile.d.ts +62 -0
  152. package/dist/core/profile.js +211 -0
  153. package/dist/core/promotion-gate.d.ts +243 -0
  154. package/dist/core/promotion-gate.js +554 -0
  155. package/dist/core/reflection/reflection-context.d.ts +31 -0
  156. package/dist/core/reflection/reflection-context.js +91 -0
  157. package/dist/core/replay-engine.d.ts +12 -0
  158. package/dist/core/replay-engine.js +82 -0
  159. package/dist/core/risk-calculator.d.ts +22 -0
  160. package/{src/core/risk-calculator.ts → dist/core/risk-calculator.js} +19 -49
  161. package/{src/core/rule-host-helpers.ts → dist/core/rule-host-helpers.d.ts} +0 -1
  162. package/dist/core/rule-host-helpers.js +7 -0
  163. package/{src/core/rule-host-types.ts → dist/core/rule-host-types.d.ts} +1 -8
  164. package/dist/core/rule-host-types.js +7 -0
  165. package/dist/core/rule-host.d.ts +86 -0
  166. package/dist/core/rule-host.js +311 -0
  167. package/dist/core/rule-implementation-runtime.d.ts +18 -0
  168. package/dist/core/rule-implementation-runtime.js +112 -0
  169. package/dist/core/runtime-v2-prompt-activation-reader.d.ts +22 -0
  170. package/dist/core/runtime-v2-prompt-activation-reader.js +99 -0
  171. package/{src/core/schema/db-types.ts → dist/core/schema/db-types.d.ts} +4 -9
  172. package/dist/core/schema/db-types.js +5 -0
  173. package/{src/core/schema/index.ts → dist/core/schema/index.d.ts} +1 -10
  174. package/dist/core/schema/index.js +15 -0
  175. package/dist/core/schema/migration-runner.d.ts +53 -0
  176. package/dist/core/schema/migration-runner.js +170 -0
  177. package/dist/core/schema/migrations/001-init-trajectory.d.ts +6 -0
  178. package/{src/core/schema/migrations/001-init-trajectory.ts → dist/core/schema/migrations/001-init-trajectory.js} +38 -56
  179. package/dist/core/schema/migrations/002-init-central.d.ts +5 -0
  180. package/{src/core/schema/migrations/002-init-central.ts → dist/core/schema/migrations/002-init-central.js} +27 -41
  181. package/dist/core/schema/migrations/003-init-workflow.d.ts +5 -0
  182. package/{src/core/schema/migrations/003-init-workflow.ts → dist/core/schema/migrations/003-init-workflow.js} +16 -21
  183. package/dist/core/schema/migrations/004-add-thinking-and-gfi.d.ts +8 -0
  184. package/{src/core/schema/migrations/004-add-thinking-and-gfi.ts → dist/core/schema/migrations/004-add-thinking-and-gfi.js} +19 -27
  185. package/{src/core/schema/migrations/index.ts → dist/core/schema/migrations/index.d.ts} +1 -16
  186. package/dist/core/schema/migrations/index.js +27 -0
  187. package/dist/core/schema/schema-definitions.d.ts +46 -0
  188. package/{src/core/schema/schema-definitions.ts → dist/core/schema/schema-definitions.js} +242 -291
  189. package/dist/core/session-tracker.d.ts +119 -0
  190. package/{src/core/session-tracker.ts → dist/core/session-tracker.js} +96 -239
  191. package/dist/core/shadow-observation-registry.d.ts +217 -0
  192. package/dist/core/shadow-observation-registry.js +280 -0
  193. package/dist/core/surface-guard.d.ts +31 -0
  194. package/dist/core/surface-guard.js +131 -0
  195. package/dist/core/system-logger.d.ts +8 -0
  196. package/{src/core/system-logger.ts → dist/core/system-logger.js} +20 -34
  197. package/dist/core/thinking-models.d.ts +70 -0
  198. package/dist/core/thinking-models.js +300 -0
  199. package/dist/core/thinking-os-parser.d.ts +35 -0
  200. package/dist/core/thinking-os-parser.js +123 -0
  201. package/dist/core/trajectory-types.d.ts +220 -0
  202. package/dist/core/trajectory-types.js +8 -0
  203. package/dist/core/trajectory.d.ts +242 -0
  204. package/dist/core/trajectory.js +1500 -0
  205. package/dist/core/workflow-funnel-loader.d.ts +72 -0
  206. package/dist/core/workflow-funnel-loader.js +135 -0
  207. package/dist/core/workspace-context.d.ts +111 -0
  208. package/{src/core/workspace-context.ts → dist/core/workspace-context.js} +50 -105
  209. package/dist/core/workspace-dir-validation.d.ts +11 -0
  210. package/dist/core/workspace-dir-validation.js +37 -0
  211. package/dist/core/workspace-guidance-migrator.d.ts +12 -0
  212. package/{src/core/workspace-guidance-migrator.ts → dist/core/workspace-guidance-migrator.js} +21 -59
  213. package/dist/hooks/after-tool-call-helpers.d.ts +89 -0
  214. package/dist/hooks/after-tool-call-helpers.js +475 -0
  215. package/dist/hooks/after-tool-call-types.d.ts +86 -0
  216. package/dist/hooks/after-tool-call-types.js +13 -0
  217. package/dist/hooks/gate-block-helper.d.ts +44 -0
  218. package/dist/hooks/gate-block-helper.js +209 -0
  219. package/dist/hooks/gate.d.ts +16 -0
  220. package/dist/hooks/gate.js +381 -0
  221. package/dist/hooks/lifecycle.d.ts +5 -0
  222. package/dist/hooks/lifecycle.js +287 -0
  223. package/dist/hooks/llm.d.ts +13 -0
  224. package/{src/hooks/llm.ts → dist/hooks/llm.js} +63 -117
  225. package/dist/hooks/message-sanitize.d.ts +24 -0
  226. package/dist/hooks/message-sanitize.js +77 -0
  227. package/dist/hooks/pain.d.ts +33 -0
  228. package/dist/hooks/pain.js +294 -0
  229. package/dist/hooks/prompt.d.ts +52 -0
  230. package/dist/hooks/prompt.js +930 -0
  231. package/dist/hooks/raw-observation-adapter.d.ts +57 -0
  232. package/dist/hooks/raw-observation-adapter.js +170 -0
  233. package/dist/hooks/raw-observation-types.d.ts +62 -0
  234. package/dist/hooks/raw-observation-types.js +15 -0
  235. package/dist/hooks/subagent.d.ts +9 -0
  236. package/{src/hooks/subagent.ts → dist/hooks/subagent.js} +20 -60
  237. package/dist/hooks/trajectory-collector.d.ts +25 -0
  238. package/dist/hooks/trajectory-collector.js +225 -0
  239. package/dist/hooks/trajectory-evidence.d.ts +11 -0
  240. package/dist/hooks/trajectory-evidence.js +88 -0
  241. package/dist/hooks/triage-adapter.d.ts +58 -0
  242. package/{src/hooks/triage-adapter.ts → dist/hooks/triage-adapter.js} +36 -68
  243. package/dist/hooks/trigger-cooldown-tracker.d.ts +30 -0
  244. package/dist/hooks/trigger-cooldown-tracker.js +55 -0
  245. package/dist/i18n/commands.d.ts +26 -0
  246. package/dist/i18n/commands.js +96 -0
  247. package/dist/index.d.ts +50 -0
  248. package/dist/index.js +829 -0
  249. package/dist/openclaw-sdk.d.ts +293 -0
  250. package/dist/openclaw-sdk.js +4 -0
  251. package/dist/service/central-database.d.ts +138 -0
  252. package/dist/service/central-database.js +731 -0
  253. package/dist/service/central-sync-service.d.ts +8 -0
  254. package/dist/service/central-sync-service.js +71 -0
  255. package/dist/service/correction-observer-service.d.ts +19 -0
  256. package/{src/service/correction-observer-service.ts → dist/service/correction-observer-service.js} +36 -76
  257. package/dist/service/evolution-dedup.d.ts +27 -0
  258. package/{src/service/evolution-dedup.ts → dist/service/evolution-dedup.js} +11 -31
  259. package/{src/service/evolution-queue-migration.ts → dist/service/evolution-queue-migration.d.ts} +15 -62
  260. package/dist/service/evolution-queue-migration.js +53 -0
  261. package/dist/service/evolution-worker.d.ts +103 -0
  262. package/{src/service/evolution-worker.ts → dist/service/evolution-worker.js} +169 -331
  263. package/dist/service/internalization-auto-consumer-service.d.ts +8 -0
  264. package/dist/service/internalization-auto-consumer-service.js +322 -0
  265. package/dist/service/keyword-optimization-service.d.ts +44 -0
  266. package/dist/service/keyword-optimization-service.js +137 -0
  267. package/dist/service/phase3-input-filter.d.ts +73 -0
  268. package/dist/service/phase3-input-filter.js +172 -0
  269. package/dist/service/queue-io.d.ts +30 -0
  270. package/dist/service/queue-io.js +79 -0
  271. package/{src/service/queue-migration.ts → dist/service/queue-migration.d.ts} +6 -45
  272. package/dist/service/queue-migration.js +56 -0
  273. package/dist/service/runtime-summary-service.d.ts +158 -0
  274. package/dist/service/runtime-summary-service.js +636 -0
  275. package/dist/service/subagent-workflow/subagent-error-utils.d.ts +8 -0
  276. package/{src/service/subagent-workflow/subagent-error-utils.ts → dist/service/subagent-workflow/subagent-error-utils.js} +3 -6
  277. package/{src/service/subagent-workflow/types.ts → dist/service/subagent-workflow/types.d.ts} +17 -80
  278. package/dist/service/subagent-workflow/types.js +11 -0
  279. package/dist/service/subagent-workflow/workflow-store.d.ts +30 -0
  280. package/{src/service/subagent-workflow/workflow-store.ts → dist/service/subagent-workflow/workflow-store.js} +43 -108
  281. package/dist/service/trajectory-service.d.ts +2 -0
  282. package/dist/service/trajectory-service.js +16 -0
  283. package/dist/service/workflow-watchdog.d.ts +23 -0
  284. package/dist/service/workflow-watchdog.js +103 -0
  285. package/dist/types/event-types.d.ts +2 -0
  286. package/dist/types/event-types.js +1 -0
  287. package/dist/types/hygiene-types.d.ts +2 -0
  288. package/dist/types/hygiene-types.js +1 -0
  289. package/{src/types/principle-tree-schema.ts → dist/types/principle-tree-schema.d.ts} +2 -25
  290. package/dist/types/principle-tree-schema.js +24 -0
  291. package/dist/types/queue.d.ts +2 -0
  292. package/dist/types/queue.js +1 -0
  293. package/dist/types/runtime-summary.d.ts +1 -0
  294. package/dist/types/runtime-summary.js +1 -0
  295. package/dist/types.d.ts +33 -0
  296. package/dist/types.js +16 -0
  297. package/dist/utils/file-lock.d.ts +68 -0
  298. package/dist/utils/file-lock.js +310 -0
  299. package/dist/utils/hashing.d.ts +9 -0
  300. package/{src/utils/hashing.ts → dist/utils/hashing.js} +4 -6
  301. package/dist/utils/io.d.ts +11 -0
  302. package/dist/utils/io.js +174 -0
  303. package/dist/utils/node-vm-polyfill.d.ts +9 -0
  304. package/{src/utils/node-vm-polyfill.ts → dist/utils/node-vm-polyfill.js} +0 -2
  305. package/dist/utils/retry.d.ts +210 -0
  306. package/dist/utils/retry.js +375 -0
  307. package/dist/utils/session-key.d.ts +10 -0
  308. package/{src/utils/session-key.ts → dist/utils/session-key.js} +5 -4
  309. package/dist/utils/shadow-fingerprint.d.ts +16 -0
  310. package/dist/utils/shadow-fingerprint.js +34 -0
  311. package/dist/utils/workspace-resolver.d.ts +82 -0
  312. package/dist/utils/workspace-resolver.js +288 -0
  313. package/openclaw.plugin.json +1 -1
  314. package/package.json +8 -2
  315. package/templates/workspace/.principles/DECISION_POLICY.json +44 -0
  316. package/templates/workspace/.principles/PRINCIPLES.md +20 -0
  317. package/templates/workspace/.principles/PROFILE.json +54 -0
  318. package/templates/workspace/.principles/PROFILE.schema.json +56 -0
  319. package/templates/workspace/.principles/THINKING_OS.md +65 -0
  320. package/templates/workspace/.principles/THINKING_OS_ARCHIVE.md +7 -0
  321. package/templates/workspace/.principles/THINKING_OS_CANDIDATES.md +9 -0
  322. package/templates/workspace/.principles/models/_INDEX.md +27 -0
  323. package/templates/workspace/.principles/models/first_principles.md +62 -0
  324. package/templates/workspace/.principles/models/marketing_4p.md +52 -0
  325. package/templates/workspace/.principles/models/porter_five.md +63 -0
  326. package/templates/workspace/.principles/models/swot.md +60 -0
  327. package/templates/workspace/.principles/models/user_story_map.md +63 -0
  328. package/templates/workspace/.state/WORKBOARD.json +4 -0
  329. package/.dependency-cruiser.json +0 -19
  330. package/ADVANCED_CONFIG_ZH.md +0 -93
  331. package/AGENT_INSTALL.md +0 -173
  332. package/AGENT_INSTALL_EN.md +0 -173
  333. package/CHANGELOG.md +0 -26
  334. package/INSTALL.md +0 -254
  335. package/SKILL.md +0 -63
  336. package/esbuild.config.js +0 -104
  337. package/src/commands/archive-impl.ts +0 -147
  338. package/src/commands/capabilities.ts +0 -89
  339. package/src/commands/disable-impl.ts +0 -159
  340. package/src/commands/evolution-status.ts +0 -247
  341. package/src/commands/export.ts +0 -59
  342. package/src/commands/focus.ts +0 -523
  343. package/src/commands/principle-rollback.ts +0 -32
  344. package/src/commands/promote-impl.ts +0 -254
  345. package/src/commands/rollback-impl.ts +0 -246
  346. package/src/commands/samples.ts +0 -65
  347. package/src/commands/strategy.ts +0 -21
  348. package/src/config/errors.ts +0 -180
  349. package/src/constants/tools.ts +0 -62
  350. package/src/core/AGENTS.md +0 -34
  351. package/src/core/__tests__/focus-history.test.ts +0 -210
  352. package/src/core/bootstrap-rules.ts +0 -216
  353. package/src/core/code-implementation-storage.ts +0 -213
  354. package/src/core/config-health.ts +0 -72
  355. package/src/core/control-ui-db.ts +0 -454
  356. package/src/core/correction-cue-learner.ts +0 -239
  357. package/src/core/correction-types.ts +0 -16
  358. package/src/core/empathy-keyword-matcher.ts +0 -64
  359. package/src/core/empathy-types.ts +0 -18
  360. package/src/core/event-log.ts +0 -787
  361. package/src/core/evolution-engine.ts +0 -613
  362. package/src/core/evolution-logger.ts +0 -357
  363. package/src/core/evolution-migration.ts +0 -77
  364. package/src/core/evolution-reducer.ts +0 -891
  365. package/src/core/evolution-types.ts +0 -110
  366. package/src/core/external-training-contract.ts +0 -530
  367. package/src/core/file-store.ts +0 -80
  368. package/src/core/focus-history.ts +0 -763
  369. package/src/core/hygiene/tracker.ts +0 -122
  370. package/src/core/local-worker-routing.ts +0 -337
  371. package/src/core/model-deployment-registry.ts +0 -724
  372. package/src/core/model-training-registry.ts +0 -815
  373. package/src/core/observability.ts +0 -242
  374. package/src/core/pain-diagnostic-gate.ts +0 -169
  375. package/src/core/pain.ts +0 -309
  376. package/src/core/pd-config-loader.ts +0 -400
  377. package/src/core/pd-task-reconciler.ts +0 -380
  378. package/src/core/pd-task-service.ts +0 -43
  379. package/src/core/pd-task-store.ts +0 -78
  380. package/src/core/pd-task-types.ts +0 -24
  381. package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +0 -174
  382. package/src/core/principle-compiler/code-validator.ts +0 -93
  383. package/src/core/principle-compiler/compiler.ts +0 -327
  384. package/src/core/principle-compiler/ledger-registrar.ts +0 -116
  385. package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +0 -42
  386. package/src/core/principle-internalization/lifecycle-refresh.ts +0 -11
  387. package/src/core/principle-internalization/principle-lifecycle-service.ts +0 -170
  388. package/src/core/principle-training-state.ts +0 -177
  389. package/src/core/principle-tree-ledger-adapter.ts +0 -145
  390. package/src/core/principle-tree-ledger.ts +0 -725
  391. package/src/core/profile.ts +0 -228
  392. package/src/core/promotion-gate.ts +0 -854
  393. package/src/core/reflection/reflection-context.ts +0 -133
  394. package/src/core/replay-engine.ts +0 -106
  395. package/src/core/rule-host.ts +0 -386
  396. package/src/core/rule-implementation-runtime.ts +0 -145
  397. package/src/core/runtime-v2-prompt-activation-reader.ts +0 -114
  398. package/src/core/schema/migration-runner.ts +0 -207
  399. package/src/core/shadow-observation-registry.ts +0 -508
  400. package/src/core/surface-guard.ts +0 -188
  401. package/src/core/thinking-models.ts +0 -377
  402. package/src/core/thinking-os-parser.ts +0 -165
  403. package/src/core/trajectory-types.ts +0 -247
  404. package/src/core/trajectory.ts +0 -1831
  405. package/src/core/workflow-funnel-loader.ts +0 -195
  406. package/src/core/workspace-dir-validation.ts +0 -52
  407. package/src/hooks/AGENTS.md +0 -31
  408. package/src/hooks/after-tool-call-helpers.ts +0 -601
  409. package/src/hooks/after-tool-call-types.ts +0 -99
  410. package/src/hooks/gate-block-helper.ts +0 -265
  411. package/src/hooks/gate.ts +0 -394
  412. package/src/hooks/lifecycle.ts +0 -334
  413. package/src/hooks/message-sanitize.ts +0 -102
  414. package/src/hooks/pain.ts +0 -358
  415. package/src/hooks/prompt.ts +0 -1102
  416. package/src/hooks/raw-observation-adapter.ts +0 -215
  417. package/src/hooks/raw-observation-types.ts +0 -77
  418. package/src/hooks/trajectory-collector.ts +0 -253
  419. package/src/hooks/trajectory-evidence.ts +0 -97
  420. package/src/hooks/trigger-cooldown-tracker.ts +0 -82
  421. package/src/i18n/commands.ts +0 -101
  422. package/src/index.ts +0 -939
  423. package/src/openclaw-sdk.ts +0 -312
  424. package/src/service/central-database.ts +0 -936
  425. package/src/service/central-sync-service.ts +0 -85
  426. package/src/service/internalization-auto-consumer-service.ts +0 -397
  427. package/src/service/keyword-optimization-service.ts +0 -169
  428. package/src/service/phase3-input-filter.ts +0 -237
  429. package/src/service/queue-io.ts +0 -108
  430. package/src/service/runtime-summary-service.ts +0 -990
  431. package/src/service/trajectory-service.ts +0 -16
  432. package/src/service/workflow-watchdog.ts +0 -125
  433. package/src/types/event-types.ts +0 -39
  434. package/src/types/hygiene-types.ts +0 -8
  435. package/src/types/queue.ts +0 -15
  436. package/src/types/runtime-summary.ts +0 -5
  437. package/src/types.ts +0 -53
  438. package/src/utils/file-lock.ts +0 -394
  439. package/src/utils/io.ts +0 -176
  440. package/src/utils/retry.ts +0 -573
  441. package/src/utils/shadow-fingerprint.ts +0 -42
  442. package/src/utils/workspace-resolver.ts +0 -393
  443. package/tests/README.md +0 -120
  444. package/tests/build-artifacts.test.ts +0 -55
  445. package/tests/commands/evolution-status.test.ts +0 -511
  446. package/tests/commands/export.test.ts +0 -78
  447. package/tests/commands/pain.test.ts +0 -287
  448. package/tests/commands/samples.test.ts +0 -65
  449. package/tests/commands/strategy.test.ts +0 -19
  450. package/tests/commands/thinking-os.test.ts +0 -88
  451. package/tests/core/bootstrap-rules.test.ts +0 -596
  452. package/tests/core/code-implementation-storage.test.ts +0 -300
  453. package/tests/core/code-validator.test.ts +0 -197
  454. package/tests/core/config-service.test.ts +0 -89
  455. package/tests/core/config.test.ts +0 -90
  456. package/tests/core/control-ui-db.test.ts +0 -75
  457. package/tests/core/core-principle-registry-drift.test.ts +0 -39
  458. package/tests/core/core-template-guidance.test.ts +0 -21
  459. package/tests/core/correction-cue-learner.test.ts +0 -345
  460. package/tests/core/detection-service.test.ts +0 -50
  461. package/tests/core/dictionary-service.test.ts +0 -116
  462. package/tests/core/dictionary.test.ts +0 -171
  463. package/tests/core/empathy-keyword-matcher.test.ts +0 -209
  464. package/tests/core/event-log.test.ts +0 -484
  465. package/tests/core/evolution-engine.test.ts +0 -610
  466. package/tests/core/evolution-logger.test.ts +0 -148
  467. package/tests/core/evolution-migration.test.ts +0 -374
  468. package/tests/core/evolution-paths.test.ts +0 -21
  469. package/tests/core/evolution-reducer.compilation-retry.test.ts +0 -189
  470. package/tests/core/evolution-reducer.detector-metadata.test.ts +0 -602
  471. package/tests/core/evolution-types-loop.test.ts +0 -48
  472. package/tests/core/external-training-contract.test.ts +0 -463
  473. package/tests/core/file-store.test.ts +0 -102
  474. package/tests/core/focus-history.test.ts +0 -874
  475. package/tests/core/init-flatten.test.ts +0 -69
  476. package/tests/core/init-refactor.test.ts +0 -87
  477. package/tests/core/init-v1.3.test.ts +0 -46
  478. package/tests/core/init.test.ts +0 -190
  479. package/tests/core/ledger-registrar.test.ts +0 -235
  480. package/tests/core/migration.test.ts +0 -84
  481. package/tests/core/model-deployment-registry.test.ts +0 -858
  482. package/tests/core/model-training-registry.test.ts +0 -908
  483. package/tests/core/observability.test.ts +0 -382
  484. package/tests/core/pain-diagnostic-gate.test.ts +0 -614
  485. package/tests/core/pain-score.property.test.ts +0 -19
  486. package/tests/core/pain.test.ts +0 -132
  487. package/tests/core/path-resolver.test.ts +0 -57
  488. package/tests/core/paths-refactor.test.ts +0 -20
  489. package/tests/core/pd-config-loader.test.ts +0 -407
  490. package/tests/core/pd-task-store.test.ts +0 -126
  491. package/tests/core/phase7-rollout-integration.test.ts +0 -477
  492. package/tests/core/principle-compiler.test.ts +0 -350
  493. package/tests/core/principle-injection.test.ts +0 -223
  494. package/tests/core/principle-internalization/deprecated-readiness.test.ts +0 -193
  495. package/tests/core/principle-internalization/lifecycle-metrics.test.ts +0 -350
  496. package/tests/core/principle-internalization/lifecycle-routing-policy.test.ts +0 -212
  497. package/tests/core/principle-internalization/lineage-source-retired.test.ts +0 -56
  498. package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +0 -189
  499. package/tests/core/principle-training-state.test.ts +0 -939
  500. package/tests/core/principle-tree-ledger-adapter.test.ts +0 -253
  501. package/tests/core/principle-tree-ledger.test.ts +0 -423
  502. package/tests/core/profile.test.ts +0 -56
  503. package/tests/core/promotion-gate.test.ts +0 -561
  504. package/tests/core/queue-purge.test.ts +0 -337
  505. package/tests/core/reflection-context.test.ts +0 -342
  506. package/tests/core/regression-v1-9-1.test.ts +0 -266
  507. package/tests/core/replay-engine.test.ts +0 -165
  508. package/tests/core/risk-calculator.test.ts +0 -168
  509. package/tests/core/rule-host-adversarial-output.test.ts +0 -242
  510. package/tests/core/rule-host-autocorrect-vm.test.ts +0 -163
  511. package/tests/core/rule-host-helpers.test.ts +0 -120
  512. package/tests/core/rule-host-resource-bounds.test.ts +0 -231
  513. package/tests/core/rule-host-sqlite-source.test.ts +0 -720
  514. package/tests/core/rule-host-unhealthy-visibility.test.ts +0 -261
  515. package/tests/core/rule-host-validation.test.ts +0 -315
  516. package/tests/core/rule-implementation-runtime.test.ts +0 -49
  517. package/tests/core/session-tracker.test.ts +0 -191
  518. package/tests/core/surface-guard.test.ts +0 -338
  519. package/tests/core/template-generator.test.ts +0 -101
  520. package/tests/core/trajectory.test.ts +0 -427
  521. package/tests/core/workflow-funnel-loader.test.ts +0 -1028
  522. package/tests/core/workspace-context-factory.test.ts +0 -18
  523. package/tests/core/workspace-context.test.ts +0 -187
  524. package/tests/core/workspace-guidance-migrator.test.ts +0 -248
  525. package/tests/core-anti-growth.test.ts +0 -182
  526. package/tests/evolution-worker-quarantine.test.ts +0 -400
  527. package/tests/evolution-worker-slimming.test.ts +0 -380
  528. package/tests/fixtures/legacy-queue-v1.json +0 -74
  529. package/tests/fixtures/production-compatibility.test.ts +0 -147
  530. package/tests/fixtures/production-mock-generator.ts +0 -282
  531. package/tests/globalSetup.ts +0 -38
  532. package/tests/hook-workspace-nextaction-contract.test.ts +0 -50
  533. package/tests/hooks/confirm-first-removal.test.ts +0 -188
  534. package/tests/hooks/gate-auto-correct-shadow.test.ts +0 -309
  535. package/tests/hooks/gate-auto-correct.test.ts +0 -664
  536. package/tests/hooks/gate-block-helper-profile.test.ts +0 -186
  537. package/tests/hooks/gate-no-path-write-tool.test.ts +0 -171
  538. package/tests/hooks/gate-rule-host-pipeline.test.ts +0 -230
  539. package/tests/hooks/gate-rule-host-real-pipeline.test.ts +0 -190
  540. package/tests/hooks/lifecycle.test.ts +0 -248
  541. package/tests/hooks/message-sanitize.test.ts +0 -244
  542. package/tests/hooks/pain-emission-characterization.test.ts +0 -420
  543. package/tests/hooks/pain.test.ts +0 -795
  544. package/tests/hooks/prompt-characterization.test.ts +0 -476
  545. package/tests/hooks/prompt-diet.test.ts +0 -335
  546. package/tests/hooks/prompt-size-guard.test.ts +0 -319
  547. package/tests/hooks/raw-observation-adapter.test.ts +0 -312
  548. package/tests/hooks/runtime-v2-prompt-activation.test.ts +0 -895
  549. package/tests/hooks/single-gate-pain-admission.test.ts +0 -258
  550. package/tests/hooks/subagent.test.ts +0 -469
  551. package/tests/hooks/trajectory-collector.test.ts +0 -269
  552. package/tests/hooks/trajectory-evidence.test.ts +0 -280
  553. package/tests/hooks/triage-adapter.test.ts +0 -331
  554. package/tests/hygiene-tracker.test.ts +0 -77
  555. package/tests/index.test.ts +0 -142
  556. package/tests/integration/auto-entry-gate.test.ts +0 -256
  557. package/tests/integration/gate-real-io.e2e.test.ts +0 -248
  558. package/tests/integration/m8-legacy-paths.test.ts +0 -63
  559. package/tests/integration/mvp-surface-registry-guard.test.ts +0 -536
  560. package/tests/integration/pain-id-chain-e2e.test.ts +0 -313
  561. package/tests/integration/principle-compiler-e2e.test.ts +0 -403
  562. package/tests/integration/principle-lifecycle.e2e.test.ts +0 -198
  563. package/tests/integration/runtime-v2-pain-guard.test.ts +0 -125
  564. package/tests/integration/trajectory-lifecycle.e2e.test.ts +0 -523
  565. package/tests/internalization-auto-consumer-gate.test.ts +0 -158
  566. package/tests/internalization-auto-consumer-service.test.ts +0 -219
  567. package/tests/plugin-config-resolution-cutover.test.ts +0 -359
  568. package/tests/queue/async-lock.test.ts +0 -200
  569. package/tests/runtime-v2-discovery-guard.test.ts +0 -153
  570. package/tests/scripts/validate-live-path.test.ts +0 -286
  571. package/tests/service/central-database.test.ts +0 -457
  572. package/tests/service/correction-observer-service.test.ts +0 -505
  573. package/tests/service/evolution-worker.compilation-backfill.test.ts +0 -203
  574. package/tests/service/evolution-worker.correction-observer.test.ts +0 -50
  575. package/tests/service/evolution-worker.queue.test.ts +0 -296
  576. package/tests/service/evolution-worker.timeout.test.ts +0 -233
  577. package/tests/service/keyword-optimization-service.test.ts +0 -121
  578. package/tests/service/phase3-input-filter.test.ts +0 -289
  579. package/tests/service/queue-io.test.ts +0 -168
  580. package/tests/service/queue-migration.test.ts +0 -147
  581. package/tests/service/runtime-summary-service.test.ts +0 -1100
  582. package/tests/service/workflow-watchdog.test.ts +0 -281
  583. package/tests/task-compliance.test.ts +0 -166
  584. package/tests/test-utils.ts +0 -48
  585. package/tests/utils/file-lock.test.ts +0 -409
  586. package/tests/utils/hashing.test.ts +0 -32
  587. package/tests/utils/hook-workspace-resolver.test.ts +0 -524
  588. package/tests/utils/io.test.ts +0 -39
  589. package/tests/utils/retry.test.ts +0 -327
  590. package/tests/utils/session-key.test.ts +0 -52
  591. package/tsconfig.json +0 -16
  592. package/vitest.config.ts +0 -61
  593. package/vitest.unit.config.ts +0 -12
@@ -1,254 +0,0 @@
1
- /**
2
- * Promote Implementation Command — CLI `/pd-promote-impl`
3
- * ========================================================
4
- *
5
- * PURPOSE: Manually promote a candidate implementation to active status
6
- * after replay evaluation review.
7
- *
8
- * FLOW:
9
- * 1. List candidates with replay reports
10
- * 2. Show replay report summary for selected candidate
11
- * 3. Ask for confirmation
12
- * 4. On confirm: transition candidate->active, demote previous active->disabled
13
- *
14
- * VALIDATION:
15
- * - Candidate must have at least one replay report with 'pass' decision
16
- * - Only candidate -> active is valid for promotion
17
- * - NOTE (PRI-230): The legacy replay generation path has been retired.
18
- * This command is temporarily unavailable for implementations without
19
- * pre-existing replay reports until a Runtime V2 replay entry is wired.
20
- */
21
-
22
- import * as fs from 'fs';
23
- import * as path from 'path';
24
- import { ReplayEngine, formatReplayReport } from '../core/replay-engine.js';
25
- import { refreshPrincipleLifecycle } from '../core/principle-internalization/lifecycle-refresh.js';
26
- import {
27
- findActiveImplementation,
28
- loadLedger,
29
- transitionImplementationState,
30
- updateImplementation,
31
- } from '../core/principle-tree-ledger.js';
32
- import { WorkspaceContext } from '../core/workspace-context.js';
33
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
34
- import { normalizeCommandArgs } from '../utils/io.js';
35
- import { resolvePluginCommandWorkspaceDir } from '../utils/workspace-resolver.js';
36
- import type { Implementation, ImplementationLifecycleState } from '../types/principle-tree-schema.js';
37
- import { withLock } from '../utils/file-lock.js';
38
- import { atomicWriteFileSync } from '../utils/io.js';
39
-
40
- function getAllImplementations(stateDir: string): Implementation[] {
41
- const ledger = loadLedger(stateDir);
42
- return Object.values(ledger.tree.implementations);
43
- }
44
-
45
- /**
46
- * Type predicate: true if impl has lifecycleState of 'candidate' or 'disabled'.
47
- * The ledger adds lifecycleState at runtime beyond what's in the manifest interface.
48
- */
49
- function isCandidateOrDisabled(
50
- impl: Implementation
51
- ): impl is Implementation & { lifecycleState: ImplementationLifecycleState } {
52
- return impl.lifecycleState === 'candidate' || impl.lifecycleState === 'disabled';
53
- }
54
-
55
- function _handleListCandidates(
56
- stateDir: string,
57
- isZh: boolean,
58
- ): PluginCommandResult {
59
- const engine = new ReplayEngine('', stateDir);
60
- const allImpls = getAllImplementations(stateDir);
61
- const candidates = allImpls.filter(isCandidateOrDisabled);
62
-
63
- if (candidates.length === 0) {
64
- return {
65
- text: isZh
66
- ? '\nℹ️ 未找到候选实现。\n\n用法: /pd-promote-impl list'
67
- : '\nℹ️ No candidate implementations found.\n\nUsage: /pd-promote-impl list',
68
- };
69
- }
70
-
71
- let output = isZh ? '\n📋 候选实现列表\n' : '\n📋 Candidate Implementations\n';
72
- output += `${'='.repeat(50)}\n`;
73
-
74
- for (const impl of candidates) {
75
- const hasPass = engine.hasPassingReport(impl.id);
76
- const passBadge = hasPass
77
- ? isZh ? '✅ 有通过报告' : '✅ Has pass report'
78
- : isZh ? '❌ 无通过报告' : '❌ No pass report';
79
- output += ` ${impl.id}\n`;
80
- output += ` Rule: ${impl.ruleId} | Version: ${impl.version}\n`;
81
- output += ` Replay: ${passBadge}\n\n`;
82
- }
83
-
84
- return { text: output };
85
- }
86
-
87
- function _handleShowReport(
88
- stateDir: string,
89
- implId: string,
90
- isZh: boolean,
91
- ): PluginCommandResult {
92
- const engine = new ReplayEngine('', stateDir);
93
- const report = engine.getLatestReport(implId);
94
-
95
- if (!report) {
96
- return {
97
- text: isZh
98
- ? `❌ 实现 ${implId} 没有回放报告。`
99
- : `❌ No replay report found for implementation ${implId}.`,
100
- };
101
- }
102
-
103
- return { text: formatReplayReport(report) };
104
- }
105
-
106
- interface PromoteImplOptions {
107
- workspaceDir: string;
108
- stateDir: string;
109
- implId: string;
110
- isZh: boolean;
111
- }
112
-
113
- function _handlePromoteImpl(options: PromoteImplOptions): PluginCommandResult {
114
- const { workspaceDir, stateDir, implId, isZh } = options;
115
- const engine = new ReplayEngine('', stateDir);
116
- const allImpls = getAllImplementations(stateDir);
117
- const candidate = allImpls.find((i) => i.id === implId);
118
-
119
- if (!candidate) {
120
- return {
121
- text: isZh
122
- ? `❌ 未找到实现: ${implId}`
123
- : `❌ Implementation not found: ${implId}`,
124
- };
125
- }
126
-
127
- const currentState = candidate.lifecycleState || 'candidate';
128
-
129
- if (currentState !== 'candidate' && currentState !== 'disabled') {
130
- return {
131
- text: isZh
132
- ? `❌ 只能晋升 candidate 或 disabled 状态的实现。当前: ${currentState}`
133
- : `❌ Can only promote 'candidate' or 'disabled' implementations. Current: ${currentState}`,
134
- };
135
- }
136
-
137
- if (!engine.hasPassingReport(implId)) {
138
- return {
139
- text: isZh
140
- ? `❌ 实现 ${implId} 没有通过的回放报告,晋升被拒绝。\n\nLegacy replay 生成路径已在 PRI-230 退役,当前无可用的 replay 证据生成入口。该命令暂不可用于没有既有 replay 报告的实现。`
141
- : `❌ Implementation ${implId} has no passing replay report. Promotion rejected.\n\nThe legacy replay generation path was retired in PRI-230; no replay evidence generation entry is currently available. This command is temporarily unavailable for implementations without pre-existing replay reports.`,
142
- };
143
- }
144
-
145
- const report = engine.getLatestReport(implId);
146
- let output = '';
147
- if (report) {
148
- output = `${formatReplayReport(report)}\n`;
149
- }
150
-
151
- if (currentState === 'disabled') {
152
- transitionImplementationState(stateDir, implId, 'active');
153
- updateImplementation(stateDir, implId, {
154
- disabledAt: undefined,
155
- disabledBy: undefined,
156
- disabledReason: undefined,
157
- });
158
- try {
159
- refreshPrincipleLifecycle(workspaceDir, stateDir);
160
- } catch (err) {
161
- console.warn('[promote-impl] Lifecycle refresh failed (re-enable):', err instanceof Error ? err.stack : err);
162
- }
163
-
164
- output += isZh
165
- ? `\n✅ 实现已重新启用: ${implId}\n 状态: disabled -> active`
166
- : `\n✅ Implementation re-enabled: ${implId}\n State: disabled -> active`;
167
-
168
- return { text: output };
169
- }
170
-
171
- const activeForRule = findActiveImplementation(stateDir, candidate.ruleId);
172
-
173
- if (activeForRule) {
174
- updateImplementation(stateDir, implId, {
175
- previousActive: activeForRule.id,
176
- });
177
- }
178
-
179
- transitionImplementationState(stateDir, implId, 'active');
180
-
181
- if (activeForRule) {
182
- transitionImplementationState(stateDir, activeForRule.id, 'disabled');
183
-
184
- output += isZh
185
- ? `\n上一个活跃实现已禁用: ${activeForRule.id}\n 状态: active -> disabled`
186
- : `\nPrevious active implementation disabled: ${activeForRule.id}\n State: active -> disabled`;
187
- }
188
-
189
- const eventsDir = path.join(
190
- stateDir,
191
- 'principles',
192
- 'implementations',
193
- implId,
194
- 'events',
195
- );
196
- if (!fs.existsSync(eventsDir)) {
197
- fs.mkdirSync(eventsDir, { recursive: true });
198
- }
199
- const eventPath = path.join(eventsDir, 'promotion.json');
200
- const promotionEvent = {
201
- eventType: 'promotion',
202
- implementationId: implId,
203
- ruleId: candidate.ruleId,
204
- fromState: 'candidate',
205
- toState: 'active',
206
- previousActive: activeForRule?.id ?? null,
207
- replayReportId: report
208
- ? report.generatedAt.replace(/[:.]/g, '-')
209
- : null,
210
- promotedAt: new Date().toISOString(),
211
- };
212
- withLock(eventPath, () => {
213
- atomicWriteFileSync(eventPath, JSON.stringify(promotionEvent, null, 2));
214
- });
215
- try {
216
- refreshPrincipleLifecycle(workspaceDir, stateDir);
217
- } catch (err) {
218
- console.warn('[promote-impl] Lifecycle refresh failed (promotion):', err instanceof Error ? err.stack : err);
219
- }
220
-
221
- output += isZh
222
- ? `\n\n✅ 实现已晋升: ${implId}\n 状态: candidate -> active`
223
- : `\n\n✅ Implementation promoted: ${implId}\n State: candidate -> active`;
224
-
225
- return { text: output };
226
- }
227
-
228
- export function handlePromoteImplCommand(ctx: PluginCommandContext): PluginCommandResult {
229
- const workspaceDir = resolvePluginCommandWorkspaceDir(ctx, 'promote-impl');
230
- const {stateDir} = WorkspaceContext.fromHookContext({ ...ctx, workspaceDir });
231
- const lang = (ctx.config?.language as string) || 'en';
232
- const isZh = lang === 'zh';
233
-
234
- const args = normalizeCommandArgs(ctx.args).trim().split(/\s+/);
235
- const subcommand = args[0] || '';
236
- const implId = args[1] || '';
237
-
238
- if (subcommand === 'list' || subcommand === '') {
239
- return _handleListCandidates(stateDir, isZh);
240
- }
241
-
242
- if (subcommand === 'show') {
243
- if (!implId) {
244
- return {
245
- text: isZh
246
- ? '请指定要查看的实现ID: /pd-promote-impl show <implId>'
247
- : 'Please specify an implementation ID: /pd-promote-impl show <implId>',
248
- };
249
- }
250
- return _handleShowReport(stateDir, implId, isZh);
251
- }
252
-
253
- return _handlePromoteImpl({ workspaceDir, stateDir, implId: subcommand, isZh });
254
- }
@@ -1,246 +0,0 @@
1
- /**
2
- * Rollback Implementation Command — CLI `/pd-rollback-impl`
3
- * ==========================================================
4
- *
5
- * PURPOSE: Revert the current active implementation and restore the previous one.
6
- *
7
- * FLOW:
8
- * 1. List active implementations
9
- * 2. On confirm: current -> disabled, previous -> active
10
- *
11
- * SAFETY:
12
- * - If no previous active: current -> disabled (degrades to hard-boundary gates)
13
- * - Rollback records persisted with full audit trail
14
- */
15
-
16
- import * as fs from 'fs';
17
- import * as path from 'path';
18
- import { withLock } from '../utils/file-lock.js';
19
- import { atomicWriteFileSync } from '../utils/io.js';
20
- import { WorkspaceContext } from '../core/workspace-context.js';
21
- import { refreshPrincipleLifecycle } from '../core/principle-internalization/lifecycle-refresh.js';
22
- import {
23
- loadLedger,
24
- transitionImplementationState,
25
- } from '../core/principle-tree-ledger.js';
26
- import type { Implementation } from '../types/principle-tree-schema.js';
27
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
28
- import { normalizeCommandArgs } from '../utils/io.js';
29
- import { resolvePluginCommandWorkspaceDir } from '../utils/workspace-resolver.js';
30
-
31
- /**
32
- * Get all implementations from the ledger.
33
- */
34
- function getAllImplementations(stateDir: string): Implementation[] {
35
- const ledger = loadLedger(stateDir);
36
- return Object.values(ledger.tree.implementations);
37
- }
38
-
39
- /**
40
- * Handle the /pd-rollback-impl command.
41
- *
42
- * Usage:
43
- * /pd-rollback-impl list - List active implementations
44
- * /pd-rollback-impl <implId> - Rollback current active
45
- * /pd-rollback-impl <implId> --reason "<reason>" - Rollback with reason
46
- */
47
-
48
- export function handleRollbackImplCommand(ctx: PluginCommandContext): PluginCommandResult {
49
- const workspaceDir = resolvePluginCommandWorkspaceDir(ctx, 'rollback-impl');
50
- const {stateDir} = WorkspaceContext.fromHookContext({ ...ctx, workspaceDir });
51
- const lang = (ctx.config?.language as string) || 'en';
52
- const isZh = lang === 'zh';
53
-
54
- const args = normalizeCommandArgs(ctx.args).trim();
55
-
56
- // Parse args
57
- const subcommand = args.split(/\s+/)[0] || '';
58
- const implId = subcommand === 'list' ? '' : subcommand;
59
- const reasonMatch = (/--reason\s+"([^"]+)"/.exec(args)) || (/--reason\s+(\S+)/.exec(args));
60
- const reason = reasonMatch ? reasonMatch[1] : null;
61
-
62
- // List active
63
- if (subcommand === 'list' || subcommand === '') {
64
-
65
-
66
- return _handleListActiveRollback(stateDir, isZh);
67
- }
68
-
69
-
70
-
71
- return _handleRollbackImpl(workspaceDir, stateDir, implId, reason, isZh, ctx.sessionId);
72
- }
73
-
74
- function _handleListActiveRollback(
75
- stateDir: string,
76
- isZh: boolean
77
- ): PluginCommandResult {
78
- const allImpls = getAllImplementations(stateDir);
79
- const activeImpls = allImpls.filter(
80
- (impl) => impl.lifecycleState === 'active'
81
- );
82
-
83
- if (activeImpls.length === 0) {
84
- return {
85
- text: isZh
86
- ? '\n\u2139\ufe0f \u6ca1\u6709\u6d3b\u8dc3\u5b9e\u73b0\u53ef\u56de\u6eda\u3002'
87
- : '\n\u2139\ufe0f No active implementations to rollback.',
88
- };
89
- }
90
-
91
- let output = isZh ? '\n\ud83d\udccb \u53ef\u56de\u6eda\u6d3b\u8dc3\u5b9e\u73b0\n' : '\n\ud83d\udccb Active Implementations Available for Rollback\n';
92
- output += `${'='.repeat(50)}\n`;
93
-
94
- for (const impl of activeImpls) {
95
- const hasPrevious = impl.previousActive ? '\u2705' : '\u26a0\ufe0f \u65e0\u524d\u4e00\u4e2a';
96
- output += ` ${impl.id}\n`;
97
- output += ` Rule: ${impl.ruleId} | Version: ${impl.version}\n`;
98
- output += ` Has previous: ${hasPrevious}\n`;
99
- if (impl.previousActive) {
100
- output += ` Previous: ${impl.previousActive}\n`;
101
- }
102
- output += '\n';
103
- }
104
-
105
- output += isZh
106
- ? '\u7528\u6cd5: /pd-rollback-impl <implId> --reason "\u539f\u56e0"'
107
- : 'Usage: /pd-rollback-impl <implId> --reason "reason"';
108
-
109
- return { text: output };
110
- }
111
-
112
-
113
-
114
- function _handleRollbackImpl(
115
- workspaceDir: string,
116
- stateDir: string,
117
- implId: string,
118
- reason: string | null,
119
- isZh: boolean,
120
- sessionId?: string,
121
- ): PluginCommandResult {
122
- const allImpls = getAllImplementations(stateDir);
123
- const currentActive = allImpls.find((i) => i.id === implId);
124
-
125
- if (!currentActive) {
126
- return {
127
- text: isZh
128
- ? `\u274c \u672a\u627e\u5230\u5b9e\u73b0: ${implId}`
129
- : `\u274c Implementation not found: ${implId}`,
130
- };
131
- }
132
-
133
- const currentState = currentActive.lifecycleState;
134
- if (currentState !== 'active') {
135
- return {
136
- text: isZh
137
- ? `\u274c \u5b9e\u73b0 ${implId} \u5f53\u524d\u72b6\u6001: ${currentState}\n\u53ea\u80fd\u56de\u6eda\u6d3b\u8dc3\u5b9e\u73b0\u3002`
138
- : `\u274c Implementation ${implId} is in state: ${currentState}\nCan only rollback active implementations.`,
139
- };
140
- }
141
-
142
- const previousActiveId = currentActive.previousActive;
143
- const reasonText = reason || (isZh ? '\u7528\u6237\u624b\u52a8\u56de\u6eda' : 'User manual rollback');
144
-
145
- // Step 1: Current active -> disabled
146
- transitionImplementationState(stateDir, implId, 'disabled');
147
-
148
-
149
-
150
- let restoredMessage: string;
151
-
152
- if (previousActiveId && allImpls.some((i) => i.id === previousActiveId)) {
153
- // Step 2: Restore previous active -> active
154
- transitionImplementationState(stateDir, previousActiveId, 'active');
155
-
156
- restoredMessage = isZh
157
- ? `\n \u5df2\u6062\u590d\u524d\u4e00\u4e2a\u6d3b\u8dc3\u5b9e\u73b0: ${previousActiveId}\n \u72b6\u6001: disabled -> active`
158
- : `\n Restored previous active implementation: ${previousActiveId}\n State: disabled -> active`;
159
- } else {
160
- // No previous active — degrade to hard-boundary gates (per Phase 12 D-08)
161
- restoredMessage = isZh
162
- ? `\n \u26a0\ufe0f \u6ca1\u6709\u524d\u4e00\u4e2a\u6d3b\u8dc3\u5b9e\u73b0\uff0c\u8be5\u89c4\u5219\u6ca1\u6709\u6d3b\u8dc3\u5b9e\u73b0\u3002`
163
- + `\n GFI\u3001Progressive Gate\u7b49\u786c\u56fa\u62b1\u95e8\u4ecd\u7136\u6b63\u5e38\u8fd0\u884c\u3002`
164
- : `\n \u26a0\ufe0f No previous active implementation. Rule has no active code implementation.`
165
- + ` Existing hard-boundary gates (GFI, Progressive Gate) continue functioning normally.`;
166
- }
167
-
168
- // Store rollback record
169
- const rollbackDir = path.join(
170
- stateDir,
171
- 'principles',
172
- 'implementations',
173
- implId,
174
- 'rollbacks'
175
- );
176
- if (!fs.existsSync(rollbackDir)) {
177
- fs.mkdirSync(rollbackDir, { recursive: true });
178
- }
179
-
180
- const rollbackRecord = {
181
- rolledBackBy: sessionId || 'manual',
182
- rolledBackAt: new Date().toISOString(),
183
- reason: reasonText,
184
- previousImplementationId: previousActiveId || null,
185
- restoredImplementationId: previousActiveId && allImpls.some((i) => i.id === previousActiveId)
186
- ? previousActiveId
187
- : null,
188
- rolledBackImplId: implId,
189
- };
190
-
191
- const rollbackTimestamp = new Date().toISOString().replace(/[:.]/g, '-');
192
- const rollbackPath = path.join(rollbackDir, `${rollbackTimestamp}.json`);
193
- withLock(rollbackPath, () => {
194
- atomicWriteFileSync(rollbackPath, JSON.stringify(rollbackRecord, null, 2));
195
- });
196
- try {
197
- refreshPrincipleLifecycle(workspaceDir, stateDir);
198
- } catch (err) {
199
- console.warn('[rollback-impl] Lifecycle refresh failed:', err instanceof Error ? err.stack : err);
200
- }
201
-
202
- let output = isZh
203
- ? `\n\u2705 \u56de\u6eda\u5b8c\u6210: ${implId}\n \u72b6\u6001: active -> disabled\n \u539f\u56e0: ${reasonText}`
204
- : `\n\u2705 Rollback complete: ${implId}\n State: active -> disabled\n Reason: ${reasonText}`;
205
-
206
- output += restoredMessage;
207
-
208
- return { text: output };
209
- }
210
-
211
- /**
212
- * Handle natural language rollback request.
213
- * Detects phrases like "回滚这个规则实现", "rollback this implementation".
214
- */
215
- export function handleNaturalLanguageRollbackImpl(
216
- workspaceDir: string,
217
- sessionId: string | undefined,
218
- reason: string
219
- ): { success: boolean; message: string } {
220
- const isZh = (/[\u4e00-\u9fff]/.exec(reason)) || false;
221
- const {stateDir} = WorkspaceContext.fromHookContext({ workspaceDir });
222
-
223
- if (!sessionId) {
224
- return {
225
- success: false,
226
- message: isZh ? '\u65e0\u6cd5\u8bc6\u522b\u5f53\u524d\u4f1a\u8bdd' : 'Session not found',
227
- };
228
- }
229
-
230
- // Natural language entry: get last active implementation
231
- const allImpls = getAllImplementations(stateDir);
232
- const lastActive = allImpls.find((i) => i.lifecycleState === 'active');
233
-
234
- if (!lastActive) {
235
- return {
236
- success: false,
237
- message: isZh ? '\u5f53\u524d\u6ca1\u6709\u6d3b\u8dc3\u5b9e\u73b0' : 'No active implementations',
238
- };
239
- }
240
-
241
- // Would be called via the hook — return the impl ID for the hook to route
242
- return {
243
- success: true,
244
- message: `${lastActive.id}|${reason}`,
245
- };
246
- }
@@ -1,65 +0,0 @@
1
- import { WorkspaceContext } from '../core/workspace-context.js';
2
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
3
- import { normalizeCommandArgs } from '../utils/io.js';
4
- import { resolvePluginCommandWorkspaceDir } from '../utils/workspace-resolver.js';
5
-
6
- function isZh(ctx: PluginCommandContext): boolean {
7
- return String(ctx.config?.language || 'en').startsWith('zh');
8
- }
9
-
10
- export function handleSamplesCommand(ctx: PluginCommandContext): PluginCommandResult {
11
- const workspaceDir = resolvePluginCommandWorkspaceDir(ctx, 'samples');
12
- const zh = isZh(ctx);
13
- const args = normalizeCommandArgs(ctx.args).trim();
14
- const wctx = WorkspaceContext.fromHookContext({ workspaceDir, ...ctx.config });
15
-
16
- if (args.startsWith('review ')) {
17
- const [, decision = '', sampleId = '', ...noteParts] = args.split(/\s+/);
18
- if (decision !== 'approve' && decision !== 'reject') {
19
- return {
20
- text: zh
21
- ? '无效的审核动作。请使用 `review approve <sample-id> [note]` 或 `review reject <sample-id> [note]`。'
22
- : 'Invalid review action. Use `review approve <sample-id> [note]` or `review reject <sample-id> [note]`.',
23
- };
24
- }
25
- if (!sampleId) {
26
- return {
27
- text: zh
28
- ? '缺少 sample-id。'
29
- : 'Missing sample-id.',
30
- };
31
- }
32
- const normalizedDecision = decision === 'approve' ? 'approved' : 'rejected';
33
- const note = noteParts.join(' ').trim();
34
-
35
-
36
- let record;
37
- try {
38
- record = wctx.trajectory.reviewCorrectionSample(sampleId, normalizedDecision, note);
39
- /* eslint-disable @typescript-eslint/no-unused-vars -- Reason: error handling only - returning failure response */
40
- } catch (error) {
41
- return {
42
- text: zh
43
- ? `审核样本失败:${sampleId}`
44
- : `Failed to review sample: ${sampleId}`,
45
- };
46
- }
47
- return {
48
- text: zh
49
- ? `样本 ${record.sampleId} 已标记为 ${record.reviewStatus}。`
50
- : `Sample ${record.sampleId} marked as ${record.reviewStatus}.`,
51
- };
52
- }
53
-
54
- const samples = wctx.trajectory.listCorrectionSamples('pending');
55
- if (samples.length === 0) {
56
- return { text: zh ? '当前没有待审核纠错样本。' : 'No pending correction samples.' };
57
- }
58
-
59
- const lines = samples.map((sample) => `- ${sample.sampleId} | session=${sample.sessionId} | score=${sample.qualityScore}`);
60
- return {
61
- text: zh
62
- ? `待审核纠错样本:\n${lines.join('\n')}`
63
- : `Pending correction samples:\n${lines.join('\n')}`,
64
- };
65
- }
@@ -1,21 +0,0 @@
1
- import type { PluginCommandContext, PluginCommandResult } from '../openclaw-sdk.js';
2
- import { resolvePluginCommandWorkspaceDir } from '../utils/workspace-resolver.js';
3
- import { WorkspaceContext } from '../core/workspace-context.js';
4
-
5
- export function handleInitStrategy(ctx: PluginCommandContext): PluginCommandResult {
6
- const workspaceDir = resolvePluginCommandWorkspaceDir(ctx, 'strategy');
7
- const wctx = WorkspaceContext.fromHookContext({ workspaceDir, ...ctx.config });
8
-
9
- const okrDir = wctx.resolve('OKR_DIR').replace(workspaceDir, '').replace(/^\/+/, '');
10
- const focusPath = wctx.resolve('CURRENT_FOCUS').replace(workspaceDir, '').replace(/^\/+/, '');
11
- const userContextPath = wctx.resolve('USER_CONTEXT').replace(workspaceDir, '').replace(/^\/+/, '');
12
-
13
- return {
14
- text:
15
- `🎯 **Strategy Initialization**\n\n` +
16
- `The Agent will now conduct a deep interview to establish your project's vision and strategic OKRs.\n\n` +
17
- `**Instructions for Agent:** Read \`${okrDir}/\` for existing context. ` +
18
- `Generate \`${focusPath}\` with the top 1-3 strategic focus areas based on the user interview. ` +
19
- `Then update \`${userContextPath}\` with key user preferences discovered.`,
20
- };
21
- }