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,533 @@
1
+ // ContextInjector — B6
2
+ //
3
+ // The central orchestrator for phase-start context assembly.
4
+ // Called by every forge.start_* tool handler before returning to the agent.
5
+ //
6
+ // For each phase, the injector:
7
+ // 1. Looks up the project and its repo from SQLite
8
+ // 2. Reads the repo's stack tags
9
+ // 3. Searches knowledge relevant to this phase
10
+ // 4. Gets codebase context when architecturally useful (architecture, implementation)
11
+ // 5. Gets memories from recent sessions when relevant
12
+ // 6. Reads previous phase outputs from SQLite
13
+ // 7. Assembles and returns the typed context object
14
+ //
15
+ // Every method handles unavailable backends gracefully and NEVER throws —
16
+ // a missing Qdrant or FalkorDB must not block a phase from starting.
17
+ import { logger } from '../util/logger.js';
18
+ // ---------------------------------------------------------------------------
19
+ // ContextInjector
20
+ // ---------------------------------------------------------------------------
21
+ export class ContextInjector {
22
+ knowledgeSearch;
23
+ codebaseContext;
24
+ memoryBridge;
25
+ db;
26
+ // CACHE-FRIENDLY ORDERING PRINCIPLE:
27
+ // All context injection methods emit fields from MOST STABLE to MOST VOLATILE.
28
+ // This maximizes Anthropic's automatic prompt caching — cached prefix tokens
29
+ // get a 90% input cost discount. Stable content (conventions, gotchas, advisory
30
+ // summaries) comes first and stays cached across agent dispatches. Volatile
31
+ // content (broadcasts, per-module code) comes last.
32
+ confidenceManager;
33
+ vectorStore;
34
+ constructor(knowledgeSearch, codebaseContext, memoryBridge, db, confidenceManager, vectorStore) {
35
+ this.knowledgeSearch = knowledgeSearch;
36
+ this.codebaseContext = codebaseContext;
37
+ this.memoryBridge = memoryBridge;
38
+ this.db = db;
39
+ this.confidenceManager = confidenceManager;
40
+ this.vectorStore = vectorStore;
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Fire-and-forget confidence boost for knowledge items returned by searches.
44
+ // NEVER blocks the caller — errors are logged and swallowed.
45
+ // ---------------------------------------------------------------------------
46
+ boostKnowledgeResults(results) {
47
+ if (!this.confidenceManager || !this.vectorStore)
48
+ return;
49
+ const cm = this.confidenceManager;
50
+ const vs = this.vectorStore;
51
+ for (const result of results) {
52
+ cm.boost(vs, result.id).catch((err) => {
53
+ logger.debug('ContextInjector.boostKnowledgeResults: boost failed (non-fatal)', {
54
+ id: result.id,
55
+ error: String(err),
56
+ });
57
+ });
58
+ }
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Broadcast injection helper.
62
+ // Retrieves recent agent broadcasts for a project from observations.
63
+ // Used to enrich phase context with cross-agent findings.
64
+ // ---------------------------------------------------------------------------
65
+ async getRecentBroadcasts(projectId, limit = 5) {
66
+ if (!this.vectorStore)
67
+ return [];
68
+ try {
69
+ const filter = {
70
+ must: [
71
+ { key: 'category', match: { value: 'agent_broadcast' } },
72
+ { key: 'tags', match: { value: projectId } },
73
+ ],
74
+ };
75
+ const results = await this.vectorStore.filterObservations(filter, limit);
76
+ return results.map((r) => {
77
+ const payload = r.payload;
78
+ return {
79
+ content: payload['content'] ?? '',
80
+ severity: payload['importance'] >= 0.7 ? 'critical' : payload['importance'] >= 0.5 ? 'warning' : 'info',
81
+ created_at: payload['created_at'] ?? 0,
82
+ };
83
+ });
84
+ }
85
+ catch (err) {
86
+ logger.debug('ContextInjector.getRecentBroadcasts: failed (non-fatal)', { error: String(err) });
87
+ return [];
88
+ }
89
+ }
90
+ // ---------------------------------------------------------------------------
91
+ // Advisory context (shared across implementation + inspection phases)
92
+ // ---------------------------------------------------------------------------
93
+ async injectAdvisoryContext(projectId) {
94
+ const defaultCtx = {
95
+ visionSummary: '',
96
+ architectureSummary: '',
97
+ designSummary: '',
98
+ activeDirectives: [],
99
+ };
100
+ try {
101
+ // Get phase outputs for vision, architecture, design
102
+ const phases = ['interview', 'architecture', 'design'];
103
+ const summaries = {};
104
+ for (const phase of phases) {
105
+ const row = this.db.get(`SELECT content FROM phase_outputs WHERE project_id = ? AND phase = ? ORDER BY created_at DESC LIMIT 1`, [projectId, phase]);
106
+ summaries[phase] = row ? row.content.slice(0, 1500) : '';
107
+ }
108
+ // Get active advisory directives from observations
109
+ let activeDirectives = [];
110
+ if (this.vectorStore) {
111
+ try {
112
+ const filter = {
113
+ must: [
114
+ { key: 'category', match: { value: 'advisory_checkpoint' } },
115
+ { key: 'tags', match: { value: projectId } },
116
+ ],
117
+ };
118
+ const results = await this.vectorStore.filterObservations(filter, 10);
119
+ activeDirectives = results.map((r) => {
120
+ const payload = r.payload;
121
+ return {
122
+ content: payload['content'] ?? '',
123
+ from: (payload['tags'] ?? []).find(t => t !== projectId && t !== 'advisory_checkpoint') ?? 'unknown',
124
+ created_at: payload['created_at'] ?? 0,
125
+ };
126
+ });
127
+ }
128
+ catch (err) {
129
+ logger.debug('injectAdvisoryContext: directive search failed (non-fatal)', { error: String(err) });
130
+ }
131
+ }
132
+ return {
133
+ visionSummary: summaries['interview'] ?? '',
134
+ architectureSummary: summaries['architecture'] ?? '',
135
+ designSummary: summaries['design'] ?? '',
136
+ activeDirectives,
137
+ };
138
+ }
139
+ catch (err) {
140
+ logger.debug('injectAdvisoryContext: failed (non-fatal)', { error: String(err) });
141
+ return defaultCtx;
142
+ }
143
+ }
144
+ // ---------------------------------------------------------------------------
145
+ // Interview phase
146
+ // ---------------------------------------------------------------------------
147
+ async injectInterviewContext(projectId, initialRequest) {
148
+ const { project, repo } = this.loadProjectAndRepo(projectId);
149
+ const stackTags = repo ? parseStack(repo.stack) : [];
150
+ const query = initialRequest ?? project?.name ?? 'project';
151
+ // Search for relevant gotchas related to the request
152
+ const gotchas = await this.knowledgeSearch.searchGotchas(query, {
153
+ stackTags,
154
+ limit: 5,
155
+ minConfidence: 0.4,
156
+ });
157
+ // Fire-and-forget confidence boost for consumed knowledge
158
+ this.boostKnowledgeResults(gotchas);
159
+ // Search memories for similar past projects
160
+ const memories = await this.memoryBridge.searchMemories(`project similar to: ${query}`, { repoId: repo?.id, limit: 5 });
161
+ // Derive similar projects from memories that look like project summaries
162
+ const similarProjects = memories
163
+ .filter((m) => m.content.length > 30)
164
+ .slice(0, 3)
165
+ .map((m, i) => ({
166
+ name: `Past project ${i + 1}`,
167
+ repo: repo?.name ?? 'unknown',
168
+ relevance: m.relevanceScore,
169
+ outcome: m.content.slice(0, 120),
170
+ }));
171
+ return {
172
+ similarProjects,
173
+ relevantGotchas: gotchas.map((g) => ({
174
+ title: g.title,
175
+ content: g.content,
176
+ confidence: g.confidence,
177
+ sourceRepo: g.source_repo,
178
+ })),
179
+ interviewTemplate: buildInterviewTemplate(stackTags),
180
+ };
181
+ }
182
+ // ---------------------------------------------------------------------------
183
+ // Architecture phase
184
+ // ---------------------------------------------------------------------------
185
+ async injectArchitectureContext(projectId, visionSummary) {
186
+ const { project, repo } = this.loadProjectAndRepo(projectId);
187
+ const stackTags = repo ? parseStack(repo.stack) : [];
188
+ const query = visionSummary ?? project?.name ?? 'architecture';
189
+ // Run knowledge search and codebase context in parallel
190
+ const [decisions, gotchas, codebaseResult] = await Promise.all([
191
+ this.knowledgeSearch.searchDecisions(query, {
192
+ stackTags,
193
+ limit: 5,
194
+ minConfidence: 0.4,
195
+ }),
196
+ this.knowledgeSearch.searchGotchas(query, {
197
+ stackTags,
198
+ limit: 5,
199
+ minConfidence: 0.4,
200
+ }),
201
+ repo
202
+ ? this.codebaseContext.getContext(query, {
203
+ repoId: repo.id,
204
+ detail: 'skeleton',
205
+ maxResults: 8,
206
+ maxTokens: 3000,
207
+ })
208
+ : Promise.resolve(null),
209
+ ]);
210
+ // Fire-and-forget confidence boost for consumed knowledge
211
+ this.boostKnowledgeResults(decisions);
212
+ this.boostKnowledgeResults(gotchas);
213
+ // Build a coarse module list from skeleton file paths
214
+ const modules = (codebaseResult?.pivotFiles ?? []).map((f) => ({
215
+ name: basename(f.filePath),
216
+ path: f.filePath,
217
+ purpose: f.matchReason,
218
+ }));
219
+ // Derive patterns and dependencies from skeleton content
220
+ const skeletonContent = (codebaseResult?.supportingSkeletons ?? [])
221
+ .map((s) => s.skeleton)
222
+ .join('\n');
223
+ const patterns = extractPatterns(skeletonContent, stackTags);
224
+ const dependencies = extractDependencies(skeletonContent);
225
+ // Stack constraints come from the manifest stack tags
226
+ const stackConstraints = stackTags.map((tag) => `Stack: ${tag} — apply ${tag}-specific patterns and gotchas`);
227
+ return {
228
+ codebaseContext: {
229
+ modules,
230
+ patterns,
231
+ dependencies,
232
+ fileCount: codebaseResult?.pivotFiles.length ?? 0,
233
+ },
234
+ relevantDecisions: decisions.map((d) => ({
235
+ title: d.title,
236
+ content: d.content,
237
+ confidence: d.confidence,
238
+ sourceRepo: d.source_repo,
239
+ })),
240
+ relevantGotchas: gotchas.map((g) => ({
241
+ title: g.title,
242
+ content: g.content,
243
+ stackTags: g.stack_tags,
244
+ confidence: g.confidence,
245
+ })),
246
+ stackConstraints,
247
+ };
248
+ }
249
+ // ---------------------------------------------------------------------------
250
+ // Implementation phase (per-module)
251
+ // ---------------------------------------------------------------------------
252
+ async injectImplementationContext(projectId, modules) {
253
+ const { repo } = this.loadProjectAndRepo(projectId);
254
+ const stackTags = repo ? parseStack(repo.stack) : [];
255
+ // Fetch project-wide broadcasts once (shared across all modules)
256
+ const recentBroadcasts = await this.getRecentBroadcasts(projectId, 15);
257
+ // Fetch advisory context once (shared across all modules)
258
+ const advisory = await this.injectAdvisoryContext(projectId);
259
+ const result = {};
260
+ // Process each module, fanning out searches in parallel
261
+ await Promise.all(modules.map(async (mod) => {
262
+ const query = `${mod.agentType} ${mod.name}`;
263
+ const [gotchas, conventions, code] = await Promise.all([
264
+ this.knowledgeSearch.searchGotchas(query, {
265
+ stackTags,
266
+ limit: 4,
267
+ minConfidence: 0.4,
268
+ }),
269
+ this.knowledgeSearch.searchConventions(query, {
270
+ stackTags,
271
+ limit: 3,
272
+ minConfidence: 0.3,
273
+ }),
274
+ repo
275
+ ? this.codebaseContext.getContext(query, {
276
+ repoId: repo.id,
277
+ detail: 'full',
278
+ maxResults: 4,
279
+ maxTokens: 4000,
280
+ })
281
+ : Promise.resolve(null),
282
+ ]);
283
+ // Fire-and-forget confidence boost for consumed knowledge
284
+ this.boostKnowledgeResults(gotchas);
285
+ this.boostKnowledgeResults(conventions);
286
+ const relevantCode = code
287
+ ? code.pivotFiles
288
+ .map((f) => `// ${f.filePath}\n${f.content}`)
289
+ .join('\n\n')
290
+ : '';
291
+ // Build sibling list: all modules EXCEPT this one
292
+ const siblingModules = modules
293
+ .filter((m) => m.name !== mod.name)
294
+ .map((m) => ({
295
+ name: m.name,
296
+ agentType: m.agentType,
297
+ description: m.description,
298
+ }));
299
+ result[mod.name] = {
300
+ // Stable (cacheable)
301
+ conventions: conventions.map((c) => ({
302
+ title: c.title,
303
+ content: c.content,
304
+ })),
305
+ gotchas: gotchas.map((g) => ({
306
+ title: g.title,
307
+ content: g.content,
308
+ })),
309
+ siblingModules,
310
+ advisory,
311
+ // Volatile
312
+ relevantCode,
313
+ recalledContext: [], // populated by session index when available
314
+ recentBroadcasts,
315
+ };
316
+ }));
317
+ return result;
318
+ }
319
+ // ---------------------------------------------------------------------------
320
+ // Inspection phase
321
+ // ---------------------------------------------------------------------------
322
+ async injectInspectionContext(projectId) {
323
+ const { repo } = this.loadProjectAndRepo(projectId);
324
+ const stackTags = repo ? parseStack(repo.stack) : [];
325
+ // Look up how many inspection cycles have occurred for this project
326
+ const cycleCount = this.countInspectionCycles(projectId);
327
+ const gotchas = await this.knowledgeSearch.searchGotchas('code quality anti-patterns stubs incomplete implementation', { stackTags, limit: 6, minConfidence: 0.35 });
328
+ // Fire-and-forget confidence boost for consumed knowledge
329
+ this.boostKnowledgeResults(gotchas);
330
+ // Past findings from inspection outputs stored in phase_outputs
331
+ const pastOutputRows = this.db.all(`SELECT * FROM phase_outputs WHERE project_id = ? AND phase = ? ORDER BY created_at DESC LIMIT 5`, [projectId, 'inspection']);
332
+ const pastFindings = pastOutputRows.map((row) => ({
333
+ description: row.content.slice(0, 200),
334
+ severity: 'unknown',
335
+ resolution: '',
336
+ sourceRepo: repo?.name ?? 'current',
337
+ }));
338
+ // Fetch all broadcasts from this project for interface compatibility checks
339
+ const broadcasts = await this.getRecentBroadcasts(projectId, 30);
340
+ const advisory = await this.injectAdvisoryContext(projectId);
341
+ return {
342
+ checklist: buildInspectionChecklist(stackTags),
343
+ pastFindings,
344
+ antiStubPatterns: ANTI_STUB_PATTERNS,
345
+ cycleCount,
346
+ maxCycles: 3,
347
+ broadcasts,
348
+ advisory,
349
+ };
350
+ }
351
+ // ---------------------------------------------------------------------------
352
+ // Generic phase context
353
+ // ---------------------------------------------------------------------------
354
+ async injectPhaseContext(projectId, phase, query) {
355
+ const { project, repo } = this.loadProjectAndRepo(projectId);
356
+ const stackTags = repo ? parseStack(repo.stack) : [];
357
+ const effectiveQuery = query ?? PHASE_QUERY_HINTS[phase] ?? project?.name ?? phase;
358
+ const warnings = [];
359
+ // Generic knowledge search
360
+ const knowledge = await this.knowledgeSearch.search(effectiveQuery, {
361
+ stack_tags: stackTags,
362
+ limit: 6,
363
+ min_confidence: 0.3,
364
+ });
365
+ // Fire-and-forget confidence boost for consumed knowledge
366
+ this.boostKnowledgeResults(knowledge);
367
+ if (knowledge.length === 0) {
368
+ warnings.push('No relevant knowledge found — knowledge base may be empty');
369
+ }
370
+ // Previous phase outputs for this project
371
+ const outputRows = this.db.all(`SELECT phase, output_type, content FROM phase_outputs
372
+ WHERE project_id = ? ORDER BY created_at DESC LIMIT 10`, [projectId]);
373
+ const previousOutputs = outputRows.map((row) => ({
374
+ phase: row.phase,
375
+ type: row.output_type,
376
+ preview: row.content.slice(0, 300),
377
+ }));
378
+ // Fetch recent agent broadcasts for this project
379
+ const recentBroadcasts = await this.getRecentBroadcasts(projectId);
380
+ return {
381
+ relevantKnowledge: knowledge.map((k) => ({
382
+ title: k.title,
383
+ content: k.content,
384
+ category: k.category,
385
+ confidence: k.confidence,
386
+ })),
387
+ previousOutputs,
388
+ warnings,
389
+ recentBroadcasts,
390
+ };
391
+ }
392
+ // ---------------------------------------------------------------------------
393
+ // Private helpers
394
+ // ---------------------------------------------------------------------------
395
+ loadProjectAndRepo(projectId) {
396
+ const project = this.db.get(`SELECT * FROM projects WHERE id = ?`, [projectId]);
397
+ const repo = project
398
+ ? this.db.get(`SELECT * FROM repos WHERE id = ?`, [
399
+ project.repo_id,
400
+ ])
401
+ : undefined;
402
+ return { project, repo };
403
+ }
404
+ /**
405
+ * Count how many times this project has had an inspection -> implementation
406
+ * cycle (i.e., how many times inspection produced a "fail" verdict).
407
+ */
408
+ countInspectionCycles(projectId) {
409
+ const row = this.db.get(`SELECT COUNT(*) as cnt FROM pipeline_events
410
+ WHERE project_id = ? AND from_phase = 'inspection' AND to_phase = 'implementation'`, [projectId]);
411
+ return row?.cnt ?? 0;
412
+ }
413
+ }
414
+ // ---------------------------------------------------------------------------
415
+ // Utilities
416
+ // ---------------------------------------------------------------------------
417
+ function parseStack(stackJson) {
418
+ try {
419
+ const parsed = JSON.parse(stackJson);
420
+ return Array.isArray(parsed) ? parsed : [];
421
+ }
422
+ catch {
423
+ return [];
424
+ }
425
+ }
426
+ function basename(filePath) {
427
+ const parts = filePath.replace(/\\/g, '/').split('/');
428
+ return parts[parts.length - 1] ?? filePath;
429
+ }
430
+ function extractPatterns(content, stackTags) {
431
+ const patterns = [];
432
+ if (content.includes('Module') && stackTags.includes('nestjs')) {
433
+ patterns.push('NestJS module pattern detected');
434
+ }
435
+ if (content.includes('Drizzle') || content.includes('drizzle')) {
436
+ patterns.push('Drizzle ORM pattern detected');
437
+ }
438
+ if (content.includes('interface ') || content.includes('type ')) {
439
+ patterns.push('TypeScript interface-driven design');
440
+ }
441
+ if (content.includes('export class')) {
442
+ patterns.push('Class-based service pattern');
443
+ }
444
+ return patterns;
445
+ }
446
+ function extractDependencies(content) {
447
+ const deps = [];
448
+ const importRegex = /from ['"](@?[^'"./][^'"]*)['"]/g;
449
+ let match;
450
+ const seen = new Set();
451
+ while ((match = importRegex.exec(content)) !== null) {
452
+ const dep = match[1];
453
+ if (dep && !seen.has(dep)) {
454
+ seen.add(dep);
455
+ deps.push(dep);
456
+ }
457
+ }
458
+ return deps.slice(0, 10);
459
+ }
460
+ function buildInterviewTemplate(stackTags) {
461
+ const stackList = stackTags.length > 0 ? stackTags.join(', ') : 'unspecified';
462
+ return `## Strategist Interview Template
463
+
464
+ **Tech Stack**: ${stackList}
465
+
466
+ ### Questions to ask:
467
+ 1. What is the core problem this feature solves?
468
+ 2. Who are the primary users and what is their workflow?
469
+ 3. What are the success criteria? How will we know it is done?
470
+ 4. What are the constraints (timeline, performance, compatibility)?
471
+ 5. Are there existing patterns or modules in the codebase we should follow?
472
+ 6. What are the out-of-scope items for this iteration?
473
+
474
+ ### Vision document to produce:
475
+ - Problem statement (1 paragraph)
476
+ - User stories (numbered list)
477
+ - Success criteria (measurable)
478
+ - Out of scope (explicit list)
479
+ - Known risks or dependencies`;
480
+ }
481
+ function buildInspectionChecklist(stackTags) {
482
+ const lines = [
483
+ '## Inspector Checklist',
484
+ '',
485
+ '### Build',
486
+ '- [ ] TypeScript compiles without errors',
487
+ '- [ ] No missing imports or unresolved modules',
488
+ '- [ ] No dangling providers or unregistered services',
489
+ '',
490
+ '### Anti-Stub',
491
+ '- [ ] No TODO comments left in implementation',
492
+ '- [ ] No hardcoded return values (stub responses)',
493
+ '- [ ] Every service method performs real work',
494
+ '- [ ] Every guard performs real auth checks',
495
+ '',
496
+ '### Wiring',
497
+ '- [ ] HTTP request traces end-to-end through controller -> service -> DB',
498
+ '- [ ] All error cases handled (not just happy path)',
499
+ '- [ ] Response shapes match specified interfaces',
500
+ '',
501
+ '### Quality',
502
+ '- [ ] Input validation on all endpoints',
503
+ '- [ ] Appropriate HTTP status codes',
504
+ '- [ ] No bare catch blocks that swallow errors',
505
+ ];
506
+ if (stackTags.includes('nestjs')) {
507
+ lines.push('', '### NestJS-specific', '- [ ] All providers registered in their module', '- [ ] All module imports declared', '- [ ] DTOs have class-validator decorators', '- [ ] Guards are applied with @UseGuards()');
508
+ }
509
+ if (stackTags.includes('drizzle')) {
510
+ lines.push('', '### Drizzle-specific', '- [ ] Migrations generated and applied (db:generate then db:migrate)', '- [ ] No raw SQL where Drizzle query builder is appropriate', '- [ ] Exported interfaces for service return types (TS4053 prevention)');
511
+ }
512
+ return lines.join('\n');
513
+ }
514
+ const ANTI_STUB_PATTERNS = [
515
+ 'return { success: true } without side effects',
516
+ '// TODO: implement later',
517
+ '// TODO: add real logic',
518
+ 'throw new Error("Not implemented")',
519
+ 'return null // placeholder',
520
+ 'console.log("implement me")',
521
+ 'return [] // stub',
522
+ 'return {} // placeholder',
523
+ ];
524
+ const PHASE_QUERY_HINTS = {
525
+ interview: 'project scoping vision requirements user stories',
526
+ architecture: 'module design service boundaries database schema API contracts',
527
+ design: 'UI design component hierarchy user experience layout',
528
+ qa_strategy: 'test plan testing strategy coverage integration tests',
529
+ implementation: 'implementation code services controllers database',
530
+ inspection: 'code review quality check anti-patterns stubs completeness',
531
+ knowledge_collection: 'learnings gotchas patterns decisions retrospective',
532
+ };
533
+ //# sourceMappingURL=injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/context/injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { QdrantVectorStore } from '../storage/qdrant-store.js';
2
+ export interface MemorySearchResult {
3
+ content: string;
4
+ createdAt: number;
5
+ relevanceScore: number;
6
+ sessionId?: string;
7
+ }
8
+ export interface MemorySearchOptions {
9
+ repoId?: string;
10
+ sessionId?: string;
11
+ limit?: number;
12
+ scoreThreshold?: number;
13
+ }
14
+ export declare class MemoryBridge {
15
+ private readonly vectorStore;
16
+ constructor(vectorStore: QdrantVectorStore | null);
17
+ /**
18
+ * Search observations by semantic similarity.
19
+ * Optionally filters by repoId and/or sessionId.
20
+ * Returns [] gracefully when Qdrant is unavailable.
21
+ */
22
+ searchMemories(query: string, options?: MemorySearchOptions): Promise<MemorySearchResult[]>;
23
+ /**
24
+ * Save a memory (observation) to the vector store.
25
+ * Returns the UUID of the stored observation.
26
+ * Throws when storage fails so the caller can decide whether to propagate.
27
+ */
28
+ saveMemory(content: string, repoId: string, sessionId?: string): Promise<string>;
29
+ /** True when the vector store is configured (does not perform a health check). */
30
+ isAvailable(): boolean;
31
+ }
32
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/context/memory.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AASpE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAElE;;;;OAIG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqEhC;;;;OAIG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAwDlB,kFAAkF;IAClF,WAAW,IAAI,OAAO;CAGvB"}