@cdoing/core 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 (378) hide show
  1. package/dist/agents/coordinator.d.ts +114 -0
  2. package/dist/agents/coordinator.d.ts.map +1 -0
  3. package/dist/agents/coordinator.js +158 -0
  4. package/dist/agents/coordinator.js.map +1 -0
  5. package/dist/context-providers/clipboard.d.ts +13 -0
  6. package/dist/context-providers/clipboard.d.ts.map +1 -0
  7. package/dist/context-providers/clipboard.js +53 -0
  8. package/dist/context-providers/clipboard.js.map +1 -0
  9. package/dist/context-providers/codebase.d.ts +46 -0
  10. package/dist/context-providers/codebase.d.ts.map +1 -0
  11. package/dist/context-providers/codebase.js +273 -0
  12. package/dist/context-providers/codebase.js.map +1 -0
  13. package/dist/context-providers/diff.d.ts +18 -0
  14. package/dist/context-providers/diff.d.ts.map +1 -0
  15. package/dist/context-providers/diff.js +63 -0
  16. package/dist/context-providers/diff.js.map +1 -0
  17. package/dist/context-providers/docs.d.ts +21 -0
  18. package/dist/context-providers/docs.d.ts.map +1 -0
  19. package/dist/context-providers/docs.js +180 -0
  20. package/dist/context-providers/docs.js.map +1 -0
  21. package/dist/context-providers/file-include.d.ts +13 -0
  22. package/dist/context-providers/file-include.d.ts.map +1 -0
  23. package/dist/context-providers/file-include.js +82 -0
  24. package/dist/context-providers/file-include.js.map +1 -0
  25. package/dist/context-providers/folder.d.ts +19 -0
  26. package/dist/context-providers/folder.d.ts.map +1 -0
  27. package/dist/context-providers/folder.js +130 -0
  28. package/dist/context-providers/folder.js.map +1 -0
  29. package/dist/context-providers/git.d.ts +19 -0
  30. package/dist/context-providers/git.d.ts.map +1 -0
  31. package/dist/context-providers/git.js +74 -0
  32. package/dist/context-providers/git.js.map +1 -0
  33. package/dist/context-providers/index.d.ts +26 -0
  34. package/dist/context-providers/index.d.ts.map +1 -0
  35. package/dist/context-providers/index.js +37 -0
  36. package/dist/context-providers/index.js.map +1 -0
  37. package/dist/context-providers/open-files.d.ts +25 -0
  38. package/dist/context-providers/open-files.d.ts.map +1 -0
  39. package/dist/context-providers/open-files.js +134 -0
  40. package/dist/context-providers/open-files.js.map +1 -0
  41. package/dist/context-providers/problems.d.ts +24 -0
  42. package/dist/context-providers/problems.d.ts.map +1 -0
  43. package/dist/context-providers/problems.js +97 -0
  44. package/dist/context-providers/problems.js.map +1 -0
  45. package/dist/context-providers/registry.d.ts +61 -0
  46. package/dist/context-providers/registry.d.ts.map +1 -0
  47. package/dist/context-providers/registry.js +92 -0
  48. package/dist/context-providers/registry.js.map +1 -0
  49. package/dist/context-providers/terminal.d.ts +25 -0
  50. package/dist/context-providers/terminal.d.ts.map +1 -0
  51. package/dist/context-providers/terminal.js +55 -0
  52. package/dist/context-providers/terminal.js.map +1 -0
  53. package/dist/context-providers/tree.d.ts +29 -0
  54. package/dist/context-providers/tree.d.ts.map +1 -0
  55. package/dist/context-providers/tree.js +172 -0
  56. package/dist/context-providers/tree.js.map +1 -0
  57. package/dist/context-providers/types.d.ts +72 -0
  58. package/dist/context-providers/types.d.ts.map +1 -0
  59. package/dist/context-providers/types.js +10 -0
  60. package/dist/context-providers/types.js.map +1 -0
  61. package/dist/context-providers/url.d.ts +27 -0
  62. package/dist/context-providers/url.d.ts.map +1 -0
  63. package/dist/context-providers/url.js +131 -0
  64. package/dist/context-providers/url.js.map +1 -0
  65. package/dist/effort/index.d.ts +78 -0
  66. package/dist/effort/index.d.ts.map +1 -0
  67. package/dist/effort/index.js +146 -0
  68. package/dist/effort/index.js.map +1 -0
  69. package/dist/hooks/index.d.ts +47 -0
  70. package/dist/hooks/index.d.ts.map +1 -0
  71. package/dist/hooks/index.js +151 -0
  72. package/dist/hooks/index.js.map +1 -0
  73. package/dist/index.d.ts +75 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +152 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/indexing/chunker.d.ts +25 -0
  78. package/dist/indexing/chunker.d.ts.map +1 -0
  79. package/dist/indexing/chunker.js +217 -0
  80. package/dist/indexing/chunker.js.map +1 -0
  81. package/dist/indexing/database.d.ts +49 -0
  82. package/dist/indexing/database.d.ts.map +1 -0
  83. package/dist/indexing/database.js +287 -0
  84. package/dist/indexing/database.js.map +1 -0
  85. package/dist/indexing/index.d.ts +9 -0
  86. package/dist/indexing/index.d.ts.map +1 -0
  87. package/dist/indexing/index.js +13 -0
  88. package/dist/indexing/index.js.map +1 -0
  89. package/dist/indexing/indexer.d.ts +63 -0
  90. package/dist/indexing/indexer.d.ts.map +1 -0
  91. package/dist/indexing/indexer.js +352 -0
  92. package/dist/indexing/indexer.js.map +1 -0
  93. package/dist/indexing/recent-edits-cache.d.ts +77 -0
  94. package/dist/indexing/recent-edits-cache.d.ts.map +1 -0
  95. package/dist/indexing/recent-edits-cache.js +123 -0
  96. package/dist/indexing/recent-edits-cache.js.map +1 -0
  97. package/dist/indexing/types.d.ts +39 -0
  98. package/dist/indexing/types.d.ts.map +1 -0
  99. package/dist/indexing/types.js +6 -0
  100. package/dist/indexing/types.js.map +1 -0
  101. package/dist/mcp/index.d.ts +33 -0
  102. package/dist/mcp/index.d.ts.map +1 -0
  103. package/dist/mcp/index.js +37 -0
  104. package/dist/mcp/index.js.map +1 -0
  105. package/dist/mcp/manager.d.ts +123 -0
  106. package/dist/mcp/manager.d.ts.map +1 -0
  107. package/dist/mcp/manager.js +331 -0
  108. package/dist/mcp/manager.js.map +1 -0
  109. package/dist/oauth.d.ts +33 -0
  110. package/dist/oauth.d.ts.map +1 -0
  111. package/dist/oauth.js +312 -0
  112. package/dist/oauth.js.map +1 -0
  113. package/dist/permissions/index.d.ts +216 -0
  114. package/dist/permissions/index.d.ts.map +1 -0
  115. package/dist/permissions/index.js +938 -0
  116. package/dist/permissions/index.js.map +1 -0
  117. package/dist/plan/index.d.ts +20 -0
  118. package/dist/plan/index.d.ts.map +1 -0
  119. package/dist/plan/index.js +24 -0
  120. package/dist/plan/index.js.map +1 -0
  121. package/dist/plan/manager.d.ts +101 -0
  122. package/dist/plan/manager.d.ts.map +1 -0
  123. package/dist/plan/manager.js +170 -0
  124. package/dist/plan/manager.js.map +1 -0
  125. package/dist/rules/index.d.ts +28 -0
  126. package/dist/rules/index.d.ts.map +1 -0
  127. package/dist/rules/index.js +31 -0
  128. package/dist/rules/index.js.map +1 -0
  129. package/dist/rules/manager.d.ts +77 -0
  130. package/dist/rules/manager.d.ts.map +1 -0
  131. package/dist/rules/manager.js +279 -0
  132. package/dist/rules/manager.js.map +1 -0
  133. package/dist/rules/types.d.ts +34 -0
  134. package/dist/rules/types.d.ts.map +1 -0
  135. package/dist/rules/types.js +9 -0
  136. package/dist/rules/types.js.map +1 -0
  137. package/dist/sandbox/filesystem.d.ts +20 -0
  138. package/dist/sandbox/filesystem.d.ts.map +1 -0
  139. package/dist/sandbox/filesystem.js +141 -0
  140. package/dist/sandbox/filesystem.js.map +1 -0
  141. package/dist/sandbox/index.d.ts +4 -0
  142. package/dist/sandbox/index.d.ts.map +1 -0
  143. package/dist/sandbox/index.js +8 -0
  144. package/dist/sandbox/index.js.map +1 -0
  145. package/dist/sandbox/manager.d.ts +47 -0
  146. package/dist/sandbox/manager.d.ts.map +1 -0
  147. package/dist/sandbox/manager.js +220 -0
  148. package/dist/sandbox/manager.js.map +1 -0
  149. package/dist/sandbox/network.d.ts +14 -0
  150. package/dist/sandbox/network.d.ts.map +1 -0
  151. package/dist/sandbox/network.js +87 -0
  152. package/dist/sandbox/network.js.map +1 -0
  153. package/dist/sandbox/types.d.ts +42 -0
  154. package/dist/sandbox/types.d.ts.map +1 -0
  155. package/dist/sandbox/types.js +25 -0
  156. package/dist/sandbox/types.js.map +1 -0
  157. package/dist/tools/ast-edit.d.ts +57 -0
  158. package/dist/tools/ast-edit.d.ts.map +1 -0
  159. package/dist/tools/ast-edit.js +443 -0
  160. package/dist/tools/ast-edit.js.map +1 -0
  161. package/dist/tools/code-verify.d.ts +8 -0
  162. package/dist/tools/code-verify.d.ts.map +1 -0
  163. package/dist/tools/code-verify.js +159 -0
  164. package/dist/tools/code-verify.js.map +1 -0
  165. package/dist/tools/codebase-search.d.ts +17 -0
  166. package/dist/tools/codebase-search.d.ts.map +1 -0
  167. package/dist/tools/codebase-search.js +104 -0
  168. package/dist/tools/codebase-search.js.map +1 -0
  169. package/dist/tools/file-delete.d.ts +26 -0
  170. package/dist/tools/file-delete.d.ts.map +1 -0
  171. package/dist/tools/file-delete.js +179 -0
  172. package/dist/tools/file-delete.js.map +1 -0
  173. package/dist/tools/file-edit.d.ts +10 -0
  174. package/dist/tools/file-edit.d.ts.map +1 -0
  175. package/dist/tools/file-edit.js +138 -0
  176. package/dist/tools/file-edit.js.map +1 -0
  177. package/dist/tools/file-read.d.ts +12 -0
  178. package/dist/tools/file-read.d.ts.map +1 -0
  179. package/dist/tools/file-read.js +211 -0
  180. package/dist/tools/file-read.js.map +1 -0
  181. package/dist/tools/file-run.d.ts +10 -0
  182. package/dist/tools/file-run.d.ts.map +1 -0
  183. package/dist/tools/file-run.js +179 -0
  184. package/dist/tools/file-run.js.map +1 -0
  185. package/dist/tools/file-write.d.ts +10 -0
  186. package/dist/tools/file-write.d.ts.map +1 -0
  187. package/dist/tools/file-write.js +134 -0
  188. package/dist/tools/file-write.js.map +1 -0
  189. package/dist/tools/glob-search.d.ts +8 -0
  190. package/dist/tools/glob-search.d.ts.map +1 -0
  191. package/dist/tools/glob-search.js +108 -0
  192. package/dist/tools/glob-search.js.map +1 -0
  193. package/dist/tools/grep-search.d.ts +8 -0
  194. package/dist/tools/grep-search.d.ts.map +1 -0
  195. package/dist/tools/grep-search.js +139 -0
  196. package/dist/tools/grep-search.js.map +1 -0
  197. package/dist/tools/list-dir.d.ts +16 -0
  198. package/dist/tools/list-dir.d.ts.map +1 -0
  199. package/dist/tools/list-dir.js +183 -0
  200. package/dist/tools/list-dir.js.map +1 -0
  201. package/dist/tools/multi-edit.d.ts +16 -0
  202. package/dist/tools/multi-edit.d.ts.map +1 -0
  203. package/dist/tools/multi-edit.js +163 -0
  204. package/dist/tools/multi-edit.js.map +1 -0
  205. package/dist/tools/notebook-edit.d.ts +31 -0
  206. package/dist/tools/notebook-edit.d.ts.map +1 -0
  207. package/dist/tools/notebook-edit.js +321 -0
  208. package/dist/tools/notebook-edit.js.map +1 -0
  209. package/dist/tools/registry.d.ts +16 -0
  210. package/dist/tools/registry.d.ts.map +1 -0
  211. package/dist/tools/registry.js +41 -0
  212. package/dist/tools/registry.js.map +1 -0
  213. package/dist/tools/shell-exec.d.ts +12 -0
  214. package/dist/tools/shell-exec.d.ts.map +1 -0
  215. package/dist/tools/shell-exec.js +261 -0
  216. package/dist/tools/shell-exec.js.map +1 -0
  217. package/dist/tools/sub-agent-manager.d.ts +57 -0
  218. package/dist/tools/sub-agent-manager.d.ts.map +1 -0
  219. package/dist/tools/sub-agent-manager.js +153 -0
  220. package/dist/tools/sub-agent-manager.js.map +1 -0
  221. package/dist/tools/sub-agent-status.d.ts +12 -0
  222. package/dist/tools/sub-agent-status.d.ts.map +1 -0
  223. package/dist/tools/sub-agent-status.js +59 -0
  224. package/dist/tools/sub-agent-status.js.map +1 -0
  225. package/dist/tools/sub-agent-terminate.d.ts +12 -0
  226. package/dist/tools/sub-agent-terminate.d.ts.map +1 -0
  227. package/dist/tools/sub-agent-terminate.js +55 -0
  228. package/dist/tools/sub-agent-terminate.js.map +1 -0
  229. package/dist/tools/sub-agent.d.ts +34 -0
  230. package/dist/tools/sub-agent.d.ts.map +1 -0
  231. package/dist/tools/sub-agent.js +140 -0
  232. package/dist/tools/sub-agent.js.map +1 -0
  233. package/dist/tools/system-info.d.ts +24 -0
  234. package/dist/tools/system-info.d.ts.map +1 -0
  235. package/dist/tools/system-info.js +220 -0
  236. package/dist/tools/system-info.js.map +1 -0
  237. package/dist/tools/todo.d.ts +16 -0
  238. package/dist/tools/todo.d.ts.map +1 -0
  239. package/dist/tools/todo.js +144 -0
  240. package/dist/tools/todo.js.map +1 -0
  241. package/dist/tools/types.d.ts +20 -0
  242. package/dist/tools/types.d.ts.map +1 -0
  243. package/dist/tools/types.js +3 -0
  244. package/dist/tools/types.js.map +1 -0
  245. package/dist/tools/view-diff.d.ts +11 -0
  246. package/dist/tools/view-diff.d.ts.map +1 -0
  247. package/dist/tools/view-diff.js +88 -0
  248. package/dist/tools/view-diff.js.map +1 -0
  249. package/dist/tools/view-repo-map.d.ts +18 -0
  250. package/dist/tools/view-repo-map.d.ts.map +1 -0
  251. package/dist/tools/view-repo-map.js +245 -0
  252. package/dist/tools/view-repo-map.js.map +1 -0
  253. package/dist/tools/web-fetch.d.ts +13 -0
  254. package/dist/tools/web-fetch.d.ts.map +1 -0
  255. package/dist/tools/web-fetch.js +106 -0
  256. package/dist/tools/web-fetch.js.map +1 -0
  257. package/dist/tools/web-search.d.ts +10 -0
  258. package/dist/tools/web-search.d.ts.map +1 -0
  259. package/dist/tools/web-search.js +106 -0
  260. package/dist/tools/web-search.js.map +1 -0
  261. package/dist/utils/gitignore.d.ts +10 -0
  262. package/dist/utils/gitignore.d.ts.map +1 -0
  263. package/dist/utils/gitignore.js +104 -0
  264. package/dist/utils/gitignore.js.map +1 -0
  265. package/dist/utils/lazy-apply.d.ts +45 -0
  266. package/dist/utils/lazy-apply.d.ts.map +1 -0
  267. package/dist/utils/lazy-apply.js +164 -0
  268. package/dist/utils/lazy-apply.js.map +1 -0
  269. package/dist/utils/memory.d.ts +36 -0
  270. package/dist/utils/memory.d.ts.map +1 -0
  271. package/dist/utils/memory.js +136 -0
  272. package/dist/utils/memory.js.map +1 -0
  273. package/dist/utils/path-matching.d.ts +24 -0
  274. package/dist/utils/path-matching.d.ts.map +1 -0
  275. package/dist/utils/path-matching.js +116 -0
  276. package/dist/utils/path-matching.js.map +1 -0
  277. package/dist/utils/path-safety.d.ts +13 -0
  278. package/dist/utils/path-safety.d.ts.map +1 -0
  279. package/dist/utils/path-safety.js +54 -0
  280. package/dist/utils/path-safety.js.map +1 -0
  281. package/dist/utils/project-config.d.ts +18 -0
  282. package/dist/utils/project-config.d.ts.map +1 -0
  283. package/dist/utils/project-config.js +76 -0
  284. package/dist/utils/project-config.js.map +1 -0
  285. package/dist/utils/search-match.d.ts +63 -0
  286. package/dist/utils/search-match.d.ts.map +1 -0
  287. package/dist/utils/search-match.js +426 -0
  288. package/dist/utils/search-match.js.map +1 -0
  289. package/dist/utils/shell-paths.d.ts +17 -0
  290. package/dist/utils/shell-paths.d.ts.map +1 -0
  291. package/dist/utils/shell-paths.js +107 -0
  292. package/dist/utils/shell-paths.js.map +1 -0
  293. package/dist/utils/streaming-diff.d.ts +45 -0
  294. package/dist/utils/streaming-diff.d.ts.map +1 -0
  295. package/dist/utils/streaming-diff.js +230 -0
  296. package/dist/utils/streaming-diff.js.map +1 -0
  297. package/dist/utils/todo.d.ts +47 -0
  298. package/dist/utils/todo.d.ts.map +1 -0
  299. package/dist/utils/todo.js +102 -0
  300. package/dist/utils/todo.js.map +1 -0
  301. package/package.json +23 -0
  302. package/src/agents/coordinator.ts +240 -0
  303. package/src/context-providers/clipboard.ts +48 -0
  304. package/src/context-providers/codebase.ts +274 -0
  305. package/src/context-providers/diff.ts +66 -0
  306. package/src/context-providers/docs.ts +160 -0
  307. package/src/context-providers/file-include.ts +54 -0
  308. package/src/context-providers/folder.ts +106 -0
  309. package/src/context-providers/git.ts +72 -0
  310. package/src/context-providers/index.ts +26 -0
  311. package/src/context-providers/open-files.ts +113 -0
  312. package/src/context-providers/problems.ts +100 -0
  313. package/src/context-providers/registry.ts +99 -0
  314. package/src/context-providers/terminal.ts +58 -0
  315. package/src/context-providers/tree.ts +161 -0
  316. package/src/context-providers/types.ts +84 -0
  317. package/src/context-providers/url.ts +138 -0
  318. package/src/effort/index.ts +177 -0
  319. package/src/hooks/index.ts +148 -0
  320. package/src/index.ts +114 -0
  321. package/src/indexing/README.md +267 -0
  322. package/src/indexing/chunker.ts +206 -0
  323. package/src/indexing/database.ts +299 -0
  324. package/src/indexing/index.ts +15 -0
  325. package/src/indexing/indexer.ts +383 -0
  326. package/src/indexing/recent-edits-cache.ts +150 -0
  327. package/src/indexing/types.ts +44 -0
  328. package/src/mcp/index.ts +33 -0
  329. package/src/mcp/manager.ts +385 -0
  330. package/src/oauth.ts +330 -0
  331. package/src/permissions/index.ts +1011 -0
  332. package/src/plan/index.ts +20 -0
  333. package/src/plan/manager.ts +233 -0
  334. package/src/rules/index.ts +28 -0
  335. package/src/rules/manager.ts +276 -0
  336. package/src/rules/types.ts +40 -0
  337. package/src/sandbox/filesystem.ts +135 -0
  338. package/src/sandbox/index.ts +9 -0
  339. package/src/sandbox/manager.ts +213 -0
  340. package/src/sandbox/network.ts +101 -0
  341. package/src/sandbox/types.ts +63 -0
  342. package/src/tools/ast-edit.ts +493 -0
  343. package/src/tools/code-verify.ts +143 -0
  344. package/src/tools/codebase-search.ts +117 -0
  345. package/src/tools/file-delete.ts +155 -0
  346. package/src/tools/file-edit.ts +115 -0
  347. package/src/tools/file-read.ts +195 -0
  348. package/src/tools/file-run.ts +158 -0
  349. package/src/tools/file-write.ts +104 -0
  350. package/src/tools/glob-search.ts +80 -0
  351. package/src/tools/grep-search.ts +120 -0
  352. package/src/tools/list-dir.ts +172 -0
  353. package/src/tools/multi-edit.ts +138 -0
  354. package/src/tools/notebook-edit.ts +342 -0
  355. package/src/tools/registry.ts +43 -0
  356. package/src/tools/shell-exec.ts +251 -0
  357. package/src/tools/sub-agent-manager.ts +183 -0
  358. package/src/tools/sub-agent-status.ts +67 -0
  359. package/src/tools/sub-agent-terminate.ts +62 -0
  360. package/src/tools/sub-agent.ts +162 -0
  361. package/src/tools/system-info.ts +248 -0
  362. package/src/tools/todo.ts +149 -0
  363. package/src/tools/types.ts +21 -0
  364. package/src/tools/view-diff.ts +99 -0
  365. package/src/tools/view-repo-map.ts +249 -0
  366. package/src/tools/web-fetch.ts +118 -0
  367. package/src/tools/web-search.ts +129 -0
  368. package/src/utils/gitignore.ts +73 -0
  369. package/src/utils/lazy-apply.ts +189 -0
  370. package/src/utils/memory.ts +124 -0
  371. package/src/utils/path-matching.ts +84 -0
  372. package/src/utils/path-safety.ts +19 -0
  373. package/src/utils/project-config.ts +41 -0
  374. package/src/utils/search-match.ts +495 -0
  375. package/src/utils/shell-paths.ts +79 -0
  376. package/src/utils/streaming-diff.ts +260 -0
  377. package/src/utils/todo.ts +115 -0
  378. package/tsconfig.json +18 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Multi-Agent Coordinator — Orchestrates multiple sub-agents for complex tasks.
