swarmcraft 0.0.1 → 0.1.1

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 (645) hide show
  1. package/.gitmodules +3 -0
  2. package/.storybook/main.ts +15 -0
  3. package/.storybook/preview.tsx +30 -0
  4. package/CLAUDE.md +253 -0
  5. package/LICENSE +21 -0
  6. package/README.md +130 -1
  7. package/api/proxy.ts +104 -0
  8. package/dist/server/app.d.ts +3 -0
  9. package/dist/server/app.d.ts.map +1 -0
  10. package/dist/server/app.js +133 -0
  11. package/dist/server/app.js.map +1 -0
  12. package/dist/server/config.d.ts +43 -0
  13. package/dist/server/config.d.ts.map +1 -0
  14. package/dist/server/config.js +26 -0
  15. package/dist/server/config.js.map +1 -0
  16. package/dist/server/context.d.ts +75 -0
  17. package/dist/server/context.d.ts.map +1 -0
  18. package/dist/server/context.js +103 -0
  19. package/dist/server/context.js.map +1 -0
  20. package/dist/server/db/index.d.ts +7 -0
  21. package/dist/server/db/index.d.ts.map +1 -0
  22. package/dist/server/db/index.js +52 -0
  23. package/dist/server/db/index.js.map +1 -0
  24. package/dist/server/db/provider.d.ts +57 -0
  25. package/dist/server/db/provider.d.ts.map +1 -0
  26. package/dist/server/db/provider.js +13 -0
  27. package/dist/server/db/provider.js.map +1 -0
  28. package/dist/server/db/providers/sqlite.d.ts +37 -0
  29. package/dist/server/db/providers/sqlite.d.ts.map +1 -0
  30. package/dist/server/db/providers/sqlite.js +1093 -0
  31. package/dist/server/db/providers/sqlite.js.map +1 -0
  32. package/dist/server/db/repositories.d.ts +142 -0
  33. package/dist/server/db/repositories.d.ts.map +1 -0
  34. package/dist/server/db/repositories.js +12 -0
  35. package/dist/server/db/repositories.js.map +1 -0
  36. package/dist/server/db/seed.d.ts +2 -0
  37. package/dist/server/db/seed.d.ts.map +1 -0
  38. package/dist/server/db/seed.js +143 -0
  39. package/dist/server/db/seed.js.map +1 -0
  40. package/dist/server/index.d.ts +2 -0
  41. package/dist/server/index.d.ts.map +1 -0
  42. package/dist/server/index.js +28 -0
  43. package/dist/server/index.js.map +1 -0
  44. package/dist/server/map/acp-manager.d.ts +121 -0
  45. package/dist/server/map/acp-manager.d.ts.map +1 -0
  46. package/dist/server/map/acp-manager.js +404 -0
  47. package/dist/server/map/acp-manager.js.map +1 -0
  48. package/dist/server/map/client-manager.d.ts +53 -0
  49. package/dist/server/map/client-manager.d.ts.map +1 -0
  50. package/dist/server/map/client-manager.js +327 -0
  51. package/dist/server/map/client-manager.js.map +1 -0
  52. package/dist/server/map/event-handler.d.ts +6 -0
  53. package/dist/server/map/event-handler.d.ts.map +1 -0
  54. package/dist/server/map/event-handler.js +370 -0
  55. package/dist/server/map/event-handler.js.map +1 -0
  56. package/dist/server/map/index.d.ts +6 -0
  57. package/dist/server/map/index.d.ts.map +1 -0
  58. package/dist/server/map/index.js +5 -0
  59. package/dist/server/map/index.js.map +1 -0
  60. package/dist/server/map/types.d.ts +28 -0
  61. package/dist/server/map/types.d.ts.map +1 -0
  62. package/dist/server/map/types.js +4 -0
  63. package/dist/server/map/types.js.map +1 -0
  64. package/dist/server/pipeline/ast-cache.d.ts +12 -0
  65. package/dist/server/pipeline/ast-cache.d.ts.map +1 -0
  66. package/dist/server/pipeline/ast-cache.js +34 -0
  67. package/dist/server/pipeline/ast-cache.js.map +1 -0
  68. package/dist/server/pipeline/bm25-index.d.ts +25 -0
  69. package/dist/server/pipeline/bm25-index.d.ts.map +1 -0
  70. package/dist/server/pipeline/bm25-index.js +69 -0
  71. package/dist/server/pipeline/bm25-index.js.map +1 -0
  72. package/dist/server/pipeline/call-processor.d.ts +9 -0
  73. package/dist/server/pipeline/call-processor.d.ts.map +1 -0
  74. package/dist/server/pipeline/call-processor.js +192 -0
  75. package/dist/server/pipeline/call-processor.js.map +1 -0
  76. package/dist/server/pipeline/community-processor.d.ts +31 -0
  77. package/dist/server/pipeline/community-processor.d.ts.map +1 -0
  78. package/dist/server/pipeline/community-processor.js +175 -0
  79. package/dist/server/pipeline/community-processor.js.map +1 -0
  80. package/dist/server/pipeline/csv-generator.d.ts +14 -0
  81. package/dist/server/pipeline/csv-generator.d.ts.map +1 -0
  82. package/dist/server/pipeline/csv-generator.js +196 -0
  83. package/dist/server/pipeline/csv-generator.js.map +1 -0
  84. package/dist/server/pipeline/embedder.d.ts +19 -0
  85. package/dist/server/pipeline/embedder.d.ts.map +1 -0
  86. package/dist/server/pipeline/embedder.js +103 -0
  87. package/dist/server/pipeline/embedder.js.map +1 -0
  88. package/dist/server/pipeline/embedding-pipeline.d.ts +17 -0
  89. package/dist/server/pipeline/embedding-pipeline.d.ts.map +1 -0
  90. package/dist/server/pipeline/embedding-pipeline.js +169 -0
  91. package/dist/server/pipeline/embedding-pipeline.js.map +1 -0
  92. package/dist/server/pipeline/embedding-types.d.ts +53 -0
  93. package/dist/server/pipeline/embedding-types.d.ts.map +1 -0
  94. package/dist/server/pipeline/embedding-types.js +15 -0
  95. package/dist/server/pipeline/embedding-types.js.map +1 -0
  96. package/dist/server/pipeline/entry-point-scoring.d.ts +17 -0
  97. package/dist/server/pipeline/entry-point-scoring.d.ts.map +1 -0
  98. package/dist/server/pipeline/entry-point-scoring.js +166 -0
  99. package/dist/server/pipeline/entry-point-scoring.js.map +1 -0
  100. package/dist/server/pipeline/file-reader.d.ts +15 -0
  101. package/dist/server/pipeline/file-reader.d.ts.map +1 -0
  102. package/dist/server/pipeline/file-reader.js +95 -0
  103. package/dist/server/pipeline/file-reader.js.map +1 -0
  104. package/dist/server/pipeline/framework-detection.d.ts +26 -0
  105. package/dist/server/pipeline/framework-detection.d.ts.map +1 -0
  106. package/dist/server/pipeline/framework-detection.js +140 -0
  107. package/dist/server/pipeline/framework-detection.js.map +1 -0
  108. package/dist/server/pipeline/graph.d.ts +3 -0
  109. package/dist/server/pipeline/graph.d.ts.map +1 -0
  110. package/dist/server/pipeline/graph.js +31 -0
  111. package/dist/server/pipeline/graph.js.map +1 -0
  112. package/dist/server/pipeline/heritage-processor.d.ts +15 -0
  113. package/dist/server/pipeline/heritage-processor.d.ts.map +1 -0
  114. package/dist/server/pipeline/heritage-processor.js +115 -0
  115. package/dist/server/pipeline/heritage-processor.js.map +1 -0
  116. package/dist/server/pipeline/hybrid-search.d.ts +24 -0
  117. package/dist/server/pipeline/hybrid-search.d.ts.map +1 -0
  118. package/dist/server/pipeline/hybrid-search.js +57 -0
  119. package/dist/server/pipeline/hybrid-search.js.map +1 -0
  120. package/dist/server/pipeline/ignore-service.d.ts +2 -0
  121. package/dist/server/pipeline/ignore-service.d.ts.map +1 -0
  122. package/dist/server/pipeline/ignore-service.js +197 -0
  123. package/dist/server/pipeline/ignore-service.js.map +1 -0
  124. package/dist/server/pipeline/import-processor.d.ts +9 -0
  125. package/dist/server/pipeline/import-processor.d.ts.map +1 -0
  126. package/dist/server/pipeline/import-processor.js +142 -0
  127. package/dist/server/pipeline/import-processor.js.map +1 -0
  128. package/dist/server/pipeline/kuzu-adapter.d.ts +44 -0
  129. package/dist/server/pipeline/kuzu-adapter.d.ts.map +1 -0
  130. package/dist/server/pipeline/kuzu-adapter.js +254 -0
  131. package/dist/server/pipeline/kuzu-adapter.js.map +1 -0
  132. package/dist/server/pipeline/kuzu-schema.d.ts +47 -0
  133. package/dist/server/pipeline/kuzu-schema.d.ts.map +1 -0
  134. package/dist/server/pipeline/kuzu-schema.js +322 -0
  135. package/dist/server/pipeline/kuzu-schema.js.map +1 -0
  136. package/dist/server/pipeline/parser-loader.d.ts +5 -0
  137. package/dist/server/pipeline/parser-loader.d.ts.map +1 -0
  138. package/dist/server/pipeline/parser-loader.js +68 -0
  139. package/dist/server/pipeline/parser-loader.js.map +1 -0
  140. package/dist/server/pipeline/parsing-processor.d.ts +9 -0
  141. package/dist/server/pipeline/parsing-processor.d.ts.map +1 -0
  142. package/dist/server/pipeline/parsing-processor.js +194 -0
  143. package/dist/server/pipeline/parsing-processor.js.map +1 -0
  144. package/dist/server/pipeline/pipeline-service.d.ts +86 -0
  145. package/dist/server/pipeline/pipeline-service.d.ts.map +1 -0
  146. package/dist/server/pipeline/pipeline-service.js +352 -0
  147. package/dist/server/pipeline/pipeline-service.js.map +1 -0
  148. package/dist/server/pipeline/pipeline.d.ts +6 -0
  149. package/dist/server/pipeline/pipeline.d.ts.map +1 -0
  150. package/dist/server/pipeline/pipeline.js +219 -0
  151. package/dist/server/pipeline/pipeline.js.map +1 -0
  152. package/dist/server/pipeline/process-processor.d.ts +45 -0
  153. package/dist/server/pipeline/process-processor.d.ts.map +1 -0
  154. package/dist/server/pipeline/process-processor.js +201 -0
  155. package/dist/server/pipeline/process-processor.js.map +1 -0
  156. package/dist/server/pipeline/structure-processor.d.ts +3 -0
  157. package/dist/server/pipeline/structure-processor.d.ts.map +1 -0
  158. package/dist/server/pipeline/structure-processor.js +37 -0
  159. package/dist/server/pipeline/structure-processor.js.map +1 -0
  160. package/dist/server/pipeline/symbol-table.d.ts +17 -0
  161. package/dist/server/pipeline/symbol-table.d.ts.map +1 -0
  162. package/dist/server/pipeline/symbol-table.js +33 -0
  163. package/dist/server/pipeline/symbol-table.js.map +1 -0
  164. package/dist/server/pipeline/text-generator.d.ts +9 -0
  165. package/dist/server/pipeline/text-generator.d.ts.map +1 -0
  166. package/dist/server/pipeline/text-generator.js +60 -0
  167. package/dist/server/pipeline/text-generator.js.map +1 -0
  168. package/dist/server/pipeline/tree-sitter-queries.d.ts +12 -0
  169. package/dist/server/pipeline/tree-sitter-queries.d.ts.map +1 -0
  170. package/dist/server/pipeline/tree-sitter-queries.js +320 -0
  171. package/dist/server/pipeline/tree-sitter-queries.js.map +1 -0
  172. package/dist/server/pipeline/types.d.ts +68 -0
  173. package/dist/server/pipeline/types.d.ts.map +1 -0
  174. package/dist/server/pipeline/types.js +3 -0
  175. package/dist/server/pipeline/types.js.map +1 -0
  176. package/dist/server/pipeline/utils.d.ts +14 -0
  177. package/dist/server/pipeline/utils.d.ts.map +1 -0
  178. package/dist/server/pipeline/utils.js +42 -0
  179. package/dist/server/pipeline/utils.js.map +1 -0
  180. package/dist/server/plugin.d.ts +55 -0
  181. package/dist/server/plugin.d.ts.map +1 -0
  182. package/dist/server/plugin.js +122 -0
  183. package/dist/server/plugin.js.map +1 -0
  184. package/dist/server/routes/acp.d.ts +3 -0
  185. package/dist/server/routes/acp.d.ts.map +1 -0
  186. package/dist/server/routes/acp.js +225 -0
  187. package/dist/server/routes/acp.js.map +1 -0
  188. package/dist/server/routes/agents.d.ts +3 -0
  189. package/dist/server/routes/agents.d.ts.map +1 -0
  190. package/dist/server/routes/agents.js +288 -0
  191. package/dist/server/routes/agents.js.map +1 -0
  192. package/dist/server/routes/events.d.ts +3 -0
  193. package/dist/server/routes/events.d.ts.map +1 -0
  194. package/dist/server/routes/events.js +103 -0
  195. package/dist/server/routes/events.js.map +1 -0
  196. package/dist/server/routes/federation.d.ts +3 -0
  197. package/dist/server/routes/federation.d.ts.map +1 -0
  198. package/dist/server/routes/federation.js +188 -0
  199. package/dist/server/routes/federation.js.map +1 -0
  200. package/dist/server/routes/graph.d.ts +3 -0
  201. package/dist/server/routes/graph.d.ts.map +1 -0
  202. package/dist/server/routes/graph.js +107 -0
  203. package/dist/server/routes/graph.js.map +1 -0
  204. package/dist/server/routes/index.d.ts +3 -0
  205. package/dist/server/routes/index.d.ts.map +1 -0
  206. package/dist/server/routes/index.js +38 -0
  207. package/dist/server/routes/index.js.map +1 -0
  208. package/dist/server/routes/map-servers.d.ts +3 -0
  209. package/dist/server/routes/map-servers.d.ts.map +1 -0
  210. package/dist/server/routes/map-servers.js +154 -0
  211. package/dist/server/routes/map-servers.js.map +1 -0
  212. package/dist/server/routes/messages.d.ts +3 -0
  213. package/dist/server/routes/messages.d.ts.map +1 -0
  214. package/dist/server/routes/messages.js +92 -0
  215. package/dist/server/routes/messages.js.map +1 -0
  216. package/dist/server/routes/pipeline.d.ts +3 -0
  217. package/dist/server/routes/pipeline.d.ts.map +1 -0
  218. package/dist/server/routes/pipeline.js +200 -0
  219. package/dist/server/routes/pipeline.js.map +1 -0
  220. package/dist/server/routes/scopes.d.ts +3 -0
  221. package/dist/server/routes/scopes.d.ts.map +1 -0
  222. package/dist/server/routes/scopes.js +130 -0
  223. package/dist/server/routes/scopes.js.map +1 -0
  224. package/dist/server/routes/search.d.ts +3 -0
  225. package/dist/server/routes/search.d.ts.map +1 -0
  226. package/dist/server/routes/search.js +263 -0
  227. package/dist/server/routes/search.js.map +1 -0
  228. package/dist/server/routes/sessionlog.d.ts +9 -0
  229. package/dist/server/routes/sessionlog.d.ts.map +1 -0
  230. package/dist/server/routes/sessionlog.js +128 -0
  231. package/dist/server/routes/sessionlog.js.map +1 -0
  232. package/dist/server/routes/subprocess.d.ts +3 -0
  233. package/dist/server/routes/subprocess.d.ts.map +1 -0
  234. package/dist/server/routes/subprocess.js +91 -0
  235. package/dist/server/routes/subprocess.js.map +1 -0
  236. package/dist/server/routes/tasks.d.ts +3 -0
  237. package/dist/server/routes/tasks.d.ts.map +1 -0
  238. package/dist/server/routes/tasks.js +182 -0
  239. package/dist/server/routes/tasks.js.map +1 -0
  240. package/dist/server/routes/terminal.d.ts +3 -0
  241. package/dist/server/routes/terminal.d.ts.map +1 -0
  242. package/dist/server/routes/terminal.js +66 -0
  243. package/dist/server/routes/terminal.js.map +1 -0
  244. package/dist/server/services/acp-service.d.ts +14 -0
  245. package/dist/server/services/acp-service.d.ts.map +1 -0
  246. package/dist/server/services/acp-service.js +92 -0
  247. package/dist/server/services/acp-service.js.map +1 -0
  248. package/dist/server/services/agent-service.d.ts +21 -0
  249. package/dist/server/services/agent-service.d.ts.map +1 -0
  250. package/dist/server/services/agent-service.js +162 -0
  251. package/dist/server/services/agent-service.js.map +1 -0
  252. package/dist/server/services/embedding-service.d.ts +29 -0
  253. package/dist/server/services/embedding-service.d.ts.map +1 -0
  254. package/dist/server/services/embedding-service.js +67 -0
  255. package/dist/server/services/embedding-service.js.map +1 -0
  256. package/dist/server/services/event-service.d.ts +15 -0
  257. package/dist/server/services/event-service.d.ts.map +1 -0
  258. package/dist/server/services/event-service.js +110 -0
  259. package/dist/server/services/event-service.js.map +1 -0
  260. package/dist/server/services/federation-service.d.ts +56 -0
  261. package/dist/server/services/federation-service.d.ts.map +1 -0
  262. package/dist/server/services/federation-service.js +147 -0
  263. package/dist/server/services/federation-service.js.map +1 -0
  264. package/dist/server/services/index.d.ts +11 -0
  265. package/dist/server/services/index.d.ts.map +1 -0
  266. package/dist/server/services/index.js +11 -0
  267. package/dist/server/services/index.js.map +1 -0
  268. package/dist/server/services/map-server-service.d.ts +13 -0
  269. package/dist/server/services/map-server-service.d.ts.map +1 -0
  270. package/dist/server/services/map-server-service.js +99 -0
  271. package/dist/server/services/map-server-service.js.map +1 -0
  272. package/dist/server/services/message-service.d.ts +21 -0
  273. package/dist/server/services/message-service.d.ts.map +1 -0
  274. package/dist/server/services/message-service.js +131 -0
  275. package/dist/server/services/message-service.js.map +1 -0
  276. package/dist/server/services/position-service.d.ts +32 -0
  277. package/dist/server/services/position-service.d.ts.map +1 -0
  278. package/dist/server/services/position-service.js +59 -0
  279. package/dist/server/services/position-service.js.map +1 -0
  280. package/dist/server/services/scope-service.d.ts +13 -0
  281. package/dist/server/services/scope-service.d.ts.map +1 -0
  282. package/dist/server/services/scope-service.js +84 -0
  283. package/dist/server/services/scope-service.js.map +1 -0
  284. package/dist/server/services/task-service.d.ts +17 -0
  285. package/dist/server/services/task-service.d.ts.map +1 -0
  286. package/dist/server/services/task-service.js +153 -0
  287. package/dist/server/services/task-service.js.map +1 -0
  288. package/dist/server/sessionlog/event-bridge.d.ts +20 -0
  289. package/dist/server/sessionlog/event-bridge.d.ts.map +1 -0
  290. package/dist/server/sessionlog/event-bridge.js +247 -0
  291. package/dist/server/sessionlog/event-bridge.js.map +1 -0
  292. package/dist/server/sessionlog/index.d.ts +8 -0
  293. package/dist/server/sessionlog/index.d.ts.map +1 -0
  294. package/dist/server/sessionlog/index.js +6 -0
  295. package/dist/server/sessionlog/index.js.map +1 -0
  296. package/dist/server/sessionlog/session-watcher.d.ts +87 -0
  297. package/dist/server/sessionlog/session-watcher.d.ts.map +1 -0
  298. package/dist/server/sessionlog/session-watcher.js +254 -0
  299. package/dist/server/sessionlog/session-watcher.js.map +1 -0
  300. package/dist/server/sessionlog/transcript-adapter.d.ts +35 -0
  301. package/dist/server/sessionlog/transcript-adapter.d.ts.map +1 -0
  302. package/dist/server/sessionlog/transcript-adapter.js +132 -0
  303. package/dist/server/sessionlog/transcript-adapter.js.map +1 -0
  304. package/dist/server/sessionlog/transcript-parser.d.ts +48 -0
  305. package/dist/server/sessionlog/transcript-parser.d.ts.map +1 -0
  306. package/dist/server/sessionlog/transcript-parser.js +319 -0
  307. package/dist/server/sessionlog/transcript-parser.js.map +1 -0
  308. package/dist/server/sessionlog/types.d.ts +98 -0
  309. package/dist/server/sessionlog/types.d.ts.map +1 -0
  310. package/dist/server/sessionlog/types.js +36 -0
  311. package/dist/server/sessionlog/types.js.map +1 -0
  312. package/dist/server/standalone.d.ts +10 -0
  313. package/dist/server/standalone.d.ts.map +1 -0
  314. package/dist/server/standalone.js +59 -0
  315. package/dist/server/standalone.js.map +1 -0
  316. package/dist/server/subprocess/manager.d.ts +98 -0
  317. package/dist/server/subprocess/manager.d.ts.map +1 -0
  318. package/dist/server/subprocess/manager.js +300 -0
  319. package/dist/server/subprocess/manager.js.map +1 -0
  320. package/dist/server/terminal/pty-manager.d.ts +68 -0
  321. package/dist/server/terminal/pty-manager.d.ts.map +1 -0
  322. package/dist/server/terminal/pty-manager.js +159 -0
  323. package/dist/server/terminal/pty-manager.js.map +1 -0
  324. package/dist/server/terminal/terminal-ws.d.ts +30 -0
  325. package/dist/server/terminal/terminal-ws.d.ts.map +1 -0
  326. package/dist/server/terminal/terminal-ws.js +174 -0
  327. package/dist/server/terminal/terminal-ws.js.map +1 -0
  328. package/dist/server/types/index.d.ts +646 -0
  329. package/dist/server/types/index.d.ts.map +1 -0
  330. package/dist/server/types/index.js +219 -0
  331. package/dist/server/types/index.js.map +1 -0
  332. package/dist/server/websocket/hub.d.ts +54 -0
  333. package/dist/server/websocket/hub.d.ts.map +1 -0
  334. package/dist/server/websocket/hub.js +287 -0
  335. package/dist/server/websocket/hub.js.map +1 -0
  336. package/dist/ui/assets/__vite-browser-external-2447137e-BIHI7g3E.js +1 -0
  337. package/dist/ui/assets/architectureDiagram-RIHJSL5F-CB_retbF.js +36 -0
  338. package/dist/ui/assets/blockDiagram-WDLGXV4W-CgXwvk1I.js +122 -0
  339. package/dist/ui/assets/c4Diagram-7AWUDI2P-C8HDrltZ.js +10 -0
  340. package/dist/ui/assets/chunk-3TDMV3MO-DFHcdmen.js +1 -0
  341. package/dist/ui/assets/chunk-7RZVMHOQ-B5SRuCzt.js +338 -0
  342. package/dist/ui/assets/chunk-AEOMTBSW-Dhe4qe5z.js +1 -0
  343. package/dist/ui/assets/chunk-BGEGVY25-Cg9fNKRk.js +220 -0
  344. package/dist/ui/assets/chunk-H3VCZNTA-HT6wiToA.js +13 -0
  345. package/dist/ui/assets/chunk-KFR3WFC5-DUOC0iNF.js +165 -0
  346. package/dist/ui/assets/chunk-KSICW3F5-B4uGabmh.js +15 -0
  347. package/dist/ui/assets/chunk-LWM4QWG6-AQRtplIi.js +1 -0
  348. package/dist/ui/assets/chunk-M3I2T2XC-CwLqaa1O.js +1 -0
  349. package/dist/ui/assets/chunk-TU3PZOEN-CFfl6_Kk.js +1 -0
  350. package/dist/ui/assets/chunk-VGHHFSQR--tHHUaKU.js +1 -0
  351. package/dist/ui/assets/chunk-WNUA3B3J-B9-h8qLh.js +1 -0
  352. package/dist/ui/assets/classDiagram-W3T7ADTY-DwVZ8Oaq.js +1 -0
  353. package/dist/ui/assets/classDiagram-v2-NUY7TN2I-DwVZ8Oaq.js +1 -0
  354. package/dist/ui/assets/cose-bilkent-DQETAGN7-BCQmvNA4.js +1 -0
  355. package/dist/ui/assets/dagre-PD6EB5X7-C51E25PG.js +4 -0
  356. package/dist/ui/assets/diagram-H6XQBSGY-DGcs6tzR.js +24 -0
  357. package/dist/ui/assets/diagram-LDM27ML3-BppAr5H3.js +43 -0
  358. package/dist/ui/assets/diagram-YNAIMP7R-CPs8mD7q.js +24 -0
  359. package/dist/ui/assets/erDiagram-JKLMQEMA-CEHQF3xs.js +60 -0
  360. package/dist/ui/assets/flowDiagram-TPJNMKY5-x3yStqgk.js +162 -0
  361. package/dist/ui/assets/ganttDiagram-TVT35BNJ-DwvKwK7B.js +267 -0
  362. package/dist/ui/assets/gitGraphDiagram-ZZNRLE66-DnG5ShIg.js +65 -0
  363. package/dist/ui/assets/index-BcpSOuVX.js +2056 -0
  364. package/dist/ui/assets/index-tbwaRGvL.css +1 -0
  365. package/dist/ui/assets/infoDiagram-WBDZ6S3U-hMQoXMtH.js +2 -0
  366. package/dist/ui/assets/journeyDiagram-FDC3KNBO-DYXNpAZx.js +139 -0
  367. package/dist/ui/assets/kanban-definition-YQQHB3YZ-BVNjx3md.js +89 -0
  368. package/dist/ui/assets/katex-4QAC45MX-DGfTcqso.js +261 -0
  369. package/dist/ui/assets/mindmap-definition-SIOIWSPX-C3kw-n2b.js +68 -0
  370. package/dist/ui/assets/pieDiagram-XCFX7IE7-Cz3-AgWe.js +30 -0
  371. package/dist/ui/assets/quadrantDiagram-ZSOMFDZY-CN21bfLl.js +7 -0
  372. package/dist/ui/assets/requirementDiagram-RUCZPMKB-CofrbuMO.js +64 -0
  373. package/dist/ui/assets/sankeyDiagram-VQJ3IPPN-CB1c4p71.js +10 -0
  374. package/dist/ui/assets/sequenceDiagram-JT7H6RCS-CTJfbBuA.js +145 -0
  375. package/dist/ui/assets/stateDiagram-MULPRXYB-v7evpSXl.js +1 -0
  376. package/dist/ui/assets/stateDiagram-v2-LMKPZ2WR-Dne5-Laq.js +1 -0
  377. package/dist/ui/assets/timeline-definition-O36V2GCZ-D6JDV-W4.js +61 -0
  378. package/dist/ui/assets/treemap-GDKQZRPO-TD7FEVA6-BfiO94pT.js +161 -0
  379. package/dist/ui/assets/xychartDiagram-HB2IZN64-CQoYRUsf.js +7 -0
  380. package/dist/ui/assets/zip-JuLA9AYS.js +12 -0
  381. package/dist/ui/index.html +16 -0
  382. package/dist/ui/wasm/c/tree-sitter-c.wasm +0 -0
  383. package/dist/ui/wasm/cpp/tree-sitter-cpp.wasm +0 -0
  384. package/dist/ui/wasm/csharp/tree-sitter-csharp.wasm +0 -0
  385. package/dist/ui/wasm/go/tree-sitter-go.wasm +0 -0
  386. package/dist/ui/wasm/java/tree-sitter-java.wasm +0 -0
  387. package/dist/ui/wasm/javascript/tree-sitter-javascript.wasm +0 -0
  388. package/dist/ui/wasm/kuzu-wasm.wasm +0 -0
  389. package/dist/ui/wasm/python/tree-sitter-python.wasm +0 -0
  390. package/dist/ui/wasm/rust/tree-sitter-rust.wasm +0 -0
  391. package/dist/ui/wasm/tree-sitter.wasm +0 -0
  392. package/dist/ui/wasm/typescript/tree-sitter-tsx.wasm +0 -0
  393. package/dist/ui/wasm/typescript/tree-sitter-typescript.wasm +0 -0
  394. package/docs/ARCHITECTURE.md +818 -0
  395. package/docs/CYTOSCAPE_INTEGRATION_SPEC.md +2458 -0
  396. package/docs/design/UNIVERSAL_AGENT_VISUALIZATION.md +1202 -0
  397. package/index.html +15 -0
  398. package/package.json +163 -9
  399. package/public/wasm/c/tree-sitter-c.wasm +0 -0
  400. package/public/wasm/cpp/tree-sitter-cpp.wasm +0 -0
  401. package/public/wasm/csharp/tree-sitter-csharp.wasm +0 -0
  402. package/public/wasm/go/tree-sitter-go.wasm +0 -0
  403. package/public/wasm/java/tree-sitter-java.wasm +0 -0
  404. package/public/wasm/javascript/tree-sitter-javascript.wasm +0 -0
  405. package/public/wasm/kuzu-wasm.wasm +0 -0
  406. package/public/wasm/python/tree-sitter-python.wasm +0 -0
  407. package/public/wasm/rust/tree-sitter-rust.wasm +0 -0
  408. package/public/wasm/tree-sitter.wasm +0 -0
  409. package/public/wasm/typescript/tree-sitter-tsx.wasm +0 -0
  410. package/public/wasm/typescript/tree-sitter-typescript.wasm +0 -0
  411. package/server/.env.example +21 -0
  412. package/src/server/config.ts +31 -0
  413. package/src/server/context.ts +209 -0
  414. package/src/server/db/index.ts +65 -0
  415. package/src/server/db/provider.ts +90 -0
  416. package/src/server/db/providers/sqlite.ts +1164 -0
  417. package/src/server/db/repositories.ts +222 -0
  418. package/src/server/db/schema.sql +135 -0
  419. package/src/server/db/seed.ts +291 -0
  420. package/src/server/fastify.d.ts +7 -0
  421. package/src/server/index.ts +30 -0
  422. package/src/server/map/acp-manager.ts +535 -0
  423. package/src/server/map/client-manager.ts +425 -0
  424. package/src/server/map/event-handler.ts +439 -0
  425. package/src/server/map/index.ts +5 -0
  426. package/src/server/map/types.ts +78 -0
  427. package/src/server/pipeline/ast-cache.ts +46 -0
  428. package/src/server/pipeline/bm25-index.ts +86 -0
  429. package/src/server/pipeline/call-processor.ts +241 -0
  430. package/src/server/pipeline/community-processor.ts +260 -0
  431. package/src/server/pipeline/csv-generator.ts +225 -0
  432. package/src/server/pipeline/embedder.ts +120 -0
  433. package/src/server/pipeline/embedding-pipeline.ts +216 -0
  434. package/src/server/pipeline/embedding-types.ts +68 -0
  435. package/src/server/pipeline/entry-point-scoring.ts +197 -0
  436. package/src/server/pipeline/file-reader.ts +111 -0
  437. package/src/server/pipeline/framework-detection.ts +180 -0
  438. package/src/server/pipeline/graph.ts +35 -0
  439. package/src/server/pipeline/heritage-processor.ts +145 -0
  440. package/src/server/pipeline/hybrid-search.ts +83 -0
  441. package/src/server/pipeline/ignore-service.ts +222 -0
  442. package/src/server/pipeline/import-processor.ts +190 -0
  443. package/src/server/pipeline/kuzu-adapter.ts +282 -0
  444. package/src/server/pipeline/kuzu-schema.ts +348 -0
  445. package/src/server/pipeline/kuzu.d.ts +21 -0
  446. package/src/server/pipeline/parser-loader.ts +77 -0
  447. package/src/server/pipeline/parsing-processor.ts +212 -0
  448. package/src/server/pipeline/pipeline-service.ts +443 -0
  449. package/src/server/pipeline/pipeline.ts +252 -0
  450. package/src/server/pipeline/process-processor.ts +315 -0
  451. package/src/server/pipeline/structure-processor.ts +46 -0
  452. package/src/server/pipeline/symbol-table.ts +52 -0
  453. package/src/server/pipeline/text-generator.ts +73 -0
  454. package/src/server/pipeline/tree-sitter-queries.ts +330 -0
  455. package/src/server/pipeline/types.ts +107 -0
  456. package/src/server/pipeline/utils.ts +31 -0
  457. package/src/server/plugin.ts +185 -0
  458. package/src/server/routes/acp.ts +334 -0
  459. package/src/server/routes/agents.ts +343 -0
  460. package/src/server/routes/events.ts +126 -0
  461. package/src/server/routes/federation.ts +237 -0
  462. package/src/server/routes/graph.ts +126 -0
  463. package/src/server/routes/index.ts +40 -0
  464. package/src/server/routes/map-servers.ts +182 -0
  465. package/src/server/routes/messages.ts +106 -0
  466. package/src/server/routes/pipeline.ts +229 -0
  467. package/src/server/routes/scopes.ts +163 -0
  468. package/src/server/routes/search.ts +289 -0
  469. package/src/server/routes/sessionlog.ts +156 -0
  470. package/src/server/routes/subprocess.ts +126 -0
  471. package/src/server/routes/tasks.ts +210 -0
  472. package/src/server/services/embedding-service.ts +82 -0
  473. package/src/server/services/federation-service.ts +199 -0
  474. package/src/server/services/position-service.ts +73 -0
  475. package/src/server/sessionlog/event-bridge.ts +307 -0
  476. package/src/server/sessionlog/index.ts +16 -0
  477. package/src/server/sessionlog/session-watcher.ts +340 -0
  478. package/src/server/sessionlog/transcript-adapter.ts +187 -0
  479. package/src/server/sessionlog/transcript-parser.ts +390 -0
  480. package/src/server/sessionlog/types.ts +162 -0
  481. package/src/server/standalone.ts +67 -0
  482. package/src/server/subprocess/manager.ts +417 -0
  483. package/src/server/tests/api.test.ts +351 -0
  484. package/src/server/tests/pipeline-entry-point-scoring.test.ts +130 -0
  485. package/src/server/tests/pipeline-file-reader.test.ts +129 -0
  486. package/src/server/tests/pipeline-framework-detection.test.ts +163 -0
  487. package/src/server/tests/pipeline-graph.test.ts +87 -0
  488. package/src/server/tests/pipeline-ignore-service.test.ts +152 -0
  489. package/src/server/tests/pipeline-routes.test.ts +312 -0
  490. package/src/server/tests/pipeline-service.test.ts +80 -0
  491. package/src/server/tests/pipeline-structure.test.ts +94 -0
  492. package/src/server/tests/pipeline-symbol-table.test.ts +80 -0
  493. package/src/server/tests/pipeline-utils.test.ts +89 -0
  494. package/src/server/tests/sessionlog-event-bridge.test.ts +597 -0
  495. package/src/server/tests/sessionlog-routes.test.ts +430 -0
  496. package/src/server/tests/sessionlog-session-watcher.test.ts +666 -0
  497. package/src/server/tests/sessionlog-transcript-adapter.test.ts +249 -0
  498. package/src/server/tests/sessionlog-transcript-parser.test.ts +850 -0
  499. package/src/server/types/index.ts +296 -0
  500. package/src/server/websocket/hub.ts +359 -0
  501. package/src/ui/App.tsx +15 -0
  502. package/src/ui/AppContent.tsx +298 -0
  503. package/src/ui/SwarmCraftApp.tsx +29 -0
  504. package/src/ui/components/ActivityFeed.tsx +204 -0
  505. package/src/ui/components/AttentionPanel.tsx +150 -0
  506. package/src/ui/components/CodeReferencesPanel.tsx +459 -0
  507. package/src/ui/components/ConnectionBanner.tsx +50 -0
  508. package/src/ui/components/DropZone.tsx +542 -0
  509. package/src/ui/components/EmbeddingStatus.tsx +114 -0
  510. package/src/ui/components/ErrorBoundary.tsx +48 -0
  511. package/src/ui/components/FileTreePanel.tsx +528 -0
  512. package/src/ui/components/GraphCanvas.tsx +436 -0
  513. package/src/ui/components/Header.tsx +440 -0
  514. package/src/ui/components/LoadingOverlay.tsx +66 -0
  515. package/src/ui/components/MCPToggle.tsx +300 -0
  516. package/src/ui/components/MarkdownRenderer.tsx +198 -0
  517. package/src/ui/components/MermaidDiagram.tsx +157 -0
  518. package/src/ui/components/ProcessFlowModal.tsx +300 -0
  519. package/src/ui/components/ProcessesPanel.tsx +509 -0
  520. package/src/ui/components/QueryFAB.tsx +405 -0
  521. package/src/ui/components/RightPanel.tsx +126 -0
  522. package/src/ui/components/StatusBar.tsx +83 -0
  523. package/src/ui/components/UnifiedGraphCanvas.tsx +168 -0
  524. package/src/ui/components/acp/ACPConversationPanel.tsx +395 -0
  525. package/src/ui/components/acp/ACPInjectInput.tsx +281 -0
  526. package/src/ui/components/acp/index.ts +2 -0
  527. package/src/ui/components/agents/AgentHierarchyView.tsx +307 -0
  528. package/src/ui/components/agents/AgentListPanel.tsx +343 -0
  529. package/src/ui/components/cytoscape/CytoscapeCanvas.tsx +718 -0
  530. package/src/ui/components/cytoscape/CytoscapeProvider.tsx +291 -0
  531. package/src/ui/components/cytoscape/Minimap.tsx +300 -0
  532. package/src/ui/components/cytoscape/NavigationControls.tsx +262 -0
  533. package/src/ui/components/cytoscape/ViewSwitcher.tsx +84 -0
  534. package/src/ui/components/cytoscape/__tests__/helpers/cytoscapeMock.ts +611 -0
  535. package/src/ui/components/cytoscape/adapters/AgentAdapter.ts +271 -0
  536. package/src/ui/components/cytoscape/adapters/GraphologyAdapter.ts +328 -0
  537. package/src/ui/components/cytoscape/adapters/__tests__/AgentAdapter.test.ts +427 -0
  538. package/src/ui/components/cytoscape/adapters/__tests__/GraphologyAdapter.test.ts +463 -0
  539. package/src/ui/components/cytoscape/adapters/index.ts +6 -0
  540. package/src/ui/components/cytoscape/hooks/index.ts +6 -0
  541. package/src/ui/components/cytoscape/hooks/useAgentOverlay.ts +323 -0
  542. package/src/ui/components/cytoscape/hooks/useCytoscapeEvents.ts +283 -0
  543. package/src/ui/components/cytoscape/index.ts +34 -0
  544. package/src/ui/components/cytoscape/services/AnimationService.ts +228 -0
  545. package/src/ui/components/cytoscape/services/ContextMenuService.ts +269 -0
  546. package/src/ui/components/cytoscape/services/HistoryService.ts +691 -0
  547. package/src/ui/components/cytoscape/services/HoverMenuService.ts +408 -0
  548. package/src/ui/components/cytoscape/services/NavigationService.ts +468 -0
  549. package/src/ui/components/cytoscape/services/PerformanceService.ts +496 -0
  550. package/src/ui/components/cytoscape/services/SelectionService.ts +404 -0
  551. package/src/ui/components/cytoscape/services/ThemeService.ts +675 -0
  552. package/src/ui/components/cytoscape/services/__tests__/HistoryService.test.ts +451 -0
  553. package/src/ui/components/cytoscape/services/__tests__/NavigationService.test.ts +317 -0
  554. package/src/ui/components/cytoscape/services/__tests__/PerformanceService.test.ts +310 -0
  555. package/src/ui/components/cytoscape/services/__tests__/SelectionService.test.ts +284 -0
  556. package/src/ui/components/cytoscape/services/__tests__/ThemeService.test.ts +432 -0
  557. package/src/ui/components/cytoscape/services/index.ts +18 -0
  558. package/src/ui/components/cytoscape/styles/index.ts +6 -0
  559. package/src/ui/components/cytoscape/styles/layoutConfig.ts +157 -0
  560. package/src/ui/components/cytoscape/styles/stylesheet.ts +643 -0
  561. package/src/ui/components/cytoscape/types.ts +178 -0
  562. package/src/ui/components/dashboard/MonitoringDashboard.tsx +327 -0
  563. package/src/ui/components/events/EventStreamPanel.tsx +362 -0
  564. package/src/ui/components/map-servers/ServerConnectionPanel.tsx +753 -0
  565. package/src/ui/components/messages/MessageEdgeLayer.tsx +329 -0
  566. package/src/ui/components/messages/MessageInspector.tsx +275 -0
  567. package/src/ui/components/messages/MessageStreamPanel.tsx +344 -0
  568. package/src/ui/components/overlay/AgentOverlayLayer.tsx +200 -0
  569. package/src/ui/components/swarmcraft/SwarmCraftPanel.tsx +277 -0
  570. package/src/ui/components/swarmcraft/index.ts +1 -0
  571. package/src/ui/components/tasks/TaskBoardPanel.tsx +376 -0
  572. package/src/ui/components/terminal/TerminalPanel.tsx +359 -0
  573. package/src/ui/components/terminal/__tests__/TerminalPanel.test.tsx +380 -0
  574. package/src/ui/components/timeline/ActivityTimeline.tsx +299 -0
  575. package/src/ui/config/ignore-service.ts +239 -0
  576. package/src/ui/config/supported-languages.ts +14 -0
  577. package/src/ui/contexts/ServiceContext.tsx +57 -0
  578. package/src/ui/contexts/SwarmCraftContext.tsx +75 -0
  579. package/src/ui/core/graph/graph.ts +41 -0
  580. package/src/ui/core/graph/types.ts +86 -0
  581. package/src/ui/core/mcp/mcp-client.ts +341 -0
  582. package/src/ui/embed.css +292 -0
  583. package/src/ui/embed.ts +18 -0
  584. package/src/ui/hooks/useACPStreams.ts +110 -0
  585. package/src/ui/hooks/useAppState.tsx +582 -0
  586. package/src/ui/hooks/useAttention.ts +213 -0
  587. package/src/ui/hooks/useSigma.ts +639 -0
  588. package/src/ui/hooks/useSwarmCraft.ts +500 -0
  589. package/src/ui/index.css +365 -0
  590. package/src/ui/lib/constants.ts +123 -0
  591. package/src/ui/lib/graph-adapter.ts +387 -0
  592. package/src/ui/lib/mermaid-generator.ts +158 -0
  593. package/src/ui/lib/utils.ts +3 -0
  594. package/src/ui/main.tsx +17 -0
  595. package/src/ui/services/__tests__/acp-service.test.ts +550 -0
  596. package/src/ui/services/acp-service.ts +624 -0
  597. package/src/ui/services/agent-control.ts +202 -0
  598. package/src/ui/services/factory.ts +28 -0
  599. package/src/ui/services/git-clone.ts +219 -0
  600. package/src/ui/services/swarmcraft-api.ts +612 -0
  601. package/src/ui/services/swarmcraft-ws.ts +496 -0
  602. package/src/ui/services/zip.ts +77 -0
  603. package/src/ui/stories/AgentListPanel.stories.tsx +223 -0
  604. package/src/ui/stories/Configure.mdx +364 -0
  605. package/src/ui/stories/CytoscapeCanvas.stories.tsx +391 -0
  606. package/src/ui/stories/Introduction.mdx +72 -0
  607. package/src/ui/stories/Minimap.stories.tsx +180 -0
  608. package/src/ui/stories/NavigationControls.stories.tsx +196 -0
  609. package/src/ui/stories/ViewSwitcher.stories.tsx +89 -0
  610. package/src/ui/stories/assets/accessibility.png +0 -0
  611. package/src/ui/stories/assets/accessibility.svg +1 -0
  612. package/src/ui/stories/assets/addon-library.png +0 -0
  613. package/src/ui/stories/assets/assets.png +0 -0
  614. package/src/ui/stories/assets/avif-test-image.avif +0 -0
  615. package/src/ui/stories/assets/context.png +0 -0
  616. package/src/ui/stories/assets/discord.svg +1 -0
  617. package/src/ui/stories/assets/docs.png +0 -0
  618. package/src/ui/stories/assets/figma-plugin.png +0 -0
  619. package/src/ui/stories/assets/github.svg +1 -0
  620. package/src/ui/stories/assets/share.png +0 -0
  621. package/src/ui/stories/assets/styling.png +0 -0
  622. package/src/ui/stories/assets/testing.png +0 -0
  623. package/src/ui/stories/assets/theming.png +0 -0
  624. package/src/ui/stories/assets/tutorials.svg +1 -0
  625. package/src/ui/stories/assets/youtube.svg +1 -0
  626. package/src/ui/stories/button.css +30 -0
  627. package/src/ui/stories/header.css +32 -0
  628. package/src/ui/stories/page.css +68 -0
  629. package/src/ui/test/setup.ts +41 -0
  630. package/src/ui/types/acp.ts +123 -0
  631. package/src/ui/types/attention.ts +39 -0
  632. package/src/ui/types/cytoscape-extensions.d.ts +82 -0
  633. package/src/ui/types/map.ts +340 -0
  634. package/src/ui/types/pipeline.ts +13 -0
  635. package/src/ui/utils/position-calculator.ts +186 -0
  636. package/src/ui/vite-env.d.ts +1 -0
  637. package/tsconfig.json +8 -0
  638. package/tsconfig.node.json +13 -0
  639. package/tsconfig.server.json +20 -0
  640. package/tsconfig.ui.json +32 -0
  641. package/vercel.json +17 -0
  642. package/vite.config.ts +36 -0
  643. package/vitest.config.ts +21 -0
  644. package/vitest.server.config.ts +10 -0
  645. package/index.js +0 -2
