@dexto/core 1.3.0 → 1.5.0

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 (781) hide show
  1. package/README.md +53 -9
  2. package/dist/agent/DextoAgent.cjs +570 -210
  3. package/dist/agent/DextoAgent.d.ts +175 -35
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +568 -208
  6. package/dist/agent/agentCard.js +1 -1
  7. package/dist/agent/error-codes.cjs +1 -0
  8. package/dist/agent/error-codes.d.ts +2 -1
  9. package/dist/agent/error-codes.d.ts.map +1 -1
  10. package/dist/agent/error-codes.js +2 -1
  11. package/dist/agent/errors.cjs +13 -0
  12. package/dist/agent/errors.d.ts +4 -0
  13. package/dist/agent/errors.d.ts.map +1 -1
  14. package/dist/agent/errors.js +14 -1
  15. package/dist/agent/index.cjs +4 -1
  16. package/dist/agent/index.d.ts +2 -2
  17. package/dist/agent/index.d.ts.map +1 -1
  18. package/dist/agent/index.js +6 -2
  19. package/dist/agent/schemas.cjs +90 -68
  20. package/dist/agent/schemas.d.ts +5998 -146
  21. package/dist/agent/schemas.d.ts.map +1 -1
  22. package/dist/agent/schemas.js +90 -65
  23. package/dist/agent/state-manager.cjs +5 -5
  24. package/dist/agent/state-manager.d.ts +4 -4
  25. package/dist/agent/state-manager.js +6 -6
  26. package/dist/agent/types.d.ts +24 -10
  27. package/dist/agent/types.d.ts.map +1 -1
  28. package/dist/approval/error-codes.js +1 -1
  29. package/dist/approval/errors.js +1 -1
  30. package/dist/approval/factory.js +1 -1
  31. package/dist/approval/index.js +1 -1
  32. package/dist/approval/manager.cjs +234 -4
  33. package/dist/approval/manager.d.ts +131 -4
  34. package/dist/approval/manager.d.ts.map +1 -1
  35. package/dist/approval/manager.js +225 -5
  36. package/dist/approval/schemas.cjs +57 -7
  37. package/dist/approval/schemas.d.ts +344 -33
  38. package/dist/approval/schemas.d.ts.map +1 -1
  39. package/dist/approval/schemas.js +54 -8
  40. package/dist/approval/types.cjs +1 -0
  41. package/dist/approval/types.d.ts +32 -1
  42. package/dist/approval/types.d.ts.map +1 -1
  43. package/dist/approval/types.js +2 -1
  44. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  45. package/dist/context/compaction/factory.cjs +57 -0
  46. package/dist/context/compaction/factory.d.ts +17 -0
  47. package/dist/context/compaction/factory.d.ts.map +1 -0
  48. package/dist/context/compaction/factory.js +34 -0
  49. package/dist/context/compaction/index.cjs +49 -0
  50. package/dist/context/compaction/index.d.ts +11 -0
  51. package/dist/context/compaction/index.d.ts.map +1 -0
  52. package/dist/context/compaction/index.js +19 -0
  53. package/dist/context/compaction/overflow.cjs +43 -0
  54. package/dist/context/compaction/overflow.d.ts +33 -0
  55. package/dist/context/compaction/overflow.d.ts.map +1 -0
  56. package/dist/context/compaction/overflow.js +19 -0
  57. package/dist/context/compaction/provider.cjs +16 -0
  58. package/dist/context/compaction/provider.d.ts +48 -0
  59. package/dist/context/compaction/provider.d.ts.map +1 -0
  60. package/dist/context/compaction/providers/noop-provider.cjs +48 -0
  61. package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
  62. package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
  63. package/dist/context/compaction/providers/noop-provider.js +24 -0
  64. package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
  65. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
  66. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
  67. package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
  68. package/dist/{llm/tokenizer/factory.cjs → context/compaction/registry.cjs} +15 -20
  69. package/dist/context/compaction/registry.d.ts +19 -0
  70. package/dist/context/compaction/registry.d.ts.map +1 -0
  71. package/dist/context/compaction/registry.js +16 -0
  72. package/dist/context/compaction/schemas.cjs +38 -0
  73. package/dist/context/compaction/schemas.d.ts +24 -0
  74. package/dist/context/compaction/schemas.d.ts.map +1 -0
  75. package/dist/context/compaction/schemas.js +14 -0
  76. package/dist/{llm/tokenizer/types.cjs → context/compaction/strategies/noop.cjs} +12 -9
  77. package/dist/context/compaction/strategies/noop.d.ts +18 -0
  78. package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
  79. package/dist/context/compaction/strategies/noop.js +13 -0
  80. package/dist/context/compaction/strategies/reactive-overflow.cjs +201 -0
  81. package/dist/context/compaction/strategies/reactive-overflow.d.ts +81 -0
  82. package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
  83. package/dist/context/compaction/strategies/reactive-overflow.js +178 -0
  84. package/dist/context/compaction/types.d.ts +20 -0
  85. package/dist/context/compaction/types.d.ts.map +1 -0
  86. package/dist/context/error-codes.cjs +7 -0
  87. package/dist/context/error-codes.d.ts +8 -1
  88. package/dist/context/error-codes.d.ts.map +1 -1
  89. package/dist/context/error-codes.js +8 -1
  90. package/dist/context/errors.cjs +68 -0
  91. package/dist/context/errors.d.ts +21 -0
  92. package/dist/context/errors.d.ts.map +1 -1
  93. package/dist/context/errors.js +69 -1
  94. package/dist/context/index.cjs +3 -1
  95. package/dist/context/index.d.ts +1 -0
  96. package/dist/context/index.d.ts.map +1 -1
  97. package/dist/context/index.js +2 -1
  98. package/dist/context/manager.cjs +280 -323
  99. package/dist/context/manager.d.ts +65 -111
  100. package/dist/context/manager.d.ts.map +1 -1
  101. package/dist/context/manager.js +280 -328
  102. package/dist/context/media-helpers.js +1 -1
  103. package/dist/context/types.cjs +49 -0
  104. package/dist/context/types.d.ts +187 -72
  105. package/dist/context/types.d.ts.map +1 -1
  106. package/dist/context/types.js +35 -0
  107. package/dist/context/utils.cjs +293 -290
  108. package/dist/context/utils.d.ts +32 -18
  109. package/dist/context/utils.d.ts.map +1 -1
  110. package/dist/context/utils.js +293 -290
  111. package/dist/errors/DextoBaseError.js +1 -1
  112. package/dist/errors/DextoRuntimeError.js +1 -1
  113. package/dist/errors/DextoValidationError.js +1 -1
  114. package/dist/errors/index.js +1 -1
  115. package/dist/errors/result-bridge.cjs +2 -3
  116. package/dist/errors/result-bridge.d.ts.map +1 -1
  117. package/dist/errors/result-bridge.js +3 -4
  118. package/dist/errors/types.js +1 -1
  119. package/dist/events/index.cjs +18 -1
  120. package/dist/events/index.d.ts +149 -12
  121. package/dist/events/index.d.ts.map +1 -1
  122. package/dist/events/index.js +19 -2
  123. package/dist/filesystem/error-codes.js +1 -1
  124. package/dist/filesystem/errors.js +1 -1
  125. package/dist/filesystem/filesystem-service.cjs +39 -0
  126. package/dist/filesystem/filesystem-service.d.ts +32 -0
  127. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  128. package/dist/filesystem/filesystem-service.js +40 -1
  129. package/dist/filesystem/index.d.ts +1 -1
  130. package/dist/filesystem/index.d.ts.map +1 -1
  131. package/dist/filesystem/index.js +1 -1
  132. package/dist/filesystem/path-validator.cjs +69 -1
  133. package/dist/filesystem/path-validator.d.ts +43 -2
  134. package/dist/filesystem/path-validator.d.ts.map +1 -1
  135. package/dist/filesystem/path-validator.js +70 -2
  136. package/dist/image/define-image.cjs +146 -0
  137. package/dist/image/define-image.d.ts +71 -0
  138. package/dist/image/define-image.d.ts.map +1 -0
  139. package/dist/image/define-image.js +121 -0
  140. package/dist/{llm/tokenizer/default.cjs → image/index.cjs} +10 -19
  141. package/dist/image/index.d.ts +53 -0
  142. package/dist/image/index.d.ts.map +1 -0
  143. package/dist/image/index.js +7 -0
  144. package/dist/image/types.d.ts +231 -0
  145. package/dist/image/types.d.ts.map +1 -0
  146. package/dist/image/types.js +0 -0
  147. package/dist/index.browser.cjs +23 -8
  148. package/dist/index.browser.d.ts +4 -3
  149. package/dist/index.browser.d.ts.map +1 -1
  150. package/dist/index.browser.js +20 -3
  151. package/dist/index.cjs +5 -1
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +3 -1
  155. package/dist/llm/error-codes.cjs +1 -1
  156. package/dist/llm/error-codes.d.ts +1 -1
  157. package/dist/llm/error-codes.d.ts.map +1 -1
  158. package/dist/llm/error-codes.js +2 -2
  159. package/dist/llm/errors.cjs +34 -10
  160. package/dist/llm/errors.d.ts +23 -11
  161. package/dist/llm/errors.d.ts.map +1 -1
  162. package/dist/llm/errors.js +36 -12
  163. package/dist/llm/executor/stream-processor.cjs +375 -0
  164. package/dist/llm/executor/stream-processor.d.ts +55 -0
  165. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  166. package/dist/llm/executor/stream-processor.js +352 -0
  167. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  168. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  169. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  170. package/dist/llm/executor/tool-output-truncator.js +48 -0
  171. package/dist/llm/executor/turn-executor.cjs +780 -0
  172. package/dist/llm/executor/turn-executor.d.ts +167 -0
  173. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  174. package/dist/llm/executor/turn-executor.js +711 -0
  175. package/dist/llm/executor/types.cjs +16 -0
  176. package/dist/llm/executor/types.d.ts +27 -0
  177. package/dist/llm/executor/types.d.ts.map +1 -0
  178. package/dist/llm/executor/types.js +0 -0
  179. package/dist/llm/formatters/vercel.cjs +26 -188
  180. package/dist/llm/formatters/vercel.d.ts +2 -14
  181. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  182. package/dist/llm/formatters/vercel.js +25 -187
  183. package/dist/llm/index.cjs +18 -1
  184. package/dist/llm/index.d.ts +2 -0
  185. package/dist/llm/index.d.ts.map +1 -1
  186. package/dist/llm/index.js +14 -0
  187. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  188. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  189. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  190. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  191. package/dist/llm/providers/local/downloader.cjs +291 -0
  192. package/dist/llm/providers/local/downloader.d.ts +82 -0
  193. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  194. package/dist/llm/providers/local/downloader.js +251 -0
  195. package/dist/llm/providers/local/error-codes.cjs +57 -0
  196. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  197. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  198. package/dist/llm/providers/local/error-codes.js +34 -0
  199. package/dist/llm/providers/local/errors.cjs +240 -0
  200. package/dist/llm/providers/local/errors.d.ts +31 -0
  201. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  202. package/dist/llm/providers/local/errors.js +217 -0
  203. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  204. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  205. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  206. package/dist/llm/providers/local/gpu-detector.js +178 -0
  207. package/dist/llm/providers/local/index.cjs +147 -0
  208. package/dist/llm/providers/local/index.d.ts +21 -0
  209. package/dist/llm/providers/local/index.d.ts.map +1 -0
  210. package/dist/llm/providers/local/index.js +126 -0
  211. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  212. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  213. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  214. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  215. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  216. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  217. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  218. package/dist/llm/providers/local/ollama-provider.js +198 -0
  219. package/dist/llm/providers/local/registry.cjs +343 -0
  220. package/dist/llm/providers/local/registry.d.ts +51 -0
  221. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  222. package/dist/llm/providers/local/registry.js +312 -0
  223. package/dist/llm/providers/local/schemas.cjs +169 -0
  224. package/dist/llm/providers/local/schemas.d.ts +395 -0
  225. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  226. package/dist/llm/providers/local/schemas.js +133 -0
  227. package/dist/llm/providers/local/types.cjs +16 -0
  228. package/dist/llm/providers/local/types.d.ts +219 -0
  229. package/dist/llm/providers/local/types.d.ts.map +1 -0
  230. package/dist/llm/providers/local/types.js +0 -0
  231. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  232. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  233. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  234. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  235. package/dist/llm/registry.cjs +569 -52
  236. package/dist/llm/registry.d.ts +79 -39
  237. package/dist/llm/registry.d.ts.map +1 -1
  238. package/dist/llm/registry.js +564 -49
  239. package/dist/llm/resolver.cjs +62 -34
  240. package/dist/llm/resolver.d.ts +3 -3
  241. package/dist/llm/resolver.d.ts.map +1 -1
  242. package/dist/llm/resolver.js +69 -38
  243. package/dist/llm/schemas.cjs +92 -97
  244. package/dist/llm/schemas.d.ts +162 -39
  245. package/dist/llm/schemas.d.ts.map +1 -1
  246. package/dist/llm/schemas.js +93 -100
  247. package/dist/llm/services/factory.cjs +88 -103
  248. package/dist/llm/services/factory.d.ts +17 -4
  249. package/dist/llm/services/factory.d.ts.map +1 -1
  250. package/dist/llm/services/factory.js +87 -93
  251. package/dist/llm/services/test-utils.integration.cjs +28 -10
  252. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  253. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  254. package/dist/llm/services/test-utils.integration.js +33 -12
  255. package/dist/llm/services/types.d.ts +1 -28
  256. package/dist/llm/services/types.d.ts.map +1 -1
  257. package/dist/llm/services/vercel.cjs +58 -469
  258. package/dist/llm/services/vercel.d.ts +39 -21
  259. package/dist/llm/services/vercel.d.ts.map +1 -1
  260. package/dist/llm/services/vercel.js +60 -476
  261. package/dist/llm/types.cjs +11 -4
  262. package/dist/llm/types.d.ts +9 -9
  263. package/dist/llm/types.d.ts.map +1 -1
  264. package/dist/llm/types.js +12 -4
  265. package/dist/llm/validation.js +1 -1
  266. package/dist/logger/browser.js +1 -1
  267. package/dist/logger/factory.js +1 -1
  268. package/dist/logger/index.js +1 -1
  269. package/dist/logger/logger.js +1 -1
  270. package/dist/logger/v2/dexto-logger.cjs +34 -6
  271. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  272. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  273. package/dist/logger/v2/dexto-logger.js +35 -7
  274. package/dist/logger/v2/error-codes.js +1 -1
  275. package/dist/logger/v2/errors.js +1 -1
  276. package/dist/logger/v2/schemas.js +1 -1
  277. package/dist/logger/v2/test-utils.cjs +70 -0
  278. package/dist/logger/v2/test-utils.d.ts +17 -0
  279. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  280. package/dist/logger/v2/test-utils.js +46 -0
  281. package/dist/logger/v2/transport-factory.js +1 -1
  282. package/dist/logger/v2/transports/console-transport.js +1 -1
  283. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  284. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  285. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  286. package/dist/logger/v2/transports/file-transport.js +7 -1
  287. package/dist/logger/v2/types.cjs +1 -0
  288. package/dist/logger/v2/types.d.ts +18 -2
  289. package/dist/logger/v2/types.d.ts.map +1 -1
  290. package/dist/logger/v2/types.js +2 -1
  291. package/dist/mcp/error-codes.cjs +1 -0
  292. package/dist/mcp/error-codes.d.ts +1 -0
  293. package/dist/mcp/error-codes.d.ts.map +1 -1
  294. package/dist/mcp/error-codes.js +2 -1
  295. package/dist/mcp/errors.cjs +13 -0
  296. package/dist/mcp/errors.d.ts +7 -0
  297. package/dist/mcp/errors.d.ts.map +1 -1
  298. package/dist/mcp/errors.js +14 -1
  299. package/dist/mcp/manager.cjs +12 -0
  300. package/dist/mcp/manager.d.ts +17 -0
  301. package/dist/mcp/manager.d.ts.map +1 -1
  302. package/dist/mcp/manager.js +13 -1
  303. package/dist/mcp/mcp-client.cjs +0 -3
  304. package/dist/mcp/mcp-client.d.ts.map +1 -1
  305. package/dist/mcp/mcp-client.js +1 -4
  306. package/dist/mcp/resolver.js +1 -1
  307. package/dist/mcp/schemas.cjs +6 -0
  308. package/dist/mcp/schemas.d.ts +52 -0
  309. package/dist/mcp/schemas.d.ts.map +1 -1
  310. package/dist/mcp/schemas.js +6 -1
  311. package/dist/memory/error-codes.js +1 -1
  312. package/dist/memory/errors.js +1 -1
  313. package/dist/memory/index.js +1 -1
  314. package/dist/memory/manager.js +1 -1
  315. package/dist/memory/schemas.d.ts +3 -3
  316. package/dist/memory/schemas.js +1 -1
  317. package/dist/plugins/builtins/content-policy.js +1 -1
  318. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  319. package/dist/plugins/error-codes.cjs +3 -0
  320. package/dist/plugins/error-codes.d.ts +7 -1
  321. package/dist/plugins/error-codes.d.ts.map +1 -1
  322. package/dist/plugins/error-codes.js +4 -1
  323. package/dist/plugins/index.cjs +7 -0
  324. package/dist/plugins/index.d.ts +4 -2
  325. package/dist/plugins/index.d.ts.map +1 -1
  326. package/dist/plugins/index.js +7 -2
  327. package/dist/plugins/loader.js +1 -1
  328. package/dist/plugins/manager.cjs +92 -7
  329. package/dist/plugins/manager.d.ts +10 -3
  330. package/dist/plugins/manager.d.ts.map +1 -1
  331. package/dist/plugins/manager.js +93 -8
  332. package/dist/plugins/registrations/builtins.js +1 -1
  333. package/dist/plugins/registry.cjs +63 -0
  334. package/dist/plugins/registry.d.ts +101 -0
  335. package/dist/plugins/registry.d.ts.map +1 -0
  336. package/dist/plugins/registry.js +39 -0
  337. package/dist/plugins/schemas.cjs +17 -5
  338. package/dist/plugins/schemas.d.ts +65 -8
  339. package/dist/plugins/schemas.d.ts.map +1 -1
  340. package/dist/plugins/schemas.js +16 -5
  341. package/dist/plugins/types.d.ts +0 -1
  342. package/dist/plugins/types.d.ts.map +1 -1
  343. package/dist/process/command-validator.js +1 -1
  344. package/dist/process/error-codes.js +1 -1
  345. package/dist/process/errors.js +1 -1
  346. package/dist/process/index.js +1 -1
  347. package/dist/process/process-service.cjs +78 -26
  348. package/dist/process/process-service.d.ts +6 -1
  349. package/dist/process/process-service.d.ts.map +1 -1
  350. package/dist/process/process-service.js +79 -27
  351. package/dist/process/types.d.ts +2 -2
  352. package/dist/process/types.d.ts.map +1 -1
  353. package/dist/prompts/error-codes.cjs +1 -0
  354. package/dist/prompts/error-codes.d.ts +2 -1
  355. package/dist/prompts/error-codes.d.ts.map +1 -1
  356. package/dist/prompts/error-codes.js +2 -1
  357. package/dist/prompts/errors.cjs +15 -0
  358. package/dist/prompts/errors.d.ts +4 -0
  359. package/dist/prompts/errors.d.ts.map +1 -1
  360. package/dist/prompts/errors.js +16 -1
  361. package/dist/prompts/index.js +1 -1
  362. package/dist/prompts/name-validation.js +1 -1
  363. package/dist/prompts/prompt-manager.cjs +13 -2
  364. package/dist/prompts/prompt-manager.d.ts +7 -0
  365. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  366. package/dist/prompts/prompt-manager.js +14 -3
  367. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  368. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  369. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  370. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  371. package/dist/prompts/providers/custom-prompt-provider.js +1 -1
  372. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  373. package/dist/prompts/schemas.d.ts +12 -0
  374. package/dist/prompts/schemas.d.ts.map +1 -1
  375. package/dist/prompts/schemas.js +1 -1
  376. package/dist/prompts/types.d.ts +2 -0
  377. package/dist/prompts/types.d.ts.map +1 -1
  378. package/dist/prompts/utils.js +1 -1
  379. package/dist/providers/base-registry.cjs +147 -0
  380. package/dist/providers/base-registry.d.ts +147 -0
  381. package/dist/providers/base-registry.d.ts.map +1 -0
  382. package/dist/providers/base-registry.js +123 -0
  383. package/dist/providers/discovery.cjs +95 -0
  384. package/dist/providers/discovery.d.ts +94 -0
  385. package/dist/providers/discovery.d.ts.map +1 -0
  386. package/dist/providers/discovery.js +70 -0
  387. package/dist/providers/index.cjs +24 -0
  388. package/dist/providers/index.d.ts +32 -0
  389. package/dist/providers/index.d.ts.map +1 -0
  390. package/dist/providers/index.js +2 -0
  391. package/dist/resources/error-codes.js +1 -1
  392. package/dist/resources/errors.js +1 -1
  393. package/dist/resources/handlers/blob-handler.js +1 -1
  394. package/dist/resources/handlers/factory.js +1 -1
  395. package/dist/resources/handlers/filesystem-handler.js +1 -1
  396. package/dist/resources/index.js +1 -1
  397. package/dist/resources/internal-provider.js +1 -1
  398. package/dist/resources/manager.js +1 -1
  399. package/dist/resources/reference-parser.cjs +3 -3
  400. package/dist/resources/reference-parser.d.ts.map +1 -1
  401. package/dist/resources/reference-parser.js +4 -4
  402. package/dist/resources/schemas.js +1 -1
  403. package/dist/search/index.js +1 -1
  404. package/dist/search/search-service.js +1 -1
  405. package/dist/session/chat-session.cjs +169 -54
  406. package/dist/session/chat-session.d.ts +69 -29
  407. package/dist/session/chat-session.d.ts.map +1 -1
  408. package/dist/session/chat-session.js +171 -56
  409. package/dist/session/error-codes.js +1 -1
  410. package/dist/session/errors.js +1 -1
  411. package/dist/session/history/database.cjs +134 -21
  412. package/dist/session/history/database.d.ts +37 -8
  413. package/dist/session/history/database.d.ts.map +1 -1
  414. package/dist/session/history/database.js +135 -22
  415. package/dist/session/history/factory.js +1 -1
  416. package/dist/session/history/memory.cjs +18 -0
  417. package/dist/session/history/memory.d.ts +8 -0
  418. package/dist/session/history/memory.d.ts.map +1 -1
  419. package/dist/session/history/memory.js +19 -1
  420. package/dist/session/history/types.d.ts +13 -1
  421. package/dist/session/history/types.d.ts.map +1 -1
  422. package/dist/session/index.cjs +3 -0
  423. package/dist/session/index.d.ts +3 -0
  424. package/dist/session/index.d.ts.map +1 -1
  425. package/dist/session/index.js +3 -1
  426. package/dist/session/message-queue.cjs +201 -0
  427. package/dist/session/message-queue.d.ts +114 -0
  428. package/dist/session/message-queue.d.ts.map +1 -0
  429. package/dist/session/message-queue.js +178 -0
  430. package/dist/session/schemas.js +1 -1
  431. package/dist/session/session-manager.cjs +57 -7
  432. package/dist/session/session-manager.d.ts +18 -0
  433. package/dist/session/session-manager.d.ts.map +1 -1
  434. package/dist/session/session-manager.js +58 -8
  435. package/dist/session/title-generator.cjs +4 -8
  436. package/dist/session/title-generator.d.ts +1 -2
  437. package/dist/session/title-generator.d.ts.map +1 -1
  438. package/dist/session/title-generator.js +5 -9
  439. package/dist/session/types.cjs +16 -0
  440. package/dist/session/types.d.ts +14 -0
  441. package/dist/session/types.d.ts.map +1 -0
  442. package/dist/session/types.js +0 -0
  443. package/dist/storage/blob/factory.cjs +8 -11
  444. package/dist/storage/blob/factory.d.ts +32 -6
  445. package/dist/storage/blob/factory.d.ts.map +1 -1
  446. package/dist/storage/blob/factory.js +9 -12
  447. package/dist/storage/blob/index.cjs +56 -0
  448. package/dist/storage/blob/index.d.ts +45 -0
  449. package/dist/storage/blob/index.d.ts.map +1 -0
  450. package/dist/storage/blob/index.js +30 -0
  451. package/dist/storage/blob/local-blob-store.js +1 -1
  452. package/dist/storage/blob/memory-blob-store.js +1 -1
  453. package/dist/storage/blob/provider.cjs +16 -0
  454. package/dist/storage/blob/provider.d.ts +50 -0
  455. package/dist/storage/blob/provider.d.ts.map +1 -0
  456. package/dist/storage/blob/provider.js +0 -0
  457. package/dist/storage/blob/providers/index.cjs +31 -0
  458. package/dist/storage/blob/providers/index.d.ts +8 -0
  459. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  460. package/dist/storage/blob/providers/index.js +7 -0
  461. package/dist/storage/blob/providers/local.cjs +39 -0
  462. package/dist/storage/blob/providers/local.d.ts +17 -0
  463. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  464. package/dist/storage/blob/providers/local.js +16 -0
  465. package/dist/storage/blob/providers/memory.cjs +39 -0
  466. package/dist/storage/blob/providers/memory.d.ts +17 -0
  467. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  468. package/dist/storage/blob/providers/memory.js +16 -0
  469. package/dist/storage/blob/registry.cjs +50 -0
  470. package/dist/storage/blob/registry.d.ts +42 -0
  471. package/dist/storage/blob/registry.d.ts.map +1 -0
  472. package/dist/storage/blob/registry.js +26 -0
  473. package/dist/storage/blob/schemas.cjs +9 -12
  474. package/dist/storage/blob/schemas.d.ts +39 -34
  475. package/dist/storage/blob/schemas.d.ts.map +1 -1
  476. package/dist/storage/blob/schemas.js +7 -12
  477. package/dist/storage/cache/factory.cjs +8 -36
  478. package/dist/storage/cache/factory.d.ts +32 -7
  479. package/dist/storage/cache/factory.d.ts.map +1 -1
  480. package/dist/storage/cache/factory.js +9 -27
  481. package/dist/storage/cache/index.cjs +53 -0
  482. package/dist/storage/cache/index.d.ts +44 -0
  483. package/dist/storage/cache/index.d.ts.map +1 -0
  484. package/dist/storage/cache/index.js +28 -0
  485. package/dist/storage/cache/memory-cache-store.js +1 -1
  486. package/dist/storage/cache/provider.cjs +16 -0
  487. package/dist/storage/cache/provider.d.ts +56 -0
  488. package/dist/storage/cache/provider.d.ts.map +1 -0
  489. package/dist/storage/cache/provider.js +0 -0
  490. package/dist/storage/cache/providers/index.cjs +31 -0
  491. package/dist/storage/cache/providers/index.d.ts +8 -0
  492. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  493. package/dist/storage/cache/providers/index.js +7 -0
  494. package/dist/storage/cache/providers/memory.cjs +40 -0
  495. package/dist/storage/cache/providers/memory.d.ts +17 -0
  496. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  497. package/dist/storage/cache/providers/memory.js +17 -0
  498. package/dist/storage/cache/providers/redis.cjs +66 -0
  499. package/dist/storage/cache/providers/redis.d.ts +20 -0
  500. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  501. package/dist/storage/cache/providers/redis.js +33 -0
  502. package/dist/storage/cache/redis-store.js +1 -1
  503. package/dist/{llm/tokenizer/google.cjs → storage/cache/registry.cjs} +23 -25
  504. package/dist/storage/cache/registry.d.ts +42 -0
  505. package/dist/storage/cache/registry.d.ts.map +1 -0
  506. package/dist/storage/cache/registry.js +26 -0
  507. package/dist/storage/cache/schemas.cjs +6 -2
  508. package/dist/storage/cache/schemas.d.ts +2 -3
  509. package/dist/storage/cache/schemas.d.ts.map +1 -1
  510. package/dist/storage/cache/schemas.js +4 -2
  511. package/dist/storage/database/factory.cjs +8 -47
  512. package/dist/storage/database/factory.d.ts +34 -8
  513. package/dist/storage/database/factory.d.ts.map +1 -1
  514. package/dist/storage/database/factory.js +9 -38
  515. package/dist/storage/database/index.cjs +58 -0
  516. package/dist/storage/database/index.d.ts +45 -0
  517. package/dist/storage/database/index.d.ts.map +1 -0
  518. package/dist/storage/database/index.js +37 -0
  519. package/dist/storage/database/memory-database-store.js +1 -1
  520. package/dist/storage/database/postgres-store.cjs +12 -0
  521. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  522. package/dist/storage/database/postgres-store.js +13 -1
  523. package/dist/storage/database/provider.cjs +16 -0
  524. package/dist/storage/database/provider.d.ts +56 -0
  525. package/dist/storage/database/provider.d.ts.map +1 -0
  526. package/dist/storage/database/provider.js +0 -0
  527. package/dist/storage/database/providers/index.cjs +34 -0
  528. package/dist/storage/database/providers/index.d.ts +9 -0
  529. package/dist/storage/database/providers/index.d.ts.map +1 -0
  530. package/dist/storage/database/providers/index.js +9 -0
  531. package/dist/storage/database/providers/memory.cjs +40 -0
  532. package/dist/storage/database/providers/memory.d.ts +16 -0
  533. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  534. package/dist/storage/database/providers/memory.js +17 -0
  535. package/dist/storage/database/providers/postgres.cjs +62 -0
  536. package/dist/storage/database/providers/postgres.d.ts +19 -0
  537. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  538. package/dist/storage/database/providers/postgres.js +29 -0
  539. package/dist/storage/database/providers/sqlite.cjs +66 -0
  540. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  541. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  542. package/dist/storage/database/providers/sqlite.js +33 -0
  543. package/dist/storage/database/registry.cjs +50 -0
  544. package/dist/storage/database/registry.d.ts +42 -0
  545. package/dist/storage/database/registry.d.ts.map +1 -0
  546. package/dist/storage/database/registry.js +26 -0
  547. package/dist/storage/database/schemas.cjs +8 -2
  548. package/dist/storage/database/schemas.d.ts +3 -4
  549. package/dist/storage/database/schemas.d.ts.map +1 -1
  550. package/dist/storage/database/schemas.js +5 -2
  551. package/dist/storage/database/sqlite-store.js +1 -1
  552. package/dist/storage/error-codes.cjs +6 -0
  553. package/dist/storage/error-codes.d.ts +7 -1
  554. package/dist/storage/error-codes.d.ts.map +1 -1
  555. package/dist/storage/error-codes.js +7 -1
  556. package/dist/storage/errors.cjs +80 -0
  557. package/dist/storage/errors.d.ts +24 -0
  558. package/dist/storage/errors.d.ts.map +1 -1
  559. package/dist/storage/errors.js +81 -1
  560. package/dist/storage/index.cjs +47 -4
  561. package/dist/storage/index.d.ts +34 -8
  562. package/dist/storage/index.d.ts.map +1 -1
  563. package/dist/storage/index.js +33 -4
  564. package/dist/storage/schemas.cjs +4 -0
  565. package/dist/storage/schemas.d.ts +17 -50
  566. package/dist/storage/schemas.d.ts.map +1 -1
  567. package/dist/storage/schemas.js +6 -2
  568. package/dist/storage/storage-manager.cjs +6 -6
  569. package/dist/storage/storage-manager.d.ts.map +1 -1
  570. package/dist/storage/storage-manager.js +4 -4
  571. package/dist/systemPrompt/contributors.js +1 -1
  572. package/dist/systemPrompt/error-codes.js +1 -1
  573. package/dist/systemPrompt/errors.js +1 -1
  574. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  575. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  576. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  577. package/dist/systemPrompt/in-built-prompts.js +7 -6
  578. package/dist/systemPrompt/index.js +1 -1
  579. package/dist/systemPrompt/manager.js +1 -1
  580. package/dist/systemPrompt/registry.cjs +2 -2
  581. package/dist/systemPrompt/registry.d.ts +1 -1
  582. package/dist/systemPrompt/registry.d.ts.map +1 -1
  583. package/dist/systemPrompt/registry.js +3 -3
  584. package/dist/systemPrompt/schemas.cjs +2 -2
  585. package/dist/systemPrompt/schemas.d.ts +18 -18
  586. package/dist/systemPrompt/schemas.js +3 -3
  587. package/dist/telemetry/decorators.js +1 -1
  588. package/dist/telemetry/error-codes.js +1 -1
  589. package/dist/telemetry/errors.js +1 -1
  590. package/dist/telemetry/exporters.js +1 -1
  591. package/dist/telemetry/index.js +1 -1
  592. package/dist/telemetry/schemas.js +1 -1
  593. package/dist/telemetry/telemetry.js +1 -1
  594. package/dist/telemetry/utils.js +1 -1
  595. package/dist/tools/bash-pattern-utils.cjs +91 -0
  596. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  597. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  598. package/dist/tools/bash-pattern-utils.js +64 -0
  599. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  600. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  601. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  602. package/dist/tools/custom-tool-registry.cjs +64 -0
  603. package/dist/tools/custom-tool-registry.d.ts +120 -0
  604. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  605. package/dist/tools/custom-tool-registry.js +40 -0
  606. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  607. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  608. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  609. package/dist/tools/custom-tool-schema-registry.js +140 -0
  610. package/dist/tools/display-types.cjs +60 -0
  611. package/dist/tools/display-types.d.ts +133 -0
  612. package/dist/tools/display-types.d.ts.map +1 -0
  613. package/dist/tools/display-types.js +32 -0
  614. package/dist/tools/error-codes.cjs +5 -0
  615. package/dist/tools/error-codes.d.ts +6 -1
  616. package/dist/tools/error-codes.d.ts.map +1 -1
  617. package/dist/tools/error-codes.js +6 -1
  618. package/dist/tools/errors.cjs +71 -0
  619. package/dist/tools/errors.d.ts +33 -0
  620. package/dist/tools/errors.d.ts.map +1 -1
  621. package/dist/tools/errors.js +72 -1
  622. package/dist/tools/index.cjs +15 -1
  623. package/dist/tools/index.d.ts +5 -0
  624. package/dist/tools/index.d.ts.map +1 -1
  625. package/dist/tools/index.js +13 -2
  626. package/dist/tools/internal-tools/constants.cjs +3 -9
  627. package/dist/tools/internal-tools/constants.d.ts +1 -1
  628. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  629. package/dist/tools/internal-tools/constants.js +4 -10
  630. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  631. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  632. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  633. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  634. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  635. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  636. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  637. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  638. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  639. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  640. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  641. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  642. package/dist/tools/internal-tools/provider.cjs +175 -31
  643. package/dist/tools/internal-tools/provider.d.ts +62 -14
  644. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  645. package/dist/tools/internal-tools/provider.js +176 -32
  646. package/dist/tools/internal-tools/registry.cjs +19 -43
  647. package/dist/tools/internal-tools/registry.d.ts +32 -11
  648. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  649. package/dist/tools/internal-tools/registry.js +20 -44
  650. package/dist/tools/schemas.cjs +36 -6
  651. package/dist/tools/schemas.d.ts +74 -5
  652. package/dist/tools/schemas.d.ts.map +1 -1
  653. package/dist/tools/schemas.js +30 -6
  654. package/dist/tools/tool-manager.cjs +279 -30
  655. package/dist/tools/tool-manager.d.ts +45 -4
  656. package/dist/tools/tool-manager.d.ts.map +1 -1
  657. package/dist/tools/tool-manager.js +284 -31
  658. package/dist/tools/types.d.ts +63 -0
  659. package/dist/tools/types.d.ts.map +1 -1
  660. package/dist/utils/api-key-resolver.cjs +19 -1
  661. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  662. package/dist/utils/api-key-resolver.js +20 -2
  663. package/dist/utils/async-context.js +1 -1
  664. package/dist/utils/debug.js +1 -1
  665. package/dist/{llm/tokenizer/anthropic.cjs → utils/defer.cjs} +19 -20
  666. package/dist/utils/defer.d.ts +63 -0
  667. package/dist/utils/defer.d.ts.map +1 -0
  668. package/dist/utils/defer.js +19 -0
  669. package/dist/utils/error-conversion.js +1 -1
  670. package/dist/utils/execution-context.js +1 -1
  671. package/dist/utils/fs-walk.js +1 -1
  672. package/dist/utils/index.cjs +3 -3
  673. package/dist/utils/index.d.ts +1 -1
  674. package/dist/utils/index.d.ts.map +1 -1
  675. package/dist/utils/index.js +1 -1
  676. package/dist/utils/path.js +1 -1
  677. package/dist/utils/redactor.cjs +18 -3
  678. package/dist/utils/redactor.d.ts +0 -7
  679. package/dist/utils/redactor.d.ts.map +1 -1
  680. package/dist/utils/redactor.js +19 -4
  681. package/dist/utils/result.js +1 -1
  682. package/dist/utils/safe-stringify.js +1 -1
  683. package/dist/utils/schema-metadata.js +1 -1
  684. package/dist/utils/schema.js +1 -1
  685. package/dist/utils/service-initializer.cjs +15 -37
  686. package/dist/utils/service-initializer.d.ts.map +1 -1
  687. package/dist/utils/service-initializer.js +16 -38
  688. package/dist/utils/user-info.js +1 -1
  689. package/dist/utils/zod-schema-converter.js +1 -1
  690. package/package.json +10 -8
  691. package/dist/context/compression/middle-removal.cjs +0 -95
  692. package/dist/context/compression/middle-removal.d.ts +0 -47
  693. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  694. package/dist/context/compression/middle-removal.js +0 -72
  695. package/dist/context/compression/oldest-removal.cjs +0 -83
  696. package/dist/context/compression/oldest-removal.d.ts +0 -42
  697. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  698. package/dist/context/compression/oldest-removal.js +0 -60
  699. package/dist/context/compression/types.d.ts +0 -18
  700. package/dist/context/compression/types.d.ts.map +0 -1
  701. package/dist/llm/formatters/anthropic.cjs +0 -257
  702. package/dist/llm/formatters/anthropic.d.ts +0 -46
  703. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  704. package/dist/llm/formatters/anthropic.js +0 -239
  705. package/dist/llm/formatters/factory.cjs +0 -50
  706. package/dist/llm/formatters/factory.d.ts +0 -10
  707. package/dist/llm/formatters/factory.d.ts.map +0 -1
  708. package/dist/llm/formatters/factory.js +0 -27
  709. package/dist/llm/formatters/openai.cjs +0 -203
  710. package/dist/llm/formatters/openai.d.ts +0 -39
  711. package/dist/llm/formatters/openai.d.ts.map +0 -1
  712. package/dist/llm/formatters/openai.js +0 -184
  713. package/dist/llm/formatters/types.d.ts +0 -41
  714. package/dist/llm/formatters/types.d.ts.map +0 -1
  715. package/dist/llm/services/anthropic.cjs +0 -511
  716. package/dist/llm/services/anthropic.d.ts +0 -48
  717. package/dist/llm/services/anthropic.d.ts.map +0 -1
  718. package/dist/llm/services/anthropic.js +0 -447
  719. package/dist/llm/services/openai.cjs +0 -611
  720. package/dist/llm/services/openai.d.ts +0 -48
  721. package/dist/llm/services/openai.d.ts.map +0 -1
  722. package/dist/llm/services/openai.js +0 -547
  723. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  724. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  725. package/dist/llm/tokenizer/anthropic.js +0 -20
  726. package/dist/llm/tokenizer/default.d.ts +0 -14
  727. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  728. package/dist/llm/tokenizer/default.js +0 -18
  729. package/dist/llm/tokenizer/factory.d.ts +0 -12
  730. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  731. package/dist/llm/tokenizer/factory.js +0 -21
  732. package/dist/llm/tokenizer/google.d.ts +0 -29
  733. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  734. package/dist/llm/tokenizer/google.js +0 -29
  735. package/dist/llm/tokenizer/openai.cjs +0 -115
  736. package/dist/llm/tokenizer/openai.d.ts +0 -41
  737. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  738. package/dist/llm/tokenizer/openai.js +0 -91
  739. package/dist/llm/tokenizer/types.d.ts +0 -18
  740. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  741. package/dist/llm/tokenizer/types.js +0 -10
  742. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -106
  743. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  744. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  745. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -73
  746. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  747. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  748. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  749. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  750. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -62
  751. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  752. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  753. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -39
  754. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -57
  755. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  756. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  757. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -34
  758. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -71
  759. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  760. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  761. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -48
  762. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  763. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  764. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  765. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  766. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -55
  767. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  768. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  769. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -32
  770. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -56
  771. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  772. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  773. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -33
  774. package/dist/utils/env-file.cjs +0 -118
  775. package/dist/utils/env-file.d.ts +0 -5
  776. package/dist/utils/env-file.d.ts.map +0 -1
  777. package/dist/utils/env-file.js +0 -85
  778. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  779. /package/dist/context/{compression → compaction}/types.cjs +0 -0
  780. /package/dist/{llm/formatters → context/compaction}/types.js +0 -0
  781. /package/dist/{llm/formatters → image}/types.cjs +0 -0
