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,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BashTool = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const DEFAULT_TIMEOUT_MS = 30_000;
6
+ const MAX_TIMEOUT_MS = 120_000;
7
+ const MAX_OUTPUT_BYTES = 50 * 1024;
8
+ exports.BashTool = {
9
+ name: "bash",
10
+ description: "Execute a shell command in the current working directory. " +
11
+ "Captures stdout and stderr. Commands are limited to 120 seconds maximum. " +
12
+ "Output is limited to 50 KB. This tool is useful for running build scripts, " +
13
+ "test suites, or any command-line tool. " +
14
+ "⚠️ WARNING: This is an irreversible system operation — approval is required.",
15
+ parameters: {
16
+ type: "object",
17
+ properties: {
18
+ command: {
19
+ type: "string",
20
+ description: "The shell command to execute. Must be a single command string. " +
21
+ "Pipe and redirect operators (|, >, <, &&, ||) are supported.",
22
+ },
23
+ workdir: {
24
+ type: "string",
25
+ description: "Working directory for the command (defaults to the current directory).",
26
+ },
27
+ timeout: {
28
+ type: "number",
29
+ description: `Maximum execution time in milliseconds (default: ${DEFAULT_TIMEOUT_MS / 1000}s, max: ${MAX_TIMEOUT_MS / 1000}s).`,
30
+ },
31
+ },
32
+ required: ["command"],
33
+ },
34
+ requireApproval: true,
35
+ async execute(args) {
36
+ const command = String(args.command ?? "");
37
+ const workdir = args.workdir ? String(args.workdir) : undefined;
38
+ const timeoutMs = Math.min(typeof args.timeout === "number" ? args.timeout : DEFAULT_TIMEOUT_MS, MAX_TIMEOUT_MS);
39
+ if (!command.trim()) {
40
+ return "Error: Command must not be empty.";
41
+ }
42
+ return new Promise((resolve) => {
43
+ const child = (0, child_process_1.exec)(command, {
44
+ cwd: workdir ?? process.cwd(),
45
+ timeout: timeoutMs,
46
+ maxBuffer: MAX_OUTPUT_BYTES,
47
+ shell: process.env.SHELL || (process.platform === "win32" ? "cmd.exe" : "/bin/sh"),
48
+ }, (error, stdout, stderr) => {
49
+ const exitCode = error?.code ?? 0;
50
+ const signal = error?.signal;
51
+ let output = `(exit code: ${exitCode})\n`;
52
+ if (stdout.trim()) {
53
+ output += stdout.trimEnd() + "\n";
54
+ }
55
+ else {
56
+ output += "(no stdout)\n";
57
+ }
58
+ if (stderr.trim()) {
59
+ output += "\n(stderr:\n" + stderr.trimEnd() + "\n)";
60
+ }
61
+ if (signal) {
62
+ output += `\n(process killed by signal: ${signal})`;
63
+ }
64
+ if (error && error.code === "ENOENT") {
65
+ resolve(`Error: Command not found or shell not available.\n` +
66
+ `Make sure the command exists and is in your PATH.\n\n${output}`);
67
+ return;
68
+ }
69
+ resolve(output);
70
+ });
71
+ // Ensure the process is killed after timeout
72
+ const killTimer = setTimeout(() => {
73
+ if (child.exitCode === null) {
74
+ child.kill("SIGTERM");
75
+ setTimeout(() => {
76
+ if (child.exitCode === null) {
77
+ child.kill("SIGKILL");
78
+ }
79
+ }, 2000);
80
+ }
81
+ }, timeoutMs);
82
+ child.on("close", () => clearTimeout(killTimer));
83
+ child.on("exit", () => clearTimeout(killTimer));
84
+ });
85
+ },
86
+ };
87
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,IA0F1B,CAAC"}
1
+ {"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,IA2F1B,CAAC"}
@@ -119,5 +119,6 @@ exports.EditFileTool = {
119
119
  return `Error editing file "${resolvedPath}": ${message}`;
120
120
  }
