principles-disciple 1.8.1 → 1.8.2

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 (470) hide show
  1. package/ADVANCED_CONFIG_ZH.md +97 -0
  2. package/AGENT_INSTALL.md +173 -0
  3. package/AGENT_INSTALL_EN.md +173 -0
  4. package/INSTALL.md +256 -0
  5. package/SKILL.md +63 -0
  6. package/docs/COMMAND_REFERENCE.md +76 -0
  7. package/docs/COMMAND_REFERENCE_EN.md +79 -0
  8. package/esbuild.config.js +75 -0
  9. package/openclaw.plugin.json +4 -4
  10. package/package.json +11 -13
  11. package/scripts/build-web.mjs +46 -0
  12. package/scripts/install-dependencies.cjs +47 -0
  13. package/scripts/sync-plugin.mjs +802 -0
  14. package/scripts/verify-build.mjs +109 -0
  15. package/src/agents/nocturnal-dreamer.md +152 -0
  16. package/src/agents/nocturnal-philosopher.md +138 -0
  17. package/src/agents/nocturnal-reflector.md +126 -0
  18. package/src/agents/nocturnal-scribe.md +164 -0
  19. package/src/commands/capabilities.ts +85 -0
  20. package/{dist/commands/context.js → src/commands/context.ts} +78 -38
  21. package/src/commands/evolution-status.ts +146 -0
  22. package/src/commands/export.ts +111 -0
  23. package/src/commands/focus.ts +533 -0
  24. package/src/commands/nocturnal-review.ts +311 -0
  25. package/src/commands/nocturnal-rollout.ts +763 -0
  26. package/src/commands/nocturnal-train.ts +1002 -0
  27. package/{dist/commands/pain.js → src/commands/pain.ts} +68 -49
  28. package/src/commands/principle-rollback.ts +27 -0
  29. package/{dist/commands/rollback.js → src/commands/rollback.ts} +44 -12
  30. package/src/commands/samples.ts +60 -0
  31. package/src/commands/strategy.ts +38 -0
  32. package/{dist/commands/thinking-os.js → src/commands/thinking-os.ts} +59 -36
  33. package/src/commands/workflow-debug.ts +128 -0
  34. package/{dist/config/defaults/runtime.js → src/config/defaults/runtime.ts} +12 -5
  35. package/src/config/errors.ts +163 -0
  36. package/{dist/config/index.d.ts → src/config/index.ts} +2 -1
  37. package/src/constants/diagnostician.ts +66 -0
  38. package/src/constants/tools.ts +62 -0
  39. package/src/core/adaptive-thresholds.ts +476 -0
  40. package/{dist/core/config-service.js → src/core/config-service.ts} +7 -4
  41. package/{dist/core/config.js → src/core/config.ts} +158 -46
  42. package/src/core/control-ui-db.ts +435 -0
  43. package/{dist/core/detection-funnel.js → src/core/detection-funnel.ts} +36 -21
  44. package/{dist/core/detection-service.js → src/core/detection-service.ts} +7 -4
  45. package/{dist/core/dictionary-service.js → src/core/dictionary-service.ts} +7 -4
  46. package/{dist/core/dictionary.js → src/core/dictionary.ts} +57 -34
  47. package/src/core/empathy-keyword-matcher.ts +327 -0
  48. package/src/core/empathy-types.ts +218 -0
  49. package/src/core/event-log.ts +544 -0
  50. package/src/core/evolution-engine.ts +612 -0
  51. package/src/core/evolution-logger.ts +353 -0
  52. package/src/core/evolution-migration.ts +77 -0
  53. package/src/core/evolution-reducer.ts +731 -0
  54. package/src/core/evolution-types.ts +456 -0
  55. package/src/core/external-training-contract.ts +527 -0
  56. package/src/core/focus-history.ts +1458 -0
  57. package/src/core/hygiene/tracker.ts +117 -0
  58. package/{dist/core/init.js → src/core/init.ts} +39 -26
  59. package/src/core/local-worker-routing.ts +617 -0
  60. package/{dist/core/migration.js → src/core/migration.ts} +18 -11
  61. package/src/core/model-deployment-registry.ts +722 -0
  62. package/src/core/model-training-registry.ts +813 -0
  63. package/src/core/nocturnal-arbiter.ts +706 -0
  64. package/src/core/nocturnal-candidate-scoring.ts +392 -0
  65. package/src/core/nocturnal-compliance.ts +1075 -0
  66. package/src/core/nocturnal-dataset.ts +668 -0
  67. package/src/core/nocturnal-executability.ts +428 -0
  68. package/src/core/nocturnal-export.ts +390 -0
  69. package/{dist/core/nocturnal-paths.js → src/core/nocturnal-paths.ts} +49 -23
  70. package/src/core/nocturnal-trajectory-extractor.ts +484 -0
  71. package/src/core/nocturnal-trinity.ts +1384 -0
  72. package/src/core/pain.ts +122 -0
  73. package/{dist/core/path-resolver.js → src/core/path-resolver.ts} +157 -36
  74. package/{dist/core/paths.js → src/core/paths.ts} +13 -4
  75. package/src/core/principle-training-state.ts +450 -0
  76. package/src/core/profile.ts +226 -0
  77. package/src/core/promotion-gate.ts +822 -0
  78. package/{dist/core/risk-calculator.js → src/core/risk-calculator.ts} +42 -16
  79. package/{dist/core/session-tracker.js → src/core/session-tracker.ts} +175 -62
  80. package/src/core/shadow-observation-registry.ts +534 -0
  81. package/{dist/core/system-logger.js → src/core/system-logger.ts} +9 -5
  82. package/src/core/thinking-models.ts +217 -0
  83. package/src/core/training-program.ts +630 -0
  84. package/src/core/trajectory-types.ts +243 -0
  85. package/src/core/trajectory.ts +1673 -0
  86. package/{dist/core/workspace-context.js → src/core/workspace-context.ts} +57 -32
  87. package/src/hooks/bash-risk.ts +171 -0
  88. package/src/hooks/edit-verification.ts +295 -0
  89. package/src/hooks/gate-block-helper.ts +160 -0
  90. package/src/hooks/gate.ts +210 -0
  91. package/src/hooks/gfi-gate.ts +177 -0
  92. package/src/hooks/lifecycle.ts +326 -0
  93. package/{dist/hooks/llm.js → src/hooks/llm.ts} +160 -80
  94. package/src/hooks/message-sanitize.ts +45 -0
  95. package/src/hooks/pain.ts +384 -0
  96. package/src/hooks/progressive-trust-gate.ts +174 -0
  97. package/src/hooks/prompt.ts +920 -0
  98. package/src/hooks/subagent.ts +207 -0
  99. package/src/hooks/thinking-checkpoint.ts +73 -0
  100. package/src/hooks/trajectory-collector.ts +290 -0
  101. package/src/http/principles-console-route.ts +716 -0
  102. package/src/i18n/commands.ts +117 -0
  103. package/src/index.ts +694 -0
  104. package/src/service/central-database.ts +831 -0
  105. package/src/service/control-ui-query-service.ts +888 -0
  106. package/src/service/evolution-query-service.ts +405 -0
  107. package/src/service/evolution-worker.ts +1646 -0
  108. package/src/service/health-query-service.ts +836 -0
  109. package/{dist/service/nocturnal-runtime.js → src/service/nocturnal-runtime.ts} +235 -79
  110. package/src/service/nocturnal-service.ts +1015 -0
  111. package/src/service/nocturnal-target-selector.ts +532 -0
  112. package/src/service/phase3-input-filter.ts +237 -0
  113. package/src/service/runtime-summary-service.ts +757 -0
  114. package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +513 -0
  115. package/{dist/service/subagent-workflow/empathy-observer-workflow-manager.js → src/service/subagent-workflow/empathy-observer-workflow-manager.ts} +240 -117
  116. package/src/service/subagent-workflow/index.ts +51 -0
  117. package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +856 -0
  118. package/src/service/subagent-workflow/runtime-direct-driver.ts +166 -0
  119. package/{dist/service/subagent-workflow/types.d.ts → src/service/subagent-workflow/types.ts} +137 -18
  120. package/src/service/subagent-workflow/workflow-store.ts +328 -0
  121. package/src/service/trajectory-service.ts +15 -0
  122. package/{dist/tools/critique-prompt.js → src/tools/critique-prompt.ts} +25 -8
  123. package/src/tools/deep-reflect.ts +349 -0
  124. package/{dist/tools/model-index.js → src/tools/model-index.ts} +33 -17
  125. package/src/types/event-types.ts +453 -0
  126. package/src/types/hygiene-types.ts +31 -0
  127. package/src/types/principle-tree-schema.ts +244 -0
  128. package/src/types/runtime-summary.ts +49 -0
  129. package/src/types.ts +74 -0
  130. package/src/utils/file-lock.ts +391 -0
  131. package/{dist/utils/glob-match.js → src/utils/glob-match.ts} +21 -20
  132. package/{dist/utils/hashing.js → src/utils/hashing.ts} +6 -4
  133. package/src/utils/io.ts +110 -0
  134. package/{dist/utils/nlp.js → src/utils/nlp.ts} +19 -12
  135. package/{dist/utils/plugin-logger.js → src/utils/plugin-logger.ts} +33 -8
  136. package/src/utils/subagent-probe.ts +94 -0
  137. package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +70 -1
  138. package/templates/pain_settings.json +2 -1
  139. package/tests/README.md +120 -0
  140. package/tests/build-artifacts.test.ts +111 -0
  141. package/tests/commands/evolution-status.test.ts +222 -0
  142. package/tests/commands/evolver.test.ts +22 -0
  143. package/tests/commands/export.test.ts +78 -0
  144. package/tests/commands/nocturnal-review.test.ts +448 -0
  145. package/tests/commands/nocturnal-train.test.ts +97 -0
  146. package/tests/commands/pain.test.ts +108 -0
  147. package/tests/commands/samples.test.ts +65 -0
  148. package/tests/commands/strategy.test.ts +34 -0
  149. package/tests/commands/thinking-os.test.ts +88 -0
  150. package/tests/core/adaptive-thresholds.test.ts +261 -0
  151. package/tests/core/config-service.test.ts +89 -0
  152. package/tests/core/config.test.ts +90 -0
  153. package/tests/core/control-ui-db.test.ts +75 -0
  154. package/tests/core/core-template-guidance.test.ts +21 -0
  155. package/tests/core/detection-funnel.test.ts +63 -0
  156. package/tests/core/detection-service.test.ts +50 -0
  157. package/tests/core/dictionary-service.test.ts +116 -0
  158. package/tests/core/dictionary.test.ts +168 -0
  159. package/tests/core/empathy-keyword-matcher.test.ts +209 -0
  160. package/tests/core/event-log.test.ts +181 -0
  161. package/tests/core/evolution-e2e.test.ts +58 -0
  162. package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
  163. package/tests/core/evolution-engine.test.ts +562 -0
  164. package/tests/core/evolution-logger.test.ts +148 -0
  165. package/tests/core/evolution-migration.test.ts +50 -0
  166. package/tests/core/evolution-paths.test.ts +21 -0
  167. package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
  168. package/tests/core/evolution-reducer.test.ts +180 -0
  169. package/tests/core/evolution-types-loop.test.ts +48 -0
  170. package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
  171. package/tests/core/external-training-contract.test.ts +463 -0
  172. package/tests/core/focus-history.test.ts +682 -0
  173. package/tests/core/init-flatten.test.ts +69 -0
  174. package/tests/core/init-refactor.test.ts +87 -0
  175. package/tests/core/init-v1.3.test.ts +46 -0
  176. package/tests/core/init.test.ts +190 -0
  177. package/tests/core/local-worker-routing.test.ts +757 -0
  178. package/tests/core/migration.test.ts +84 -0
  179. package/tests/core/model-deployment-registry.test.ts +845 -0
  180. package/tests/core/model-training-registry.test.ts +889 -0
  181. package/tests/core/nocturnal-arbiter.test.ts +494 -0
  182. package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
  183. package/tests/core/nocturnal-compliance.test.ts +646 -0
  184. package/tests/core/nocturnal-dataset.test.ts +892 -0
  185. package/tests/core/nocturnal-executability.test.ts +357 -0
  186. package/tests/core/nocturnal-export.test.ts +462 -0
  187. package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
  188. package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
  189. package/tests/core/nocturnal-trinity.test.ts +953 -0
  190. package/tests/core/pain.test.ts +33 -0
  191. package/tests/core/path-resolver.test.ts +57 -0
  192. package/tests/core/paths-refactor.test.ts +42 -0
  193. package/tests/core/phase7-rollout-integration.test.ts +477 -0
  194. package/tests/core/principle-training-state.test.ts +712 -0
  195. package/tests/core/profile.test.ts +56 -0
  196. package/tests/core/promotion-gate.test.ts +556 -0
  197. package/tests/core/risk-calculator.test.ts +168 -0
  198. package/tests/core/session-tracker.test.ts +191 -0
  199. package/tests/core/training-program.test.ts +472 -0
  200. package/tests/core/trajectory.test.ts +265 -0
  201. package/tests/core/workspace-context-factory.test.ts +18 -0
  202. package/tests/core/workspace-context.test.ts +134 -0
  203. package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
  204. package/tests/fixtures/production-compatibility.test.ts +147 -0
  205. package/tests/fixtures/production-mock-generator.ts +282 -0
  206. package/tests/hooks/bash-risk-integration.test.ts +137 -0
  207. package/tests/hooks/bash-risk.test.ts +81 -0
  208. package/tests/hooks/edit-verification.test.ts +678 -0
  209. package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
  210. package/tests/hooks/gate-edit-verification.test.ts +435 -0
  211. package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
  212. package/tests/hooks/gate.test.ts +271 -0
  213. package/tests/hooks/gfi-gate-unit.test.ts +422 -0
  214. package/tests/hooks/gfi-gate.test.ts +669 -0
  215. package/tests/hooks/lifecycle.test.ts +248 -0
  216. package/tests/hooks/llm.test.ts +308 -0
  217. package/tests/hooks/message-sanitize.test.ts +36 -0
  218. package/tests/hooks/pain.test.ts +141 -0
  219. package/tests/hooks/progressive-trust-gate.test.ts +277 -0
  220. package/tests/hooks/prompt.test.ts +1411 -0
  221. package/tests/hooks/subagent.test.ts +467 -0
  222. package/tests/hooks/thinking-gate.test.ts +313 -0
  223. package/tests/http/principles-console-route.test.ts +140 -0
  224. package/tests/hygiene-tracker.test.ts +77 -0
  225. package/tests/index.integration.test.ts +179 -0
  226. package/tests/index.shadow-routing.integration.test.ts +140 -0
  227. package/tests/index.test.ts +9 -0
  228. package/tests/integration/empathy-workflow-integration.test.ts +627 -0
  229. package/tests/service/control-ui-query-service.test.ts +121 -0
  230. package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
  231. package/tests/service/evolution-worker.test.ts +585 -0
  232. package/tests/service/nocturnal-runtime.test.ts +470 -0
  233. package/tests/service/nocturnal-service.test.ts +577 -0
  234. package/tests/service/nocturnal-target-selector.test.ts +615 -0
  235. package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
  236. package/tests/service/phase3-input-filter.test.ts +289 -0
  237. package/tests/service/runtime-summary-service.test.ts +919 -0
  238. package/tests/task-compliance.test.ts +166 -0
  239. package/tests/test-utils.ts +48 -0
  240. package/tests/tools/critique-prompt.test.ts +260 -0
  241. package/tests/tools/deep-reflect.test.ts +232 -0
  242. package/tests/tools/model-index.test.ts +246 -0
  243. package/tests/ui/app.test.tsx +114 -0
  244. package/tests/utils/file-lock.test.ts +407 -0
  245. package/tests/utils/hashing.test.ts +32 -0
  246. package/tests/utils/io.test.ts +39 -0
  247. package/tests/utils/nlp.test.ts +53 -0
  248. package/tests/utils/plugin-logger.test.ts +156 -0
  249. package/tsconfig.json +16 -0
  250. package/tsconfig.tsbuildinfo +1 -0
  251. package/ui/src/App.tsx +45 -0
  252. package/ui/src/api.ts +216 -0
  253. package/ui/src/charts.tsx +586 -0
  254. package/ui/src/components/ErrorState.tsx +6 -0
  255. package/ui/src/components/Loading.tsx +13 -0
  256. package/ui/src/components/ProtectedRoute.tsx +12 -0
  257. package/ui/src/components/Shell.tsx +91 -0
  258. package/ui/src/components/WorkspaceConfig.tsx +146 -0
  259. package/ui/src/components/index.ts +5 -0
  260. package/ui/src/context/auth.tsx +80 -0
  261. package/ui/src/context/theme.tsx +66 -0
  262. package/ui/src/hooks/useAutoRefresh.ts +39 -0
  263. package/ui/src/i18n/ui.ts +363 -0
  264. package/ui/src/main.tsx +16 -0
  265. package/ui/src/pages/EvolutionPage.tsx +352 -0
  266. package/ui/src/pages/FeedbackPage.tsx +140 -0
  267. package/ui/src/pages/GateMonitorPage.tsx +136 -0
  268. package/ui/src/pages/LoginPage.tsx +88 -0
  269. package/ui/src/pages/OverviewPage.tsx +238 -0
  270. package/ui/src/pages/SamplesPage.tsx +174 -0
  271. package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
  272. package/ui/src/styles.css +1661 -0
  273. package/ui/src/types.ts +368 -0
  274. package/ui/src/utils/format.ts +15 -0
  275. package/vitest.config.ts +23 -0
  276. package/dist/commands/capabilities.d.ts +0 -3
  277. package/dist/commands/capabilities.js +0 -73
  278. package/dist/commands/context.d.ts +0 -5
  279. package/dist/commands/evolution-status.d.ts +0 -4
  280. package/dist/commands/evolution-status.js +0 -117
  281. package/dist/commands/evolver.d.ts +0 -9
  282. package/dist/commands/evolver.js +0 -26
  283. package/dist/commands/export.d.ts +0 -2
  284. package/dist/commands/export.js +0 -98
  285. package/dist/commands/focus.d.ts +0 -14
  286. package/dist/commands/focus.js +0 -457
  287. package/dist/commands/nocturnal-review.d.ts +0 -24
  288. package/dist/commands/nocturnal-review.js +0 -265
  289. package/dist/commands/nocturnal-rollout.d.ts +0 -27
  290. package/dist/commands/nocturnal-rollout.js +0 -671
  291. package/dist/commands/nocturnal-train.d.ts +0 -25
  292. package/dist/commands/nocturnal-train.js +0 -919
  293. package/dist/commands/pain.d.ts +0 -5
  294. package/dist/commands/principle-rollback.d.ts +0 -4
  295. package/dist/commands/principle-rollback.js +0 -22
  296. package/dist/commands/rollback.d.ts +0 -19
  297. package/dist/commands/samples.d.ts +0 -2
  298. package/dist/commands/samples.js +0 -55
  299. package/dist/commands/strategy.d.ts +0 -3
  300. package/dist/commands/strategy.js +0 -29
  301. package/dist/commands/thinking-os.d.ts +0 -2
  302. package/dist/config/defaults/runtime.d.ts +0 -40
  303. package/dist/config/errors.d.ts +0 -84
  304. package/dist/config/errors.js +0 -94
  305. package/dist/config/index.js +0 -7
  306. package/dist/constants/diagnostician.d.ts +0 -12
  307. package/dist/constants/diagnostician.js +0 -56
  308. package/dist/constants/tools.d.ts +0 -17
  309. package/dist/constants/tools.js +0 -54
  310. package/dist/core/adaptive-thresholds.d.ts +0 -186
  311. package/dist/core/adaptive-thresholds.js +0 -300
  312. package/dist/core/config-service.d.ts +0 -15
  313. package/dist/core/config.d.ts +0 -129
  314. package/dist/core/control-ui-db.d.ts +0 -95
  315. package/dist/core/control-ui-db.js +0 -292
  316. package/dist/core/detection-funnel.d.ts +0 -33
  317. package/dist/core/detection-service.d.ts +0 -15
  318. package/dist/core/dictionary-service.d.ts +0 -15
  319. package/dist/core/dictionary.d.ts +0 -38
  320. package/dist/core/event-log.d.ts +0 -82
  321. package/dist/core/event-log.js +0 -463
  322. package/dist/core/evolution-engine.d.ts +0 -118
  323. package/dist/core/evolution-engine.js +0 -464
  324. package/dist/core/evolution-logger.d.ts +0 -137
  325. package/dist/core/evolution-logger.js +0 -256
  326. package/dist/core/evolution-migration.d.ts +0 -5
  327. package/dist/core/evolution-migration.js +0 -65
  328. package/dist/core/evolution-reducer.d.ts +0 -98
  329. package/dist/core/evolution-reducer.js +0 -465
  330. package/dist/core/evolution-types.d.ts +0 -287
  331. package/dist/core/evolution-types.js +0 -78
  332. package/dist/core/external-training-contract.d.ts +0 -276
  333. package/dist/core/external-training-contract.js +0 -269
  334. package/dist/core/focus-history.d.ts +0 -210
  335. package/dist/core/focus-history.js +0 -1185
  336. package/dist/core/hygiene/tracker.d.ts +0 -22
  337. package/dist/core/hygiene/tracker.js +0 -106
  338. package/dist/core/init.d.ts +0 -12
  339. package/dist/core/local-worker-routing.d.ts +0 -175
  340. package/dist/core/local-worker-routing.js +0 -525
  341. package/dist/core/migration.d.ts +0 -6
  342. package/dist/core/model-deployment-registry.d.ts +0 -218
  343. package/dist/core/model-deployment-registry.js +0 -503
  344. package/dist/core/model-training-registry.d.ts +0 -295
  345. package/dist/core/model-training-registry.js +0 -475
  346. package/dist/core/nocturnal-arbiter.d.ts +0 -159
  347. package/dist/core/nocturnal-arbiter.js +0 -534
  348. package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
  349. package/dist/core/nocturnal-candidate-scoring.js +0 -266
  350. package/dist/core/nocturnal-compliance.d.ts +0 -175
  351. package/dist/core/nocturnal-compliance.js +0 -824
  352. package/dist/core/nocturnal-dataset.d.ts +0 -224
  353. package/dist/core/nocturnal-dataset.js +0 -443
  354. package/dist/core/nocturnal-executability.d.ts +0 -85
  355. package/dist/core/nocturnal-executability.js +0 -331
  356. package/dist/core/nocturnal-export.d.ts +0 -124
  357. package/dist/core/nocturnal-export.js +0 -275
  358. package/dist/core/nocturnal-paths.d.ts +0 -124
  359. package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
  360. package/dist/core/nocturnal-trajectory-extractor.js +0 -307
  361. package/dist/core/nocturnal-trinity.d.ts +0 -311
  362. package/dist/core/nocturnal-trinity.js +0 -880
  363. package/dist/core/pain.d.ts +0 -4
  364. package/dist/core/pain.js +0 -70
  365. package/dist/core/path-resolver.d.ts +0 -46
  366. package/dist/core/paths.d.ts +0 -65
  367. package/dist/core/principle-training-state.d.ts +0 -121
  368. package/dist/core/principle-training-state.js +0 -321
  369. package/dist/core/profile.d.ts +0 -62
  370. package/dist/core/profile.js +0 -210
  371. package/dist/core/promotion-gate.d.ts +0 -238
  372. package/dist/core/promotion-gate.js +0 -529
  373. package/dist/core/risk-calculator.d.ts +0 -22
  374. package/dist/core/session-tracker.d.ts +0 -101
  375. package/dist/core/shadow-observation-registry.d.ts +0 -217
  376. package/dist/core/shadow-observation-registry.js +0 -308
  377. package/dist/core/system-logger.d.ts +0 -8
  378. package/dist/core/thinking-models.d.ts +0 -38
  379. package/dist/core/thinking-models.js +0 -170
  380. package/dist/core/training-program.d.ts +0 -233
  381. package/dist/core/training-program.js +0 -433
  382. package/dist/core/trajectory.d.ts +0 -411
  383. package/dist/core/trajectory.js +0 -1307
  384. package/dist/core/workspace-context.d.ts +0 -71
  385. package/dist/hooks/bash-risk.d.ts +0 -57
  386. package/dist/hooks/bash-risk.js +0 -137
  387. package/dist/hooks/edit-verification.d.ts +0 -62
  388. package/dist/hooks/edit-verification.js +0 -256
  389. package/dist/hooks/gate-block-helper.d.ts +0 -44
  390. package/dist/hooks/gate-block-helper.js +0 -119
  391. package/dist/hooks/gate.d.ts +0 -24
  392. package/dist/hooks/gate.js +0 -173
  393. package/dist/hooks/gfi-gate.d.ts +0 -40
  394. package/dist/hooks/gfi-gate.js +0 -113
  395. package/dist/hooks/lifecycle.d.ts +0 -5
  396. package/dist/hooks/lifecycle.js +0 -284
  397. package/dist/hooks/llm.d.ts +0 -13
  398. package/dist/hooks/message-sanitize.d.ts +0 -3
  399. package/dist/hooks/message-sanitize.js +0 -37
  400. package/dist/hooks/pain.d.ts +0 -5
  401. package/dist/hooks/pain.js +0 -301
  402. package/dist/hooks/progressive-trust-gate.d.ts +0 -52
  403. package/dist/hooks/progressive-trust-gate.js +0 -134
  404. package/dist/hooks/prompt.d.ts +0 -49
  405. package/dist/hooks/prompt.js +0 -905
  406. package/dist/hooks/subagent.d.ts +0 -10
  407. package/dist/hooks/subagent.js +0 -387
  408. package/dist/hooks/thinking-checkpoint.d.ts +0 -37
  409. package/dist/hooks/thinking-checkpoint.js +0 -51
  410. package/dist/hooks/trajectory-collector.d.ts +0 -32
  411. package/dist/hooks/trajectory-collector.js +0 -256
  412. package/dist/http/principles-console-route.d.ts +0 -9
  413. package/dist/http/principles-console-route.js +0 -681
  414. package/dist/i18n/commands.d.ts +0 -26
  415. package/dist/i18n/commands.js +0 -116
  416. package/dist/index.d.ts +0 -7
  417. package/dist/index.js +0 -581
  418. package/dist/service/central-database.d.ts +0 -104
  419. package/dist/service/central-database.js +0 -649
  420. package/dist/service/control-ui-query-service.d.ts +0 -221
  421. package/dist/service/control-ui-query-service.js +0 -543
  422. package/dist/service/empathy-observer-manager.d.ts +0 -88
  423. package/dist/service/empathy-observer-manager.js +0 -414
  424. package/dist/service/evolution-query-service.d.ts +0 -155
  425. package/dist/service/evolution-query-service.js +0 -258
  426. package/dist/service/evolution-worker.d.ts +0 -101
  427. package/dist/service/evolution-worker.js +0 -975
  428. package/dist/service/health-query-service.d.ts +0 -170
  429. package/dist/service/health-query-service.js +0 -662
  430. package/dist/service/nocturnal-runtime.d.ts +0 -183
  431. package/dist/service/nocturnal-service.d.ts +0 -163
  432. package/dist/service/nocturnal-service.js +0 -787
  433. package/dist/service/nocturnal-target-selector.d.ts +0 -145
  434. package/dist/service/nocturnal-target-selector.js +0 -315
  435. package/dist/service/phase3-input-filter.d.ts +0 -73
  436. package/dist/service/phase3-input-filter.js +0 -172
  437. package/dist/service/runtime-summary-service.d.ts +0 -122
  438. package/dist/service/runtime-summary-service.js +0 -485
  439. package/dist/service/subagent-workflow/empathy-observer-workflow-manager.d.ts +0 -48
  440. package/dist/service/subagent-workflow/index.d.ts +0 -4
  441. package/dist/service/subagent-workflow/index.js +0 -3
  442. package/dist/service/subagent-workflow/runtime-direct-driver.d.ts +0 -77
  443. package/dist/service/subagent-workflow/runtime-direct-driver.js +0 -75
  444. package/dist/service/subagent-workflow/types.js +0 -11
  445. package/dist/service/subagent-workflow/workflow-store.d.ts +0 -26
  446. package/dist/service/subagent-workflow/workflow-store.js +0 -165
  447. package/dist/service/trajectory-service.d.ts +0 -2
  448. package/dist/service/trajectory-service.js +0 -15
  449. package/dist/tools/critique-prompt.d.ts +0 -14
  450. package/dist/tools/deep-reflect.d.ts +0 -39
  451. package/dist/tools/deep-reflect.js +0 -350
  452. package/dist/tools/model-index.d.ts +0 -9
  453. package/dist/types/event-types.d.ts +0 -306
  454. package/dist/types/event-types.js +0 -106
  455. package/dist/types/hygiene-types.d.ts +0 -20
  456. package/dist/types/hygiene-types.js +0 -12
  457. package/dist/types/runtime-summary.d.ts +0 -47
  458. package/dist/types/runtime-summary.js +0 -1
  459. package/dist/types.d.ts +0 -50
  460. package/dist/types.js +0 -22
  461. package/dist/utils/file-lock.d.ts +0 -71
  462. package/dist/utils/file-lock.js +0 -309
  463. package/dist/utils/glob-match.d.ts +0 -28
  464. package/dist/utils/hashing.d.ts +0 -9
  465. package/dist/utils/io.d.ts +0 -6
  466. package/dist/utils/io.js +0 -106
  467. package/dist/utils/nlp.d.ts +0 -9
  468. package/dist/utils/plugin-logger.d.ts +0 -39
  469. package/dist/utils/subagent-probe.d.ts +0 -34
  470. package/dist/utils/subagent-probe.js +0 -81
