principles-disciple 1.72.0 → 1.73.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 (309) hide show
  1. package/openclaw.plugin.json +10 -5
  2. package/package.json +17 -19
  3. package/scripts/acceptance-test.mjs +16 -73
  4. package/scripts/sync-plugin.mjs +382 -77
  5. package/src/commands/archive-impl.ts +2 -1
  6. package/src/commands/capabilities.ts +2 -2
  7. package/src/commands/context.ts +2 -2
  8. package/src/commands/disable-impl.ts +2 -1
  9. package/src/commands/evolution-status.ts +16 -16
  10. package/src/commands/export.ts +12 -67
  11. package/src/commands/pain.ts +91 -1
  12. package/src/commands/principle-rollback.ts +2 -1
  13. package/src/commands/promote-impl.ts +7 -43
  14. package/src/commands/rollback-impl.ts +2 -1
  15. package/src/commands/rollback.ts +2 -1
  16. package/src/commands/samples.ts +2 -1
  17. package/src/commands/thinking-os.ts +2 -1
  18. package/src/config/errors.ts +18 -2
  19. package/src/constants/diagnostician.ts +2 -2
  20. package/src/constants/tools.ts +2 -1
  21. package/src/core/__tests__/focus-history.test.ts +210 -0
  22. package/src/core/config.ts +1 -1
  23. package/src/core/confirm-first-gate.ts +255 -0
  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 +38 -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/pain-diagnostic-gate.ts +154 -0
  37. package/src/core/pain-signal.ts +21 -138
  38. package/src/core/pain.ts +15 -88
  39. package/src/core/pd-task-reconciler.ts +26 -115
  40. package/src/core/pd-task-service.ts +9 -9
  41. package/src/core/pd-task-types.ts +23 -127
  42. package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +174 -0
  43. package/src/core/principle-compiler/code-validator.ts +15 -42
  44. package/src/core/principle-compiler/compiler.ts +100 -15
  45. package/src/core/principle-compiler/index.ts +5 -2
  46. package/src/core/principle-compiler/template-generator.ts +4 -104
  47. package/src/core/principle-injection.ts +10 -202
  48. package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +42 -0
  49. package/src/core/principle-internalization/lifecycle-read-model.ts +39 -242
  50. package/src/core/principle-internalization/principle-lifecycle-service.ts +12 -10
  51. package/src/core/principle-tree-ledger-adapter.ts +145 -0
  52. package/src/core/principle-tree-ledger.ts +8 -6
  53. package/src/core/reflection/reflection-context.ts +14 -109
  54. package/src/core/replay-engine.ts +8 -500
  55. package/src/core/rule-host-helpers.ts +5 -35
  56. package/src/core/rule-host-types.ts +10 -82
  57. package/src/core/rule-host.ts +6 -63
  58. package/src/core/runtime-v2-prompt-activation-reader.ts +231 -0
  59. package/src/core/session-tracker.ts +87 -101
  60. package/src/core/shadow-observation-registry.ts +19 -48
  61. package/src/core/trajectory.ts +3 -1
  62. package/src/core/workflow-funnel-loader.ts +62 -68
  63. package/src/core/workspace-context.ts +46 -0
  64. package/src/core/workspace-dir-service.ts +1 -1
  65. package/src/core/workspace-dir-validation.ts +18 -9
  66. package/src/hooks/AGENTS.md +1 -1
  67. package/src/hooks/gate-block-helper.ts +46 -44
  68. package/src/hooks/gate.ts +207 -7
  69. package/src/hooks/lifecycle.ts +30 -32
  70. package/src/hooks/llm.ts +60 -32
  71. package/src/hooks/pain.ts +297 -103
  72. package/src/hooks/prompt.ts +459 -439
  73. package/src/hooks/subagent.ts +2 -29
  74. package/src/i18n/commands.ts +2 -10
  75. package/src/index.ts +95 -85
  76. package/src/openclaw-sdk.ts +311 -0
  77. package/src/service/central-database.ts +8 -4
  78. package/src/service/evolution-queue-migration.ts +2 -1
  79. package/src/service/evolution-worker.ts +163 -1786
  80. package/src/service/internalization-trigger-adapter.ts +302 -0
  81. package/src/service/keyword-optimization-service.ts +4 -4
  82. package/src/service/monitoring-query-service.ts +1 -215
  83. package/src/service/queue-io.ts +60 -331
  84. package/src/service/runtime-summary-service.ts +59 -16
  85. package/src/service/subagent-workflow/index.ts +0 -41
  86. package/src/service/subagent-workflow/types.ts +9 -120
  87. package/src/service/subagent-workflow/workflow-store.ts +2 -119
  88. package/src/service/workflow-watchdog.ts +0 -43
  89. package/src/types/event-payload.ts +16 -74
  90. package/src/types/event-types.ts +39 -547
  91. package/src/types/hygiene-types.ts +7 -30
  92. package/src/types/principle-tree-schema.ts +20 -222
  93. package/src/types/queue.ts +15 -70
  94. package/src/types/runtime-summary.ts +5 -49
  95. package/src/utils/io.ts +10 -0
  96. package/src/utils/retry.ts +1 -1
  97. package/src/utils/shadow-fingerprint.ts +2 -2
  98. package/src/utils/workspace-resolver.ts +50 -0
  99. package/templates/langs/en/core/AGENTS.md +2 -2
  100. package/templates/langs/en/core/BOOT.md +1 -1
  101. package/templates/langs/en/core/HEARTBEAT.md +2 -2
  102. package/templates/langs/en/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
  103. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
  104. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
  105. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
  106. package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
  107. package/templates/langs/en/skills/ai-sprint-orchestration/runtime/.gitignore +2 -2
  108. package/templates/langs/en/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
  109. package/templates/langs/en/skills/evolve-task/SKILL.md +1 -1
  110. package/templates/langs/en/skills/pd-cli-operator/SKILL.md +67 -0
  111. package/templates/langs/en/skills/pd-diagnostician/SKILL.md +1 -1
  112. package/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
  113. package/templates/langs/en/skills/pd-pain-signal/SKILL.md +17 -39
  114. package/templates/langs/en/skills/pd-runtime-v2/SKILL.md +61 -0
  115. package/templates/langs/zh/core/AGENTS.md +2 -2
  116. package/templates/langs/zh/core/BOOT.md +1 -1
  117. package/templates/langs/zh/core/HEARTBEAT.md +2 -2
  118. package/templates/langs/zh/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
  119. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
  120. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
  121. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/nocturnal-trinity-quality-enhancement.json +8 -8
  122. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
  123. package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
  124. package/templates/langs/zh/skills/ai-sprint-orchestration/runtime/.gitignore +2 -2
  125. package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
  126. package/templates/langs/zh/skills/ai-sprint-orchestration/test/run.test.mjs +21 -5
  127. package/templates/langs/zh/skills/evolve-task/SKILL.md +2 -2
  128. package/templates/langs/zh/skills/pd-cli-operator/SKILL.md +67 -0
  129. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +1 -1
  130. package/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
  131. package/templates/langs/zh/skills/pd-pain-signal/SKILL.md +17 -38
  132. package/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +61 -0
  133. package/tests/build-artifacts.test.ts +1 -3
  134. package/tests/commands/evolution-status.test.ts +0 -118
  135. package/tests/core/bootstrap-rules.test.ts +1 -1
  136. package/tests/core/config.test.ts +1 -1
  137. package/tests/core/event-log.test.ts +35 -0
  138. package/tests/core/evolution-engine.test.ts +610 -0
  139. package/tests/core/file-store.test.ts +102 -0
  140. package/tests/core/focus-history.test.ts +203 -11
  141. package/tests/core/merge-gate-audit.test.ts +2 -169
  142. package/tests/core/model-deployment-registry.test.ts +7 -1
  143. package/tests/core/model-training-registry.test.ts +19 -0
  144. package/tests/core/observability.test.ts +0 -1
  145. package/tests/core/pain-diagnostic-gate.test.ts +498 -0
  146. package/tests/core/pain.test.ts +0 -1
  147. package/tests/core/principle-internalization/deprecated-readiness.test.ts +2 -2
  148. package/tests/core/principle-internalization/lifecycle-metrics.test.ts +2 -2
  149. package/tests/core/principle-internalization/{internalization-routing-policy.test.ts → lifecycle-routing-policy.test.ts} +6 -6
  150. package/tests/core/principle-internalization/lineage-source-retired.test.ts +56 -0
  151. package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +1 -23
  152. package/tests/core/principle-tree-ledger-adapter.test.ts +253 -0
  153. package/tests/core/reflection-context.test.ts +0 -14
  154. package/tests/core/replay-engine.test.ts +127 -215
  155. package/tests/core/rule-host-helpers.test.ts +2 -2
  156. package/tests/core/rule-implementation-runtime.test.ts +0 -27
  157. package/tests/core/workflow-funnel-loader.test.ts +162 -0
  158. package/tests/core/workspace-dir-validation.test.ts +8 -1
  159. package/tests/core-anti-growth.test.ts +192 -0
  160. package/tests/hook-workspace-nextaction-contract.test.ts +42 -0
  161. package/tests/hooks/confirm-first-gate.test.ts +333 -0
  162. package/tests/hooks/gate-auto-correct-shadow.test.ts +310 -0
  163. package/tests/hooks/gate-auto-correct.test.ts +665 -0
  164. package/tests/hooks/gate-rule-host-pipeline.test.ts +2 -1
  165. package/tests/hooks/pain.test.ts +269 -12
  166. package/tests/hooks/prompt-characterization.test.ts +500 -0
  167. package/tests/hooks/prompt-size-guard.test.ts +32 -17
  168. package/tests/hooks/runtime-v2-prompt-activation.test.ts +869 -0
  169. package/tests/index.test.ts +94 -1
  170. package/tests/integration/auto-entry-gate.test.ts +248 -0
  171. package/tests/integration/internalization-trigger-guard.test.ts +69 -0
  172. package/tests/integration/m8-legacy-paths.test.ts +63 -0
  173. package/tests/integration/runtime-v2-pain-guard.test.ts +125 -0
  174. package/tests/plugin-config-resolution-cutover.test.ts +359 -0
  175. package/tests/runtime-v2-discovery-guard.test.ts +154 -0
  176. package/tests/service/central-database.test.ts +457 -0
  177. package/tests/service/evolution-worker.correction-observer.test.ts +173 -0
  178. package/tests/service/evolution-worker.timeout.test.ts +11 -129
  179. package/tests/service/internalization-trigger-adapter.test.ts +251 -0
  180. package/tests/service/monitoring-query-service.test.ts +1 -47
  181. package/tests/service/queue-io.test.ts +1 -62
  182. package/tests/service/runtime-summary-service.test.ts +3 -1
  183. package/tests/service/workflow-watchdog.test.ts +0 -91
  184. package/tests/utils/file-lock.test.ts +5 -3
  185. package/tests/utils/session-key.test.ts +52 -0
  186. package/tests/utils/subagent-probe.test.ts +48 -1
  187. package/vitest.config.ts +4 -11
  188. package/.planning/codebase/ARCHITECTURE.md +0 -157
  189. package/.planning/codebase/CONCERNS.md +0 -145
  190. package/.planning/codebase/CONVENTIONS.md +0 -148
  191. package/.planning/codebase/INTEGRATIONS.md +0 -81
  192. package/.planning/codebase/STACK.md +0 -87
  193. package/.planning/codebase/STRUCTURE.md +0 -193
  194. package/.planning/codebase/TESTING.md +0 -243
  195. package/.planning/phases/01-basic-visualization/01-GAP-CLOSURE-VERIFICATION.md +0 -113
  196. package/docs/COMMAND_REFERENCE.md +0 -76
  197. package/docs/COMMAND_REFERENCE_EN.md +0 -79
  198. package/scripts/build-web.mjs +0 -46
  199. package/scripts/diagnose-nocturnal.mjs +0 -537
  200. package/scripts/seed-nocturnal-scenarios.mjs +0 -384
  201. package/src/commands/nocturnal-review.ts +0 -322
  202. package/src/commands/nocturnal-rollout.ts +0 -790
  203. package/src/commands/nocturnal-train.ts +0 -986
  204. package/src/commands/pd-reflect.ts +0 -88
  205. package/src/core/adaptive-thresholds.ts +0 -478
  206. package/src/core/diagnostician-task-store.ts +0 -192
  207. package/src/core/nocturnal-arbiter.ts +0 -715
  208. package/src/core/nocturnal-artifact-lineage.ts +0 -116
  209. package/src/core/nocturnal-artificer.ts +0 -257
  210. package/src/core/nocturnal-candidate-scoring.ts +0 -530
  211. package/src/core/nocturnal-compliance.ts +0 -1146
  212. package/src/core/nocturnal-dataset.ts +0 -763
  213. package/src/core/nocturnal-executability.ts +0 -428
  214. package/src/core/nocturnal-export.ts +0 -499
  215. package/src/core/nocturnal-paths.ts +0 -240
  216. package/src/core/nocturnal-reasoning-deriver.ts +0 -343
  217. package/src/core/nocturnal-rule-implementation-validator.ts +0 -246
  218. package/src/core/nocturnal-snapshot-contract.ts +0 -99
  219. package/src/core/nocturnal-trajectory-extractor.ts +0 -512
  220. package/src/core/nocturnal-trinity-types.ts +0 -218
  221. package/src/core/nocturnal-trinity.ts +0 -2680
  222. package/src/core/principle-internalization/deprecated-readiness.ts +0 -93
  223. package/src/core/principle-internalization/internalization-routing-policy.ts +0 -208
  224. package/src/core/principle-internalization/lifecycle-metrics.ts +0 -152
  225. package/src/http/principles-console-route.ts +0 -709
  226. package/src/service/central-health-service.ts +0 -49
  227. package/src/service/central-overview-service.ts +0 -138
  228. package/src/service/control-ui-query-service.ts +0 -900
  229. package/src/service/cooldown-strategy.ts +0 -97
  230. package/src/service/evolution-pain-context.ts +0 -79
  231. package/src/service/evolution-query-service.ts +0 -407
  232. package/src/service/health-query-service.ts +0 -1038
  233. package/src/service/nocturnal-config.ts +0 -214
  234. package/src/service/nocturnal-runtime.ts +0 -734
  235. package/src/service/nocturnal-service.ts +0 -1605
  236. package/src/service/nocturnal-target-selector.ts +0 -545
  237. package/src/service/sleep-cycle.ts +0 -157
  238. package/src/service/startup-reconciler.ts +0 -112
  239. package/src/service/subagent-workflow/correction-observer-types.ts +0 -82
  240. package/src/service/subagent-workflow/correction-observer-workflow-manager.ts +0 -250
  241. package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +0 -1
  242. package/src/service/subagent-workflow/dynamic-timeout.ts +0 -30
  243. package/src/service/subagent-workflow/empathy-observer-workflow-manager.ts +0 -268
  244. package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +0 -795
  245. package/src/service/subagent-workflow/runtime-direct-driver.ts +0 -268
  246. package/src/service/subagent-workflow/workflow-manager-base.ts +0 -580
  247. package/src/tools/write-pain-flag.ts +0 -215
  248. package/tests/commands/nocturnal-review.test.ts +0 -448
  249. package/tests/commands/nocturnal-train.test.ts +0 -97
  250. package/tests/commands/pd-reflect.test.ts +0 -49
  251. package/tests/core/adaptive-thresholds.test.ts +0 -261
  252. package/tests/core/nocturnal-arbiter.test.ts +0 -559
  253. package/tests/core/nocturnal-artifact-lineage.test.ts +0 -53
  254. package/tests/core/nocturnal-artificer.test.ts +0 -241
  255. package/tests/core/nocturnal-candidate-scoring.test.ts +0 -532
  256. package/tests/core/nocturnal-compliance-p-principles.test.ts +0 -133
  257. package/tests/core/nocturnal-compliance.test.ts +0 -646
  258. package/tests/core/nocturnal-dataset.test.ts +0 -892
  259. package/tests/core/nocturnal-e2e.test.ts +0 -234
  260. package/tests/core/nocturnal-executability.test.ts +0 -357
  261. package/tests/core/nocturnal-export.test.ts +0 -517
  262. package/tests/core/nocturnal-reasoning-deriver.test.ts +0 -372
  263. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +0 -428
  264. package/tests/core/nocturnal-rule-implementation-validator.test.ts +0 -127
  265. package/tests/core/nocturnal-snapshot-contract.test.ts +0 -121
  266. package/tests/core/nocturnal-trajectory-extractor.test.ts +0 -634
  267. package/tests/core/nocturnal-trinity.test.ts +0 -2053
  268. package/tests/core/pain-auto-repair.test.ts +0 -96
  269. package/tests/core/pain-integration.test.ts +0 -510
  270. package/tests/fixtures/nocturnal-reviewed-subset.json +0 -183
  271. package/tests/http/principles-console-route.test.ts +0 -162
  272. package/tests/integration/chaos-resilience.test.ts +0 -348
  273. package/tests/integration/empathy-workflow-integration.test.ts +0 -626
  274. package/tests/integration/pain-diagnostician-loop.e2e.test.ts +0 -380
  275. package/tests/service/control-ui-query-service.test.ts +0 -121
  276. package/tests/service/cooldown-strategy.test.ts +0 -164
  277. package/tests/service/data-endpoints-regression.test.ts +0 -834
  278. package/tests/service/empathy-observer-workflow-manager.test.ts +0 -175
  279. package/tests/service/evolution-worker.nocturnal.test.ts +0 -601
  280. package/tests/service/nocturnal-runtime-hardening.test.ts +0 -118
  281. package/tests/service/nocturnal-runtime.test.ts +0 -473
  282. package/tests/service/nocturnal-service-code-candidate.test.ts +0 -330
  283. package/tests/service/nocturnal-target-selector.test.ts +0 -615
  284. package/tests/service/startup-reconciler.test.ts +0 -148
  285. package/tests/tools/write-pain-flag.test.ts +0 -358
  286. package/ui/src/App.tsx +0 -45
  287. package/ui/src/api.ts +0 -220
  288. package/ui/src/charts.tsx +0 -955
  289. package/ui/src/components/ErrorState.tsx +0 -6
  290. package/ui/src/components/Loading.tsx +0 -13
  291. package/ui/src/components/ProtectedRoute.tsx +0 -12
  292. package/ui/src/components/Shell.tsx +0 -91
  293. package/ui/src/components/WorkspaceConfig.tsx +0 -178
  294. package/ui/src/components/index.ts +0 -5
  295. package/ui/src/context/auth.tsx +0 -80
  296. package/ui/src/context/theme.tsx +0 -66
  297. package/ui/src/hooks/useAutoRefresh.ts +0 -39
  298. package/ui/src/i18n/ui.ts +0 -473
  299. package/ui/src/main.tsx +0 -16
  300. package/ui/src/pages/EvolutionPage.tsx +0 -333
  301. package/ui/src/pages/FeedbackPage.tsx +0 -138
  302. package/ui/src/pages/GateMonitorPage.tsx +0 -136
  303. package/ui/src/pages/LoginPage.tsx +0 -89
  304. package/ui/src/pages/OverviewPage.tsx +0 -599
  305. package/ui/src/pages/SamplesPage.tsx +0 -174
  306. package/ui/src/pages/ThinkingModelsPage.tsx +0 -702
  307. package/ui/src/styles.css +0 -2020
  308. package/ui/src/types.ts +0 -384
  309. 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*