121
121
  },
122
+ requireApproval: true,
122
123
  };
123
124
  //# sourceMappingURL=edit-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit-file.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,25 @@ import { Tool } from "../types";
4
4
  * Array of all built-in tools.
5
5
  */
6
6
  export declare const BUILTIN_TOOLS: Tool[];
7
+ /**
8
+ * Names of every built-in tool (both static and dynamically-created).
9
+ * Used to distinguish framework tools from MCP / user-registered tools.
10
+ */
11
+ export declare const BUILTIN_TOOL_NAMES: Set<string>;
7
12
  export { ReadFileTool } from "./read-file";
8
13
  export { WriteFileTool } from "./write-file";
9
14
  export { EditFileTool } from "./edit-file";
10
15
  export { GrepSearchTool } from "./grep-search";
11
16
  export { GlobSearchTool } from "./glob-search";
17
+ export { WebFetchTool } from "./web-fetch";
18
+ export { BashTool } from "./bash";
19
+ export { createListSubagentsTool } from "./list-subagents";
20
+ export { createSpawnSubagentTool } from "./spawn-subagent";
21
+ export { createListErrorsTool } from "./list-errors";
22
+ export { createSkillTool } from "./skill";
23
+ export { createRememberTool } from "./remember";
24
+ export { createRecallTool } from "./recall";
25
+ export { createSearchKnowledgeTool, createListKnowledgeDocumentsTool } from "../../rag/search-knowledge";
12
26
  /**
13
27
  * Register all built-in tools into the given registry.
14
28
  * Silently skips tools that are already registered.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,IAAI,EAM/B,CAAC;AAGF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,UAAQ,GAChB,IAAI,CAYN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAShC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,IAAI,EAQ/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAgB7B,CAAC;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAEzG;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,UAAQ,GAChB,IAAI,CAYN"}
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GlobSearchTool = exports.GrepSearchTool = exports.EditFileTool = exports.WriteFileTool = exports.ReadFileTool = exports.BUILTIN_TOOLS = void 0;
3
+ exports.createListKnowledgeDocumentsTool = exports.createSearchKnowledgeTool = exports.createRecallTool = exports.createRememberTool = exports.createSkillTool = exports.createListErrorsTool = exports.createSpawnSubagentTool = exports.createListSubagentsTool = exports.BashTool = exports.WebFetchTool = exports.GlobSearchTool = exports.GrepSearchTool = exports.EditFileTool = exports.WriteFileTool = exports.ReadFileTool = exports.BUILTIN_TOOL_NAMES = exports.BUILTIN_TOOLS = void 0;
4
4
  exports.registerAllBuiltinTools = registerAllBuiltinTools;
5
5
  const read_file_1 = require("./read-file");
6
6
  const write_file_1 = require("./write-file");
7
7
  const edit_file_1 = require("./edit-file");
8
8
  const grep_search_1 = require("./grep-search");
9
9
  const glob_search_1 = require("./glob-search");
10
+ const web_fetch_1 = require("./web-fetch");
11
+ const bash_1 = require("./bash");
10
12
  /**
11
13
  * Array of all built-in tools.
12
14
  */
@@ -16,7 +18,30 @@ exports.BUILTIN_TOOLS = [
16
18
  edit_file_1.EditFileTool,
17
19
  grep_search_1.GrepSearchTool,
18
20
  glob_search_1.GlobSearchTool,
21
+ web_fetch_1.WebFetchTool,
22
+ bash_1.BashTool,
19
23
  ];
