kagent-ts 0.1.4 → 0.1.5

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 (341) hide show
  1. package/LICENSE +68 -21
  2. package/README.md +27 -371
  3. package/dist/compression/progressive-compressor.d.ts +66 -0
  4. package/dist/compression/progressive-compressor.d.ts.map +1 -0
  5. package/dist/compression/progressive-compressor.js +367 -0
  6. package/dist/compression/progressive-compressor.js.map +1 -0
  7. package/dist/compression/types.d.ts +1 -5
  8. package/dist/compression/types.d.ts.map +1 -1
  9. package/dist/context/context-manager.d.ts +34 -15
  10. package/dist/context/context-manager.d.ts.map +1 -1
  11. package/dist/context/context-manager.js +78 -28
  12. package/dist/context/context-manager.js.map +1 -1
  13. package/dist/context/types.d.ts +20 -4
  14. package/dist/context/types.d.ts.map +1 -1
  15. package/dist/core/agent.d.ts +354 -25
  16. package/dist/core/agent.d.ts.map +1 -1
  17. package/dist/core/agent.js +646 -64
  18. package/dist/core/agent.js.map +1 -1
  19. package/dist/core/fusion-agent.d.ts +207 -0
  20. package/dist/core/fusion-agent.d.ts.map +1 -0
  21. package/dist/core/fusion-agent.js +769 -0
  22. package/dist/core/fusion-agent.js.map +1 -0
  23. package/dist/core/hooks.d.ts +19 -7
  24. package/dist/core/hooks.d.ts.map +1 -1
  25. package/dist/core/plan-solve-agent.d.ts +1 -15
  26. package/dist/core/plan-solve-agent.d.ts.map +1 -1
  27. package/dist/core/plan-solve-agent.js +142 -117
  28. package/dist/core/plan-solve-agent.js.map +1 -1
  29. package/dist/core/react-agent.d.ts +0 -13
  30. package/dist/core/react-agent.d.ts.map +1 -1
  31. package/dist/core/react-agent.js +127 -102
  32. package/dist/core/react-agent.js.map +1 -1
  33. package/dist/core/response-schema.d.ts +65 -0
  34. package/dist/core/response-schema.d.ts.map +1 -1
  35. package/dist/core/response-schema.js +174 -1
  36. package/dist/core/response-schema.js.map +1 -1
  37. package/dist/core/system-prompts.d.ts +27 -0
  38. package/dist/core/system-prompts.d.ts.map +1 -0
  39. package/dist/core/system-prompts.js +112 -0
  40. package/dist/core/system-prompts.js.map +1 -0
  41. package/dist/eval/benchmark.d.ts +81 -0
  42. package/dist/eval/benchmark.d.ts.map +1 -0
  43. package/dist/eval/benchmark.js +292 -0
  44. package/dist/eval/benchmark.js.map +1 -0
  45. package/dist/eval/eval-runner.d.ts +79 -0
  46. package/dist/eval/eval-runner.d.ts.map +1 -0
  47. package/dist/eval/eval-runner.js +252 -0
  48. package/dist/eval/eval-runner.js.map +1 -0
  49. package/dist/eval/index.d.ts +7 -0
  50. package/dist/eval/index.d.ts.map +1 -0
  51. package/dist/eval/index.js +13 -0
  52. package/dist/eval/index.js.map +1 -0
  53. package/dist/eval/tool-call-evaluator.d.ts +72 -0
  54. package/dist/eval/tool-call-evaluator.d.ts.map +1 -0
  55. package/dist/eval/tool-call-evaluator.js +265 -0
  56. package/dist/eval/tool-call-evaluator.js.map +1 -0
  57. package/dist/eval/types.d.ts +219 -0
  58. package/dist/eval/types.d.ts.map +1 -0
  59. package/dist/eval/types.js +3 -0
  60. package/dist/eval/types.js.map +1 -0
  61. package/dist/index.d.ts +58 -14
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +116 -8
  64. package/dist/index.js.map +1 -1
  65. package/dist/llm/anthropic-provider.d.ts +141 -0
  66. package/dist/llm/anthropic-provider.d.ts.map +1 -0
  67. package/dist/llm/anthropic-provider.js +486 -0
  68. package/dist/llm/anthropic-provider.js.map +1 -0
  69. package/dist/llm/errors.d.ts +26 -0
  70. package/dist/llm/errors.d.ts.map +1 -0
  71. package/dist/llm/errors.js +19 -0
  72. package/dist/llm/errors.js.map +1 -0
  73. package/dist/llm/factory.d.ts +73 -0
  74. package/dist/llm/factory.d.ts.map +1 -0
  75. package/dist/llm/factory.js +77 -0
  76. package/dist/llm/factory.js.map +1 -0
  77. package/dist/llm/fallback-provider.d.ts +47 -0
  78. package/dist/llm/fallback-provider.d.ts.map +1 -0
  79. package/dist/llm/fallback-provider.js +91 -0
  80. package/dist/llm/fallback-provider.js.map +1 -0
  81. package/dist/llm/interface.d.ts +54 -11
  82. package/dist/llm/interface.d.ts.map +1 -1
  83. package/dist/llm/interface.js +34 -0
  84. package/dist/llm/interface.js.map +1 -1
  85. package/dist/llm/model-router.d.ts +126 -0
  86. package/dist/llm/model-router.d.ts.map +1 -0
  87. package/dist/llm/model-router.js +178 -0
  88. package/dist/llm/model-router.js.map +1 -0
  89. package/dist/llm/openai-provider.d.ts +8 -32
  90. package/dist/llm/openai-provider.d.ts.map +1 -1
  91. package/dist/llm/openai-provider.js +27 -60
  92. package/dist/llm/openai-provider.js.map +1 -1
  93. package/dist/llm/rate-limiter.d.ts +41 -0
  94. package/dist/llm/rate-limiter.d.ts.map +1 -0
  95. package/dist/llm/rate-limiter.js +93 -0
  96. package/dist/llm/rate-limiter.js.map +1 -0
  97. package/dist/llm/retry.d.ts +26 -0
  98. package/dist/llm/retry.d.ts.map +1 -0
  99. package/dist/llm/retry.js +44 -0
  100. package/dist/llm/retry.js.map +1 -0
  101. package/dist/llm/token-budget.d.ts +97 -0
  102. package/dist/llm/token-budget.d.ts.map +1 -0
  103. package/dist/llm/token-budget.js +115 -0
  104. package/dist/llm/token-budget.js.map +1 -0
  105. package/dist/logging/index.d.ts +2 -0
  106. package/dist/logging/index.d.ts.map +1 -0
  107. package/dist/logging/index.js +7 -0
  108. package/dist/logging/index.js.map +1 -0
  109. package/dist/logging/logger.d.ts +38 -0
  110. package/dist/logging/logger.d.ts.map +1 -0
  111. package/dist/logging/logger.js +34 -0
  112. package/dist/logging/logger.js.map +1 -0
  113. package/dist/mcp/mcp-client-manager.d.ts +10 -2
  114. package/dist/mcp/mcp-client-manager.d.ts.map +1 -1
  115. package/dist/mcp/mcp-client-manager.js +20 -9
  116. package/dist/mcp/mcp-client-manager.js.map +1 -1
  117. package/dist/memory/index.d.ts +3 -0
  118. package/dist/memory/index.d.ts.map +1 -0
  119. package/dist/memory/index.js +6 -0
  120. package/dist/memory/index.js.map +1 -0
  121. package/dist/memory/memory-manager.d.ts +119 -0
  122. package/dist/memory/memory-manager.d.ts.map +1 -0
  123. package/dist/memory/memory-manager.js +334 -0
  124. package/dist/memory/memory-manager.js.map +1 -0
  125. package/dist/messages/types.d.ts +2 -0
  126. package/dist/messages/types.d.ts.map +1 -1
  127. package/dist/orchestrator/index.d.ts +5 -0
  128. package/dist/orchestrator/index.d.ts.map +1 -0
  129. package/dist/orchestrator/index.js +13 -0
  130. package/dist/orchestrator/index.js.map +1 -0
  131. package/dist/orchestrator/json-extractor.d.ts +18 -0
  132. package/dist/orchestrator/json-extractor.d.ts.map +1 -0
  133. package/dist/orchestrator/json-extractor.js +111 -0
  134. package/dist/orchestrator/json-extractor.js.map +1 -0
  135. package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
  136. package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
  137. package/dist/orchestrator/orchestrator-agent.js +675 -0
  138. package/dist/orchestrator/orchestrator-agent.js.map +1 -0
  139. package/dist/orchestrator/orchestrator-response.d.ts +40 -0
  140. package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
  141. package/dist/orchestrator/orchestrator-response.js +275 -0
  142. package/dist/orchestrator/orchestrator-response.js.map +1 -0
  143. package/dist/orchestrator/orchestrator-types.d.ts +116 -0
  144. package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
  145. package/dist/orchestrator/orchestrator-types.js +3 -0
  146. package/dist/orchestrator/orchestrator-types.js.map +1 -0
  147. package/dist/preferences/preference-manager.d.ts +8 -3
  148. package/dist/preferences/preference-manager.d.ts.map +1 -1
  149. package/dist/preferences/preference-manager.js +17 -4
  150. package/dist/preferences/preference-manager.js.map +1 -1
  151. package/dist/rag/chroma-store.d.ts +52 -0
  152. package/dist/rag/chroma-store.d.ts.map +1 -0
  153. package/dist/rag/chroma-store.js +110 -0
  154. package/dist/rag/chroma-store.js.map +1 -0
  155. package/dist/rag/document-loader.d.ts +21 -0
  156. package/dist/rag/document-loader.d.ts.map +1 -0
  157. package/dist/rag/document-loader.js +129 -0
  158. package/dist/rag/document-loader.js.map +1 -0
  159. package/dist/rag/embedding-provider.d.ts +36 -0
  160. package/dist/rag/embedding-provider.d.ts.map +1 -0
  161. package/dist/rag/embedding-provider.js +74 -0
  162. package/dist/rag/embedding-provider.js.map +1 -0
  163. package/dist/rag/index.d.ts +17 -0
  164. package/dist/rag/index.d.ts.map +1 -0
  165. package/dist/rag/index.js +27 -0
  166. package/dist/rag/index.js.map +1 -0
  167. package/dist/rag/keyword-index.d.ts +53 -0
  168. package/dist/rag/keyword-index.d.ts.map +1 -0
  169. package/dist/rag/keyword-index.js +161 -0
  170. package/dist/rag/keyword-index.js.map +1 -0
  171. package/dist/rag/llm-reranker.d.ts +36 -0
  172. package/dist/rag/llm-reranker.d.ts.map +1 -0
  173. package/dist/rag/llm-reranker.js +95 -0
  174. package/dist/rag/llm-reranker.js.map +1 -0
  175. package/dist/rag/rag-manager.d.ts +54 -0
  176. package/dist/rag/rag-manager.d.ts.map +1 -0
  177. package/dist/rag/rag-manager.js +179 -0
  178. package/dist/rag/rag-manager.js.map +1 -0
  179. package/dist/rag/rag-types.d.ts +143 -0
  180. package/dist/rag/rag-types.d.ts.map +1 -0
  181. package/dist/rag/rag-types.js +9 -0
  182. package/dist/rag/rag-types.js.map +1 -0
  183. package/dist/rag/rrf.d.ts +47 -0
  184. package/dist/rag/rrf.d.ts.map +1 -0
  185. package/dist/rag/rrf.js +70 -0
  186. package/dist/rag/rrf.js.map +1 -0
  187. package/dist/rag/search-knowledge.d.ts +24 -0
  188. package/dist/rag/search-knowledge.d.ts.map +1 -0
  189. package/dist/rag/search-knowledge.js +86 -0
  190. package/dist/rag/search-knowledge.js.map +1 -0
  191. package/dist/rag/text-splitter.d.ts +25 -0
  192. package/dist/rag/text-splitter.d.ts.map +1 -0
  193. package/dist/rag/text-splitter.js +136 -0
  194. package/dist/rag/text-splitter.js.map +1 -0
  195. package/dist/rag/vector-store.d.ts +34 -0
  196. package/dist/rag/vector-store.d.ts.map +1 -0
  197. package/dist/rag/vector-store.js +73 -0
  198. package/dist/rag/vector-store.js.map +1 -0
  199. package/dist/reflection/error-notebook.d.ts +125 -0
  200. package/dist/reflection/error-notebook.d.ts.map +1 -0
  201. package/dist/reflection/error-notebook.js +368 -0
  202. package/dist/reflection/error-notebook.js.map +1 -0
  203. package/dist/reflection/index.d.ts +8 -0
  204. package/dist/reflection/index.d.ts.map +1 -0
  205. package/dist/reflection/index.js +12 -0
  206. package/dist/reflection/index.js.map +1 -0
  207. package/dist/reflection/memory-reflector.d.ts +97 -0
  208. package/dist/reflection/memory-reflector.d.ts.map +1 -0
  209. package/dist/reflection/memory-reflector.js +215 -0
  210. package/dist/reflection/memory-reflector.js.map +1 -0
  211. package/dist/reflection/reflection-agent.d.ts +105 -0
  212. package/dist/reflection/reflection-agent.d.ts.map +1 -0
  213. package/dist/reflection/reflection-agent.js +234 -0
  214. package/dist/reflection/reflection-agent.js.map +1 -0
  215. package/dist/reflection/reflection-hook.d.ts +50 -0
  216. package/dist/reflection/reflection-hook.d.ts.map +1 -0
  217. package/dist/reflection/reflection-hook.js +108 -0
  218. package/dist/reflection/reflection-hook.js.map +1 -0
  219. package/dist/rules/project-rules.d.ts +47 -0
  220. package/dist/rules/project-rules.d.ts.map +1 -0
  221. package/dist/rules/project-rules.js +166 -0
  222. package/dist/rules/project-rules.js.map +1 -0
  223. package/dist/security/boundaries.d.ts +81 -0
  224. package/dist/security/boundaries.d.ts.map +1 -0
  225. package/dist/security/boundaries.js +158 -0
  226. package/dist/security/boundaries.js.map +1 -0
  227. package/dist/security/index.d.ts +2 -0
  228. package/dist/security/index.d.ts.map +1 -0
  229. package/dist/security/index.js +11 -0
  230. package/dist/security/index.js.map +1 -0
  231. package/dist/session/session-types.d.ts +25 -4
  232. package/dist/session/session-types.d.ts.map +1 -1
  233. package/dist/skills/file-skill-loader.d.ts +4 -6
  234. package/dist/skills/file-skill-loader.d.ts.map +1 -1
  235. package/dist/skills/file-skill-loader.js +8 -19
  236. package/dist/skills/file-skill-loader.js.map +1 -1
  237. package/dist/skills/index.d.ts +1 -1
  238. package/dist/skills/index.d.ts.map +1 -1
  239. package/dist/skills/index.js +1 -2
  240. package/dist/skills/index.js.map +1 -1
  241. package/dist/skills/skill-manager.d.ts +18 -8
  242. package/dist/skills/skill-manager.d.ts.map +1 -1
  243. package/dist/skills/skill-manager.js +58 -36
  244. package/dist/skills/skill-manager.js.map +1 -1
  245. package/dist/skills/types.d.ts +3 -8
  246. package/dist/skills/types.d.ts.map +1 -1
  247. package/dist/subagent/index.d.ts +4 -0
  248. package/dist/subagent/index.d.ts.map +1 -0
  249. package/dist/subagent/index.js +8 -0
  250. package/dist/subagent/index.js.map +1 -0
  251. package/dist/subagent/subagent-loader.d.ts +53 -0
  252. package/dist/subagent/subagent-loader.d.ts.map +1 -0
  253. package/dist/subagent/subagent-loader.js +155 -0
  254. package/dist/subagent/subagent-loader.js.map +1 -0
  255. package/dist/subagent/subagent-manager.d.ts +161 -0
  256. package/dist/subagent/subagent-manager.d.ts.map +1 -0
  257. package/dist/subagent/subagent-manager.js +468 -0
  258. package/dist/subagent/subagent-manager.js.map +1 -0
  259. package/dist/subagent/subagent-types.d.ts +77 -0
  260. package/dist/subagent/subagent-types.d.ts.map +1 -0
  261. package/dist/subagent/subagent-types.js +3 -0
  262. package/dist/subagent/subagent-types.js.map +1 -0
  263. package/dist/tools/builtin/bash.d.ts +3 -0
  264. package/dist/tools/builtin/bash.d.ts.map +1 -0
  265. package/dist/tools/builtin/bash.js +87 -0
  266. package/dist/tools/builtin/bash.js.map +1 -0
  267. package/dist/tools/builtin/edit-file.d.ts.map +1 -1
  268. package/dist/tools/builtin/edit-file.js +1 -0
  269. package/dist/tools/builtin/edit-file.js.map +1 -1
  270. package/dist/tools/builtin/index.d.ts +14 -0
  271. package/dist/tools/builtin/index.d.ts.map +1 -1
  272. package/dist/tools/builtin/index.js +45 -1
  273. package/dist/tools/builtin/index.js.map +1 -1
  274. package/dist/tools/builtin/list-errors.d.ts +7 -0
  275. package/dist/tools/builtin/list-errors.d.ts.map +1 -0
  276. package/dist/tools/builtin/list-errors.js +64 -0
  277. package/dist/tools/builtin/list-errors.js.map +1 -0
  278. package/dist/tools/builtin/list-subagents.d.ts +7 -0
  279. package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
  280. package/dist/tools/builtin/list-subagents.js +21 -0
  281. package/dist/tools/builtin/list-subagents.js.map +1 -0
  282. package/dist/tools/builtin/recall.d.ts +11 -0
  283. package/dist/tools/builtin/recall.d.ts.map +1 -0
  284. package/dist/tools/builtin/recall.js +60 -0
  285. package/dist/tools/builtin/recall.js.map +1 -0
  286. package/dist/tools/builtin/remember.d.ts +12 -0
  287. package/dist/tools/builtin/remember.d.ts.map +1 -0
  288. package/dist/tools/builtin/remember.js +72 -0
  289. package/dist/tools/builtin/remember.js.map +1 -0
  290. package/dist/tools/builtin/skill.d.ts +14 -0
  291. package/dist/tools/builtin/skill.d.ts.map +1 -0
  292. package/dist/tools/builtin/skill.js +71 -0
  293. package/dist/tools/builtin/skill.js.map +1 -0
  294. package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
  295. package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
  296. package/dist/tools/builtin/spawn-subagent.js +43 -0
  297. package/dist/tools/builtin/spawn-subagent.js.map +1 -0
  298. package/dist/tools/builtin/web-fetch.d.ts +3 -0
  299. package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
  300. package/dist/tools/builtin/web-fetch.js +101 -0
  301. package/dist/tools/builtin/web-fetch.js.map +1 -0
  302. package/dist/tools/builtin/write-file.d.ts.map +1 -1
  303. package/dist/tools/builtin/write-file.js +1 -0
  304. package/dist/tools/builtin/write-file.js.map +1 -1
  305. package/dist/tools/circuit-breaker.d.ts +19 -10
  306. package/dist/tools/circuit-breaker.d.ts.map +1 -1
  307. package/dist/tools/circuit-breaker.js +22 -11
  308. package/dist/tools/circuit-breaker.js.map +1 -1
  309. package/dist/tools/error-tracker.d.ts +28 -44
  310. package/dist/tools/error-tracker.d.ts.map +1 -1
  311. package/dist/tools/error-tracker.js +39 -156
  312. package/dist/tools/error-tracker.js.map +1 -1
  313. package/dist/tools/tool-filter.d.ts +70 -0
  314. package/dist/tools/tool-filter.d.ts.map +1 -0
  315. package/dist/tools/tool-filter.js +92 -0
  316. package/dist/tools/tool-filter.js.map +1 -0
  317. package/dist/tools/tool-output-truncator.d.ts +36 -0
  318. package/dist/tools/tool-output-truncator.d.ts.map +1 -0
  319. package/dist/tools/tool-output-truncator.js +117 -0
  320. package/dist/tools/tool-output-truncator.js.map +1 -0
  321. package/dist/tools/tool-registry.d.ts +25 -9
  322. package/dist/tools/tool-registry.d.ts.map +1 -1
  323. package/dist/tools/tool-registry.js +77 -28
  324. package/dist/tools/tool-registry.js.map +1 -1
  325. package/dist/tools/tool-validator.d.ts +13 -0
  326. package/dist/tools/tool-validator.d.ts.map +1 -0
  327. package/dist/tools/tool-validator.js +116 -0
  328. package/dist/tools/tool-validator.js.map +1 -0
  329. package/dist/tools/types.d.ts +86 -3
  330. package/dist/tools/types.d.ts.map +1 -1
  331. package/dist/tools/types.js +51 -2
  332. package/dist/tools/types.js.map +1 -1
  333. package/dist/trace/trace-logger.d.ts +30 -4
  334. package/dist/trace/trace-logger.d.ts.map +1 -1
  335. package/dist/trace/trace-logger.js +82 -6
  336. package/dist/trace/trace-logger.js.map +1 -1
  337. package/package.json +13 -4
  338. package/dist/compression/sliding-window.d.ts +0 -21
  339. package/dist/compression/sliding-window.d.ts.map +0 -1
  340. package/dist/compression/sliding-window.js +0 -44
  341. package/dist/compression/sliding-window.js.map +0 -1
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubAgentManager = void 0;
4
+ const subagent_loader_1 = require("./subagent-loader");
5
+ const react_agent_1 = require("../core/react-agent");
6
+ const tool_registry_1 = require("../tools/tool-registry");
7
+ const skill_manager_1 = require("../skills/skill-manager");
8
+ const logger_1 = require("../logging/logger");
9
+ // ─── Helpers ────────────────────────────────────────────────────────────────
10
+ /**
11
+ * Convert a simple glob pattern (only `*` wildcards) to a RegExp.
12
+ *
13
+ * `*` matches any sequence of characters (like shell glob, not regex `.*`).
14
+ * All other regex-special characters are escaped so they match literally.
15
+ *
16
+ * @example
17
+ * globToRegex("filesystem_*") → /^filesystem_.*$/
18
+ * globToRegex("*_read") → /^.*_read$/
19
+ */
20
+ function globToRegex(pattern) {
21
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
22
+ return new RegExp(`^${escaped}$`);
23
+ }
24
+ /**
25
+ * Manages sub-agent definitions, spawning, and result collection.
26
+ *
27
+ * The SubAgentManager is owned by the main agent. It:
28
+ * 1. Loads sub-agent definitions from a directory (AGENT.md files)
29
+ * 2. Spawns sub-agents on demand (fire-and-forget)
30
+ * 3. Collects completed results for the main agent to pick up
31
+ *
32
+ * Sub-agents are standard ReActAgent instances with:
33
+ * - A shared LLM provider (from the main agent)
34
+ * - A filtered tool set (only tools declared in the definition)
35
+ * - Pre-activated skills (as declared)
36
+ * - NO spawn tool (prevents nested agent creation)
37
+ */
38
+ class SubAgentManager {
39
+ logger = new logger_1.ConsoleLogger();
40
+ /** Set the logger instance (called by the owning agent). */
41
+ setLogger(logger) {
42
+ this.logger = logger;
43
+ }
44
+ /** Registered definitions keyed by name. */
45
+ definitions = new Map();
46
+ /** Currently pending (running) sub-agents. */
47
+ pending = [];
48
+ /** Shared LLM provider injected by the main agent. */
49
+ llmProvider;
50
+ /**
51
+ * Optional LLM provider for sub-agents.
52
+ * When set, sub-agents use this instead of `llmProvider`.
53
+ * Enables model routing — use a different (e.g. cheaper) model for
54
+ * sub-agent tasks while keeping the main model for complex reasoning.
55
+ */
56
+ subAgentLLM;
57
+ /** Reference to the main agent's ToolRegistry for tool lookup. */
58
+ toolRegistry;
59
+ /** Reference to the main agent's SkillManager (fallback). */
60
+ skillManager;
61
+ /** Skills directory path for sub-agent skill loading. */
62
+ skillsDir;
63
+ /** Max wall-clock duration for a single sub-agent run (ms). Default: 5 min. */
64
+ timeoutMs = 5 * 60 * 1000;
65
+ /**
66
+ * Default ToolFilter applied to every sub-agent's tool set.
67
+ * Useful for globally disallowing certain tools (e.g., sub-agent spawning).
68
+ * Per-definition `toolFilter` is applied on top of this one.
69
+ */
70
+ defaultFilter;
71
+ /** Counter for generating unique sub-agent run IDs. */
72
+ runIdCounter = 0;
73
+ // ─── Registration ─────────────────────────────────────────────────────────
74
+ /**
75
+ * Register sub-agent definitions from a directory of AGENT.md files.
76
+ */
77
+ registerFromDirectory(dir) {
78
+ const loader = new subagent_loader_1.SubAgentLoader(dir, undefined, this.logger);
79
+ const definitions = loader.scan();
80
+ let count = 0;
81
+ for (const def of definitions) {
82
+ if (this.definitions.has(def.name)) {
83
+ this.logger.warn("SubAgent", `Skipping "${def.name}": already registered.`);
84
+ continue;
85
+ }
86
+ this.definitions.set(def.name, def);
87
+ count++;
88
+ }
89
+ if (count > 0) {
90
+ this.logger.info("SubAgent", `Registered ${count} sub-agent(s) from ${dir}.`);
91
+ }
92
+ return count;
93
+ }
94
+ /**
95
+ * Register a single sub-agent definition programmatically.
96
+ */
97
+ register(definition) {
98
+ if (this.definitions.has(definition.name)) {
99
+ throw new Error(`SubAgent "${definition.name}" is already registered.`);
100
+ }
101
+ this.definitions.set(definition.name, definition);
102
+ }
103
+ /**
104
+ * Check whether any sub-agent definitions are registered.
105
+ *
106
+ * Used by the main agent to decide whether to include sub-agent delegation
107
+ * instructions in the system prompt.
108
+ */
109
+ hasDefinitions() {
110
+ return this.definitions.size > 0;
111
+ }
112
+ /**
113
+ * Set shared resources from the main agent.
114
+ * Called once during agent init.
115
+ *
116
+ * @param defaultFilter Optional ToolFilter applied to all sub-agents.
117
+ * Use this to globally deny dangerous tools
118
+ * (e.g. `denylist("spawn_subagent")`).
119
+ * @param subAgentLLM Optional LLM provider for sub-agents.
120
+ * When set, sub-agents use this instead of the main
121
+ * `llmProvider`. Enables model routing.
122
+ */
123
+ bind(llmProvider, toolRegistry, skillManager, skillsDir, timeoutMs, defaultFilter, subAgentLLM) {
124
+ this.llmProvider = llmProvider;
125
+ this.toolRegistry = toolRegistry;
126
+ this.skillManager = skillManager;
127
+ this.skillsDir = skillsDir;
128
+ if (timeoutMs !== undefined)
129
+ this.timeoutMs = timeoutMs;
130
+ this.defaultFilter = defaultFilter;
131
+ this.subAgentLLM = subAgentLLM;
132
+ }
133
+ // ─── Spawn ────────────────────────────────────────────────────────────────
134
+ /**
135
+ * Spawn a sub-agent by definition name. Returns immediately with a run ID;
136
+ * the sub-agent executes asynchronously.
137
+ *
138
+ * Multiple instances of the same definition can run concurrently — each
139
+ * gets a unique run ID. This enables orchestrator patterns where the same
140
+ * sub-agent type handles different inputs in parallel.
141
+ *
142
+ * @param name The registered sub-agent definition name.
143
+ * @param input The task description passed to the sub-agent.
144
+ * @returns The unique run ID (used to correlate results later).
145
+ * @throws If the definition is unknown or the manager is not yet bound.
146
+ */
147
+ spawn(name, input) {
148
+ const definition = this.definitions.get(name);
149
+ if (!definition) {
150
+ const available = Array.from(this.definitions.keys()).join(", ") || "none";
151
+ throw new Error(`Unknown sub-agent: "${name}". Available: ${available}`);
152
+ }
153
+ if (!this.llmProvider || !this.toolRegistry || !this.skillManager) {
154
+ throw new Error("SubAgentManager is not bound to an LLM provider / ToolRegistry / SkillManager. " +
155
+ "Call bind() before spawn().");
156
+ }
157
+ const runId = `${name}_${++this.runIdCounter}_${Date.now()}`;
158
+ const pending = {
159
+ subAgentId: runId,
160
+ name,
161
+ startedAt: Date.now(),
162
+ resolved: null,
163
+ promise: Promise.resolve(undefined), // placeholder
164
+ };
165
+ // Fire-and-forget: start the sub-agent run, store the result
166
+ pending.promise = this.executeRun(name, runId, definition, input, pending.startedAt)
167
+ .then((r) => { pending.resolved = r; return r; })
168
+ .catch((err) => {
169
+ const message = err instanceof Error ? err.message : String(err);
170
+ const fallback = {
171
+ subAgentId: runId,
172
+ name,
173
+ success: false,
174
+ output: this.wrapXml(name, runId, false, message, Date.now() - pending.startedAt),
175
+ durationMs: Date.now() - pending.startedAt,
176
+ };
177
+ pending.resolved = fallback;
178
+ return fallback;
179
+ });
180
+ this.pending.push(pending);
181
+ this.logger.info("SubAgent", `Spawned "${name}" (run: ${runId}).`);
182
+ return runId;
183
+ }
184
+ // ─── Poll ─────────────────────────────────────────────────────────────────
185
+ /**
186
+ * Check all pending sub-agent runs for completion.
187
+ *
188
+ * Call this at the start of each ReAct iteration. Completed results
189
+ * are removed from the pending queue and returned; still-running
190
+ * entries remain queued.
191
+ *
192
+ * @returns Array of completed sub-agent results (empty if none finished).
193
+ */
194
+ async pollCompleted() {
195
+ if (this.pending.length === 0)
196
+ return [];
197
+ // Yield the event loop so in-flight promises can make progress
198
+ await new Promise((r) => setImmediate(r));
199
+ const results = [];
200
+ const stillPending = [];
201
+ for (const run of this.pending) {
202
+ if (run.resolved !== null) {
203
+ results.push(run.resolved);
204
+ this.logger.info("SubAgent", `"${run.name}" (run: ${run.subAgentId}) completed in ${run.resolved.durationMs}ms.`);
205
+ }
206
+ else {
207
+ stillPending.push(run);
208
+ }
209
+ }
210
+ this.pending = stillPending;
211
+ return results;
212
+ }
213
+ /**
214
+ * Wait for all pending sub-agents to complete.
215
+ * Useful for graceful shutdown.
216
+ */
217
+ async awaitAll() {
218
+ const results = await Promise.all(this.pending.map((r) => r.promise));
219
+ this.pending = [];
220
+ return results;
221
+ }
222
+ // ─── Cancel ───────────────────────────────────────────────────────────────
223
+ /**
224
+ * Cancel all pending sub-agents without waiting for them to finish.
225
+ *
226
+ * Running sub-agents are marked as cancelled but their promises are
227
+ * kept alive. When the agent resumes, `collectOrphanedResults()` can
228
+ * recover completed results so the LLM sees sub-agent output instead
229
+ * of losing it forever.
230
+ */
231
+ cancelAll() {
232
+ if (this.pending.length === 0)
233
+ return;
234
+ let marked = 0;
235
+ for (const run of this.pending) {
236
+ if (!run.cancelled && run.resolved === null) {
237
+ run.cancelled = true;
238
+ marked++;
239
+ }
240
+ }
241
+ if (marked > 0) {
242
+ this.logger.info("SubAgent", `Marked ${marked} pending sub-agent(s) as cancelled (results preserved).`);
243
+ }
244
+ }
245
+ /**
246
+ * Collect results from sub-agents that were cancelled mid-run.
247
+ *
248
+ * Call this after resuming a session to pick up any sub-agent results
249
+ * that completed while the agent was inactive. Results are removed from
250
+ * the pending queue and tagged so the LLM knows they were interrupted.
251
+ *
252
+ * @returns Completed results from cancelled sub-agents.
253
+ */
254
+ collectOrphanedResults() {
255
+ const results = [];
256
+ const stillPending = [];
257
+ for (const run of this.pending) {
258
+ if (run.cancelled && run.resolved !== null) {
259
+ const tagged = {
260
+ ...run.resolved,
261
+ output: `[Interrupted by user — result recovered on resume]\n\n${run.resolved.output}`,
262
+ };
263
+ results.push(tagged);
264
+ }
265
+ else {
266
+ stillPending.push(run);
267
+ }
268
+ }
269
+ this.pending = stillPending;
270
+ return results;
271
+ }
272
+ // ─── Queries ──────────────────────────────────────────────────────────────
273
+ hasRunning() {
274
+ return this.pending.length > 0;
275
+ }
276
+ getActiveCount() {
277
+ return this.pending.length;
278
+ }
279
+ getDefinitions() {
280
+ return Array.from(this.definitions.values());
281
+ }
282
+ /**
283
+ * Build a formatted list of all registered sub-agents with their
284
+ * capabilities (returned by the `list_subagents` tool).
285
+ */
286
+ buildSubAgentList() {
287
+ if (this.definitions.size === 0)
288
+ return "No sub-agents registered.";
289
+ const lines = [];
290
+ for (const def of this.definitions.values()) {
291
+ lines.push(`- **${def.name}**: ${def.description}`);
292
+ if (def.tools.length > 0) {
293
+ lines.push(` Tools: ${def.tools.join(", ")}`);
294
+ }
295
+ if (def.skills.length > 0) {
296
+ lines.push(` Skills: ${def.skills.join(", ")}`);
297
+ }
298
+ }
299
+ return lines.join("\n");
300
+ }
301
+ // ─── Internal ─────────────────────────────────────────────────────────────
302
+ /**
303
+ * Execute a sub-agent run and wrap the result in XML.
304
+ */
305
+ async executeRun(name, runId, definition, input, startedAt) {
306
+ const runPromise = this.doExecute(name, runId, definition, input, startedAt);
307
+ // Wrap with timeout
308
+ const timeoutPromise = new Promise((_, reject) => {
309
+ setTimeout(() => reject(new Error(`Sub-agent "${name}" timed out after ${this.timeoutMs / 1000}s.`)), this.timeoutMs);
310
+ });
311
+ try {
312
+ return await Promise.race([runPromise, timeoutPromise]);
313
+ }
314
+ catch (err) {
315
+ const message = err instanceof Error ? err.message : String(err);
316
+ const durationMs = Date.now() - startedAt;
317
+ return {
318
+ subAgentId: runId,
319
+ name,
320
+ success: false,
321
+ output: this.wrapXml(name, runId, false, message, durationMs),
322
+ durationMs,
323
+ };
324
+ }
325
+ }
326
+ async doExecute(name, runId, definition, input, startedAt) {
327
+ const agent = this.buildSubAgent(definition);
328
+ const output = await agent.run(input);
329
+ const durationMs = Date.now() - startedAt;
330
+ return {
331
+ subAgentId: runId,
332
+ name,
333
+ success: true,
334
+ output: this.wrapXml(name, runId, true, output, durationMs),
335
+ durationMs,
336
+ };
337
+ }
338
+ /**
339
+ * Build a ReActAgent instance from a sub-agent definition, with:
340
+ * - Filtered tool set (name allowlist + wildcard patterns → defaultFilter → definition.toolFilter)
341
+ * - Pre-activated skills (copied from main agent's SkillManager)
342
+ * - No spawn tool
343
+ * - Auto-detect disabled (skills are pre-activated)
344
+ *
345
+ * Tool name patterns support `*` as a wildcard. For example,
346
+ * `filesystem_*` matches all tools whose names start with `filesystem_`
347
+ * (e.g. MCP tools from the "filesystem" server).
348
+ */
349
+ buildSubAgent(definition) {
350
+ // Look up declared tools from the main agent's registry.
351
+ // Supports wildcard patterns (e.g. "filesystem_*" matches all tools
352
+ // from the "filesystem" MCP server). Uses a Map for deduplication.
353
+ const toolMap = new Map();
354
+ const allToolNames = this.toolRegistry.toolNames;
355
+ const allTools = this.toolRegistry.getTools();
356
+ for (const toolPattern of definition.tools) {
357
+ if (toolPattern.includes("*")) {
358
+ // Wildcard pattern — match against all tool names in the registry
359
+ const regex = globToRegex(toolPattern);
360
+ let matched = 0;
361
+ for (const toolName of allToolNames) {
362
+ if (regex.test(toolName)) {
363
+ const tool = allTools.find((t) => t.name === toolName);
364
+ if (tool && !toolMap.has(toolName)) {
365
+ toolMap.set(toolName, tool);
366
+ matched++;
367
+ }
368
+ }
369
+ }
370
+ if (matched === 0) {
371
+ this.logger.warn("SubAgent", `Pattern "${toolPattern}" requested by "${definition.name}" matched no tools.`);
372
+ }
373
+ }
374
+ else {
375
+ // Exact match (existing behavior)
376
+ const tool = this.toolRegistry.getTool(toolPattern);
377
+ if (tool) {
378
+ toolMap.set(toolPattern, tool);
379
+ }
380
+ else {
381
+ this.logger.warn("SubAgent", `Tool "${toolPattern}" requested by "${definition.name}" not found in registry.`);
382
+ }
383
+ }
384
+ }
385
+ const tools = Array.from(toolMap.values());
386
+ // Build a dedicated ToolRegistry for this sub-agent
387
+ const toolRegistry = new tool_registry_1.ToolRegistry();
388
+ if (tools.length > 0) {
389
+ toolRegistry.registerMany(tools);
390
+ }
391
+ // Compose filters: name allowlist applied first, then defaultFilter,
392
+ // then definition-level toolFilter. Each layer narrows the set.
393
+ if (this.defaultFilter || definition.toolFilter) {
394
+ const filteredRegistry = new tool_registry_1.ToolRegistry();
395
+ const namesOnly = toolRegistry.toolNames;
396
+ const allTools = this.toolRegistry.getTools();
397
+ for (const toolName of namesOnly) {
398
+ const tool = allTools.find((t) => t.name === toolName);
399
+ if (!tool)
400
+ continue;
401
+ let pass = true;
402
+ if (this.defaultFilter && !this.defaultFilter.filter(tool)) {
403
+ pass = false;
404
+ }
405
+ if (pass && definition.toolFilter && !definition.toolFilter.filter(tool)) {
406
+ pass = false;
407
+ }
408
+ if (pass) {
409
+ filteredRegistry.register(tool);
410
+ }
411
+ }
412
+ // Replace with the doubly-filtered registry
413
+ // (reuse the variable for the rest of the method)
414
+ return this.finishBuildSubAgent(definition, filteredRegistry);
415
+ }
416
+ return this.finishBuildSubAgent(definition, toolRegistry);
417
+ }
418
+ /** Shared tail of buildSubAgent: wire up skills and return the agent. */
419
+ finishBuildSubAgent(definition, toolRegistry) {
420
+ // Build a dedicated SkillManager with declared skills pre-activated.
421
+ // Use registerFromDirectory when skillsDir is available so lazy-loading
422
+ // works correctly (populates systemPrompt from disk).
423
+ const skillManager = new skill_manager_1.SkillManager();
424
+ if (this.skillsDir) {
425
+ skillManager.registerFromDirectory(this.skillsDir);
426
+ }
427
+ for (const skillName of definition.skills) {
428
+ if (skillManager.has(skillName)) {
429
+ skillManager.activate(skillName);
430
+ }
431
+ else {
432
+ this.logger.warn("SubAgent", `Skill "${skillName}" requested by "${definition.name}" not found.`);
433
+ }
434
+ }
435
+ // Build system prompt: sub-agent definition prompt + active skill content
436
+ const systemPrompt = definition.systemPrompt;
437
+ // Select the LLM provider for this sub-agent:
438
+ // subAgentLLM (from AgentConfig) takes priority over the main model.
439
+ const effectiveLLM = this.subAgentLLM ?? this.llmProvider;
440
+ return new react_agent_1.ReActAgent({
441
+ llm: effectiveLLM,
442
+ systemPrompt,
443
+ toolRegistry,
444
+ skillManager,
445
+ maxIterations: 10,
446
+ });
447
+ }
448
+ /**
449
+ * Wrap the sub-agent output in an XML envelope for the main agent.
450
+ */
451
+ wrapXml(name, runId, success, output, durationMs) {
452
+ return [
453
+ `<subagent-result name="${escapeXml(name)}" id="${runId}" success="${success}" duration_ms="${durationMs}">`,
454
+ output,
455
+ "</subagent-result>",
456
+ ].join("\n");
457
+ }
458
+ }
459
+ exports.SubAgentManager = SubAgentManager;
460
+ /** Escape special XML characters. */
461
+ function escapeXml(s) {
462
+ return s
463
+ .replace(/&/g, "&amp;")
464
+ .replace(/</g, "&lt;")
465
+ .replace(/>/g, "&gt;")
466
+ .replace(/"/g, "&quot;");
467
+ }
468
+ //# sourceMappingURL=subagent-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-manager.js","sourceRoot":"","sources":["../../src/subagent/subagent-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import type { ToolFilter } from "../tools/tool-filter";
2
+ /**
3
+ * SubAgent type definitions.
4
+ *
5
+ * Sub-agents are lightweight ReAct agents that the main agent can spawn
6
+ * on demand. Each sub-agent is defined by a `.md` file with frontmatter
7
+ * declaring its name, description, available tools, and skills.
8
+ */
9
+ /**
10
+ * Declarative definition of a sub-agent, read from an AGENT.md file
11
+ * or constructed programmatically.
12
+ */
13
+ export interface SubAgentDefinition {
14
+ /** Unique identifier (used as the spawn target name). */
15
+ name: string;
16
+ /** Human-readable description shown to the main agent's LLM. */
17
+ description: string;
18
+ /** System prompt content (body of the AGENT.md file). */
19
+ systemPrompt: string;
20
+ /**
21
+ * Tool name patterns from the main agent's ToolRegistry that this sub-agent
22
+ * can use.
23
+ *
24
+ * Supports two forms:
25
+ * - **Exact names**: `"echo"`, `"bash"` — matches a single tool by name.
26
+ * - **Wildcard patterns**: `"filesystem_*"` — matches all tools whose names
27
+ * match the glob (e.g. all MCP tools from the "filesystem" server).
28
+ * Only `*` is supported (matches any sequence of characters).
29
+ *
30
+ * When `toolFilter` is also provided, the filter is applied on top of this
31
+ * allowlist (both must pass).
32
+ */
33
+ tools: string[];
34
+ /**
35
+ * Optional ToolFilter for finer-grained control over which tools the
36
+ * sub-agent can access. Applied AFTER the `tools` allowlist.
37
+ * Use built-in factories like `allowlist()`, `denylist()`, `pattern()`,
38
+ * or combine with `all()` / `any()`.
39
+ */
40
+ toolFilter?: ToolFilter;
41
+ /** Skill names to activate when the sub-agent starts. */
42
+ skills: string[];
43
+ }
44
+ /**
45
+ * Runtime status of a spawned sub-agent.
46
+ */
47
+ export type SubAgentStatus = "running" | "completed" | "error";
48
+ /**
49
+ * Result returned when a sub-agent completes.
50
+ */
51
+ export interface SubAgentResult {
52
+ /** Unique run ID (generated at spawn time). */
53
+ subAgentId: string;
54
+ /** Sub-agent definition name. */
55
+ name: string;
56
+ /** Whether the run completed without error. */
57
+ success: boolean;
58
+ /** The final output (answer text or error message). */
59
+ output: string;
60
+ /** Wall-clock duration of the run in milliseconds. */
61
+ durationMs: number;
62
+ }
63
+ /**
64
+ * Pending sub-agent run — stored internally while the
65
+ * sub-agent is executing asynchronously.
66
+ */
67
+ export interface PendingRun {
68
+ subAgentId: string;
69
+ name: string;
70
+ startedAt: number;
71
+ promise: Promise<SubAgentResult>;
72
+ /** Set to the result once the promise resolves. */
73
+ resolved: SubAgentResult | null;
74
+ /** Whether this run was interrupted by user cancellation. */
75
+ cancelled?: boolean;
76
+ }
77
+ //# sourceMappingURL=subagent-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-types.d.ts","sourceRoot":"","sources":["../../src/subagent/subagent-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yDAAyD;IACzD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,mDAAmD;IACnD,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=subagent-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-types.js","sourceRoot":"","sources":["../../src/subagent/subagent-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { Tool } from "../types";
2
+ export declare const BashTool: Tool;
3
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAMhC,eAAO,MAAM,QAAQ,EAAE,IAoGtB,CAAC"}