swarmcraft 0.0.1 → 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 (639) hide show
  1. package/.gitmodules +6 -0
  2. package/.storybook/main.ts +15 -0
  3. package/.storybook/preview.tsx +30 -0
  4. package/CLAUDE.md +222 -0
  5. package/README.md +135 -1
  6. package/api/proxy.ts +104 -0
  7. package/dist/server/app.d.ts +3 -0
  8. package/dist/server/app.d.ts.map +1 -0
  9. package/dist/server/app.js +133 -0
  10. package/dist/server/app.js.map +1 -0
  11. package/dist/server/config.d.ts +31 -0
  12. package/dist/server/config.d.ts.map +1 -0
  13. package/dist/server/config.js +19 -0
  14. package/dist/server/config.js.map +1 -0
  15. package/dist/server/context.d.ts +62 -0
  16. package/dist/server/context.d.ts.map +1 -0
  17. package/dist/server/context.js +87 -0
  18. package/dist/server/context.js.map +1 -0
  19. package/dist/server/db/index.d.ts +7 -0
  20. package/dist/server/db/index.d.ts.map +1 -0
  21. package/dist/server/db/index.js +52 -0
  22. package/dist/server/db/index.js.map +1 -0
  23. package/dist/server/db/provider.d.ts +57 -0
  24. package/dist/server/db/provider.d.ts.map +1 -0
  25. package/dist/server/db/provider.js +13 -0
  26. package/dist/server/db/provider.js.map +1 -0
  27. package/dist/server/db/providers/sqlite.d.ts +37 -0
  28. package/dist/server/db/providers/sqlite.d.ts.map +1 -0
  29. package/dist/server/db/providers/sqlite.js +1093 -0
  30. package/dist/server/db/providers/sqlite.js.map +1 -0
  31. package/dist/server/db/repositories.d.ts +142 -0
  32. package/dist/server/db/repositories.d.ts.map +1 -0
  33. package/dist/server/db/repositories.js +12 -0
  34. package/dist/server/db/repositories.js.map +1 -0
  35. package/dist/server/db/seed.d.ts +2 -0
  36. package/dist/server/db/seed.d.ts.map +1 -0
  37. package/dist/server/db/seed.js +143 -0
  38. package/dist/server/db/seed.js.map +1 -0
  39. package/dist/server/index.d.ts +2 -0
  40. package/dist/server/index.d.ts.map +1 -0
  41. package/dist/server/index.js +28 -0
  42. package/dist/server/index.js.map +1 -0
  43. package/dist/server/map/acp-manager.d.ts +113 -0
  44. package/dist/server/map/acp-manager.d.ts.map +1 -0
  45. package/dist/server/map/acp-manager.js +391 -0
  46. package/dist/server/map/acp-manager.js.map +1 -0
  47. package/dist/server/map/client-manager.d.ts +51 -0
  48. package/dist/server/map/client-manager.d.ts.map +1 -0
  49. package/dist/server/map/client-manager.js +323 -0
  50. package/dist/server/map/client-manager.js.map +1 -0
  51. package/dist/server/map/event-handler.d.ts +7 -0
  52. package/dist/server/map/event-handler.d.ts.map +1 -0
  53. package/dist/server/map/event-handler.js +374 -0
  54. package/dist/server/map/event-handler.js.map +1 -0
  55. package/dist/server/map/index.d.ts +6 -0
  56. package/dist/server/map/index.d.ts.map +1 -0
  57. package/dist/server/map/index.js +5 -0
  58. package/dist/server/map/index.js.map +1 -0
  59. package/dist/server/map/types.d.ts +28 -0
  60. package/dist/server/map/types.d.ts.map +1 -0
  61. package/dist/server/map/types.js +4 -0
  62. package/dist/server/map/types.js.map +1 -0
  63. package/dist/server/pipeline/ast-cache.d.ts +12 -0
  64. package/dist/server/pipeline/ast-cache.d.ts.map +1 -0
  65. package/dist/server/pipeline/ast-cache.js +34 -0
  66. package/dist/server/pipeline/ast-cache.js.map +1 -0
  67. package/dist/server/pipeline/bm25-index.d.ts +25 -0
  68. package/dist/server/pipeline/bm25-index.d.ts.map +1 -0
  69. package/dist/server/pipeline/bm25-index.js +69 -0
  70. package/dist/server/pipeline/bm25-index.js.map +1 -0
  71. package/dist/server/pipeline/call-processor.d.ts +9 -0
  72. package/dist/server/pipeline/call-processor.d.ts.map +1 -0
  73. package/dist/server/pipeline/call-processor.js +192 -0
  74. package/dist/server/pipeline/call-processor.js.map +1 -0
  75. package/dist/server/pipeline/community-processor.d.ts +31 -0
  76. package/dist/server/pipeline/community-processor.d.ts.map +1 -0
  77. package/dist/server/pipeline/community-processor.js +175 -0
  78. package/dist/server/pipeline/community-processor.js.map +1 -0
  79. package/dist/server/pipeline/csv-generator.d.ts +14 -0
  80. package/dist/server/pipeline/csv-generator.d.ts.map +1 -0
  81. package/dist/server/pipeline/csv-generator.js +196 -0
  82. package/dist/server/pipeline/csv-generator.js.map +1 -0
  83. package/dist/server/pipeline/embedder.d.ts +19 -0
  84. package/dist/server/pipeline/embedder.d.ts.map +1 -0
  85. package/dist/server/pipeline/embedder.js +103 -0
  86. package/dist/server/pipeline/embedder.js.map +1 -0
  87. package/dist/server/pipeline/embedding-pipeline.d.ts +17 -0
  88. package/dist/server/pipeline/embedding-pipeline.d.ts.map +1 -0
  89. package/dist/server/pipeline/embedding-pipeline.js +169 -0
  90. package/dist/server/pipeline/embedding-pipeline.js.map +1 -0
  91. package/dist/server/pipeline/embedding-types.d.ts +53 -0
  92. package/dist/server/pipeline/embedding-types.d.ts.map +1 -0
  93. package/dist/server/pipeline/embedding-types.js +15 -0
  94. package/dist/server/pipeline/embedding-types.js.map +1 -0
  95. package/dist/server/pipeline/entry-point-scoring.d.ts +17 -0
  96. package/dist/server/pipeline/entry-point-scoring.d.ts.map +1 -0
  97. package/dist/server/pipeline/entry-point-scoring.js +166 -0
  98. package/dist/server/pipeline/entry-point-scoring.js.map +1 -0
  99. package/dist/server/pipeline/file-reader.d.ts +15 -0
  100. package/dist/server/pipeline/file-reader.d.ts.map +1 -0
  101. package/dist/server/pipeline/file-reader.js +95 -0
  102. package/dist/server/pipeline/file-reader.js.map +1 -0
  103. package/dist/server/pipeline/framework-detection.d.ts +26 -0
  104. package/dist/server/pipeline/framework-detection.d.ts.map +1 -0
  105. package/dist/server/pipeline/framework-detection.js +140 -0
  106. package/dist/server/pipeline/framework-detection.js.map +1 -0
  107. package/dist/server/pipeline/graph.d.ts +3 -0
  108. package/dist/server/pipeline/graph.d.ts.map +1 -0
  109. package/dist/server/pipeline/graph.js +31 -0
  110. package/dist/server/pipeline/graph.js.map +1 -0
  111. package/dist/server/pipeline/heritage-processor.d.ts +15 -0
  112. package/dist/server/pipeline/heritage-processor.d.ts.map +1 -0
  113. package/dist/server/pipeline/heritage-processor.js +115 -0
  114. package/dist/server/pipeline/heritage-processor.js.map +1 -0
  115. package/dist/server/pipeline/hybrid-search.d.ts +24 -0
  116. package/dist/server/pipeline/hybrid-search.d.ts.map +1 -0
  117. package/dist/server/pipeline/hybrid-search.js +57 -0
  118. package/dist/server/pipeline/hybrid-search.js.map +1 -0
  119. package/dist/server/pipeline/ignore-service.d.ts +2 -0
  120. package/dist/server/pipeline/ignore-service.d.ts.map +1 -0
  121. package/dist/server/pipeline/ignore-service.js +197 -0
  122. package/dist/server/pipeline/ignore-service.js.map +1 -0
  123. package/dist/server/pipeline/import-processor.d.ts +9 -0
  124. package/dist/server/pipeline/import-processor.d.ts.map +1 -0
  125. package/dist/server/pipeline/import-processor.js +142 -0
  126. package/dist/server/pipeline/import-processor.js.map +1 -0
  127. package/dist/server/pipeline/kuzu-adapter.d.ts +44 -0
  128. package/dist/server/pipeline/kuzu-adapter.d.ts.map +1 -0
  129. package/dist/server/pipeline/kuzu-adapter.js +254 -0
  130. package/dist/server/pipeline/kuzu-adapter.js.map +1 -0
  131. package/dist/server/pipeline/kuzu-schema.d.ts +47 -0
  132. package/dist/server/pipeline/kuzu-schema.d.ts.map +1 -0
  133. package/dist/server/pipeline/kuzu-schema.js +322 -0
  134. package/dist/server/pipeline/kuzu-schema.js.map +1 -0
  135. package/dist/server/pipeline/parser-loader.d.ts +5 -0
  136. package/dist/server/pipeline/parser-loader.d.ts.map +1 -0
  137. package/dist/server/pipeline/parser-loader.js +68 -0
  138. package/dist/server/pipeline/parser-loader.js.map +1 -0
  139. package/dist/server/pipeline/parsing-processor.d.ts +9 -0
  140. package/dist/server/pipeline/parsing-processor.d.ts.map +1 -0
  141. package/dist/server/pipeline/parsing-processor.js +194 -0
  142. package/dist/server/pipeline/parsing-processor.js.map +1 -0
  143. package/dist/server/pipeline/pipeline-service.d.ts +84 -0
  144. package/dist/server/pipeline/pipeline-service.d.ts.map +1 -0
  145. package/dist/server/pipeline/pipeline-service.js +349 -0
  146. package/dist/server/pipeline/pipeline-service.js.map +1 -0
  147. package/dist/server/pipeline/pipeline.d.ts +6 -0
  148. package/dist/server/pipeline/pipeline.d.ts.map +1 -0
  149. package/dist/server/pipeline/pipeline.js +219 -0
  150. package/dist/server/pipeline/pipeline.js.map +1 -0
  151. package/dist/server/pipeline/process-processor.d.ts +45 -0
  152. package/dist/server/pipeline/process-processor.d.ts.map +1 -0
  153. package/dist/server/pipeline/process-processor.js +201 -0
  154. package/dist/server/pipeline/process-processor.js.map +1 -0
  155. package/dist/server/pipeline/structure-processor.d.ts +3 -0
  156. package/dist/server/pipeline/structure-processor.d.ts.map +1 -0
  157. package/dist/server/pipeline/structure-processor.js +37 -0
  158. package/dist/server/pipeline/structure-processor.js.map +1 -0
  159. package/dist/server/pipeline/symbol-table.d.ts +17 -0
  160. package/dist/server/pipeline/symbol-table.d.ts.map +1 -0
  161. package/dist/server/pipeline/symbol-table.js +33 -0
  162. package/dist/server/pipeline/symbol-table.js.map +1 -0
  163. package/dist/server/pipeline/text-generator.d.ts +9 -0
  164. package/dist/server/pipeline/text-generator.d.ts.map +1 -0
  165. package/dist/server/pipeline/text-generator.js +60 -0
  166. package/dist/server/pipeline/text-generator.js.map +1 -0
  167. package/dist/server/pipeline/tree-sitter-queries.d.ts +12 -0
  168. package/dist/server/pipeline/tree-sitter-queries.d.ts.map +1 -0
  169. package/dist/server/pipeline/tree-sitter-queries.js +320 -0
  170. package/dist/server/pipeline/tree-sitter-queries.js.map +1 -0
  171. package/dist/server/pipeline/types.d.ts +68 -0
  172. package/dist/server/pipeline/types.d.ts.map +1 -0
  173. package/dist/server/pipeline/types.js +3 -0
  174. package/dist/server/pipeline/types.js.map +1 -0
  175. package/dist/server/pipeline/utils.d.ts +14 -0
  176. package/dist/server/pipeline/utils.d.ts.map +1 -0
  177. package/dist/server/pipeline/utils.js +42 -0
  178. package/dist/server/pipeline/utils.js.map +1 -0
  179. package/dist/server/plugin.d.ts +55 -0
  180. package/dist/server/plugin.d.ts.map +1 -0
  181. package/dist/server/plugin.js +120 -0
  182. package/dist/server/plugin.js.map +1 -0
  183. package/dist/server/routes/acp.d.ts +3 -0
  184. package/dist/server/routes/acp.d.ts.map +1 -0
  185. package/dist/server/routes/acp.js +225 -0
  186. package/dist/server/routes/acp.js.map +1 -0
  187. package/dist/server/routes/agents.d.ts +3 -0
  188. package/dist/server/routes/agents.d.ts.map +1 -0
  189. package/dist/server/routes/agents.js +288 -0
  190. package/dist/server/routes/agents.js.map +1 -0
  191. package/dist/server/routes/events.d.ts +3 -0
  192. package/dist/server/routes/events.d.ts.map +1 -0
  193. package/dist/server/routes/events.js +103 -0
  194. package/dist/server/routes/events.js.map +1 -0
  195. package/dist/server/routes/federation.d.ts +3 -0
  196. package/dist/server/routes/federation.d.ts.map +1 -0
  197. package/dist/server/routes/federation.js +188 -0
  198. package/dist/server/routes/federation.js.map +1 -0
  199. package/dist/server/routes/graph.d.ts +3 -0
  200. package/dist/server/routes/graph.d.ts.map +1 -0
  201. package/dist/server/routes/graph.js +107 -0
  202. package/dist/server/routes/graph.js.map +1 -0
  203. package/dist/server/routes/index.d.ts +3 -0
  204. package/dist/server/routes/index.d.ts.map +1 -0
  205. package/dist/server/routes/index.js +38 -0
  206. package/dist/server/routes/index.js.map +1 -0
  207. package/dist/server/routes/map-servers.d.ts +3 -0
  208. package/dist/server/routes/map-servers.d.ts.map +1 -0
  209. package/dist/server/routes/map-servers.js +154 -0
  210. package/dist/server/routes/map-servers.js.map +1 -0
  211. package/dist/server/routes/messages.d.ts +3 -0
  212. package/dist/server/routes/messages.d.ts.map +1 -0
  213. package/dist/server/routes/messages.js +92 -0
  214. package/dist/server/routes/messages.js.map +1 -0
  215. package/dist/server/routes/pipeline.d.ts +3 -0
  216. package/dist/server/routes/pipeline.d.ts.map +1 -0
  217. package/dist/server/routes/pipeline.js +200 -0
  218. package/dist/server/routes/pipeline.js.map +1 -0
  219. package/dist/server/routes/scopes.d.ts +3 -0
  220. package/dist/server/routes/scopes.d.ts.map +1 -0
  221. package/dist/server/routes/scopes.js +130 -0
  222. package/dist/server/routes/scopes.js.map +1 -0
  223. package/dist/server/routes/search.d.ts +3 -0
  224. package/dist/server/routes/search.d.ts.map +1 -0
  225. package/dist/server/routes/search.js +263 -0
  226. package/dist/server/routes/search.js.map +1 -0
  227. package/dist/server/routes/subprocess.d.ts +3 -0
  228. package/dist/server/routes/subprocess.d.ts.map +1 -0
  229. package/dist/server/routes/subprocess.js +91 -0
  230. package/dist/server/routes/subprocess.js.map +1 -0
  231. package/dist/server/routes/tasks.d.ts +3 -0
  232. package/dist/server/routes/tasks.d.ts.map +1 -0
  233. package/dist/server/routes/tasks.js +182 -0
  234. package/dist/server/routes/tasks.js.map +1 -0
  235. package/dist/server/routes/terminal.d.ts +3 -0
  236. package/dist/server/routes/terminal.d.ts.map +1 -0
  237. package/dist/server/routes/terminal.js +66 -0
  238. package/dist/server/routes/terminal.js.map +1 -0
  239. package/dist/server/services/acp-service.d.ts +14 -0
  240. package/dist/server/services/acp-service.d.ts.map +1 -0
  241. package/dist/server/services/acp-service.js +92 -0
  242. package/dist/server/services/acp-service.js.map +1 -0
  243. package/dist/server/services/agent-service.d.ts +21 -0
  244. package/dist/server/services/agent-service.d.ts.map +1 -0
  245. package/dist/server/services/agent-service.js +162 -0
  246. package/dist/server/services/agent-service.js.map +1 -0
  247. package/dist/server/services/embedding-service.d.ts +31 -0
  248. package/dist/server/services/embedding-service.d.ts.map +1 -0
  249. package/dist/server/services/embedding-service.js +122 -0
  250. package/dist/server/services/embedding-service.js.map +1 -0
  251. package/dist/server/services/event-service.d.ts +15 -0
  252. package/dist/server/services/event-service.d.ts.map +1 -0
  253. package/dist/server/services/event-service.js +110 -0
  254. package/dist/server/services/event-service.js.map +1 -0
  255. package/dist/server/services/federation-service.d.ts +66 -0
  256. package/dist/server/services/federation-service.d.ts.map +1 -0
  257. package/dist/server/services/federation-service.js +354 -0
  258. package/dist/server/services/federation-service.js.map +1 -0
  259. package/dist/server/services/index.d.ts +11 -0
  260. package/dist/server/services/index.d.ts.map +1 -0
  261. package/dist/server/services/index.js +11 -0
  262. package/dist/server/services/index.js.map +1 -0
  263. package/dist/server/services/map-server-service.d.ts +13 -0
  264. package/dist/server/services/map-server-service.d.ts.map +1 -0
  265. package/dist/server/services/map-server-service.js +99 -0
  266. package/dist/server/services/map-server-service.js.map +1 -0
  267. package/dist/server/services/message-service.d.ts +21 -0
  268. package/dist/server/services/message-service.d.ts.map +1 -0
  269. package/dist/server/services/message-service.js +131 -0
  270. package/dist/server/services/message-service.js.map +1 -0
  271. package/dist/server/services/position-service.d.ts +38 -0
  272. package/dist/server/services/position-service.d.ts.map +1 -0
  273. package/dist/server/services/position-service.js +102 -0
  274. package/dist/server/services/position-service.js.map +1 -0
  275. package/dist/server/services/scope-service.d.ts +13 -0
  276. package/dist/server/services/scope-service.d.ts.map +1 -0
  277. package/dist/server/services/scope-service.js +84 -0
  278. package/dist/server/services/scope-service.js.map +1 -0
  279. package/dist/server/services/task-service.d.ts +17 -0
  280. package/dist/server/services/task-service.d.ts.map +1 -0
  281. package/dist/server/services/task-service.js +153 -0
  282. package/dist/server/services/task-service.js.map +1 -0
  283. package/dist/server/standalone.d.ts +10 -0
  284. package/dist/server/standalone.d.ts.map +1 -0
  285. package/dist/server/standalone.js +61 -0
  286. package/dist/server/standalone.js.map +1 -0
  287. package/dist/server/subprocess/manager.d.ts +93 -0
  288. package/dist/server/subprocess/manager.d.ts.map +1 -0
  289. package/dist/server/subprocess/manager.js +294 -0
  290. package/dist/server/subprocess/manager.js.map +1 -0
  291. package/dist/server/terminal/pty-manager.d.ts +68 -0
  292. package/dist/server/terminal/pty-manager.d.ts.map +1 -0
  293. package/dist/server/terminal/pty-manager.js +159 -0
  294. package/dist/server/terminal/pty-manager.js.map +1 -0
  295. package/dist/server/terminal/terminal-ws.d.ts +30 -0
  296. package/dist/server/terminal/terminal-ws.d.ts.map +1 -0
  297. package/dist/server/terminal/terminal-ws.js +174 -0
  298. package/dist/server/terminal/terminal-ws.js.map +1 -0
  299. package/dist/server/types/index.d.ts +646 -0
  300. package/dist/server/types/index.d.ts.map +1 -0
  301. package/dist/server/types/index.js +219 -0
  302. package/dist/server/types/index.js.map +1 -0
  303. package/dist/server/websocket/hub.d.ts +52 -0
  304. package/dist/server/websocket/hub.d.ts.map +1 -0
  305. package/dist/server/websocket/hub.js +284 -0
  306. package/dist/server/websocket/hub.js.map +1 -0
  307. package/dist/ui/assets/__vite-browser-external-2447137e-BIHI7g3E.js +1 -0
  308. package/dist/ui/assets/architectureDiagram-RIHJSL5F-BLjzzama.js +36 -0
  309. package/dist/ui/assets/blockDiagram-WDLGXV4W-CfjAYIxi.js +122 -0
  310. package/dist/ui/assets/c4Diagram-7AWUDI2P-sT2XKuUP.js +10 -0
  311. package/dist/ui/assets/chunk-3TDMV3MO-Bxnq8mRd.js +1 -0
  312. package/dist/ui/assets/chunk-7RZVMHOQ-BtHAcADN.js +338 -0
  313. package/dist/ui/assets/chunk-AEOMTBSW-DNRxgAdV.js +1 -0
  314. package/dist/ui/assets/chunk-BGEGVY25-j9SOAo9R.js +220 -0
  315. package/dist/ui/assets/chunk-H3VCZNTA-B8-y1Qzl.js +13 -0
  316. package/dist/ui/assets/chunk-KFR3WFC5-BQmtaZNa.js +165 -0
  317. package/dist/ui/assets/chunk-KSICW3F5-CYn_lo1Z.js +15 -0
  318. package/dist/ui/assets/chunk-LWM4QWG6-BA5Oh46p.js +1 -0
  319. package/dist/ui/assets/chunk-M3I2T2XC-qqbmEBo8.js +1 -0
  320. package/dist/ui/assets/chunk-TU3PZOEN-BjdRCFqV.js +1 -0
  321. package/dist/ui/assets/chunk-VGHHFSQR-F2Gbfk2-.js +1 -0
  322. package/dist/ui/assets/chunk-WNUA3B3J-VJOuaUzE.js +1 -0
  323. package/dist/ui/assets/classDiagram-W3T7ADTY-DRkYdVE3.js +1 -0
  324. package/dist/ui/assets/classDiagram-v2-NUY7TN2I-DRkYdVE3.js +1 -0
  325. package/dist/ui/assets/cose-bilkent-DQETAGN7-Clw7xpXe.js +1 -0
  326. package/dist/ui/assets/dagre-PD6EB5X7-tYZpOLd9.js +4 -0
  327. package/dist/ui/assets/diagram-H6XQBSGY-DZCBn0TZ.js +24 -0
  328. package/dist/ui/assets/diagram-LDM27ML3-CzZzZx6J.js +43 -0
  329. package/dist/ui/assets/diagram-YNAIMP7R-DNdhponr.js +24 -0
  330. package/dist/ui/assets/erDiagram-JKLMQEMA-BMOTNoGb.js +60 -0
  331. package/dist/ui/assets/flowDiagram-TPJNMKY5-C-OssWJF.js +162 -0
  332. package/dist/ui/assets/ganttDiagram-TVT35BNJ-CwgLhyUZ.js +267 -0
  333. package/dist/ui/assets/gitGraphDiagram-ZZNRLE66-DpGt8N98.js +65 -0
  334. package/dist/ui/assets/index-BFtmBU10.css +1 -0
  335. package/dist/ui/assets/index-DQVKoPTL.js +2056 -0
  336. package/dist/ui/assets/infoDiagram-WBDZ6S3U-CFtYwwmB.js +2 -0
  337. package/dist/ui/assets/journeyDiagram-FDC3KNBO--b9Jhj9Q.js +139 -0
  338. package/dist/ui/assets/kanban-definition-YQQHB3YZ-BZ_Ch9Cc.js +89 -0
  339. package/dist/ui/assets/katex-4QAC45MX-Dff7K1ZL.js +261 -0
  340. package/dist/ui/assets/mindmap-definition-SIOIWSPX-DBzIm3kL.js +68 -0
  341. package/dist/ui/assets/pieDiagram-XCFX7IE7-BXzisUE2.js +30 -0
  342. package/dist/ui/assets/quadrantDiagram-ZSOMFDZY-Bu4cQN4z.js +7 -0
  343. package/dist/ui/assets/requirementDiagram-RUCZPMKB-0TiifMFj.js +64 -0
  344. package/dist/ui/assets/sankeyDiagram-VQJ3IPPN-BIkDjTLo.js +10 -0
  345. package/dist/ui/assets/sequenceDiagram-JT7H6RCS-BUTj5ooL.js +145 -0
  346. package/dist/ui/assets/stateDiagram-MULPRXYB-Bi5lOV5p.js +1 -0
  347. package/dist/ui/assets/stateDiagram-v2-LMKPZ2WR-DaVjZN8W.js +1 -0
  348. package/dist/ui/assets/timeline-definition-O36V2GCZ-CupfAi-e.js +61 -0
  349. package/dist/ui/assets/treemap-GDKQZRPO-TD7FEVA6-KiwGKXLZ.js +161 -0
  350. package/dist/ui/assets/xychartDiagram-HB2IZN64-CTaMW-Ct.js +7 -0
  351. package/dist/ui/assets/zip-CCSlD_xh.js +12 -0
  352. package/dist/ui/index.html +16 -0
  353. package/dist/ui/wasm/c/tree-sitter-c.wasm +0 -0
  354. package/dist/ui/wasm/cpp/tree-sitter-cpp.wasm +0 -0
  355. package/dist/ui/wasm/csharp/tree-sitter-csharp.wasm +0 -0
  356. package/dist/ui/wasm/go/tree-sitter-go.wasm +0 -0
  357. package/dist/ui/wasm/java/tree-sitter-java.wasm +0 -0
  358. package/dist/ui/wasm/javascript/tree-sitter-javascript.wasm +0 -0
  359. package/dist/ui/wasm/kuzu-wasm.wasm +0 -0
  360. package/dist/ui/wasm/python/tree-sitter-python.wasm +0 -0
  361. package/dist/ui/wasm/rust/tree-sitter-rust.wasm +0 -0
  362. package/dist/ui/wasm/tree-sitter.wasm +0 -0
  363. package/dist/ui/wasm/typescript/tree-sitter-tsx.wasm +0 -0
  364. package/dist/ui/wasm/typescript/tree-sitter-typescript.wasm +0 -0
  365. package/docs/ARCHITECTURE.md +818 -0
  366. package/docs/CYTOSCAPE_INTEGRATION_SPEC.md +2458 -0
  367. package/index.html +15 -0
  368. package/package.json +163 -9
  369. package/public/wasm/c/tree-sitter-c.wasm +0 -0
  370. package/public/wasm/cpp/tree-sitter-cpp.wasm +0 -0
  371. package/public/wasm/csharp/tree-sitter-csharp.wasm +0 -0
  372. package/public/wasm/go/tree-sitter-go.wasm +0 -0
  373. package/public/wasm/java/tree-sitter-java.wasm +0 -0
  374. package/public/wasm/javascript/tree-sitter-javascript.wasm +0 -0
  375. package/public/wasm/kuzu-wasm.wasm +0 -0
  376. package/public/wasm/python/tree-sitter-python.wasm +0 -0
  377. package/public/wasm/rust/tree-sitter-rust.wasm +0 -0
  378. package/public/wasm/tree-sitter.wasm +0 -0
  379. package/public/wasm/typescript/tree-sitter-tsx.wasm +0 -0
  380. package/public/wasm/typescript/tree-sitter-typescript.wasm +0 -0
  381. package/server/.env.example +14 -0
  382. package/src/server/app.ts +150 -0
  383. package/src/server/config.ts +23 -0
  384. package/src/server/context.ts +171 -0
  385. package/src/server/db/index.ts +65 -0
  386. package/src/server/db/provider.ts +90 -0
  387. package/src/server/db/providers/sqlite.ts +1164 -0
  388. package/src/server/db/repositories.ts +222 -0
  389. package/src/server/db/schema.sql +135 -0
  390. package/src/server/db/seed.ts +291 -0
  391. package/src/server/fastify.d.ts +7 -0
  392. package/src/server/index.ts +30 -0
  393. package/src/server/map/acp-manager.ts +518 -0
  394. package/src/server/map/client-manager.ts +421 -0
  395. package/src/server/map/event-handler.ts +443 -0
  396. package/src/server/map/index.ts +5 -0
  397. package/src/server/map/types.ts +78 -0
  398. package/src/server/pipeline/ast-cache.ts +46 -0
  399. package/src/server/pipeline/bm25-index.ts +86 -0
  400. package/src/server/pipeline/call-processor.ts +241 -0
  401. package/src/server/pipeline/community-processor.ts +260 -0
  402. package/src/server/pipeline/csv-generator.ts +225 -0
  403. package/src/server/pipeline/embedder.ts +120 -0
  404. package/src/server/pipeline/embedding-pipeline.ts +216 -0
  405. package/src/server/pipeline/embedding-types.ts +68 -0
  406. package/src/server/pipeline/entry-point-scoring.ts +197 -0
  407. package/src/server/pipeline/file-reader.ts +111 -0
  408. package/src/server/pipeline/framework-detection.ts +180 -0
  409. package/src/server/pipeline/graph.ts +35 -0
  410. package/src/server/pipeline/heritage-processor.ts +145 -0
  411. package/src/server/pipeline/hybrid-search.ts +83 -0
  412. package/src/server/pipeline/ignore-service.ts +222 -0
  413. package/src/server/pipeline/import-processor.ts +190 -0
  414. package/src/server/pipeline/kuzu-adapter.ts +282 -0
  415. package/src/server/pipeline/kuzu-schema.ts +348 -0
  416. package/src/server/pipeline/kuzu.d.ts +21 -0
  417. package/src/server/pipeline/parser-loader.ts +77 -0
  418. package/src/server/pipeline/parsing-processor.ts +212 -0
  419. package/src/server/pipeline/pipeline-service.ts +437 -0
  420. package/src/server/pipeline/pipeline.ts +252 -0
  421. package/src/server/pipeline/process-processor.ts +315 -0
  422. package/src/server/pipeline/structure-processor.ts +46 -0
  423. package/src/server/pipeline/symbol-table.ts +52 -0
  424. package/src/server/pipeline/text-generator.ts +73 -0
  425. package/src/server/pipeline/tree-sitter-queries.ts +330 -0
  426. package/src/server/pipeline/types.ts +107 -0
  427. package/src/server/pipeline/utils.ts +31 -0
  428. package/src/server/plugin.ts +180 -0
  429. package/src/server/routes/acp.ts +334 -0
  430. package/src/server/routes/agents.ts +343 -0
  431. package/src/server/routes/events.ts +126 -0
  432. package/src/server/routes/federation.ts +237 -0
  433. package/src/server/routes/graph.ts +126 -0
  434. package/src/server/routes/index.ts +40 -0
  435. package/src/server/routes/map-servers.ts +182 -0
  436. package/src/server/routes/messages.ts +106 -0
  437. package/src/server/routes/pipeline.ts +229 -0
  438. package/src/server/routes/scopes.ts +163 -0
  439. package/src/server/routes/search.ts +289 -0
  440. package/src/server/routes/subprocess.ts +126 -0
  441. package/src/server/routes/tasks.ts +210 -0
  442. package/src/server/routes/terminal.ts +87 -0
  443. package/src/server/services/acp-service.ts +129 -0
  444. package/src/server/services/agent-service.ts +229 -0
  445. package/src/server/services/embedding-service.ts +121 -0
  446. package/src/server/services/event-service.ts +149 -0
  447. package/src/server/services/federation-service.ts +388 -0
  448. package/src/server/services/index.ts +10 -0
  449. package/src/server/services/map-server-service.ts +132 -0
  450. package/src/server/services/message-service.ts +176 -0
  451. package/src/server/services/position-service.ts +118 -0
  452. package/src/server/services/scope-service.ts +128 -0
  453. package/src/server/services/task-service.ts +203 -0
  454. package/src/server/standalone.ts +70 -0
  455. package/src/server/subprocess/manager.ts +409 -0
  456. package/src/server/terminal/node-pty.d.ts +32 -0
  457. package/src/server/terminal/pty-manager.ts +228 -0
  458. package/src/server/terminal/terminal-ws.ts +213 -0
  459. package/src/server/tests/api.test.ts +351 -0
  460. package/src/server/tests/pipeline-entry-point-scoring.test.ts +130 -0
  461. package/src/server/tests/pipeline-file-reader.test.ts +129 -0
  462. package/src/server/tests/pipeline-framework-detection.test.ts +163 -0
  463. package/src/server/tests/pipeline-graph.test.ts +87 -0
  464. package/src/server/tests/pipeline-ignore-service.test.ts +152 -0
  465. package/src/server/tests/pipeline-routes.test.ts +312 -0
  466. package/src/server/tests/pipeline-service.test.ts +80 -0
  467. package/src/server/tests/pipeline-structure.test.ts +94 -0
  468. package/src/server/tests/pipeline-symbol-table.test.ts +80 -0
  469. package/src/server/tests/pipeline-utils.test.ts +89 -0
  470. package/src/server/tests/pty-manager.test.ts +229 -0
  471. package/src/server/tests/terminal-api.test.ts +247 -0
  472. package/src/server/tests/terminal-ws.test.ts +302 -0
  473. package/src/server/types/index.ts +296 -0
  474. package/src/server/websocket/hub.ts +356 -0
  475. package/src/ui/App.tsx +15 -0
  476. package/src/ui/AppContent.tsx +298 -0
  477. package/src/ui/SwarmCraftApp.tsx +29 -0
  478. package/src/ui/components/ActivityFeed.tsx +204 -0
  479. package/src/ui/components/AttentionPanel.tsx +150 -0
  480. package/src/ui/components/CodeReferencesPanel.tsx +459 -0
  481. package/src/ui/components/ConnectionBanner.tsx +50 -0
  482. package/src/ui/components/DropZone.tsx +542 -0
  483. package/src/ui/components/EmbeddingStatus.tsx +114 -0
  484. package/src/ui/components/FileTreePanel.tsx +528 -0
  485. package/src/ui/components/GraphCanvas.tsx +436 -0
  486. package/src/ui/components/Header.tsx +440 -0
  487. package/src/ui/components/LoadingOverlay.tsx +66 -0
  488. package/src/ui/components/MCPToggle.tsx +300 -0
  489. package/src/ui/components/MarkdownRenderer.tsx +198 -0
  490. package/src/ui/components/MermaidDiagram.tsx +157 -0
  491. package/src/ui/components/ProcessFlowModal.tsx +301 -0
  492. package/src/ui/components/ProcessesPanel.tsx +509 -0
  493. package/src/ui/components/QueryFAB.tsx +405 -0
  494. package/src/ui/components/RightPanel.tsx +126 -0
  495. package/src/ui/components/StatusBar.tsx +83 -0
  496. package/src/ui/components/UnifiedGraphCanvas.tsx +168 -0
  497. package/src/ui/components/acp/ACPConversationPanel.tsx +395 -0
  498. package/src/ui/components/acp/ACPInjectInput.tsx +281 -0
  499. package/src/ui/components/acp/index.ts +2 -0
  500. package/src/ui/components/agents/AgentControlPanel.tsx +382 -0
  501. package/src/ui/components/agents/AgentDetailsModal.tsx +551 -0
  502. package/src/ui/components/agents/AgentHierarchyView.tsx +307 -0
  503. package/src/ui/components/agents/AgentListPanel.tsx +343 -0
  504. package/src/ui/components/agents/index.ts +4 -0
  505. package/src/ui/components/common/VirtualList.tsx +269 -0
  506. package/src/ui/components/common/index.ts +1 -0
  507. package/src/ui/components/cytoscape/CytoscapeCanvas.tsx +718 -0
  508. package/src/ui/components/cytoscape/CytoscapeProvider.tsx +291 -0
  509. package/src/ui/components/cytoscape/Minimap.tsx +300 -0
  510. package/src/ui/components/cytoscape/NavigationControls.tsx +262 -0
  511. package/src/ui/components/cytoscape/ViewSwitcher.tsx +84 -0
  512. package/src/ui/components/cytoscape/__tests__/helpers/cytoscapeMock.ts +611 -0
  513. package/src/ui/components/cytoscape/adapters/AgentAdapter.ts +271 -0
  514. package/src/ui/components/cytoscape/adapters/GraphologyAdapter.ts +328 -0
  515. package/src/ui/components/cytoscape/adapters/__tests__/AgentAdapter.test.ts +427 -0
  516. package/src/ui/components/cytoscape/adapters/__tests__/GraphologyAdapter.test.ts +463 -0
  517. package/src/ui/components/cytoscape/adapters/index.ts +6 -0
  518. package/src/ui/components/cytoscape/hooks/index.ts +6 -0
  519. package/src/ui/components/cytoscape/hooks/useAgentOverlay.ts +323 -0
  520. package/src/ui/components/cytoscape/hooks/useCytoscapeEvents.ts +283 -0
  521. package/src/ui/components/cytoscape/index.ts +34 -0
  522. package/src/ui/components/cytoscape/services/AnimationService.ts +228 -0
  523. package/src/ui/components/cytoscape/services/ContextMenuService.ts +269 -0
  524. package/src/ui/components/cytoscape/services/HistoryService.ts +691 -0
  525. package/src/ui/components/cytoscape/services/HoverMenuService.ts +408 -0
  526. package/src/ui/components/cytoscape/services/NavigationService.ts +468 -0
  527. package/src/ui/components/cytoscape/services/PerformanceService.ts +496 -0
  528. package/src/ui/components/cytoscape/services/SelectionService.ts +404 -0
  529. package/src/ui/components/cytoscape/services/ThemeService.ts +675 -0
  530. package/src/ui/components/cytoscape/services/__tests__/HistoryService.test.ts +451 -0
  531. package/src/ui/components/cytoscape/services/__tests__/NavigationService.test.ts +317 -0
  532. package/src/ui/components/cytoscape/services/__tests__/PerformanceService.test.ts +310 -0
  533. package/src/ui/components/cytoscape/services/__tests__/SelectionService.test.ts +284 -0
  534. package/src/ui/components/cytoscape/services/__tests__/ThemeService.test.ts +432 -0
  535. package/src/ui/components/cytoscape/services/index.ts +18 -0
  536. package/src/ui/components/cytoscape/styles/index.ts +6 -0
  537. package/src/ui/components/cytoscape/styles/layoutConfig.ts +157 -0
  538. package/src/ui/components/cytoscape/styles/stylesheet.ts +643 -0
  539. package/src/ui/components/cytoscape/types.ts +178 -0
  540. package/src/ui/components/dashboard/MonitoringDashboard.tsx +327 -0
  541. package/src/ui/components/dashboard/index.ts +1 -0
  542. package/src/ui/components/events/EventStreamPanel.tsx +362 -0
  543. package/src/ui/components/events/index.ts +1 -0
  544. package/src/ui/components/map-servers/FederationGraph.tsx +291 -0
  545. package/src/ui/components/map-servers/ServerConnectionPanel.tsx +753 -0
  546. package/src/ui/components/map-servers/index.ts +2 -0
  547. package/src/ui/components/messages/MessageEdgeLayer.tsx +329 -0
  548. package/src/ui/components/messages/MessageInspector.tsx +275 -0
  549. package/src/ui/components/messages/MessageStreamPanel.tsx +344 -0
  550. package/src/ui/components/messages/index.ts +3 -0
  551. package/src/ui/components/overlay/AgentOverlayLayer.tsx +200 -0
  552. package/src/ui/components/overlay/HeatmapOverlay.tsx +238 -0
  553. package/src/ui/components/overlay/index.ts +2 -0
  554. package/src/ui/components/swarmcraft/SwarmCraftPanel.tsx +277 -0
  555. package/src/ui/components/swarmcraft/index.ts +1 -0
  556. package/src/ui/components/tasks/TaskBoardPanel.tsx +376 -0
  557. package/src/ui/components/tasks/TaskDetailView.tsx +307 -0
  558. package/src/ui/components/tasks/index.ts +2 -0
  559. package/src/ui/components/terminal/TerminalPanel.tsx +359 -0
  560. package/src/ui/components/terminal/__tests__/TerminalPanel.test.tsx +380 -0
  561. package/src/ui/components/timeline/ActivityTimeline.tsx +299 -0
  562. package/src/ui/components/timeline/TimelineControls.tsx +304 -0
  563. package/src/ui/components/timeline/index.ts +2 -0
  564. package/src/ui/config/ignore-service.ts +239 -0
  565. package/src/ui/config/supported-languages.ts +14 -0
  566. package/src/ui/contexts/ServiceContext.tsx +57 -0
  567. package/src/ui/contexts/SwarmCraftContext.tsx +75 -0
  568. package/src/ui/core/graph/graph.ts +41 -0
  569. package/src/ui/core/graph/types.ts +86 -0
  570. package/src/ui/core/mcp/mcp-client.ts +341 -0
  571. package/src/ui/embed.css +292 -0
  572. package/src/ui/embed.ts +18 -0
  573. package/src/ui/hooks/useACPStreams.ts +110 -0
  574. package/src/ui/hooks/useAgentPositions.ts +91 -0
  575. package/src/ui/hooks/useAppState.tsx +582 -0
  576. package/src/ui/hooks/useAttention.ts +213 -0
  577. package/src/ui/hooks/useSigma.ts +639 -0
  578. package/src/ui/hooks/useSwarmCraft.ts +523 -0
  579. package/src/ui/index.css +365 -0
  580. package/src/ui/lib/constants.ts +123 -0
  581. package/src/ui/lib/graph-adapter.ts +387 -0
  582. package/src/ui/lib/mermaid-generator.ts +158 -0
  583. package/src/ui/lib/utils.ts +3 -0
  584. package/src/ui/main.tsx +14 -0
  585. package/src/ui/repomix-output.md +13681 -0
  586. package/src/ui/services/__tests__/acp-service.test.ts +550 -0
  587. package/src/ui/services/acp-service.ts +624 -0
  588. package/src/ui/services/agent-control.ts +202 -0
  589. package/src/ui/services/cache-service.ts +289 -0
  590. package/src/ui/services/factory.ts +28 -0
  591. package/src/ui/services/filter-presets.ts +305 -0
  592. package/src/ui/services/git-clone.ts +219 -0
  593. package/src/ui/services/layout-persistence.ts +380 -0
  594. package/src/ui/services/swarmcraft-api.ts +627 -0
  595. package/src/ui/services/swarmcraft-ws.ts +496 -0
  596. package/src/ui/services/zip.ts +77 -0
  597. package/src/ui/stories/AgentListPanel.stories.tsx +223 -0
  598. package/src/ui/stories/Configure.mdx +364 -0
  599. package/src/ui/stories/CytoscapeCanvas.stories.tsx +391 -0
  600. package/src/ui/stories/Introduction.mdx +72 -0
  601. package/src/ui/stories/Minimap.stories.tsx +180 -0
  602. package/src/ui/stories/NavigationControls.stories.tsx +196 -0
  603. package/src/ui/stories/ViewSwitcher.stories.tsx +89 -0
  604. package/src/ui/stories/assets/accessibility.png +0 -0
  605. package/src/ui/stories/assets/accessibility.svg +1 -0
  606. package/src/ui/stories/assets/addon-library.png +0 -0
  607. package/src/ui/stories/assets/assets.png +0 -0
  608. package/src/ui/stories/assets/avif-test-image.avif +0 -0
  609. package/src/ui/stories/assets/context.png +0 -0
  610. package/src/ui/stories/assets/discord.svg +1 -0
  611. package/src/ui/stories/assets/docs.png +0 -0
  612. package/src/ui/stories/assets/figma-plugin.png +0 -0
  613. package/src/ui/stories/assets/github.svg +1 -0
  614. package/src/ui/stories/assets/share.png +0 -0
  615. package/src/ui/stories/assets/styling.png +0 -0
  616. package/src/ui/stories/assets/testing.png +0 -0
  617. package/src/ui/stories/assets/theming.png +0 -0
  618. package/src/ui/stories/assets/tutorials.svg +1 -0
  619. package/src/ui/stories/assets/youtube.svg +1 -0
  620. package/src/ui/stories/button.css +30 -0
  621. package/src/ui/stories/header.css +32 -0
  622. package/src/ui/stories/page.css +68 -0
  623. package/src/ui/test/setup.ts +41 -0
  624. package/src/ui/types/acp.ts +123 -0
  625. package/src/ui/types/attention.ts +39 -0
  626. package/src/ui/types/cytoscape-extensions.d.ts +82 -0
  627. package/src/ui/types/map.ts +314 -0
  628. package/src/ui/types/pipeline.ts +13 -0
  629. package/src/ui/utils/position-calculator.ts +186 -0
  630. package/src/ui/vite-env.d.ts +1 -0
  631. package/tsconfig.json +8 -0
  632. package/tsconfig.node.json +13 -0
  633. package/tsconfig.server.json +20 -0
  634. package/tsconfig.ui.json +32 -0
  635. package/vercel.json +17 -0
  636. package/vite.config.ts +36 -0
  637. package/vitest.config.ts +21 -0
  638. package/vitest.server.config.ts +10 -0
  639. package/index.js +0 -2
