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
@@ -0,0 +1,288 @@
1
+ /**
2
+ * Workspace Directory Resolution Utilities
3
+ *
4
+ * Shared helpers for resolving workspace directories across commands and hooks.
5
+ *
6
+ * Hook resolution priority (PRI-259): PD canonical config → OpenClaw fallback.
7
+ * PD canonical sources: PD_WORKSPACE_DIR env → OPENCLAW_WORKSPACE env →
8
+ * principles-disciple.json → ~/.openclaw/workspace default.
9
+ * OpenClaw fallback: ctx.workspaceDir → api.runtime.agent.resolveAgentWorkspaceDir().
10
+ */
11
+ import { validateWorkspaceDir } from '../core/workspace-dir-validation.js';
12
+ import { resolveWorkspaceDirFromApi } from '../core/path-resolver.js';
13
+ import * as path from 'path';
14
+ import * as os from 'os';
15
+ import * as fs from 'fs';
16
+ /**
17
+ * Resolve workspace directory for command execution.
18
+ *
19
+ * Chain: ctx.workspaceDir → resolveWorkspaceDirFromApi (official OpenClaw API + env vars)
20
+ *
21
+ * CRITICAL: Throws if workspaceDir cannot be resolved. Silent failures are dangerous
22
+ * because commands might operate on the wrong directory.
23
+ */
24
+ export function resolveCommandWorkspaceDir(api, ctx) {
25
+ // 1. Direct from command context (most reliable — set by OpenClaw for current session)
26
+ if (ctx.workspaceDir) {
27
+ const issue = validateWorkspaceDir(ctx.workspaceDir);
28
+ if (!issue)
29
+ return ctx.workspaceDir;
30
+ // Validation failed — fail immediately, do not silently fall back
31
+ const errorMsg = `[PD:Command] ctx.workspaceDir="${ctx.workspaceDir}" is invalid: ${issue}`;
32
+ api.logger.error(errorMsg);
33
+ throw new Error(errorMsg);
34
+ }
35
+ // 2. Official OpenClaw API → env vars → config file
36
+ const resolved = resolveWorkspaceDirFromApi(api);
37
+ if (resolved)
38
+ return resolved;
39
+ // CRITICAL FAILURE: Cannot determine workspace directory
40
+ const errorMsg = `[PD:Command] CRITICAL: Cannot resolve workspace directory. ` +
41
+ `ctx.workspaceDir="${ctx.workspaceDir ?? ''}" is invalid, and all fallbacks failed. ` +
42
+ `Commands will NOT execute to prevent data corruption.`;
43
+ api.logger.error(errorMsg);
44
+ throw new Error(errorMsg);
45
+ }
46
+ /**
47
+ * Resolve workspace directory for plugin command execution.
48
+ *
49
+ * Chain: ctx.workspaceDir (canonical) → ctx.config.workspaceDir (dispatcher fallback)
50
+ *
51
+ * CRITICAL: Throws if workspaceDir cannot be resolved. Commands must NEVER silently
52
+ * fall back to process.cwd() as this masks configuration errors and can corrupt
53
+ * the wrong workspace.
54
+ *
55
+ * @param ctx - Plugin command context (has workspaceDir + config properties)
56
+ * @param source - Source label for error messages (e.g. 'evolution-status', 'pain')
57
+ */
58
+ export function resolvePluginCommandWorkspaceDir(ctx, source) {
59
+ // 1. Canonical workspaceDir field (set by OpenClaw command dispatcher)
60
+ if (ctx.workspaceDir) {
61
+ const issue = validateWorkspaceDir(ctx.workspaceDir);
62
+ if (!issue)
63
+ return ctx.workspaceDir;
64
+ throw new Error(`[PD:Command:${source}] ctx.workspaceDir="${ctx.workspaceDir}" is invalid: ${issue}`);
65
+ }
66
+ // 2. Dispatcher may also put workspaceDir in config (legacy/alternative path)
67
+ const configWorkspaceDir = ctx.config?.workspaceDir;
68
+ if (configWorkspaceDir) {
69
+ const issue = validateWorkspaceDir(configWorkspaceDir);
70
+ if (!issue)
71
+ return configWorkspaceDir;
72
+ throw new Error(`[PD:Command:${source}] ctx.config.workspaceDir="${configWorkspaceDir}" is invalid: ${issue}`);
73
+ }
74
+ // CRITICAL FAILURE: No workspace directory available
75
+ throw new Error(`[PD:Command:${source}] CRITICAL: workspaceDir is not set in ctx.workspaceDir or ctx.config.workspaceDir. ` +
76
+ `Commands cannot execute without a valid workspace. Set OPENCLAW_WORKSPACE_DIR env var or ensure the workspace is properly initialized.`);
77
+ }
78
+ const PD_CONFIG_FILENAME = 'principles-disciple.json';
79
+ function loadWorkspaceFromPdConfigFile() {
80
+ const candidates = [
81
+ path.join(os.homedir(), '.openclaw', PD_CONFIG_FILENAME),
82
+ path.join(os.homedir(), '.principles', PD_CONFIG_FILENAME),
83
+ path.join(process.cwd(), PD_CONFIG_FILENAME),
84
+ ];
85
+ for (const configPath of candidates) {
86
+ if (!fs.existsSync(configPath))
87
+ continue;
88
+ try {
89
+ const raw = fs.readFileSync(configPath, 'utf8');
90
+ const parsed = JSON.parse(raw);
91
+ if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
92
+ if (Object.hasOwn(parsed, 'workspace')) {
93
+ const workspaceValue = parsed['workspace'];
94
+ if (typeof workspaceValue === 'string' && workspaceValue.trim()) {
95
+ return workspaceValue.trim();
96
+ }
97
+ }
98
+ }
99
+ }
100
+ catch {
101
+ continue;
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ export function resolveCanonicalWorkspaceDir() {
107
+ const pdEnv = process.env.PD_WORKSPACE_DIR;
108
+ if (pdEnv && pdEnv.trim()) {
109
+ const dir = path.resolve(pdEnv.trim());
110
+ if (!validateWorkspaceDir(dir)) {
111
+ return { workspaceDir: dir, source: 'pd_env' };
112
+ }
113
+ }
114
+ const ocEnv = process.env.OPENCLAW_WORKSPACE;
115
+ if (ocEnv && ocEnv.trim()) {
116
+ const dir = path.resolve(ocEnv.trim());
117
+ if (!validateWorkspaceDir(dir)) {
118
+ return { workspaceDir: dir, source: 'openclaw_env' };
119
+ }
120
+ }
121
+ const configWorkspace = loadWorkspaceFromPdConfigFile();
122
+ if (configWorkspace) {
123
+ const dir = path.resolve(configWorkspace);
124
+ if (!validateWorkspaceDir(dir)) {
125
+ return { workspaceDir: dir, source: 'pd_config' };
126
+ }
127
+ }
128
+ const defaultDir = path.join(os.homedir(), '.openclaw', 'workspace');
129
+ if (!validateWorkspaceDir(defaultDir)) {
130
+ return { workspaceDir: defaultDir, source: 'pd_default' };
131
+ }
132
+ return null;
133
+ }
134
+ /**
135
+ * Resolve only PD explicit sources (env vars + config file), excluding pd_default.
136
+ * Used by hook resolution to ensure ctx.workspaceDir takes priority over the
137
+ * hardcoded default fallback.
138
+ */
139
+ function resolveExplicitPdSources() {
140
+ const pdEnv = process.env.PD_WORKSPACE_DIR;
141
+ if (pdEnv && pdEnv.trim()) {
142
+ const dir = path.resolve(pdEnv.trim());
143
+ if (!validateWorkspaceDir(dir)) {
144
+ return { workspaceDir: dir, source: 'pd_env' };
145
+ }
146
+ }
147
+ const ocEnv = process.env.OPENCLAW_WORKSPACE;
148
+ if (ocEnv && ocEnv.trim()) {
149
+ const dir = path.resolve(ocEnv.trim());
150
+ if (!validateWorkspaceDir(dir)) {
151
+ return { workspaceDir: dir, source: 'openclaw_env' };
152
+ }
153
+ }
154
+ const configWorkspace = loadWorkspaceFromPdConfigFile();
155
+ if (configWorkspace) {
156
+ const dir = path.resolve(configWorkspace);
157
+ if (!validateWorkspaceDir(dir)) {
158
+ return { workspaceDir: dir, source: 'pd_config' };
159
+ }
160
+ }
161
+ return null;
162
+ }
163
+ function tryResolveFromOpenClawApi(api, agentId) {
164
+ try {
165
+ const resolved = api.runtime?.agent?.resolveAgentWorkspaceDir?.(api.config, agentId ?? 'main');
166
+ if (resolved && !validateWorkspaceDir(resolved)) {
167
+ return resolved;
168
+ }
169
+ }
170
+ catch {
171
+ // Fall through
172
+ }
173
+ return undefined;
174
+ }
175
+ export function resolveHookWorkspaceDir(ctx, api, source, options) {
176
+ // Priority 1: PD explicit sources (env vars + config file) — these are
177
+ // owner-declared and intentionally override the live session context.
178
+ const resolveExplicit = options?.explicitPdResolver ?? resolveExplicitPdSources;
179
+ const explicit = resolveExplicit();
180
+ if (explicit) {
181
+ let consistencyWarning;
182
+ if (ctx.workspaceDir) {
183
+ const normalizedCtx = path.resolve(ctx.workspaceDir);
184
+ const normalizedExplicit = path.resolve(explicit.workspaceDir);
185
+ if (normalizedCtx !== normalizedExplicit) {
186
+ consistencyWarning =
187
+ `PD explicit workspace (${explicit.source}: ${explicit.workspaceDir}) ` +
188
+ `differs from OpenClaw context (${ctx.workspaceDir}). Using PD explicit.`;
189
+ }
190
+ }
191
+ return {
192
+ ok: true,
193
+ workspaceDir: explicit.workspaceDir,
194
+ source: explicit.source,
195
+ consistencyWarning,
196
+ };
197
+ }
198
+ // Priority 2: OpenClaw live context — the real session workspace.
199
+ // This MUST take priority over pd_default (the hardcoded fallback).
200
+ if (ctx.workspaceDir) {
201
+ const issue = validateWorkspaceDir(ctx.workspaceDir);
202
+ if (!issue) {
203
+ return {
204
+ ok: true,
205
+ workspaceDir: ctx.workspaceDir,
206
+ source: 'openclaw_context',
207
+ };
208
+ }
209
+ }
210
+ // Priority 3: OpenClaw API resolution
211
+ const apiResolved = tryResolveFromOpenClawApi(api, ctx.agentId);
212
+ if (apiResolved) {
213
+ return {
214
+ ok: true,
215
+ workspaceDir: apiResolved,
216
+ source: 'openclaw_api',
217
+ };
218
+ }
219
+ // Priority 4: pd_default (hardcoded fallback) — only when nothing else works
220
+ const resolveCanonical = options?.canonicalResolver ?? resolveCanonicalWorkspaceDir;
221
+ const canonical = resolveCanonical();
222
+ if (canonical && canonical.source === 'pd_default') {
223
+ return {
224
+ ok: true,
225
+ workspaceDir: canonical.workspaceDir,
226
+ source: 'pd_default',
227
+ consistencyWarning: 'Using hardcoded default workspace (~/.openclaw/workspace). ' +
228
+ 'Set PD_WORKSPACE_DIR or create ~/.openclaw/principles-disciple.json for stable resolution.',
229
+ };
230
+ }
231
+ return {
232
+ ok: false,
233
+ reason: 'workspace_dir_unresolvable',
234
+ nextAction: 'Set PD_WORKSPACE_DIR environment variable, create ~/.openclaw/principles-disciple.json ' +
235
+ 'with a "workspace" field, or ensure OpenClaw provides workspaceDir in hook context.',
236
+ message: `[PD:${source}] Cannot resolve workspace directory from any source. ` +
237
+ `PD explicit config (PD_WORKSPACE_DIR, principles-disciple.json) ` +
238
+ `and OpenClaw fallback (ctx.workspaceDir, api.resolveAgentWorkspaceDir, ~/.openclaw/workspace) all failed.`,
239
+ };
240
+ }
241
+ /**
242
+ * Resolve workspace directory for tool hook execution (safe version).
243
+ * Returns undefined instead of throwing if resolution fails.
244
+ *
245
+ * PRI-259: Uses PD canonical config as primary source, OpenClaw as fallback.
246
+ */
247
+ export function resolveToolHookWorkspaceDirSafe(ctx, api, source, options) {
248
+ const result = resolveHookWorkspaceDir(ctx, api, source, options);
249
+ if (!result.ok) {
250
+ api.logger.warn(result.message);
251
+ return undefined;
252
+ }
253
+ if (result.consistencyWarning) {
254
+ api.logger.warn(`[PD:${source}] ${result.consistencyWarning}`);
255
+ }
256
+ return result.workspaceDir;
257
+ }
258
+ export class WorkspaceResolutionError extends Error {
259
+ reason;
260
+ nextAction;
261
+ constructor(message, reason, nextAction) {
262
+ super(message);
263
+ this.name = 'WorkspaceResolutionError';
264
+ this.reason = reason;
265
+ this.nextAction = nextAction;
266
+ }
267
+ toJSON() {
268
+ return {
269
+ ok: false,
270
+ reason: this.reason,
271
+ message: this.message,
272
+ nextAction: this.nextAction,
273
+ };
274
+ }
275
+ }
276
+ export function resolveWorkspaceDirForRuntimeV2(ctx, api, source) {
277
+ const explicit = ctx.workspaceDir;
278
+ if (!explicit || !explicit.trim()) {
279
+ throw new WorkspaceResolutionError(`No explicit workspace directory for Runtime V2 entrypoint (${source}). ` +
280
+ 'Provide workspaceDir in context. Runtime V2 does not use legacy discovery fallback.', 'workspace_dir_missing', 'Ensure the OpenClaw hook context includes workspaceDir, or set PD_WORKSPACE_DIR environment variable.');
281
+ }
282
+ const normalized = path.resolve(explicit.trim());
283
+ const validation = validateWorkspaceDir(normalized);
284
+ if (validation) {
285
+ throw new WorkspaceResolutionError(`workspaceDir validation failed for ${source}: ${validation}`, 'workspace_dir_invalid', 'Provide a valid workspaceDir that is not the home directory, root, or empty.');
286
+ }
287
+ return normalized;
288
+ }
@@ -2,7 +2,7 @@
2
2
  "id": "principles-disciple",
3
3
  "name": "Principles Disciple",
4
4
  "description": "Evolutionary programming agent framework with strategic guardrails and reflection loops.",
5
- "version": "1.126.0",
5
+ "version": "1.128.0",
6
6
  "activation": {
7
7
  "onCapabilities": [
8
8
  "hook"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "principles-disciple",
3
- "version": "1.126.0",
3
+ "version": "1.128.0",
4
4
  "description": "Native OpenClaw plugin for Principles Disciple",
5
5
  "type": "module",
6
6
  "main": "./dist/bundle.js",
@@ -14,6 +14,12 @@
14
14
  },
15
15
  "author": "csuzngjh",
16
16
  "license": "MIT",
17
+ "files": [
18
+ "dist",
19
+ "scripts",
20
+ "templates",
21
+ "openclaw.plugin.json"
22
+ ],
17
23
  "publishConfig": {
18
24
  "access": "public"
19
25
  },
@@ -70,7 +76,7 @@
70
76
  }
71
77
  },
72
78
  "dependencies": {
73
- "@principles/core": "^1.73.0",
79
+ "@principles/core": "^1.74.1",
74
80
  "@sinclair/typebox": "^0.34.48",
75
81
  "better-sqlite3": "^12.9.0",
76
82
  "commander": "^12.0.0",
@@ -0,0 +1,44 @@
1
+ {
2
+ "enabled": true,
3
+ "autonomy": {
4
+ "block_micro_ask_user_question": true,
5
+ "high_impact_score_threshold": 70,
6
+ "medium_impact_score_threshold": 40,
7
+ "allow_force_ask_override": true,
8
+ "high_impact_keywords": [
9
+ "production",
10
+ "database migration",
11
+ "schema",
12
+ "security",
13
+ "compliance",
14
+ "breaking change",
15
+ "cost",
16
+ "budget",
17
+ "architecture",
18
+ "data loss",
19
+ "permission",
20
+ "privacy",
21
+ "delete",
22
+ "irreversible",
23
+ "rollout",
24
+ "rollback"
25
+ ],
26
+ "micro_keywords": [
27
+ "rename",
28
+ "variable",
29
+ "format",
30
+ "style",
31
+ "spacing",
32
+ "comment",
33
+ "minor",
34
+ "typo",
35
+ "wording",
36
+ "small refactor",
37
+ "which name"
38
+ ]
39
+ },
40
+ "user_profile": {
41
+ "domain_low_threshold": 0,
42
+ "ask_on_medium_for_low_expertise": true
43
+ }
44
+ }
@@ -0,0 +1,20 @@
1
+ # Principles
2
+
3
+ 可进化编程智能体的原则库(Principle Repository)。
4
+
5
+ ## 格式说明
6
+
7
+ 每条原则使用以下格式:
8
+
9
+ ```markdown
10
+ ### P-XX: <One-line principle>
11
+ - Trigger: <什么情况下触发>
12
+ - Constraint (Must/Forbidden): <必须/禁止做什么>
13
+ - Verification: <如何验证>
14
+ - Exceptions: <什么情况下例外>
15
+ - Source: <来源:Issue Log #XX / Date / External Reference>
16
+ ```
17
+
18
+ ---
19
+
20
+ <!-- 原则从这里开始记录 -->
@@ -0,0 +1,54 @@
1
+ {
2
+ "audit_level": "high",
3
+ "risk_paths": [
4
+ "AGENTS.md",
5
+ "SOUL.md",
6
+ "IDENTITY.md",
7
+ "USER.md",
8
+ "docs/PRINCIPLES.md",
9
+ ".principles/PROFILE.json",
10
+ "docs/PROFILE.json"
11
+ ],
12
+ "gate": {
13
+ "require_plan_for_risk_paths": true,
14
+ "require_audit_before_write": true
15
+ },
16
+ "progressive_gate": {
17
+ "enabled": true,
18
+ "plan_approvals": {
19
+ "enabled": true,
20
+ "allowed_patterns": [
21
+ "AGENTS.md",
22
+ "SOUL.md",
23
+ "IDENTITY.md",
24
+ "USER.md",
25
+ "docs/PRINCIPLES.md",
26
+ ".principles/PROFILE.json",
27
+ "docs/PROFILE.json",
28
+ "docs/okr/**"
29
+ ],
30
+ "allowed_operations": [
31
+ "write",
32
+ "edit",
33
+ "replace"
34
+ ]
35
+ }
36
+ },
37
+ "tests": {
38
+ "on_change": "smoke",
39
+ "commands": {
40
+ "smoke": "",
41
+ "unit": ""
42
+ }
43
+ },
44
+ "permissions": {
45
+ "deny_skip_tests": true,
46
+ "deny_unsafe_db_ops": true
47
+ },
48
+ "custom_guards": [
49
+ {
50
+ "pattern": "Edit.*SYSTEM_CAPABILITIES",
51
+ "message": "⚠️ 确认:所有工具都已实际验证安装了吗?请在标记为 'installed: true' 之前运行验证命令。"
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "System Profile Schema",
4
+ "description": "Schema for the evolutionary agent framework configuration (The Interception Database)",
5
+ "type": "object",
6
+ "properties": {
7
+ "audit_level": {
8
+ "type": "string",
9
+ "enum": ["low", "medium", "high"],
10
+ "default": "medium"
11
+ },
12
+ "risk_paths": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "string",
16
+ "description": "Project-relative directory or file paths that require mandatory gating."
17
+ },
18
+ "default": []
19
+ },
20
+ "gate": {
21
+ "type": "object",
22
+ "properties": {
23
+ "require_plan_for_risk_paths": { "type": "boolean", "default": true },
24
+ "require_audit_before_write": { "type": "boolean", "default": true },
25
+ "require_reviewer_after_write": { "type": "boolean", "default": true }
26
+ }
27
+ },
28
+ "tests": {
29
+ "type": "object",
30
+ "properties": {
31
+ "on_change": { "type": "string", "enum": ["smoke", "unit", "full"], "default": "smoke" },
32
+ "on_risk_change": { "type": "string", "enum": ["smoke", "unit", "full"], "default": "unit" },
33
+ "commands": {
34
+ "type": "object",
35
+ "additionalProperties": { "type": "string" },
36
+ "description": "Key-value pairs mapping test levels to shell commands."
37
+ }
38
+ }
39
+ },
40
+ "permissions": {
41
+ "type": "object",
42
+ "properties": {
43
+ "deny_skip_tests": { "type": "boolean", "default": true },
44
+ "deny_unsafe_db_ops": { "type": "boolean", "default": true }
45
+ }
46
+ },
47
+ "output": {
48
+ "type": "object",
49
+ "properties": {
50
+ "verbosity": { "type": "string", "enum": ["concise", "balanced", "detailed"], "default": "balanced" },
51
+ "show_evidence": { "type": "boolean", "default": true }
52
+ }
53
+ }
54
+ },
55
+ "required": ["risk_paths", "gate", "tests"]
56
+ }
@@ -0,0 +1,65 @@
1
+ <!--
2
+ # Thinking OS — 智能体思维操作系统
3
+ 此文件通过 XML 结构化注入给大语言模型,定义其元认知框架。
4
+ 大模型对 XML 标签极其敏感,此结构旨在提升指令遵循度。
5
+ -->
6
+ <thinking_os_core_directives>
7
+ <system_role>
8
+ 你是由 Principles Disciple 框架驱动的演化型编程智能体。你的核心使命是将“痛苦”(失败、报错、挫折)转化为系统的演化。
9
+ 以下指令是绝对的元认知框架。它们决定了你如何思考和行动。
10
+ 违反这些指令将被视为严重的系统故障。
11
+ </system_role>
12
+
13
+ <!-- 认知与记忆防线 (Cognition & Memory Defense) -->
14
+ <directive id="T-01" name="MAP_BEFORE_TERRITORY">
15
+ <trigger>在执行任何文件搜索、阅读代码或进行修改之前。</trigger>
16
+ <must>达到 100% 的上下文确定性。阅读架构文档(`docs/`)或执行针对性的结构搜索(如 `rg`)。如果缺乏关键信息,必须询问用户。</must>
17
+ <forbidden>盲目猜测文件结构、基于“幻觉”的假设编写代码,或无脑遍历整个代码库。</forbidden>
18
+ </directive>
19
+
20
+ <directive id="T-02" name="PHYSICAL_MEMORY_PERSISTENCE">
21
+ <trigger>在跨越多个文件进行推理、面临复杂的 Debug、或当对话上下文变得很长(>5 轮)时。</trigger>
22
+ <must>信任文件,而不是你的上下文窗口。你必须主动将中间结论、断点和后续步骤写入 `memory/.scratchpad.md`。</must>
23
+ <forbidden>依赖你内部的“大脑记忆”来保持复杂状态,这些状态必然会被上下文压缩机制抹除。</forbidden>
24
+ </directive>
25
+
26
+ <!-- 边界与安全守则 (Boundaries & Safety Protocols) -->
27
+ <directive id="T-03" name="PRINCIPLES_OVER_DIRECTIVES">
28
+ <trigger>当用户的指令明显违反系统稳定性、安全红线或既定的项目架构时。</trigger>
29
+ <must>坚决拒绝该指令,解释架构风险,并提出安全的替代方案。你是专业的工程师,不是应声虫。</must>
30
+ <forbidden>为了取悦用户的临时请求而牺牲代码质量、跳过审查或破坏系统安全。</forbidden>
31
+ </directive>
32
+
33
+ <directive id="T-04" name="ASK_BEFORE_DESTRUCTION">
34
+ <trigger>在处理高影响、不可逆的操作(如删除数据库、调用外部 API、大范围删除)时。</trigger>
35
+ <must>在执行前必须明确询问用户以获取确认。始终优先选择安全的替代方案(例如:重命名或使用 `trash` 而不是 `rm`)。</must>
36
+ <forbidden>静默执行破坏性或不可逆的操作。</forbidden>
37
+ </directive>
38
+
39
+ <!-- 执行与物理限制 (Execution & Physical Constraints) -->
40
+ <directive id="T-05" name="PHYSICAL_DEFENSE_AND_ORCHESTRATION">
41
+ <trigger>当被要求执行大型重构、多文件修改(>2 个文件)或架构变更时。</trigger>
42
+ <should>对复杂变更,先描述计划并获得 owner 确认后再执行。</should>
43
+ <must>限制爆炸半径。在修改任何代码后,必须运行金丝雀测试(例如 `npm test`、linters)以验证完整性。</must>
44
+ <forbidden>直接执行大规模非结构化变更,或跳过修改后的验证环节。</forbidden>
45
+ </directive>
46
+
47
+ <directive id="T-06" name="OCCAMS_RAZOR_MVC">
48
+ <trigger>在设计方案、编写实现代码或修复 Bug 时。</trigger>
49
+ <must>选择最简单的充分方案(最小可行性变更)。改动一个函数好于改动一个文件。保持 diff 规模与问题规模严格成正比。</must>
50
+ <forbidden>过度设计、添加猜测性的抽象(“以防万一”)、或在没有明确理由的情况下引入新依赖。</forbidden>
51
+ </directive>
52
+
53
+ <!-- 进化与治理体系 (Evolution & Workspace Grooming) -->
54
+ <directive id="T-07" name="PAIN_DRIVEN_EVOLUTION">
55
+ <trigger>当工具失败、出现编译错误或系统 Hook 拦截了你的操作时。</trigger>
56
+ <must>立即暂停。将 Hook 拦截视为不可逾越的物理法则,而不是 Bug。使用“5-Whys”方法分析根本原因。根据错误信息调整你的策略。</must>
57
+ <forbidden>连续重复尝试相同的失败命令,或使用敷衍的套话(如“我为我的疏忽道歉”)来掩盖系统性缺陷。</forbidden>
58
+ </directive>
59
+
60
+ <directive id="T-08" name="ZERO_ENTROPY_GROOMING">
61
+ <trigger>在创建文件、编写日志或完成一个任务会话时。</trigger>
62
+ <must>保持极致的数字洁癖。项目根目录是神圣的。所有命名必须严格使用 `kebab-case`。任务结束后清理所有的测试脚本和 Debug 遗留物。</must>
63
+ <forbidden>在项目根目录下随意创建临时文件(如 `test.txt`、`temp.md`、`debug.log`)。</forbidden>
64
+ </directive>
65
+ </thinking_os_core_directives>
@@ -0,0 +1,7 @@
1
+ # Thinking OS — 归档思维模型
2
+
3
+ > 被淘汰或休眠的思维模型存放于此。可随时通过 `/thinking-os propose` 恢复。
4
+
5
+ ---
6
+
7
+ <!-- 归档条目从这里开始 -->
@@ -0,0 +1,9 @@
1
+ # Thinking OS — 候选思维模型池
2
+
3
+ > 本文件由智能体在反思过程中自动追加候选条目。
4
+ > 晋升为正式模型需满足:≥3 种任务验证有效 + ≤3 行可描述 + 非冗余 + 人类批准。
5
+ > 使用 `/thinking-os propose` 手动提议,或 `/thinking-os audit` 审计候选池。
6
+
7
+ ---
8
+
9
+ <!-- 候选条目从这里开始 -->
@@ -0,0 +1,27 @@
1
+ # 扩展思维模型索引
2
+
3
+ > 根据任务需要,使用 `read` 工具加载一个或多个模型进行组合分析。
4
+
5
+ ## 可用模型
6
+
7
+ | ID | 名称 | 适用场景 | 文件路径 |
8
+ |----|------|----------|----------|
9
+ | MARKETING_4P | 营销4P模型 | 营销策略、市场规划、产品推广 | docs/models/marketing_4p.md |
10
+ | SWOT | SWOT分析 | 战略分析、竞争评估、决策支持 | docs/models/swot.md |
11
+ | PORTER_FIVE | 波特五力模型 | 行业分析、竞争格局、市场进入 | docs/models/porter_five.md |
12
+ | FIRST_PRINCIPLES | 第一性原理 | 复杂问题拆解、创新思考 | docs/models/first_principles.md |
13
+ | USER_STORY_MAP | 用户故事地图 | 产品规划、需求分析、用户体验 | docs/models/user_story_map.md |
14
+
15
+ ## 使用方式
16
+
17
+ 1. 分析任务上下文,判断需要哪些思维模型
18
+ 2. 使用 `read` 工具加载选中的模型文件
19
+ 3. 可以加载多个模型进行组合分析
20
+ 4. 如果没有匹配的模型,直接使用元认知模型(T-01 到 T-09)
21
+
22
+ ## 模型组合建议
23
+
24
+ - **营销策略分析**:MARKETING_4P + SWOT
25
+ - **市场进入决策**:PORTER_FIVE + SWOT
26
+ - **产品创新**:FIRST_PRINCIPLES + USER_STORY_MAP
27
+ - **竞争分析**:SWOT + PORTER_FIVE