kagent-ts 0.1.3 → 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 (349) 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 +407 -35
  16. package/dist/core/agent.d.ts.map +1 -1
  17. package/dist/core/agent.js +685 -70
  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 +144 -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 +128 -101
  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 +61 -14
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +121 -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/index.d.ts +4 -0
  114. package/dist/mcp/index.d.ts.map +1 -0
  115. package/dist/mcp/index.js +8 -0
  116. package/dist/mcp/index.js.map +1 -0
  117. package/dist/mcp/mcp-client-manager.d.ts +72 -0
  118. package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
  119. package/dist/mcp/mcp-client-manager.js +235 -0
  120. package/dist/mcp/mcp-client-manager.js.map +1 -0
  121. package/dist/mcp/mcp-types.d.ts +58 -0
  122. package/dist/mcp/mcp-types.d.ts.map +1 -0
  123. package/dist/mcp/mcp-types.js +20 -0
  124. package/dist/mcp/mcp-types.js.map +1 -0
  125. package/dist/memory/index.d.ts +3 -0
  126. package/dist/memory/index.d.ts.map +1 -0
  127. package/dist/memory/index.js +6 -0
  128. package/dist/memory/index.js.map +1 -0
  129. package/dist/memory/memory-manager.d.ts +119 -0
  130. package/dist/memory/memory-manager.d.ts.map +1 -0
  131. package/dist/memory/memory-manager.js +334 -0
  132. package/dist/memory/memory-manager.js.map +1 -0
  133. package/dist/messages/types.d.ts +2 -0
  134. package/dist/messages/types.d.ts.map +1 -1
  135. package/dist/orchestrator/index.d.ts +5 -0
  136. package/dist/orchestrator/index.d.ts.map +1 -0
  137. package/dist/orchestrator/index.js +13 -0
  138. package/dist/orchestrator/index.js.map +1 -0
  139. package/dist/orchestrator/json-extractor.d.ts +18 -0
  140. package/dist/orchestrator/json-extractor.d.ts.map +1 -0
  141. package/dist/orchestrator/json-extractor.js +111 -0
  142. package/dist/orchestrator/json-extractor.js.map +1 -0
  143. package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
  144. package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
  145. package/dist/orchestrator/orchestrator-agent.js +675 -0
  146. package/dist/orchestrator/orchestrator-agent.js.map +1 -0
  147. package/dist/orchestrator/orchestrator-response.d.ts +40 -0
  148. package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
  149. package/dist/orchestrator/orchestrator-response.js +275 -0
  150. package/dist/orchestrator/orchestrator-response.js.map +1 -0
  151. package/dist/orchestrator/orchestrator-types.d.ts +116 -0
  152. package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
  153. package/dist/orchestrator/orchestrator-types.js +3 -0
  154. package/dist/orchestrator/orchestrator-types.js.map +1 -0
  155. package/dist/preferences/preference-manager.d.ts +8 -3
  156. package/dist/preferences/preference-manager.d.ts.map +1 -1
  157. package/dist/preferences/preference-manager.js +17 -4
  158. package/dist/preferences/preference-manager.js.map +1 -1
  159. package/dist/rag/chroma-store.d.ts +52 -0
  160. package/dist/rag/chroma-store.d.ts.map +1 -0
  161. package/dist/rag/chroma-store.js +110 -0
  162. package/dist/rag/chroma-store.js.map +1 -0
  163. package/dist/rag/document-loader.d.ts +21 -0
  164. package/dist/rag/document-loader.d.ts.map +1 -0
  165. package/dist/rag/document-loader.js +129 -0
  166. package/dist/rag/document-loader.js.map +1 -0
  167. package/dist/rag/embedding-provider.d.ts +36 -0
  168. package/dist/rag/embedding-provider.d.ts.map +1 -0
  169. package/dist/rag/embedding-provider.js +74 -0
  170. package/dist/rag/embedding-provider.js.map +1 -0
  171. package/dist/rag/index.d.ts +17 -0
  172. package/dist/rag/index.d.ts.map +1 -0
  173. package/dist/rag/index.js +27 -0
  174. package/dist/rag/index.js.map +1 -0
  175. package/dist/rag/keyword-index.d.ts +53 -0
  176. package/dist/rag/keyword-index.d.ts.map +1 -0
  177. package/dist/rag/keyword-index.js +161 -0
  178. package/dist/rag/keyword-index.js.map +1 -0
  179. package/dist/rag/llm-reranker.d.ts +36 -0
  180. package/dist/rag/llm-reranker.d.ts.map +1 -0
  181. package/dist/rag/llm-reranker.js +95 -0
  182. package/dist/rag/llm-reranker.js.map +1 -0
  183. package/dist/rag/rag-manager.d.ts +54 -0
  184. package/dist/rag/rag-manager.d.ts.map +1 -0
  185. package/dist/rag/rag-manager.js +179 -0
  186. package/dist/rag/rag-manager.js.map +1 -0
  187. package/dist/rag/rag-types.d.ts +143 -0
  188. package/dist/rag/rag-types.d.ts.map +1 -0
  189. package/dist/rag/rag-types.js +9 -0
  190. package/dist/rag/rag-types.js.map +1 -0
  191. package/dist/rag/rrf.d.ts +47 -0
  192. package/dist/rag/rrf.d.ts.map +1 -0
  193. package/dist/rag/rrf.js +70 -0
  194. package/dist/rag/rrf.js.map +1 -0
  195. package/dist/rag/search-knowledge.d.ts +24 -0
  196. package/dist/rag/search-knowledge.d.ts.map +1 -0
  197. package/dist/rag/search-knowledge.js +86 -0
  198. package/dist/rag/search-knowledge.js.map +1 -0
  199. package/dist/rag/text-splitter.d.ts +25 -0
  200. package/dist/rag/text-splitter.d.ts.map +1 -0
  201. package/dist/rag/text-splitter.js +136 -0
  202. package/dist/rag/text-splitter.js.map +1 -0
  203. package/dist/rag/vector-store.d.ts +34 -0
  204. package/dist/rag/vector-store.d.ts.map +1 -0
  205. package/dist/rag/vector-store.js +73 -0
  206. package/dist/rag/vector-store.js.map +1 -0
  207. package/dist/reflection/error-notebook.d.ts +125 -0
  208. package/dist/reflection/error-notebook.d.ts.map +1 -0
  209. package/dist/reflection/error-notebook.js +368 -0
  210. package/dist/reflection/error-notebook.js.map +1 -0
  211. package/dist/reflection/index.d.ts +8 -0
  212. package/dist/reflection/index.d.ts.map +1 -0
  213. package/dist/reflection/index.js +12 -0
  214. package/dist/reflection/index.js.map +1 -0
  215. package/dist/reflection/memory-reflector.d.ts +97 -0
  216. package/dist/reflection/memory-reflector.d.ts.map +1 -0
  217. package/dist/reflection/memory-reflector.js +215 -0
  218. package/dist/reflection/memory-reflector.js.map +1 -0
  219. package/dist/reflection/reflection-agent.d.ts +105 -0
  220. package/dist/reflection/reflection-agent.d.ts.map +1 -0
  221. package/dist/reflection/reflection-agent.js +234 -0
  222. package/dist/reflection/reflection-agent.js.map +1 -0
  223. package/dist/reflection/reflection-hook.d.ts +50 -0
  224. package/dist/reflection/reflection-hook.d.ts.map +1 -0
  225. package/dist/reflection/reflection-hook.js +108 -0
  226. package/dist/reflection/reflection-hook.js.map +1 -0
  227. package/dist/rules/project-rules.d.ts +47 -0
  228. package/dist/rules/project-rules.d.ts.map +1 -0
  229. package/dist/rules/project-rules.js +166 -0
  230. package/dist/rules/project-rules.js.map +1 -0
  231. package/dist/security/boundaries.d.ts +81 -0
  232. package/dist/security/boundaries.d.ts.map +1 -0
  233. package/dist/security/boundaries.js +158 -0
  234. package/dist/security/boundaries.js.map +1 -0
  235. package/dist/security/index.d.ts +2 -0
  236. package/dist/security/index.d.ts.map +1 -0
  237. package/dist/security/index.js +11 -0
  238. package/dist/security/index.js.map +1 -0
  239. package/dist/session/session-types.d.ts +25 -4
  240. package/dist/session/session-types.d.ts.map +1 -1
  241. package/dist/skills/file-skill-loader.d.ts +9 -20
  242. package/dist/skills/file-skill-loader.d.ts.map +1 -1
  243. package/dist/skills/file-skill-loader.js +35 -164
  244. package/dist/skills/file-skill-loader.js.map +1 -1
  245. package/dist/skills/index.d.ts +1 -1
  246. package/dist/skills/index.d.ts.map +1 -1
  247. package/dist/skills/index.js +1 -2
  248. package/dist/skills/index.js.map +1 -1
  249. package/dist/skills/skill-manager.d.ts +22 -29
  250. package/dist/skills/skill-manager.d.ts.map +1 -1
  251. package/dist/skills/skill-manager.js +63 -85
  252. package/dist/skills/skill-manager.js.map +1 -1
  253. package/dist/skills/types.d.ts +4 -16
  254. package/dist/skills/types.d.ts.map +1 -1
  255. package/dist/subagent/index.d.ts +4 -0
  256. package/dist/subagent/index.d.ts.map +1 -0
  257. package/dist/subagent/index.js +8 -0
  258. package/dist/subagent/index.js.map +1 -0
  259. package/dist/subagent/subagent-loader.d.ts +53 -0
  260. package/dist/subagent/subagent-loader.d.ts.map +1 -0
  261. package/dist/subagent/subagent-loader.js +155 -0
  262. package/dist/subagent/subagent-loader.js.map +1 -0
  263. package/dist/subagent/subagent-manager.d.ts +161 -0
  264. package/dist/subagent/subagent-manager.d.ts.map +1 -0
  265. package/dist/subagent/subagent-manager.js +468 -0
  266. package/dist/subagent/subagent-manager.js.map +1 -0
  267. package/dist/subagent/subagent-types.d.ts +77 -0
  268. package/dist/subagent/subagent-types.d.ts.map +1 -0
  269. package/dist/subagent/subagent-types.js +3 -0
  270. package/dist/subagent/subagent-types.js.map +1 -0
  271. package/dist/tools/builtin/bash.d.ts +3 -0
  272. package/dist/tools/builtin/bash.d.ts.map +1 -0
  273. package/dist/tools/builtin/bash.js +87 -0
  274. package/dist/tools/builtin/bash.js.map +1 -0
  275. package/dist/tools/builtin/edit-file.d.ts.map +1 -1
  276. package/dist/tools/builtin/edit-file.js +1 -0
  277. package/dist/tools/builtin/edit-file.js.map +1 -1
  278. package/dist/tools/builtin/index.d.ts +14 -0
  279. package/dist/tools/builtin/index.d.ts.map +1 -1
  280. package/dist/tools/builtin/index.js +45 -1
  281. package/dist/tools/builtin/index.js.map +1 -1
  282. package/dist/tools/builtin/list-errors.d.ts +7 -0
  283. package/dist/tools/builtin/list-errors.d.ts.map +1 -0
  284. package/dist/tools/builtin/list-errors.js +64 -0
  285. package/dist/tools/builtin/list-errors.js.map +1 -0
  286. package/dist/tools/builtin/list-subagents.d.ts +7 -0
  287. package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
  288. package/dist/tools/builtin/list-subagents.js +21 -0
  289. package/dist/tools/builtin/list-subagents.js.map +1 -0
  290. package/dist/tools/builtin/recall.d.ts +11 -0
  291. package/dist/tools/builtin/recall.d.ts.map +1 -0
  292. package/dist/tools/builtin/recall.js +60 -0
  293. package/dist/tools/builtin/recall.js.map +1 -0
  294. package/dist/tools/builtin/remember.d.ts +12 -0
  295. package/dist/tools/builtin/remember.d.ts.map +1 -0
  296. package/dist/tools/builtin/remember.js +72 -0
  297. package/dist/tools/builtin/remember.js.map +1 -0
  298. package/dist/tools/builtin/skill.d.ts +14 -0
  299. package/dist/tools/builtin/skill.d.ts.map +1 -0
  300. package/dist/tools/builtin/skill.js +71 -0
  301. package/dist/tools/builtin/skill.js.map +1 -0
  302. package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
  303. package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
  304. package/dist/tools/builtin/spawn-subagent.js +43 -0
  305. package/dist/tools/builtin/spawn-subagent.js.map +1 -0
  306. package/dist/tools/builtin/web-fetch.d.ts +3 -0
  307. package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
  308. package/dist/tools/builtin/web-fetch.js +101 -0
  309. package/dist/tools/builtin/web-fetch.js.map +1 -0
  310. package/dist/tools/builtin/write-file.d.ts.map +1 -1
  311. package/dist/tools/builtin/write-file.js +1 -0
  312. package/dist/tools/builtin/write-file.js.map +1 -1
  313. package/dist/tools/circuit-breaker.d.ts +19 -10
  314. package/dist/tools/circuit-breaker.d.ts.map +1 -1
  315. package/dist/tools/circuit-breaker.js +22 -11
  316. package/dist/tools/circuit-breaker.js.map +1 -1
  317. package/dist/tools/error-tracker.d.ts +28 -44
  318. package/dist/tools/error-tracker.d.ts.map +1 -1
  319. package/dist/tools/error-tracker.js +39 -156
  320. package/dist/tools/error-tracker.js.map +1 -1
  321. package/dist/tools/tool-filter.d.ts +70 -0
  322. package/dist/tools/tool-filter.d.ts.map +1 -0
  323. package/dist/tools/tool-filter.js +92 -0
  324. package/dist/tools/tool-filter.js.map +1 -0
  325. package/dist/tools/tool-output-truncator.d.ts +36 -0
  326. package/dist/tools/tool-output-truncator.d.ts.map +1 -0
  327. package/dist/tools/tool-output-truncator.js +117 -0
  328. package/dist/tools/tool-output-truncator.js.map +1 -0
  329. package/dist/tools/tool-registry.d.ts +25 -9
  330. package/dist/tools/tool-registry.d.ts.map +1 -1
  331. package/dist/tools/tool-registry.js +77 -28
  332. package/dist/tools/tool-registry.js.map +1 -1
  333. package/dist/tools/tool-validator.d.ts +13 -0
  334. package/dist/tools/tool-validator.d.ts.map +1 -0
  335. package/dist/tools/tool-validator.js +116 -0
  336. package/dist/tools/tool-validator.js.map +1 -0
  337. package/dist/tools/types.d.ts +86 -3
  338. package/dist/tools/types.d.ts.map +1 -1
  339. package/dist/tools/types.js +51 -2
  340. package/dist/tools/types.js.map +1 -1
  341. package/dist/trace/trace-logger.d.ts +30 -4
  342. package/dist/trace/trace-logger.d.ts.map +1 -1
  343. package/dist/trace/trace-logger.js +83 -7
  344. package/dist/trace/trace-logger.js.map +1 -1
  345. package/package.json +14 -4
  346. package/dist/compression/sliding-window.d.ts +0 -21
  347. package/dist/compression/sliding-window.d.ts.map +0 -1
  348. package/dist/compression/sliding-window.js +0 -44
  349. 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;IA2RzC;;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,34 +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) {
97
- // ── Phase 0: Progressive disclosure ──────────────────────────────
98
- if (this.enableSkillAutoDetect && this.skillManager.count > 0) {
99
- const activated = this.skillManager.detectAndActivate(input);
100
- if (activated.length > 0) {
101
- this.rebuildSystemPrompt();
102
- console.log(`[Skills] Auto-activated: ${activated.join(", ")}`);
103
- }
104
- }
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();
94
+ // ── Async initialization (MCP connections, etc.) ─────────────────
95
+ await this.init();
96
+ // ── Reload dynamic resources (preferences, skills, MCP) ─────────
97
+ await this.reloadDynamicResources();
98
+ // ── Recover orphaned sub-agent results from a cancelled session ──
99
+ this.recoverOrphanedSubAgentResults();
105
100
  // ── Create user message ─────────────────────────────────────────
106
101
  const userMessage = message_1.Message.user(input);
107
102
  this.contextManager.addMessage(userMessage.toDict());
108
103
  // Reset plan state for this run (skip when resuming a session)
109
- if (!this._skipPlanReset) {
104
+ if (!skipPlanReset) {
110
105
  this.currentPlan = [];
111
106
  this.hasPlan = false;
112
107
  this.consecutiveFailures = 0;
113
108
  this.completedSteps = 0;
114
109
  }
115
- this._skipPlanReset = false;
116
110
  // Save initial checkpoint (captures user input before any LLM call)
117
111
  if (this.checkpointingEnabled) {
118
112
  this.saveCheckpoint("active");
@@ -120,91 +114,129 @@ class PlanSolveAgent extends agent_1.Agent {
120
114
  // Track consecutive unproductive iterations (no tool calls, no answer)
121
115
  let consecutiveEmptyIterations = 0;
122
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;
123
120
  // ── Main Plan-Solve loop ────────────────────────────────────────
124
121
  for (let iteration = 0; iteration < this.maxIterations; iteration++) {
125
122
  // Check if user cancelled (SIGINT)
126
123
  if (this.isCancelled) {
127
- this.sessionManager?.deleteSession(this.sessionManager.getSessionId());
128
- 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>").`;
129
128
  for (const h of this.hooks)
130
129
  h.onFinish?.(cancelMsg);
131
130
  return cancelMsg;
132
131
  }
133
- 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();
134
140
  // Rebuild the system prompt to inject current plan progress
135
141
  // and any replan hint if consecutive failures are detected
136
142
  const replanHint = this.computeReplanHint();
137
143
  this.rebuildContextWithPlan(replanHint);
138
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
+ }
139
152
  // Call the LLM — with network error handling
140
153
  for (const h of this.hooks)
141
154
  h.onLLMStart?.(contextMessages, this.toolRegistry.getTools());
142
155
  let response;
143
156
  try {
144
- response = await this.llm.chat(contextMessages, this.toolRegistry.getTools());
157
+ response = await this.llm.chat(contextMessages, this.toolRegistry.getTools(), this._abortController?.signal);
145
158
  }
146
159
  catch (err) {
147
- 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) {
148
171
  for (const h of this.hooks)
149
172
  h.onLLMError?.(err);
150
- return this.handleNetworkError(err, iteration + 1);
173
+ return this.handleNetworkError(err, iteration + 1, "continue with what you were doing");
151
174
  }
152
175
  throw err;
153
176
  }
154
177
  for (const h of this.hooks)
155
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
+ }
156
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
+ }
157
188
  // Create assistant message from the response
158
189
  const assistantMessage = message_1.Message.assistant(response.content, response.tool_calls);
159
- 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
+ }
160
218
  // ── Handle tool calls (execution phase) ─────────────────────