24
+ /**
25
+ * Names of every built-in tool (both static and dynamically-created).
26
+ * Used to distinguish framework tools from MCP / user-registered tools.
27
+ */
28
+ exports.BUILTIN_TOOL_NAMES = new Set([
29
+ "read_file",
30
+ "write_file",
31
+ "edit_file",
32
+ "glob_search",
33
+ "grep_search",
34
+ "web_fetch",
35
+ "bash",
36
+ "skill",
37
+ "spawn_subagent",
38
+ "list_subagents",
39
+ "remember",
40
+ "recall",
41
+ "list_errors",
42
+ "search_knowledge",
43
+ "list_knowledge_documents",
44
+ ]);
20
45
  // Re-export individual tools
21
46
  var read_file_2 = require("./read-file");
22
47
  Object.defineProperty(exports, "ReadFileTool", { enumerable: true, get: function () { return read_file_2.ReadFileTool; } });
@@ -28,6 +53,25 @@ var grep_search_2 = require("./grep-search");
28
53
  Object.defineProperty(exports, "GrepSearchTool", { enumerable: true, get: function () { return grep_search_2.GrepSearchTool; } });
29
54
  var glob_search_2 = require("./glob-search");
30
55
  Object.defineProperty(exports, "GlobSearchTool", { enumerable: true, get: function () { return glob_search_2.GlobSearchTool; } });
