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 @@
1
+ {"version":3,"file":"fusion-agent.js","sourceRoot":"","sources":["../../src/core/fusion-agent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { LLMResponse } from "../llm/interface";
2
- import { LLMNetworkError } from "../llm/openai-provider";
2
+ import { LLMNetworkError } from "../llm/errors";
3
3
  import { MessageData } from "../messages/types";
4
4
  import { Tool } from "../tools/types";
5
5
  /**
@@ -22,12 +22,24 @@ export interface AgentHooks {
22
22
  onLLMEnd?: (response: LLMResponse) => void;
23
23
  /** Called when a network error exhausts all retries. */
24
24
  onLLMError?: (error: LLMNetworkError) => void;
25
- /** Called before a tool begins execution. */
26
- onToolStart?: (toolName: string, args: Record<string, unknown>) => void;
27
- /** Called after a tool returns successfully. */
28
- onToolEnd?: (toolName: string, result: string) => void;
29
- /** Called when a tool throws or returns an error string. */
30
- onToolError?: (toolName: string, error: string) => void;
25
+ /**
26
+ * Called before a tool begins execution.
27
+ * @param toolCallId The unique ID assigned by the LLM to this tool call
28
+ * (from `response.tool_calls[].id`). Used for exact
29
+ * matching when the same tool is called multiple times
30
+ * in one batch.
31
+ */
32
+ onToolStart?: (toolName: string, args: Record<string, unknown>, toolCallId?: string) => void;
33
+ /**
34
+ * Called after a tool returns successfully.
35
+ * @param toolCallId Matches the ID passed to `onToolStart`.
36
+ */
37
+ onToolEnd?: (toolName: string, result: string, toolCallId?: string) => void;
38
+ /**
39
+ * Called when a tool throws or returns an error string.
40
+ * @param toolCallId Matches the ID passed to `onToolStart`.
41
+ */
42
+ onToolError?: (toolName: string, error: string, toolCallId?: string) => void;
31
43
  /** Called when the LLM produces a reasoning thought. */
32
44
  onThought?: (thought: string) => void;
33
45
  /** Called when an initial plan is created. */
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IAGzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAE9D,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAE3C,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAI9C,6CAA6C;IAC7C,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAExE,gDAAgD;IAChD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvD,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAIxD,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAItC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEzC,qDAAqD;IACrD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAIzC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IAGzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAE9D,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAE3C,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAI9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5E;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAI7E,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAItC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEzC,qDAAqD;IACrD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAIzC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
@@ -8,14 +8,7 @@ export interface PlanSolveAgentConfig extends AgentConfig {
8
8
  maxIterations?: number;
9
9
  /** Maximum number of steps in a plan (default: 12). */
10
10
  maxPlanSteps?: number;
11
- /**
12
- * Enable progressive skill disclosure.
13
- * When true, skills are auto-detected from user input and loaded
14
- * into the system prompt on demand (default: true).
15
- */
16
- enableSkillAutoDetect?: boolean;
17
- /**
18
- * Number of consecutive tool failures before a "replan hint" is injected
11
+ /** Number of consecutive tool failures before a "replan hint" is injected
19
12
  * into the system prompt, nudging the LLM to consider revising its plan.
20
13
  * Set to 0 to disable auto-replan triggering (default: 2).
21
14
  */
@@ -42,7 +35,6 @@ export interface PlanSolveAgentConfig extends AgentConfig {
42
35
  export declare class PlanSolveAgent extends Agent {
43
36
  private maxIterations;
44
37
  private maxPlanSteps;
45
- private enableSkillAutoDetect;
46
38
  /** The current plan steps (empty until the plan is created). */
47
39
  private currentPlan;
48
40
  /** Whether a plan has been created in this run. */
@@ -82,12 +74,6 @@ export declare class PlanSolveAgent extends Agent {
82
74
  * @param input New user input to continue the conversation.
83
75
  */
84
76
  resume(sessionId: string, input: string): Promise<string>;
85
- /**
86
- * Handle an LLMNetworkError: save an interrupted checkpoint if
87
- * checkpointing is enabled, and return a user-facing message with
88
- * resume instructions.
89
- */
90
- private handleNetworkError;
91
77
  /**
92
78
  * Rebuild the system prompt to include the current plan context
93
79
  * alongside the core prompt and active skill prompts.
@@ -1 +1 @@
1
- {"version":3,"file":"plan-solve-agent.d.ts","sourceRoot":"","sources":["../../src/core/plan-solve-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAqCvE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,qBAAqB,CAAU;IAEvC,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAgB;IAEnC,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAS;IAEhC,wEAAwE;IACxE,OAAO,CAAC,mBAAmB,CAAK;IAEhC,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAAK;IAE3B,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,oBAAoB;IAoBlC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8RzC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,YAAY;IAItC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY;IAapE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAehE;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CAc1B"}
1
+ {"version":3,"file":"plan-solve-agent.d.ts","sourceRoot":"","sources":["../../src/core/plan-solve-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAW7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyBvE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAE7B,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAgB;IAEnC,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAS;IAEhC,wEAAwE;IACxE,OAAO,CAAC,mBAAmB,CAAK;IAEhC,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAAK;IAE3B,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,oBAAoB;IAgBlC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4WzC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,YAAY;IAItC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY;IAapE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAehE;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY/D;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CAc1B"}
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlanSolveAgent = void 0;
4
4
  const agent_1 = require("./agent");
5
5
  const message_1 = require("../messages/message");
6
+ const types_1 = require("../messages/types");
6
7
  const response_schema_1 = require("./response-schema");
7
- const openai_provider_1 = require("../llm/openai-provider");
8
- const preference_manager_1 = require("../preferences/preference-manager");
8
+ const system_prompts_1 = require("./system-prompts");
9
+ const boundaries_1 = require("../security/boundaries");
10
+ const errors_1 = require("../llm/errors");
11
+ const interface_1 = require("../llm/interface");
9
12
  /**
10
13
  * Default system prompt for the Plan-and-Solve paradigm.
11
14
  *
@@ -25,20 +28,9 @@ Process:
25
28
  4. When all steps are complete, provide the final answer.
26
29
 
27
30
  If no tools are needed, respond with the final answer directly.
28
-
29
- === Tool Error Recovery ===
30
- When a tool returns an error:
31
- 1. READ the error message carefully — understand WHY it failed.
32
- 2. ANALYZE whether the parameters were correct. Common issues:
33
- - Wrong file path (check spelling, use absolute paths)
34
- - Missing or incorrect arguments
35
- - The tool may need different input formats
36
- 3. RETRY with corrected parameters if you can fix the issue.
37
- 4. If the same tool fails repeatedly, try a COMPLETELY DIFFERENT approach.
38
- 5. If a tool fails 2+ times in a row, consider whether your PLAN needs revision.
39
- The approach may be fundamentally wrong — output a "revised_plan".
40
- 6. If a tool is disabled after too many failures, DO NOT try to use it again.
41
- Find another way to accomplish the task.${response_schema_1.PLAN_SOLVE_INSTRUCTIONS}`;
31
+ ${system_prompts_1.TOOL_ERROR_RECOVERY}
32
+ 5. If multiple tools fail in a round, consider whether your PLAN needs revision.
33
+ The approach may be fundamentally wrong — output a "revised_plan".${response_schema_1.PLAN_SOLVE_INSTRUCTIONS}`;
42
34
  /**
43
35
  * Plan-and-Solve Agent implementing a structured Plan → Resolve → Final Answer loop.
44
36
  *
@@ -60,7 +52,6 @@ When a tool returns an error:
60
52
  class PlanSolveAgent extends agent_1.Agent {
61
53
  maxIterations;
62
54
  maxPlanSteps;
63
- enableSkillAutoDetect;
64
55
  /** The current plan steps (empty until the plan is created). */
65
56
  currentPlan = [];
66
57
  /** Whether a plan has been created in this run. */
@@ -85,36 +76,37 @@ class PlanSolveAgent extends agent_1.Agent {
85
76
  super(mergedConfig);
86
77
  this.maxIterations = config.maxIterations ?? 15;
87
78
  this.maxPlanSteps = config.maxPlanSteps ?? 12;
88
- this.enableSkillAutoDetect = config.enableSkillAutoDetect ?? true;
89
79
  this.replanThreshold = config.replanThreshold ?? 2;
90
- // If skills are registered, rebuild the system prompt so the
91
- // available-skills hint is included in the initial prompt.
92
- if (this.skillManager.activeCount > 0) {
93
- this.rebuildSystemPrompt();
94
- }
80
+ // Build the full system prompt once all sections are ready
81
+ this.rebuildSystemPrompt();
95
82
  }
96
83
  async run(input) {
84
+ // Consume the skip-reset flag immediately — no early return path
85
+ // may leave it dangling (resume() sets it before calling run()).
86
+ const skipPlanReset = this._skipPlanReset;
87
+ this._skipPlanReset = false;
88
+ // ── Pre-flight: reject oversized input before any setup ───────────
89
+ const sizeError = this.validateInputSize(input);
90
+ if (sizeError)
91
+ return sizeError;
92
+ // ── Create fresh abort controller for this run ───────────────────
93
+ this._abortController = new AbortController();
97
94
  // ── Async initialization (MCP connections, etc.) ─────────────────
98
95
  await this.init();
99
- // ── Phase 0: Progressive disclosure ──────────────────────────────
100
- if (this.enableSkillAutoDetect && this.skillManager.count > 0) {
101
- const activated = this.skillManager.detectAndActivate(input);
102
- if (activated.length > 0) {
103
- this.rebuildSystemPrompt();
104
- console.log(`[Skills] Auto-activated: ${activated.join(", ")}`);
105
- }
106
- }
96
+ // ── Reload dynamic resources (preferences, skills, MCP) ─────────
97
+ await this.reloadDynamicResources();
98
+ // ── Recover orphaned sub-agent results from a cancelled session ──
99
+ this.recoverOrphanedSubAgentResults();
107
100
  // ── Create user message ─────────────────────────────────────────
108
101
  const userMessage = message_1.Message.user(input);
109
102
  this.contextManager.addMessage(userMessage.toDict());
110
103
  // Reset plan state for this run (skip when resuming a session)
111
- if (!this._skipPlanReset) {
104
+ if (!skipPlanReset) {
112
105
  this.currentPlan = [];
113
106
  this.hasPlan = false;
114
107
  this.consecutiveFailures = 0;
115
108
  this.completedSteps = 0;
116
109
  }
117
- this._skipPlanReset = false;
118
110
  // Save initial checkpoint (captures user input before any LLM call)
119
111
  if (this.checkpointingEnabled) {
120
112
  this.saveCheckpoint("active");
@@ -122,91 +114,129 @@ class PlanSolveAgent extends agent_1.Agent {
122
114
  // Track consecutive unproductive iterations (no tool calls, no answer)
123
115
  let consecutiveEmptyIterations = 0;
124
116
  const EMPTY_ITERATION_LIMIT = 5;
117
+ // Track consecutive max_tokens truncations (to avoid infinite continuation loops)
118
+ let consecutiveTruncations = 0;
119
+ const MAX_TRUNCATION_CONTINUES = 3;
125
120
  // ── Main Plan-Solve loop ────────────────────────────────────────
126
121
  for (let iteration = 0; iteration < this.maxIterations; iteration++) {
127
122
  // Check if user cancelled (SIGINT)
128
123
  if (this.isCancelled) {
129
- this.sessionManager?.deleteSession(this.sessionManager.getSessionId());
130
- const cancelMsg = "Execution cancelled by user. Session discarded.";
124
+ this.saveCheckpoint("cancelled");
125
+ const sid = this.sessionManager?.getSessionId() ?? "unknown";
126
+ const cancelMsg = `Execution cancelled by user. Session "${sid}" preserved — ` +
127
+ `resume with agent.resume("${sid}", "<your prompt>").`;
131
128
  for (const h of this.hooks)
132
129
  h.onFinish?.(cancelMsg);
133
130
  return cancelMsg;
134
131
  }
135
- this.checkAndCompress();
132
+ // ── Poll sub-agent results ──────────────────────────────────────
133
+ const subResults = await this.pollSubAgentResults();
134
+ for (const r of subResults) {
135
+ const source = `subagent:${r.name}`;
136
+ const msg = new message_1.Message(types_1.Role.User, (0, boundaries_1.wrapAndScan)(source, r.output), { name: source });
137
+ this.contextManager.addMessage(msg.toDict());
138
+ }
139
+ await this.checkAndCompress();
136
140
  // Rebuild the system prompt to inject current plan progress
137
141
  // and any replan hint if consecutive failures are detected
138
142
  const replanHint = this.computeReplanHint();
139
143
  this.rebuildContextWithPlan(replanHint);
140
144
  const contextMessages = this.contextManager.getContextMessages();
145
+ // Token budget check — skip token counting when no budget is configured
146
+ const budgetError = this.checkTokenBudget(this.tokenBudget ? this.contextManager.getCurrentTokens() : 0);
147
+ if (budgetError) {
148
+ for (const h of this.hooks)
149
+ h.onFinish?.(budgetError);
150
+ return budgetError;
151
+ }
141
152
  // Call the LLM — with network error handling
142
153
  for (const h of this.hooks)
143
154
  h.onLLMStart?.(contextMessages, this.toolRegistry.getTools());
144
155
  let response;
145
156
  try {
146
- response = await this.llm.chat(contextMessages, this.toolRegistry.getTools());
157
+ response = await this.llm.chat(contextMessages, this.toolRegistry.getTools(), this._abortController?.signal);
147
158
  }
148
159
  catch (err) {
149
- if (err instanceof openai_provider_1.LLMNetworkError) {
160
+ // Cancellation by user (AbortController) — exit the loop cleanly
161
+ if (this.isCancelled) {
162
+ this.saveCheckpoint("cancelled");
163
+ const sid = this.sessionManager?.getSessionId() ?? "unknown";
164
+ const cancelMsg = `Execution cancelled by user. Session "${sid}" preserved — ` +
165
+ `resume with agent.resume("${sid}", "<your prompt>").`;
166
+ for (const h of this.hooks)
167
+ h.onFinish?.(cancelMsg);
168
+ return cancelMsg;
169
+ }
170
+ if (err instanceof errors_1.LLMNetworkError) {
150
171
  for (const h of this.hooks)
151
172
  h.onLLMError?.(err);
152
- return this.handleNetworkError(err, iteration + 1);
173
+ return this.handleNetworkError(err, iteration + 1, "continue with what you were doing");
153
174
  }
154
175
  throw err;
155
176
  }
156
177
  for (const h of this.hooks)
157
178
  h.onLLMEnd?.(response);
179
+ // Record token usage against the session budget
180
+ if (response.usage) {
181
+ this.tokenBudget?.recordUsage(response.usage.prompt_tokens, response.usage.completion_tokens);
182
+ }
158
183
  const parsed = (0, response_schema_1.parsePlanSolveResponse)(response.content);
184
+ // Capture LLM analysis of any active tool error traces
185
+ if (parsed.thought) {
186
+ this.captureErrorAnalysis(parsed.thought);
187
+ }
159
188
  // Create assistant message from the response
160
189
  const assistantMessage = message_1.Message.assistant(response.content, response.tool_calls);
161
- this.contextManager.addMessage(assistantMessage.toDict());
190
+ // ── Handle max_tokens truncation ──────────────────────────────
191
+ const isTruncated = response.responseError?.code === interface_1.LLMResponseErrorCode.MAX_TOKENS;
192
+ if (isTruncated) {
193
+ consecutiveTruncations++;
194
+ if (consecutiveTruncations > MAX_TRUNCATION_CONTINUES) {
195
+ // Bail out — too many consecutive truncations, return what we have.
196
+ // Don't add the truncated message to context; it's incomplete junk.
197
+ const fallback = parsed.answer
198
+ ? parsed.answer + "\n\n[Note: Response may be incomplete due to repeated output limits.]"
199
+ : "I apologize, but I'm unable to complete this response due to output length constraints. " +
200
+ "Please try breaking your request into smaller steps.";
201
+ for (const h of this.hooks)
202
+ h.onFinish?.(fallback);
203
+ return fallback;
204
+ }
205
+ // Store the truncated message so the LLM has context for where it left off,
206
+ // then inject a continuation instruction.
207
+ this.contextManager.addMessage(assistantMessage.toDict());
208
+ const continueMsg = message_1.Message.user("Your previous response was cut off (max output tokens reached). " +
209
+ "Continue exactly where you left off — do NOT repeat any content already written. " +
210
+ "If you were calling tools, re-invoke them with complete arguments.");
211
+ this.contextManager.addMessage(continueMsg.toDict());
212
+ }
213
+ else {
214
+ // Normal (non-truncated) response — store it and reset the counter.
215
+ this.contextManager.addMessage(assistantMessage.toDict());
216
+ consecutiveTruncations = 0;
217
+ }
162
218
  // ── Handle tool calls (execution phase) ─────────────────────
163
219
  if (response.tool_calls && response.tool_calls.length > 0) {
164
220
  consecutiveEmptyIterations = 0;
165
221
  if (parsed.thought) {
166
- console.log(`[Thought] ${parsed.thought}`);
222
+ this.logger.info("Thought", parsed.thought);
167
223
  for (const h of this.hooks)
168
224
  h.onThought?.(parsed.thought);
169
- this.captureAnalysisFromThought(parsed.thought);
170
225
  }
171
- // Track whether ANY tool in this round failed
172
- let roundHadFailure = false;
173
- for (const toolCall of response.tool_calls) {
174
- let args;
175
- try {
176
- args = JSON.parse(toolCall.function.arguments);
177
- }
178
- catch {
179
- args = {};
180
- }
181
- for (const h of this.hooks)
182
- h.onToolStart?.(toolCall.function.name, args);
183
- let result;
184
- try {
185
- result = await this.toolRegistry.execute(toolCall.function.name, args);
186
- }
187
- catch (err) {
188
- const message = err instanceof Error ? err.message : String(err);
189
- result = `Error executing tool "${toolCall.function.name}": ${message}`;
190
- }
191
- // Track failure/success for replan detection and hooks
192
- if (result.startsWith("Error")) {
193
- roundHadFailure = true;
194
- for (const h of this.hooks)
195
- h.onToolError?.(toolCall.function.name, result);
196
- }
197
- else {
198
- for (const h of this.hooks)
199
- h.onToolEnd?.(toolCall.function.name, result);
200
- }
201
- // Track this result for error analysis if it indicates a failure
202
- this.trackToolErrorForAnalysis(toolCall.function.name, result);
203
- const toolMessage = message_1.Message.tool(result, toolCall.id, toolCall.function.name);
204
- this.contextManager.addMessage(toolMessage.toDict());
226
+ // If the LLM response shows non-truncation quality issues, warn
227
+ // before executing tool calls. (max_tokens truncation is handled above.)
228
+ if (response.responseError &&
229
+ response.responseError.code !== interface_1.LLMResponseErrorCode.MAX_TOKENS &&
230
+ response.responseError.code !== interface_1.LLMResponseErrorCode.OK) {
231
+ const warnMsg = message_1.Message.system(`LLM response quality issue: ${response.responseError.message}`);
232
+ this.contextManager.addMessage(warnMsg.toDict());
205
233
  }
234
+ const mcpWarnedServers = new Set();
235
+ const { hadFailure: roundHadFailure } = await this.executeToolCallsBatch(response.tool_calls, mcpWarnedServers);
206
236
  // Update consecutive failure count and step progress
207
237
  if (roundHadFailure) {
208
238
  this.consecutiveFailures++;
209
- console.log(`[Replan] Consecutive failures: ${this.consecutiveFailures}` +
239
+ this.logger.info("Replan", `Consecutive failures: ${this.consecutiveFailures}` +
210
240
  (this.replanThreshold > 0 &&
211
241
  this.consecutiveFailures >= this.replanThreshold
212
242
  ? ` — threshold reached (${this.replanThreshold}), will prompt replan`
@@ -223,7 +253,7 @@ class PlanSolveAgent extends agent_1.Agent {
223
253
  this.completedSteps = Math.min(this.completedSteps + 1, this.currentPlan.length);
224
254
  }
225
255
  if (this.hasPlan) {
226
- console.log(`[Progress] Step ${this.completedSteps}/${this.currentPlan.length} completed`);
256
+ this.logger.info("Progress", `Step ${this.completedSteps}/${this.currentPlan.length} completed`);
227
257
  }
228
258
  }
229
259
  // Save checkpoint after complete tool execution round
@@ -235,12 +265,33 @@ class PlanSolveAgent extends agent_1.Agent {
235
265
  }
236
266
  // ── Final answer ────────────────────────────────────────────
237
267
  if (parsed.answer) {
268
+ // If truncated, don't return — the continuation instruction is
269
+ // already in context; next iteration will continue from here.
270
+ if (isTruncated) {
271
+ consecutiveEmptyIterations = 0;
272
+ if (parsed.thought) {
273
+ this.logger.info("Thought", parsed.thought);
274
+ for (const h of this.hooks)
275
+ h.onThought?.(parsed.thought);
276
+ }
277
+ // If this is the last iteration we can't continue — return
278
+ // what we have instead of the generic "max iterations" message.
279
+ if (iteration === this.maxIterations - 1) {
280
+ const fallback = parsed.answer +
281
+ "\n\n[Note: Response may be incomplete due to output length constraints.]";
282
+ for (const h of this.hooks)
283
+ h.onFinish?.(fallback);
284
+ return fallback;
285
+ }
286
+ this.logger.info("Plan-Solve", "Answer truncated (max_tokens) — continuing in next iteration.");
287
+ continue;
288
+ }
238
289
  if (parsed.thought) {
239
- console.log(`[Thought] ${parsed.thought}`);
290
+ this.logger.info("Thought", parsed.thought);
240
291
  for (const h of this.hooks)
241
292
  h.onThought?.(parsed.thought);
242
293
  }
243
- console.log(`[Plan-Solve] Task complete — returning final answer.`);
294
+ this.logger.info("Plan-Solve", "Task complete — returning final answer.");
244
295
  // Save final checkpoint as completed
245
296
  if (this.checkpointingEnabled) {
246
297
  this.saveCheckpoint("completed");
@@ -257,14 +308,14 @@ class PlanSolveAgent extends agent_1.Agent {
257
308
  consecutiveEmptyIterations = 0;
258
309
  this.currentPlan = parsed.plan.slice(0, this.maxPlanSteps);
259
310
  this.hasPlan = true;
260
- console.log(`[Plan] Created ${this.currentPlan.length}-step plan:`);
311
+ this.logger.info("Plan", `Created ${this.currentPlan.length}-step plan:`);
261
312
  for (let i = 0; i < this.currentPlan.length; i++) {
262
- console.log(` ${i + 1}. ${this.currentPlan[i]}`);
313
+ this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
263
314
  }
264
315
  for (const h of this.hooks)
265
316
  h.onPlanCreated?.(this.currentPlan);
266
317
  if (parsed.thought) {
267
- console.log(`[Thought] ${parsed.thought}`);
318
+ this.logger.info("Thought", parsed.thought);
268
319
  for (const h of this.hooks)
269
320
  h.onThought?.(parsed.thought);
270
321
  }
@@ -277,14 +328,15 @@ class PlanSolveAgent extends agent_1.Agent {
277
328
  consecutiveEmptyIterations = 0;
278
329
  this.currentPlan = parsed.revised_plan.slice(0, this.maxPlanSteps);
279
330
  this.completedSteps = 0; // Remaining steps are now new
280
- console.log(`[Plan] Revised ${this.currentPlan.length} steps remaining:`);
331
+ this.consecutiveFailures = 0; // New plan, fresh failure counter
332
+ this.logger.info("Plan", `Revised — ${this.currentPlan.length} steps remaining:`);
281
333
  for (let i = 0; i < this.currentPlan.length; i++) {
282
- console.log(` ${i + 1}. ${this.currentPlan[i]}`);
334
+ this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
283
335
  }
284
336
  for (const h of this.hooks)
285
337
  h.onPlanRevised?.(this.currentPlan);
286
338
  if (parsed.thought) {
287
- console.log(`[Thought] ${parsed.thought}`);
339
+ this.logger.info("Thought", parsed.thought);
288
340
  for (const h of this.hooks)
289
341
  h.onThought?.(parsed.thought);
290
342
  }
@@ -293,10 +345,9 @@ class PlanSolveAgent extends agent_1.Agent {
293
345
  // ── Default: log thought and continue loop ──────────────────
294
346
  if (parsed.thought) {
295
347
  consecutiveEmptyIterations++;
296
- console.log(`[Thought] ${parsed.thought}`);
348
+ this.logger.info("Thought", parsed.thought);
297
349
  for (const h of this.hooks)
298
350
  h.onThought?.(parsed.thought);
299
- this.captureAnalysisFromThought(parsed.thought);
300
351
  // If stuck in thought-only loop, bail out
301
352
  if (consecutiveEmptyIterations >= EMPTY_ITERATION_LIMIT) {
302
353
  const stuckMsg = "I apologize, but I'm having difficulty making progress on your request. " +
@@ -381,28 +432,8 @@ class PlanSolveAgent extends agent_1.Agent {
381
432
  this._skipPlanReset = true;
382
433
  return this.run(input);
383
434
  }
384
- // ─── Private Helpers ─────────────────────────────────────────────────
385
- /**
386
- * Handle an LLMNetworkError: save an interrupted checkpoint if
387
- * checkpointing is enabled, and return a user-facing message with
388
- * resume instructions.
389
- */
390
- handleNetworkError(err, iteration) {
391
- if (this.checkpointingEnabled) {
392
- this.saveCheckpoint("interrupted");
393
- }
394
- const sid = this.sessionManager?.getSessionId() ?? "unknown";
395
- console.error(`\n[Network Error] ${err.cause}: ${err.message}`);
396
- if (this.checkpointingEnabled && this.sessionManager) {
397
- return (`[Network Error] ${err.message}\n\n` +
398
- `Your session "${sid}" has been saved (iteration ${iteration}).\n` +
399
- `After your network is restored, resume with:\n` +
400
- ` agent.resume("${sid}", "continue with what you were doing")\n\n` +
401
- `Or start a new session by calling agent.run() again.`);
402
- }
403
- return (`[Network Error] ${err.message}\n\n` +
404
- `Please check your network connection and try again.`);
405
- }
435
+ // ─── Network error handling inherited from Agent ───────────────────
436
+ // handleNetworkError is defined in the base Agent class.
406
437
  // ─── Plan Context Injection ─────────────────────────────────────────────
407
438
  /**
408
439
  * Rebuild the system prompt to include the current plan context
@@ -415,11 +446,7 @@ class PlanSolveAgent extends agent_1.Agent {
415
446
  * to consider revising its plan.
416
447
  */
417
448
  rebuildContextWithPlan(replanHint) {
418
- let prompt = this.coreSystemPrompt;
419
- // User preferences — injected as a system-prompt section
420
- prompt += preference_manager_1.PreferenceManager.toPrompt(this.preferences);
421
- // Available skills hint (progressive disclosure — names only)
422
- prompt += this.skillManager.buildAvailableSkillsHint();
449
+ let prompt = this.buildSystemPrompt();
423
450
  // Plan context — injected when a plan exists
424
451
  if (this.hasPlan && this.currentPlan.length > 0) {
425
452
  prompt += `\n\n=== Current Plan (${this.completedSteps}/${this.currentPlan.length} completed) ===\n`;
@@ -440,8 +467,6 @@ class PlanSolveAgent extends agent_1.Agent {
440
467
  if (replanHint) {
441
468
  prompt += `\n\n${replanHint}`;
442
469
  }
443
- // Active skill instructions
444
- prompt += this.skillManager.buildSkillsPrompt();
445
470
  this.contextManager.setSystemMessage(prompt);
446
471
  }
447
472
  /**