@winspan/claude-forge 8.51.1 → 8.54.3

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 (409) hide show
  1. package/DEVELOPMENT.md +290 -221
  2. package/README.md +50 -8
  3. package/dist/cli/commands/skills.d.ts.map +1 -1
  4. package/dist/cli/commands/skills.js +121 -2
  5. package/dist/cli/commands/skills.js.map +1 -1
  6. package/dist/cli/init/hook-manager.d.ts +1 -1
  7. package/dist/cli/init/hook-manager.d.ts.map +1 -1
  8. package/dist/cli/init/hook-manager.js +1 -0
  9. package/dist/cli/init/hook-manager.js.map +1 -1
  10. package/dist/core/constants.d.ts +2 -0
  11. package/dist/core/constants.d.ts.map +1 -1
  12. package/dist/core/constants.js +4 -0
  13. package/dist/core/constants.js.map +1 -1
  14. package/dist/core/storage/events.d.ts.map +1 -1
  15. package/dist/core/storage/events.js +0 -1
  16. package/dist/core/storage/events.js.map +1 -1
  17. package/dist/core/storage/maintenance.d.ts +25 -3
  18. package/dist/core/storage/maintenance.d.ts.map +1 -1
  19. package/dist/core/storage/maintenance.js +33 -4
  20. package/dist/core/storage/maintenance.js.map +1 -1
  21. package/dist/core/storage/routing.d.ts +4 -0
  22. package/dist/core/storage/routing.d.ts.map +1 -1
  23. package/dist/core/storage/routing.js +10 -4
  24. package/dist/core/storage/routing.js.map +1 -1
  25. package/dist/core/storage/sessions.d.ts +17 -0
  26. package/dist/core/storage/sessions.d.ts.map +1 -1
  27. package/dist/core/storage/sessions.js +64 -0
  28. package/dist/core/storage/sessions.js.map +1 -1
  29. package/dist/core/storage/skills.d.ts +4 -0
  30. package/dist/core/storage/skills.d.ts.map +1 -1
  31. package/dist/core/storage/skills.js +10 -2
  32. package/dist/core/storage/skills.js.map +1 -1
  33. package/dist/core/storage/sqlite.d.ts +5 -0
  34. package/dist/core/storage/sqlite.d.ts.map +1 -1
  35. package/dist/core/storage/sqlite.js +6 -0
  36. package/dist/core/storage/sqlite.js.map +1 -1
  37. package/dist/core/storage/tasks.d.ts.map +1 -1
  38. package/dist/core/storage/tasks.js +2 -0
  39. package/dist/core/storage/tasks.js.map +1 -1
  40. package/dist/core/types.d.ts +7 -0
  41. package/dist/core/types.d.ts.map +1 -1
  42. package/dist/daemon/index.d.ts.map +1 -1
  43. package/dist/daemon/index.js +30 -5
  44. package/dist/daemon/index.js.map +1 -1
  45. package/dist/daemon/skill-sync.d.ts +21 -0
  46. package/dist/daemon/skill-sync.d.ts.map +1 -0
  47. package/dist/daemon/skill-sync.js +75 -0
  48. package/dist/daemon/skill-sync.js.map +1 -0
  49. package/dist/hooks/notification.sh +1 -1
  50. package/dist/hooks/post-tool-use.sh +1 -1
  51. package/dist/hooks/pre-tool-use.sh +1 -1
  52. package/dist/hooks/stop.sh +1 -1
  53. package/dist/hooks/user-prompt-submit.sh +1 -1
  54. package/dist/skills/official/code-simplifier.md +37 -1
  55. package/dist/skills/official/find-skills.md +120 -1
  56. package/dist/skills/official/official-api-design.md +14 -1
  57. package/dist/skills/official/official-architecture-decision.md +22 -1
  58. package/dist/skills/official/official-db-schema-design.md +19 -1
  59. package/dist/skills/official/official-debug.md +9 -1
  60. package/dist/skills/official/official-pr-review.md +1 -1
  61. package/dist/skills/official/official-security-hardening.md +7 -1
  62. package/dist/skills/official/planning-with-files.md +206 -2
  63. package/dist/skills/official/ui-ux-pro-max.md +88 -1
  64. package/dist/skills/official/webapp-testing.md +85 -1
  65. package/dist/skills/registry.d.ts +1 -1
  66. package/dist/skills/registry.d.ts.map +1 -1
  67. package/dist/skills/registry.js +15 -4
  68. package/dist/skills/registry.js.map +1 -1
  69. package/dist/skills/semantic-matcher.d.ts +4 -3
  70. package/dist/skills/semantic-matcher.d.ts.map +1 -1
  71. package/dist/skills/semantic-matcher.js +20 -22
  72. package/dist/skills/semantic-matcher.js.map +1 -1
  73. package/dist/skills/upgrade-engine.d.ts +93 -0
  74. package/dist/skills/upgrade-engine.d.ts.map +1 -0
  75. package/dist/skills/upgrade-engine.js +447 -0
  76. package/dist/skills/upgrade-engine.js.map +1 -0
  77. package/dist/skills/upgrade-prompt.d.ts +20 -0
  78. package/dist/skills/upgrade-prompt.d.ts.map +1 -0
  79. package/dist/skills/upgrade-prompt.js +75 -0
  80. package/dist/skills/upgrade-prompt.js.map +1 -0
  81. package/dist/web/analytics/weekly-report.d.ts.map +1 -1
  82. package/dist/web/analytics/weekly-report.js +21 -29
  83. package/dist/web/analytics/weekly-report.js.map +1 -1
  84. package/dist/web/routes/patch.d.ts.map +1 -1
  85. package/dist/web/routes/patch.js +32 -2
  86. package/dist/web/routes/patch.js.map +1 -1
  87. package/dist/web/routes/sessions.d.ts.map +1 -1
  88. package/dist/web/routes/sessions.js +9 -7
  89. package/dist/web/routes/sessions.js.map +1 -1
  90. package/dist/web/routes/trace.d.ts.map +1 -1
  91. package/dist/web/routes/trace.js +2 -3
  92. package/dist/web/routes/trace.js.map +1 -1
  93. package/dist/web/server.d.ts.map +1 -1
  94. package/dist/web/server.js +3 -2
  95. package/dist/web/server.js.map +1 -1
  96. package/package.json +12 -2
  97. package/scripts/postinstall.cjs +21 -0
  98. package/.claude/CLAUDE.md +0 -17
  99. package/.eslintrc.js +0 -23
  100. package/.prettierrc +0 -8
  101. package/ARCHITECTURE_ISSUES.md +0 -249
  102. package/CLAUDE.md +0 -265
  103. package/CLAUDE.md.backup +0 -488
  104. package/docs/concurrent-agents.md +0 -129
  105. package/docs/design/architecture-review-20260516.md +0 -232
  106. package/docs/design/fix-skills-data-and-set-leak-spec-20260516-1300.md +0 -219
  107. package/docs/design/h1-storage-aggregation-spec-20260518-1121.md +0 -299
  108. package/docs/design/h2-getdatabase-encapsulation-spec-20260518-1450.md +0 -191
  109. package/docs/design/h3-fallback-removal-spec-20260518-1245.md +0 -76
  110. package/docs/design/h4-index-dedup-spec-20260518-1230.md +0 -109
  111. package/docs/design/h6-services-migration-spec-20260518-1355.md +0 -82
  112. package/docs/design/hook-failure-queue-spec-20260516-1530.md +0 -204
  113. package/docs/design/l1-swarm-protocol-extract-spec-20260518-1605.md +0 -106
  114. package/docs/design/m10-forge-paths-spec-20260518-1320.md +0 -121
  115. package/docs/design/m2-m3-tool-input-spec-20260518-1425.md +0 -131
  116. package/docs/design/m7-routing-event-association-spec-20260518-1545.md +0 -103
  117. package/docs/design/project-path-gitroot-spec-20260518-1715.md +0 -134
  118. package/docs/design/refactor-phase1-spec-20260515-1600.md +0 -543
  119. package/docs/design/refactor-phase2-spec-20260515-1700.md +0 -424
  120. package/docs/design/task-active-gc-spec-20260518-1745.md +0 -146
  121. package/docs/design/tasks-list-filter-pagination-spec-20260518-0930.md +0 -208
  122. package/docs/implementation/fix-skills-data-and-set-leak-changelog-20260516-1300.md +0 -104
  123. package/docs/implementation/h1-storage-aggregation-changelog-20260518-1121.md +0 -82
  124. package/docs/implementation/h2-final-changelog-20260518-1530.md +0 -61
  125. package/docs/implementation/h2-phase1-safety-net-changelog-20260518-1450.md +0 -70
  126. package/docs/implementation/h2-phase2-operations-changelog-20260518-1450.md +0 -120
  127. package/docs/implementation/h2-phase3-callsites-changelog-20260518-1450.md +0 -71
  128. package/docs/implementation/h3-fallback-removal-changelog-20260518-1245.md +0 -71
  129. package/docs/implementation/h4-index-dedup-changelog-20260518-1230.md +0 -60
  130. package/docs/implementation/h6-services-migration-changelog-20260518-1355.md +0 -46
  131. package/docs/implementation/h7-m9-defaults-changelog-20260518-1300.md +0 -46
  132. package/docs/implementation/hook-failure-queue-changelog-20260516-1530.md +0 -196
  133. package/docs/implementation/hotfix-daemon-event-reject-20260516-1430.md +0 -56
  134. package/docs/implementation/l1-swarm-protocol-extract-changelog-20260518-1605.md +0 -45
  135. package/docs/implementation/l3-l4-daemon-perf-changelog-20260518-1410.md +0 -63
  136. package/docs/implementation/l6-l8-final-cleanup-changelog-20260518-1640.md +0 -38
  137. package/docs/implementation/m1-m4-m5-l7-cleanup-changelog-20260518-1310.md +0 -58
  138. package/docs/implementation/m10-forge-paths-changelog-20260518-1320.md +0 -60
  139. package/docs/implementation/m2-m3-tool-input-changelog-20260518-1425.md +0 -43
  140. package/docs/implementation/m6-m8-naming-shutdown-changelog-20260518-1340.md +0 -56
  141. package/docs/implementation/m7-routing-association-changelog-20260518-1545.md +0 -69
  142. package/docs/implementation/project-path-gitroot-changelog-20260518-1715.md +0 -63
  143. package/docs/implementation/refactor-phase1-changelog-20260515-1630.md +0 -354
  144. package/docs/implementation/refactor-phase2-changelog-20260515-1705.md +0 -421
  145. package/docs/implementation/task-active-gc-changelog-20260518-1745.md +0 -35
  146. package/docs/implementation/task-title-summary-changelog-20260518-1130.md +0 -39
  147. package/docs/implementation/tasks-detail-back-loses-filters-changelog-20260518-1100.md +0 -22
  148. package/docs/implementation/tasks-list-filter-pagination-changelog-20260518-0930.md +0 -72
  149. package/docs/implementation/tasks-page-white-screen-hotfix-changelog-20260518-1015.md +0 -56
  150. package/docs/reviews/claudemd-template-sync.md +0 -54
  151. package/docs/reviews/task-title-summary.md +0 -92
  152. package/docs/reviews/tasks-detail-back-loses-filters.md +0 -58
  153. package/docs/reviews/tasks-filter-pagination.md +0 -80
  154. package/docs/reviews/tasks-page-white-screen-hotfix.md +0 -126
  155. package/docs/ruflo-learning-strategy.md +0 -322
  156. package/docs/skills-deduplication-analysis.md +0 -83
  157. package/docs/skills-multiformat-support.md +0 -177
  158. package/docs/skills-third-party.md +0 -183
  159. package/docs/testing/tasks-filter-pagination-test-report.md +0 -86
  160. package/forge +0 -321
  161. package/playwright.config.ts +0 -40
  162. package/scripts/demo-v2.ts +0 -91
  163. package/scripts/dev-daemon.sh +0 -232
  164. package/scripts/dev-web.ts +0 -109
  165. package/scripts/e2e-mcp-link.ts +0 -423
  166. package/scripts/e2e-methodology-quality.ts +0 -253
  167. package/scripts/e2e-routing.ts +0 -456
  168. package/scripts/e2e-user-methodology.ts +0 -326
  169. package/scripts/e2e-web-workflows.ts +0 -299
  170. package/scripts/migrate-legacy-to-dynamic.sql +0 -108
  171. package/scripts/regenerate-execution-docs.ts +0 -116
  172. package/scripts/sync-agent-skills.ts +0 -193
  173. package/scripts/test-hook.sh +0 -71
  174. package/scripts/verify-skill-loading.ts +0 -62
  175. package/src/claudemd/claudemd-generator.ts +0 -568
  176. package/src/claudemd/convention-extractor.ts +0 -69
  177. package/src/claudemd/index.ts +0 -35
  178. package/src/claudemd/persona-manager.ts +0 -88
  179. package/src/claudemd/resume-manager.ts +0 -236
  180. package/src/claudemd/tech-detector.ts +0 -220
  181. package/src/claudemd/templates/swarm-protocol.md +0 -222
  182. package/src/cli/commands/claudemd.ts +0 -84
  183. package/src/cli/commands/config.ts +0 -46
  184. package/src/cli/commands/daemon.ts +0 -310
  185. package/src/cli/commands/executions.ts +0 -115
  186. package/src/cli/commands/init.ts +0 -204
  187. package/src/cli/commands/logs.ts +0 -181
  188. package/src/cli/commands/mcp.ts +0 -242
  189. package/src/cli/commands/menu.ts +0 -357
  190. package/src/cli/commands/skills.ts +0 -185
  191. package/src/cli/commands/stats.ts +0 -73
  192. package/src/cli/commands/status.ts +0 -69
  193. package/src/cli/commands/template.ts +0 -77
  194. package/src/cli/commands/trace.ts +0 -148
  195. package/src/cli/index.ts +0 -42
  196. package/src/cli/init/hook-manager.ts +0 -132
  197. package/src/core/ai/provider.ts +0 -308
  198. package/src/core/ai/types.ts +0 -51
  199. package/src/core/config.ts +0 -124
  200. package/src/core/constants.ts +0 -62
  201. package/src/core/event-fields.ts +0 -32
  202. package/src/core/queue/index.ts +0 -192
  203. package/src/core/storage/base.ts +0 -302
  204. package/src/core/storage/events.ts +0 -434
  205. package/src/core/storage/injections.ts +0 -78
  206. package/src/core/storage/maintenance.ts +0 -59
  207. package/src/core/storage/migrations/002_add_skill_tracking.sql +0 -6
  208. package/src/core/storage/migrations/003_add_skill_invocations.sql +0 -23
  209. package/src/core/storage/performance-indexes.sql +0 -23
  210. package/src/core/storage/routing.ts +0 -322
  211. package/src/core/storage/rows.ts +0 -112
  212. package/src/core/storage/schema.sql +0 -224
  213. package/src/core/storage/sessions.ts +0 -168
  214. package/src/core/storage/skills.ts +0 -233
  215. package/src/core/storage/sqlite.ts +0 -293
  216. package/src/core/storage/tasks.ts +0 -318
  217. package/src/core/storage/token-usage.ts +0 -93
  218. package/src/core/types.ts +0 -181
  219. package/src/core/utils/error-handler.ts +0 -257
  220. package/src/core/utils/forge-resume-block.ts +0 -74
  221. package/src/core/utils/format.ts +0 -69
  222. package/src/core/utils/git.ts +0 -23
  223. package/src/core/utils/logger.ts +0 -134
  224. package/src/core/utils/lru-cache.ts +0 -54
  225. package/src/core/utils/path.ts +0 -19
  226. package/src/core/utils/session.ts +0 -26
  227. package/src/core/utils/time.ts +0 -37
  228. package/src/core/utils/token-tracker.ts +0 -97
  229. package/src/daemon/event-parser.ts +0 -36
  230. package/src/daemon/handlers/history-exporter.ts +0 -117
  231. package/src/daemon/handlers/post-tool-use.ts +0 -54
  232. package/src/daemon/handlers/stop.ts +0 -208
  233. package/src/daemon/handlers/user-prompt.ts +0 -178
  234. package/src/daemon/hook-sync.ts +0 -91
  235. package/src/daemon/index.ts +0 -302
  236. package/src/daemon/launchd/com.claude-forge.daemon.plist.template +0 -47
  237. package/src/daemon/launchd-installer.ts +0 -260
  238. package/src/daemon/lifecycle.ts +0 -128
  239. package/src/daemon/router.ts +0 -40
  240. package/src/daemon/server.ts +0 -196
  241. package/src/daemon/services/task-segmenter.ts +0 -112
  242. package/src/hooks/hook-lib.sh +0 -118
  243. package/src/hooks/notification.sh +0 -35
  244. package/src/hooks/post-tool-use.sh +0 -61
  245. package/src/hooks/pre-tool-use.sh +0 -63
  246. package/src/hooks/stop.sh +0 -43
  247. package/src/hooks/user-prompt-submit.sh +0 -69
  248. package/src/mcp/server.ts +0 -322
  249. package/src/skills/index.ts +0 -2
  250. package/src/skills/invocation-guard.ts +0 -177
  251. package/src/skills/matcher.ts +0 -148
  252. package/src/skills/official/code-simplifier.md +0 -16
  253. package/src/skills/official/find-skills.md +0 -23
  254. package/src/skills/official/official-api-design.md +0 -17
  255. package/src/skills/official/official-architecture-decision.md +0 -20
  256. package/src/skills/official/official-bmad.md +0 -118
  257. package/src/skills/official/official-db-schema-design.md +0 -16
  258. package/src/skills/official/official-debug.md +0 -17
  259. package/src/skills/official/official-doc-driven.md +0 -31
  260. package/src/skills/official/official-harness-engineering.md +0 -108
  261. package/src/skills/official/official-performance-optimization.md +0 -30
  262. package/src/skills/official/official-pr-review.md +0 -35
  263. package/src/skills/official/official-release-checklist.md +0 -30
  264. package/src/skills/official/official-security-hardening.md +0 -26
  265. package/src/skills/official/official-spec-driven-design.md +0 -31
  266. package/src/skills/official/planning-with-files.md +0 -37
  267. package/src/skills/official/ui-ux-pro-max.md +0 -18
  268. package/src/skills/official/webapp-testing.md +0 -12
  269. package/src/skills/official-skills.ts +0 -89
  270. package/src/skills/registry.ts +0 -355
  271. package/src/skills/semantic-matcher.ts +0 -231
  272. package/src/skills/tools/pipeline-suggest.ts +0 -226
  273. package/src/skills/tools/skill-invoke.ts +0 -168
  274. package/src/skills/tools/skill-list.ts +0 -59
  275. package/src/templates/go.yaml +0 -53
  276. package/src/templates/python.yaml +0 -59
  277. package/src/templates/react.yaml +0 -55
  278. package/src/templates/template-manager.ts +0 -170
  279. package/src/web/analytics/anti-pattern-detector.ts +0 -367
  280. package/src/web/analytics/drift-detector.ts +0 -219
  281. package/src/web/analytics/weekly-report.ts +0 -431
  282. package/src/web/auth-middleware.ts +0 -54
  283. package/src/web/routes/_helpers.ts +0 -34
  284. package/src/web/routes/ai.ts +0 -204
  285. package/src/web/routes/auth.ts +0 -22
  286. package/src/web/routes/drift.ts +0 -25
  287. package/src/web/routes/error-handler.ts +0 -120
  288. package/src/web/routes/events.ts +0 -47
  289. package/src/web/routes/insights.ts +0 -43
  290. package/src/web/routes/patch.ts +0 -117
  291. package/src/web/routes/reports.ts +0 -34
  292. package/src/web/routes/rules.ts +0 -76
  293. package/src/web/routes/sessions.ts +0 -250
  294. package/src/web/routes/skill-stats.ts +0 -92
  295. package/src/web/routes/skills.ts +0 -350
  296. package/src/web/routes/static.ts +0 -67
  297. package/src/web/routes/stats.ts +0 -50
  298. package/src/web/routes/status.ts +0 -30
  299. package/src/web/routes/tasks.ts +0 -193
  300. package/src/web/routes/token-usage.ts +0 -20
  301. package/src/web/routes/trace.ts +0 -126
  302. package/src/web/routes/types.ts +0 -57
  303. package/src/web/server.ts +0 -134
  304. package/src/web/ssrf-guard.ts +0 -112
  305. package/src/web/static/index.html +0 -3251
  306. package/src/web/static/vendor/chart.umd.min.js +0 -20
  307. package/tests/e2e/dashboard.spec.ts +0 -205
  308. package/tests/e2e/routing-skill-e2e.test.ts +0 -39
  309. package/tests/helpers/mock-ai.ts +0 -92
  310. package/tests/helpers/mock-storage.ts +0 -159
  311. package/tests/integration/claudemd-generator.test.ts +0 -90
  312. package/tests/integration/queue-replay.integration.test.ts +0 -193
  313. package/tests/integration/tasks-filter.integration.test.ts +0 -154
  314. package/tests/integration/web-analytics.integration.test.ts +0 -133
  315. package/tests/integration/web-stats.integration.test.ts +0 -135
  316. package/tests/integration/web-trace.integration.test.ts +0 -175
  317. package/tests/performance/database.benchmark.ts +0 -161
  318. package/tests/semantic-matcher.test.ts +0 -99
  319. package/tests/skill-matcher.test.ts +0 -110
  320. package/tests/unit/ai-provider-retry.test.ts +0 -194
  321. package/tests/unit/ai-provider-vision.test.ts +0 -224
  322. package/tests/unit/claudemd-generator.test.ts +0 -68
  323. package/tests/unit/cli-mcp.test.ts +0 -141
  324. package/tests/unit/core/forge-paths.test.ts +0 -99
  325. package/tests/unit/daemon/hook-sync.test.ts +0 -71
  326. package/tests/unit/daemon/post-tool-use.test.ts +0 -121
  327. package/tests/unit/daemon/stop-handler-behavior-summary.test.ts +0 -202
  328. package/tests/unit/daemon/task-segmenter-recover.test.ts +0 -84
  329. package/tests/unit/event-fields.test.ts +0 -88
  330. package/tests/unit/event-parser.test.ts +0 -55
  331. package/tests/unit/handlers.test.ts +0 -171
  332. package/tests/unit/hooks/resolve-project-path.test.ts +0 -122
  333. package/tests/unit/invocation-guard.test.ts +0 -125
  334. package/tests/unit/queue.test.ts +0 -272
  335. package/tests/unit/router.test.ts +0 -138
  336. package/tests/unit/security.test.ts +0 -128
  337. package/tests/unit/skill-invocations-workflow.test.ts +0 -495
  338. package/tests/unit/skill-registry.test.ts +0 -94
  339. package/tests/unit/skills/invocation-guard-ttl.test.ts +0 -211
  340. package/tests/unit/skills/official-skills-loader.test.ts +0 -126
  341. package/tests/unit/skills/registry-multiformat.test.ts +0 -92
  342. package/tests/unit/socket-server.test.ts +0 -183
  343. package/tests/unit/storage/event-operations-aggregates.test.ts +0 -342
  344. package/tests/unit/storage/migration-idempotent.test.ts +0 -304
  345. package/tests/unit/storage/routing-aggregates.test.ts +0 -276
  346. package/tests/unit/storage/routing.test.ts +0 -117
  347. package/tests/unit/storage/schema-missing.test.ts +0 -81
  348. package/tests/unit/storage/session-operations-aggregates.test.ts +0 -120
  349. package/tests/unit/storage/sessions-aggregate.test.ts +0 -435
  350. package/tests/unit/storage/skill-operations-counts.test.ts +0 -106
  351. package/tests/unit/storage/skills-aggregates.test.ts +0 -104
  352. package/tests/unit/storage/sqlite-refactor-harness.test.ts +0 -314
  353. package/tests/unit/storage/task-operations-counts.test.ts +0 -46
  354. package/tests/unit/storage/tasks-getById.test.ts +0 -343
  355. package/tests/unit/storage/tasks-stale-gc.test.ts +0 -86
  356. package/tests/unit/storage.test.ts +0 -172
  357. package/tests/unit/token-usage.test.ts +0 -144
  358. package/tests/unit/type-guards.test.ts +0 -201
  359. package/tests/unit/utils/format.test.ts +0 -189
  360. package/tests/unit/utils/session.test.ts +0 -89
  361. package/tests/unit/utils/time.test.ts +0 -112
  362. package/tests/unit/web/navigation-back-contract.test.ts +0 -134
  363. package/tests/unit/web/routes-auth.test.ts +0 -93
  364. package/tests/unit/web/routes-events.test.ts +0 -101
  365. package/tests/unit/web/routes-rules.test.ts +0 -182
  366. package/tests/unit/web/routes-sessions.test.ts +0 -181
  367. package/tests/unit/web/routes-skill-stats.test.ts +0 -179
  368. package/tests/unit/web/routes-stats.test.ts +0 -92
  369. package/tests/unit/web/routes-tasks.test.ts +0 -385
  370. package/tests/unit/web/task-title-contract.test.ts +0 -210
  371. package/tests/unit/web/tasks-component-contract.test.ts +0 -179
  372. package/tsconfig.json +0 -22
  373. package/vitest.config.ts +0 -21
  374. package/vitest.integration.config.ts +0 -16
  375. package/web/CLAUDE.md +0 -20
  376. package/web/index.html +0 -13
  377. package/web/package-lock.json +0 -4854
  378. package/web/package.json +0 -35
  379. package/web/postcss.config.js +0 -6
  380. package/web/src/App.tsx +0 -110
  381. package/web/src/components/CodeBlock.tsx +0 -31
  382. package/web/src/components/Confirm.tsx +0 -96
  383. package/web/src/components/Drawer.tsx +0 -60
  384. package/web/src/components/Layout.tsx +0 -145
  385. package/web/src/components/MarkdownRenderer.tsx +0 -77
  386. package/web/src/components/SearchInput.tsx +0 -31
  387. package/web/src/components/SessionDetailContent.tsx +0 -157
  388. package/web/src/components/Toast.tsx +0 -92
  389. package/web/src/index.css +0 -19
  390. package/web/src/main.tsx +0 -31
  391. package/web/src/pages/AIConfig.tsx +0 -233
  392. package/web/src/pages/Dashboard.tsx +0 -572
  393. package/web/src/pages/Events.tsx +0 -271
  394. package/web/src/pages/Reports.tsx +0 -428
  395. package/web/src/pages/SessionDetail.tsx +0 -162
  396. package/web/src/pages/Sessions.tsx +0 -205
  397. package/web/src/pages/Skills.tsx +0 -180
  398. package/web/src/pages/TaskDetail.tsx +0 -515
  399. package/web/src/pages/Tasks.tsx +0 -415
  400. package/web/src/utils/auth.ts +0 -59
  401. package/web/src/utils/export.ts +0 -54
  402. package/web/src/utils/navigation.ts +0 -25
  403. package/web/src/utils/task-title.ts +0 -49
  404. package/web/src/utils/time.ts +0 -13
  405. package/web/tailwind.config.js +0 -11
  406. package/web/tsconfig.json +0 -21
  407. package/web/tsconfig.node.json +0 -10
  408. package/web/vite.config.ts +0 -76
  409. package/winspan-claude-forge-8.43.0.tgz +0 -0
