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,155 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SubAgentLoader = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const file_skill_loader_1 = require("../skills/file-skill-loader");
40
+ const logger_1 = require("../logging/logger");
41
+ /**
42
+ * Loads sub-agent definitions from a directory of AGENT.md files.
43
+ *
44
+ * Expected directory structure:
45
+ * ```
46
+ * subagents/
47
+ * ├── <agent-name>/
48
+ * │ └── AGENT.md # Frontmatter (metadata) + body (system prompt)
49
+ * ├── <another-agent>/
50
+ * │ └── AGENT.md
51
+ * ```
52
+ *
53
+ * The AGENT.md format:
54
+ * ```markdown
55
+ * ---
56
+ * name: code-reviewer
57
+ * description: Reviews code for bugs and style issues
58
+ * tools: read_file, grep_search, glob_search
59
+ * skills: code-review
60
+ * ---
61
+ * You are a code review specialist...
62
+ * ```
63
+ */
64
+ class SubAgentLoader {
65
+ directory;
66
+ agentFileName;
67
+ logger;
68
+ /**
69
+ * @param directory Path to the sub-agents root directory.
70
+ * @param agentFileName The markdown filename to look for (default: "AGENT.md").
71
+ * @param logger Logger instance (defaults to ConsoleLogger).
72
+ */
73
+ constructor(directory, agentFileName, logger) {
74
+ this.directory = path.resolve(directory);
75
+ this.agentFileName = agentFileName ?? "AGENT.md";
76
+ this.logger = logger ?? new logger_1.ConsoleLogger();
77
+ }
78
+ /**
79
+ * Get the root directory path.
80
+ */
81
+ getDirectory() {
82
+ return this.directory;
83
+ }
84
+ /**
85
+ * Scan the directory and return SubAgentDefinition objects for each
86
+ * subdirectory that contains a valid AGENT.md file.
87
+ *
88
+ * Subdirectories without an AGENT.md or without a `name` in frontmatter
89
+ * are skipped with a warning.
90
+ */
91
+ scan() {
92
+ const definitions = [];
93
+ let entries;
94
+ try {
95
+ entries = fs.readdirSync(this.directory, { withFileTypes: true });
96
+ }
97
+ catch {
98
+ return [];
99
+ }
100
+ for (const entry of entries) {
101
+ if (!entry.isDirectory())
102
+ continue;
103
+ if (entry.name.startsWith("."))
104
+ continue;
105
+ const def = this.loadDefinition(entry.name);
106
+ if (def) {
107
+ definitions.push(def);
108
+ }
109
+ }
110
+ return definitions;
111
+ }
112
+ /**
113
+ * Load a single sub-agent definition by name (the subdirectory name).
114
+ */
115
+ loadDefinition(dirName) {
116
+ const agentPath = path.join(this.directory, dirName, this.agentFileName);
117
+ let raw;
118
+ try {
119
+ raw = fs.readFileSync(agentPath, "utf-8");
120
+ }
121
+ catch {
122
+ this.logger.warn("SubAgent", `Skipping "${dirName}": no ${this.agentFileName} found.`);
123
+ return null;
124
+ }
125
+ const { frontmatter, body } = (0, file_skill_loader_1.parseFrontmatter)(raw);
126
+ const name = frontmatter.name?.trim();
127
+ if (!name) {
128
+ this.logger.warn("SubAgent", `Skipping "${dirName}": no "name" in frontmatter.`);
129
+ return null;
130
+ }
131
+ const tools = parseCsvList(frontmatter.tools);
132
+ const skills = parseCsvList(frontmatter.skills);
133
+ return {
134
+ name,
135
+ description: frontmatter.description?.trim() ?? "",
136
+ systemPrompt: body,
137
+ tools,
138
+ skills,
139
+ };
140
+ }
141
+ }
142
+ exports.SubAgentLoader = SubAgentLoader;
143
+ /**
144
+ * Parse a comma-separated string into a string array.
145
+ * Returns empty array for empty/absent input.
146
+ */
147
+ function parseCsvList(raw) {
148
+ if (!raw)
149
+ return [];
150
+ return raw
151
+ .split(",")
152
+ .map((s) => s.trim())
153
+ .filter(Boolean);
154
+ }
155
+ //# sourceMappingURL=subagent-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-loader.js","sourceRoot":"","sources":["../../src/subagent/subagent-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { SubAgentDefinition, SubAgentResult } from "./subagent-types";
2
+ import { LLMProvider } from "../llm/interface";
3
+ import { ToolRegistry } from "../tools/tool-registry";
4
+ import { ToolFilter } from "../tools/tool-filter";
5
+ import { SkillManager } from "../skills/skill-manager";
6
+ import { Logger } from "../logging/logger";
7
+ /**
8
+ * Manages sub-agent definitions, spawning, and result collection.
9
+ *
10
+ * The SubAgentManager is owned by the main agent. It:
11
+ * 1. Loads sub-agent definitions from a directory (AGENT.md files)
12
+ * 2. Spawns sub-agents on demand (fire-and-forget)
13
+ * 3. Collects completed results for the main agent to pick up
14
+ *
15
+ * Sub-agents are standard ReActAgent instances with:
16
+ * - A shared LLM provider (from the main agent)
17
+ * - A filtered tool set (only tools declared in the definition)
18
+ * - Pre-activated skills (as declared)
19
+ * - NO spawn tool (prevents nested agent creation)
20
+ */
21
+ export declare class SubAgentManager {
22
+ private logger;
23
+ /** Set the logger instance (called by the owning agent). */
24
+ setLogger(logger: Logger): void;
25
+ /** Registered definitions keyed by name. */
26
+ private definitions;
27
+ /** Currently pending (running) sub-agents. */
28
+ private pending;
29
+ /** Shared LLM provider injected by the main agent. */
30
+ private llmProvider?;
31
+ /**
32
+ * Optional LLM provider for sub-agents.
33
+ * When set, sub-agents use this instead of `llmProvider`.
34
+ * Enables model routing — use a different (e.g. cheaper) model for
35
+ * sub-agent tasks while keeping the main model for complex reasoning.
36
+ */
37
+ private subAgentLLM?;
38
+ /** Reference to the main agent's ToolRegistry for tool lookup. */
39
+ private toolRegistry?;
40
+ /** Reference to the main agent's SkillManager (fallback). */
41
+ private skillManager?;
42
+ /** Skills directory path for sub-agent skill loading. */
43
+ private skillsDir?;
44
+ /** Max wall-clock duration for a single sub-agent run (ms). Default: 5 min. */
45
+ private timeoutMs;
46
+ /**
47
+ * Default ToolFilter applied to every sub-agent's tool set.
48
+ * Useful for globally disallowing certain tools (e.g., sub-agent spawning).
49
+ * Per-definition `toolFilter` is applied on top of this one.
50
+ */
51
+ private defaultFilter?;
52
+ /** Counter for generating unique sub-agent run IDs. */
53
+ private runIdCounter;
54
+ /**
55
+ * Register sub-agent definitions from a directory of AGENT.md files.
56
+ */
57
+ registerFromDirectory(dir: string): number;
58
+ /**
59
+ * Register a single sub-agent definition programmatically.
60
+ */
61
+ register(definition: SubAgentDefinition): void;
62
+ /**
63
+ * Check whether any sub-agent definitions are registered.
64
+ *
65
+ * Used by the main agent to decide whether to include sub-agent delegation
66
+ * instructions in the system prompt.
67
+ */
68
+ hasDefinitions(): boolean;
69
+ /**
70
+ * Set shared resources from the main agent.
71
+ * Called once during agent init.
72
+ *
73
+ * @param defaultFilter Optional ToolFilter applied to all sub-agents.
74
+ * Use this to globally deny dangerous tools
75
+ * (e.g. `denylist("spawn_subagent")`).
76
+ * @param subAgentLLM Optional LLM provider for sub-agents.
77
+ * When set, sub-agents use this instead of the main
78
+ * `llmProvider`. Enables model routing.
79
+ */
80
+ bind(llmProvider: LLMProvider, toolRegistry: ToolRegistry, skillManager: SkillManager, skillsDir?: string, timeoutMs?: number, defaultFilter?: ToolFilter, subAgentLLM?: LLMProvider): void;
81
+ /**
82
+ * Spawn a sub-agent by definition name. Returns immediately with a run ID;
83
+ * the sub-agent executes asynchronously.
84
+ *
85
+ * Multiple instances of the same definition can run concurrently — each
86
+ * gets a unique run ID. This enables orchestrator patterns where the same
87
+ * sub-agent type handles different inputs in parallel.
88
+ *
89
+ * @param name The registered sub-agent definition name.
90
+ * @param input The task description passed to the sub-agent.
91
+ * @returns The unique run ID (used to correlate results later).
92
+ * @throws If the definition is unknown or the manager is not yet bound.
93
+ */
94
+ spawn(name: string, input: string): string;
95
+ /**
96
+ * Check all pending sub-agent runs for completion.
97
+ *
98
+ * Call this at the start of each ReAct iteration. Completed results
99
+ * are removed from the pending queue and returned; still-running
100
+ * entries remain queued.
101
+ *
102
+ * @returns Array of completed sub-agent results (empty if none finished).
103
+ */
104
+ pollCompleted(): Promise<SubAgentResult[]>;
105
+ /**
106
+ * Wait for all pending sub-agents to complete.
107
+ * Useful for graceful shutdown.
108
+ */
109
+ awaitAll(): Promise<SubAgentResult[]>;
110
+ /**
111
+ * Cancel all pending sub-agents without waiting for them to finish.
112
+ *
113
+ * Running sub-agents are marked as cancelled but their promises are
114
+ * kept alive. When the agent resumes, `collectOrphanedResults()` can
115
+ * recover completed results so the LLM sees sub-agent output instead
116
+ * of losing it forever.
117
+ */
118
+ cancelAll(): void;
119
+ /**
120
+ * Collect results from sub-agents that were cancelled mid-run.
121
+ *
122
+ * Call this after resuming a session to pick up any sub-agent results
123
+ * that completed while the agent was inactive. Results are removed from
124
+ * the pending queue and tagged so the LLM knows they were interrupted.
125
+ *
126
+ * @returns Completed results from cancelled sub-agents.
127
+ */
128
+ collectOrphanedResults(): SubAgentResult[];
129
+ hasRunning(): boolean;
130
+ getActiveCount(): number;
131
+ getDefinitions(): SubAgentDefinition[];
132
+ /**
133
+ * Build a formatted list of all registered sub-agents with their
134
+ * capabilities (returned by the `list_subagents` tool).
135
+ */
136
+ buildSubAgentList(): string;
137
+ /**
138
+ * Execute a sub-agent run and wrap the result in XML.
139
+ */
140
+ private executeRun;
141
+ private doExecute;
142
+ /**
143
+ * Build a ReActAgent instance from a sub-agent definition, with:
144
+ * - Filtered tool set (name allowlist + wildcard patterns → defaultFilter → definition.toolFilter)
145
+ * - Pre-activated skills (copied from main agent's SkillManager)
146
+ * - No spawn tool
147
+ * - Auto-detect disabled (skills are pre-activated)
148
+ *
149
+ * Tool name patterns support `*` as a wildcard. For example,
150
+ * `filesystem_*` matches all tools whose names start with `filesystem_`
151
+ * (e.g. MCP tools from the "filesystem" server).
152
+ */
153
+ private buildSubAgent;
154
+ /** Shared tail of buildSubAgent: wire up skills and return the agent. */
155
+ private finishBuildSubAgent;
156
+ /**
157
+ * Wrap the sub-agent output in an XML envelope for the main agent.
158
+ */
159
+ private wrapXml;
160
+ }
161
+ //# sourceMappingURL=subagent-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-manager.d.ts","sourceRoot":"","sources":["../../src/subagent/subagent-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAmB1D;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA+B;IAE7C,4DAA4D;IAC5D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,4CAA4C;IAC5C,OAAO,CAAC,WAAW,CAA8C;IAEjE,8CAA8C;IAC9C,OAAO,CAAC,OAAO,CAAoB;IAEnC,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC,kEAAkE;IAClE,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,6DAA6D;IAC7D,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,yDAAyD;IACzD,OAAO,CAAC,SAAS,CAAC,CAAS;IAE3B,+EAA+E;IAC/E,OAAO,CAAC,SAAS,CAAyB;IAE1C;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAC,CAAa;IAEnC,uDAAuD;IACvD,OAAO,CAAC,YAAY,CAAK;IAIzB;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAqB1C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAO9C;;;;;OAKG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;;;;;;;OAUG;IACH,IAAI,CACF,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,UAAU,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,IAAI;IAYP;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAkD1C;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAyBhD;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAQ3C;;;;;;;OAOG;IACH,SAAS,IAAI,IAAI;IAcjB;;;;;;;;OAQG;IACH,sBAAsB,IAAI,cAAc,EAAE;IAsB1C,UAAU,IAAI,OAAO;IAIrB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,kBAAkB,EAAE;IAItC;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAiB3B;;OAEG;YACW,UAAU;YAgCV,SAAS;IAmBvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAkFrB,yEAAyE;IACzE,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,OAAO;CAahB"}