package/SKILL.md ADDED
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: principles-disciple
3
+ description: Evolutionary programming agent framework with control-plane observability, pain-driven learning, and guarded execution.
4
+ version: 1.7.0
5
+ author: Principles Disciple Team
6
+ tags: [core, safety, evolution, control-plane]
7
+ ---
8
+
9
+ # Principles Disciple
10
+
11
+ An evolutionary agent framework built around pain signals, guarded execution, and a separable control plane.
12
+
13
+ ## Current Model
14
+
15
+ - `Pain` captures failure and frustration signals
16
+ - `GFI` is the short-term friction brake
17
+ - `Gate` is the execution intercept layer
18
+ - `Evolution` is the learning plane with EP (Evolution Points) as the sole gating mechanism
19
+ - `EP Tier` determines agent capabilities (Seed → Sprout → Sapling → Tree → Forest)
20
+
21
+ ## Key Commands
22
+
23
+ | Command | Description |
24
+ |---|---|
25
+ | `/pd-evolution-status` | Show the current control-plane and evolution summary |
26
+ | `/pd-evolve` | Run an evolution task |
27
+ | `/pd-rollback` | Roll back the latest or specified empathy penalty |
28
+ | `/pd-help` | Show help |
29
+
30
+ ## `/pd-evolution-status` Example
31
+
32
+ ```text
33
+ Evolution Status
34
+ ================
35
+
36
+ Control Plane
37
+ - EP Tier: Sapling (200 points)
38
+ - Session GFI: current 18, peak 25 (partial)
39
+ - GFI Sources: user_empathy(18)
40
+ - Pain Flag: inactive
41
+ - Last Pain Signal: user_empathy - buffered empathy event
42
+ - Gate Events: blocks 1, bypasses 0 (authoritative)
43
+
44
+ Evolution
45
+ - Queue: pending 1, in_progress 0, completed 0 (authoritative)
46
+ - Directive: present, active yes, age 5m
47
+ - Directive Task: fix something important
48
+ ```
49
+
50
+ ## Important Behavior Notes
51
+
52
+ - `/pd-rollback` now removes only the `user_empathy` GFI slice; it does not wipe the full session GFI.
53
+
54
+ ## Usage
55
+
56
+ Use Principles Disciple to:
57
+
58
+ - observe runtime control-plane state
59
+ - capture pain signals and empathy signals
60
+ - guard risky actions through Gate
61
+ - feed lessons into the evolution pipeline without turning evolution into a second authority system
62
+
63
+ This skill is designed to support the current observation window before any `Capability shadow` rollout.
@@ -0,0 +1,76 @@
1
+ # Principles Disciple Command Reference
2
+
3
+ > 当前版本重点:EP (Evolution Points) 系统已接替 trust score 成为唯一门控机制。
4
+ > `rollback` 只回滚 `user_empathy` slice,`/pd-evolution-status` 读的是运行时 summary。
5
+
6
+ ---
7
+
8
+ ## 核心命令
9
+
10
+ | 命令 | 用途 | 当前口径 |
11
+ |---|---|---|
12
+ | `/pd-evolution-status` | 查看控制面与进化面的当前状态 | 读取 `RuntimeSummaryService` 的 canonical state |
13
+ | `/pd-status empathy` | 查看情绪/共情事件统计 | 用于观察 `user_empathy` 与 `system_infer` 事件是否稳定落日志 |
14
+ | `/pd-rollback last` | 回滚最近一次情绪惩罚 | 只回滚 `user_empathy` 对应的 GFI slice |
15
+ | `/pd-evolve` | 执行进化任务 | 属于学习面,通过 EP 积累提升权限 |
16
+ | `/pd-help` | 显示帮助 | |
17
+
18
+ ---
19
+
20
+ ## `/pd-evolution-status`
21
+
22
+ ### 它现在显示什么
23
+
24
+ - `EP Tier`: 当前 EP 等级 (Seed → Sprout → Sapling → Tree → Forest)
25
+ - `Session GFI`: 当前会话 GFI 与峰值
26
+ - `GFI Sources`: 当前 summary 能解释出来的 friction 来源
27
+ - `Pain Flag`: pain flag 是否激活
28
+ - `Gate Events`: 最近的 block / bypass
29
+ - `Queue / Directive`: evolution queue 与 directive 的当前状态
30
+
31
+ ### 重要说明
32
+
33
+ - 这是当前控制面的权威读模型入口。
34
+ - 它优先读取 canonical `.state`,并尽量合并 live session / buffered events。
35
+ - 如果数据不完整,会显示 `partial` 或 warning,而不是静默显示 `0`。
36
+
37
+ ---
38
+
39
+ ## `/pd-rollback`
40
+
41
+ ### 当前行为
42
+
43
+ - `/pd-rollback last`
44
+ - `/pd-rollback <event-id>`
45
+
46
+ 回滚的是最近一次或指定的 `user_empathy` 事件。
47
+
48
+ ### 重要变化
49
+
50
+ - 现在只回滚 `user_empathy` 对应的 GFI slice
51
+ - 不再把整段 session GFI 一起清空
52
+ - 如果事件不存在或来源不匹配,不会误伤其他 friction
53
+
54
+ ---
55
+
56
+ ## EP 等级说明
57
+
58
+ | 等级 | EP 要求 | 权限 |
59
+ |---|---|---|
60
+ | Seed | 0 | 只读 + 基础文档 |
61
+ | Sprout | 50 | 单文件编辑 |
62
+ | Sapling | 200 | 多文件 + 测试 + 子智能体 |
63
+ | Tree | 500 | 重构 + 风险路径 |
64
+ | Forest | 1000 | 无限制 |
65
+
66
+ ---
67
+
68
+ ## 观察窗口建议
69
+
70
+ 在进入 `Phase 3 capability shadow` 之前,优先每天检查:
71
+
72
+ 1. `user_empathy` / `system_infer` 是否稳定进入 `events.jsonl`
73
+ 2. rollback 是否只影响 empathy slice
74
+ 3. `evolution_queue.json`、`evolution_directive.json` 与 status 是否一致
75
+ 4. summary 是否仍然需要 `partial` 警告才能解释当前状态
76
+ 5. EP 积累是否正常驱动等级提升
@@ -0,0 +1,79 @@
1
+ # Principles Disciple Command Reference (English)
2
+
3
+ > Current state: EP (Evolution Points) system is the primary growth system, fully operational and enabled by default.
4
+
5
+ ---
6
+
7
+ ## Core Commands
8
+
9
+ | Command | Purpose |
10
+ |---|---|
11
+ | `/pd-evolution-status` | View EP tier, GFI, pain flag, and gate events |
12
+ | `/pd-status empathy` | Inspect empathy/frustration event statistics |
13
+ | `/pd-rollback last` | Roll back the latest empathy penalty |
14
+ | `/pd-evolve` | Run an evolution task |
15
+ | `/pd-evolution-points` | View current EP balance and tier |
16
+
17
+ ---
18
+
19
+ ## `/pd-evolution-status`
20
+
21
+ ### What it shows
22
+
23
+ - `EP Tier`: Current evolution tier (Seed → Sprout → Sapling → Tree → Forest)
24
+ - `Session GFI`: Current session GFI and peak
25
+ - `GFI Sources`: Currently attributable friction sources
26
+ - `Pain Flag`: Whether a pain flag is active
27
+ - `Gate Events`: Recent block / bypass counts
28
+ - `Queue / Directive`: Evolution queue and directive state
29
+
30
+ ### Important notes
31
+
32
+ - This is the main operator entry point into the control plane.
33
+ - It reads canonical `.state` and tries to merge live session state and buffered events when available.
34
+ - When data is incomplete, it surfaces `partial` or warnings instead of silently printing `0`.
35
+
36
+ ---
37
+
38
+ ## `/pd-rollback`
39
+
40
+ ### Current behavior
41
+
42
+ - `/pd-rollback last`
43
+ - `/pd-rollback <event-id>`
44
+
45
+ It rolls back the latest or specified `user_empathy` event.
46
+
47
+ ### Important notes
48
+
49
+ - It subtracts only the `user_empathy` GFI slice
50
+ - It no longer wipes the whole session GFI
51
+ - If the event is missing or the source does not match, unrelated friction remains untouched
52
+
53
+ ---
54
+
55
+ ## EP Tier System
56
+
57
+ | Tier | EP Required | Max Lines/Write |
58
+ |------|-------------|-----------------|
59
+ | Seed | 0 | 150 |
60
+ | Sprout | 50 | 300 |
61
+ | Sapling | 200 | 500 |
62
+ | Tree | 500 | 1000 |
63
+ | Forest | 1000 | Unlimited |
64
+
65
+ EP is earned through successful task completion and problem resolution.
66
+
67
+ ---
68
+
69
+ ## Observation Window Checklist
70
+
71
+ Before entering new capability phases, check daily:
72
+
73
+ 1. EP tier and queue are functioning correctly
74
+ 2. `user_empathy` and `system_infer` appear in `events.jsonl`
75
+ 3. rollback affects only the empathy slice
76
+ 4. `evolution_queue.json`, `evolution_directive.json`, and status stay aligned
77
+ 5. summary warnings still accurately explain partial data quality
78
+
79
+ (End of file - total 84 lines)
@@ -0,0 +1,75 @@
1
+ import { build } from 'esbuild';
2
+ import { copyFileSync, mkdirSync, existsSync, statSync, readdirSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+
5
+ const isProduction = process.argv.includes('--production');
6
+
7
+ // Clean dist/ before build to prevent tsc artifacts from coexisting with bundle
8
+ if (existsSync('dist')) {
9
+ console.log('🧹 Cleaning dist/...');
10
+ rmSync('dist', { recursive: true, force: true });
11
+ }
12
+
13
+ function copyRecursive(src, dest) {
14
+ const stats = statSync(src);
15
+ if (stats.isDirectory()) {
16
+ mkdirSync(dest, { recursive: true });
17
+ for (const entry of readdirSync(src)) {
18
+ copyRecursive(join(src, entry), join(dest, entry));
19
+ }
20
+ return;
21
+ }
22
+
23
+ copyFileSync(src, dest);
24
+ }
25
+
26
+ async function bundlePlugin() {
27
+ try {
28
+ await build({
29
+ entryPoints: ['src/index.ts'],
30
+ outfile: 'dist/bundle.js',
31
+ bundle: true,
32
+ platform: 'node',
33
+ target: 'node20',
34
+ format: 'esm',
35
+ external: [
36
+ 'openclaw',
37
+ '@openclaw/sdk',
38
+ '@openclaw/plugin-kit',
39
+ 'better-sqlite3',
40
+ ],
41
+ sourcemap: isProduction ? false : 'inline',
42
+ minify: isProduction ? true : false,
43
+ treeShaking: true,
44
+ metafile: true,
45
+ });
46
+
47
+ console.log('Bundle created: dist/bundle.js');
48
+
49
+ const staticFiles = ['templates', 'agents', 'openclaw.plugin.json'];
50
+ const distDir = 'dist';
51
+
52
+ for (const file of staticFiles) {
53
+ const src = file;
54
+ const dest = join(distDir, file);
55
+ if (!existsSync(src)) {
56
+ continue;
57
+ }
58
+
59
+ if (statSync(src).isDirectory()) {
60
+ copyRecursive(src, dest);
61
+ } else {
62
+ copyFileSync(src, dest);
63
+ }
64
+
65
+ console.log(`Copied: ${file} -> dist/${file}`);
66
+ }
67
+
68
+ console.log('\nPlugin bundle ready for distribution.');
69
+ } catch (error) {
70
+ console.error('Bundle failed:', error);
71
+ process.exit(1);
72
+ }
73
+ }
74
+
75
+ bundlePlugin();
@@ -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.8.1",
5
+ "version": "1.8.2",
6
6
  "skills": [
7
7
  "./skills"
8
8
  ],
@@ -76,8 +76,8 @@
76
76
  }