package/CLAUDE.md.backup DELETED
@@ -1,488 +0,0 @@
1
- <!-- forge:claudemd-auto -->
2
- # claude-forge 工作区规范
3
-
4
- ## Behavioral Rules (Always Enforced)
5
-
6
- - Do what has been asked; nothing more, nothing less
7
- - NEVER create files unless they're absolutely necessary for achieving your goal
8
- - ALWAYS prefer editing an existing file to creating a new one
9
- - NEVER proactively create documentation files (*.md) or README files unless explicitly requested
10
- - ALWAYS read a file before editing it
11
- - Never continuously check status after spawning a swarm — wait for results
12
-
13
- ### Two-Phase Workflow (Design-First for Non-Trivial Tasks)
14
-
15
- **适用范围**:≥3 文件改动 / 新功能 / 重构 / 架构调整
16
-
17
- #### Phase 1: Generate Spec (Mandatory)
18
-
19
- 1. **Spawn planner/researcher agent** with `run_in_background: true`
20
- 2. **Agent 任务**:
21
- - 调研现有代码和架构
22
- - 设计实现方案
23
- - 将方案写入 `docs/design/[task]-spec-YYYYMMDD-HHMM.md`
24
- - 包含:目标、改动文件清单、关键设计决策、风险点、测试策略
25
- - **禁止写任何代码,只输出设计文档**
26
- 3. **主线程行为**:
27
- - 告诉用户"已 spawn planner,等待 spec 生成"
28
- - **然后结束响应,不做任何其他操作**
29
- - 等待 agent 完成通知
30
-
31
- #### Phase 1.5: User Review (Critical Gate)
32
-
33
- Agent 完成后,**主线程必须停止并等待用户确认**:
34
-
35
- ```
36
- 设计方案已生成:docs/design/xxx-spec.md
37
-
38
- 请 review 后回复:
39
- - "批准" / "approve" / "开始实现" → 我会 spawn coder 实现
40
- - "修改 [具体意见]" → 我会让 planner 调整 spec
41
- - "取消" / "cancel" → 停止任务
42
- ```
43
-
44
- **绝对禁止**:
45
- - ❌ 主线程自行判断 spec 质量并进入 Phase 2
46
- - ❌ 主线程说"spec 看起来不错,我开始实现"
47
- - ❌ 主线程直接 spawn coder 而不等用户确认
48
-
49
- **只有收到用户明确的批准指令,才能进入 Phase 2。**
50
-
51
- #### Phase 2: Implement per Spec
52
-
53
- 收到用户"批准"后:
54
-
55
- 1. Spawn coder agent with `run_in_background: true`
56
- 2. **Agent 任务**:
57
- - 严格按 `docs/design/xxx-spec.md` 执行
58
- - 不偏离 spec(如需调整,先更新 spec 并再次请求批准)
59
- - 完成后写 `docs/implementation/[task]-changelog-YYYYMMDD-HHMM.md` 记录实际改动
60
- 3. **主线程行为**:
61
- - 告诉用户"已 spawn coder,按 spec 实现"
62
- - 等待 agent 完成通知
63
- - 汇总结果
64
-
65
- #### 例外:简单任务可跳过
66
-
67
- 以下情况可以跳过两阶段,直接实现:
68
- - 单文件 1-2 行修改(typo 级别)
69
- - 用户明确说"不需要 spec,直接做"
70
- - 纯查询/调研任务(不涉及代码改动)
71
-
72
- **其他所有情况必须走两阶段流程。**
73
-
74
- ### MANDATORY Agent Delegation Rule (NEVER SKIP)
75
-
76
- #### 默认行为:spawn Agent,不是自己做
77
-
78
- 接到任务时,**第一反应是 spawn Agent**。"我自己做" 是需要主动决策并解释的例外,不是默认。
79
-
80
- #### 激进策略:最大化 Agent 使用(提高效率)
81
-
82
- **几乎所有任务都 spawn Agent**,包括查询、调研、代码阅读。主线程只做极简协调。
83
-
84
- #### 不 spawn 的例外清单(仅这 4 条)
85
-
86
- 只有以下情况允许主线程直接处理:
87
-
88
- 1. **单行 typo**:1 个文件,1 行,纯拼写错误(如 `fucntion` → `function`)
89
- 2. **协调与汇总**:把多个 Agent 的结果整合给用户,或等待 Agent 完成通知
90
- 3. **元任务(meta-task)**:修改本规则文件本身、git commit/push、配置 daemon 等"工具的工具"操作
91
- 4. **即时问答**:用户问"现在几点"、"你是谁"、"帮助命令是什么"等不涉及代码/文件的纯对话
92
-
93
- **以下情况必须 spawn Agent(不再是例外)**:
94
- - ❌ ~~"查看文件内容"~~ → ✅ spawn Explore agent 并行搜索
95
- - ❌ ~~"这个函数做什么"~~ → ✅ spawn doc-reviewer 深度分析
96
- - ❌ ~~"找出 X 在哪"~~ → ✅ spawn Explore agent 定位
97
- - ❌ ~~"单文件 3 行修改"~~ → ✅ spawn coder(除非是 1 行 typo)
98
- - ❌ ~~"读取了解上下文"~~ → ✅ spawn researcher 系统化调研
99
-
100
- #### 强制理由声明
101
-
102
- **每次决定不 spawn 时,必须在响应开头用一句话说明理由**,格式:
103
-
104
- > 不 spawn 理由:例外 #N [具体原因]
105
-
106
- 如果一句话写不出像样的理由 → 说明应该 spawn,立刻改正。
107
-
108
- 写理由的目的不是仪式感,而是**让"自己做"成为可见的决策**。决策可见,才能被纠正。
109
-
110
- #### 触发关键词(强制 spawn)
111
-
112
- 只要用户的 prompt 出现以下**任意一个**词或类似意图,**直接 spawn**,不要犹豫:
113
-
114
- **实现类**:
115
- - 实现 / implement / 开发 / develop / 创建 / create / 添加 / add / 构建 / build
116
-
117
- **修改类**:
118
- - 修复 / fix / 调试 / debug / 改 / change / 更新 / update / 升级 / upgrade
119
-
120
- **优化类**:
121
- - 重构 / refactor / 优化 / optimize / 性能 / performance / 清理 / cleanup
122
-
123
- **调研类**(新增,不再是例外):
124
- - 调研 / research / 分析 / analyze / 查 / find / 找 / search / 看 / read / 列出 / list / 梳理 / review
125
-
126
- **测试类**:
127
- - 测试 / test / 验证 / verify / 检查 / check / 审查 / audit
128
-
129
- #### 最小 Agent 模式
130
-
131
- 不需要每次都开完整 pipeline。简单任务用单个 Agent 就行:
132
-
133
- ```javascript
134
- // 单个 Agent 即可
135
- Agent({
136
- description: "修复 X bug",
137
- subagent_type: "coder",
138
- prompt: "具体任务描述,包含文件路径和修改要求..."
139
- })
140
- ```
141
-
142
- 复杂任务才 spawn 多个 Agent 或 pipeline(参考下方 Pipeline Templates)。
143
-
144
- #### 自检流程(接到任务后必走)
145
-
146
- 1. 这是不是 5 条例外里的?→ 是 → 直接做(写出理由)
147
- 2. 不是 → spawn Agent。多文件改动 → 多个 Agent;调研 → researcher;测试 → tester;最不济单个 coder
148
-
149
- **违规判定**:一次响应里执行了 Edit/Write 修改 ≥ 2 个文件 + 没写"不 spawn 理由"=违规。
150
-
151
- ## Concurrency: 1 MESSAGE = ALL RELATED OPERATIONS
152
-
153
- - All operations MUST be concurrent/parallel in a single message
154
- - Use Claude Code's Task tool for spawning agents, not just MCP
155
-
156
- **Mandatory patterns:**
157
- - ALWAYS batch ALL todos in ONE TodoWrite call (5-10+ minimum)
158
- - ALWAYS spawn ALL agents in ONE message with full instructions via Task tool
159
- - ALWAYS batch ALL file reads/writes/edits in ONE message
160
- - ALWAYS batch ALL terminal operations in ONE Bash message
161
-
162
- ---
163
-
164
- ## Swarm Orchestration (AGGRESSIVE PARALLELISM)
165
-
166
- **核心原则:成本不是考量因素,响应速度和覆盖面是唯一目标。**
167
-
168
- - **默认开多个 Agent,不要节约** — 只要任务不是"单行修改/问候语",一律 spawn swarm
169
- - **宁滥勿缺** — 拿不准就开 pipeline;多开一个 reviewer/tester 的边际成本 << 漏掉问题的代价
170
- - **永远并行,不要串行** — 所有能并行的 Agent 在 ONE message 里同时 spawn
171
- - **不要自己直接做复杂任务** — 主线程只负责协调,实现/调研/测试/审查全部委托
172
-
173
- ### Auto-Start Swarm Protocol
174
-
175
- #### 不确定是否需要 Pipeline?调用 pipeline_suggest
176
-
177
- 如果你不确定当前任务是否需要启动 swarm pipeline,可以调用 MCP 工具 `pipeline_suggest` 获取建议:
178
-
179
- ```typescript
180
- // 通过 MCP 调用(如果可用)
181
- pipeline_suggest({
182
- task_description: "修复用户登录时的 session 过期问题",
183
- file_count: 5,
184
- is_bug_fix: true
185
- })
186
-
187
- // 返回
188
- {
189
- should_invoke: true,
190
- pipeline_type: "bug_fix",
191
- pipeline_code: "Task({ subagent_type: 'researcher', name: 'investigator', ... })\n...",
192
- reason: "Bug 修复任务建议使用 Pipeline(调查 → 修复 → 验证)"
193
- }
194
- ```
195
-
196
- **决策逻辑**:
197
- - `file_count >= 3` OR `is_new_feature` OR `is_refactor` OR `is_bug_fix` OR `is_performance` → 建议使用 Pipeline
198
- - 返回可直接复制的 Task 调用代码
199
-
200
- **10 种内置模板**:
201
- - Bug Fix:investigator → fixer → verifier(3 agents)
202
- - Feature:analyst → designer → developer → tester → reviewer(5 agents)
203
- - Refactor:safety-net → planner → refactorer → verifier(4 agents)
204
- - Investigation:reproducer → analyst(2 agents)
205
- - Performance:benchmarker → analyst → optimizer → verifier(4 agents)
206
- - BMAD Feature:product-analyst → architect → developer → qa → reviewer(5 agents,完整产品开发)
207
- - Harness Safe Refactor:safety-net → analyzer → planner → executor → validator(5 agents,先织安全网再动代码)
208
- - Harness Debug:reproducer → tracer → root-cause → fixer → verifier(5 agents,系统化排查)
209
- - Migration:impact-analyst + safety-net → planner → migrator → verifier(5 agents,技术迁移)
210
- - Security Audit:threat-modeler → code-auditor → fixer → verifier(4 agents,安全审计)
211
-
212
- ---
213
-
214
- When the user requests a complex task (multi-file changes, feature implementation, refactoring), **immediately execute this pattern in a SINGLE message:**
215
-
216
- ```javascript
217
- // STEP 1: Spawn NAMED agents concurrently — all in ONE message
218
- // Each agent knows WHO to message next in the pipeline
219
- Task({
220
- prompt: "Research requirements and codebase. SendMessage findings to 'architect' when done.",
221
- subagent_type: "researcher", name: "researcher", run_in_background: true
222
- })
223
- Task({
224
- prompt: "Wait for research from 'researcher'. Design implementation. SendMessage design to 'coder'.",
225
- subagent_type: "planner", name: "architect", run_in_background: true
226
- })
227
- Task({
228
- prompt: "Wait for design from 'architect'. Implement the solution. SendMessage code paths to 'tester'.",
229
- subagent_type: "coder", name: "coder", run_in_background: true
230
- })
231
- Task({
232
- prompt: "Wait for implementation from 'coder'. Write tests. SendMessage results to 'reviewer'.",
233
- subagent_type: "tester", name: "tester", run_in_background: true
234
- })
235
- Task({
236
- prompt: "Wait for test results from 'tester'. Review code quality and security. Report findings.",
237
- subagent_type: "reviewer", name: "reviewer", run_in_background: true
238
- })
239
-
240
- // STEP 2: Kick off the pipeline
241
- SendMessage({ to: "researcher", summary: "Start research", message: "[task description and context]" })
242
-
243
- // Pipeline flow via SendMessage:
244
- // researcher ──→ architect ──→ coder ──→ tester ──→ reviewer
245
- ```
246
-
247
- ### Agent Routing (Anti-Drift)
248
-
249
- | Code | Task | Agents |
250
- |------|------|--------|
251
- | 1 | Bug Fix | researcher, coder, tester, reviewer |
252
- | 3 | Feature | researcher, architect, coder, tester, reviewer |
253
- | 5 | Refactor | researcher, architect, refactor-specialist, tester, reviewer |
254
- | 7 | Performance | researcher, coder, tester, reviewer |
255
- | 9 | Investigation | tester, researcher |
256
-
257
- **All codes: hierarchical/specialized (anti-drift)**
258
-
259
- ### Task Complexity Detection
260
-
261
- **ALWAYS INVOKE SWARM**(默认行为,不要犹豫):
262
- - 任何涉及代码变更的任务
263
- - 任何需要理解现有代码的任务
264
- - 新功能实现(无论大小)
265
- - Bug 修复(除 1-2 行 typo)
266
- - 重构、性能优化、架构调整
267
- - 调研、技术选型、方案对比
268
- - 测试编写、代码审查
269
- - 数据库变更、安全相关改动
270
-
271
- **SKIP SWARM 仅限**:
272
- - 单行 typo / 格式修正
273
- - 纯粹的问答("这个函数做什么?")
274
- - 查看文件内容(Read 即可)
275
-
276
- 当用户说"调研 X"、"实现 Y"、"修复 Z"时,**不要问"要不要用 swarm",直接开**。
277
-
278
- ### Parallel Research Pattern
279
-
280
- 调研类任务:**同时 spawn 多个 researcher 并行搜索不同方面**,而不是让一个 researcher 串行查。
281
-
282
- ```javascript
283
- // 例:调研一个新框架
284
- Task({ subagent_type: "researcher", name: "docs-reader", prompt: "Read official docs, report API surface", run_in_background: true })
285
- Task({ subagent_type: "researcher", name: "code-explorer", prompt: "Find existing uses in codebase", run_in_background: true })
286
- Task({ subagent_type: "researcher", name: "comparator", prompt: "Compare with alternatives", run_in_background: true })
287
- ```
288
-
289
- ### Phase 文档产出(强制)
290
-
291
- 每个 pipeline 阶段的 Agent 都 **MUST** 在项目 `docs/` 下生成对应阶段文档,作为可追溯的执行产物。
292
-
293
- **目录约定(自动创建,不存在则 mkdir -p)**:
294
-
295
- ```
296
- docs/
297
- ├── requirements/ # 需求阶段:需求分析、问题发现、范围定义、复现报告
298
- ├── design/ # 设计阶段:架构设计、详细设计、ADR
299
- ├── implementation/ # 编码阶段:改造点分析、详细执行计划、变更日志
300
- ├── testing/ # 测试阶段:测试报告、回归记录、性能基线
301
- ├── review/ # 审查阶段:代码审查、安全审计、根因分析
302
- └── operations/ # 运维阶段:迁移手册、回滚预案
303
- ```
304
-
305
- **命名规范**:`<phase-prefix>-<topic>-<yyyymmdd-hhmm>.md`,例如:
306
- - `docs/requirements/feature-requirements-20260514-1430.md`
307
- - `docs/design/feature-architecture-20260514-1500.md`
308
- - `docs/implementation/feature-plan-20260514-1530.md`
309
- - `docs/testing/feature-test-report-20260514-1700.md`
310
- - `docs/review/feature-review-20260514-1730.md`
311
-
312
- **强制规则**:
313
- - Pipeline 中**每个 Agent 必须先写文档再做后续操作**(设计师先写架构再交给开发,开发先写计划再写代码)
314
- - SendMessage 给下游时**必须包含文档路径**,下游 Agent 必须先 Read 该文档
315
- - 文档要可独立阅读:包含上下文、决策、依据、产出,不依赖会话历史
316
- - 每个 pipeline 模板(pipeline_suggest 工具返回的 Task 调用)已经内置了文档输出指令,**不要省略**
317
-
318
- ### Skill 方法论调用
319
-
320
- 当任务涉及特定领域时,**主动调用 MCP 工具 `skill_invoke` 获取方法论指导**:
321
-
322
- ```javascript
323
- // 重构任务 → 获取 Harness 安全重构方法论
324
- skill_invoke({ skill_id: "official-harness-legacy", reason: "需要安全重构指导" })
325
-
326
- // 调试任务 → 获取系统化调试方法论
327
- skill_invoke({ skill_id: "official-debug-methodology", reason: "需要调试方法论" })
328
-
329
- // 性能优化 → 获取性能优化方法论
330
- skill_invoke({ skill_id: "official-performance-optimization", reason: "需要性能优化指导" })
331
-
332
- // 安全审计 → 获取安全加固方法论
333
- skill_invoke({ skill_id: "official-security-hardening", reason: "需要安全审计指导" })
334
-
335
- // 代码审查 → 获取审查方法论
336
- skill_invoke({ skill_id: "official-code-review", reason: "需要代码审查指导" })
337
-
338
- // 不确定用哪个 → 先列出所有可用 skill
339
- skill_list({ keywords: ["debug"] })
340
- ```
341
-
342
- **触发时机**:在 spawn swarm 之前或同时调用,将方法论内容传给对应的 Agent 作为指导。
343
-
344
- ## Swarm Configuration & Anti-Drift
345
-
346
- ### Anti-Drift Coding Swarm (PREFERRED DEFAULT)
347
-
348
- - ALWAYS use hierarchical topology for coding swarms
349
- - 不要为了"省 token"合并步骤 — 每个 Agent 都有独立的 context window,拆开更准确
350
- - Use specialized strategy for clear role boundaries
351
- - Keep task cycles short with verification gates
352
- - Each agent MUST end with SendMessage to the next agent in the chain
353
- - Do NOT implement code directly when a swarm is active — delegate to the coder step
354
- - Do NOT collapse a multi-step swarm into a single Task call
355
-
356
- ## 项目概述
357
-
358
- 本仓库是 Claude Code 工程化工具集的研发工作区。源码分布在 `src/` 下的以下模块:
359
-
360
- - `src/core/` — 核心基础设施:`types.ts`(`ForgeEvent`、`HookResult` 等跨层契约)、`config.ts`、`constants.ts`、`storage/`(SQLite + `schema.sql`)、`ai/`(ClaudeProvider)、`utils/`(logger / lru-cache / token-tracker / path 等)
361
- - `src/engine/` — 规则与治理引擎:`dsl/`(types / parser / compiler / runtime)、`rule-engine.ts`、`context-builder.ts`、`evidence-store.ts`、`agent-router.ts`、`experiment-router.ts`、`recommender.ts`、`conventions/*.yaml`
362
- - `src/capability/` — 方法论执行核心:`methodology-registry.ts`、`methodology-planner.ts`、`execution-manager.ts`、`executor/`(foreground / background / orchestrator / stream-parser / worker-auth-probe)、`methodologies/*.yaml`
363
- - `src/daemon/` — 守护进程:`server.ts`、`router.ts`、`lifecycle.ts`、`event-parser.ts`、`idle-detector.ts`、`idle-trigger.ts`、`auto-disable-scheduler.ts`、`methodology-pending-queue.ts`、`routing-observer.ts`、`routing-state.ts`、`handlers/`(pre-tool-use / post-tool-use / user-prompt / stop / history-exporter / methodology-formatter)、`services/`(task-segmenter)
364
- - `src/cli/` — CLI 入口与子命令:`init/` + `commands/`(claudemd / config / daemon / init / logs / menu / rules / skills / stats / status / template)
365
- - `src/skills/` — Skill 注册与匹配(registry / matcher / semantic-matcher / official-skills)
366
- - `src/claudemd/` — CLAUDE.md 生成与维护(tech-detector / claudemd-generator / convention-extractor / persona-manager / resume-manager)
367
- - `src/templates/` — 项目模板(`*.yaml` + `template-manager.ts`)
368
- - `src/hooks/` — Claude Code Hook shell 脚本(构建时复制到 `dist/hooks/`)
369
- - `src/web/` — 嵌入式 Web 服务器(Express + 静态资源 + auth/ssrf 中间件)
370
- - `web/` — Web 前端(React + TanStack Query + Vite)
371
-
372
- ## 技术栈
373
-
374
- - 运行时:Node.js
375
- - 语言:TypeScript(`strict: true`)
376
- - 测试:Vitest
377
- - 构建:`tsc`(后端)+ Vite(前端)
378
- - 存储:SQLite(`better-sqlite3`)
379
- - Web:Express(后端)+ React + TanStack Query(前端)
380
-
381
- ## 架构要点
382
-
383
- - 架构以声明式治理为核心:Convention YAML + DSL 表达式驱动规则引擎,而非命令式编排
384
- - `src/core/types.ts` 承载 `ForgeEvent`、`HookResult` 等跨层类型契约;`src/core/storage/sqlite.ts` 直接封装 SQL(文件头注释明确写了 `No repository pattern, no base class — just direct SQL in one file`),不要误以为存在 Repository 层
385
- - `src/engine/dsl/` 由 types / parser / compiler / runtime 四件组成;规则模型、事件模型、DSL 类型的变更属于高影响改动,**类型契约先行**收敛后再动实现
386
- - **决策分级:`block` / `confirm` / `warn` / `allow` 四档**(见 `src/engine/rule-engine.ts` 的 level 优先级定义)。`block` 级在 `pre-tool-use.ts` 中会硬阻断工具执行,不是"仅告知"。实际行为以 `rule-engine.ts` 为准
387
- - `src/capability/` 是方法论执行核心:planner 负责编排 phase,executor 分前台/后台两条路径,orchestrator 负责推进。daemon **无法主动推送消息**,前台方法论的兜底路径是 Stop → pending 队列 → 下一次 UserPromptSubmit 消费
388
-
389
- ### 目录依赖约束
390
-
391
- - `core` 不反向依赖业务层
392
- - `engine` 可依赖 `core`
393
- - `capability` 可依赖 `core`、`engine`
394
- - `skills` / `templates` / `claudemd` 可依赖 `core`(必要时依赖 `engine`)
395
- - `daemon` 可依赖 `core`、`engine`、`capability`、`skills`
396
- - `cli` 是装配层:组合上述模块,不把规则/执行核心逻辑塞回命令实现
397
- - `web` 作为服务壳:HTTP 路由只做参数收敛与响应序列化,不在路由里写业务逻辑
398
-
399
- ### 存储
400
-
401
- - 单一运行时数据库:`~/.claude-forge/data.db`(由 `FORGE_PATHS.database()` 统一返回),存放 events / sessions / routing_events / methodology_executions / phase_executions / tasks / injections / decisions / token_usage 等
402
- - Schema 通过 `src/core/storage/schema.sql` 初始化;增量迁移走 `runMigrations()`,使用幂等 `ALTER TABLE` + `PRAGMA table_info` 检测
403
- - 索引见 `src/core/storage/performance-indexes.sql`
404
-
405
- ## 开发规范
406
-
407
- ### 构建与测试
408
-
409
- ```bash
410
- # 类型检查
411
- npx tsc --noEmit
412
-
413
- # 后端构建
414
- npx tsc
415
-
416
- # 前端构建
417
- cd web && npm run build
418
-
419
- # 测试
420
- npm run test
421
-
422
- # 完整构建(含 hook 脚本拷贝)
423
- npm run build
424
- ```
425
-
426
- ### Convention YAML 规范
427
-
428
- - Convention 配置统一使用 YAML(见 `src/engine/conventions/*.yaml`)
429
- - 每个 Convention 文件通常包含 `forbidden`(禁止规则)与 `escalation`(升级策略)段落
430
- - 规则的 `when` 条件使用 DSL 表达式,由 `src/engine/dsl/parser.ts` + `compiler.ts` 处理
431
- - 变更后需运行项目测试或对应 demo 脚本验证加载与解析
432
-
433
- ### 边界层类型收敛
434
-
435
- - `src/daemon/handlers/`、`src/web/` 路由、`src/hooks/` 监听器禁止未经收敛直接访问深层字段
436
- - 处理动态数据时优先使用显式类型守卫、局部变量收窄或小范围断言
437
- - 不得把 `any` 或未收窄的 `unknown` 扩散到 `engine`、`core` 等核心层
438
-
439
- ### 守护进程事件推送
440
-
441
- - SSE 推送按需触发,不要在高频事件上无条件推送完整快照
442
- - 会话结束、进程启动、异常恢复路径都要检查过期任务与残留索引
443
- - daemon 不能主动向 Claude 主会话推送消息;跨轮传递必须走 pending 队列 + 下一次 Hook 事件消费
444
-
445
- ### 注意
446
-
447
- - 用户的全局 `~/.claude/CLAUDE.md` 里有一段 "Pipeline 模块架构约定(claude-forge)",列出 `src/pipeline/` 下六个文件(`completion-gate.ts`、`completion-detector.ts`、`artifact-validator.ts`、`dynamic-node-executor.ts`、`dynamic-pipeline-repository.ts`、`pipeline/index.ts`)。**这些文件在当前代码库中不存在**,属于未落地规划。请忽略该段约束,以本项目 CLAUDE.md 为准。
448
- <!-- forge:end-claudemd-auto -->
449
-
450
- <!-- forge:convention-start:custom-claude-forge -->
451
- ## 项目规范约束:claude-forge 综合规范 (v1.2.0)
452
-
453
- ### 来自 Harness Engineering 安全重构规范
454
-
455
- **核心理念:先织安全网,再动代码**
456
-
457
- **TypeScript 专项原则**
458
-
459
- - 严格启用 `strict: true`,禁止 `any`
460
- - 模块边界用 `interface`,内部用 `type`
461
- - 统一 `async/await`,禁止混用 Promise 链
462
- - 错误处理必须显式,不得静默吞异常
463
- - 禁止硬编码敏感信息
464
-
465
- ## 架构决策记录
466
-
467
- _架构决策将在此记录_
468
-
469
- <!-- forge:convention-end:custom-claude-forge -->
470
-
471
- <!-- forge:resume-begin:99112f2d-5b13-46f9-b39c-44429ea99302 -->
472
- ```forge-resume-body
473
- ## 上次工作续接
474
-
475
- ⚠️ **IMPORTANT: 在开始新任务前,请先检查以下上下文**
476
-
477
- **上次在做**:
478
- - 当前的claude.md看起来很长,这个会不会导致理解或者指令偏差呢?
479
-
480
- **上次活跃**: 刚刚
481
-
482
- **会话行为**: 工具调用 5194 次 | Agent 委托 108 次 (Explore, coder, feature-developer) | Skill 调用 11 次
483
-
484
- _生成时间: 2026-05-15T07:10:05.173Z_
485
- ```
486
-
487
- _生成时间: 2026-05-15T07:10:05.203Z_
488
- <!-- forge:resume-end:99112f2d-5b13-46f9-b39c-44429ea99302 -->
@@ -1,129 +0,0 @@
1
- # 并发 Agent 功能
2
-
3
- ## 概述
4
-
5
- 支持一次路由到多个 agent 并发执行,提升吞吐 3-5x。适用于多个独立任务可以并行处理的场景。
6
-
7
- ## 配置示例
8
-
9
- 在 `src/engine/conventions/routing.yaml` 或用户覆盖文件 `~/.claude-forge/routing.yaml` 中添加规则:
10
-
11
- ```yaml
12
- schemaVersion: "1.0"
13
- rules:
14
- - when:
15
- taskType: multi_domain
16
- complexity: [moderate, complex]
17
- action:
18
- type: route_to_agent_group
19
- agents:
20
- - name: coder
21
- focus: "前端 UI 实现"
22
- - name: tester
23
- focus: "单元测试编写"
24
- - name: doc-reviewer
25
- focus: "文档审校"
26
- rationale: "三个任务独立,可并发执行"
27
-
28
- - when:
29
- default: true
30
- action:
31
- type: route_to_skill
32
- strategy: best_match
33
- ```
34
-
35
- ## 使用方式
36
-
37
- ### 用户输入
38
-
39
- ```
40
- 开启多个 Agent 进行后续任务
41
- ```
42
-
43
- ### 系统响应
44
-
45
- ```
46
- 根据路由决策,请并发启动以下 agent:
47
-
48
- 1. **coder** — 前端 UI 实现
49
- 2. **tester** — 单元测试编写
50
- 3. **doc-reviewer** — 文档审校
51
-
52
- 在同一个回答里发起所有 Task 调用。
53
- ```
54
-
55
- ### 实际执行
56
-
57
- 系统会在同一个响应中并发调用多个 Agent 工具:
58
-
59
- ```typescript
60
- // 伪代码示例
61
- Agent({ subagent_type: "coder", prompt: "实现前端 UI", run_in_background: true });
62
- Agent({ subagent_type: "tester", prompt: "编写单元测试", run_in_background: true });
63
- Agent({ subagent_type: "doc-reviewer", prompt: "审校文档", run_in_background: true });
64
- ```
65
-
66
- ## 限制
67
-
68
- - **最多并发 5 个 agent**:避免资源争抢和上下文混乱
69
- - **任务必须独立**:agent 之间不能有依赖关系(如 A 的输出是 B 的输入)
70
- - **每个 agent 必须设置 `run_in_background=true`**:确保并发执行而非串行等待
71
-
72
- ## 监控
73
-
74
- RoutingObserver 会检查:
75
-
76
- - 是否调用了推荐的 agent
77
- - 是否设置了 `run_in_background=true`
78
- - 部分遵守(推荐 3 个调用 2 个)不算 refusal
79
-
80
- ## 适用场景
81
-
82
- ✅ **适合并发**:
83
- - 前端 + 后端 + 测试独立开发
84
- - 多个模块的文档审校
85
- - 不同子系统的性能优化
86
-
87
- ❌ **不适合并发**:
88
- - 需要先设计架构再实现代码(有依赖)
89
- - 需要先修复 bug 再编写测试(有顺序)
90
- - 需要先重构再优化性能(有前置条件)
91
-
92
- ## 配置验证
93
-
94
- 验证规则是否正确加载:
95
-
96
- ```bash
97
- # 查看当前加载的路由规则
98
- npx tsx scripts/demo-routing.ts
99
-
100
- # 或通过 Web UI 查看
101
- # 访问 http://localhost:3000/routing
102
- ```
103
-
104
- ## 故障排查
105
-
106
- ### 问题:agent 没有并发执行
107
-
108
- **原因**:可能是 `run_in_background` 未设置或路由决策未生效。
109
-
110
- **解决**:
111
- 1. 检查 `routing.yaml` 中的 `when` 条件是否匹配
112
- 2. 确认 RoutingObserver 日志中是否有 "route_to_agent_group" 决策
113
- 3. 验证 Agent 调用时是否传递了 `run_in_background: true`
114
-
115
- ### 问题:部分 agent 被跳过
116
-
117
- **原因**:可能是某些 agent 被自动禁用(auto-disable)。
118
-
119
- **解决**:
120
- 1. 检查 `~/.claude-forge/auto-disable.json` 中的禁用记录
121
- 2. 通过 Web UI 手动启用被禁用的 agent
122
- 3. 调整 auto-disable 阈值(默认连续 3 次拒绝后禁用)
123
-
124
- ## 相关文件
125
-
126
- - `src/engine/agent-router.ts` — 路由决策核心逻辑
127
- - `src/engine/conventions/routing.yaml` — 默认路由规则
128
- - `tests/unit/agent-router-concurrent.test.ts` — 并发路由单元测试
129
- - `src/daemon/handlers/routing-observer.ts` — 路由遵守度监控