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,536 @@
1
+ # MCP Server Types: Deep Dive
2
+
3
+ Complete reference for all MCP server types supported in Claude Code plugins.
4
+
5
+ ## stdio (Standard Input/Output)
6
+
7
+ ### Overview
8
+
9
+ Execute local MCP servers as child processes with communication via stdin/stdout. Best choice for local tools, custom servers, and NPM packages.
10
+
11
+ ### Configuration
12
+
13
+ **Basic:**
14
+ ```json
15
+ {
16
+ "my-server": {
17
+ "command": "npx",
18
+ "args": ["-y", "my-mcp-server"]
19
+ }
20
+ }
21
+ ```
22
+
23
+ **With environment:**
24
+ ```json
25
+ {
26
+ "my-server": {
27
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/custom-server",
28
+ "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
29
+ "env": {
30
+ "API_KEY": "${MY_API_KEY}",
31
+ "LOG_LEVEL": "debug",
32
+ "DATABASE_URL": "${DB_URL}"
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Process Lifecycle
39
+
40
+ 1. **Startup**: Claude Code spawns process with `command` and `args`
41
+ 2. **Communication**: JSON-RPC messages via stdin/stdout
42
+ 3. **Lifecycle**: Process runs for entire Claude Code session
43
+ 4. **Shutdown**: Process terminated when Claude Code exits
44
+
45
+ ### Use Cases
46
+
47
+ **NPM Packages:**
48
+ ```json
49
+ {
50
+ "filesystem": {
51
+ "command": "npx",
52
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
53
+ }
54
+ }
55
+ ```
56
+
57
+ **Custom Scripts:**
58
+ ```json
59
+ {
60
+ "custom": {
61
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server.js",
62
+ "args": ["--verbose"]
63
+ }
64
+ }
65
+ ```
66
+
67
+ **Python Servers:**
68
+ ```json
69
+ {
70
+ "python-server": {
71
+ "command": "python",
72
+ "args": ["-m", "my_mcp_server"],
73
+ "env": {
74
+ "PYTHONUNBUFFERED": "1"
75
+ }
76
+ }
77
+ }
78
+ ```
79
+
80
+ ### Best Practices
81
+
82
+ 1. **Use absolute paths or ${CLAUDE_PLUGIN_ROOT}**
83
+ 2. **Set PYTHONUNBUFFERED for Python servers**
84
+ 3. **Pass configuration via args or env, not stdin**
85
+ 4. **Handle server crashes gracefully**
86
+ 5. **Log to stderr, not stdout (stdout is for MCP protocol)**
87
+
88
+ ### Troubleshooting
89
+
90
+ **Server won't start:**
91
+ - Check command exists and is executable
92
+ - Verify file paths are correct
93
+ - Check permissions
94
+ - Review `claude --debug` logs
95
+
96
+ **Communication fails:**
97
+ - Ensure server uses stdin/stdout correctly
98
+ - Check for stray print/console.log statements
99
+ - Verify JSON-RPC format
100
+
101
+ ## SSE (Server-Sent Events)
102
+
103
+ ### Overview
104
+
105
+ Connect to hosted MCP servers via HTTP with server-sent events for streaming. Best for cloud services and OAuth authentication.
106
+
107
+ ### Configuration
108
+
109
+ **Basic:**
110
+ ```json
111
+ {
112
+ "hosted-service": {
113
+ "type": "sse",
114
+ "url": "https://mcp.example.com/sse"
115
+ }
116
+ }
117
+ ```
118
+
119
+ **With headers:**
120
+ ```json
121
+ {
122
+ "service": {
123
+ "type": "sse",
124
+ "url": "https://mcp.example.com/sse",
125
+ "headers": {
126
+ "X-API-Version": "v1",
127
+ "X-Client-ID": "${CLIENT_ID}"
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ ### Connection Lifecycle
134
+
135
+ 1. **Initialization**: HTTP connection established to URL
136
+ 2. **Handshake**: MCP protocol negotiation
137
+ 3. **Streaming**: Server sends events via SSE
138
+ 4. **Requests**: Client sends HTTP POST for tool calls
139
+ 5. **Reconnection**: Automatic reconnection on disconnect
140
+
141
+ ### Authentication
142
+
143
+ **OAuth (Automatic):**
144
+ ```json
145
+ {
146
+ "asana": {
147
+ "type": "sse",
148
+ "url": "https://mcp.asana.com/sse"
149
+ }
150
+ }
151
+ ```
152
+
153
+ Claude Code handles OAuth flow:
154
+ 1. User prompted to authenticate on first use
155
+ 2. Opens browser for OAuth flow
156
+ 3. Tokens stored securely
157
+ 4. Automatic token refresh
158
+
159
+ **Custom Headers:**
160
+ ```json
161
+ {
162
+ "service": {
163
+ "type": "sse",
164
+ "url": "https://mcp.example.com/sse",
165
+ "headers": {
166
+ "Authorization": "Bearer ${API_TOKEN}"
167
+ }
168
+ }
169
+ }
170
+ ```
171
+
172
+ ### Use Cases
173
+
174
+ **Official Services:**
175
+ - Asana: `https://mcp.asana.com/sse`
176
+ - GitHub: `https://mcp.github.com/sse`
177
+ - Other hosted MCP servers
178
+
179
+ **Custom Hosted Servers:**
180
+ Deploy your own MCP server and expose via HTTPS + SSE.
181
+
182
+ ### Best Practices
183
+
184
+ 1. **Always use HTTPS, never HTTP**
185
+ 2. **Let OAuth handle authentication when available**
186
+ 3. **Use environment variables for tokens**
187
+ 4. **Handle connection failures gracefully**
188
+ 5. **Document OAuth scopes required**
189
+
190
+ ### Troubleshooting
191
+
192
+ **Connection refused:**
193
+ - Check URL is correct and accessible
194
+ - Verify HTTPS certificate is valid
195
+ - Check network connectivity
196
+ - Review firewall settings
197
+
198
+ **OAuth fails:**
199
+ - Clear cached tokens
200
+ - Check OAuth scopes
201
+ - Verify redirect URLs
202
+ - Re-authenticate
203
+
204
+ ## HTTP (REST API)
205
+
206
+ ### Overview
207
+
208
+ Connect to RESTful MCP servers via standard HTTP requests. Best for token-based auth and stateless interactions.
209
+
210
+ ### Configuration
211
+
212
+ **Basic:**
213
+ ```json
214
+ {
215
+ "api": {
216
+ "type": "http",
217
+ "url": "https://api.example.com/mcp"
218
+ }
219
+ }
220
+ ```
221
+
222
+ **With authentication:**
223
+ ```json
224
+ {
225
+ "api": {
226
+ "type": "http",
227
+ "url": "https://api.example.com/mcp",
228
+ "headers": {
229
+ "Authorization": "Bearer ${API_TOKEN}",
230
+ "Content-Type": "application/json",
231
+ "X-API-Version": "2024-01-01"
232
+ }
233
+ }
234
+ }
235
+ ```
236
+
237
+ ### Request/Response Flow
238
+
239
+ 1. **Tool Discovery**: GET to discover available tools
240
+ 2. **Tool Invocation**: POST with tool name and parameters
241
+ 3. **Response**: JSON response with results or errors
242
+ 4. **Stateless**: Each request independent
243
+
244
+ ### Authentication
245
+
246
+ **Token-Based:**
247
+ ```json
248
+ {
249
+ "headers": {
250
+ "Authorization": "Bearer ${API_TOKEN}"
251
+ }
252
+ }
253
+ ```
254
+
255
+ **API Key:**
256
+ ```json
257
+ {
258
+ "headers": {
259
+ "X-API-Key": "${API_KEY}"
260
+ }
261
+ }
262
+ ```
263
+
264
+ **Custom Auth:**
265
+ ```json
266
+ {
267
+ "headers": {
268
+ "X-Auth-Token": "${AUTH_TOKEN}",
269
+ "X-User-ID": "${USER_ID}"
270
+ }
271
+ }
272
+ ```
273
+
274
+ ### Use Cases
275
+
276
+ - REST API backends
277
+ - Internal services
278
+ - Microservices
279
+ - Serverless functions
280
+
281
+ ### Best Practices
282
+
283
+ 1. **Use HTTPS for all connections**
284
+ 2. **Store tokens in environment variables**
285
+ 3. **Implement retry logic for transient failures**
286
+ 4. **Handle rate limiting**
287
+ 5. **Set appropriate timeouts**
288
+
289
+ ### Troubleshooting
290
+
291
+ **HTTP errors:**
292
+ - 401: Check authentication headers
293
+ - 403: Verify permissions
294
+ - 429: Implement rate limiting
295
+ - 500: Check server logs
296
+
297
+ **Timeout issues:**
298
+ - Increase timeout if needed
299
+ - Check server performance
300
+ - Optimize tool implementations
301
+
302
+ ## WebSocket (Real-time)
303
+
304
+ ### Overview
305
+
306
+ Connect to MCP servers via WebSocket for real-time bidirectional communication. Best for streaming and low-latency applications.
307
+
308
+ ### Configuration
309
+
310
+ **Basic:**
311
+ ```json
312
+ {
313
+ "realtime": {
314
+ "type": "ws",
315
+ "url": "wss://mcp.example.com/ws"
316
+ }
317
+ }
318
+ ```
319
+
320
+ **With authentication:**
321
+ ```json
322
+ {
323
+ "realtime": {
324
+ "type": "ws",
325
+ "url": "wss://mcp.example.com/ws",
326
+ "headers": {
327
+ "Authorization": "Bearer ${TOKEN}",
328
+ "X-Client-ID": "${CLIENT_ID}"
329
+ }
330
+ }
331
+ }
332
+ ```
333
+
334
+ ### Connection Lifecycle
335
+
336
+ 1. **Handshake**: WebSocket upgrade request
337
+ 2. **Connection**: Persistent bidirectional channel
338
+ 3. **Messages**: JSON-RPC over WebSocket
339
+ 4. **Heartbeat**: Keep-alive messages
340
+ 5. **Reconnection**: Automatic on disconnect
341
+
342
+ ### Use Cases
343
+
344
+ - Real-time data streaming
345
+ - Live updates and notifications
346
+ - Collaborative editing
347
+ - Low-latency tool calls
348
+ - Push notifications from server
349
+
350
+ ### Best Practices
351
+
352
+ 1. **Use WSS (secure WebSocket), never WS**
353
+ 2. **Implement heartbeat/ping-pong**
354
+ 3. **Handle reconnection logic**
355
+ 4. **Buffer messages during disconnection**
356
+ 5. **Set connection timeouts**
357
+
358
+ ### Troubleshooting
359
+
360
+ **Connection drops:**
361
+ - Implement reconnection logic
362
+ - Check network stability
363
+ - Verify server supports WebSocket
364
+ - Review firewall settings
365
+
366
+ **Message delivery:**
367
+ - Implement message acknowledgment
368
+ - Handle out-of-order messages
369
+ - Buffer during disconnection
370
+
371
+ ## Comparison Matrix
372
+
373
+ | Feature | stdio | SSE | HTTP | WebSocket |
374
+ |---------|-------|-----|------|-----------|
375
+ | **Transport** | Process | HTTP/SSE | HTTP | WebSocket |
376
+ | **Direction** | Bidirectional | Server→Client | Request/Response | Bidirectional |
377
+ | **State** | Stateful | Stateful | Stateless | Stateful |
378
+ | **Auth** | Env vars | OAuth/Headers | Headers | Headers |
379
+ | **Use Case** | Local tools | Cloud services | REST APIs | Real-time |
380
+ | **Latency** | Lowest | Medium | Medium | Low |
381
+ | **Setup** | Easy | Medium | Easy | Medium |
382
+ | **Reconnect** | Process respawn | Automatic | N/A | Automatic |
383
+
384
+ ## Choosing the Right Type
385
+
386
+ **Use stdio when:**
387
+ - Running local tools or custom servers
388
+ - Need lowest latency
389
+ - Working with file systems or local databases
390
+ - Distributing server with plugin
391
+
392
+ **Use SSE when:**
393
+ - Connecting to hosted services
394
+ - Need OAuth authentication
395
+ - Using official MCP servers (Asana, GitHub)
396
+ - Want automatic reconnection
397
+
398
+ **Use HTTP when:**
399
+ - Integrating with REST APIs
400
+ - Need stateless interactions
401
+ - Using token-based auth
402
+ - Simple request/response pattern
403
+
404
+ **Use WebSocket when:**
405
+ - Need real-time updates
406
+ - Building collaborative features
407
+ - Low-latency critical
408
+ - Bi-directional streaming required
409
+
410
+ ## Migration Between Types
411
+
412
+ ### From stdio to SSE
413
+
414
+ **Before (stdio):**
415
+ ```json
416
+ {
417
+ "local-server": {
418
+ "command": "node",
419
+ "args": ["server.js"]
420
+ }
421
+ }
422
+ ```
423
+
424
+ **After (SSE - deploy server):**
425
+ ```json
426
+ {
427
+ "hosted-server": {
428
+ "type": "sse",
429
+ "url": "https://mcp.example.com/sse"
430
+ }
431
+ }
432
+ ```
433
+
434
+ ### From HTTP to WebSocket
435
+
436
+ **Before (HTTP):**
437
+ ```json
438
+ {
439
+ "api": {
440
+ "type": "http",
441
+ "url": "https://api.example.com/mcp"
442
+ }
443
+ }
444
+ ```
445
+
446
+ **After (WebSocket):**
447
+ ```json
448
+ {
449
+ "realtime": {
450
+ "type": "ws",
451
+ "url": "wss://api.example.com/ws"
452
+ }
453
+ }
454
+ ```
455
+
456
+ Benefits: Real-time updates, lower latency, bi-directional communication.
457
+
458
+ ## Advanced Configuration
459
+
460
+ ### Multiple Servers
461
+
462
+ Combine different types:
463
+
464
+ ```json
465
+ {
466
+ "local-db": {
467
+ "command": "npx",
468
+ "args": ["-y", "mcp-server-sqlite", "./data.db"]
469
+ },
470
+ "cloud-api": {
471
+ "type": "sse",
472
+ "url": "https://mcp.example.com/sse"
473
+ },
474
+ "internal-service": {
475
+ "type": "http",
476
+ "url": "https://api.example.com/mcp",
477
+ "headers": {
478
+ "Authorization": "Bearer ${API_TOKEN}"
479
+ }
480
+ }
481
+ }
482
+ ```
483
+
484
+ ### Conditional Configuration
485
+
486
+ Use environment variables to switch servers:
487
+
488
+ ```json
489
+ {
490
+ "api": {
491
+ "type": "http",
492
+ "url": "${API_URL}",
493
+ "headers": {
494
+ "Authorization": "Bearer ${API_TOKEN}"
495
+ }
496
+ }
497
+ }
498
+ ```
499
+
500
+ Set different values for dev/prod:
501
+ - Dev: `API_URL=http://localhost:8080/mcp`
502
+ - Prod: `API_URL=https://api.production.com/mcp`
503
+
504
+ ## Security Considerations
505
+
506
+ ### Stdio Security
507
+
508
+ - Validate command paths
509
+ - Don't execute user-provided commands
510
+ - Limit environment variable access
511
+ - Restrict file system access
512
+
513
+ ### Network Security
514
+
515
+ - Always use HTTPS/WSS
516
+ - Validate SSL certificates
517
+ - Don't skip certificate verification
518
+ - Use secure token storage
519
+
520
+ ### Token Management
521
+
522
+ - Never hardcode tokens
523
+ - Use environment variables
524
+ - Rotate tokens regularly
525
+ - Implement token refresh
526
+ - Document scopes required
527
+
528
+ ## Conclusion
529
+
530
+ Choose the MCP server type based on your use case:
531
+ - **stdio** for local, custom, or NPM-packaged servers
532
+ - **SSE** for hosted services with OAuth
533
+ - **HTTP** for REST APIs with token auth
534
+ - **WebSocket** for real-time bidirectional communication
535
+
536
+ Test thoroughly and handle errors gracefully for robust MCP integration.