77
77
  },
78
78
  "buildFingerprint": {
79
- "gitSha": "4e632d4c5c2c",
80
- "bundleMd5": "ed0922a01d46d55a49cd96f8feb158a9",
81
- "builtAt": "2026-03-31T03:48:08.676Z"
79
+ "gitSha": "787ed1c54034",
80
+ "bundleMd5": "f9dbcc5968920a4840ba02316515d1e4",
81
+ "builtAt": "2026-04-06T06:42:07.398Z"
82
82
  }
83
83
  }
package/package.json CHANGED
@@ -1,18 +1,11 @@
1
1
  {
2
2
  "name": "principles-disciple",
3
- "version": "1.8.1",
3
+ "version": "1.8.2",
4
4
  "description": "Native OpenClaw plugin for Principles Disciple",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "files": [
9
- "dist",
10
- "templates",
11
- "agents",
12
- "openclaw.plugin.json"
13
- ],
6
+ "main": "./dist/bundle.js",
14
7
  "exports": {
15
- ".": "./dist/index.js"
8
+ ".": "./dist/bundle.js"
16
9
  },
17
10
  "repository": {
18
11
  "type": "git",
@@ -29,15 +22,17 @@
29
22
  "id": "principles-disciple",
30
23
  "name": "Principles Disciple",
31
24
  "extensions": [
32
- "./dist/index.js"
25
+ "./dist/bundle.js"
33
26
  ]
34
27
  },
35
28
  "scripts": {
36
29
  "build": "tsc",
37
30
  "build:web": "node scripts/build-web.mjs",
38
31
  "build:bundle": "node esbuild.config.js && node scripts/build-web.mjs",
39
- "build:production": "tsc && node esbuild.config.js --production && node scripts/build-web.mjs --production && node scripts/verify-build.mjs",
32
+ "build:production": "node esbuild.config.js --production && node scripts/build-web.mjs --production && node scripts/verify-build.mjs",
40
33
  "test": "vitest run",
34
+ "test:coverage": "vitest run --coverage",
35
+ "lint": "eslint src/",
41
36
  "postinstall": "node scripts/install-dependencies.cjs"
42
37
  },
43
38
  "devDependencies": {
@@ -48,15 +43,18 @@
48
43
  "@types/react": "^19.2.2",
49
44
  "@types/react-dom": "^19.2.2",
50
45
  "@types/ws": "^8.5.13",
46
+ "@typescript-eslint/eslint-plugin": "^8.58.0",
47
+ "@typescript-eslint/parser": "^8.58.0",
51
48
  "@vitest/coverage-v8": "^4.1.0",
52
49
  "esbuild": "^0.27.4",
50
+ "eslint": "^10.1.0",
53
51
  "jsdom": "^29.0.1",
54
52
  "typescript": "^6.0.2",
55
53
  "vitest": "^4.1.0",
56
54
  "ws": "^8.18.0"
57
55
  },
58
56
  "peerDependencies": {
59
- "openclaw": ">=1.0.0"
57
+ "openclaw": ">=2026.4.4"
60
58
  },
61
59
  "peerDependenciesMeta": {
62
60
  "openclaw": {
@@ -0,0 +1,46 @@
1
+ import { build } from "esbuild";
2
+ import { mkdirSync, writeFileSync } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
4
+ import path from "node:path";
5
+
6
+ const isProduction = process.argv.includes("--production");
7
+ const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
8
+ const outDir = path.join(rootDir, "dist", "web");
9
+ const assetsDir = path.join(outDir, "assets");
10
+
11
+ mkdirSync(assetsDir, { recursive: true });
12
+
13
+ await build({
14
+ entryPoints: [path.join(rootDir, "ui", "src", "main.tsx")],
15
+ bundle: true,
16
+ format: "esm",
17
+ platform: "browser",
18
+ target: ["es2022"],
19
+ outfile: path.join(assetsDir, "app.js"),
20
+ sourcemap: isProduction ? false : "inline",
21
+ minify: isProduction,
22
+ jsx: "automatic",
23
+ loader: {
24
+ ".css": "css",
25
+ },
26
+ define: {
27
+ "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"),
28
+ },
29
+ });
30
+
31
+ const html = `<!doctype html>
32
+ <html lang="zh-CN">
33
+ <head>
34
+ <meta charset="utf-8" />
35
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
36
+ <title>Principles Console</title>
37
+ <link rel="stylesheet" href="/plugins/principles/assets/app.css" />
38
+ </head>
39
+ <body>
40
+ <div id="root"></div>
41
+ <script type="module" src="/plugins/principles/assets/app.js"></script>
42
+ </body>
43
+ </html>
44
+ `;
45
+
46
+ writeFileSync(path.join(outDir, "index.html"), html, "utf8");
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { execFileSync } = require('child_process');
4
+ const { existsSync, readFileSync } = require('fs');
5
+ const { join } = require('path');
6
+
7
+ const PLUGIN_DIR = join(__dirname, '..');
8
+
9
+ console.log('Setting up Principles Disciple plugin dependencies...');
10
+
11
+ const packageJsonPath = join(PLUGIN_DIR, 'package.json');
12
+ if (!existsSync(packageJsonPath)) {
13
+ console.log('Not in plugin directory, skipping dependency setup');
14
+ process.exit(0);
15
+ }
16
+
17
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
18
+ const dependencyNames = ['micromatch', '@sinclair/typebox', 'better-sqlite3'];
19
+ const DEPENDENCIES = dependencyNames.map((name) => {
20
+ const version = packageJson.dependencies?.[name] || packageJson.devDependencies?.[name];
21
+ if (!version) {
22
+ throw new Error(`Missing dependency version in package.json for ${name}`);
23
+ }
24
+ return `${name}@${version}`;
25
+ });
26
+
27
+ const nodeModulesDir = join(PLUGIN_DIR, 'node_modules');
28
+ const betterSqliteDir = join(nodeModulesDir, 'better-sqlite3');
29
+ if (existsSync(nodeModulesDir) && existsSync(betterSqliteDir)) {
30
+ console.log('Dependencies already installed');
31
+ process.exit(0);
32
+ }
33
+
34
+ console.log('Installing plugin dependencies...');
35
+ try {
36
+ execFileSync('npm', ['install', ...DEPENDENCIES], {
37
+ cwd: PLUGIN_DIR,
38
+ stdio: 'inherit',
39
+ });
40
+ console.log('Plugin dependencies installed successfully');
41
+ } catch (error) {
42
+ console.error('Failed to install plugin dependencies:', error.message);
43
+ console.log('\nManual fix:');
44
+ console.log(' cd', PLUGIN_DIR);
45
+ console.log(' npm install', DEPENDENCIES.join(' '));
46
+ process.exit(1);
47
+ }