@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
@@ -1,183 +0,0 @@
1
- # 第三方 Skills 集成指南
2
-
3
- ## 概述
4
-
5
- claude-forge 集成了 [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) 作为第三方 skill 库,提供 22 个经过实战验证的成熟 skills。
6
-
7
- ### 为什么引入 agent-skills?
8
-
9
- - **成熟度高**:由 Google Chrome 团队的 Addy Osmani 维护,经过大量实际项目验证
10
- - **覆盖面广**:涵盖代码审查、性能优化、安全检查、文档生成等常见场景
11
- - **MIT 授权**:开源友好,可自由使用和修改
12
- - **持续更新**:上游仓库活跃维护,可定期同步最新改进
13
-
14
- ### 集成策略
15
-
16
- agent-skills 作为 **补充库** 存在,与 claude-forge 的 `OFFICIAL_SKILLS` 共存:
17
-
18
- - **官方 skills** (`src/skills/official/`):claude-forge 内置,针对 SDLC 流程优化
19
- - **第三方 skills** (`~/.claude/skills/agent-skills/`):通用场景,按需加载
20
-
21
- ## 同步策略
22
-
23
- ### 首次同步
24
-
25
- ```bash
26
- npm run sync:agent-skills
27
- ```
28
-
29
- 执行后会:
30
- 1. 从 GitHub clone `addyosmani/agent-skills` 到 `~/.claude/skills/agent-skills/`
31
- 2. 记录 upstream commit hash 到 `.sync-metadata.json`
32
- 3. 生成 MIT License 合规文件 `NOTICE`
33
-
34
- ### 定期更新
35
-
36
- 重复运行 `npm run sync:agent-skills` 会自动执行 `git pull` 更新到最新版本。
37
-
38
- ### 同步元数据
39
-
40
- 同步完成后,`~/.claude/skills/agent-skills/.sync-metadata.json` 记录:
41
-
42
- ```json
43
- {
44
- "upstream_repo": "https://github.com/addyosmani/agent-skills.git",
45
- "commit_hash": "abc123...",
46
- "synced_at": "2026-05-10T12:00:00.000Z"
47
- }
48
- ```
49
-
50
- 可通过此文件追溯当前使用的上游版本。
51
-
52
- ## 去重策略
53
-
54
- > **注意**:此部分待 Task #38 完成后填充。
55
-
56
- 当前已知的潜在重叠 skills:
57
-
58
- - `OFFICIAL_SKILLS` 中的某些 skill 可能与 agent-skills 功能重叠
59
- - 去重分析将在 Task #38 中完成,届时会更新本文档
60
-
61
- ### 优先级规则(待确认)
62
-
63
- 预期的加载优先级(待 Task #38 验证):
64
-
65
- 1. 用户自定义 skills (`~/.claude/skills/<name>.md`)
66
- 2. 官方 skills (`src/skills/official/`)
67
- 3. 第三方 skills (`~/.claude/skills/agent-skills/skills/`)
68
-
69
- ## 自定义覆盖
70
-
71
- 如果需要修改 agent-skills 中的某个 skill,**不要直接编辑** `~/.claude/skills/agent-skills/` 目录(会被 `git pull` 覆盖)。
72
-
73
- 正确做法:
74
-
75
- 1. 复制要修改的 skill 到 `~/.claude/skills/<skill-name>.md`
76
- 2. 在复制的文件中进行修改
77
- 3. skill registry 会优先加载用户自定义版本
78
-
79
- 示例:
80
-
81
- ```bash
82
- # 覆盖 agent-skills 的 code-review skill
83
- cp ~/.claude/skills/agent-skills/skills/code-review/skill.md \
84
- ~/.claude/skills/code-review.md
85
-
86
- # 编辑自定义版本
87
- vim ~/.claude/skills/code-review.md
88
- ```
89
-
90
- ## License 合规
91
-
92
- ### 授权说明
93
-
94
- agent-skills 采用 **MIT License**,允许:
95
-
96
- - ✅ 商业使用
97
- - ✅ 修改
98
- - ✅ 分发
99
- - ✅ 私有使用
100
-
101
- 要求:
102
-
103
- - 📄 保留原始版权声明和许可证文本
104
- - 📄 在分发时包含 NOTICE 文件
105
-
106
- ### NOTICE 文件
107
-
108
- 同步脚本会自动生成 `~/.claude/skills/agent-skills/NOTICE` 文件,包含:
109
-
110
- - 上游仓库信息
111
- - MIT License 全文
112
- - 版权声明
113
- - 同步时间和 commit hash
114
-
115
- ### 合规检查清单
116
-
117
- - [x] 保留 upstream 的 LICENSE 文件
118
- - [x] 生成 NOTICE 文件记录来源
119
- - [x] 在文档中说明第三方依赖
120
- - [x] 不修改 upstream 仓库的版权声明
121
-
122
- ## 故障排查
123
-
124
- ### 同步失败
125
-
126
- **症状**:`npm run sync:agent-skills` 报错
127
-
128
- **可能原因**:
129
-
130
- 1. **网络问题**
131
- ```bash
132
- # 检查网络连接
133
- ping github.com
134
-
135
- # 尝试手动 clone
136
- git clone https://github.com/addyosmani/agent-skills.git /tmp/test
137
- ```
138
-
139
- 2. **Git 未安装**
140
- ```bash
141
- # 检查 git 版本
142
- git --version
143
-
144
- # macOS 安装
145
- brew install git
146
- ```
147
-
148
- 3. **权限问题**
149
- ```bash
150
- # 检查目录权限
151
- ls -la ~/.claude/skills/
152
-
153
- # 修复权限
154
- chmod -R u+w ~/.claude/skills/
155
- ```
156
-
157
- ### 本地修改冲突
158
-
159
- **症状**:`git pull` 时提示本地有未提交的修改
160
-
161
- **解决方案**:
162
-
163
- ```bash
164
- cd ~/.claude/skills/agent-skills/
165
-
166
- # 查看修改
167
- git status
168
-
169
- # 方案 1:放弃本地修改(推荐)
170
- git reset --hard HEAD
171
- npm run sync:agent-skills
172
-
173
- # 方案 2:保存修改到用户目录
174
- cp skills/xxx/skill.md ~/.claude/skills/xxx.md
175
- git reset --hard HEAD
176
- npm run sync:agent-skills
177
- ```
178
-
179
- ## 参考资料
180
-
181
- - [agent-skills 官方仓库](https://github.com/addyosmani/agent-skills)
182
- - [MIT License 说明](https://opensource.org/licenses/MIT)
183
- - [claude-forge Skills Registry 设计](../src/skills/README.md)(待创建)
@@ -1,86 +0,0 @@
1
- # Tasks Filter + Pagination — Test Report
2
-
3
- **Date**: 2026-05-18
4
- **Feature**: tasks-filter-pagination
5
-
6
- ## Summary
7
-
8
- | Suite | Tests | Passed | Failed | Notes |
9
- |-------|-------|--------|--------|-------|
10
- | Unit: routes-tasks | 19 | 19 | 0 | All A1-A8 acceptance criteria covered |
11
- | Integration: tasks-filter | 10 | 10 | 0 | Real SQLite, JOIN + COUNT verification |
12
- | Full suite (npm test) | 324 | 323 | 1 | 1 pre-existing failure in sqlite-refactor-harness.test.ts (non-UUID event_id, unrelated) |
13
- | TypeScript (tsc --noEmit) | — | pass | 0 | Clean |
14
-
15
- ## Unit Tests (routes-tasks.test.ts)
16
-
17
- ### Paginated response group (7 tests)
18
-
19
- | Test | Result |
20
- |------|--------|
21
- | Returns empty page when no tasks (A1) | PASS |
22
- | Returns items newest-first with total and has_more (A1) | PASS |
23
- | Items include project_path from joined sessions | PASS |
24
- | Honours session filter | PASS |
25
- | Respects limit param and sets has_more | PASS |
26
- | Clamps limit to 200 (A6) | PASS |
27
- | Task items contain expected fields | PASS |
28
-
29
- ### Filter params group (5 tests)
30
-
31
- | Test | Result |
32
- |------|--------|
33
- | Filters by single project (A2) | PASS |
34
- | Filters by multiple projects OR (A3) | PASS |
35
- | Filters by from/to time range (A4) | PASS |
36
- | Filters by search (title LIKE) (A5) | PASS |
37
- | Returns 400 for invalid query params | PASS |
38
-
39
- ### Pagination group (1 test)
40
-
41
- | Test | Result |
42
- |------|--------|
43
- | Offset increments page, total stays constant (A8) | PASS |
44
-
45
- ### /api/tasks/projects group (3 tests)
46
-
47
- | Test | Result |
48
- |------|--------|
49
- | Returns empty array when no tasks | PASS |
50
- | Returns distinct project paths that have tasks | PASS |
51
- | De-duplicates when multiple sessions share a project | PASS |
52
-
53
- ### GET /api/tasks/:taskId group (3 tests) — unchanged route
54
-
55
- | Test | Result |
56
- |------|--------|
57
- | Returns 404 for non-existent task | PASS |
58
- | Returns task detail with timeline + injections + skill invocations | PASS |
59
- | Marks Agent calls in timeline with agent_detail | PASS |
60
-
61
- ## Integration Tests (tasks-filter.integration.test.ts)
62
-
63
- Real in-memory SQLite validating JOIN correctness and COUNT accuracy.
64
-
65
- | Test | Result |
66
- |------|--------|
67
- | JOIN preserves project_path from sessions | PASS |
68
- | COUNT(*) matches items length when no pagination | PASS |
69
- | COUNT remains constant across pages (A8) | PASS |
70
- | Project filter via JOIN correctly isolates tasks (A2) | PASS |
71
- | Multi-project OR filter returns union correctly (A3) | PASS |
72
- | Search filter uses LIKE on title (A5) | PASS |
73
- | from/to date range filter (A4) | PASS |
74
- | queryTaskProjects returns distinct paths with tasks only | PASS |
75
- | Limit clamp: storage-level enforces max 200 | PASS |
76
- | has_more is accurate at boundary (exactly limit items) | PASS |
77
-
78
- ## Pre-existing Failure
79
-
80
- `tests/unit/storage/sqlite-refactor-harness.test.ts` > `linkEventToTask associates events with tasks` — uses literal `'ev-prompt'` event_id which fails Zod UUID validation. This failure existed before this feature branch. Out of scope.
81
-
82
- ## Notes
83
-
84
- - ISO 8601 date string comparison uses lexicographic sort. Test data uses `.000Z` suffix consistently to avoid `.000Z` vs `Z` sort anomaly.
85
- - Title LIKE search is case-insensitive for ASCII on SQLite default collation.
86
- - Frontend (index.html) changes are not covered by automated tests; manual E2E verification per A7 required.
package/forge DELETED
@@ -1,321 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Claude Forge - 一键启动脚本
3
-
4
- set -e
5
-
6
- FORGE_DIR="$HOME/.claude-forge"
7
- CLAUDE_DIR="$HOME/.claude"
8
- SETTINGS_FILE="$CLAUDE_DIR/settings.json"
9
- PID_FILE="$FORGE_DIR/daemon.pid"
10
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
-
12
- # 自动选择运行方式:优先 dist/,否则自动 build
13
- ensure_built() {
14
- if [ ! -f "$SCRIPT_DIR/dist/cli/index.js" ]; then
15
- info "首次运行,正在编译..."
16
- cd "$SCRIPT_DIR" && npx tsc 2>&1
17
- if [ ! -f "$SCRIPT_DIR/dist/cli/index.js" ]; then
18
- error "编译失败,请检查 TypeScript 错误"
19
- exit 1
20
- fi
21
- success "编译完成"
22
- fi
23
- }
24
-
25
- run_cli() {
26
- ensure_built
27
- node "$SCRIPT_DIR/dist/cli/index.js" "$@"
28
- }
29
-
30
- # 颜色输出
31
- GREEN='\033[0;32m'
32
- YELLOW='\033[1;33m'
33
- RED='\033[0;31m'
34
- BLUE='\033[0;34m'
35
- NC='\033[0m' # No Color
36
-
37
- info() {
38
- echo -e "${BLUE}ℹ${NC} $1"
39
- }
40
-
41
- success() {
42
- echo -e "${GREEN}✓${NC} $1"
43
- }
44
-
45
- warn() {
46
- echo -e "${YELLOW}⚠${NC} $1"
47
- }
48
-
49
- error() {
50
- echo -e "${RED}✗${NC} $1"
51
- }
52
-
53
- # 检查是否已初始化
54
- is_initialized() {
55
- [ -f "$SETTINGS_FILE" ] && grep -q "claude-forge" "$SETTINGS_FILE" 2>/dev/null
56
- }
57
-
58
- # 检查守护进程是否运行
59
- is_daemon_running() {
60
- if [ -f "$PID_FILE" ]; then
61
- local pid=$(cat "$PID_FILE")
62
- kill -0 "$pid" 2>/dev/null
63
- return $?
64
- fi
65
- return 1
66
- }
67
-
68
- # 初始化
69
- do_init() {
70
- info "正在初始化 Claude Forge..."
71
- run_cli init
72
- success "初始化完成"
73
- }
74
-
75
- # 启动守护进程
76
- do_start() {
77
- if is_daemon_running; then
78
- warn "守护进程已在运行"
79
- return
80
- fi
81
-
82
- info "正在启动守护进程..."
83
- run_cli daemon start
84
- sleep 1
85
-
86
- if is_daemon_running; then
87
- success "守护进程已启动"
88
- else
89
- error "守护进程启动失败"
90
- exit 1
91
- fi
92
- }
93
-
94
- # 停止守护进程
95
- do_stop() {
96
- if ! is_daemon_running; then
97
- warn "守护进程未运行"
98
- return
99
- fi
100
-
101
- info "正在停止守护进程..."
102
- run_cli daemon stop
103
- success "守护进程已停止"
104
- }
105
-
106
- # 查看状态
107
- do_status() {
108
- echo ""
109
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
110
- echo " Claude Forge 状态"
111
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
112
- echo ""
113
-
114
- # 初始化状态
115
- if is_initialized; then
116
- success "已初始化"
117
- else
118
- error "未初始化"
119
- fi
120
-
121
- # 守护进程状态
122
- if is_daemon_running; then
123
- success "守护进程运行中 (PID: $(cat $PID_FILE))"
124
- else
125
- error "守护进程未运行"
126
- fi
127
-
128
- # 统计信息
129
- if [ -f "$FORGE_DIR/data.db" ]; then
130
- echo ""
131
- run_cli query stats
132
- fi
133
-
134
- echo ""
135
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
136
- }
137
-
138
- # 查看日志
139
- do_logs() {
140
- local log_file="$FORGE_DIR/daemon.log"
141
- if [ ! -f "$log_file" ]; then
142
- warn "日志文件不存在"
143
- return
144
- fi
145
-
146
- tail -f "$log_file"
147
- }
148
-
149
- # 配置 API
150
- do_config_api() {
151
- echo ""
152
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
153
- echo " 配置 Claude API"
154
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
155
- echo ""
156
-
157
- # 显示当前配置
158
- info "当前配置:"
159
- run_cli config show 2>/dev/null | grep -E "(api_key|base_url)" || echo " 未配置"
160
- echo ""
161
-
162
- # 询问是否设置 API Key
163
- read -p "设置 API Key? (留空跳过): " api_key
164
- if [ -n "$api_key" ]; then
165
- run_cli config set distill.api_key "$api_key"
166
- fi
167
-
168
- # 询问是否设置 Base URL
169
- read -p "设置 Base URL? (留空使用默认): " base_url
170
- if [ -n "$base_url" ]; then
171
- run_cli config set distill.base_url "$base_url"
172
- fi
173
-
174
- echo ""
175
- success "配置已更新"
176
- warn "需要重启守护进程才能生效"
177
- read -p "是否现在重启? (Y/n) " -n 1 -r
178
- echo
179
- if [[ ! $REPLY =~ ^[Nn]$ ]]; then
180
- do_stop
181
- sleep 1
182
- do_start
183
- fi
184
- }
185
-
186
- # 主菜单
187
- show_menu() {
188
- echo ""
189
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
190
- echo " Claude Forge"
191
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
192
- echo ""
193
- echo " 1) 启动 (start)"
194
- echo " 2) 停止 (stop)"
195
- echo " 3) 重启 (restart)"
196
- echo " 4) 状态 (status)"
197
- echo " 5) 查看日志 (logs)"
198
- echo " 6) 查看会话 (sessions)"
199
- echo " 7) 手动蒸馏 (distill)"
200
- echo " 8) 备份数据 (backup)"
201
- echo " 9) 配置 API (config)"
202
- echo " r) 重置配置 (reset)"
203
- echo " u) 卸载 (uninit)"
204
- echo " 0) 退出"
205
- echo ""
206
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
207
- echo ""
208
- }
209
-
210
- # 处理菜单选择
211
- handle_choice() {
212
- case $1 in
213
- 1|start)
214
- do_start
215
- ;;
216
- 2|stop)
217
- do_stop
218
- ;;
219
- 3|restart)
220
- do_stop
221
- sleep 1
222
- do_start
223
- ;;
224
- 4|status)
225
- do_status
226
- ;;
227
- 5|logs)
228
- do_logs
229
- ;;
230
- 6|sessions)
231
- run_cli query sessions
232
- ;;
233
- 7|distill)
234
- info "正在蒸馏..."
235
- run_cli distill
236
- ;;
237
- 8|backup)
238
- info "正在备份..."
239
- run_cli backup
240
- ;;
241
- 9|config)
242
- do_config_api
243
- ;;
244
- r|reset)
245
- read -p "确定要重置配置吗?(y/N) " -n 1 -r
246
- echo
247
- if [[ $REPLY =~ ^[Yy]$ ]]; then
248
- run_cli config reset
249
- success "配置已重置"
250
- fi
251
- ;;
252
- u|uninit)
253
- read -p "确定要卸载吗?(y/N) " -n 1 -r
254
- echo
255
- if [[ $REPLY =~ ^[Yy]$ ]]; then
256
- run_cli uninit
257
- success "已卸载"
258
- fi
259
- ;;
260
- 0|exit|quit)
261
- exit 0
262
- ;;
263
- *)
264
- error "无效选择"
265
- ;;
266
- esac
267
- }
268
-
269
- # 主流程
270
- main() {
271
- # 如果有参数,直接执行
272
- if [ $# -gt 0 ]; then
273
- handle_choice "$1"
274
- exit 0
275
- fi
276
-
277
- # 首次运行检查
278
- if ! is_initialized; then
279
- echo ""
280
- warn "检测到首次运行,需要初始化"
281
- read -p "是否现在初始化?(Y/n) " -n 1 -r
282
- echo
283
- if [[ ! $REPLY =~ ^[Nn]$ ]]; then
284
- do_init
285
- echo ""
286
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
287
- warn "重要:Hook 已注入到 Claude Code 配置"
288
- warn "需要重新启动 Claude Code 才能生效!"
289
- echo ""
290
- echo " 请执行以下操作:"
291
- echo " 1. 输入 /exit 退出当前 Claude Code 会话"
292
- echo " 2. 重新运行 claude 命令"
293
- echo " 3. Hook 会自动生效,所有工具调用将被记录"
294
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
295
- else
296
- exit 0
297
- fi
298
- fi
299
-
300
- # 自动启动守护进程
301
- if ! is_daemon_running; then
302
- info "守护进程未运行"
303
- read -p "是否启动守护进程?(Y/n) " -n 1 -r
304
- echo
305
- if [[ ! $REPLY =~ ^[Nn]$ ]]; then
306
- do_start
307
- fi
308
- fi
309
-
310
- # 交互式菜单
311
- while true; do
312
- show_menu
313
- read -p "请选择 [0-9]: " choice
314
- echo ""
315
- handle_choice "$choice"
316
- echo ""
317
- read -p "按回车继续..."
318
- done
319
- }
320
-
321
- main "$@"
@@ -1,40 +0,0 @@
1
- import { defineConfig, devices } from '@playwright/test';
2
-
3
- /**
4
- * Playwright E2E 测试配置
5
- *
6
- * 使用方法:
7
- * 1. 安装依赖: npm install -D @playwright/test
8
- * 2. 安装浏览器: npx playwright install
9
- * 3. 启动守护进程: claude-forge daemon start
10
- * 4. 运行测试: npm run test:e2e
11
- */
12
-
13
- export default defineConfig({
14
- testDir: './tests/e2e',
15
- fullyParallel: true,
16
- forbidOnly: !!process.env.CI,
17
- retries: process.env.CI ? 2 : 0,
18
- workers: process.env.CI ? 1 : undefined,
19
- reporter: 'html',
20
-
21
- use: {
22
- baseURL: 'http://localhost:3721',
23
- trace: 'on-first-retry',
24
- screenshot: 'only-on-failure',
25
- },
26
-
27
- projects: [
28
- {
29
- name: 'chromium',
30
- use: { ...devices['Desktop Chrome'] },
31
- },
32
- ],
33
-
34
- webServer: {
35
- command: 'echo "请确保守护进程已启动: claude-forge daemon start"',
36
- url: 'http://localhost:3721',
37
- reuseExistingServer: true,
38
- timeout: 5000,
39
- },
40
- });