161
219
  if (response.tool_calls && response.tool_calls.length > 0) {
162
220
  consecutiveEmptyIterations = 0;
163
221
  if (parsed.thought) {
164
- console.log(`[Thought] ${parsed.thought}`);
222
+ this.logger.info("Thought", parsed.thought);
165
223
  for (const h of this.hooks)
166
224
  h.onThought?.(parsed.thought);
167
- this.captureAnalysisFromThought(parsed.thought);
168
225
  }
169
- // Track whether ANY tool in this round failed
170
- let roundHadFailure = false;
171
- for (const toolCall of response.tool_calls) {
172
- let args;
173
- try {
174
- args = JSON.parse(toolCall.function.arguments);
175
- }
176
- catch {
177
- args = {};
178
- }
179
- for (const h of this.hooks)
180
- h.onToolStart?.(toolCall.function.name, args);
181
- let result;
182
- try {
183
- result = await this.toolRegistry.execute(toolCall.function.name, args);
184
- }
185
- catch (err) {
186
- const message = err instanceof Error ? err.message : String(err);
187
- result = `Error executing tool "${toolCall.function.name}": ${message}`;
188
- }
189
- // Track failure/success for replan detection and hooks
190
- if (result.startsWith("Error")) {
191
- roundHadFailure = true;
192
- for (const h of this.hooks)
193
- h.onToolError?.(toolCall.function.name, result);
194
- }
195
- else {
196
- for (const h of this.hooks)
197
- h.onToolEnd?.(toolCall.function.name, result);
198
- }
199
- // Track this result for error analysis if it indicates a failure
200
- this.trackToolErrorForAnalysis(toolCall.function.name, result);
201
- const toolMessage = message_1.Message.tool(result, toolCall.id, toolCall.function.name);
202
- 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());
203
233
  }