3
+ *
4
+ * The coordinator pattern splits complex tasks into subtasks, assigns each
5
+ * to a specialized sub-agent, and merges results.
6
+ *
7
+ * Architecture:
8
+ * User Request
9
+ * │
10
+ * ┌───▼───┐
11
+ * │Coordinator│ ← Breaks task into subtasks
12
+ * └───┬───┘
13
+ * │
14
+ * ┌───┼───┬───┐
15
+ * │ │ │ │
16
+ * ▼ ▼ ▼ ▼
17
+ * Agent Agent Agent Agent ← Run in parallel
18
+ * │ │ │ │
19
+ * └───┼───┴───┘
20
+ * │
21
+ * ┌───▼───┐
22
+ * │ Merge │ ← Combine results
23
+ * └───────┘
24
+ *
25
+ * Learning note: This is the Scatter-Gather pattern. The coordinator
26
+ * "scatters" work to sub-agents and "gathers" their results. This is
27
+ * particularly effective for:
28
+ * - Searching across many files simultaneously
29
+ * - Making independent changes to different files
30
+ * - Running analysis tasks that don't depend on each other
31
+ */
32
+ /**
33
+ * A subtask assigned to a sub-agent.
34
+ */
35
+ export interface Subtask {
36
+ /** Unique subtask ID */
37
+ id: string;
38
+ /** Description of what this subtask should accomplish */
39
+ description: string;
40
+ /** System prompt override for this subtask's agent */
41
+ systemPrompt?: string;
42
+ /** Whether this subtask can run in parallel with others */
43
+ parallel: boolean;
44
+ /** Dependencies: IDs of subtasks that must complete first */
45
+ dependsOn: string[];
46
+ /** Current status */
47
+ status: "pending" | "running" | "completed" | "failed";
48
+ /** Result of the subtask (populated after completion) */
49
+ result?: string;
50
+ /** Error message if the subtask failed */
51
+ error?: string;
52
+ }
53
+ /**
54
+ * Callback interface for coordinator events.
55
+ */
56
+ export interface CoordinatorCallbacks {
57
+ /** Called when a subtask starts */
58
+ onSubtaskStart: (subtask: Subtask) => void;
59
+ /** Called when a subtask completes */
60
+ onSubtaskComplete: (subtask: Subtask) => void;
61
+ /** Called when a subtask fails */
62
+ onSubtaskError: (subtask: Subtask, error: Error) => void;
63
+ /** Called when all subtasks are complete */
64
+ onAllComplete: (results: Subtask[]) => void;
65
+ }
66
+ /**
67
+ * The function signature for running a sub-agent.
68
+ * This is provided by the AgentRunner — we don't import it directly
69
+ * to avoid circular dependencies between core and ai packages.
70
+ */
71
+ export type SubAgentRunner = (prompt: string, systemPrompt?: string) => Promise<string>;
72
+ export declare class AgentCoordinator {
73
+ private subtasks;
74
+ private runAgent;
75
+ constructor(runAgent: SubAgentRunner);
76
+ /**
77
+ * Add a subtask to the coordinator.
78
+ */
79
+ addSubtask(description: string, options?: {
80
+ systemPrompt?: string;
81
+ parallel?: boolean;
82
+ dependsOn?: string[];
83
+ }): Subtask;
84
+ /**
85
+ * Execute all subtasks respecting dependencies and parallelism.
86
+ *
87
+ * Algorithm:
88
+ * 1. Find all subtasks whose dependencies are met
89
+ * 2. Run parallel-safe ones concurrently
90
+ * 3. Run sequential ones in order
91
+ * 4. Repeat until all done
92
+ *
93
+ * Learning note: This is a topological sort execution — we process
94
+ * subtasks in dependency order, maximizing parallelism where possible.
95
+ */
96
+ execute(callbacks?: Partial<CoordinatorCallbacks>): Promise<Subtask[]>;
97
+ /**
98
+ * Run a single subtask using the sub-agent runner.
99
+ */
100
+ private runSubtask;
101
+ /**
102
+ * Get all subtask results as a formatted summary.
103
+ */
104
+ getSummary(): string;
105
+ /**
106
+ * Get all subtasks.
107
+ */
108
+ getSubtasks(): Subtask[];
109
+ /**
110
+ * Clear all subtasks.
111
+ */
112
+ clear(): void;
113
+ }
114
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAElB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,qBAAqB;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAEvD,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE3C,sCAAsC;IACtC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE9C,kCAAkC;IAClC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEzD,4CAA4C;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAExF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,EAAE,cAAc;IAIpC;;OAEG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,GACA,OAAO;IAcV;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAmD5E;;OAEG;YACW,UAAU;IAmBxB;;OAEG;IACH,UAAU,IAAI,MAAM;IAqBpB;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-Agent Coordinator — Orchestrates multiple sub-agents for complex tasks.
4
+ *
5
+ * The coordinator pattern splits complex tasks into subtasks, assigns each
6
+ * to a specialized sub-agent, and merges results.
7
+ *
8
+ * Architecture:
9
+ * User Request
10
+ * │
11
+ * ┌───▼───┐
12
+ * │Coordinator│ ← Breaks task into subtasks
13
+ * └───┬───┘
14
+ * │
15
+ * ┌───┼───┬───┐
16
+ * │ │ │ │
17
+ * ▼ ▼ ▼ ▼
18
+ * Agent Agent Agent Agent ← Run in parallel
19
+ * │ │ │ │
20
+ * └───┼───┴───┘
21
+ * │
22
+ * ┌───▼───┐
23
+ * │ Merge │ ← Combine results
24
+ * └───────┘
25
+ *
26
+ * Learning note: This is the Scatter-Gather pattern. The coordinator
27
+ * "scatters" work to sub-agents and "gathers" their results. This is
28
+ * particularly effective for:
29
+ * - Searching across many files simultaneously
30
+ * - Making independent changes to different files
31
+ * - Running analysis tasks that don't depend on each other
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.AgentCoordinator = void 0;
35
+ class AgentCoordinator {
36
+ subtasks = [];
37
+ runAgent;
38
+ constructor(runAgent) {
39
+ this.runAgent = runAgent;
40
+ }
41
+ /**
42
+ * Add a subtask to the coordinator.
43
+ */
44
+ addSubtask(description, options) {
45
+ const subtask = {
46
+ id: `subtask_${this.subtasks.length + 1}`,
47
+ description,
48
+ systemPrompt: options?.systemPrompt,
49
+ parallel: options?.parallel ?? true,
50
+ dependsOn: options?.dependsOn || [],
51
+ status: "pending",
52
+ };
53
+ this.subtasks.push(subtask);
54
+ return subtask;
55
+ }
56
+ /**
57
+ * Execute all subtasks respecting dependencies and parallelism.
58
+ *
59
+ * Algorithm:
60
+ * 1. Find all subtasks whose dependencies are met
61
+ * 2. Run parallel-safe ones concurrently
62
+ * 3. Run sequential ones in order
63
+ * 4. Repeat until all done
64
+ *
65
+ * Learning note: This is a topological sort execution — we process
66
+ * subtasks in dependency order, maximizing parallelism where possible.
67
+ */
68
+ async execute(callbacks) {
69
+ const completed = new Set();
70
+ while (completed.size < this.subtasks.length) {
71
+ // Find ready subtasks (all dependencies met)
72
+ const ready = this.subtasks.filter((t) => t.status === "pending" &&
73
+ t.dependsOn.every((dep) => completed.has(dep)));
74
+ if (ready.length === 0) {
75
+ // No ready tasks but not all complete — there's a dependency cycle
76
+ const stuck = this.subtasks.filter((t) => t.status === "pending");
77
+ for (const t of stuck) {
78
+ t.status = "failed";
79
+ t.error = "Dependency cycle detected";
80
+ }
81
+ break;
82
+ }
83
+ // Separate parallel and sequential tasks
84
+ const parallelTasks = ready.filter((t) => t.parallel);
85
+ const sequentialTasks = ready.filter((t) => !t.parallel);
86
+ // Run parallel tasks concurrently
87
+ if (parallelTasks.length > 0) {
88
+ await Promise.all(parallelTasks.map((task) => this.runSubtask(task, callbacks)));
89
+ for (const task of parallelTasks) {
90
+ if (task.status === "completed") {
91
+ completed.add(task.id);
92
+ }
93
+ }
94
+ }
95
+ // Run sequential tasks one at a time
96
+ for (const task of sequentialTasks) {
97
+ await this.runSubtask(task, callbacks);
98
+ if (task.status === "completed") {
99
+ completed.add(task.id);
100
+ }
101
+ }
102
+ }
103
+ callbacks?.onAllComplete?.(this.subtasks);
104
+ return this.subtasks;
105
+ }
106
+ /**
107
+ * Run a single subtask using the sub-agent runner.
108
+ */
109
+ async runSubtask(subtask, callbacks) {
110
+ subtask.status = "running";
111
+ callbacks?.onSubtaskStart?.(subtask);
112
+ try {
113
+ const result = await this.runAgent(subtask.description, subtask.systemPrompt);
114
+ subtask.result = result;
115
+ subtask.status = "completed";
116
+ callbacks?.onSubtaskComplete?.(subtask);
117
+ }
118
+ catch (err) {
119
+ subtask.status = "failed";
120
+ subtask.error = err instanceof Error ? err.message : String(err);
121
+ callbacks?.onSubtaskError?.(subtask, err instanceof Error ? err : new Error(String(err)));
122
+ }
123
+ }
124
+ /**
125
+ * Get all subtask results as a formatted summary.
126
+ */
127
+ getSummary() {
128
+ const lines = ["## Agent Coordinator Results\n"];
129
+ for (const task of this.subtasks) {
130
+ const icon = task.status === "completed" ? "✅"
131
+ : task.status === "failed" ? "❌"
132
+ : task.status === "running" ? "⏳"
133
+ : "⬜";
134
+ lines.push(`${icon} **${task.description}**`);
135
+ if (task.result) {
136
+ lines.push(` ${task.result.substring(0, 200)}`);
137
+ }
138
+ if (task.error) {
139
+ lines.push(` Error: ${task.error}`);
140
+ }
141
+ }
142
+ return lines.join("\n");
143
+ }
144
+ /**
145
+ * Get all subtasks.
146
+ */
147
+ getSubtasks() {
148
+ return [...this.subtasks];
149
+ }
150
+ /**
151
+ * Clear all subtasks.
152
+ */
153
+ clear() {
154
+ this.subtasks = [];
155
+ }
156
+ }
157
+ exports.AgentCoordinator = AgentCoordinator;
158
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ContextProvider, ContextResult, ContextResolveOptions } from "./types";
2
+ /**
3
+ * @clip — pastes clipboard content into the prompt.
4
+ * Works on macOS (pbpaste), Linux with xclip/xsel/wl-paste.
5
+ */
6
+ export declare class ClipboardContextProvider implements ContextProvider {
7
+ id: string;
8
+ trigger: string;
9
+ description: string;
10
+ requiresArg: boolean;
11
+ resolve(_arg?: string, _opts?: ContextResolveOptions): Promise<ContextResult>;
12
+ }
13
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/context-providers/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErF;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,EAAE,SAAe;IACjB,OAAO,SAAW;IAClB,WAAW,SAA8C;IACzD,WAAW,UAAS;IAEd,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;CAkCpF"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClipboardContextProvider = void 0;
4
+ const child_process_1 = require("child_process");
5
+ /**
6
+ * @clip — pastes clipboard content into the prompt.
7
+ * Works on macOS (pbpaste), Linux with xclip/xsel/wl-paste.
8
+ */
9
+ class ClipboardContextProvider {
10
+ id = "clipboard";
11
+ trigger = "@clip";
12
+ description = "Paste clipboard content into the message";
13
+ requiresArg = false;
14
+ async resolve(_arg, _opts) {
15
+ let content = "";
16
+ try {
17
+ const platform = process.platform;
18
+ if (platform === "darwin") {
19
+ content = (0, child_process_1.execSync)("pbpaste", { encoding: "utf8" });
20
+ }
21
+ else if (platform === "linux") {
22
+ // Try wl-paste (Wayland), then xclip, then xsel
23
+ try {
24
+ content = (0, child_process_1.execSync)("wl-paste --no-newline 2>/dev/null", { encoding: "utf8" });
25
+ }
26
+ catch {
27
+ try {
28
+ content = (0, child_process_1.execSync)("xclip -selection clipboard -o 2>/dev/null", { encoding: "utf8" });
29
+ }
30
+ catch {
31
+ content = (0, child_process_1.execSync)("xsel --clipboard --output 2>/dev/null", { encoding: "utf8" });
32
+ }
33
+ }
34
+ }
35
+ else {
36
+ return { label: "Clipboard", content: "", metadata: { source: "unsupported platform" } };
37
+ }
38
+ }
39
+ catch {
40
+ return { label: "Clipboard", content: "(clipboard is empty or unavailable)" };
41
+ }
42
+ const trimmed = content.trim();
43
+ if (!trimmed)
44
+ return { label: "Clipboard", content: "(clipboard is empty)" };
45
+ return {
46
+ label: "Clipboard",
47
+ content: `<clipboard>\n${trimmed}\n</clipboard>`,
48
+ metadata: { source: "system clipboard", itemCount: trimmed.split("\n").length },
49
+ };
50
+ }
51
+ }
52
+ exports.ClipboardContextProvider = ClipboardContextProvider;
53
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/context-providers/clipboard.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAGzC;;;GAGG;AACH,MAAa,wBAAwB;IACnC,EAAE,GAAG,WAAW,CAAC;IACjB,OAAO,GAAG,OAAO,CAAC;IAClB,WAAW,GAAG,0CAA0C,CAAC;IACzD,WAAW,GAAG,KAAK,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAC,IAAa,EAAE,KAA6B;QACxD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAA,wBAAQ,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChC,gDAAgD;gBAChD,IAAI,CAAC;oBACH,OAAO,GAAG,IAAA,wBAAQ,EAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChF,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBACH,OAAO,GAAG,IAAA,wBAAQ,EAAC,2CAA2C,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACxF,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,GAAG,IAAA,wBAAQ,EAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAE7E,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,gBAAgB,OAAO,gBAAgB;YAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SAChF,CAAC;IACJ,CAAC;CACF;AAxCD,4DAwCC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Codebase Context Provider — @codebase
3
+ *
4
+ * Semantic search across the entire repository.
5
+ * Finds the most relevant files/code for a given query.
6
+ *
7
+ * How it works:
8
+ * 1. User types @codebase followed by a search query
9
+ * 2. We search file names and content using glob + grep
10
+ * 3. Rank results by relevance (filename match > content match)
11
+ * 4. Return the top N most relevant code snippets
12
+ *
13
+ * Learning note: This is a text-based search approach (not embedding-based).
14
+ * For true semantic search, you'd want vector embeddings + a vector DB.
15
+ * But text search with smart ranking gets you 80% of the way there
16
+ * and works offline without any setup.
17
+ *
18
+ * Future enhancement: Add optional embedding-based indexing for
19
+ * projects that configure it.
20
+ */
21
+ import type { ContextProvider, ContextResult, ContextResolveOptions } from "./types";
22
+ export declare class CodebaseContextProvider implements ContextProvider {
23
+ id: string;
24
+ trigger: string;
25
+ description: string;
26
+ requiresArg: boolean;
27
+ resolve(arg?: string, options?: ContextResolveOptions): Promise<ContextResult>;
28
+ /**
29
+ * Search the codebase for a query string.
30
+ * Uses ripgrep (rg) if available for fast searching,
31
+ * otherwise falls back to a simple Node.js file walker.
32
+ */
33
+ private search;
34
+ /**
35
+ * Fast search using ripgrep (rg).
36
+ * Learning note: ripgrep respects .gitignore by default,
37
+ * which is exactly what we want.
38
+ */
39
+ private searchWithRipgrep;
40
+ /**
41
+ * Simple fallback search using Node.js file system.
42
+ * Slower but works everywhere without external dependencies.
43
+ */
44
+ private searchSimple;
45
+ }
46
+ //# sourceMappingURL=codebase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebase.d.ts","sourceRoot":"","sources":["../../src/context-providers/codebase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA2BrF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,EAAE,SAAc;IAChB,OAAO,SAAe;IACtB,WAAW,SAAkD;IAC7D,WAAW,UAAQ;IAEb,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDpF;;;;OAIG;YACW,MAAM;IAapB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoEzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAgErB"}