56
+ var web_fetch_2 = require("./web-fetch");
57
+ Object.defineProperty(exports, "WebFetchTool", { enumerable: true, get: function () { return web_fetch_2.WebFetchTool; } });
58
+ var bash_2 = require("./bash");
59
+ Object.defineProperty(exports, "BashTool", { enumerable: true, get: function () { return bash_2.BashTool; } });
60
+ var list_subagents_1 = require("./list-subagents");
61
+ Object.defineProperty(exports, "createListSubagentsTool", { enumerable: true, get: function () { return list_subagents_1.createListSubagentsTool; } });
62
+ var spawn_subagent_1 = require("./spawn-subagent");
63
+ Object.defineProperty(exports, "createSpawnSubagentTool", { enumerable: true, get: function () { return spawn_subagent_1.createSpawnSubagentTool; } });
64
+ var list_errors_1 = require("./list-errors");
65
+ Object.defineProperty(exports, "createListErrorsTool", { enumerable: true, get: function () { return list_errors_1.createListErrorsTool; } });
66
+ var skill_1 = require("./skill");
67
+ Object.defineProperty(exports, "createSkillTool", { enumerable: true, get: function () { return skill_1.createSkillTool; } });
68
+ var remember_1 = require("./remember");
69
+ Object.defineProperty(exports, "createRememberTool", { enumerable: true, get: function () { return remember_1.createRememberTool; } });
70
+ var recall_1 = require("./recall");
71
+ Object.defineProperty(exports, "createRecallTool", { enumerable: true, get: function () { return recall_1.createRecallTool; } });
72
+ var search_knowledge_1 = require("../../rag/search-knowledge");
73
+ Object.defineProperty(exports, "createSearchKnowledgeTool", { enumerable: true, get: function () { return search_knowledge_1.createSearchKnowledgeTool; } });
74
+ Object.defineProperty(exports, "createListKnowledgeDocumentsTool", { enumerable: true, get: function () { return search_knowledge_1.createListKnowledgeDocumentsTool; } });
31
75
  /**
32
76
  * Register all built-in tools into the given registry.
33
77
  * Silently skips tools that are already registered.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":";;;AAkCA,0DAeC;AA/CD,2CAA2C;AAC3C,6CAA6C;AAC7C,2CAA2C;AAC3C,+CAA+C;AAC/C,+CAA+C;AAE/C;;GAEG;AACU,QAAA,aAAa,GAAW;IACnC,wBAAY;IACZ,0BAAa;IACb,wBAAY;IACZ,4BAAc;IACd,4BAAc;CACf,CAAC;AAEF,6BAA6B;AAC7B,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AAEvB;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,QAAsB,EACtB,SAAS,GAAG,KAAK;IAEjB,KAAK,MAAM,IAAI,IAAI,qBAAa,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,qBAAqB;QACvB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":";;;AAqEA,0DAeC;AAlFD,2CAA2C;AAC3C,6CAA6C;AAC7C,2CAA2C;AAC3C,+CAA+C;AAC/C,+CAA+C;AAC/C,2CAA2C;AAC3C,iCAAkC;AAElC;;GAEG;AACU,QAAA,aAAa,GAAW;IACnC,wBAAY;IACZ,0BAAa;IACb,wBAAY;IACZ,4BAAc;IACd,4BAAc;IACd,wBAAY;IACZ,eAAQ;CACT,CAAC;AAEF;;;GAGG;AACU,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,aAAa;IACb,aAAa;IACb,WAAW;IACX,MAAM;IACN,OAAO;IACP,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;IACV,QAAQ;IACR,aAAa;IACb,kBAAkB;IAClB,0BAA0B;CAC3B,CAAC,CAAC;AAEH,6BAA6B;AAC7B,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AACjB,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAChC,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAChC,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAC7B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AACxB,uCAAgD;AAAvC,8GAAA,kBAAkB,OAAA;AAC3B,mCAA4C;AAAnC,0GAAA,gBAAgB,OAAA;AACzB,+DAAyG;AAAhG,6HAAA,yBAAyB,OAAA;AAAE,oIAAA,gCAAgC,OAAA;AAEpE;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,QAAsB,EACtB,SAAS,GAAG,KAAK;IAEjB,KAAK,MAAM,IAAI,IAAI,qBAAa,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,qBAAqB;QACvB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Tool } from "../types";
2
+ import type { ToolRegistry } from "../tool-registry";
3
+ /**
4
+ * Factory: create a `list_errors` tool bound to a ToolRegistry instance.
5
+ */
6
+ export declare function createListErrorsTool(registry: ToolRegistry): Tool;
7
+ //# sourceMappingURL=list-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-errors.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/list-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CA6DjE"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createListErrorsTool = createListErrorsTool;
4
+ /**
5
+ * Factory: create a `list_errors` tool bound to a ToolRegistry instance.
6
+ */
7
+ function createListErrorsTool(registry) {
8
+ return {
9
+ name: "list_errors",
10
+ description: "List recent tool errors and their status. " +
11
+ "Use this before retrying a failed tool to check known failure patterns, " +
12
+ "or to see which tools have been disabled by the circuit breaker.",
13
+ parameters: {
14
+ type: "object",
15
+ properties: {
16
+ tool_name: {
17
+ type: "string",
18
+ description: "Optional: filter errors by a specific tool name.",
19
+ },
20
+ unresolved_only: {
21
+ type: "boolean",
22
+ description: "If true, only show unresolved errors. Default: false.",
23
+ },
24
+ },
25
+ },
26
+ async execute(params) {
27
+ const toolName = params.tool_name;
28
+ const unresolvedOnly = params.unresolved_only;
29
+ const tracker = registry.getErrorTracker();
30
+ if (!tracker) {
31
+ return "Error tracker is not configured. Set `toolErrorTracker` in AgentConfig to enable.";
32
+ }
33
+ const summaries = tracker.getAllSummaries();
34
+ const filtered = summaries.filter((s) => {
35
+ if (toolName && s.toolName !== toolName)
36
+ return false;
37
+ if (unresolvedOnly && s.resolved)
38
+ return false;
39
+ return true;
40
+ });
41
+ if (filtered.length === 0) {
42
+ return "No error traces found" +
43
+ (toolName ? ` for tool "${toolName}"` : "") +
44
+ (unresolvedOnly ? " (unresolved)" : "") +
45
+ ".";
46
+ }
47
+ const lines = [
48
+ `Found ${filtered.length} error trace(s):`,
49
+ "",
50
+ ];
51
+ for (const s of filtered) {
52
+ const status = s.resolved ? "✅ resolved" : "❌ unresolved";
53
+ lines.push(`- **${s.toolName}** [${s.traceId}] ${status}`);
54
+ lines.push(` First error: ${s.firstError || "(none)"}`);
55
+ lines.push(` Attempts: ${s.errorCount}`);
56
+ if (s.resolution)
57
+ lines.push(` Resolution: ${s.resolution}`);
58
+ lines.push("");
59
+ }
60
+ return lines.join("\n");
61
+ },
62
+ };
63
+ }
64
+ //# sourceMappingURL=list-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-errors.js","sourceRoot":"","sources":["../../../src/tools/builtin/list-errors.ts"],"names":[],"mappings":";;AAMA,oDA6DC;AAhED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAAsB;IACzD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,4CAA4C;YAC5C,0EAA0E;YAC1E,kEAAkE;QACpE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,uDAAuD;iBACrE;aACF;SACF;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAA+B,CAAC;YACxD,MAAM,cAAc,GAAG,MAAM,CAAC,eAAsC,CAAC;YAErE,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,mFAAmF,CAAC;YAC7F,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBACtD,IAAI,cAAc,IAAI,CAAC,CAAC,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,uBAAuB;oBAC5B,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3C,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC;YACR,CAAC;YAED,MAAM,KAAK,GAAG;gBACZ,SAAS,QAAQ,CAAC,MAAM,kBAAkB;gBAC1C,EAAE;aACH,CAAC;YAEF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,CAAC,UAAU;oBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Tool } from "../types";
2
+ import type { SubAgentManager } from "../../subagent/subagent-manager";
3
+ /**
4
+ * Factory: create a `list_subagents` tool bound to a SubAgentManager instance.
5
+ */
6
+ export declare function createListSubagentsTool(manager: SubAgentManager): Tool;
7
+ //# sourceMappingURL=list-subagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-subagents.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/list-subagents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAetE"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createListSubagentsTool = createListSubagentsTool;
4
+ /**
5
+ * Factory: create a `list_subagents` tool bound to a SubAgentManager instance.
6
+ */
7
+ function createListSubagentsTool(manager) {
8
+ return {
9
+ name: "list_subagents",
10
+ description: "List all available sub-agents with their names, descriptions, tools, and skills. " +
11
+ "Call this first before using spawn_subagent so you can pick the right one.",
12
+ parameters: { type: "object", properties: {} },
13
+ async execute() {
14
+ const list = manager.buildSubAgentList();
15
+ if (list === "No sub-agents registered.")
16
+ return list;
17
+ return "Available sub-agents:\n\n" + list;
18
+ },
19
+ };
20
+ }
21
+ //# sourceMappingURL=list-subagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-subagents.js","sourceRoot":"","sources":["../../../src/tools/builtin/list-subagents.ts"],"names":[],"mappings":";;AAMA,0DAeC;AAlBD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,mFAAmF;YACnF,4EAA4E;QAC9E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAE9C,KAAK,CAAC,OAAO;YACX,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,2BAA2B;gBAAE,OAAO,IAAI,CAAC;YAEtD,OAAO,2BAA2B,GAAG,IAAI,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Tool } from "../types";
2
+ import type { MemoryManager } from "../../memory/memory-manager";
3
+ /**
4
+ * Create a `recall` tool so the LLM can load full memory content on demand.
5
+ *
6
+ * The system prompt only lists memory names to save space; the LLM calls
7
+ * this tool to load the complete markdown body when a memory is relevant
8
+ * to the current task.
9
+ */
10
+ export declare function createRecallTool(memoryManager: MemoryManager): Tool;
11
+ //# sourceMappingURL=recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAyCnE"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRecallTool = createRecallTool;
4
+ const boundaries_1 = require("../../security/boundaries");
5
+ /**
6
+ * Create a `recall` tool so the LLM can load full memory content on demand.
7
+ *
8
+ * The system prompt only lists memory names to save space; the LLM calls
9
+ * this tool to load the complete markdown body when a memory is relevant
10
+ * to the current task.
11
+ */
12
+ function createRecallTool(memoryManager) {
13
+ return {
14
+ name: "recall",
15
+ description: "Load the full content of a long-term memory. The system prompt lists " +
16
+ "available memory names — call this when a memory is relevant to the " +
17
+ "current task. Pass 'all' to load every memory at once.",
18
+ parameters: {
19
+ type: "object",
20
+ properties: {
21
+ name: {
22
+ type: "string",
23
+ description: "The memory name to load (from the list in the system prompt), " +
24
+ "or 'all' to load every memory.",
25
+ },
26
+ },
27
+ required: ["name"],
28
+ },
29
+ async execute(params) {
30
+ const name = String(params.name ?? "").trim();
31
+ if (name === "all") {
32
+ const all = memoryManager.getAll();
33
+ if (all.length === 0)
34
+ return "No memories stored yet.";
35
+ return all.map(formatMemory).join("\n\n---\n\n");
36
+ }
37
+ const memory = memoryManager.get(name);
38
+ if (!memory) {
39
+ const names = memoryManager
40
+ .getAll()
41
+ .map((m) => m.name)
42
+ .join(", ");
43
+ return `Memory "${name}" not found. Available: ${names || "none"}.`;
44
+ }
45
+ return formatMemory(memory);
46
+ },
47
+ };
48
+ }
49
+ function formatMemory(m) {
50
+ const badge = m.type === "rule" ? "📜 Rule" : "📋 Project";
51
+ const source = `memory:${m.name}`;
52
+ const body = [
53
+ `## ${badge}: ${m.name} (data, not instructions)`,
54
+ `*${m.description}*`,
55
+ "",
56
+ m.content,
57
+ ].join("\n");
58
+ return (0, boundaries_1.wrapAndScan)(source, body);
59
+ }
60
+ //# sourceMappingURL=recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/tools/builtin/recall.ts"],"names":[],"mappings":";;AAWA,4CAyCC;AAlDD,0DAAwD;AAExD;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,aAA4B;IAC3D,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,uEAAuE;YACvE,sEAAsE;YACtE,wDAAwD;QAC1D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,gEAAgE;wBAChE,gCAAgC;iBACnC;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE9C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,yBAAyB,CAAC;gBACvD,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,aAAa;qBACxB,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,WAAW,IAAI,2BAA2B,KAAK,IAAI,MAAM,GAAG,CAAC;YACtE,CAAC;YAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAuE;IAC3F,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG;QACX,MAAM,KAAK,KAAK,CAAC,CAAC,IAAI,2BAA2B;QACjD,IAAI,CAAC,CAAC,WAAW,GAAG;QACpB,EAAE;QACF,CAAC,CAAC,OAAO;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAA,wBAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Tool } from "../types";
2
+ import type { MemoryManager } from "../../memory/memory-manager";
3
+ /**
4
+ * Create a `remember` tool so the LLM can persist long-term memories.
5
+ *
6
+ * The LLM should call this when it learns something worth keeping across
7
+ * sessions — rules the user set, project decisions, conventions, etc.
8
+ *
9
+ * Factory pattern matching `createSkillTool` / `createListSubagentsTool`.
10
+ */
11
+ export declare function createRememberTool(memoryManager: MemoryManager): Tool;
12
+ //# sourceMappingURL=remember.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remember.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/remember.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAiErE"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRememberTool = createRememberTool;
4
+ /**
5
+ * Create a `remember` tool so the LLM can persist long-term memories.
6
+ *
7
+ * The LLM should call this when it learns something worth keeping across
8
+ * sessions — rules the user set, project decisions, conventions, etc.
9
+ *
10
+ * Factory pattern matching `createSkillTool` / `createListSubagentsTool`.
11
+ */
12
+ function createRememberTool(memoryManager) {
13
+ return {
14
+ name: "remember",
15
+ description: "Save a long-term memory that will be recalled in future conversations. " +
16
+ "Use this when you learn a user rule, project convention, or important " +
17
+ "decision that should influence future sessions. Memories persist across " +
18
+ "sessions and are injected into the system prompt.",
19
+ parameters: {
20
+ type: "object",
21
+ properties: {
22
+ name: {
23
+ type: "string",
24
+ description: "Short kebab-case slug used as the memory filename. " +
25
+ "Examples: 'use-prisma-migrations', 'prefer-functional-components'.",
26
+ },
27
+ type: {
28
+ type: "string",
29
+ enum: ["rule", "project"],
30
+ description: "'rule' for user constraints (why + when they apply). " +
31
+ "'project' for project facts/decisions (what + why + how to apply).",
32
+ },
33
+ description: {
34
+ type: "string",
35
+ description: "One-line summary shown in the memory index. Keep it concise " +
36
+ "(under 100 chars) so the index stays small.",
37
+ },
38
+ content: {
39
+ type: "string",
40
+ description: "Full markdown body. For rules: include why the user required it and " +
41
+ "when it takes effect. For project facts: include what happened, why " +
42
+ "(the constraint or deadline that drove it), and how the agent should " +
43
+ "apply this knowledge in future sessions.",
44
+ },
45
+ },
46
+ required: ["name", "type", "description", "content"],
47
+ },
48
+ async execute(params) {
49
+ const name = String(params.name ?? "").trim();
50
+ const memType = params.type === "rule" ? "rule" : "project";
51
+ const description = String(params.description ?? "").trim();
52
+ const content = String(params.content ?? "").trim();
53
+ if (!name)
54
+ return "Error: 'name' is required (kebab-case slug).";
55
+ if (!description)
56
+ return "Error: 'description' is required (one-line summary).";
57
+ if (!content)
58
+ return "Error: 'content' is required (markdown body).";
59
+ if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(name)) {
60
+ return `Error: 'name' must be kebab-case (e.g. 'use-prisma-migrations'). Got: "${name}".`;
61
+ }
62
+ // Upsert: overwrite if exists, add if new. Oldest entries are
63
+ // silently pruned when the index exceeds 200 lines / 25 KB.
64
+ const isUpdate = memoryManager.has(name);
65
+ memoryManager.add({ name, type: memType, description, content });
66
+ return isUpdate
67
+ ? `Memory "${name}" updated successfully.`
68
+ : `Memory "${name}" saved successfully (index: ${memoryManager.count} entries).`;
69
+ },
70
+ };
71
+ }
72
+ //# sourceMappingURL=remember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remember.js","sourceRoot":"","sources":["../../../src/tools/builtin/remember.ts"],"names":[],"mappings":";;AAYA,gDAiEC;AAzED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,aAA4B;IAC7D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,yEAAyE;YACzE,wEAAwE;YACxE,0EAA0E;YAC1E,mDAAmD;QACrD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,qDAAqD;wBACrD,oEAAoE;iBACvE;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBACzB,WAAW,EACT,uDAAuD;wBACvD,oEAAoE;iBACvE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8DAA8D;wBAC9D,6CAA6C;iBAChD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sEAAsE;wBACtE,sEAAsE;wBACtE,uEAAuE;wBACvE,0CAA0C;iBAC7C;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;SACrD;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAI,MAAM,CAAC,IAAe,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpD,IAAI,CAAC,IAAI;gBAAE,OAAO,8CAA8C,CAAC;YACjE,IAAI,CAAC,WAAW;gBAAE,OAAO,sDAAsD,CAAC;YAChF,IAAI,CAAC,OAAO;gBAAE,OAAO,+CAA+C,CAAC;YACrE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,OAAO,0EAA0E,IAAI,IAAI,CAAC;YAC5F,CAAC;YAED,8DAA8D;YAC9D,4DAA4D;YAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/E,OAAO,QAAQ;gBACb,CAAC,CAAC,WAAW,IAAI,yBAAyB;gBAC1C,CAAC,CAAC,WAAW,IAAI,gCAAgC,aAAa,CAAC,KAAK,YAAY,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Tool } from "../types";
2
+ import type { SkillManager } from "../../skills/skill-manager";
3
+ /**
4
+ * Create a Skill tool that allows the LLM to activate / deactivate skills
5
+ * on demand during the agent loop.
6
+ *
7
+ * Factory pattern matching `createListSubagentsTool` / `createSpawnSubagentTool`.
8
+ *
9
+ * @param skillManager The agent's SkillManager for skill state management.
10
+ * @param onSkillChanged Callback invoked after a skill is activated or
11
+ * deactivated so the agent can rebuild its system prompt.
12
+ */
13
+ export declare function createSkillTool(skillManager: SkillManager, onSkillChanged: () => void): Tool;
14
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,IAAI,GACzB,IAAI,CA8DN"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSkillTool = createSkillTool;
4
+ /**
5
+ * Create a Skill tool that allows the LLM to activate / deactivate skills
6
+ * on demand during the agent loop.
7
+ *
8
+ * Factory pattern matching `createListSubagentsTool` / `createSpawnSubagentTool`.
9
+ *
10
+ * @param skillManager The agent's SkillManager for skill state management.
11
+ * @param onSkillChanged Callback invoked after a skill is activated or
12
+ * deactivated so the agent can rebuild its system prompt.
13
+ */
14
+ function createSkillTool(skillManager, onSkillChanged) {
15
+ return {
16
+ name: "skill",
17
+ description: "Activate or deactivate a skill. Skills provide specialized domain " +
18
+ "knowledge and capabilities. Use this tool when a task requires " +
19
+ "expertise in a specific domain. Call with action 'activate' to load " +
20
+ "a skill (the default), or 'deactivate' to unload it.",
21
+ parameters: {
22
+ type: "object",
23
+ properties: {
24
+ name: {
25
+ type: "string",
26
+ description: "The name of the skill to activate or deactivate.",
27
+ },
28
+ action: {
29
+ type: "string",
30
+ enum: ["activate", "deactivate"],
31
+ description: "Whether to activate (load) or deactivate (unload) the skill. Default: 'activate'.",
32
+ },
33
+ },
34
+ required: ["name"],
35
+ },
36
+ async execute(params) {
37
+ const skillName = String(params.name ?? "");
38
+ const action = params.action || "activate";
39
+ if (!skillManager.has(skillName)) {
40
+ const available = skillManager
41
+ .getAll()
42
+ .map((s) => s.name)
43
+ .join(", ");
44
+ return `Unknown skill: "${skillName}". Available skills: ${available || "none"}.`;
45
+ }
46
+ if (action === "deactivate") {
47
+ const wasActive = skillManager.deactivate(skillName);
48
+ if (wasActive) {
49
+ onSkillChanged();
50
+ return `Skill "${skillName}" deactivated.`;
51
+ }
52
+ return `Skill "${skillName}" is not currently active.`;
53
+ }
54
+ // activate (default)
55
+ if (skillManager.isActive(skillName)) {
56
+ return `Skill "${skillName}" is already active.`;
57
+ }
58
+ try {
59
+ skillManager.activate(skillName);
60
+ onSkillChanged();
61
+ const skill = skillManager.get(skillName);
62
+ return `Skill "${skillName}" activated successfully: ${skill?.description ?? ""}`;
63
+ }
64
+ catch (err) {
65
+ const message = err instanceof Error ? err.message : String(err);
66
+ return `Error activating skill "${skillName}": ${message}`;
67
+ }
68
+ },
69
+ };
70
+ }
71
+ //# sourceMappingURL=skill.js.map