forge-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/.claude/hooks/worktree-create.sh +64 -0
  2. package/.claude/hooks/worktree-remove.sh +57 -0
  3. package/.claude/settings.local.json +29 -0
  4. package/.forge/knowledge/conventions.yaml +1 -0
  5. package/.forge/knowledge/decisions.yaml +1 -0
  6. package/.forge/knowledge/gotchas.yaml +1 -0
  7. package/.forge/knowledge/patterns.yaml +1 -0
  8. package/.forge/manifest.yaml +6 -0
  9. package/CLAUDE.md +144 -0
  10. package/bin/setup-forge.sh +132 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +553 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/context/codebase.d.ts +57 -0
  16. package/dist/context/codebase.d.ts.map +1 -0
  17. package/dist/context/codebase.js +301 -0
  18. package/dist/context/codebase.js.map +1 -0
  19. package/dist/context/injector.d.ts +147 -0
  20. package/dist/context/injector.d.ts.map +1 -0
  21. package/dist/context/injector.js +533 -0
  22. package/dist/context/injector.js.map +1 -0
  23. package/dist/context/memory.d.ts +32 -0
  24. package/dist/context/memory.d.ts.map +1 -0
  25. package/dist/context/memory.js +140 -0
  26. package/dist/context/memory.js.map +1 -0
  27. package/dist/context/session-index.d.ts +54 -0
  28. package/dist/context/session-index.d.ts.map +1 -0
  29. package/dist/context/session-index.js +265 -0
  30. package/dist/context/session-index.js.map +1 -0
  31. package/dist/context/session.d.ts +42 -0
  32. package/dist/context/session.d.ts.map +1 -0
  33. package/dist/context/session.js +121 -0
  34. package/dist/context/session.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +37 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ingestion/chunker.d.ts +19 -0
  40. package/dist/ingestion/chunker.d.ts.map +1 -0
  41. package/dist/ingestion/chunker.js +189 -0
  42. package/dist/ingestion/chunker.js.map +1 -0
  43. package/dist/ingestion/embedder.d.ts +45 -0
  44. package/dist/ingestion/embedder.d.ts.map +1 -0
  45. package/dist/ingestion/embedder.js +152 -0
  46. package/dist/ingestion/embedder.js.map +1 -0
  47. package/dist/ingestion/git-analyzer.d.ts +77 -0
  48. package/dist/ingestion/git-analyzer.d.ts.map +1 -0
  49. package/dist/ingestion/git-analyzer.js +437 -0
  50. package/dist/ingestion/git-analyzer.js.map +1 -0
  51. package/dist/ingestion/indexer.d.ts +79 -0
  52. package/dist/ingestion/indexer.d.ts.map +1 -0
  53. package/dist/ingestion/indexer.js +766 -0
  54. package/dist/ingestion/indexer.js.map +1 -0
  55. package/dist/ingestion/markdown-chunker.d.ts +19 -0
  56. package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
  57. package/dist/ingestion/markdown-chunker.js +243 -0
  58. package/dist/ingestion/markdown-chunker.js.map +1 -0
  59. package/dist/ingestion/markdown-knowledge.d.ts +21 -0
  60. package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
  61. package/dist/ingestion/markdown-knowledge.js +129 -0
  62. package/dist/ingestion/markdown-knowledge.js.map +1 -0
  63. package/dist/ingestion/parser.d.ts +20 -0
  64. package/dist/ingestion/parser.d.ts.map +1 -0
  65. package/dist/ingestion/parser.js +429 -0
  66. package/dist/ingestion/parser.js.map +1 -0
  67. package/dist/ingestion/watcher.d.ts +28 -0
  68. package/dist/ingestion/watcher.d.ts.map +1 -0
  69. package/dist/ingestion/watcher.js +147 -0
  70. package/dist/ingestion/watcher.js.map +1 -0
  71. package/dist/knowledge/hydrator.d.ts +37 -0
  72. package/dist/knowledge/hydrator.d.ts.map +1 -0
  73. package/dist/knowledge/hydrator.js +220 -0
  74. package/dist/knowledge/hydrator.js.map +1 -0
  75. package/dist/knowledge/registry.d.ts +129 -0
  76. package/dist/knowledge/registry.d.ts.map +1 -0
  77. package/dist/knowledge/registry.js +361 -0
  78. package/dist/knowledge/registry.js.map +1 -0
  79. package/dist/knowledge/search.d.ts +114 -0
  80. package/dist/knowledge/search.d.ts.map +1 -0
  81. package/dist/knowledge/search.js +428 -0
  82. package/dist/knowledge/search.js.map +1 -0
  83. package/dist/knowledge/store.d.ts +76 -0
  84. package/dist/knowledge/store.d.ts.map +1 -0
  85. package/dist/knowledge/store.js +230 -0
  86. package/dist/knowledge/store.js.map +1 -0
  87. package/dist/learning/confidence.d.ts +30 -0
  88. package/dist/learning/confidence.d.ts.map +1 -0
  89. package/dist/learning/confidence.js +165 -0
  90. package/dist/learning/confidence.js.map +1 -0
  91. package/dist/learning/patterns.d.ts +52 -0
  92. package/dist/learning/patterns.d.ts.map +1 -0
  93. package/dist/learning/patterns.js +290 -0
  94. package/dist/learning/patterns.js.map +1 -0
  95. package/dist/learning/trajectory.d.ts +55 -0
  96. package/dist/learning/trajectory.d.ts.map +1 -0
  97. package/dist/learning/trajectory.js +200 -0
  98. package/dist/learning/trajectory.js.map +1 -0
  99. package/dist/memory/memory-compat.d.ts +100 -0
  100. package/dist/memory/memory-compat.d.ts.map +1 -0
  101. package/dist/memory/memory-compat.js +146 -0
  102. package/dist/memory/memory-compat.js.map +1 -0
  103. package/dist/memory/observation-store.d.ts +57 -0
  104. package/dist/memory/observation-store.d.ts.map +1 -0
  105. package/dist/memory/observation-store.js +154 -0
  106. package/dist/memory/observation-store.js.map +1 -0
  107. package/dist/memory/session-tracker.d.ts +81 -0
  108. package/dist/memory/session-tracker.d.ts.map +1 -0
  109. package/dist/memory/session-tracker.js +262 -0
  110. package/dist/memory/session-tracker.js.map +1 -0
  111. package/dist/pipeline/engine.d.ts +179 -0
  112. package/dist/pipeline/engine.d.ts.map +1 -0
  113. package/dist/pipeline/engine.js +691 -0
  114. package/dist/pipeline/engine.js.map +1 -0
  115. package/dist/pipeline/events.d.ts +54 -0
  116. package/dist/pipeline/events.d.ts.map +1 -0
  117. package/dist/pipeline/events.js +157 -0
  118. package/dist/pipeline/events.js.map +1 -0
  119. package/dist/pipeline/parallel.d.ts +83 -0
  120. package/dist/pipeline/parallel.d.ts.map +1 -0
  121. package/dist/pipeline/parallel.js +277 -0
  122. package/dist/pipeline/parallel.js.map +1 -0
  123. package/dist/pipeline/state-machine.d.ts +65 -0
  124. package/dist/pipeline/state-machine.d.ts.map +1 -0
  125. package/dist/pipeline/state-machine.js +176 -0
  126. package/dist/pipeline/state-machine.js.map +1 -0
  127. package/dist/query/graph-queries.d.ts +84 -0
  128. package/dist/query/graph-queries.d.ts.map +1 -0
  129. package/dist/query/graph-queries.js +216 -0
  130. package/dist/query/graph-queries.js.map +1 -0
  131. package/dist/query/hybrid-search.d.ts +34 -0
  132. package/dist/query/hybrid-search.d.ts.map +1 -0
  133. package/dist/query/hybrid-search.js +263 -0
  134. package/dist/query/hybrid-search.js.map +1 -0
  135. package/dist/query/intent-detector.d.ts +35 -0
  136. package/dist/query/intent-detector.d.ts.map +1 -0
  137. package/dist/query/intent-detector.js +115 -0
  138. package/dist/query/intent-detector.js.map +1 -0
  139. package/dist/query/ranking.d.ts +57 -0
  140. package/dist/query/ranking.d.ts.map +1 -0
  141. package/dist/query/ranking.js +109 -0
  142. package/dist/query/ranking.js.map +1 -0
  143. package/dist/server.d.ts +3 -0
  144. package/dist/server.d.ts.map +1 -0
  145. package/dist/server.js +291 -0
  146. package/dist/server.js.map +1 -0
  147. package/dist/storage/falkordb-store.d.ts +73 -0
  148. package/dist/storage/falkordb-store.d.ts.map +1 -0
  149. package/dist/storage/falkordb-store.js +346 -0
  150. package/dist/storage/falkordb-store.js.map +1 -0
  151. package/dist/storage/file-cache.d.ts +32 -0
  152. package/dist/storage/file-cache.d.ts.map +1 -0
  153. package/dist/storage/file-cache.js +115 -0
  154. package/dist/storage/file-cache.js.map +1 -0
  155. package/dist/storage/interfaces.d.ts +151 -0
  156. package/dist/storage/interfaces.d.ts.map +1 -0
  157. package/dist/storage/interfaces.js +7 -0
  158. package/dist/storage/interfaces.js.map +1 -0
  159. package/dist/storage/qdrant-store.d.ts +110 -0
  160. package/dist/storage/qdrant-store.d.ts.map +1 -0
  161. package/dist/storage/qdrant-store.js +467 -0
  162. package/dist/storage/qdrant-store.js.map +1 -0
  163. package/dist/storage/schema.d.ts +4 -0
  164. package/dist/storage/schema.d.ts.map +1 -0
  165. package/dist/storage/schema.js +136 -0
  166. package/dist/storage/schema.js.map +1 -0
  167. package/dist/storage/sqlite.d.ts +35 -0
  168. package/dist/storage/sqlite.d.ts.map +1 -0
  169. package/dist/storage/sqlite.js +132 -0
  170. package/dist/storage/sqlite.js.map +1 -0
  171. package/dist/tools/collaboration-tools.d.ts +111 -0
  172. package/dist/tools/collaboration-tools.d.ts.map +1 -0
  173. package/dist/tools/collaboration-tools.js +174 -0
  174. package/dist/tools/collaboration-tools.js.map +1 -0
  175. package/dist/tools/context-tools.d.ts +293 -0
  176. package/dist/tools/context-tools.d.ts.map +1 -0
  177. package/dist/tools/context-tools.js +437 -0
  178. package/dist/tools/context-tools.js.map +1 -0
  179. package/dist/tools/graph-tools.d.ts +129 -0
  180. package/dist/tools/graph-tools.d.ts.map +1 -0
  181. package/dist/tools/graph-tools.js +237 -0
  182. package/dist/tools/graph-tools.js.map +1 -0
  183. package/dist/tools/ingestion-tools.d.ts +96 -0
  184. package/dist/tools/ingestion-tools.d.ts.map +1 -0
  185. package/dist/tools/ingestion-tools.js +90 -0
  186. package/dist/tools/ingestion-tools.js.map +1 -0
  187. package/dist/tools/learning-tools.d.ts +168 -0
  188. package/dist/tools/learning-tools.d.ts.map +1 -0
  189. package/dist/tools/learning-tools.js +158 -0
  190. package/dist/tools/learning-tools.js.map +1 -0
  191. package/dist/tools/memory-tools.d.ts +183 -0
  192. package/dist/tools/memory-tools.d.ts.map +1 -0
  193. package/dist/tools/memory-tools.js +197 -0
  194. package/dist/tools/memory-tools.js.map +1 -0
  195. package/dist/tools/phase-tools.d.ts +954 -0
  196. package/dist/tools/phase-tools.d.ts.map +1 -0
  197. package/dist/tools/phase-tools.js +1215 -0
  198. package/dist/tools/phase-tools.js.map +1 -0
  199. package/dist/tools/pipeline-tools.d.ts +140 -0
  200. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  201. package/dist/tools/pipeline-tools.js +162 -0
  202. package/dist/tools/pipeline-tools.js.map +1 -0
  203. package/dist/tools/registration-tools.d.ts +220 -0
  204. package/dist/tools/registration-tools.d.ts.map +1 -0
  205. package/dist/tools/registration-tools.js +391 -0
  206. package/dist/tools/registration-tools.js.map +1 -0
  207. package/dist/util/circuit-breaker.d.ts +75 -0
  208. package/dist/util/circuit-breaker.d.ts.map +1 -0
  209. package/dist/util/circuit-breaker.js +159 -0
  210. package/dist/util/circuit-breaker.js.map +1 -0
  211. package/dist/util/config.d.ts +23 -0
  212. package/dist/util/config.d.ts.map +1 -0
  213. package/dist/util/config.js +164 -0
  214. package/dist/util/config.js.map +1 -0
  215. package/dist/util/logger.d.ts +13 -0
  216. package/dist/util/logger.d.ts.map +1 -0
  217. package/dist/util/logger.js +45 -0
  218. package/dist/util/logger.js.map +1 -0
  219. package/dist/util/token-counter.d.ts +24 -0
  220. package/dist/util/token-counter.d.ts.map +1 -0
  221. package/dist/util/token-counter.js +48 -0
  222. package/dist/util/token-counter.js.map +1 -0
  223. package/dist/util/types.d.ts +525 -0
  224. package/dist/util/types.d.ts.map +1 -0
  225. package/dist/util/types.js +5 -0
  226. package/dist/util/types.js.map +1 -0
  227. package/docker-compose.yml +20 -0
  228. package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
  229. package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
  230. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
  231. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
  232. package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
  233. package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
  234. package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
  235. package/package.json +39 -0
  236. package/plugin/.claude-plugin/plugin.json +8 -0
  237. package/plugin/.mcp.json +15 -0
  238. package/plugin/README.md +134 -0
  239. package/plugin/agents/architect.md +367 -0
  240. package/plugin/agents/backend-specialist.md +263 -0
  241. package/plugin/agents/brainstormer.md +122 -0
  242. package/plugin/agents/data-specialist.md +266 -0
  243. package/plugin/agents/designer.md +408 -0
  244. package/plugin/agents/frontend-specialist.md +241 -0
  245. package/plugin/agents/inspector.md +406 -0
  246. package/plugin/agents/knowledge-keeper.md +443 -0
  247. package/plugin/agents/platform-engineer.md +326 -0
  248. package/plugin/agents/product-manager.md +268 -0
  249. package/plugin/agents/product-owner.md +438 -0
  250. package/plugin/agents/pulse-checker.md +73 -0
  251. package/plugin/agents/qa-strategist.md +500 -0
  252. package/plugin/agents/self-improver.md +310 -0
  253. package/plugin/agents/strategist.md +360 -0
  254. package/plugin/agents/supervisor.md +380 -0
  255. package/plugin/commands/brainstorm.md +25 -0
  256. package/plugin/commands/forge.md +88 -0
  257. package/plugin/docs/atlassian-integration.md +110 -0
  258. package/plugin/docs/workflow.md +126 -0
  259. package/plugin/skills/agent-development/.skillfish.json +10 -0
  260. package/plugin/skills/agent-development/SKILL.md +415 -0
  261. package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
  262. package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
  263. package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
  264. package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
  265. package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
  266. package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
  267. package/plugin/skills/agent-handoff/SKILL.md +335 -0
  268. package/plugin/skills/anti-stub/SKILL.md +317 -0
  269. package/plugin/skills/brainstorm/SKILL.md +31 -0
  270. package/plugin/skills/debugging/SKILL.md +276 -0
  271. package/plugin/skills/fix/SKILL.md +62 -0
  272. package/plugin/skills/frontend-design/.skillfish.json +10 -0
  273. package/plugin/skills/frontend-design/SKILL.md +42 -0
  274. package/plugin/skills/gotchas/SKILL.md +61 -0
  275. package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
  276. package/plugin/skills/history/SKILL.md +58 -0
  277. package/plugin/skills/impact/SKILL.md +59 -0
  278. package/plugin/skills/implementation-execution/SKILL.md +291 -0
  279. package/plugin/skills/index-repo/SKILL.md +55 -0
  280. package/plugin/skills/interviewing/SKILL.md +225 -0
  281. package/plugin/skills/knowledge-curation/SKILL.md +393 -0
  282. package/plugin/skills/learn/SKILL.md +69 -0
  283. package/plugin/skills/mcp-integration/.skillfish.json +10 -0
  284. package/plugin/skills/mcp-integration/SKILL.md +554 -0
  285. package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
  286. package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
  287. package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
  288. package/plugin/skills/mcp-integration/references/authentication.md +549 -0
  289. package/plugin/skills/mcp-integration/references/server-types.md +536 -0
  290. package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
  291. package/plugin/skills/nestjs/.skillfish.json +10 -0
  292. package/plugin/skills/nestjs/SKILL.md +669 -0
  293. package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
  294. package/plugin/skills/nestjs/reference.md +1447 -0
  295. package/plugin/skills/nestjs/workflow-optimization.md +229 -0
  296. package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
  297. package/plugin/skills/project-discovery/SKILL.md +304 -0
  298. package/plugin/skills/search/SKILL.md +56 -0
  299. package/plugin/skills/security-audit/SKILL.md +362 -0
  300. package/plugin/skills/skill-development/.skillfish.json +10 -0
  301. package/plugin/skills/skill-development/SKILL.md +637 -0
  302. package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
  303. package/plugin/skills/tdd/SKILL.md +273 -0
  304. package/plugin/skills/terminal-presentation/SKILL.md +395 -0
  305. package/plugin/skills/test-strategy/SKILL.md +365 -0
  306. package/plugin/skills/verification-protocol/SKILL.md +256 -0
  307. package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
  308. package/plugin/skills/visual-explainer/LICENSE +21 -0
  309. package/plugin/skills/visual-explainer/README.md +137 -0
  310. package/plugin/skills/visual-explainer/SKILL.md +352 -0
  311. package/plugin/skills/visual-explainer/banner.png +0 -0
  312. package/plugin/skills/visual-explainer/package.json +11 -0
  313. package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
  314. package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
  315. package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
  316. package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
  317. package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
  318. package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
  319. package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
  320. package/plugin/skills/visual-explainer/references/libraries.md +470 -0
  321. package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
  322. package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
  323. package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
  324. package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
  325. package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
  326. package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
  327. package/src/cli.ts +655 -0
  328. package/src/context/.gitkeep +0 -0
  329. package/src/context/codebase.ts +393 -0
  330. package/src/context/injector.ts +797 -0
  331. package/src/context/memory.ts +187 -0
  332. package/src/context/session-index.ts +327 -0
  333. package/src/context/session.ts +152 -0
  334. package/src/index.ts +47 -0
  335. package/src/ingestion/.gitkeep +0 -0
  336. package/src/ingestion/chunker.ts +277 -0
  337. package/src/ingestion/embedder.ts +167 -0
  338. package/src/ingestion/git-analyzer.ts +545 -0
  339. package/src/ingestion/indexer.ts +984 -0
  340. package/src/ingestion/markdown-chunker.ts +337 -0
  341. package/src/ingestion/markdown-knowledge.ts +175 -0
  342. package/src/ingestion/parser.ts +475 -0
  343. package/src/ingestion/watcher.ts +182 -0
  344. package/src/knowledge/.gitkeep +0 -0
  345. package/src/knowledge/hydrator.ts +246 -0
  346. package/src/knowledge/registry.ts +463 -0
  347. package/src/knowledge/search.ts +565 -0
  348. package/src/knowledge/store.ts +262 -0
  349. package/src/learning/.gitkeep +0 -0
  350. package/src/learning/confidence.ts +193 -0
  351. package/src/learning/patterns.ts +360 -0
  352. package/src/learning/trajectory.ts +268 -0
  353. package/src/memory/.gitkeep +0 -0
  354. package/src/memory/memory-compat.ts +233 -0
  355. package/src/memory/observation-store.ts +224 -0
  356. package/src/memory/session-tracker.ts +332 -0
  357. package/src/pipeline/.gitkeep +0 -0
  358. package/src/pipeline/engine.ts +1139 -0
  359. package/src/pipeline/events.ts +253 -0
  360. package/src/pipeline/parallel.ts +394 -0
  361. package/src/pipeline/state-machine.ts +199 -0
  362. package/src/query/.gitkeep +0 -0
  363. package/src/query/graph-queries.ts +262 -0
  364. package/src/query/hybrid-search.ts +337 -0
  365. package/src/query/intent-detector.ts +131 -0
  366. package/src/query/ranking.ts +161 -0
  367. package/src/server.ts +352 -0
  368. package/src/storage/.gitkeep +0 -0
  369. package/src/storage/falkordb-store.ts +388 -0
  370. package/src/storage/file-cache.ts +141 -0
  371. package/src/storage/interfaces.ts +201 -0
  372. package/src/storage/qdrant-store.ts +557 -0
  373. package/src/storage/schema.ts +139 -0
  374. package/src/storage/sqlite.ts +168 -0
  375. package/src/tools/.gitkeep +0 -0
  376. package/src/tools/collaboration-tools.ts +208 -0
  377. package/src/tools/context-tools.ts +493 -0
  378. package/src/tools/graph-tools.ts +295 -0
  379. package/src/tools/ingestion-tools.ts +122 -0
  380. package/src/tools/learning-tools.ts +181 -0
  381. package/src/tools/memory-tools.ts +234 -0
  382. package/src/tools/phase-tools.ts +1452 -0
  383. package/src/tools/pipeline-tools.ts +188 -0
  384. package/src/tools/registration-tools.ts +450 -0
  385. package/src/util/.gitkeep +0 -0
  386. package/src/util/circuit-breaker.ts +193 -0
  387. package/src/util/config.ts +177 -0
  388. package/src/util/logger.ts +53 -0
  389. package/src/util/token-counter.ts +52 -0
  390. package/src/util/types.ts +710 -0
  391. package/tests/context/.gitkeep +0 -0
  392. package/tests/integration/.gitkeep +0 -0
  393. package/tests/knowledge/.gitkeep +0 -0
  394. package/tests/learning/.gitkeep +0 -0
  395. package/tests/pipeline/.gitkeep +0 -0
  396. package/tests/tools/.gitkeep +0 -0
  397. package/tsconfig.json +21 -0
  398. package/vitest.config.ts +10 -0
  399. package/vscode-extension/.vscodeignore +7 -0
  400. package/vscode-extension/README.md +43 -0
  401. package/vscode-extension/out/edge-collector.js +274 -0
  402. package/vscode-extension/out/edge-collector.js.map +1 -0
  403. package/vscode-extension/out/extension.js +264 -0
  404. package/vscode-extension/out/extension.js.map +1 -0
  405. package/vscode-extension/out/forge-client.js +318 -0
  406. package/vscode-extension/out/forge-client.js.map +1 -0
  407. package/vscode-extension/package-lock.json +59 -0
  408. package/vscode-extension/package.json +71 -0
  409. package/vscode-extension/src/edge-collector.ts +320 -0
  410. package/vscode-extension/src/extension.ts +269 -0
  411. package/vscode-extension/src/forge-client.ts +364 -0
  412. package/vscode-extension/tsconfig.json +19 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/pipeline/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { PipelineEvent, PipelineEventPayload, EventType, PipelinePhase } from '../util/types.js';