package/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/multi-agent-protocol"]
2
+ path = vendor/multi-agent-protocol
3
+ 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,253 @@
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
+ npm install # Install dependencies (single package)
13
+ npm run dev # Start Vite dev server (frontend only)
14
+ npm run dev:server # Start backend server (tsx watch)
15
+ npm run build # Build server + UI (TypeScript check + Vite)
16
+ npm test # Run all tests (UI + server, single run)
17
+ npm run test:ui:watch # Run UI tests in watch mode
18
+ npm run test:server:watch # Run server tests in watch mode
19
+ npm run typecheck # TypeScript check all projects
20
+ ```
21
+
22
+ ## Architecture Overview
23
+
24
+ ### System Architecture
25
+
26
+ ```
27
+ Browser (React) ↔ Backend (Fastify REST/WS) ↔ MAP Server(s) ↔ Agents
28
+ ```
29
+
30
+ ### Monorepo Layout
31
+
32
+ This is a **single-package monorepo** with frontend and backend co-located:
33
+
34
+ ```
35
+ src/
36
+ ├── ui/ # Frontend (React + Vite)
37
+ │ ├── components/ # React components
38
+ │ ├── hooks/ # React hooks
39
+ │ ├── services/ # API client, WS client, ACP service
40
+ │ ├── core/ # Graph DB, MCP client, ingestion pipeline
41
+ │ ├── types/ # Frontend type definitions
42
+ │ └── contexts/ # React contexts
43
+ ├── server/ # Backend (Fastify)
44
+ │ ├── routes/ # REST API endpoints
45
+ │ ├── map/ # MAP protocol integration
46
+ │ ├── websocket/ # WebSocket hub
47
+ │ ├── db/ # SQLite persistence (provider pattern)
48
+ │ ├── subprocess/ # Process spawning
49
+ │ └── terminal/ # PTY management
50
+ ```
51
+
52
+ ### Frontend (`src/ui/`)
53
+
54
+ 1. **Visualization Layer** (`src/ui/components/`)
55
+ - Sigma.js: WebGL-based, high-performance rendering for large graphs
56
+ - Cytoscape.js: Feature-rich, DOM-based rendering with advanced interactions
57
+ - ViewSwitcher allows toggling between renderers
58
+ - Agent overlay on codebase graph with position calculator
59
+
60
+ 2. **Data Layer** (`src/ui/core/`)
61
+ - Graphology: In-memory graph data structure
62
+ - Kuzu: WASM-based graph database for persistence
63
+ - Adapters convert between data formats
64
+
65
+ 3. **Agent Layer** (MAP-based)
66
+ - `src/ui/hooks/useSwarmCraft.ts` — Main agent state hook (agents, positions, messages)
67
+ - `src/ui/services/swarmcraft-api.ts` — REST client to backend
68
+ - `src/ui/services/swarmcraft-ws.ts` — WebSocket client with auto-reconnection and event batching
69
+ - `src/ui/services/acp-service.ts` — ACP stream management and message assembly
70
+
71
+ 4. **Types** (`src/ui/types/`)
72
+ - `src/ui/types/map.ts` — MAP protocol types (MAPAgent, MAPMessage, MAPEvent, etc.)
73
+ - `src/ui/types/acp.ts` — ACP types (streams, messages, parts, permissions, questions)
74
+
75
+ ### Backend (`src/server/`)
76
+
77
+ 1. **MAP Integration** (`src/server/map/`)
78
+ - `client-manager.ts` — Manages `ClientConnection` instances to MAP servers via `@multi-agent-protocol/sdk`
79
+ - `event-handler.ts` — Processes MAP events (agent lifecycle, messages, scopes)
80
+ - `acp-manager.ts` — Manages `ACPStreamConnection` instances for ACP conversations
81
+
82
+ 2. **REST API** (`src/server/routes/`)
83
+ - Agent, message, task, scope, and event CRUD
84
+ - MAP server management (add, connect, disconnect)
85
+ - ACP stream lifecycle (create, initialize, prompt, permission/question reply, extension calls)
86
+ - Subprocess spawning and management
87
+
88
+ 3. **WebSocket Hub** (`src/server/websocket/hub.ts`)
89
+ - Real-time event broadcast with topic-based subscriptions
90
+ - Heartbeat/ping-pong for connection liveness
91
+ - Topics: agents, messages, events, tasks, positions, acp
92
+
93
+ 4. **Database** (`src/server/db/`)
94
+ - SQLite persistence via provider pattern (`SQLiteSwarmCraftProvider`)
95
+ - Repository classes for agents, messages, events, tasks, positions, ACP conversations, MAP servers
96
+ - Plugin registers `fastify.swarmcraft.*` decorated services
97
+
98
+ 5. **Subprocess Management** (`src/server/subprocess/`)
99
+ - Spawn/stop MAP server processes (e.g. macro-agent)
100
+ - Auto-connect to spawned servers
101
+ - Log streaming
102
+
103
+ ### Key Design Patterns
104
+
105
+ - **Provider Pattern**: Database access via `fastify.swarmcraft.*` (NOT legacy singleton services)
106
+ - **Adapter Pattern**: Data conversion between Graphology, Cytoscape, and Agent formats
107
+ - **Provider Pattern**: React contexts for shared state
108
+ - **Event-Driven**: MAP events → backend EventEmitter → WebSocket → frontend React state
109
+ - **ACP Streaming**: `pendingParts[]` accumulation with part-based message assembly
110
+
111
+ ## MAP Protocol Integration
112
+
113
+ ### Agent States
114
+
115
+ 9 states: `registered`, `active`, `busy`, `idle`, `suspended`, `stopping`, `stopped`, `failed`, `orphaned`
116
+
117
+ ### ACP (Agent Client Protocol)
118
+
119
+ Interactive conversations with agents, proxied through the backend:
120
+
121
+ ```
122
+ Frontend (acp-service.ts)
123
+ → REST: POST /acp/streams/:id/prompt
124
+ → Backend (acp-manager.ts)
125
+ → ACPStreamConnection.prompt()
126
+ → MAP Server → Agent
127
+ Agent response streams back via:
128
+ ACPStreamConnection events
129
+ → Backend EventEmitter
130
+ → WebSocket broadcast
131
+ → Frontend acp-service.ts (message assembly)
132
+ ```
133
+
134
+ ### ACP Message Assembly
135
+
136
+ Messages are assembled from streaming parts:
137
+ - `ACPTextPart` — Streaming text content
138
+ - `ACPToolCallPart` — Tool invocations
139
+ - `ACPToolResultPart` — Tool outputs
140
+ - `ACPStepStartPart` / `ACPStepFinishPart` — Step lifecycle
141
+
142
+ ### ACP Interactive Requests
143
+
144
+ - **Permissions**: Agent requests tool execution approval → frontend shows dialog → user approves/denies
145
+ - **Questions**: Agent asks structured questions with options → frontend shows selection UI → user answers
146
+
147
+ ## Cytoscape Integration
148
+
149
+ ### Component Hierarchy
150
+
151
+ ```
152
+ CytoscapeProvider (context)
153
+ └── CytoscapeCanvas (main visualization)
154
+ ├── NavigationControls (zoom/pan UI)
155
+ └── Minimap (overview navigation)
156
+ ```
157
+
158
+ ### Services (`src/ui/components/cytoscape/services/`)
159
+
160
+ | Service | Responsibility |
161
+ |---------|----------------|
162
+ | `SelectionService` | Multi-select, focus mode, selection expansion |
163
+ | `NavigationService` | Zoom, pan, fit, viewport history |
164
+ | `HistoryService` | Undo/redo for graph changes |
165
+ | `ThemeService` | Theme switching, CSS variables, custom themes |
166
+ | `PerformanceService` | LOD rendering, debounced layouts, batch ops |
167
+ | `AnimationService` | Node/edge animations |
168
+ | `ContextMenuService` | Right-click context menus |
169
+ | `HoverMenuService` | Hover tooltips and menus |
170
+
171
+ ## Testing Guidelines
172
+
173
+ ### Test Framework
174
+ - **Vitest** with jsdom environment
175
+ - Tests co-located in `__tests__` directories
176
+ - Global setup in `src/ui/test/setup.ts`
177
+
178
+ ### Running Tests
179
+
180
+ ```bash
181
+ npm test # Run all tests once (UI + server)
182
+ npm run test:ui:watch # UI tests in watch mode
183
+ npm run test:server:watch # Server tests in watch mode
184
+ npm run test:coverage # With coverage report
185
+ ```
186
+
187
+ ### Test Principles
188
+
189
+ 1. **Minimal Mocking**: Use real Graphology instances where possible
190
+ 2. **Integration-style**: Test service interactions, not just units
191
+ 3. **Event Verification**: Verify events are emitted correctly
192
+ 4. **State Assertions**: Check state changes, not implementation details
193
+
194
+ ## Key Files Reference
195
+
196
+ | Purpose | File |
197
+ |---------|------|
198
+ | App entry | `src/ui/App.tsx` |
199
+ | Main state hook | `src/ui/hooks/useAppState.tsx` |
200
+ | Agent state hook | `src/ui/hooks/useSwarmCraft.ts` |
201
+ | ACP service | `src/ui/services/acp-service.ts` |
202
+ | REST API client | `src/ui/services/swarmcraft-api.ts` |
203
+ | WebSocket client | `src/ui/services/swarmcraft-ws.ts` |
204
+ | MAP types | `src/ui/types/map.ts` |
205
+ | ACP types | `src/ui/types/acp.ts` |
206
+ | Backend entry | `src/server/index.ts` |
207
+ | Backend plugin | `src/server/plugin.ts` |
208
+ | MAP client manager | `src/server/map/client-manager.ts` |
209
+ | ACP stream manager | `src/server/map/acp-manager.ts` |
210
+ | MAP event handler | `src/server/map/event-handler.ts` |
211
+ | WebSocket hub | `src/server/websocket/hub.ts` |
212
+ | ACP routes | `src/server/routes/acp.ts` |
213
+ | DB provider | `src/server/db/provider.ts` |
214
+
215
+ ## Dependencies of Note
216
+
217
+ | Package | Purpose |
218
+ |---------|---------|
219
+ | `cytoscape` | Graph visualization |
220
+ | `cytoscape-cola` | Force-directed layout |
221
+ | `graphology` | Graph data structure |
222
+ | `sigma` | WebGL graph rendering |
223
+ | `kuzu-wasm` | Graph database (frontend) |
224
+ | `@multi-agent-protocol/sdk` | MAP protocol SDK (backend) |
225
+ | `fastify` | Backend HTTP framework |
226
+ | `@fastify/websocket` | WebSocket support |
227
+ | `better-sqlite3` | SQLite database (backend) |
228
+
229
+ ## Common Gotchas
230
+
231
+ ### TypeScript Build Errors in Tests
232
+
233
+ Test files are excluded from the production build via `tsconfig.ui.json`. If you add new test patterns, update the exclusion list.
234
+
235
+ ### MAP Agent State vs Display State
236
+
237
+ `getAgentDisplayState()` in `src/ui/types/map.ts` maps raw MAP states to display-friendly states. Always use this for UI rendering.
238
+
239
+ ### ACP Stream State Split
240
+
241
+ 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.
242
+
243
+ ### Database Access Pattern
244
+
245
+ Use the provider pattern (`fastify.swarmcraft.db.*`) for database access. Do NOT use the legacy singleton services in `src/server/services/`.
246
+
247
+ ## Contributing
248
+
249
+ 1. Run `npm run build` before committing to catch type errors
250
+ 2. Run `npm test` to ensure tests pass
251
+ 3. Follow existing patterns for new services/adapters
252
+ 4. Add tests for new functionality
253
+ 5. Update this file if adding significant new patterns or components
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Alex Ngai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1 +1,130 @@
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 via MAP protocol
24
+ - **ACP Conversations**: Interactive conversations with agents (permissions, questions, tool calls)
25
+ - **Task Assignment**: Create and assign tasks to agents
26
+ - **Real-time Messaging**: Monitor inter-agent communication
27
+
28
+ ### Code Analysis
29
+ - **Embeddings Pipeline**: Generate code embeddings using WebGPU or WASM
30
+ - **Semantic Search**: Find related code using vector similarity
31
+
32
+ ## Tech Stack
33
+
34
+ - **Frontend**: React 18, TypeScript, Tailwind CSS
35
+ - **Graph Libraries**: Sigma.js, Cytoscape.js, Graphology
36
+ - **Database**: Kuzu (WASM, frontend), SQLite (backend)
37
+ - **Code Parsing**: Tree-sitter (WASM)
38
+ - **Backend**: Fastify, @multi-agent-protocol/sdk
39
+ - **Build**: Vite
40
+
41
+ ## Getting Started
42
+
43
+ ### Prerequisites
44
+ - Node.js 18+
45
+ - npm
46
+
47
+ ### Installation
48
+
49
+ ```bash
50
+ # Install dependencies
51
+ npm install
52
+
53
+ # Start frontend dev server
54
+ npm run dev
55
+
56
+ # Start backend server (in a separate terminal)
57
+ npm run dev:server
58
+
59
+ # Build for production
60
+ npm run build
61
+
62
+ # Run tests
63
+ npm test
64
+ ```
65
+
66
+ ### Usage
67
+
68
+ 1. **Load a Repository**: Drag and drop a ZIP file or clone from a Git URL
69
+ 2. **Explore the Graph**: Navigate the code structure using pan, zoom, and node selection
70
+ 3. **Use Agents**: Open the SwarmCraft panel to connect MAP servers and manage AI agents
71
+
72
+ ## Project Structure
73
+
74
+ ```
75
+ src/
76
+ ├── ui/ # Frontend (React + Vite)
77
+ │ ├── components/
78
+ │ │ ├── cytoscape/ # Cytoscape visualization components
79
+ │ │ │ ├── adapters/ # Data adapters (Graphology, Agent)
80
+ │ │ │ ├── services/ # Core services (Selection, Navigation, History, Theme, Performance)
81
+ │ │ │ └── hooks/ # React hooks for Cytoscape integration
82
+ │ │ ├── agents/ # Agent management UI
83
+ │ │ ├── acp/ # ACP conversation panels
84
+ │ │ ├── swarmcraft/ # SwarmCraft dashboard components
85
+ │ │ └── ... # Other UI components
86
+ │ ├── core/
87
+ │ │ ├── embeddings/ # Code embedding generation
88
+ │ │ ├── graph/ # Graph operations and algorithms
89
+ │ │ ├── ingestion/ # Code ingestion pipeline
90
+ │ │ ├── kuzu/ # Kuzu database integration
91
+ │ │ ├── mcp/ # MCP client implementation
92
+ │ │ └── search/ # Search functionality
93
+ │ ├── hooks/ # Shared React hooks
94
+ │ ├── services/ # API client, WS client, ACP service
95
+ │ └── types/ # TypeScript type definitions
96
+ ├── server/ # Backend (Fastify)
97
+ │ ├── routes/ # REST API endpoints
98
+ │ ├── map/ # MAP protocol integration
99
+ │ ├── websocket/ # WebSocket hub
100
+ │ ├── db/ # SQLite persistence
101
+ │ ├── subprocess/ # Process management
102
+ │ └── terminal/ # PTY management
103
+ ```
104
+
105
+ ## Testing
106
+
107
+ The project uses Vitest for testing.
108
+
109
+ ```bash
110
+ npm test # Run all tests once
111
+ npm run test:ui:watch # UI tests in watch mode
112
+ npm run test:server:watch # Server tests in watch mode
113
+ npm run test:coverage # With coverage report
114
+ ```
115
+
116
+ ### Test Structure
117
+ - Tests are co-located with source files in `__tests__` directories
118
+ - Mock helpers are in `src/ui/components/cytoscape/__tests__/helpers/`
119
+ - Global test setup is in `src/ui/test/setup.ts`
120
+
121
+ ## Environment Variables
122
+
123
+ | Variable | Default | Purpose |
124
+ |----------|---------|---------|
125
+ | `VITE_SWARMCRAFT_API_URL` | `http://localhost:3001/api` | Backend API URL |
126
+ | `VITE_SWARMCRAFT_WS_URL` | `ws://localhost:3001/ws` | Backend WebSocket URL |
127
+
128
+ ## License
129
+
130
+ 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"}