principles-disciple 1.72.0 → 1.74.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 (319) hide show
  1. package/INSTALL.md +1 -3
  2. package/openclaw.plugin.json +10 -5
  3. package/package.json +17 -19
  4. package/scripts/acceptance-test.mjs +16 -73
  5. package/scripts/sync-plugin.mjs +382 -77
  6. package/src/commands/archive-impl.ts +2 -1
  7. package/src/commands/capabilities.ts +2 -2
  8. package/src/commands/context.ts +2 -2
  9. package/src/commands/disable-impl.ts +2 -1
  10. package/src/commands/evolution-status.ts +16 -16
  11. package/src/commands/export.ts +12 -67
  12. package/src/commands/pain.ts +91 -1
  13. package/src/commands/principle-rollback.ts +2 -1
  14. package/src/commands/promote-impl.ts +7 -43
  15. package/src/commands/rollback-impl.ts +2 -1
  16. package/src/commands/rollback.ts +2 -1
  17. package/src/commands/samples.ts +2 -1
  18. package/src/commands/thinking-os.ts +2 -1
  19. package/src/config/errors.ts +18 -2
  20. package/src/constants/diagnostician.ts +2 -2
  21. package/src/constants/tools.ts +2 -1
  22. package/src/core/__tests__/focus-history.test.ts +210 -0
  23. package/src/core/config.ts +1 -1
  24. package/src/core/correction-cue-learner.ts +2 -136
  25. package/src/core/correction-types.ts +16 -88
  26. package/src/core/dictionary.ts +19 -20
  27. package/src/core/empathy-keyword-matcher.ts +17 -289
  28. package/src/core/empathy-types.ts +18 -229
  29. package/src/core/event-log.ts +29 -132
  30. package/src/core/evolution-reducer.ts +21 -2
  31. package/src/core/evolution-types.ts +76 -464
  32. package/src/core/file-store.ts +80 -0
  33. package/src/core/focus-history.ts +228 -955
  34. package/src/core/local-worker-routing.ts +34 -314
  35. package/src/core/merge-gate-audit.ts +0 -195
  36. package/src/core/migration.ts +0 -1
  37. package/src/core/pain-diagnostic-gate.ts +154 -0
  38. package/src/core/pain-signal.ts +21 -138
  39. package/src/core/pain.ts +15 -88
  40. package/src/core/path-resolver.ts +0 -1
  41. package/src/core/paths.ts +0 -1
  42. package/src/core/pd-task-reconciler.ts +26 -115
  43. package/src/core/pd-task-service.ts +9 -9
  44. package/src/core/pd-task-types.ts +23 -127
  45. package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +174 -0
  46. package/src/core/principle-compiler/code-validator.ts +15 -42
  47. package/src/core/principle-compiler/compiler.ts +100 -15
  48. package/src/core/principle-compiler/index.ts +5 -2
  49. package/src/core/principle-compiler/template-generator.ts +4 -104
  50. package/src/core/principle-injection.ts +10 -202
  51. package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +42 -0
  52. package/src/core/principle-internalization/lifecycle-read-model.ts +39 -242
  53. package/src/core/principle-internalization/principle-lifecycle-service.ts +12 -10
  54. package/src/core/principle-tree-ledger-adapter.ts +145 -0
  55. package/src/core/principle-tree-ledger.ts +8 -6
  56. package/src/core/reflection/reflection-context.ts +14 -109
  57. package/src/core/replay-engine.ts +8 -500
  58. package/src/core/rule-host-helpers.ts +5 -35
  59. package/src/core/rule-host-types.ts +10 -82
  60. package/src/core/rule-host.ts +6 -63
  61. package/src/core/runtime-v2-prompt-activation-reader.ts +231 -0
  62. package/src/core/session-tracker.ts +87 -101
  63. package/src/core/shadow-observation-registry.ts +19 -48
  64. package/src/core/trajectory.ts +3 -1
  65. package/src/core/workflow-funnel-loader.ts +62 -68
  66. package/src/core/workspace-context.ts +46 -0
  67. package/src/core/workspace-dir-service.ts +1 -1
  68. package/src/core/workspace-dir-validation.ts +18 -9
  69. package/src/hooks/AGENTS.md +1 -1
  70. package/src/hooks/gate-block-helper.ts +71 -64
  71. package/src/hooks/gate.ts +183 -31
  72. package/src/hooks/lifecycle.ts +30 -32
  73. package/src/hooks/llm.ts +60 -32
  74. package/src/hooks/pain.ts +297 -103
  75. package/src/hooks/prompt.ts +400 -440
  76. package/src/hooks/subagent.ts +2 -29
  77. package/src/i18n/commands.ts +2 -10
  78. package/src/index.ts +95 -85
  79. package/src/openclaw-sdk.ts +311 -0
  80. package/src/service/central-database.ts +8 -4
  81. package/src/service/evolution-queue-migration.ts +2 -1
  82. package/src/service/evolution-worker.ts +163 -1786
  83. package/src/service/internalization-trigger-adapter.ts +302 -0
  84. package/src/service/keyword-optimization-service.ts +4 -4
  85. package/src/service/monitoring-query-service.ts +1 -215
  86. package/src/service/queue-io.ts +60 -331
  87. package/src/service/runtime-summary-service.ts +59 -16
  88. package/src/service/subagent-workflow/index.ts +0 -41
  89. package/src/service/subagent-workflow/types.ts +9 -120
  90. package/src/service/subagent-workflow/workflow-store.ts +2 -119
  91. package/src/service/workflow-watchdog.ts +0 -43
  92. package/src/types/event-payload.ts +16 -74
  93. package/src/types/event-types.ts +38 -547
  94. package/src/types/hygiene-types.ts +7 -30
  95. package/src/types/principle-tree-schema.ts +20 -222
  96. package/src/types/queue.ts +15 -70
  97. package/src/types/runtime-summary.ts +5 -49
  98. package/src/utils/io.ts +8 -20
  99. package/src/utils/retry.ts +1 -1
  100. package/src/utils/shadow-fingerprint.ts +2 -2
  101. package/src/utils/workspace-resolver.ts +50 -0
  102. package/templates/langs/en/core/AGENTS.md +7 -7
  103. package/templates/langs/en/core/BOOT.md +1 -1
  104. package/templates/langs/en/core/HEARTBEAT.md +2 -2
  105. package/templates/langs/en/principles/THINKING_OS.md +3 -2
  106. package/templates/langs/en/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
  107. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
  108. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
  109. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
  110. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
  111. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
  112. package/templates/langs/en/skills/evolve-task/SKILL.md +3 -3
  113. package/templates/langs/en/skills/pd-cli-operator/SKILL.md +67 -0
  114. package/templates/langs/en/skills/pd-diagnostician/SKILL.md +1 -1
  115. package/templates/langs/en/skills/pd-mentor/SKILL.md +2 -3
  116. package/templates/langs/en/skills/pd-pain-signal/SKILL.md +17 -39
  117. package/templates/langs/en/skills/pd-runtime-v2/SKILL.md +61 -0
  118. package/templates/langs/zh/core/AGENTS.md +7 -7
  119. package/templates/langs/zh/core/BOOT.md +1 -1
  120. package/templates/langs/zh/core/HEARTBEAT.md +2 -2
  121. package/templates/langs/zh/principles/THINKING_OS.md +3 -2
  122. package/templates/langs/zh/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
  123. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
  124. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
  125. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/nocturnal-trinity-quality-enhancement.json +8 -8
  126. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
  127. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
  128. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
  129. package/templates/langs/zh/skills/ai-sprint-orchestration/test/run.test.mjs +21 -5
  130. package/templates/langs/zh/skills/evolve-task/SKILL.md +4 -4
  131. package/templates/langs/zh/skills/pd-cli-operator/SKILL.md +67 -0
  132. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +1 -1
  133. package/templates/langs/zh/skills/pd-mentor/SKILL.md +2 -3
  134. package/templates/langs/zh/skills/pd-pain-signal/SKILL.md +17 -38
  135. package/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +61 -0
  136. package/tests/build-artifacts.test.ts +1 -3
  137. package/tests/commands/evolution-status.test.ts +0 -118
  138. package/tests/core/bootstrap-rules.test.ts +1 -1
  139. package/tests/core/config.test.ts +1 -1
  140. package/tests/core/event-log.test.ts +35 -0
  141. package/tests/core/evolution-engine.test.ts +610 -0
  142. package/tests/core/file-store.test.ts +102 -0
  143. package/tests/core/focus-history.test.ts +203 -11
  144. package/tests/core/merge-gate-audit.test.ts +2 -169
  145. package/tests/core/migration.test.ts +7 -7
  146. package/tests/core/model-deployment-registry.test.ts +7 -1
  147. package/tests/core/model-training-registry.test.ts +19 -0
  148. package/tests/core/observability.test.ts +0 -1
  149. package/tests/core/pain-diagnostic-gate.test.ts +498 -0
  150. package/tests/core/pain.test.ts +0 -1
  151. package/tests/core/path-resolver.test.ts +1 -1
  152. package/tests/core/paths-refactor.test.ts +0 -22
  153. package/tests/core/principle-internalization/deprecated-readiness.test.ts +2 -2
  154. package/tests/core/principle-internalization/lifecycle-metrics.test.ts +2 -2
  155. package/tests/core/principle-internalization/{internalization-routing-policy.test.ts → lifecycle-routing-policy.test.ts} +6 -6
  156. package/tests/core/principle-internalization/lineage-source-retired.test.ts +56 -0
  157. package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +1 -23
  158. package/tests/core/principle-tree-ledger-adapter.test.ts +253 -0
  159. package/tests/core/reflection-context.test.ts +0 -14
  160. package/tests/core/replay-engine.test.ts +127 -215
  161. package/tests/core/rule-host-helpers.test.ts +2 -2
  162. package/tests/core/rule-implementation-runtime.test.ts +0 -27
  163. package/tests/core/workflow-funnel-loader.test.ts +162 -0
  164. package/tests/core/workspace-context.test.ts +2 -2
  165. package/tests/core/workspace-dir-validation.test.ts +8 -1
  166. package/tests/core-anti-growth.test.ts +191 -0
  167. package/tests/hook-workspace-nextaction-contract.test.ts +42 -0
  168. package/tests/hooks/confirm-first-removal.test.ts +188 -0
  169. package/tests/hooks/gate-auto-correct-shadow.test.ts +310 -0
  170. package/tests/hooks/gate-auto-correct.test.ts +665 -0
  171. package/tests/hooks/gate-no-path-write-tool.test.ts +172 -0
  172. package/tests/hooks/gate-rule-host-pipeline.test.ts +2 -1
  173. package/tests/hooks/pain.test.ts +269 -12
  174. package/tests/hooks/prompt-characterization.test.ts +500 -0
  175. package/tests/hooks/prompt-size-guard.test.ts +32 -17
  176. package/tests/hooks/runtime-v2-prompt-activation.test.ts +869 -0
  177. package/tests/index.test.ts +94 -1
  178. package/tests/integration/auto-entry-gate.test.ts +248 -0
  179. package/tests/integration/internalization-trigger-guard.test.ts +69 -0
  180. package/tests/integration/m8-legacy-paths.test.ts +63 -0
  181. package/tests/integration/runtime-v2-pain-guard.test.ts +125 -0
  182. package/tests/plugin-config-resolution-cutover.test.ts +359 -0
  183. package/tests/runtime-v2-discovery-guard.test.ts +154 -0
  184. package/tests/service/central-database.test.ts +457 -0
  185. package/tests/service/evolution-worker.correction-observer.test.ts +173 -0
  186. package/tests/service/evolution-worker.timeout.test.ts +11 -129
  187. package/tests/service/internalization-trigger-adapter.test.ts +251 -0
  188. package/tests/service/monitoring-query-service.test.ts +1 -47
  189. package/tests/service/queue-io.test.ts +1 -62
  190. package/tests/service/runtime-summary-service.test.ts +3 -1
  191. package/tests/service/workflow-watchdog.test.ts +0 -91
  192. package/tests/utils/file-lock.test.ts +5 -3
  193. package/tests/utils/session-key.test.ts +52 -0
  194. package/tests/utils/subagent-probe.test.ts +48 -1
  195. package/vitest.config.ts +4 -11
  196. package/.planning/codebase/ARCHITECTURE.md +0 -157
  197. package/.planning/codebase/CONCERNS.md +0 -145
  198. package/.planning/codebase/CONVENTIONS.md +0 -148
  199. package/.planning/codebase/INTEGRATIONS.md +0 -81
  200. package/.planning/codebase/STACK.md +0 -87
  201. package/.planning/codebase/STRUCTURE.md +0 -193
  202. package/.planning/codebase/TESTING.md +0 -243
  203. package/.planning/phases/01-basic-visualization/01-GAP-CLOSURE-VERIFICATION.md +0 -113
  204. package/docs/COMMAND_REFERENCE.md +0 -76
  205. package/docs/COMMAND_REFERENCE_EN.md +0 -79
  206. package/scripts/build-web.mjs +0 -46
  207. package/scripts/diagnose-nocturnal.mjs +0 -537
  208. package/scripts/seed-nocturnal-scenarios.mjs +0 -384
  209. package/src/commands/nocturnal-review.ts +0 -322
  210. package/src/commands/nocturnal-rollout.ts +0 -790
  211. package/src/commands/nocturnal-train.ts +0 -986
  212. package/src/commands/pd-reflect.ts +0 -88
  213. package/src/core/adaptive-thresholds.ts +0 -478
  214. package/src/core/diagnostician-task-store.ts +0 -192
  215. package/src/core/nocturnal-arbiter.ts +0 -715
  216. package/src/core/nocturnal-artifact-lineage.ts +0 -116
  217. package/src/core/nocturnal-artificer.ts +0 -257
  218. package/src/core/nocturnal-candidate-scoring.ts +0 -530
  219. package/src/core/nocturnal-compliance.ts +0 -1146
  220. package/src/core/nocturnal-dataset.ts +0 -763
  221. package/src/core/nocturnal-executability.ts +0 -428
  222. package/src/core/nocturnal-export.ts +0 -499
  223. package/src/core/nocturnal-paths.ts +0 -240
  224. package/src/core/nocturnal-reasoning-deriver.ts +0 -343
  225. package/src/core/nocturnal-rule-implementation-validator.ts +0 -246
  226. package/src/core/nocturnal-snapshot-contract.ts +0 -99
  227. package/src/core/nocturnal-trajectory-extractor.ts +0 -512
  228. package/src/core/nocturnal-trinity-types.ts +0 -218
  229. package/src/core/nocturnal-trinity.ts +0 -2680
  230. package/src/core/principle-internalization/deprecated-readiness.ts +0 -93
  231. package/src/core/principle-internalization/internalization-routing-policy.ts +0 -208
  232. package/src/core/principle-internalization/lifecycle-metrics.ts +0 -152
  233. package/src/http/principles-console-route.ts +0 -709
  234. package/src/service/central-health-service.ts +0 -49
  235. package/src/service/central-overview-service.ts +0 -138
  236. package/src/service/control-ui-query-service.ts +0 -900
  237. package/src/service/cooldown-strategy.ts +0 -97
  238. package/src/service/evolution-pain-context.ts +0 -79
  239. package/src/service/evolution-query-service.ts +0 -407
  240. package/src/service/health-query-service.ts +0 -1038
  241. package/src/service/nocturnal-config.ts +0 -214
  242. package/src/service/nocturnal-runtime.ts +0 -734
  243. package/src/service/nocturnal-service.ts +0 -1605
  244. package/src/service/nocturnal-target-selector.ts +0 -545
  245. package/src/service/sleep-cycle.ts +0 -157
  246. package/src/service/startup-reconciler.ts +0 -112
  247. package/src/service/subagent-workflow/correction-observer-types.ts +0 -82
  248. package/src/service/subagent-workflow/correction-observer-workflow-manager.ts +0 -250
  249. package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +0 -1
  250. package/src/service/subagent-workflow/dynamic-timeout.ts +0 -30
  251. package/src/service/subagent-workflow/empathy-observer-workflow-manager.ts +0 -268
  252. package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +0 -795
  253. package/src/service/subagent-workflow/runtime-direct-driver.ts +0 -268
  254. package/src/service/subagent-workflow/workflow-manager-base.ts +0 -580
  255. package/src/tools/write-pain-flag.ts +0 -215
  256. package/templates/langs/en/skills/plan-script/SKILL.md +0 -32
  257. package/templates/langs/zh/skills/plan-script/SKILL.md +0 -32
  258. package/tests/commands/nocturnal-review.test.ts +0 -448
  259. package/tests/commands/nocturnal-train.test.ts +0 -97
  260. package/tests/commands/pd-reflect.test.ts +0 -49
  261. package/tests/core/adaptive-thresholds.test.ts +0 -261
  262. package/tests/core/nocturnal-arbiter.test.ts +0 -559
  263. package/tests/core/nocturnal-artifact-lineage.test.ts +0 -53
  264. package/tests/core/nocturnal-artificer.test.ts +0 -241
  265. package/tests/core/nocturnal-candidate-scoring.test.ts +0 -532
  266. package/tests/core/nocturnal-compliance-p-principles.test.ts +0 -133
  267. package/tests/core/nocturnal-compliance.test.ts +0 -646
  268. package/tests/core/nocturnal-dataset.test.ts +0 -892
  269. package/tests/core/nocturnal-e2e.test.ts +0 -234
  270. package/tests/core/nocturnal-executability.test.ts +0 -357
  271. package/tests/core/nocturnal-export.test.ts +0 -517
  272. package/tests/core/nocturnal-reasoning-deriver.test.ts +0 -372
  273. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +0 -428
  274. package/tests/core/nocturnal-rule-implementation-validator.test.ts +0 -127
  275. package/tests/core/nocturnal-snapshot-contract.test.ts +0 -121
  276. package/tests/core/nocturnal-trajectory-extractor.test.ts +0 -634
  277. package/tests/core/nocturnal-trinity.test.ts +0 -2053
  278. package/tests/core/pain-auto-repair.test.ts +0 -96
  279. package/tests/core/pain-integration.test.ts +0 -510
  280. package/tests/fixtures/nocturnal-reviewed-subset.json +0 -183
  281. package/tests/http/principles-console-route.test.ts +0 -162
  282. package/tests/integration/chaos-resilience.test.ts +0 -348
  283. package/tests/integration/empathy-workflow-integration.test.ts +0 -626
  284. package/tests/integration/pain-diagnostician-loop.e2e.test.ts +0 -380
  285. package/tests/service/control-ui-query-service.test.ts +0 -121
  286. package/tests/service/cooldown-strategy.test.ts +0 -164
  287. package/tests/service/data-endpoints-regression.test.ts +0 -834
  288. package/tests/service/empathy-observer-workflow-manager.test.ts +0 -175
  289. package/tests/service/evolution-worker.nocturnal.test.ts +0 -601
  290. package/tests/service/nocturnal-runtime-hardening.test.ts +0 -118
  291. package/tests/service/nocturnal-runtime.test.ts +0 -473
  292. package/tests/service/nocturnal-service-code-candidate.test.ts +0 -330
  293. package/tests/service/nocturnal-target-selector.test.ts +0 -615
  294. package/tests/service/startup-reconciler.test.ts +0 -148
  295. package/tests/tools/write-pain-flag.test.ts +0 -358
  296. package/ui/src/App.tsx +0 -45
  297. package/ui/src/api.ts +0 -220
  298. package/ui/src/charts.tsx +0 -955
  299. package/ui/src/components/ErrorState.tsx +0 -6
  300. package/ui/src/components/Loading.tsx +0 -13
  301. package/ui/src/components/ProtectedRoute.tsx +0 -12
  302. package/ui/src/components/Shell.tsx +0 -91
  303. package/ui/src/components/WorkspaceConfig.tsx +0 -178
  304. package/ui/src/components/index.ts +0 -5
  305. package/ui/src/context/auth.tsx +0 -80
  306. package/ui/src/context/theme.tsx +0 -66
  307. package/ui/src/hooks/useAutoRefresh.ts +0 -39
  308. package/ui/src/i18n/ui.ts +0 -473
  309. package/ui/src/main.tsx +0 -16
  310. package/ui/src/pages/EvolutionPage.tsx +0 -333
  311. package/ui/src/pages/FeedbackPage.tsx +0 -138
  312. package/ui/src/pages/GateMonitorPage.tsx +0 -136
  313. package/ui/src/pages/LoginPage.tsx +0 -89
  314. package/ui/src/pages/OverviewPage.tsx +0 -599
  315. package/ui/src/pages/SamplesPage.tsx +0 -174
  316. package/ui/src/pages/ThinkingModelsPage.tsx +0 -702
  317. package/ui/src/styles.css +0 -2020
  318. package/ui/src/types.ts +0 -384
  319. package/ui/src/utils/format.ts +0 -15