2
+ /**
3
+ * Builds a PipelineEvent (without id — that is assigned by SQLite AUTOINCREMENT)
4
+ * with a generated timestamp and sensible defaults.
5
+ */
6
+ export declare function createEvent(projectId: string, type: EventType, data?: {
7
+ fromPhase?: PipelinePhase | null;
8
+ toPhase?: PipelinePhase | null;
9
+ agent?: string | null;
10
+ payload?: PipelineEventPayload;
11
+ }): Omit<PipelineEvent, 'id'>;
12
+ /** Emitted when the engine transitions a project to a new phase. */
13
+ export declare function phaseTransitionEvent(projectId: string, fromPhase: PipelinePhase, toPhase: PipelinePhase, agent?: string | null, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
14
+ /** Emitted when an agent begins work on a phase. */
15
+ export declare function agentStartedEvent(projectId: string, phase: PipelinePhase, agent: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
16
+ /** Emitted when an agent successfully completes a phase. */
17
+ export declare function agentCompletedEvent(projectId: string, phase: PipelinePhase, agent: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
18
+ /** Emitted when an agent fails a phase. */
19
+ export declare function agentFailedEvent(projectId: string, phase: PipelinePhase, agent: string, error: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
20
+ /** Emitted when the project is first created. */
21
+ export declare function projectCreatedEvent(projectId: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
22
+ /** Emitted when the project is paused. */
23
+ export declare function projectPausedEvent(projectId: string, phase: PipelinePhase, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
24
+ /** Emitted when the project is resumed from pause. */
25
+ export declare function projectResumedEvent(projectId: string, phase: PipelinePhase, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
26
+ /** Emitted when the project reaches completed status. */
27
+ export declare function projectCompletedEvent(projectId: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
28
+ /** Emitted when a new work claim is created for a module. */
29
+ export declare function claimCreatedEvent(projectId: string, claimId: string, moduleName: string, agent: string): Omit<PipelineEvent, 'id'>;
30
+ /** Emitted when a claim is successfully completed. */
31
+ export declare function claimCompletedEvent(projectId: string, claimId: string, moduleName: string, agent: string, result?: string): Omit<PipelineEvent, 'id'>;
32
+ /** Emitted when a claim fails. */
33
+ export declare function claimFailedEvent(projectId: string, claimId: string, moduleName: string, agent: string, reason: string): Omit<PipelineEvent, 'id'>;
34
+ /**
35
+ * Deserializes a raw pipeline_events row (snake_case TEXT columns) into a
36
+ * typed PipelineEvent domain object. Used by the engine when reading rows
37
+ * back from SQLite.
38
+ */
39
+ export declare function rowToEvent(row: {
40
+ id: number;
41
+ project_id: string;
42
+ event_type: string;
43
+ from_phase: string | null;
44
+ to_phase: string | null;
45
+ agent: string | null;
46
+ payload: string;
47
+ created_at: number;
48
+ }): PipelineEvent;
49
+ /**
50
+ * Serializes a PipelineEvent domain object to the named parameter map
51
+ * expected by `PipelineDB.run()` for an INSERT into pipeline_events.
52
+ */
53
+ export declare function eventToParams(event: Omit<PipelineEvent, 'id'>): Record<string, unknown>;
54
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,aAAa,EACd,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,EACf,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAC3B,GACL,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAU3B;AAMD,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAI3B;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,aAAa,CAkBhB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB"}
@@ -0,0 +1,157 @@
1
+ // Pipeline event factory and helpers for the event-sourced state machine.
2
+ //
3
+ // Pipeline events are the audit log. Every phase transition, agent action,
4
+ // claim lifecycle change, and project status change is recorded as an immutable
5
+ // event row in the pipeline_events SQLite table. The PipelineEngine reads these
6
+ // rows to reconstruct cycle counts and provides the full history to callers.
7
+ //
8
+ // PipelineEvent here is the deserialized domain object (camelCase fields), not
9
+ // the raw row. The storage layer handles the mapping between the two.
10
+ // ---------------------------------------------------------------------------
11
+ // Event factory
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * Builds a PipelineEvent (without id — that is assigned by SQLite AUTOINCREMENT)
15
+ * with a generated timestamp and sensible defaults.
16
+ */
17
+ export function createEvent(projectId, type, data = {}) {
18
+ return {
19
+ projectId,
20
+ eventType: type,
21
+ fromPhase: data.fromPhase ?? null,
22
+ toPhase: data.toPhase ?? null,
23
+ agent: data.agent ?? null,
24
+ payload: data.payload ?? {},
25
+ createdAt: Date.now(),
26
+ };
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Convenience constructors for common event patterns
30
+ // ---------------------------------------------------------------------------
31
+ /** Emitted when the engine transitions a project to a new phase. */
32
+ export function phaseTransitionEvent(projectId, fromPhase, toPhase, agent, extra) {
33
+ return createEvent(projectId, 'phase_transition', {
34
+ fromPhase,
35
+ toPhase,
36
+ agent: agent ?? null,
37
+ payload: extra ?? {},
38
+ });
39
+ }
40
+ /** Emitted when an agent begins work on a phase. */
41
+ export function agentStartedEvent(projectId, phase, agent, extra) {
42
+ return createEvent(projectId, 'agent_started', {
43
+ fromPhase: phase,
44
+ toPhase: phase,
45
+ agent,
46
+ payload: extra ?? {},
47
+ });
48
+ }
49
+ /** Emitted when an agent successfully completes a phase. */
50
+ export function agentCompletedEvent(projectId, phase, agent, extra) {
51
+ return createEvent(projectId, 'agent_completed', {
52
+ fromPhase: phase,
53
+ toPhase: phase,
54
+ agent,
55
+ payload: extra ?? {},
56
+ });
57
+ }
58
+ /** Emitted when an agent fails a phase. */
59
+ export function agentFailedEvent(projectId, phase, agent, error, extra) {
60
+ return createEvent(projectId, 'agent_failed', {
61
+ fromPhase: phase,
62
+ toPhase: phase,
63
+ agent,
64
+ payload: { error, ...(extra ?? {}) },
65
+ });
66
+ }
67
+ /** Emitted when the project is first created. */
68
+ export function projectCreatedEvent(projectId, extra) {
69
+ return createEvent(projectId, 'project_created', {
70
+ payload: extra ?? {},
71
+ });
72
+ }
73
+ /** Emitted when the project is paused. */
74
+ export function projectPausedEvent(projectId, phase, extra) {
75
+ return createEvent(projectId, 'project_paused', {
76
+ fromPhase: phase,
77
+ payload: extra ?? {},
78
+ });
79
+ }
80
+ /** Emitted when the project is resumed from pause. */
81
+ export function projectResumedEvent(projectId, phase, extra) {
82
+ return createEvent(projectId, 'project_resumed', {
83
+ fromPhase: phase,
84
+ payload: extra ?? {},
85
+ });
86
+ }
87
+ /** Emitted when the project reaches completed status. */
88
+ export function projectCompletedEvent(projectId, extra) {
89
+ return createEvent(projectId, 'project_completed', {
90
+ toPhase: 'complete',
91
+ payload: extra ?? {},
92
+ });
93
+ }
94
+ /** Emitted when a new work claim is created for a module. */
95
+ export function claimCreatedEvent(projectId, claimId, moduleName, agent) {
96
+ return createEvent(projectId, 'claim_created', {
97
+ agent,
98
+ payload: { claim_id: claimId, module_name: moduleName },
99
+ });
100
+ }
101
+ /** Emitted when a claim is successfully completed. */
102
+ export function claimCompletedEvent(projectId, claimId, moduleName, agent, result) {
103
+ return createEvent(projectId, 'claim_completed', {
104
+ agent,
105
+ payload: { claim_id: claimId, module_name: moduleName, result: result ?? null },
106
+ });
107
+ }
108
+ /** Emitted when a claim fails. */
109
+ export function claimFailedEvent(projectId, claimId, moduleName, agent, reason) {
110
+ return createEvent(projectId, 'claim_failed', {
111
+ agent,
112
+ payload: { claim_id: claimId, module_name: moduleName, error: reason },
113
+ });
114
+ }
115
+ // ---------------------------------------------------------------------------
116
+ // Row mapping helpers
117
+ // ---------------------------------------------------------------------------
118
+ /**
119
+ * Deserializes a raw pipeline_events row (snake_case TEXT columns) into a
120
+ * typed PipelineEvent domain object. Used by the engine when reading rows
121
+ * back from SQLite.
122
+ */
123
+ export function rowToEvent(row) {
124
+ let payload;
125
+ try {
126
+ payload = JSON.parse(row.payload);
127
+ }
128
+ catch {
129
+ payload = {};
130
+ }
131
+ return {
132
+ id: row.id,
133
+ projectId: row.project_id,
134
+ eventType: row.event_type,
135
+ fromPhase: row.from_phase ?? null,
136
+ toPhase: row.to_phase ?? null,
137
+ agent: row.agent,
138
+ payload,
139
+ createdAt: row.created_at,
140
+ };
141
+ }
142
+ /**
143
+ * Serializes a PipelineEvent domain object to the named parameter map
144
+ * expected by `PipelineDB.run()` for an INSERT into pipeline_events.
145
+ */
146
+ export function eventToParams(event) {
147
+ return {
148
+ project_id: event.projectId,
149
+ event_type: event.eventType,
150
+ from_phase: event.fromPhase,
151
+ to_phase: event.toPhase,
152
+ agent: event.agent,
153
+ payload: JSON.stringify(event.payload),
154
+ created_at: event.createdAt,
155
+ };
156
+ }
157
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,EAAE;AACF,+EAA+E;AAC/E,sEAAsE;AAStE,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,IAAe,EACf,OAKI,EAAE;IAEN,OAAO;QACL,SAAS;QACT,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,SAAwB,EACxB,OAAsB,EACtB,KAAqB,EACrB,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE;QAChD,SAAS;QACT,OAAO;QACP,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,KAAoB,EACpB,KAAa,EACb,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE;QAC7C,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,KAAK;QACL,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,KAAoB,EACpB,KAAa,EACb,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAC/C,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,KAAK;QACL,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,KAAoB,EACpB,KAAa,EACb,KAAa,EACb,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE;QAC5C,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,KAAK;QACL,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;KACrC,CAAC,CAAC;AACL,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,KAAoB,EACpB,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE;QAC9C,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,KAAoB,EACpB,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAC/C,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,KAA4B;IAE5B,OAAO,WAAW,CAAC,SAAS,EAAE,mBAAmB,EAAE;QACjD,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,KAAK,IAAI,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,OAAe,EACf,UAAkB,EAClB,KAAa;IAEb,OAAO,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE;QAC7C,KAAK;QACL,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;KACxD,CAAC,CAAC;AACL,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,OAAe,EACf,UAAkB,EAClB,KAAa,EACb,MAAe;IAEf,OAAO,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAC/C,KAAK;QACL,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE;KAChF,CAAC,CAAC;AACL,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,OAAe,EACf,UAAkB,EAClB,KAAa,EACb,MAAc;IAEd,OAAO,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE;QAC5C,KAAK;QACL,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;KACvE,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAS1B;IACC,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAyB,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAuB;QACtC,SAAS,EAAG,GAAG,CAAC,UAAmC,IAAI,IAAI;QAC3D,OAAO,EAAG,GAAG,CAAC,QAAiC,IAAI,IAAI;QACvD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAgC;IAEhC,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { PipelineDB } from '../storage/sqlite.js';
2
+ import type { Claim, ClaimStatus } from '../util/types.js';
3
+ export declare class ParallelDispatch {
4
+ private readonly db;
5
+ constructor(db: PipelineDB);
6
+ /**
7
+ * Creates one claim per entry in `modules`. Each claim starts with status
8
+ * 'claimed' and is immediately usable by a specialist agent.
9
+ *
10
+ * A claim_created pipeline event is emitted for each created claim.
11
+ *
12
+ * Returns the full array of created Claim objects so callers can distribute
13
+ * them to agents.
14
+ */
15
+ createClaims(projectId: string, modules: Array<{
16
+ name: string;
17
+ agent: string;
18
+ }>): Claim[];
19
+ /**
20
+ * Updates the status of a claim. Optionally sets the result text and branch
21
+ * name. This is a general-purpose setter; use completeClaim / failClaim for
22
+ * the semantic updates that also emit events.
23
+ *
24
+ * Throws when the claim does not exist.
25
+ */
26
+ updateClaim(claimId: string, status: ClaimStatus, result?: string, branch?: string): void;
27
+ /**
28
+ * Marks a claim as 'complete' and emits a claim_completed event.
29
+ * Records the optional result text (e.g., git branch name, summary).
30
+ *
31
+ * Returns { remainingCount, allComplete } so the caller can check whether
32
+ * to auto-advance the project to inspection.
33
+ *
34
+ * Throws when the claim does not exist.
35
+ */
36
+ completeClaim(claimId: string, result?: string): {
37
+ remainingCount: number;
38
+ allComplete: boolean;
39
+ };
40
+ /**
41
+ * Marks a claim as 'failed' and emits a claim_failed event.
42
+ *
43
+ * Throws when the claim does not exist.
44
+ */
45
+ failClaim(claimId: string, reason: string): void;
46
+ /**
47
+ * Returns true when every claim for the project is in a terminal state
48
+ * ('complete' or 'failed') — i.e., no claim remains in 'claimed' or
49
+ * 'stealable' status.
50
+ *
51
+ * Returns true vacuously when there are no claims at all (no modules were
52
+ * dispatched). Callers should check that at least one claim exists before
53
+ * using this to gate phase advance.
54
+ */
55
+ allClaimsComplete(projectId: string): boolean;
56
+ /**
57
+ * Returns claims for a project, optionally filtered by status.
58
+ * Ordered by claimed_at ASC.
59
+ */
60
+ getClaims(projectId: string, status?: ClaimStatus): Claim[];
61
+ /**
62
+ * Returns a single claim by id, or null if it does not exist.
63
+ */
64
+ getClaim(claimId: string): Claim | null;
65
+ /**
66
+ * Resets failed claims when the inspection phase sends the project back to
67
+ * implementation. Re-creates claims for the specified modules (or all failed
68
+ * claims when `modules` is omitted) so specialists can retry.
69
+ *
70
+ * The failed rows are left in place for the audit trail. New 'claimed' rows
71
+ * are inserted with new IDs, and claim_created events are emitted for each.
72
+ *
73
+ * Returns the newly created Claim objects.
74
+ */
75
+ resetFailedClaims(projectId: string, modules?: string[]): Claim[];
76
+ /**
77
+ * Retrieves a raw ClaimRow by id and throws when not found.
78
+ * We return the raw row so callers can access project_id, module_name, and
79
+ * agent for event emission without an extra round-trip.
80
+ */
81
+ private _requireClaim;
82
+ }
83
+ //# sourceMappingURL=parallel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/pipeline/parallel.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgDrE,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,UAAU;IAM3C;;;;;;;;OAQG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAC9C,KAAK,EAAE;IAsCV;;;;;;OAMG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IA6BP;;;;;;;;OAQG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;IAmCjG;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA6BhD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAa7C;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAa3D;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IASvC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;IA+EjE;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAUtB"}
@@ -0,0 +1,277 @@
1
+ // ParallelDispatch — manages work claims for parallel implementation phases.
2
+ //
3
+ // During the implementation phase, multiple specialist agents work concurrently
4
+ // on separate modules. ParallelDispatch creates and tracks per-module claims,
5
+ // emits lifecycle events, and provides helpers to check overall completion so
6
+ // the engine can auto-advance to inspection when all work is done.
7
+ //
8
+ // Claims are persisted in the SQLite `claims` table. All writes are
9
+ // synchronous (better-sqlite3). Claim lifecycle events are also written to
10
+ // `pipeline_events` for the audit log.
11
+ import { randomUUID } from 'node:crypto';
12
+ import { claimCreatedEvent, claimCompletedEvent, claimFailedEvent, eventToParams, } from './events.js';
13
+ import { logger } from '../util/logger.js';
14
+ // ---------------------------------------------------------------------------
15
+ // Row deserializer
16
+ // ---------------------------------------------------------------------------
17
+ function rowToClaim(row) {
18
+ return {
19
+ id: row.id,
20
+ projectId: row.project_id,
21
+ moduleName: row.module_name,
22
+ agent: row.agent,
23
+ branch: row.branch,
24
+ status: row.status,
25
+ claimedAt: row.claimed_at,
26
+ completedAt: row.completed_at,
27
+ result: row.result,
28
+ };
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // SQL helper: insert a pipeline event row using positional params.
32
+ // eventToParams returns keys in the order the INSERT expects.
33
+ // ---------------------------------------------------------------------------
34
+ function insertEvent(db, event) {
35
+ db.run(`INSERT INTO pipeline_events
36
+ (project_id, event_type, from_phase, to_phase, agent, payload, created_at)
37
+ VALUES (?, ?, ?, ?, ?, ?, ?)`, Object.values(eventToParams(event)));
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // ParallelDispatch
41
+ // ---------------------------------------------------------------------------
42
+ export class ParallelDispatch {
43
+ db;
44
+ constructor(db) {
45
+ this.db = db;
46
+ }
47
+ // -------------------------------------------------------------------------
48
+ // Claim creation
49
+ // -------------------------------------------------------------------------
50
+ /**
51
+ * Creates one claim per entry in `modules`. Each claim starts with status
52
+ * 'claimed' and is immediately usable by a specialist agent.
53
+ *
54
+ * A claim_created pipeline event is emitted for each created claim.
55
+ *
56
+ * Returns the full array of created Claim objects so callers can distribute
57
+ * them to agents.
58
+ */
59
+ createClaims(projectId, modules) {
60
+ const now = Date.now();
61
+ const created = [];
62
+ for (const mod of modules) {
63
+ const id = randomUUID();
64
+ this.db.run(`INSERT INTO claims (id, project_id, module_name, agent, status, claimed_at)
65
+ VALUES (?, ?, ?, ?, 'claimed', ?)`, [id, projectId, mod.name, mod.agent, now]);
66
+ const event = claimCreatedEvent(projectId, id, mod.name, mod.agent);
67
+ insertEvent(this.db, event);
68
+ created.push({
69
+ id,
70
+ projectId,
71
+ moduleName: mod.name,
72
+ agent: mod.agent,
73
+ branch: null,
74
+ status: 'claimed',
75
+ claimedAt: now,
76
+ completedAt: null,
77
+ result: null,
78
+ });
79
+ logger.info('ParallelDispatch: claim created', { projectId, claimId: id, module: mod.name, agent: mod.agent });
80
+ }
81
+ return created;
82
+ }
83
+ // -------------------------------------------------------------------------
84
+ // Claim status updates
85
+ // -------------------------------------------------------------------------
86
+ /**
87
+ * Updates the status of a claim. Optionally sets the result text and branch
88
+ * name. This is a general-purpose setter; use completeClaim / failClaim for
89
+ * the semantic updates that also emit events.
90
+ *
91
+ * Throws when the claim does not exist.
92
+ */
93
+ updateClaim(claimId, status, result, branch) {
94
+ const row = this._requireClaim(claimId);
95
+ const now = Date.now();
96
+ this.db.run(`UPDATE claims
97
+ SET status = ?,
98
+ branch = COALESCE(?, branch),
99
+ result = COALESCE(?, result),
100
+ completed_at = CASE WHEN ? IN ('complete', 'failed') THEN ? ELSE completed_at END
101
+ WHERE id = ?`, [
102
+ status,
103
+ branch ?? null,
104
+ result ?? null,
105
+ status,
106
+ now,
107
+ claimId,
108
+ ]);
109
+ logger.info('ParallelDispatch: claim updated', {
110
+ claimId,
111
+ projectId: row.project_id,
112
+ module: row.module_name,
113
+ status,
114
+ });
115
+ }
116
+ /**
117
+ * Marks a claim as 'complete' and emits a claim_completed event.
118
+ * Records the optional result text (e.g., git branch name, summary).
119
+ *
120
+ * Returns { remainingCount, allComplete } so the caller can check whether
121
+ * to auto-advance the project to inspection.
122
+ *
123
+ * Throws when the claim does not exist.
124
+ */
125
+ completeClaim(claimId, result) {
126
+ const row = this._requireClaim(claimId);
127
+ const now = Date.now();
128
+ this.db.run(`UPDATE claims SET status = 'complete', completed_at = ?, result = ? WHERE id = ?`, [now, result ?? null, claimId]);
129
+ const event = claimCompletedEvent(row.project_id, claimId, row.module_name, row.agent, result);
130
+ insertEvent(this.db, event);
131
+ logger.info('ParallelDispatch: claim completed', {
132
+ claimId,
133
+ projectId: row.project_id,
134
+ module: row.module_name,
135
+ });
136
+ const remaining = this.db.all(`SELECT id FROM claims WHERE project_id = ? AND status NOT IN ('complete', 'failed')`, [row.project_id]);
137
+ return {
138
+ remainingCount: remaining.length,
139
+ allComplete: remaining.length === 0,
140
+ };
141
+ }
142
+ /**
143
+ * Marks a claim as 'failed' and emits a claim_failed event.
144
+ *
145
+ * Throws when the claim does not exist.
146
+ */
147
+ failClaim(claimId, reason) {
148
+ const row = this._requireClaim(claimId);
149
+ this.db.run(`UPDATE claims SET status = 'failed', completed_at = ? WHERE id = ?`, [Date.now(), claimId]);
150
+ const event = claimFailedEvent(row.project_id, claimId, row.module_name, row.agent, reason);
151
+ insertEvent(this.db, event);
152
+ logger.warn('ParallelDispatch: claim failed', {
153
+ claimId,
154
+ projectId: row.project_id,
155
+ module: row.module_name,
156
+ reason,
157
+ });
158
+ }
159
+ // -------------------------------------------------------------------------
160
+ // Completion checks
161
+ // -------------------------------------------------------------------------
162
+ /**
163
+ * Returns true when every claim for the project is in a terminal state
164
+ * ('complete' or 'failed') — i.e., no claim remains in 'claimed' or
165
+ * 'stealable' status.
166
+ *
167
+ * Returns true vacuously when there are no claims at all (no modules were
168
+ * dispatched). Callers should check that at least one claim exists before
169
+ * using this to gate phase advance.
170
+ */
171
+ allClaimsComplete(projectId) {
172
+ const pending = this.db.get(`SELECT COUNT(*) as count FROM claims
173
+ WHERE project_id = ? AND status NOT IN ('complete', 'failed')`, [projectId]);
174
+ return (pending?.count ?? 0) === 0;
175
+ }
176
+ // -------------------------------------------------------------------------
177
+ // Query methods
178
+ // -------------------------------------------------------------------------
179
+ /**
180
+ * Returns claims for a project, optionally filtered by status.
181
+ * Ordered by claimed_at ASC.
182
+ */
183
+ getClaims(projectId, status) {
184
+ if (status !== undefined) {
185
+ return this.db.all(`SELECT * FROM claims WHERE project_id = ? AND status = ? ORDER BY claimed_at ASC`, [projectId, status]).map(rowToClaim);
186
+ }
187
+ return this.db.all(`SELECT * FROM claims WHERE project_id = ? ORDER BY claimed_at ASC`, [projectId]).map(rowToClaim);
188
+ }
189
+ /**
190
+ * Returns a single claim by id, or null if it does not exist.
191
+ */
192
+ getClaim(claimId) {
193
+ const row = this.db.get(`SELECT * FROM claims WHERE id = ?`, [claimId]);
194
+ return row ? rowToClaim(row) : null;
195
+ }
196
+ // -------------------------------------------------------------------------
197
+ // Cycle reset
198
+ // -------------------------------------------------------------------------
199
+ /**
200
+ * Resets failed claims when the inspection phase sends the project back to
201
+ * implementation. Re-creates claims for the specified modules (or all failed
202
+ * claims when `modules` is omitted) so specialists can retry.
203
+ *
204
+ * The failed rows are left in place for the audit trail. New 'claimed' rows
205
+ * are inserted with new IDs, and claim_created events are emitted for each.
206
+ *
207
+ * Returns the newly created Claim objects.
208
+ */
209
+ resetFailedClaims(projectId, modules) {
210
+ let failedRows;
211
+ if (modules !== undefined && modules.length > 0) {
212
+ // Use multiple individual queries rather than a parameterised IN clause
213
+ // to avoid the need for dynamic SQL placeholders.
214
+ failedRows = [];
215
+ for (const moduleName of modules) {
216
+ const rows = this.db.all(`SELECT * FROM claims
217
+ WHERE project_id = ? AND module_name = ? AND status = 'failed'
218
+ ORDER BY claimed_at DESC`, [projectId, moduleName]);
219
+ // Take the most recent failed claim for each module.
220
+ if (rows.length > 0 && rows[0] !== undefined) {
221
+ failedRows.push(rows[0]);
222
+ }
223
+ }
224
+ }
225
+ else {
226
+ // All failed claims for the project.
227
+ failedRows = this.db.all(`SELECT * FROM claims WHERE project_id = ? AND status = 'failed' ORDER BY claimed_at ASC`, [projectId]);
228
+ }
229
+ if (failedRows.length === 0) {
230
+ logger.info('ParallelDispatch: resetFailedClaims — no failed claims to reset', { projectId });
231
+ return [];
232
+ }
233
+ const now = Date.now();
234
+ const recreated = [];
235
+ for (const failed of failedRows) {
236
+ const newId = randomUUID();
237
+ this.db.run(`INSERT INTO claims (id, project_id, module_name, agent, status, claimed_at)
238
+ VALUES (?, ?, ?, ?, 'claimed', ?)`, [newId, failed.project_id, failed.module_name, failed.agent, now]);
239
+ const event = claimCreatedEvent(failed.project_id, newId, failed.module_name, failed.agent);
240
+ insertEvent(this.db, event);
241
+ recreated.push({
242
+ id: newId,
243
+ projectId: failed.project_id,
244
+ moduleName: failed.module_name,
245
+ agent: failed.agent,
246
+ branch: null,
247
+ status: 'claimed',
248
+ claimedAt: now,
249
+ completedAt: null,
250
+ result: null,
251
+ });
252
+ logger.info('ParallelDispatch: claim reset after inspection failure', {
253
+ projectId,
254
+ oldClaimId: failed.id,
255
+ newClaimId: newId,
256
+ module: failed.module_name,
257
+ });
258
+ }
259
+ return recreated;
260
+ }
261
+ // -------------------------------------------------------------------------
262
+ // Private helpers
263
+ // -------------------------------------------------------------------------
264
+ /**
265
+ * Retrieves a raw ClaimRow by id and throws when not found.
266
+ * We return the raw row so callers can access project_id, module_name, and
267
+ * agent for event emission without an extra round-trip.
268
+ */
269
+ _requireClaim(claimId) {
270
+ const row = this.db.get(`SELECT * FROM claims WHERE id = ?`, [claimId]);
271
+ if (!row) {
272
+ throw new Error(`ParallelDispatch: claim '${claimId}' does not exist`);
273
+ }
274
+ return row;
275
+ }
276
+ }
277
+ //# sourceMappingURL=parallel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/pipeline/parallel.ts"],"names":[],"mappings":"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"}