@@ -0,0 +1,711 @@
1
+ import {
2
+ __callDispose,
3
+ __using
4
+ } from "../../chunk-PTJYTZNU.js";
5
+ import {
6
+ streamText,
7
+ generateText,
8
+ stepCountIs,
9
+ jsonSchema,
10
+ APICallError
11
+ } from "ai";
12
+ import { trace } from "@opentelemetry/api";
13
+ import { StreamProcessor } from "./stream-processor.js";
14
+ import { DextoLogComponent } from "../../logger/v2/types.js";
15
+ import { defer } from "../../utils/defer.js";
16
+ import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
17
+ import { ErrorScope, ErrorType } from "../../errors/types.js";
18
+ import { LLMErrorCode } from "../error-codes.js";
19
+ import { toError } from "../../utils/error-conversion.js";
20
+ import { isOverflow } from "../../context/compaction/overflow.js";
21
+ import { ReactiveOverflowStrategy } from "../../context/compaction/strategies/reactive-overflow.js";
22
+ const toolSupportCache = /* @__PURE__ */ new Map();
23
+ const LOCAL_PROVIDERS = ["ollama", "local"];
24
+ class TurnExecutor {
25
+ constructor(model, toolManager, contextManager, eventBus, resourceManager, sessionId, config, llmContext, logger, messageQueue, modelLimits, externalSignal, compactionStrategy) {
26
+ this.model = model;
27
+ this.toolManager = toolManager;
28
+ this.contextManager = contextManager;
29
+ this.eventBus = eventBus;
30
+ this.resourceManager = resourceManager;
31
+ this.sessionId = sessionId;
32
+ this.config = config;
33
+ this.llmContext = llmContext;
34
+ this.messageQueue = messageQueue;
35
+ this.modelLimits = modelLimits;
36
+ this.externalSignal = externalSignal;
37
+ this.logger = logger.createChild(DextoLogComponent.EXECUTOR);
38
+ this.stepAbortController = new AbortController();
39
+ if (compactionStrategy !== void 0) {
40
+ this.compactionStrategy = compactionStrategy;
41
+ } else if (modelLimits) {
42
+ this.compactionStrategy = new ReactiveOverflowStrategy(model, {}, this.logger);
43
+ }
44
+ }
45
+ logger;
46
+ /**
47
+ * Per-step abort controller. Created fresh for each iteration of the loop.
48
+ * This allows soft cancel (abort current step) while still continuing with queued messages.
49
+ */
50
+ stepAbortController;
51
+ compactionStrategy = null;
52
+ /**
53
+ * Map to track approval metadata by toolCallId.
54
+ * Used to pass approval info from tool execution to result persistence.
55
+ */
56
+ approvalMetadata = /* @__PURE__ */ new Map();
57
+ /**
58
+ * Get StreamProcessor config from TurnExecutor state.
59
+ */
60
+ getStreamProcessorConfig() {
61
+ return {
62
+ provider: this.llmContext.provider,
63
+ model: this.llmContext.model
64
+ };
65
+ }
66
+ /**
67
+ * Main agent execution loop.
68
+ * Uses stopWhen: stepCountIs(1) to regain control after each step.
69
+ *
70
+ * @param contributorContext Context for system prompt contributors
71
+ * @param streaming If true, emits llm:chunk events during streaming. Default true.
72
+ */
73
+ async execute(contributorContext, streaming = true) {
74
+ var _stack = [];
75
+ try {
76
+ const _ = __using(_stack, defer(() => this.cleanup()));
77
+ const startTime = Date.now();
78
+ let stepCount = 0;
79
+ let lastStepTokens = null;
80
+ let lastFinishReason = "unknown";
81
+ let lastText = "";
82
+ this.eventBus.emit("llm:thinking");
83
+ const supportsTools = await this.validateToolSupport();
84
+ if (!supportsTools) {
85
+ const modelKey = `${this.llmContext.provider}:${this.llmContext.model}`;
86
+ this.eventBus.emit("llm:unsupported-input", {
87
+ errors: [
88
+ `Model '${modelKey}' does not support tool calling.`,
89
+ "You can still chat, but the model will not be able to use tools or execute commands."
90
+ ],
91
+ provider: this.llmContext.provider,
92
+ model: this.llmContext.model,
93
+ details: {
94
+ feature: "tool-calling",
95
+ supported: false
96
+ }
97
+ });
98
+ this.logger.warn(
99
+ `Model ${modelKey} does not support tools - continuing without tool calling`
100
+ );
101
+ }
102
+ let currentAbortHandler = null;
103
+ try {
104
+ while (true) {
105
+ if (currentAbortHandler && this.externalSignal) {
106
+ this.externalSignal.removeEventListener("abort", currentAbortHandler);
107
+ }
108
+ this.stepAbortController = new AbortController();
109
+ currentAbortHandler = () => this.stepAbortController.abort();
110
+ if (this.externalSignal && !this.externalSignal.aborted) {
111
+ this.externalSignal.addEventListener("abort", currentAbortHandler, {
112
+ once: true
113
+ });
114
+ }
115
+ const coalesced = this.messageQueue.dequeueAll();
116
+ if (coalesced) {
117
+ await this.injectQueuedMessages(coalesced);
118
+ }
119
+ if (lastStepTokens && this.checkAndHandleOverflow(lastStepTokens)) {
120
+ await this.compress(lastStepTokens.inputTokens ?? 0);
121
+ }
122
+ const prepared = await this.contextManager.getFormattedMessagesWithCompression(
123
+ contributorContext,
124
+ this.llmContext
125
+ );
126
+ this.logger.debug(`Step ${stepCount}: Starting`);
127
+ const tools = supportsTools ? await this.createTools() : {};
128
+ const streamProcessor = new StreamProcessor(
129
+ this.contextManager,
130
+ this.eventBus,
131
+ this.resourceManager,
132
+ this.stepAbortController.signal,
133
+ this.getStreamProcessorConfig(),
134
+ this.logger,
135
+ streaming,
136
+ this.approvalMetadata
137
+ );
138
+ const result = await streamProcessor.process(
139
+ () => streamText({
140
+ model: this.model,
141
+ stopWhen: stepCountIs(1),
142
+ tools,
143
+ abortSignal: this.stepAbortController.signal,
144
+ messages: prepared.formattedMessages,
145
+ ...this.config.maxOutputTokens !== void 0 && {
146
+ maxOutputTokens: this.config.maxOutputTokens
147
+ },
148
+ ...this.config.temperature !== void 0 && {
149
+ temperature: this.config.temperature
150
+ },
151
+ // Log stream-level errors (tool errors, API errors during streaming)
152
+ onError: (error) => {
153
+ this.logger.error("Stream error", { error });
154
+ }
155
+ })
156
+ );
157
+ lastStepTokens = result.usage;
158
+ lastFinishReason = result.finishReason;
159
+ lastText = result.text;
160
+ this.logger.debug(
161
+ `Step ${stepCount}: Finished with reason="${result.finishReason}", tokens=${JSON.stringify(result.usage)}`
162
+ );
163
+ if (result.finishReason !== "tool-calls") {
164
+ const queuedOnTerminate = this.messageQueue.dequeueAll();
165
+ if (queuedOnTerminate) {
166
+ this.logger.debug(
167
+ `Continuing: ${queuedOnTerminate.messages.length} queued message(s) to process`
168
+ );
169
+ await this.injectQueuedMessages(queuedOnTerminate);
170
+ continue;
171
+ }
172
+ this.logger.debug(`Terminating: finishReason is "${result.finishReason}"`);
173
+ break;
174
+ }
175
+ if (this.externalSignal?.aborted && !this.messageQueue.hasPending()) {
176
+ this.logger.debug("Terminating: hard cancel - external abort signal received");
177
+ lastFinishReason = "cancelled";
178
+ break;
179
+ }
180
+ if (++stepCount >= this.config.maxSteps) {
181
+ this.logger.debug(`Terminating: reached maxSteps (${this.config.maxSteps})`);
182
+ lastFinishReason = "max-steps";
183
+ break;
184
+ }
185
+ await this.pruneOldToolOutputs();
186
+ }
187
+ } catch (error) {
188
+ const mappedError = this.mapProviderError(error);
189
+ this.logger.error("TurnExecutor failed", { error: mappedError });
190
+ this.eventBus.emit("llm:error", {
191
+ error: mappedError,
192
+ context: "TurnExecutor",
193
+ recoverable: false
194
+ });
195
+ await this.contextManager.flush();
196
+ this.eventBus.emit("run:complete", {
197
+ finishReason: "error",
198
+ stepCount,
199
+ durationMs: Date.now() - startTime,
200
+ error: mappedError
201
+ });
202
+ throw mappedError;
203
+ }
204
+ await this.contextManager.flush();
205
+ this.setTelemetryAttributes(lastStepTokens);
206
+ this.eventBus.emit("run:complete", {
207
+ finishReason: lastFinishReason,
208
+ stepCount,
209
+ durationMs: Date.now() - startTime
210
+ });
211
+ return {
212
+ text: lastText,
213
+ stepCount,
214
+ usage: lastStepTokens,
215
+ finishReason: lastFinishReason
216
+ };
217
+ } catch (_2) {
218
+ var _error = _2, _hasError = true;
219
+ } finally {
220
+ __callDispose(_stack, _error, _hasError);
221
+ }
222
+ }
223
+ /**
224
+ * Abort the current step execution.
225
+ * Note: For full run cancellation, use the external abort signal.
226
+ */
227
+ abort() {
228
+ this.stepAbortController.abort();
229
+ }
230
+ /**
231
+ * Inject coalesced queued messages into the context as a single user message.
232
+ * This enables mid-task user guidance.
233
+ */
234
+ async injectQueuedMessages(coalesced) {
235
+ await this.contextManager.addMessage({
236
+ role: "user",
237
+ content: coalesced.combinedContent,
238
+ metadata: {
239
+ coalesced: coalesced.messages.length > 1,
240
+ messageCount: coalesced.messages.length,
241
+ originalMessageIds: coalesced.messages.map((m) => m.id)
242
+ }
243
+ });
244
+ this.logger.info(`Injected ${coalesced.messages.length} queued message(s) into context`, {
245
+ count: coalesced.messages.length,
246
+ firstQueued: coalesced.firstQueuedAt,
247
+ lastQueued: coalesced.lastQueuedAt
248
+ });
249
+ }
250
+ /**
251
+ * Validates if the current model supports tools.
252
+ * Uses a static cache to avoid repeated validation calls.
253
+ *
254
+ * For local providers (Ollama, local) and custom baseURL endpoints, makes a test call to verify tool support.
255
+ * Known cloud providers without baseURL are assumed to support tools.
256
+ */
257
+ async validateToolSupport() {
258
+ const modelKey = `${this.llmContext.provider}:${this.llmContext.model}:${this.config.baseURL ?? ""}`;
259
+ if (toolSupportCache.has(modelKey)) {
260
+ return toolSupportCache.get(modelKey);
261
+ }
262
+ const isLocalProvider = LOCAL_PROVIDERS.includes(this.llmContext.provider);
263
+ if (!this.config.baseURL && !isLocalProvider) {
264
+ this.logger.debug(
265
+ `Skipping tool validation for ${modelKey} - known cloud provider without custom baseURL`
266
+ );
267
+ toolSupportCache.set(modelKey, true);
268
+ return true;
269
+ }
270
+ this.logger.debug(
271
+ `Testing tool support for ${isLocalProvider ? "local provider" : "custom endpoint"} model: ${modelKey}`
272
+ );
273
+ const testTool = {
274
+ test_tool: {
275
+ inputSchema: jsonSchema({
276
+ type: "object",
277
+ properties: {},
278
+ additionalProperties: false
279
+ }),
280
+ execute: async () => ({ result: "test" })
281
+ }
282
+ };
283
+ const testAbort = new AbortController();
284
+ const testTimeout = setTimeout(() => testAbort.abort(), 5e3);
285
+ try {
286
+ await generateText({
287
+ model: this.model,
288
+ messages: [{ role: "user", content: "Hello" }],
289
+ tools: testTool,
290
+ stopWhen: stepCountIs(1),
291
+ abortSignal: testAbort.signal
292
+ });
293
+ clearTimeout(testTimeout);
294
+ toolSupportCache.set(modelKey, true);
295
+ this.logger.debug(`Model ${modelKey} supports tools`);
296
+ return true;
297
+ } catch (error) {
298
+ clearTimeout(testTimeout);
299
+ const errorMessage = error instanceof Error ? error.message : String(error);
300
+ if (errorMessage.includes("does not support tools")) {
301
+ toolSupportCache.set(modelKey, false);
302
+ this.logger.debug(
303
+ `Detected that model ${modelKey} does not support tool calling - tool functionality will be disabled`
304
+ );
305
+ return false;
306
+ }
307
+ this.logger.debug(
308
+ `Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
309
+ );
310
+ toolSupportCache.set(modelKey, true);
311
+ return true;
312
+ }
313
+ }
314
+ /**
315
+ * Creates tools with execute callbacks and toModelOutput.
316
+ *
317
+ * Key design decisions:
318
+ * - execute() returns raw result with inline images (async)
319
+ * - toModelOutput() formats for LLM consumption (sync)
320
+ * - StreamProcessor handles persistence via tool-result events
321
+ */
322
+ async createTools() {
323
+ const tools = await this.toolManager.getAllTools();
324
+ return Object.fromEntries(
325
+ Object.entries(tools).map(([name, tool]) => [
326
+ name,
327
+ {
328
+ inputSchema: jsonSchema(tool.parameters),
329
+ ...tool.description && { description: tool.description },
330
+ /**
331
+ * Execute callback - runs the tool and returns raw result.
332
+ * Does NOT persist - StreamProcessor handles that on tool-result event.
333
+ *
334
+ * Uses Promise.race to ensure we return quickly on abort, even if the
335
+ * underlying tool (especially MCP tools we don't control) keeps running.
336
+ */
337
+ execute: async (args, options) => {
338
+ this.logger.debug(
339
+ `Executing tool: ${name} (toolCallId: ${options.toolCallId})`
340
+ );
341
+ const abortSignal = this.stepAbortController.signal;
342
+ if (abortSignal.aborted) {
343
+ this.logger.debug(`Tool ${name} cancelled before execution`);
344
+ return { error: "Cancelled by user", cancelled: true };
345
+ }
346
+ let abortHandler = null;
347
+ const abortPromise = new Promise(
348
+ (resolve) => {
349
+ abortHandler = () => {
350
+ this.logger.debug(`Tool ${name} cancelled during execution`);
351
+ resolve({ error: "Cancelled by user", cancelled: true });
352
+ };
353
+ abortSignal.addEventListener("abort", abortHandler, { once: true });
354
+ }
355
+ );
356
+ try {
357
+ const result = await Promise.race([
358
+ (async () => {
359
+ const executionResult = await this.toolManager.executeTool(
360
+ name,
361
+ args,
362
+ options.toolCallId,
363
+ this.sessionId,
364
+ abortSignal
365
+ );
366
+ if (executionResult.requireApproval !== void 0) {
367
+ const metadata = {
368
+ requireApproval: executionResult.requireApproval
369
+ };
370
+ if (executionResult.approvalStatus !== void 0) {
371
+ metadata.approvalStatus = executionResult.approvalStatus;
372
+ }
373
+ this.approvalMetadata.set(options.toolCallId, metadata);
374
+ }
375
+ return executionResult.result;
376
+ })(),
377
+ abortPromise
378
+ ]);
379
+ return result;
380
+ } finally {
381
+ if (abortHandler) {
382
+ abortSignal.removeEventListener("abort", abortHandler);
383
+ }
384
+ }
385
+ },
386
+ /**
387
+ * toModelOutput - formats raw result for LLM consumption.
388
+ * Called by Vercel SDK when preparing messages for next LLM call.
389
+ * SYNC - images are already inline in the raw result.
390
+ */
391
+ toModelOutput: (result) => {
392
+ return this.formatToolResultForLLM(result, name);
393
+ }
394
+ }
395
+ ])
396
+ );
397
+ }
398
+ /**
399
+ * Format tool result for LLM consumption.
400
+ * Handles multimodal content (text + images).
401
+ *
402
+ * This handles RAW tool results - the structure may vary.
403
+ */
404
+ formatToolResultForLLM(result, toolName) {
405
+ if (result && typeof result === "object" && "error" in result) {
406
+ const errorResult = result;
407
+ let errorFlags = "";
408
+ if (errorResult.denied) errorFlags += " (denied)";
409
+ if (errorResult.timeout) errorFlags += " (timeout)";
410
+ return {
411
+ type: "text",
412
+ value: `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`
413
+ };
414
+ }
415
+ if (this.hasMultimodalContent(result)) {
416
+ const contentArray = result.content;
417
+ const contentValue = [];
418
+ for (const part of contentArray) {
419
+ if (part.type === "text" && typeof part.text === "string") {
420
+ contentValue.push({ type: "text", text: part.text });
421
+ } else if (part.type === "image") {
422
+ const imageData = this.extractImageData(part);
423
+ if (imageData) {
424
+ contentValue.push({
425
+ type: "media",
426
+ data: imageData,
427
+ mediaType: part.mimeType || "image/jpeg"
428
+ });
429
+ }
430
+ } else if (part.type === "file") {
431
+ const fileData = this.extractFileData(part);
432
+ if (fileData) {
433
+ contentValue.push({
434
+ type: "media",
435
+ data: fileData,
436
+ mediaType: part.mimeType || "application/octet-stream"
437
+ });
438
+ }
439
+ }
440
+ }
441
+ if (contentValue.length > 0 && contentValue.some((v) => v.type === "media")) {
442
+ return { type: "content", value: contentValue };
443
+ }
444
+ const textParts = contentArray.filter((p) => p.type === "text" && typeof p.text === "string").map((p) => p.text);
445
+ return {
446
+ type: "text",
447
+ value: textParts.join("\n") || "[empty result]"
448
+ };
449
+ }
450
+ if (typeof result === "string") {
451
+ return { type: "text", value: result };
452
+ }
453
+ return {
454
+ type: "text",
455
+ value: typeof result === "object" && result !== null ? JSON.stringify(result) : String(result)
456
+ };
457
+ }
458
+ /**
459
+ * Extract image data from a part, handling various formats.
460
+ */
461
+ extractImageData(part) {
462
+ if (typeof part.image === "string") {
463
+ return part.image;
464
+ }
465
+ if (typeof part.data === "string") {
466
+ return part.data;
467
+ }
468
+ if (part.image instanceof Buffer) {
469
+ return part.image.toString("base64");
470
+ }
471
+ if (part.data instanceof Buffer) {
472
+ return part.data.toString("base64");
473
+ }
474
+ if (part.image instanceof ArrayBuffer) {
475
+ return Buffer.from(new Uint8Array(part.image)).toString("base64");
476
+ }
477
+ if (part.data instanceof ArrayBuffer) {
478
+ return Buffer.from(new Uint8Array(part.data)).toString("base64");
479
+ }
480
+ return null;
481
+ }
482
+ /**
483
+ * Extract file data from a part.
484
+ */
485
+ extractFileData(part) {
486
+ if (typeof part.data === "string") {
487
+ return part.data;
488
+ }
489
+ if (part.data instanceof Buffer) {
490
+ return part.data.toString("base64");
491
+ }
492
+ if (part.data instanceof ArrayBuffer) {
493
+ return Buffer.from(new Uint8Array(part.data)).toString("base64");
494
+ }
495
+ return null;
496
+ }
497
+ /**
498
+ * Check if result has multimodal content array
499
+ */
500
+ hasMultimodalContent(result) {
501
+ return result !== null && typeof result === "object" && "content" in result && Array.isArray(result.content);
502
+ }
503
+ /**
504
+ * Constants for pruning thresholds
505
+ */
506
+ static PRUNE_PROTECT = 4e4;
507
+ // Keep last 40K tokens of tool outputs
508
+ static PRUNE_MINIMUM = 2e4;
509
+ // Only prune if we can save 20K+
510
+ /**
511
+ * Prunes old tool outputs by marking them with compactedAt timestamp.
512
+ * Does NOT modify content - transformation happens at format time in
513
+ * ContextManager.getFormattedMessagesWithCompression().
514
+ *
515
+ * Algorithm:
516
+ * 1. Go backwards through history (most recent first)
517
+ * 2. Stop at summary message (only process post-summary messages)
518
+ * 3. Count tool message tokens
519
+ * 4. If total exceeds PRUNE_PROTECT, mark older ones for pruning
520
+ * 5. Only prune if savings exceed PRUNE_MINIMUM
521
+ */
522
+ async pruneOldToolOutputs() {
523
+ const history = await this.contextManager.getHistory();
524
+ let totalToolTokens = 0;
525
+ let prunedTokens = 0;
526
+ const toPrune = [];
527
+ for (let i = history.length - 1; i >= 0; i--) {
528
+ const msg = history[i];
529
+ if (!msg) continue;
530
+ if (msg.metadata?.isSummary === true) break;
531
+ if (msg.role !== "tool") continue;
532
+ if (msg.compactedAt) continue;
533
+ if (!Array.isArray(msg.content)) continue;
534
+ const tokens = this.estimateToolTokens(msg.content);
535
+ totalToolTokens += tokens;
536
+ if (totalToolTokens > TurnExecutor.PRUNE_PROTECT && msg.id) {
537
+ prunedTokens += tokens;
538
+ toPrune.push(msg.id);
539
+ }
540
+ }
541
+ if (prunedTokens > TurnExecutor.PRUNE_MINIMUM && toPrune.length > 0) {
542
+ const markedCount = await this.contextManager.markMessagesAsCompacted(toPrune);
543
+ this.eventBus.emit("context:pruned", {
544
+ prunedCount: markedCount,
545
+ savedTokens: prunedTokens
546
+ });
547
+ this.logger.debug(`Pruned ${markedCount} tool outputs, saving ~${prunedTokens} tokens`);
548
+ return { prunedCount: markedCount, savedTokens: prunedTokens };
549
+ }
550
+ return { prunedCount: 0, savedTokens: 0 };
551
+ }
552
+ /**
553
+ * Estimates tokens for tool message content using simple heuristic (length/4).
554
+ * Used for pruning decisions only - actual token counts come from API.
555
+ *
556
+ * Tool message content is always Array<TextPart | ImagePart | FilePart | UIResourcePart>
557
+ * after sanitization via SanitizedToolResult.
558
+ */
559
+ estimateToolTokens(content) {
560
+ return content.reduce((sum, part) => {
561
+ if (part.type === "text") {
562
+ return sum + Math.ceil(part.text.length / 4);
563
+ }
564
+ if (part.type === "image" || part.type === "file") {
565
+ return sum + 1e3;
566
+ }
567
+ return sum;
568
+ }, 0);
569
+ }
570
+ /**
571
+ * Cleanup resources when execution scope exits.
572
+ * Called automatically via defer() on normal exit, throw, or abort.
573
+ */
574
+ cleanup() {
575
+ this.logger.debug("TurnExecutor cleanup triggered");
576
+ if (!this.stepAbortController.signal.aborted) {
577
+ this.stepAbortController.abort();
578
+ }
579
+ this.messageQueue.clear();
580
+ }
581
+ /**
582
+ * Check if context has overflowed based on actual token usage from API.
583
+ */
584
+ checkAndHandleOverflow(tokens) {
585
+ if (!this.modelLimits || !this.compactionStrategy) {
586
+ return false;
587
+ }
588
+ return isOverflow(tokens, this.modelLimits);
589
+ }
590
+ /**
591
+ * Compress context using ReactiveOverflowStrategy.
592
+ *
593
+ * Generates a summary of older messages and adds it to history.
594
+ * The actual token reduction happens at read-time via filterCompacted()
595
+ * in getFormattedMessagesWithCompression().
596
+ *
597
+ * @param originalTokens The actual input token count from API that triggered overflow
598
+ */
599
+ async compress(originalTokens) {
600
+ if (!this.compactionStrategy) {
601
+ return;
602
+ }
603
+ this.logger.info(
604
+ `Context overflow detected (${originalTokens} tokens), running compression`
605
+ );
606
+ const history = await this.contextManager.getHistory();
607
+ const summaryMessages = await this.compactionStrategy.compact(history);
608
+ if (summaryMessages.length === 0) {
609
+ this.logger.debug("Compaction returned no summary (history too short)");
610
+ return;
611
+ }
612
+ for (const summary of summaryMessages) {
613
+ await this.contextManager.addMessage(summary);
614
+ }
615
+ const { filterCompacted, estimateMessagesTokens } = await import("../../context/utils.js");
616
+ const updatedHistory = await this.contextManager.getHistory();
617
+ const filteredHistory = filterCompacted(updatedHistory);
618
+ const compactedTokens = estimateMessagesTokens(filteredHistory);
619
+ this.eventBus.emit("context:compacted", {
620
+ originalTokens,
621
+ compactedTokens,
622
+ originalMessages: history.length,
623
+ compactedMessages: filteredHistory.length,
624
+ strategy: this.compactionStrategy.name,
625
+ reason: "overflow"
626
+ });
627
+ this.logger.info(
628
+ `Compaction complete: ${originalTokens} \u2192 ~${compactedTokens} tokens (${history.length} \u2192 ${filteredHistory.length} messages after filtering)`
629
+ );
630
+ }
631
+ /**
632
+ * Set telemetry span attributes for token usage.
633
+ */
634
+ setTelemetryAttributes(usage) {
635
+ const activeSpan = trace.getActiveSpan();
636
+ if (!activeSpan || !usage) {
637
+ return;
638
+ }
639
+ if (usage.inputTokens !== void 0) {
640
+ activeSpan.setAttribute("gen_ai.usage.input_tokens", usage.inputTokens);
641
+ }
642
+ if (usage.outputTokens !== void 0) {
643
+ activeSpan.setAttribute("gen_ai.usage.output_tokens", usage.outputTokens);
644
+ }
645
+ if (usage.totalTokens !== void 0) {
646
+ activeSpan.setAttribute("gen_ai.usage.total_tokens", usage.totalTokens);
647
+ }
648
+ if (usage.reasoningTokens !== void 0) {
649
+ activeSpan.setAttribute("gen_ai.usage.reasoning_tokens", usage.reasoningTokens);
650
+ }
651
+ }
652
+ /**
653
+ * Map provider errors to DextoRuntimeError.
654
+ */
655
+ mapProviderError(err) {
656
+ if (APICallError.isInstance?.(err)) {
657
+ const status = err.statusCode;
658
+ const headers = err.responseHeaders || {};
659
+ const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
660
+ const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
661
+ if (status === 429) {
662
+ return new DextoRuntimeError(
663
+ LLMErrorCode.RATE_LIMIT_EXCEEDED,
664
+ ErrorScope.LLM,
665
+ ErrorType.RATE_LIMIT,
666
+ `Rate limit exceeded${body ? ` - ${body}` : ""}`,
667
+ {
668
+ sessionId: this.sessionId,
669
+ provider: this.llmContext.provider,
670
+ model: this.llmContext.model,
671
+ status,
672
+ retryAfter,
673
+ body
674
+ }
675
+ );
676
+ }
677
+ if (status === 408) {
678
+ return new DextoRuntimeError(
679
+ LLMErrorCode.GENERATION_FAILED,
680
+ ErrorScope.LLM,
681
+ ErrorType.TIMEOUT,
682
+ `Provider timed out${body ? ` - ${body}` : ""}`,
683
+ {
684
+ sessionId: this.sessionId,
685
+ provider: this.llmContext.provider,
686
+ model: this.llmContext.model,
687
+ status,
688
+ body
689
+ }
690
+ );
691
+ }
692
+ return new DextoRuntimeError(
693
+ LLMErrorCode.GENERATION_FAILED,
694
+ ErrorScope.LLM,
695
+ ErrorType.THIRD_PARTY,
696
+ `Provider error ${status}${body ? ` - ${body}` : ""}`,
697
+ {
698
+ sessionId: this.sessionId,
699
+ provider: this.llmContext.provider,
700
+ model: this.llmContext.model,
701
+ status,
702
+ body
703
+ }
704
+ );
705
+ }
706
+ return toError(err, this.logger);
707
+ }
708
+ }
709
+ export {
710
+ TurnExecutor
711
+ };