@@ -1,148 +0,0 @@
1
- # Coding Conventions
2
-
3
- **Analysis Date:** 2026-04-15
4
-
5
- ## Naming Patterns
6
-
7
- **Files:**
8
- - PascalCase for modules: `detection-service.ts`, `risk-calculator.ts`
9
- - kebab-case for utilities with multiple exports: `retry.ts`, `hashing.ts`
10
- - `.test.ts` suffix for test files co-located in `tests/` directory
11
-
12
- **Directories:**
13
- - Flat structure under `src/`: `commands/`, `core/`, `hooks/`, `service/`, `utils/`
14
- - Tests mirror source structure in `tests/` parallel directory
15
-
16
- **Functions:**
17
- - camelCase: `normalizePath`, `handleBeforeToolCall`, `computeDynamicTimeout`
18
- - Verb prefixes for actions: `handle*`, `compute*`, `extract*`, `serialize*`
19
- - Getter-style for services: `DetectionService.get()`, `WorkspaceContext.fromHookContext()`
20
-
21
- **Types & Interfaces:**
22
- - PascalCase: `DeepReflectionSettings`, `PainSettings`, `GfiGateSettings`
23
- - Suffix for type variants: `*Types`, `*Contract`, `*Schema`
24
- - Barrel exports via `index.ts` in each directory
25
-
26
- ## Code Style
27
-
28
- **Formatting:**
29
- - ESLint with `@typescript-eslint` plugin
30
- - No Prettier config detected (not enforced)
31
- - 2-space indentation
32
- - No trailing semicolons in ESLint config (but not explicitly disabled)
33
-
34
- **Key ESLint Rules:**
35
- ```javascript
36
- 'no-empty': 'error',
37
- 'no-console': 'warn',
38
- '@typescript-eslint/no-explicit-any': 'warn',
39
- '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
40
- '@typescript-eslint/no-non-null-assertion': 'warn',
41
- ```
42
-
43
- **Linting (test files relaxed):**
44
- ```javascript
45
- '@typescript-eslint/no-explicit-any': 'off',
46
- 'no-empty': 'warn',
47
- 'no-console': 'off',
48
- ```
49
-
50
- **Import Organization:**
51
- 1. Node.js built-ins (`path`, `fs`, `os`)
52
- 2. External packages (`vitest`, `better-sqlite3`)
53
- 3. Internal modules (`../../src/core/...`, `./hooks/...`)
54
- 4. Type-only imports use `import type` syntax
55
-
56
- **Path Aliases:**
57
- - No `paths` aliasing in `tsconfig.json`
58
- - Relative imports with `.js` extension for ESM compatibility: `from '../../src/utils/io.js'`
59
-
60
- ## Error Handling
61
-
62
- **Patterns:**
63
- - Return `undefined` for "not found" / "allowed" cases (not exceptions)
64
- - Throw typed errors from `src/config/errors.ts`
65
- - Result objects with `allowed: boolean` for gate checks
66
- - Log warnings via `plugin-logger.ts` for non-critical failures
67
-
68
- **Example - Gate pattern:**
69
- ```typescript
70
- // Return block result, not exceptions
71
- export function handleBeforeToolCall(event, ctx): BlockResult | undefined {
72
- if (someCondition) {
73
- return { block: true, blockReason: '...' };
74
- }
75
- return undefined; // Allowed
76
- }
77
- ```
78
-
79
- **SQLite errors:**
80
- - Use `better-sqlite3` with synchronous API
81
- - Wrap in try/catch for migration failures
82
-
83
- ## Logging
84
-
85
- **Framework:** `src/utils/plugin-logger.ts`
86
-
87
- **Patterns:**
88
- - Structured logging with levels: `warn`, `error`, `info`, `debug`
89
- - Context passed as object: `logger.warn({ context: 'Gate' }, 'message')`
90
- - No `console.log` in production paths (warn-only via ESLint)
91
-
92
- ## Comments
93
-
94
- **When to Comment:**
95
- - Complex cross-platform logic (Windows EPERM handling in `atomicWriteFileSync`)
96
- - Magic numbers explained: `const RENAME_MAX_RETRIES = 3`
97
- - Task markers in tests: `// Task 4: Default Values Consistency Tests`
98
-
99
- **JSDoc:**
100
- - Used in config files and public APIs
101
- - Not enforced on internal functions
102
-
103
- ## Function Design
104
-
105
- **Size:**
106
- - Prefer small, focused functions
107
- - Complex modules split into helpers (e.g., `rule-host-helpers.ts`)
108
-
109
- **Parameters:**
110
- - Max 3-4 parameters before grouping into options object
111
- - Destructure for clarity: `function ({ workspaceDir, stateDir })`
112
-
113
- **Return Values:**
114
- - Explicit return types in public APIs
115
- - `undefined` for "not applicable" vs `null` for "intentionally empty"
116
-
117
- ## Module Design
118
-
119
- **Exports:**
120
- - Named exports preferred over default exports
121
- - Barrel `index.ts` files aggregate directory exports
122
- - Factory functions for singleton services: `DetectionService.get(dir)`
123
-
124
- **Service Pattern:**
125
- ```typescript
126
- // Singleton pattern for stateful services
127
- class DetectionService {
128
- private static instances = new Map<string, DetectionFunnel>();
129
-
130
- static get(stateDir: string): DetectionFunnel {
131
- if (!instances.has(stateDir)) {
132
- instances.set(stateDir, new DetectionFunnel(...));
133
- }
134
- return instances.get(stateDir);
135
- }
136
-
137
- static reset(): void { instances.clear(); }
138
- }
139
- ```
140
-
141
- **Static Analysis:**
142
- - Vitest used for unit tests
143
- - ESM modules with `.js` extension in imports
144
- - `"type": "module"` in `package.json`
145
-
146
- ---
147
-
148
- *Convention analysis: 2026-04-15*
@@ -1,81 +0,0 @@
1
- # External Integrations
2
-
3
- **Analysis Date:** 2026-04-15
4
-
5
- ## APIs & External Services
6
-
7
- **Plugin Framework:**
8
- - OpenClaw - Host application
9
- - SDK/Client: `@openclaw/plugin-kit` (peer dependency, bundled as external)
10
- - Communication: Plugin hook events (`before_prompt_build`, `before_tool_call`, `after_tool_call`, `llm_output`, `subagent_spawning`, `subagent_ended`, `before_reset`, `before_compaction`, `after_compaction`)
11
- - Registration: Commands, tools, HTTP routes, background services
12
-
13
- ## Data Storage
14
-
15
- **Databases:**
16
- - SQLite (better-sqlite3 12.9.0)
17
- - Connection: File-based at `.state/trajectory.db`
18
- - Schema managed via migration runner in `src/core/schema/migrations/`
19
- - Migrations: 4 migrations (001-init-trajectory, 002-init-central, 003-init-workflow, 004-add-thinking-and-gfi)
20
-
21
- **File Storage:**
22
- - Local filesystem (workspace-relative paths)
23
- - Templates copied to workspace on init (`templates/` directory)
24
- - State persisted to `.state/` directory
25
- - Pain samples stored in `memory/pain/`
26
-
27
- **Caching:**
28
- - None detected (in-memory caching only)
29
-
30
- ## Authentication & Identity
31
-
32
- **Auth Provider:**
33
- - OpenClaw native (session-based)
34
- - Implementation: Session key extraction via `extractAgentIdFromSessionKey()` in `src/utils/session-key.ts`
35
- - Agent identification via `agentId` from OpenClaw context
36
-
37
- ## Monitoring & Observability
38
-
39
- **Error Tracking:**
40
- - Plugin logger (`src/utils/plugin-logger.ts`)
41
- - System logger (`src/core/system-logger.ts`)
42
- - Hook execution recording via `WorkspaceContext.eventLog.recordHookExecution()`
43
-
44
- **Logs:**
45
- - File-based logs: `.state/memory/logs/SYSTEM.log`
46
- - Console output for errors during build/dev
47
-
48
- ## CI/CD & Deployment
49
-
50
- **Hosting:**
51
- - OpenClaw plugin ecosystem
52
- - Published as npm package `principles-disciple`
53
-
54
- **CI Pipeline:**
55
- - Not detected (no GitHub Actions or similar)
56
-
57
- ## Environment Configuration
58
-
59
- **Required env vars:**
60
- - None required (configuration via OpenClaw plugin config API)
61
-
62
- **Secrets location:**
63
- - OpenClaw plugin configuration (not file-based)
64
-
65
- ## Webhooks & Callbacks
66
-
67
- **Incoming (via OpenClaw hooks):**
68
- - `before_prompt_build` - Prompt building stage
69
- - `before_tool_call` - Security gate before tool execution
70
- - `after_tool_call` - Pain/trust tracking after tool execution
71
- - `llm_output` - LLM response analysis
72
- - `subagent_spawning` - Subagent lifecycle
73
- - `subagent_ended` - Subagent completion
74
- - `before_reset` / `before_compaction` / `after_compaction` - Workspace lifecycle
75
-
76
- **Outgoing:**
77
- - HTTP routes registered via `api.registerHttpRoute()` in `src/http/principles-console-route.ts`
78
-
79
- ---
80
-
81
- *Integration audit: 2026-04-15*
@@ -1,87 +0,0 @@
1
- # Technology Stack
2
-
3
- **Analysis Date:** 2026-04-15
4
-
5
- ## Languages
6
-
7
- **Primary:**
8
- - TypeScript 6.0.2 - Core plugin development
9
- - JSX/TSX - UI components
10
-
11
- **Secondary:**
12
- - JavaScript (ES2022) - Build scripts and configuration
13
-
14
- ## Runtime
15
-
16
- **Environment:**
17
- - Node.js 20 (build target via esbuild)
18
-
19
- **Package Manager:**
20
- - pnpm 9.x
21
- - Lockfile: `pnpm-lock.yaml` (present)
22
-
23
- ## Frameworks
24
-
25
- **Core:**
26
- - OpenClaw Plugin SDK (peer dependency) - Plugin architecture framework
27
- - React 19.2.0 - UI layer
28
- - React Router 7.9.4 - UI routing
29
-
30
- **Database:**
31
- - better-sqlite3 12.9.0 - Local SQLite database for trajectory and state persistence
32
-
33
- **UI Components:**
34
- - lucide-react 1.7.0 - Icon library
35
-
36
- **Build:**
37
- - esbuild 0.28.0 - Bundling plugin code
38
- - TypeScript 6.0.2 - Type checking and compilation
39
-
40
- **Testing:**
41
- - Vitest 4.1.0 - Test runner
42
- - @vitest/coverage-v8 4.1.0 - Coverage reporting
43
- - jsdom 29.0.1 - DOM environment for React testing
44
- - @testing-library/react 16.3.0 - React component testing
45
-
46
- **Linting:**
47
- - ESLint 10.1.0 - Code linting
48
- - @typescript-eslint packages 8.58.0 - TypeScript ESLint support
49
-
50
- ## Key Dependencies
51
-
52
- **Critical:**
53
- - `@sinclair/typebox` 0.34.48 - JSON schema type generation
54
- - `micromatch` 4.0.8 - Glob pattern matching for file paths
55
-
56
- **Database:**
57
- - `@types/better-sqlite3` 7.6.13 - TypeScript types for SQLite
58
-
59
- **HTTP/WebSocket:**
60
- - `ws` 8.18.0 - WebSocket support
61
- - `@types/ws` 8.5.13 - TypeScript types for WebSocket
62
-
63
- ## Configuration
64
-
65
- **Environment:**
66
- - Plugin configuration via `openclaw.plugin.json`
67
- - Workspace-level settings in `.state/pain_settings.json`
68
- - No `.env` files (configuration is code-driven)
69
-
70
- **Build:**
71
- - `tsconfig.json` - TypeScript configuration (target: ES2022, module: ESNext)
72
- - `esbuild.config.js` - Bundle configuration
73
- - `vitest.config.ts` - Test configuration with layered projects (unit/integration)
74
-
75
- ## Platform Requirements
76
-
77
- **Development:**
78
- - Node.js 20+
79
- - pnpm 9+
80
-
81
- **Production:**
82
- - OpenClaw >=2026.4.4 (peer dependency)
83
- - Node.js 20 runtime
84
-
85
- ---
86
-
87
- *Stack analysis: 2026-04-15*
@@ -1,193 +0,0 @@
1
- # Codebase Structure
2
-
3
- **Analysis Date:** 2026-04-15
4
-
5
- ## Directory Layout
6
-
7
- ```
8
- openclaw-plugin/
9
- ├── src/ # Main source code
10
- │ ├── commands/ # Slash command implementations
11
- │ ├── config/ # Configuration defaults and errors
12
- │ ├── constants/ # Shared constants
13
- │ ├── core/ # Core business logic
14
- │ │ ├── hygiene/ # Hygiene tracking
15
- │ │ ├── principle-internalization/ # Principle lifecycle
16
- │ │ └── schema/ # Database schema and migrations
17
- │ ├── hooks/ # OpenClaw hook handlers
18
- │ ├── http/ # HTTP route handlers
19
- │ ├── i18n/ # Internationalization
20
- │ ├── service/ # Background services
21
- │ │ └── subagent-workflow/ # Workflow managers
22
- │ ├── tools/ # Plugin tools
23
- │ ├── types/ # TypeScript type definitions
24
- │ └── utils/ # Utility functions
25
- ├── ui/ # React UI
26
- │ └── src/
27
- │ ├── components/ # React components
28
- │ ├── context/ # React contexts
29
- │ ├── hooks/ # React hooks
30
- │ └── pages/ # Page components
31
- ├── tests/ # Test suite
32
- │ ├── commands/ # Command tests
33
- │ ├── core/ # Core module tests
34
- │ ├── fixtures/ # Test fixtures
35
- │ ├── hooks/ # Hook tests
36
- │ ├── integration/ # Integration tests
37
- │ ├── service/ # Service tests
38
- │ └── utils/ # Utility tests
39
- ├── templates/ # Workspace templates
40
- │ ├── langs/ # Language-specific templates
41
- │ └── workspace/ # Workspace structure templates
42
- ├── dist/ # Build output
43
- ├── scripts/ # Build scripts
44
- ├── .state/ # Runtime state (gitignored)
45
- └── .tmp/ # Temporary files (gitignored)
46
- ```
47
-
48
- ## Directory Purposes
49
-
50
- **src/commands/:**
51
- - Purpose: Slash command implementations
52
- - Contains: 20+ command handlers (strategy, focus, pain, rollback, nocturnal-review, nocturnal-train, etc.)
53
- - Key files: `strategy.ts`, `focus.ts`, `nocturnal-train.ts`, `nocturnal-rollout.ts`
54
-
55
- **src/core/:**
56
- - Purpose: Core business logic (evolution, trajectory, pain, training, rules)
57
- - Contains: 70+ core modules including `evolution-engine.ts`, `trajectory.ts`, `nocturnal-trinity.ts`, `pain.ts`, `principle-tree-ledger.ts`
58
- - Key files: `evolution-engine.ts`, `nocturnal-trinity.ts`, `rule-host.ts`
59
-
60
- **src/hooks/:**
61
- - Purpose: OpenClaw hook handlers for intercepting agent behavior
62
- - Contains: `prompt.ts`, `gate.ts`, `pain.ts`, `llm.ts`, `lifecycle.ts`, `subagent.ts`, `trajectory-collector.ts`
63
- - Key files: `gate.ts` (security), `prompt.ts` (context injection)
64
-
65
- **src/service/:**
66
- - Purpose: Background worker services
67
- - Contains: `evolution-worker.ts` (main worker), `nocturnal-service.ts`, `trajectory-service.ts`, `central-database.ts`
68
- - Key files: `evolution-worker.ts` (144KB, main async processor)
69
-
70
- **src/service/subagent-workflow/:**
71
- - Purpose: Workflow orchestration for complex subagent operations
72
- - Contains: `nocturnal-workflow-manager.ts`, `deep-reflect-workflow-manager.ts`, `empathy-observer-workflow-manager.ts`
73
- - Key files: `workflow-manager-base.ts`, `dynamic-timeout.ts`
74
-
75
- **src/utils/:**
76
- - Purpose: Shared utility functions
77
- - Contains: `io.ts` (atomic writes), `plugin-logger.ts`, `retry.ts`, `hashing.ts`, `file-lock.ts`
78
- - Key files: `io.ts` (critical for safe file operations)
79
-
80
- **src/schema/:**
81
- - Purpose: SQLite database schema and migrations
82
- - Contains: `schema-definitions.ts`, `migration-runner.ts`, `migrations/*.ts`
83
- - Migrations: 4 migrations (001-004)
84
-
85
- **ui/src/:**
86
- - Purpose: React-based plugin UI
87
- - Contains: Pages (Overview, Evolution, Feedback, GateMonitor), components (Shell, ProtectedRoute)
88
- - Key files: `App.tsx`, `pages/EvolutionPage.tsx`, `pages/FeedbackPage.tsx`
89
-
90
- ## Key File Locations
91
-
92
- **Entry Points:**
93
- - `src/index.ts`: Plugin entry point, registers all hooks/commands/tools
94
-
95
- **Configuration:**
96
- - `src/core/config.ts`: PainSettings defaults
97
- - `src/core/paths.ts`: Directory and file path constants (PD_DIRS, PD_FILES)
98
- - `openclaw.plugin.json`: Plugin manifest
99
-
100
- **Core Logic:**
101
- - `src/core/evolution-engine.ts`: Evolution processing (18KB)
102
- - `src/core/nocturnal-trinity.ts`: Nocturnal training orchestration (87KB - largest file)
103
- - `src/core/trajectory.ts`: Trajectory tracking (64KB)
104
- - `src/core/principle-tree-ledger.ts`: Principle lifecycle management (22KB)
105
- - `src/core/rule-host.ts`: Sandboxed rule execution (7KB)
106
-
107
- **Service Layer:**
108
- - `src/service/evolution-worker.ts`: Background evolution worker (144KB - largest file)
109
- - `src/service/nocturnal-service.ts`: Nocturnal training service (59KB)
110
- - `src/service/nocturnal-runtime.ts`: Runtime for nocturnal operations (24KB)
111
-
112
- **Testing:**
113
- - `tests/`: Test suite with unit and integration layers
114
- - `vitest.config.ts`: Test configuration with unit/integration project separation
115
-
116
- ## Naming Conventions
117
-
118
- **Files:**
119
- - TypeScript: `kebab-case.ts` or `camelCase.ts` depending on module type
120
- - Commands: `kebab-case.ts` (e.g., `nocturnal-review.ts`)
121
- - Core modules: `camelCase.ts` (e.g., `evolutionEngine.ts`)
122
- - React components: `PascalCase.tsx`
123
-
124
- **Directories:**
125
- - kebab-case: `subagent-workflow`, `principle-internalization`
126
-
127
- **Types:**
128
- - Interfaces: `PascalCase` (e.g., `PainSettings`, `EvolutionContext`)
129
- - Type aliases: `PascalCase`
130
- - Enums: `PascalCase`
131
-
132
- ## Where to Add New Code
133
-
134
- **New Command:**
135
- - Primary code: `src/commands/<name>.ts`
136
- - Handler registration: `src/index.ts` in `registerCommandWithAlias()` or `api.registerCommand()`
137
- - Tests: `tests/commands/<name>.test.ts`
138
-
139
- **New Hook Handler:**
140
- - Implementation: `src/hooks/<name>.ts`
141
- - Registration: `src/index.ts` in `api.on('<hook_name>', ...)` call
142
- - Tests: `tests/hooks/<name>.test.ts`
143
-
144
- **New Core Service:**
145
- - Implementation: `src/core/<name>.ts` or `src/service/<name>.ts`
146
- - Registration: `src/index.ts` in `api.registerService()`
147
- - Tests: `tests/core/<name>.test.ts` or `tests/service/<name>.test.ts`
148
-
149
- **New Workflow Manager:**
150
- - Implementation: `src/service/subagent-workflow/<name>-workflow-manager.ts`
151
- - Base class: `src/service/subagent-workflow/workflow-manager-base.ts`
152
- - Tests: `tests/service/subagent-workflow/<name>.test.ts`
153
-
154
- **New Database Migration:**
155
- - Implementation: `src/core/schema/migrations/<number>-<description>.ts`
156
- - Registration: `src/core/schema/migrations/index.ts`
157
- - Tests: Integration test in `tests/core/control-ui-db.test.ts`
158
-
159
- **New Utility:**
160
- - Shared: `src/utils/<name>.ts`
161
- - Tests: `tests/utils/<name>.test.ts`
162
-
163
- ## Special Directories
164
-
165
- **.state/:**
166
- - Purpose: Runtime state (per workspace)
167
- - Generated: Yes (created at runtime)
168
- - Committed: No (gitignored)
169
-
170
- **.tmp/:**
171
- - Purpose: Temporary files during build/dev
172
- - Generated: Yes
173
- - Committed: No (gitignored)
174
-
175
- **dist/:**
176
- - Purpose: Build output
177
- - Generated: Yes (by `npm run build`)
178
- - Committed: Yes (in some branches)
179
-
180
- **templates/:**
181
- - Purpose: Workspace template files copied on init
182
- - Generated: No
183
- - Committed: Yes
184
- - Contains: Language-specific templates (en, zh), workspace structure
185
-
186
- **node_modules/:**
187
- - Purpose: Dependencies
188
- - Generated: Yes (by pnpm install)
189
- - Committed: No
190
-
191
- ---
192
-
193
- *Structure analysis: 2026-04-15*