234
+ const mcpWarnedServers = new Set();
235
+ const { hadFailure: roundHadFailure } = await this.executeToolCallsBatch(response.tool_calls, mcpWarnedServers);
204
236
  // Update consecutive failure count and step progress
205
237
  if (roundHadFailure) {
206
238
  this.consecutiveFailures++;
207
- console.log(`[Replan] Consecutive failures: ${this.consecutiveFailures}` +
239
+ this.logger.info("Replan", `Consecutive failures: ${this.consecutiveFailures}` +
208
240
  (this.replanThreshold > 0 &&
209
241
  this.consecutiveFailures >= this.replanThreshold
210
242
  ? ` — threshold reached (${this.replanThreshold}), will prompt replan`
@@ -221,7 +253,7 @@ class PlanSolveAgent extends agent_1.Agent {
221
253
  this.completedSteps = Math.min(this.completedSteps + 1, this.currentPlan.length);
222
254
  }
223
255
  if (this.hasPlan) {
224
- console.log(`[Progress] Step ${this.completedSteps}/${this.currentPlan.length} completed`);
256
+ this.logger.info("Progress", `Step ${this.completedSteps}/${this.currentPlan.length} completed`);
225
257
  }
226
258
  }
227
259
  // Save checkpoint after complete tool execution round
@@ -233,12 +265,33 @@ class PlanSolveAgent extends agent_1.Agent {
233
265
  }
234
266
  // ── Final answer ────────────────────────────────────────────
235
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
+ }
236
289
  if (parsed.thought) {
237
- console.log(`[Thought] ${parsed.thought}`);
290
+ this.logger.info("Thought", parsed.thought);
238
291
  for (const h of this.hooks)
239
292
  h.onThought?.(parsed.thought);
240
293
  }
241
- console.log(`[Plan-Solve] Task complete — returning final answer.`);
294
+ this.logger.info("Plan-Solve", "Task complete — returning final answer.");
242
295
  // Save final checkpoint as completed
243
296
  if (this.checkpointingEnabled) {
244
297
  this.saveCheckpoint("completed");
@@ -255,14 +308,14 @@ class PlanSolveAgent extends agent_1.Agent {
255
308
  consecutiveEmptyIterations = 0;
256
309
  this.currentPlan = parsed.plan.slice(0, this.maxPlanSteps);
257
310
  this.hasPlan = true;
258
- console.log(`[Plan] Created ${this.currentPlan.length}-step plan:`);
311
+ this.logger.info("Plan", `Created ${this.currentPlan.length}-step plan:`);
259
312
  for (let i = 0; i < this.currentPlan.length; i++) {
260
- console.log(` ${i + 1}. ${this.currentPlan[i]}`);
313
+ this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
261
314
  }
262
315
  for (const h of this.hooks)
263
316
  h.onPlanCreated?.(this.currentPlan);
264
317
  if (parsed.thought) {
265
- console.log(`[Thought] ${parsed.thought}`);
318
+ this.logger.info("Thought", parsed.thought);
266
319
  for (const h of this.hooks)
267
320
  h.onThought?.(parsed.thought);
268
321
  }
@@ -275,14 +328,15 @@ class PlanSolveAgent extends agent_1.Agent {
275
328
  consecutiveEmptyIterations = 0;
276
329
  this.currentPlan = parsed.revised_plan.slice(0, this.maxPlanSteps);
277
330
  this.completedSteps = 0; // Remaining steps are now new
278
- 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:`);
279
333
  for (let i = 0; i < this.currentPlan.length; i++) {
280
- console.log(` ${i + 1}. ${this.currentPlan[i]}`);
334
+ this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
281
335
  }
282
336
  for (const h of this.hooks)
283
337
  h.onPlanRevised?.(this.currentPlan);
284
338
  if (parsed.thought) {
285
- console.log(`[Thought] ${parsed.thought}`);
339
+ this.logger.info("Thought", parsed.thought);
286
340
  for (const h of this.hooks)
287
341
  h.onThought?.(parsed.thought);
288
342
  }
@@ -291,10 +345,9 @@ class PlanSolveAgent extends agent_1.Agent {
291
345
  // ── Default: log thought and continue loop ──────────────────
292
346
  if (parsed.thought) {
293
347
  consecutiveEmptyIterations++;
294
- console.log(`[Thought] ${parsed.thought}`);
348
+ this.logger.info("Thought", parsed.thought);
295
349
  for (const h of this.hooks)
296
350
  h.onThought?.(parsed.thought);
297
- this.captureAnalysisFromThought(parsed.thought);
298
351
  // If stuck in thought-only loop, bail out
299
352
  if (consecutiveEmptyIterations >= EMPTY_ITERATION_LIMIT) {
300
353
  const stuckMsg = "I apologize, but I'm having difficulty making progress on your request. " +
@@ -379,28 +432,8 @@ class PlanSolveAgent extends agent_1.Agent {
379
432
  this._skipPlanReset = true;
380
433
  return this.run(input);
381
434
  }
382
- // ─── Private Helpers ─────────────────────────────────────────────────
383
- /**
384
- * Handle an LLMNetworkError: save an interrupted checkpoint if
385
- * checkpointing is enabled, and return a user-facing message with
386
- * resume instructions.
387
- */
388
- handleNetworkError(err, iteration) {
389
- if (this.checkpointingEnabled) {
390
- this.saveCheckpoint("interrupted");
391
- }
392
- const sid = this.sessionManager?.getSessionId() ?? "unknown";
393
- console.error(`\n[Network Error] ${err.cause}: ${err.message}`);
394
- if (this.checkpointingEnabled && this.sessionManager) {
395
- return (`[Network Error] ${err.message}\n\n` +
396
- `Your session "${sid}" has been saved (iteration ${iteration}).\n` +
397
- `After your network is restored, resume with:\n` +
398
- ` agent.resume("${sid}", "continue with what you were doing")\n\n` +
399
- `Or start a new session by calling agent.run() again.`);
400
- }
401
- return (`[Network Error] ${err.message}\n\n` +
402
- `Please check your network connection and try again.`);
403
- }
435
+ // ─── Network error handling inherited from Agent ───────────────────
436
+ // handleNetworkError is defined in the base Agent class.
404
437
  // ─── Plan Context Injection ─────────────────────────────────────────────
405
438
  /**
406
439
  * Rebuild the system prompt to include the current plan context
@@ -413,11 +446,7 @@ class PlanSolveAgent extends agent_1.Agent {
413
446
  * to consider revising its plan.
414
447
  */
415
448
  rebuildContextWithPlan(replanHint) {
416
- let prompt = this.coreSystemPrompt;
417
- // User preferences — injected as a system-prompt section
418
- prompt += preference_manager_1.PreferenceManager.toPrompt(this.preferences);
419
- // Available skills hint (progressive disclosure — names only)
420
- prompt += this.skillManager.buildAvailableSkillsHint();
449
+ let prompt = this.buildSystemPrompt();
421
450
  // Plan context — injected when a plan exists
422
451
  if (this.hasPlan && this.currentPlan.length > 0) {
423
452
  prompt += `\n\n=== Current Plan (${this.completedSteps}/${this.currentPlan.length} completed) ===\n`;
@@ -438,8 +467,6 @@ class PlanSolveAgent extends agent_1.Agent {
438
467
  if (replanHint) {
439
468
  prompt += `\n\n${replanHint}`;
440
469
  }
441
- // Active skill instructions
442
- prompt += this.skillManager.buildSkillsPrompt();
443
470
  this.contextManager.setSystemMessage(prompt);
444
471
  }
445
472
  /**