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
package/dist/server.js ADDED
@@ -0,0 +1,291 @@
1
+ // server.ts — B19
2
+ // MCP server setup: initialises all services and registers all tools.
3
+ //
4
+ // Startup sequence:
5
+ // 1. Initialize SQLite (PipelineDB) — always succeeds; creates file if needed
6
+ // 2. Attempt Qdrant connection with graceful degradation on failure
7
+ // 3. Attempt FalkorDB connection with graceful degradation on failure
8
+ // 4. Create ConfidenceManager for knowledge confidence tracking
9
+ // 5. Create file content cache
10
+ // 6. Create service instances (engine, registry, search, context, injector)
11
+ // 7. Collect all tool handlers (pipeline, phase, context, registration,
12
+ // learning, ingestion, memory, graph, collaboration)
13
+ // 8. Register all tools with the MCP server
14
+ // 9. Start periodic confidence decay (every 24 hours)
15
+ //
16
+ // Lazy loading: embedding model is NOT loaded here. It is lazy-loaded in
17
+ // embedder.ts on first use. This keeps server startup under 2 seconds.
18
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
19
+ import { homedir } from 'node:os';
20
+ import { join } from 'node:path';
21
+ import { PipelineDB } from './storage/sqlite.js';
22
+ import { QdrantVectorStore } from './storage/qdrant-store.js';
23
+ import { FalkorDBGraphStore } from './storage/falkordb-store.js';
24
+ import { LRUFileContentCache } from './storage/file-cache.js';
25
+ import { PipelineEngine } from './pipeline/engine.js';
26
+ import { RepoRegistry } from './knowledge/registry.js';
27
+ import { KnowledgeYamlStore } from './knowledge/store.js';
28
+ import { KnowledgeHydrator } from './knowledge/hydrator.js';
29
+ import { KnowledgeSearch } from './knowledge/search.js';
30
+ import { CodebaseContext } from './context/codebase.js';
31
+ import { MemoryBridge } from './context/memory.js';
32
+ import { ContextInjector } from './context/injector.js';
33
+ import { createPipelineTools } from './tools/pipeline-tools.js';
34
+ import { createPhaseTools } from './tools/phase-tools.js';
35
+ import { createContextTools } from './tools/context-tools.js';
36
+ import { createRegistrationTools } from './tools/registration-tools.js';
37
+ import { createLearningTools } from './tools/learning-tools.js';
38
+ import { createIngestionTools } from './tools/ingestion-tools.js';
39
+ import { createMemoryTools } from './tools/memory-tools.js';
40
+ import { createGraphTools } from './tools/graph-tools.js';
41
+ import { createCollaborationTools } from './tools/collaboration-tools.js';
42
+ import { ConfidenceManager } from './learning/confidence.js';
43
+ import { logger } from './util/logger.js';
44
+ // ---------------------------------------------------------------------------
45
+ // Default paths
46
+ // ---------------------------------------------------------------------------
47
+ const DEFAULT_DB_PATH = join(homedir(), '.forge', 'pipeline.db');
48
+ const QDRANT_URL = process.env['QDRANT_URL'] ?? 'http://localhost:6333';
49
+ const FALKORDB_HOST = process.env['FALKORDB_HOST'] ?? 'localhost';
50
+ const FALKORDB_PORT = parseInt(process.env['FALKORDB_PORT'] ?? '6380', 10);
51
+ // ---------------------------------------------------------------------------
52
+ // Server info
53
+ // ---------------------------------------------------------------------------
54
+ const SERVER_NAME = 'dk-forge';
55
+ const SERVER_VERSION = '0.1.0';
56
+ // ---------------------------------------------------------------------------
57
+ // createForgeServer
58
+ // ---------------------------------------------------------------------------
59
+ export async function createForgeServer() {
60
+ const startTime = Date.now();
61
+ logger.info(`${SERVER_NAME}: initializing`, { version: SERVER_VERSION });
62
+ // -------------------------------------------------------------------------
63
+ // 1. SQLite — always succeeds; creates ~/.forge/pipeline.db if needed
64
+ // -------------------------------------------------------------------------
65
+ const dbPath = process.env['FORGE_DB_PATH'] ?? DEFAULT_DB_PATH;
66
+ const db = new PipelineDB(dbPath);
67
+ db.initialize();
68
+ logger.info('server: SQLite initialized', { path: dbPath });
69
+ // -------------------------------------------------------------------------
70
+ // 2. Qdrant — graceful degradation if unavailable
71
+ // -------------------------------------------------------------------------
72
+ let vectorStore = null;
73
+ try {
74
+ const qdrant = new QdrantVectorStore(QDRANT_URL);
75
+ const qdrantHealthy = await qdrant.isHealthy();
76
+ if (qdrantHealthy) {
77
+ // Ensure collections exist (384-dim for all-MiniLM-L6-v2)
78
+ await qdrant.ensureCollections(384);
79
+ vectorStore = qdrant;
80
+ logger.info('server: Qdrant connected', { url: QDRANT_URL });
81
+ }
82
+ else {
83
+ logger.warn('server: Qdrant unavailable — knowledge search and codebase context will be degraded', {
84
+ url: QDRANT_URL,
85
+ });
86
+ }
87
+ }
88
+ catch (err) {
89
+ logger.warn('server: Qdrant connection failed — running without vector search', {
90
+ url: QDRANT_URL,
91
+ error: String(err),
92
+ });
93
+ }
94
+ // -------------------------------------------------------------------------
95
+ // 3. FalkorDB — graceful degradation if unavailable
96
+ // -------------------------------------------------------------------------
97
+ let graphStore = null;
98
+ try {
99
+ const falkor = new FalkorDBGraphStore(`redis://${FALKORDB_HOST}:${FALKORDB_PORT}`);
100
+ await falkor.connect();
101
+ const falkorHealthy = await falkor.isHealthy();
102
+ if (falkorHealthy) {
103
+ graphStore = falkor;
104
+ logger.info('server: FalkorDB connected', { host: FALKORDB_HOST, port: FALKORDB_PORT });
105
+ }
106
+ else {
107
+ logger.warn('server: FalkorDB unavailable — graph-boosted search disabled, using vector-only');
108
+ try {
109
+ await falkor.disconnect();
110
+ }
111
+ catch { }
112
+ }
113
+ }
114
+ catch (err) {
115
+ logger.warn('server: FalkorDB connection failed — running without graph store', {
116
+ error: String(err),
117
+ });
118
+ }
119
+ // -------------------------------------------------------------------------
120
+ // 4. Confidence manager — tracks knowledge item usage and decay
121
+ // -------------------------------------------------------------------------
122
+ const confidenceManager = new ConfidenceManager();
123
+ // -------------------------------------------------------------------------
124
+ // 5. File content cache
125
+ // -------------------------------------------------------------------------
126
+ const fileCache = new LRUFileContentCache({
127
+ maxSizeBytes: 128 * 1024 * 1024, // 128 MB
128
+ maxEntries: 2000,
129
+ ttlMs: 30 * 60 * 1000, // 30 minutes
130
+ });
131
+ // -------------------------------------------------------------------------
132
+ // 6. Service instances
133
+ // -------------------------------------------------------------------------
134
+ // Knowledge hydrator — wires YAML store + Qdrant
135
+ // The KnowledgeHydrator's yamlStore is overridden per-registration call inside RepoRegistry,
136
+ // so we pass a placeholder that uses ~/.forge as the base directory.
137
+ const knowledgeHydrator = vectorStore
138
+ ? new KnowledgeHydrator(new KnowledgeYamlStore(join(homedir(), '.forge')), vectorStore)
139
+ : undefined;
140
+ // Repo registry — passes the hydrator for knowledge sync on registration
141
+ const registry = new RepoRegistry(db, knowledgeHydrator);
142
+ // Pipeline engine
143
+ const engine = new PipelineEngine(db);
144
+ // Knowledge search — wraps Qdrant knowledge collection
145
+ const knowledgeSearch = vectorStore
146
+ ? new KnowledgeSearch(vectorStore)
147
+ : createDegradedKnowledgeSearch();
148
+ // Codebase context — wraps hybrid search
149
+ // Sharing resolver: looks up a repo's sharing mode from the registry so that
150
+ // cross-repo search results from private repos are filtered out.
151
+ const codebaseCtx = new CodebaseContext(graphStore, vectorStore, fileCache, (repoId) => registry.getRepo(repoId)?.sharing);
152
+ // Memory bridge — wraps Qdrant observations collection
153
+ const memoryBridge = new MemoryBridge(vectorStore);
154
+ // Context injector — orchestrates all context assembly
155
+ // Accepts confidenceManager + vectorStore to auto-boost knowledge confidence
156
+ // on consumption (Phase 2 swarm learning).
157
+ const contextInjector = new ContextInjector(knowledgeSearch, codebaseCtx, memoryBridge, db, confidenceManager, vectorStore);
158
+ // -------------------------------------------------------------------------
159
+ // 7. Collect all tool handlers
160
+ // -------------------------------------------------------------------------
161
+ // Existing tool factories — updated with new params for swarm learning
162
+ const pipelineTools = createPipelineTools(engine, registry);
163
+ const phaseTools = createPhaseTools(engine, contextInjector, vectorStore, graphStore);
164
+ const contextTools = createContextTools(knowledgeSearch, codebaseCtx, engine, memoryBridge, vectorStore, graphStore);
165
+ const registrationTools = createRegistrationTools(registry, {
166
+ vectorStore,
167
+ graphStore,
168
+ fileCache,
169
+ });
170
+ const learningTools = createLearningTools(knowledgeSearch, confidenceManager, vectorStore);
171
+ const ingestionTools = createIngestionTools(graphStore);
172
+ // New tool factories — swarm learning, graph analysis, collaboration
173
+ const memoryTools = createMemoryTools(memoryBridge, vectorStore, graphStore);
174
+ const graphTools = createGraphTools(graphStore);
175
+ const collaborationTools = createCollaborationTools(vectorStore, graphStore, db);
176
+ const allTools = {
177
+ ...pipelineTools,
178
+ ...phaseTools,
179
+ ...contextTools,
180
+ ...registrationTools,
181
+ ...learningTools,
182
+ ...ingestionTools,
183
+ ...memoryTools,
184
+ ...graphTools,
185
+ ...collaborationTools,
186
+ };
187
+ // -------------------------------------------------------------------------
188
+ // 8. Create and configure MCP server
189
+ // -------------------------------------------------------------------------
190
+ const server = new McpServer({
191
+ name: SERVER_NAME,
192
+ version: SERVER_VERSION,
193
+ });
194
+ // Register each tool with the MCP server
195
+ for (const [name, tool] of Object.entries(allTools)) {
196
+ const { schema, description, handler } = tool;
197
+ server.tool(name, description,
198
+ // MCP SDK accepts raw Zod shape objects (not the full z.object wrapper)
199
+ schema.shape, async (input) => {
200
+ try {
201
+ const result = await handler(input);
202
+ return {
203
+ content: [
204
+ {
205
+ type: 'text',
206
+ text: JSON.stringify(result, null, 2),
207
+ },
208
+ ],
209
+ };
210
+ }
211
+ catch (err) {
212
+ const errorPayload = {
213
+ error: 'TOOL_EXECUTION_ERROR',
214
+ tool: name,
215
+ message: String(err),
216
+ };
217
+ return {
218
+ content: [
219
+ {
220
+ type: 'text',
221
+ text: JSON.stringify(errorPayload, null, 2),
222
+ },
223
+ ],
224
+ isError: true,
225
+ };
226
+ }
227
+ });
228
+ logger.debug(`server: registered tool: ${name}`);
229
+ }
230
+ const elapsed = Date.now() - startTime;
231
+ logger.info(`${SERVER_NAME}: ready`, {
232
+ toolCount: Object.keys(allTools).length,
233
+ qdrant: vectorStore !== null,
234
+ falkordb: graphStore !== null,
235
+ startupMs: elapsed,
236
+ });
237
+ // -------------------------------------------------------------------------
238
+ // 9. Periodic confidence decay — runs every 24 hours
239
+ // -------------------------------------------------------------------------
240
+ // Knowledge items that haven't been accessed recently see their confidence
241
+ // decrease over time. This prevents stale knowledge from dominating search
242
+ // results. The decay is best-effort and never blocks the server.
243
+ const DECAY_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
244
+ setInterval(() => {
245
+ if (vectorStore) {
246
+ confidenceManager.decayAll(vectorStore)
247
+ .catch(err => logger.warn('Periodic confidence decay failed', { error: String(err) }));
248
+ }
249
+ }, DECAY_INTERVAL);
250
+ // Expose close method for graceful shutdown
251
+ server._closeConnections = async () => {
252
+ db.close();
253
+ if (graphStore) {
254
+ try {
255
+ await graphStore.disconnect();
256
+ }
257
+ catch { }
258
+ }
259
+ logger.info('server: connections closed');
260
+ };
261
+ return server;
262
+ }
263
+ // ---------------------------------------------------------------------------
264
+ // Degraded KnowledgeSearch stub — used when Qdrant is unavailable
265
+ // ---------------------------------------------------------------------------
266
+ function createDegradedKnowledgeSearch() {
267
+ // We need a QdrantVectorStore that always reports unhealthy.
268
+ // This causes KnowledgeSearch to return empty results gracefully.
269
+ const degradedStore = {
270
+ isHealthy: async () => false,
271
+ searchKnowledge: async () => [],
272
+ upsertKnowledge: async () => { },
273
+ deleteKnowledge: async () => { },
274
+ getKnowledgeCount: async () => 0,
275
+ searchCodeChunks: async () => [],
276
+ searchObservations: async () => [],
277
+ upsertCodeChunks: async () => { },
278
+ upsertObservation: async () => { },
279
+ deleteFileChunks: async () => { },
280
+ deleteRepoChunks: async () => { },
281
+ getCounts: async () => ({ codeChunks: 0, observations: 0 }),
282
+ getObservation: async () => null,
283
+ updateObservation: async () => { },
284
+ filterObservations: async () => [],
285
+ ensureCollections: async () => { },
286
+ connect: async () => { },
287
+ disconnect: async () => { },
288
+ };
289
+ return new KnowledgeSearch(degradedStore);
290
+ }
291
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * FalkorDB implementation of GraphStore.
3
+ * FalkorDB speaks Redis protocol + GRAPH commands.
4
+ * Connects to localhost:6380 (remapped from container port 6379 per ADR-7).
5
+ *
6
+ * FalkorDB GRAPH.QUERY --compact response format:
7
+ * [
8
+ * ["header", [...column_names]],
9
+ * ["data", [[row], [row], ...]],
10
+ * ["stats", ["Query internal execution time: X ms"]]
11
+ * ]
12
+ *
13
+ * Without --compact:
14
+ * [header_array, data_array, stats_array]
15
+ * where header_array = [column_names]
16
+ * and data_array = [[cell, cell, ...], ...]
17
+ */
18
+ import type { GraphStore } from './interfaces.js';
19
+ import type { GraphQueryResult } from '../util/types.js';
20
+ export declare class FalkorDBGraphStore implements GraphStore {
21
+ private client;
22
+ private readonly url;
23
+ private readonly graphName;
24
+ private readonly queryTimeoutMs;
25
+ private connected;
26
+ private reconnectAttempts;
27
+ private readonly breaker;
28
+ constructor(url?: string, graphName?: string, queryTimeoutMs?: number);
29
+ connect(): Promise<void>;
30
+ disconnect(): Promise<void>;
31
+ isHealthy(): Promise<boolean>;
32
+ /**
33
+ * Execute a raw Cypher query and return typed results.
34
+ * Parses FalkorDB's non-compact response format.
35
+ */
36
+ query(cypher: string, params?: Record<string, unknown>): Promise<GraphQueryResult>;
37
+ upsertNode(label: string, matchProps: Record<string, unknown>, setProps: Record<string, unknown>): Promise<void>;
38
+ upsertEdge(fromLabel: string, fromProps: Record<string, unknown>, edgeType: string, edgeProps: Record<string, unknown>, toLabel: string, toProps: Record<string, unknown>): Promise<void>;
39
+ deleteFile(filePath: string, repoId: string): Promise<void>;
40
+ deleteRepo(repoId: string): Promise<void>;
41
+ getCounts(): Promise<{
42
+ totalNodes: number;
43
+ totalEdges: number;
44
+ byLabel: Record<string, number>;
45
+ }>;
46
+ ensureIndexes(): Promise<void>;
47
+ /**
48
+ * Execute a GRAPH.QUERY command with timeout, wrapped in the circuit breaker.
49
+ * Returns the raw FalkorDB response array.
50
+ */
51
+ private graphQuery;
52
+ /**
53
+ * Wrap a promise with a timeout that rejects after timeoutMs.
54
+ */
55
+ private withTimeout;
56
+ /**
57
+ * Parse FalkorDB GRAPH.QUERY response into GraphQueryResult.
58
+ * FalkorDB non-compact format: [header_row, data_rows, stats_row]
59
+ * header_row: ["column1", "column2", ...]
60
+ * data_rows: [[val1, val2, ...], [val1, val2, ...], ...]
61
+ */
62
+ private parseGraphQueryResult;
63
+ /**
64
+ * Extract a single scalar number from a GRAPH.QUERY count result.
65
+ * Response: [["cnt"], [[42]], [...stats]]
66
+ */
67
+ private extractScalarNumber;
68
+ private propsToMatch;
69
+ private propsToSet;
70
+ private valueToLiteral;
71
+ private escape;
72
+ }
73
+ //# sourceMappingURL=falkordb-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"falkordb-store.d.ts","sourceRoot":"","sources":["../../src/storage/falkordb-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAGvC,GAAG,GAAE,MAAiC,EACtC,SAAS,GAAE,MAA0B,EACrC,cAAc,GAAE,MAAiC;IAY7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAenC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUlF,UAAU,CACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAYV,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAoBV,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,SAAS,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IA+BjG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BpC;;;OAGG;YACW,UAAU;IAcxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA6C7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,MAAM;CAGf"}