package/.gitmodules ADDED
@@ -0,0 +1,6 @@
1
+ [submodule "vendor/GitNexus"]
2
+ path = vendor/GitNexus
3
+ url = https://github.com/abhigyanpatwari/GitNexus.git
4
+ [submodule "vendor/multi-agent-protocol"]
5
+ path = vendor/multi-agent-protocol
6
+ url = https://github.com/multi-agent-protocol/multi-agent-protocol.git
@@ -0,0 +1,15 @@
1
+ import type { StorybookConfig } from '@storybook/react-vite';
2
+
3
+ const config: StorybookConfig = {
4
+ stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
5
+ addons: [
6
+ '@storybook/addon-essentials',
7
+ '@storybook/addon-interactions',
8
+ ],
9
+ framework: {
10
+ name: '@storybook/react-vite',
11
+ options: {},
12
+ },
13
+ };
14
+
15
+ export default config;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import type { Preview } from '@storybook/react-vite';
3
+ import '../src/index.css';
4
+
5
+ const preview: Preview = {
6
+ parameters: {
7
+ controls: {
8
+ matchers: {
9
+ color: /(background|color)$/i,
10
+ date: /Date$/i,
11
+ },
12
+ },
13
+ backgrounds: {
14
+ default: 'dark',
15
+ values: [
16
+ { name: 'dark', value: '#0a0a0f' },
17
+ { name: 'light', value: '#ffffff' },
18
+ ],
19
+ },
20
+ },
21
+ decorators: [
22
+ (Story) => (
23
+ <div className="bg-background text-foreground min-h-screen p-4">
24
+ <Story />
25
+ </div>
26
+ ),
27
+ ],
28
+ };
29
+
30
+ export default preview;
package/CLAUDE.md ADDED
@@ -0,0 +1,222 @@
1
+ # CLAUDE.md - Development Guidelines for AI Agents
2
+
3
+ This document provides context and guidelines for AI agents working on the SwarmCraft codebase.
4
+
5
+ ## Project Overview
6
+
7
+ SwarmCraft is a full-stack MAP (Multi-Agent Protocol) client for monitoring and steering coding agents on a codebase graph. It combines code graph visualization (Cytoscape/Sigma) with real-time agent monitoring via the MAP protocol and interactive ACP (Agent Client Protocol) conversations.
8
+
9
+ ## Quick Start Commands
10
+
11
+ ```bash
12
+ # Frontend
13
+ npm install # Install dependencies
14
+ npm run dev # Start development server (Vite)
15
+ npm run build # TypeScript check + production build
16
+ npm test # Run tests in watch mode
17
+ npm run test:run # Run tests once
18
+
19
+ # Backend
20
+ cd server && npm install && npm run dev # Start backend server
21
+ cd server && npm run build # Build backend
22
+ ```
23
+
24
+ ## Architecture Overview
25
+
26
+ ### System Architecture
27
+
28
+ ```
29
+ Browser (React) ↔ Backend (Fastify REST/WS) ↔ MAP Server(s) ↔ Agents
30
+ ```
31
+
32
+ ### Frontend (`src/`)
33
+
34
+ 1. **Visualization Layer** (`src/components/`)
35
+ - Sigma.js: WebGL-based, high-performance rendering for large graphs
36
+ - Cytoscape.js: Feature-rich, DOM-based rendering with advanced interactions
37
+ - ViewSwitcher allows toggling between renderers
38
+ - Agent overlay on codebase graph with position calculator
39
+
40
+ 2. **Data Layer** (`src/core/`)
41
+ - Graphology: In-memory graph data structure
42
+ - Kuzu: WASM-based graph database for persistence
43
+ - Adapters convert between data formats
44
+
45
+ 3. **Agent Layer** (MAP-based)
46
+ - `src/hooks/useSwarmCraft.ts` — Main agent state hook (agents, positions, messages)
47
+ - `src/services/swarmcraft-api.ts` — REST client to backend
48
+ - `src/services/swarmcraft-ws.ts` — WebSocket client with auto-reconnection and event batching
49
+ - `src/services/acp-service.ts` — ACP stream management and message assembly
50
+
51
+ 4. **Types** (`src/types/`)
52
+ - `src/types/map.ts` — MAP protocol types (MAPAgent, MAPMessage, MAPEvent, etc.)
53
+ - `src/types/acp.ts` — ACP types (streams, messages, parts, permissions, questions)
54
+
55
+ ### Backend (`server/src/`)
56
+
57
+ 1. **MAP Integration** (`server/src/map/`)
58
+ - `client-manager.ts` — Manages `ClientConnection` instances to MAP servers via `@multi-agent-protocol/sdk`
59
+ - `event-handler.ts` — Processes MAP events (agent lifecycle, messages, scopes)
60
+ - `acp-manager.ts` — Manages `ACPStreamConnection` instances for ACP conversations
61
+
62
+ 2. **REST API** (`server/src/routes/`)
63
+ - Agent, message, task, scope, and event CRUD
64
+ - MAP server management (add, connect, disconnect)
65
+ - ACP stream lifecycle (create, initialize, prompt, permission/question reply, extension calls)
66
+ - Subprocess spawning and management
67
+
68
+ 3. **WebSocket Hub** (`server/src/websocket/hub.ts`)
69
+ - Real-time event broadcast with topic-based subscriptions
70
+ - Heartbeat/ping-pong for connection liveness
71
+ - Topics: agents, messages, events, tasks, positions, acp
72
+
73
+ 4. **Services** (`server/src/services/`)
74
+ - SQLite persistence for agents, messages, events, tasks, positions
75
+ - Federation service for multi-server coordination
76
+
77
+ 5. **Subprocess Management** (`server/src/subprocess/`)
78
+ - Spawn/stop MAP server processes (e.g. macro-agent)
79
+ - Auto-connect to spawned servers
80
+ - Log streaming
81
+
82
+ ### Key Design Patterns
83
+
84
+ - **Service-Oriented Architecture**: Core functionality encapsulated in services
85
+ - **Adapter Pattern**: Data conversion between Graphology, Cytoscape, and Agent formats
86
+ - **Provider Pattern**: React contexts for shared state
87
+ - **Event-Driven**: MAP events → backend EventEmitter → WebSocket → frontend React state
88
+ - **ACP Streaming**: `pendingParts[]` accumulation with part-based message assembly (aligned with openswarm patterns)
89
+
90
+ ## MAP Protocol Integration
91
+
92
+ ### Agent States
93
+
94
+ 9 states: `registered`, `active`, `busy`, `idle`, `suspended`, `stopping`, `stopped`, `failed`, `orphaned`
95
+
96
+ ### ACP (Agent Client Protocol)
97
+
98
+ Interactive conversations with agents, proxied through the backend:
99
+
100
+ ```
101
+ Frontend (acp-service.ts)
102
+ → REST: POST /acp/streams/:id/prompt
103
+ → Backend (acp-manager.ts)
104
+ → ACPStreamConnection.prompt()
105
+ → MAP Server → Agent
106
+ Agent response streams back via:
107
+ ACPStreamConnection events
108
+ → Backend EventEmitter
109
+ → WebSocket broadcast
110
+ → Frontend acp-service.ts (message assembly)
111
+ ```
112
+
113
+ ### ACP Message Assembly
114
+
115
+ Messages are assembled from streaming parts (aligned with openswarm):
116
+ - `ACPTextPart` — Streaming text content
117
+ - `ACPToolCallPart` — Tool invocations
118
+ - `ACPToolResultPart` — Tool outputs
119
+ - `ACPStepStartPart` / `ACPStepFinishPart` — Step lifecycle
120
+
121
+ ### ACP Interactive Requests
122
+
123
+ - **Permissions**: Agent requests tool execution approval → frontend shows dialog → user approves/denies
124
+ - **Questions**: Agent asks structured questions with options → frontend shows selection UI → user answers
125
+
126
+ ## Cytoscape Integration
127
+
128
+ ### Component Hierarchy
129
+
130
+ ```
131
+ CytoscapeProvider (context)
132
+ └── CytoscapeCanvas (main visualization)
133
+ ├── NavigationControls (zoom/pan UI)
134
+ └── Minimap (overview navigation)
135
+ ```
136
+
137
+ ### Services (`src/components/cytoscape/services/`)
138
+
139
+ | Service | Responsibility |
140
+ |---------|----------------|
141
+ | `SelectionService` | Multi-select, focus mode, selection expansion |
142
+ | `NavigationService` | Zoom, pan, fit, viewport history |
143
+ | `HistoryService` | Undo/redo for graph changes |
144
+ | `ThemeService` | Theme switching, CSS variables, custom themes |
145
+ | `PerformanceService` | LOD rendering, debounced layouts, batch ops |
146
+ | `AnimationService` | Node/edge animations |
147
+ | `ContextMenuService` | Right-click context menus |
148
+ | `HoverMenuService` | Hover tooltips and menus |
149
+
150
+ ## Testing Guidelines
151
+
152
+ ### Test Framework
153
+ - **Vitest** with jsdom environment
154
+ - Tests co-located in `__tests__` directories
155
+ - Global setup in `src/test/setup.ts`
156
+
157
+ ### Running Tests
158
+
159
+ ```bash
160
+ npm test # Watch mode
161
+ npm run test:run # Single run
162
+ npm run test:coverage # With coverage report
163
+ ```
164
+
165
+ ### Test Principles
166
+
167
+ 1. **Minimal Mocking**: Use real Graphology instances where possible
168
+ 2. **Integration-style**: Test service interactions, not just units
169
+ 3. **Event Verification**: Verify events are emitted correctly
170
+ 4. **State Assertions**: Check state changes, not implementation details
171
+
172
+ ## Key Files Reference
173
+
174
+ | Purpose | File |
175
+ |---------|------|
176
+ | App entry | `src/App.tsx` |
177
+ | Main state hook | `src/hooks/useAppState.ts` |
178
+ | Agent state hook | `src/hooks/useSwarmCraft.ts` |
179
+ | ACP service | `src/services/acp-service.ts` |
180
+ | REST API client | `src/services/swarmcraft-api.ts` |
181
+ | WebSocket client | `src/services/swarmcraft-ws.ts` |
182
+ | MAP types | `src/types/map.ts` |
183
+ | ACP types | `src/types/acp.ts` |
184
+ | Backend entry | `server/src/index.ts` |
185
+ | MAP client manager | `server/src/map/client-manager.ts` |
186
+ | ACP stream manager | `server/src/map/acp-manager.ts` |
187
+ | MAP event handler | `server/src/map/event-handler.ts` |
188
+ | WebSocket hub | `server/src/websocket/hub.ts` |
189
+ | ACP routes | `server/src/routes/acp.ts` |
190
+
191
+ ## Dependencies of Note
192
+
193
+ | Package | Purpose |
194
+ |---------|---------|
195
+ | `cytoscape` | Graph visualization |
196
+ | `cytoscape-cola` | Force-directed layout |
197
+ | `graphology` | Graph data structure |
198
+ | `sigma` | WebGL graph rendering |
199
+ | `kuzu-wasm` | Graph database |
200
+ | `@multi-agent-protocol/sdk` | MAP protocol SDK (backend) |
201
+
202
+ ## Common Gotchas
203
+
204
+ ### TypeScript Build Errors in Tests
205
+
206
+ Test files are excluded from the production build via `tsconfig.app.json`. If you add new test patterns, update the exclusion list.
207
+
208
+ ### MAP Agent State vs Display State
209
+
210
+ `getAgentDisplayState()` in `src/types/map.ts` maps raw MAP states to display-friendly states. Always use this for UI rendering.
211
+
212
+ ### ACP Stream State Split
213
+
214
+ Frontend `acp-service.ts` and backend `acp-manager.ts` each maintain separate stream state. Backend broadcasts lifecycle events that frontend consumes to stay in sync.
215
+
216
+ ## Contributing
217
+
218
+ 1. Run `npm run build` before committing to catch type errors
219
+ 2. Run `npm test` to ensure tests pass
220
+ 3. Follow existing patterns for new services/adapters
221
+ 4. Add tests for new functionality
222
+ 5. Update this file if adding significant new patterns or components
package/README.md CHANGED
@@ -1 +1,135 @@
1
- # swarmcraft
1
+ # SwarmCraft
2
+
3
+ A visual code exploration and multi-agent orchestration platform. SwarmCraft enables developers to visualize codebases as interactive graphs, manage AI agent swarms, and explore code relationships through an intuitive web interface.
4
+
5
+ ## Features
6
+
7
+ ### Code Visualization
8
+ - **Interactive Graph Canvas**: Visualize code structure as a navigable graph using Sigma.js or Cytoscape.js
9
+ - **Dual View Modes**: Switch between Sigma (fast, WebGL-based) and Cytoscape (feature-rich, DOM-based) renderers
10
+ - **File Tree Navigation**: Browse and navigate the codebase structure
11
+ - **Code References Panel**: View code snippets and relationships for selected nodes
12
+
13
+ ### Session Visualization (Cytoscape)
14
+ - **VoiceTree-inspired Design**: Hierarchical agent visualization with conversation flow
15
+ - **Multi-select & Focus Mode**: Select multiple nodes with keyboard modifiers, focus on specific subgraphs
16
+ - **Undo/Redo History**: Track and revert graph changes with full history support
17
+ - **Viewport Navigation**: Zoom, pan, fit-to-view with viewport history (back/forward navigation)
18
+ - **Theme System**: Light/dark/high-contrast themes with custom theme support
19
+ - **Minimap**: Overview navigation for large graphs
20
+ - **Performance Optimization**: Level-of-Detail (LOD) rendering, debounced layouts, batch operations
21
+
22
+ ### Multi-Agent Orchestration
23
+ - **Agent Swarm Management**: Create, monitor, and coordinate multiple AI agents
24
+ - **MCP Server Integration**: Connect to Model Context Protocol servers
25
+ - **Task Assignment**: Create and assign tasks to agents
26
+ - **Real-time Messaging**: Monitor inter-agent communication
27
+
28
+ ### Intelligent Analysis
29
+ - **Smart Clustering**: AI-powered code clustering using LLMs (Anthropic, OpenAI, Google, Ollama)
30
+ - **Embeddings Pipeline**: Generate code embeddings using WebGPU or WASM
31
+ - **Semantic Search**: Find related code using vector similarity
32
+
33
+ ## Tech Stack
34
+
35
+ - **Frontend**: React 18, TypeScript, Tailwind CSS
36
+ - **Graph Libraries**: Sigma.js, Cytoscape.js, Graphology
37
+ - **Database**: Kuzu (WASM-based graph database)
38
+ - **AI/LLM**: LangChain, LangGraph with multi-provider support
39
+ - **Code Parsing**: Tree-sitter (WASM)
40
+ - **Build**: Vite
41
+
42
+ ## Getting Started
43
+
44
+ ### Prerequisites
45
+ - Node.js 18+
46
+ - npm or yarn
47
+
48
+ ### Installation
49
+
50
+ ```bash
51
+ # Install dependencies
52
+ npm install
53
+
54
+ # Start development server
55
+ npm run dev
56
+
57
+ # Build for production
58
+ npm run build
59
+
60
+ # Run tests
61
+ npm test
62
+ ```
63
+
64
+ ### Usage
65
+
66
+ 1. **Load a Repository**: Drag and drop a ZIP file or clone from a Git URL
67
+ 2. **Explore the Graph**: Navigate the code structure using pan, zoom, and node selection
68
+ 3. **Configure LLM**: Open Settings to configure your preferred LLM provider for intelligent features
69
+ 4. **Use Agents**: Open the SwarmCraft panel to create and manage AI agents
70
+
71
+ ## Project Structure
72
+
73
+ ```
74
+ src/
75
+ ├── components/
76
+ │ ├── cytoscape/ # Cytoscape visualization components
77
+ │ │ ├── adapters/ # Data adapters (Graphology, Agent)
78
+ │ │ ├── services/ # Core services (Selection, Navigation, History, Theme, Performance)
79
+ │ │ ├── hooks/ # React hooks for Cytoscape integration
80
+ │ │ └── styles/ # Stylesheets and layout configuration
81
+ │ ├── agents/ # Agent management UI
82
+ │ ├── swarmcraft/ # SwarmCraft dashboard components
83
+ │ └── ... # Other UI components
84
+ ├── core/
85
+ │ ├── embeddings/ # Code embedding generation
86
+ │ ├── graph/ # Graph operations and algorithms
87
+ │ ├── ingestion/ # Code ingestion pipeline
88
+ │ ├── kuzu/ # Kuzu database integration
89
+ │ ├── llm/ # LLM provider integrations
90
+ │ ├── mcp/ # MCP client implementation
91
+ │ └── search/ # Search functionality
92
+ ├── contexts/ # React contexts
93
+ ├── hooks/ # Shared React hooks
94
+ ├── services/ # Application services
95
+ ├── types/ # TypeScript type definitions
96
+ └── workers/ # Web workers for background processing
97
+ ```
98
+
99
+ ## Testing
100
+
101
+ The project uses Vitest for testing with jsdom environment.
102
+
103
+ ```bash
104
+ # Run tests in watch mode
105
+ npm test
106
+
107
+ # Run tests once
108
+ npm run test:run
109
+
110
+ # Run tests with coverage
111
+ npm run test:coverage
112
+ ```
113
+
114
+ ### Test Structure
115
+ - Tests are co-located with source files in `__tests__` directories
116
+ - Mock helpers are in `src/components/cytoscape/__tests__/helpers/`
117
+ - Global test setup is in `src/test/setup.ts`
118
+
119
+ ## Configuration
120
+
121
+ ### LLM Providers
122
+ SwarmCraft supports multiple LLM providers:
123
+ - **Anthropic** (Claude)
124
+ - **OpenAI** (GPT-4, GPT-3.5)
125
+ - **Google** (Gemini)
126
+ - **Ollama** (Local models)
127
+
128
+ Configure via the Settings panel in the application.
129
+
130
+ ### Environment Variables
131
+ No environment variables are required for basic usage. LLM API keys are configured through the Settings panel and stored locally.
132
+
133
+ ## License
134
+
135
+ MIT
package/api/proxy.ts ADDED
@@ -0,0 +1,104 @@
1
+ import type { VercelRequest, VercelResponse } from '@vercel/node';
2
+
3
+ /**
4
+ * CORS Proxy for isomorphic-git
5
+ *
6
+ * isomorphic-git calls: /api/proxy?url=https://github.com/...
7
+ */
8
+ export default async function handler(req: VercelRequest, res: VercelResponse) {
9
+ // Handle CORS preflight
10
+ if (req.method === 'OPTIONS') {
11
+ res.setHeader('Access-Control-Allow-Origin', '*');
12
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
13
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Git-Protocol, Accept');
14
+ res.status(200).end();
15
+ return;
16
+ }
17
+
18
+ // Get URL from query parameter
19
+ const { url } = req.query;
20
+
21
+ if (!url || typeof url !== 'string') {
22
+ res.status(400).json({ error: 'Missing url query parameter' });
23
+ return;
24
+ }
25
+
26
+ // Only allow GitHub URLs for security
27
+ const allowedHosts = ['github.com', 'raw.githubusercontent.com'];
28
+ let parsedUrl: URL;
29
+
30
+ try {
31
+ parsedUrl = new URL(url);
32
+ } catch {
33
+ res.status(400).json({ error: 'Invalid URL' });
34
+ return;
35
+ }
36
+
37
+ if (!allowedHosts.some(host => parsedUrl.hostname.endsWith(host))) {
38
+ res.status(403).json({ error: 'Only GitHub URLs are allowed' });
39
+ return;
40
+ }
41
+
42
+ try {
43
+ const headers: Record<string, string> = {
44
+ 'User-Agent': 'git/isomorphic-git',
45
+ };
46
+
47
+ // Forward relevant headers
48
+ if (req.headers.authorization) {
49
+ headers['Authorization'] = req.headers.authorization as string;
50
+ }
51
+ if (req.headers['content-type']) {
52
+ headers['Content-Type'] = req.headers['content-type'] as string;
53
+ }
54
+ if (req.headers['git-protocol']) {
55
+ headers['Git-Protocol'] = req.headers['git-protocol'] as string;
56
+ }
57
+ if (req.headers.accept) {
58
+ headers['Accept'] = req.headers.accept as string;
59
+ }
60
+
61
+ // Get request body for POST requests
62
+ let body: Buffer | undefined;
63
+ if (req.method === 'POST') {
64
+ const chunks: Buffer[] = [];
65
+ for await (const chunk of req) {
66
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
67
+ }
68
+ body = Buffer.concat(chunks);
69
+ }
70
+
71
+ const response = await fetch(url, {
72
+ method: req.method || 'GET',
73
+ headers,
74
+ body: body ? new Uint8Array(body) : undefined,
75
+ });
76
+
77
+ // Set CORS headers
78
+ res.setHeader('Access-Control-Allow-Origin', '*');
79
+ res.setHeader('Access-Control-Expose-Headers', '*');
80
+
81
+ // Forward response headers (except ones that cause issues)
82
+ const skipHeaders = [
83
+ 'content-encoding',
84
+ 'transfer-encoding',
85
+ 'connection',
86
+ 'www-authenticate', // IMPORTANT: Strip this to prevent browser's native auth popup!
87
+ ];
88
+
89
+ response.headers.forEach((value, key) => {
90
+ if (!skipHeaders.includes(key.toLowerCase())) {
91
+ res.setHeader(key, value);
92
+ }
93
+ });
94
+
95
+ res.status(response.status);
96
+ const buffer = await response.arrayBuffer();
97
+ res.send(Buffer.from(buffer));
98
+
99
+ } catch (error) {
100
+ console.error('Proxy error:', error);
101
+ res.status(500).json({ error: 'Proxy request failed', details: String(error) });
102
+ }
103
+ }
104
+
@@ -0,0 +1,3 @@
1
+ import { FastifyInstance } from 'fastify';
2
+ export declare function buildApp(): Promise<FastifyInstance>;
3
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAYnD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC,CAyIzD"}
@@ -0,0 +1,133 @@
1
+ import Fastify from 'fastify';
2
+ import cors from '@fastify/cors';
3
+ import websocket from '@fastify/websocket';
4
+ import { config } from './config.js';
5
+ import { initDb, closeDb } from './db/index.js';
6
+ import { registerRoutes } from './routes/index.js';
7
+ import { wsHub } from './websocket/hub.js';
8
+ import { setupEventHandlers, mapClientManager, acpStreamManager } from './map/index.js';
9
+ import { subprocessManager } from './subprocess/manager.js';
10
+ import { ptyManager } from './terminal/pty-manager.js';
11
+ import { handleTerminalWebSocket } from './terminal/terminal-ws.js';
12
+ export async function buildApp() {
13
+ const isProd = process.env.NODE_ENV === 'production';
14
+ const fastify = Fastify({
15
+ logger: isProd
16
+ ? { level: config.logLevel }
17
+ : {
18
+ level: config.logLevel,
19
+ transport: {
20
+ target: 'pino-pretty',
21
+ options: {
22
+ translateTime: 'HH:MM:ss Z',
23
+ ignore: 'pid,hostname',
24
+ },
25
+ },
26
+ },
27
+ });
28
+ // Initialize database
29
+ initDb();
30
+ // Setup MAP event handlers
31
+ setupEventHandlers();
32
+ // Wire ACP stream events to WebSocket hub for frontend real-time updates
33
+ const acpEvents = [
34
+ 'stream.created',
35
+ 'stream.initialized',
36
+ 'stream.closed',
37
+ 'stream.error',
38
+ 'stream.reconnecting',
39
+ 'stream.reconnected',
40
+ 'session.started',
41
+ 'session.loaded',
42
+ 'session.update',
43
+ 'session.lost',
44
+ 'prompt.started',
45
+ 'prompt.completed',
46
+ 'prompt.cancelled',
47
+ 'permission.request',
48
+ 'question.request',
49
+ ];
50
+ for (const eventName of acpEvents) {
51
+ acpStreamManager.on(eventName, (payload) => {
52
+ const message = {
53
+ type: `acp.${eventName}`,
54
+ payload,
55
+ timestamp: Date.now(),
56
+ };
57
+ // Broadcast to both 'events' topic and dedicated 'acp' topic
58
+ wsHub.broadcast(message, 'events');
59
+ wsHub.broadcast(message, 'acp');
60
+ });
61
+ }
62
+ // Wire subprocess events to WebSocket hub
63
+ const subprocessEvents = [
64
+ 'process.started',
65
+ 'process.stopped',
66
+ 'process.exited',
67
+ 'process.error',
68
+ 'process.connected',
69
+ 'process.log',
70
+ ];
71
+ for (const eventName of subprocessEvents) {
72
+ subprocessManager.on(eventName, (payload) => {
73
+ wsHub.broadcast({
74
+ type: `subprocess.${eventName.replace('process.', '')}`,
75
+ payload,
76
+ timestamp: Date.now(),
77
+ }, 'events');
78
+ });
79
+ }
80
+ // Register plugins
81
+ await fastify.register(cors, {
82
+ origin: config.corsOrigin,
83
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
84
+ allowedHeaders: ['Content-Type', 'Authorization'],
85
+ });
86
+ await fastify.register(websocket);
87
+ // Register WebSocket route
88
+ fastify.register(async function (fastify) {
89
+ fastify.get('/ws', { websocket: true }, (socket, req) => {
90
+ wsHub.addClient(socket);
91
+ });
92
+ });
93
+ // Register terminal WebSocket route (dedicated PTY tunnel)
94
+ fastify.register(async function (fastify) {
95
+ fastify.get('/ws/terminal', { websocket: true }, (socket, req) => {
96
+ const url = new URL(req.url, `http://${req.headers.host}`);
97
+ const query = {
98
+ cols: url.searchParams.get('cols') ?? undefined,
99
+ rows: url.searchParams.get('rows') ?? undefined,
100
+ command: url.searchParams.get('command') ?? undefined,
101
+ args: url.searchParams.get('args') ?? undefined,
102
+ cwd: url.searchParams.get('cwd') ?? undefined,
103
+ sessionId: url.searchParams.get('sessionId') ?? undefined,
104
+ env: url.searchParams.get('env') ?? undefined,
105
+ };
106
+ handleTerminalWebSocket(socket, query);
107
+ });
108
+ });
109
+ // Register REST routes
110
+ await registerRoutes(fastify);
111
+ // WebSocket stats endpoint
112
+ fastify.get('/api/ws/stats', async () => {
113
+ return {
114
+ success: true,
115
+ data: wsHub.getStats(),
116
+ };
117
+ });
118
+ // Graceful shutdown
119
+ const shutdown = async () => {
120
+ fastify.log.info('Shutting down...');
121
+ await acpStreamManager.closeAll();
122
+ await mapClientManager.disconnectAll();
123
+ await subprocessManager.stopAll();
124
+ ptyManager.destroyAll();
125
+ await fastify.close();
126
+ closeDb();
127
+ process.exit(0);
128
+ };
129
+ process.on('SIGTERM', shutdown);
130
+ process.on('SIGINT', shutdown);
131
+ return fastify;
132
+ }
133
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}