@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
@@ -32,9 +32,8 @@ __export(manager_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(manager_exports);
34
34
  var import_crypto = require("crypto");
35
- var import_middle_removal = require("./compression/middle-removal.js");
36
- var import_oldest_removal = require("./compression/oldest-removal.js");
37
- var import_types6 = require("../logger/v2/types.js");
35
+ var import_types2 = require("./types.js");
36
+ var import_types3 = require("../logger/v2/types.js");
38
37
  var import_events = require("../events/index.js");
39
38
  var import_utils = require("./utils.js");
40
39
  var import_errors = require("./errors.js");
@@ -55,27 +54,6 @@ class ContextManager {
55
54
  * Maximum number of tokens allowed in the conversation (if specified)
56
55
  */
57
56
  maxInputTokens;
58
- /**
59
- * Actual token count from the last LLM response.
60
- * Used for more accurate token estimation in hybrid approach.
61
- */
62
- lastActualTokenCount = 0;
63
- /**
64
- * Compression threshold as a percentage of maxInputTokens.
65
- * When estimated tokens exceed (maxInputTokens * threshold), compression is triggered.
66
- */
67
- compressionThreshold = 0.8;
68
- // 80% threshold
69
- /**
70
- * Tokenizer used for counting tokens and enabling compression (if specified)
71
- */
72
- tokenizer;
73
- /**
74
- * The sequence of compression strategies to apply when maxInputTokens is exceeded.
75
- * The order in this array matters, as strategies are applied sequentially until
76
- * the token count is within the limit.
77
- */
78
- compressionStrategies;
79
57
  historyProvider;
80
58
  sessionId;
81
59
  /**
@@ -90,28 +68,21 @@ class ContextManager {
90
68
  * @param llmConfig The validated LLM configuration.
91
69
  * @param formatter Formatter implementation for the target LLM provider
92
70
  * @param systemPromptManager SystemPromptManager instance for the conversation
93
- * @param maxInputTokens Maximum token limit for the conversation history. Triggers compression if exceeded and a tokenizer is provided.
94
- * @param tokenizer Tokenizer implementation used for counting tokens and enabling compression.
71
+ * @param maxInputTokens Maximum token limit for the conversation history.
95
72
  * @param historyProvider Session-scoped ConversationHistoryProvider instance for managing conversation history
96
73
  * @param sessionId Unique identifier for the conversation session (readonly, for debugging)
97
- * @param compressionStrategies Optional array of compression strategies to apply when token limits are exceeded
98
- * @param resourceManager Optional ResourceManager for resolving blob references in messages
74
+ * @param resourceManager ResourceManager for resolving blob references in messages
99
75
  * @param logger Logger instance for logging
100
76
  */
101
- constructor(llmConfig, formatter, systemPromptManager, maxInputTokens, tokenizer, historyProvider, sessionId, resourceManager, logger, compressionStrategies = [
102
- new import_middle_removal.MiddleRemovalStrategy({}, logger),
103
- new import_oldest_removal.OldestRemovalStrategy({}, logger)
104
- ]) {
77
+ constructor(llmConfig, formatter, systemPromptManager, maxInputTokens, historyProvider, sessionId, resourceManager, logger) {
105
78
  this.llmConfig = llmConfig;
106
79
  this.formatter = formatter;
107
80
  this.systemPromptManager = systemPromptManager;
108
81
  this.maxInputTokens = maxInputTokens;
109
- this.tokenizer = tokenizer;
110
82
  this.historyProvider = historyProvider;
111
83
  this.sessionId = sessionId;
112
- this.compressionStrategies = compressionStrategies;
113
84
  this.resourceManager = resourceManager;
114
- this.logger = logger.createChild(import_types6.DextoLogComponent.CONTEXT);
85
+ this.logger = logger.createChild(import_types3.DextoLogComponent.CONTEXT);
115
86
  this.logger.debug(
116
87
  `ContextManager: Initialized for session ${sessionId} - history will be managed by ${historyProvider.constructor.name}`
117
88
  );
@@ -176,117 +147,177 @@ class ContextManager {
176
147
  return data;
177
148
  }
178
149
  /**
179
- * Returns the current token count of the conversation history.
180
- * @returns Promise that resolves to the number of tokens in the current history
150
+ * Returns the configured maximum number of input tokens for the conversation.
181
151
  */
182
- async getTokenCount() {
183
- const history = await this.historyProvider.getHistory();
184
- return (0, import_utils.countMessagesTokens)(history, this.tokenizer, void 0, this.logger);
152
+ getMaxInputTokens() {
153
+ return this.maxInputTokens;
154
+ }
155
+ /**
156
+ * Assembles and returns the current system prompt by invoking the SystemPromptManager.
157
+ */
158
+ async getSystemPrompt(context) {
159
+ const prompt = await this.systemPromptManager.build(context);
160
+ this.logger.debug(`[SystemPrompt] Built system prompt:
161
+ ${prompt}`);
162
+ return prompt;
185
163
  }
186
164
  /**
187
- * Returns the total token count that will be sent to the LLM provider,
188
- * including system prompt, formatted messages, and provider-specific overhead.
189
- * This provides a more accurate estimate than getTokenCount() alone.
165
+ * Gets the raw conversation history
166
+ * Returns a defensive copy to prevent modification
190
167
  *
191
- * @param context The DynamicContributorContext for system prompt contributors
192
- * @returns Promise that resolves to the total number of tokens that will be sent to the provider
168
+ * @returns Promise that resolves to a read-only copy of the conversation history
193
169
  */
194
- async getTotalTokenCount(context) {
195
- try {
196
- const systemPrompt = await this.getSystemPrompt(context);
197
- let history = await this.historyProvider.getHistory();
198
- const systemPromptTokens = this.tokenizer.countTokens(systemPrompt);
199
- history = await this.compressHistoryIfNeeded(history, systemPromptTokens);
200
- const historyTokens = (0, import_utils.countMessagesTokens)(
201
- history,
202
- this.tokenizer,
203
- void 0,
204
- this.logger
205
- );
206
- const formattingOverhead = Math.ceil((systemPromptTokens + historyTokens) * 0.05);
207
- const totalTokens = systemPromptTokens + historyTokens + formattingOverhead;
208
- this.logger.debug(
209
- `Token breakdown - System: ${systemPromptTokens}, History: ${historyTokens}, Overhead: ${formattingOverhead}, Total: ${totalTokens}`
210
- );
211
- return totalTokens;
212
- } catch (error) {
213
- this.logger.error(
214
- `Error calculating total token count: ${error instanceof Error ? error.message : String(error)}`,
215
- { error }
216
- );
217
- return this.getTokenCount();
218
- }
170
+ async getHistory() {
171
+ const history = await this.historyProvider.getHistory();
172
+ return [...history];
219
173
  }
220
174
  /**
221
- * Returns the configured maximum number of input tokens for the conversation.
175
+ * Flush any pending history updates to durable storage.
176
+ * Should be called at turn boundaries (after streaming completes, on cancel, on error).
177
+ * This ensures all message updates are persisted before returning control to the caller.
222
178
  */
223
- getMaxInputTokens() {
224
- return this.maxInputTokens;
179
+ async flush() {
180
+ await this.historyProvider.flush();
225
181
  }
226
182
  /**
227
- * Updates the ContextManager configuration when LLM config changes.
228
- * This is called when DextoAgent.switchLLM() updates the LLM configuration.
183
+ * Clears the context window without deleting history.
229
184
  *
230
- * @param newMaxInputTokens New maximum token limit
231
- * @param newTokenizer Optional new tokenizer if provider changed
232
- * @param newFormatter Optional new formatter if provider/router changed
185
+ * This adds a "context clear" marker to the conversation history. When the
186
+ * context is loaded for LLM via getFormattedMessagesWithCompression(),
187
+ * filterCompacted() excludes all messages before this marker.
188
+ *
189
+ * The full history remains in the database for review via /resume or session history.
233
190
  */
234
- updateConfig(newMaxInputTokens, newTokenizer, newFormatter) {
235
- const oldMaxInputTokens = this.maxInputTokens;
236
- this.maxInputTokens = newMaxInputTokens;
237
- if (newTokenizer) {
238
- this.tokenizer = newTokenizer;
239
- }
240
- if (newFormatter) {
241
- this.formatter = newFormatter;
242
- }
243
- this.logger.debug(
244
- `ContextManager config updated: maxInputTokens ${oldMaxInputTokens} -> ${newMaxInputTokens}`
245
- );
191
+ async clearContext() {
192
+ const clearMarker = {
193
+ id: `clear-${Date.now()}`,
194
+ role: "assistant",
195
+ content: [{ type: "text", text: "[Context cleared]" }],
196
+ timestamp: Date.now(),
197
+ metadata: {
198
+ isSummary: true,
199
+ clearedAt: Date.now()
200
+ }
201
+ };
202
+ await this.addMessage(clearMarker);
203
+ this.logger.debug(`Context cleared for session: ${this.sessionId}`);
246
204
  }
247
205
  /**
248
- * Updates the actual token count from the last LLM response.
249
- * This enables hybrid token counting for more accurate estimates.
250
- *
251
- * @param actualTokens The actual token count reported by the LLM provider
206
+ * Appends text to an existing assistant message.
207
+ * Used for streaming responses.
252
208
  */
253
- updateActualTokenCount(actualTokens) {
254
- this.lastActualTokenCount = actualTokens;
255
- this.logger.debug(`Updated actual token count to: ${actualTokens}`);
209
+ async appendAssistantText(messageId, text) {
210
+ const history = await this.historyProvider.getHistory();
211
+ const messageIndex = history.findIndex((m) => m.id === messageId);
212
+ if (messageIndex === -1) {
213
+ throw import_errors.ContextError.messageNotFound(messageId);
214
+ }
215
+ const message = history[messageIndex];
216
+ if (!message) {
217
+ throw import_errors.ContextError.messageNotFound(messageId);
218
+ }
219
+ if (message.role !== "assistant") {
220
+ throw import_errors.ContextError.messageNotAssistant(messageId);
221
+ }
222
+ if (message.content === null) {
223
+ message.content = [{ type: "text", text }];
224
+ } else if (Array.isArray(message.content)) {
225
+ const lastPart = message.content[message.content.length - 1];
226
+ if (lastPart && lastPart.type === "text") {
227
+ lastPart.text += text;
228
+ } else {
229
+ message.content.push({ type: "text", text });
230
+ }
231
+ }
232
+ await this.historyProvider.updateMessage(message);
256
233
  }
257
234
  /**
258
- * Estimates if new input would trigger compression using hybrid approach.
259
- * Combines actual tokens from last response with estimated tokens for new input.
260
- *
261
- * @param newInputTokens Estimated tokens for the new user input
262
- * @returns True if compression should be triggered
235
+ * Adds a tool call to an existing assistant message.
236
+ * Used for streaming responses.
263
237
  */
264
- shouldCompress(newInputTokens) {
265
- const estimatedTotal = this.lastActualTokenCount + newInputTokens;
266
- const compressionTrigger = this.maxInputTokens * this.compressionThreshold;
267
- this.logger.debug(
268
- `Compression check: actual=${this.lastActualTokenCount}, newInput=${newInputTokens}, total=${estimatedTotal}, trigger=${compressionTrigger}`
269
- );
270
- return estimatedTotal > compressionTrigger;
238
+ async addToolCall(messageId, toolCall) {
239
+ const history = await this.historyProvider.getHistory();
240
+ const messageIndex = history.findIndex((m) => m.id === messageId);
241
+ if (messageIndex === -1) {
242
+ throw import_errors.ContextError.messageNotFound(messageId);
243
+ }
244
+ const message = history[messageIndex];
245
+ if (!message) {
246
+ throw import_errors.ContextError.messageNotFound(messageId);
247
+ }
248
+ if (message.role !== "assistant") {
249
+ throw import_errors.ContextError.messageNotAssistant(messageId);
250
+ }
251
+ if (!message.toolCalls) {
252
+ message.toolCalls = [];
253
+ }
254
+ message.toolCalls.push(toolCall);
255
+ await this.historyProvider.updateMessage(message);
271
256
  }
272
257
  /**
273
- * Assembles and returns the current system prompt by invoking the SystemPromptManager.
258
+ * Updates an existing assistant message with new properties.
259
+ * Used for finalizing streaming responses (e.g. adding token usage).
274
260
  */
275
- async getSystemPrompt(context) {
276
- const prompt = await this.systemPromptManager.build(context);
277
- this.logger.debug(`[SystemPrompt] Built system prompt:
278
- ${prompt}`);
279
- return prompt;
261
+ async updateAssistantMessage(messageId, updates) {
262
+ const history = await this.historyProvider.getHistory();
263
+ const messageIndex = history.findIndex((m) => m.id === messageId);
264
+ if (messageIndex === -1) {
265
+ throw import_errors.ContextError.messageNotFound(messageId);
266
+ }
267
+ const message = history[messageIndex];
268
+ if (!message) {
269
+ throw import_errors.ContextError.messageNotFound(messageId);
270
+ }
271
+ if (message.role !== "assistant") {
272
+ throw import_errors.ContextError.messageNotAssistant(messageId);
273
+ }
274
+ Object.assign(message, updates);
275
+ await this.historyProvider.updateMessage(message);
280
276
  }
281
277
  /**
282
- * Gets the raw conversation history
283
- * Returns a defensive copy to prevent modification
278
+ * Marks tool messages as compacted (pruned).
279
+ * Sets the compactedAt timestamp - content transformation happens at format time
280
+ * in getFormattedMessagesWithCompression(). Original content is preserved in
281
+ * storage for debugging/audit.
284
282
  *
285
- * @returns Promise that resolves to a read-only copy of the conversation history
283
+ * Used by TurnExecutor's pruneOldToolOutputs() to reclaim token space
284
+ * by marking old tool outputs that are no longer needed for context.
285
+ *
286
+ * @param messageIds Array of message IDs to mark as compacted
287
+ * @returns Number of messages successfully marked
286
288
  */
287
- async getHistory() {
289
+ async markMessagesAsCompacted(messageIds) {
290
+ if (messageIds.length === 0) {
291
+ return 0;
292
+ }
288
293
  const history = await this.historyProvider.getHistory();
289
- return [...history];
294
+ const timestamp = Date.now();
295
+ let markedCount = 0;
296
+ for (const messageId of messageIds) {
297
+ const message = history.find((m) => m.id === messageId);
298
+ if (!message) {
299
+ this.logger.warn(`markMessagesAsCompacted: Message ${messageId} not found`);
300
+ continue;
301
+ }
302
+ if (message.role !== "tool") {
303
+ this.logger.warn(
304
+ `markMessagesAsCompacted: Message ${messageId} is not a tool message (role=${message.role})`
305
+ );
306
+ continue;
307
+ }
308
+ if (message.compactedAt) {
309
+ continue;
310
+ }
311
+ message.compactedAt = timestamp;
312
+ await this.historyProvider.updateMessage(message);
313
+ markedCount++;
314
+ }
315
+ if (markedCount > 0) {
316
+ this.logger.debug(
317
+ `markMessagesAsCompacted: Marked ${markedCount} messages as compacted`
318
+ );
319
+ }
320
+ return markedCount;
290
321
  }
291
322
  /**
292
323
  * Adds a message to the conversation history.
@@ -299,10 +330,7 @@ ${prompt}`);
299
330
  async addMessage(message) {
300
331
  switch (message.role) {
301
332
  case "user":
302
- if (
303
- // Allow array content for user messages
304
- !(Array.isArray(message.content) && message.content.length > 0) && (typeof message.content !== "string" || message.content.trim() === "")
305
- ) {
333
+ if (!Array.isArray(message.content) || message.content.length === 0) {
306
334
  throw import_errors.ContextError.userMessageContentInvalid();
307
335
  }
308
336
  break;
@@ -318,7 +346,6 @@ ${prompt}`);
318
346
  }
319
347
  }
320
348
  message.provider = this.llmConfig.provider;
321
- message.router = this.llmConfig.router;
322
349
  message.model = this.llmConfig.model;
323
350
  break;
324
351
  case "tool":
@@ -326,14 +353,16 @@ ${prompt}`);
326
353
  throw import_errors.ContextError.toolMessageFieldsMissing();
327
354
  }
328
355
  break;
329
- case "system":
356
+ case "system": {
330
357
  this.logger.warn(
331
- "ContextManager: Adding system message directly to history. Use setSystemPrompt instead."
358
+ "ContextManager: Adding system message directly to history. Use SystemPromptManager instead."
332
359
  );
333
- if (typeof message.content !== "string" || message.content.trim() === "") {
360
+ const textContent = message.content?.filter((p) => p.type === "text").map((p) => p.text).join("");
361
+ if (!textContent || textContent.trim() === "") {
334
362
  throw import_errors.ContextError.systemMessageContentInvalid();
335
363
  }
336
364
  break;
365
+ }
337
366
  }
338
367
  if (!message.id) {
339
368
  message.id = (0, import_crypto.randomUUID)();
@@ -349,57 +378,64 @@ ${prompt}`);
349
378
  this.logger.debug(`ContextManager: History now contains ${history.length} messages`);
350
379
  }
351
380
  /**
352
- * Adds a user message to the conversation
353
- * Can include image data for multimodal input
381
+ * Adds a user message to the conversation.
382
+ * Supports multiple images and files via ContentPart[].
354
383
  *
355
- * @param textContent The user message content
356
- * @param imageData Optional image data for multimodal input
357
- * @param fileData Optional file data for file input
358
- * @throws Error if content is empty or not a string
384
+ * @param content Array of content parts (text, images, files)
385
+ * @throws Error if content is empty or invalid
359
386
  */
360
- async addUserMessage(textContent, imageData, fileData) {
361
- if (typeof textContent !== "string" || textContent.trim() === "" && !imageData && !fileData) {
387
+ async addUserMessage(content) {
388
+ if (!Array.isArray(content) || content.length === 0) {
362
389
  throw import_errors.ContextError.userMessageContentEmpty();
363
390
  }
364
- const finalTextContent = textContent.trim() || (imageData || fileData ? "" : textContent);
365
- const messageParts = [];
366
- if (finalTextContent) {
367
- messageParts.push({ type: "text", text: finalTextContent });
368
- }
369
- if (imageData) {
370
- const processedImage = await this.processUserInput(imageData.image, {
371
- mimeType: imageData.mimeType || "image/jpeg",
372
- source: "user"
373
- });
374
- messageParts.push({
375
- type: "image",
376
- image: processedImage,
377
- mimeType: imageData.mimeType || "image/jpeg"
378
- });
391
+ const hasText = content.some((p) => p.type === "text" && p.text.trim() !== "");
392
+ const hasAttachment = content.some((p) => p.type === "image" || p.type === "file");
393
+ if (!hasText && !hasAttachment) {
394
+ throw import_errors.ContextError.userMessageContentEmpty();
379
395
  }
380
- if (fileData) {
381
- const metadata = {
382
- mimeType: fileData.mimeType,
383
- source: "user"
384
- };
385
- if (fileData.filename) {
386
- metadata.originalName = fileData.filename;
396
+ const processedParts = [];
397
+ for (const part of content) {
398
+ if (part.type === "text") {
399
+ if (part.text.trim()) {
400
+ processedParts.push({ type: "text", text: part.text });
401
+ }
402
+ } else if (part.type === "image") {
403
+ const processedImage = await this.processUserInput(part.image, {
404
+ mimeType: part.mimeType || "image/jpeg",
405
+ source: "user"
406
+ });
407
+ processedParts.push({
408
+ type: "image",
409
+ image: processedImage,
410
+ mimeType: part.mimeType || "image/jpeg"
411
+ });
412
+ } else if (part.type === "file") {
413
+ const metadata = {
414
+ mimeType: part.mimeType,
415
+ source: "user"
416
+ };
417
+ if (part.filename) {
418
+ metadata.originalName = part.filename;
419
+ }
420
+ const processedData = await this.processUserInput(part.data, metadata);
421
+ processedParts.push({
422
+ type: "file",
423
+ data: processedData,
424
+ mimeType: part.mimeType,
425
+ ...part.filename && { filename: part.filename }
426
+ });
387
427
  }
388
- const processedData = await this.processUserInput(fileData.data, metadata);
389
- messageParts.push({
390
- type: "file",
391
- data: processedData,
392
- mimeType: fileData.mimeType,
393
- ...fileData.filename && { filename: fileData.filename }
394
- });
395
- }
396
- if (messageParts.length === 0) {
397
- messageParts.push({ type: "text", text: finalTextContent });
398
428
  }
399
- this.logger.debug(
400
- `ContextManager: Adding user message: ${JSON.stringify(messageParts, null, 2)}`
401
- );
402
- await this.addMessage({ role: "user", content: messageParts });
429
+ const textParts = processedParts.filter((p) => p.type === "text");
430
+ const imageParts = processedParts.filter((p) => p.type === "image");
431
+ const fileParts = processedParts.filter((p) => p.type === "file");
432
+ this.logger.info("User message received", {
433
+ textParts: textParts.length,
434
+ imageParts: imageParts.length,
435
+ fileParts: fileParts.length,
436
+ totalParts: processedParts.length
437
+ });
438
+ await this.addMessage({ role: "user", content: processedParts });
403
439
  }
404
440
  /**
405
441
  * Adds an assistant message to the conversation
@@ -414,54 +450,50 @@ ${prompt}`);
414
450
  if (content === null && (!toolCalls || toolCalls.length === 0)) {
415
451
  throw import_errors.ContextError.assistantMessageContentOrToolsRequired();
416
452
  }
453
+ const contentArray = content !== null ? [{ type: "text", text: content }] : null;
417
454
  await this.addMessage({
418
455
  role: "assistant",
419
- content,
456
+ content: contentArray,
420
457
  ...toolCalls && toolCalls.length > 0 && { toolCalls },
421
458
  ...metadata?.tokenUsage && { tokenUsage: metadata.tokenUsage },
422
459
  ...metadata?.reasoning && { reasoning: metadata.reasoning }
423
460
  });
424
461
  }
425
462
  /**
426
- * Adds a tool result message to the conversation
463
+ * Adds a tool result message to the conversation.
464
+ * The result must already be sanitized - this method only persists it.
465
+ *
466
+ * Success status is read from sanitizedResult.meta.success (single source of truth).
427
467
  *
428
468
  * @param toolCallId ID of the tool call this result is responding to
429
469
  * @param name Name of the tool that executed
430
- * @param result The result returned by the tool
470
+ * @param sanitizedResult The already-sanitized result to store (includes success in meta)
471
+ * @param metadata Optional approval-related metadata
431
472
  * @throws Error if required parameters are missing
432
473
  */
433
- async addToolResult(toolCallId, name, result, options) {
474
+ async addToolResult(toolCallId, name, sanitizedResult, metadata) {
434
475
  if (!toolCallId || !name) {
435
476
  throw import_errors.ContextError.toolCallIdNameRequired();
436
477
  }
437
- const blobService = this.resourceManager.getBlobStore();
438
- const sanitizeOptions = {
439
- blobStore: blobService,
440
- toolName: name,
441
- toolCallId
442
- };
443
- if (options?.success !== void 0) {
444
- sanitizeOptions.success = options.success;
445
- }
446
- const sanitized = await (0, import_utils.sanitizeToolResult)(result, sanitizeOptions, this.logger);
447
- const summary = sanitized.content.map(
448
- (p) => p.type === "text" ? `text(${p.text.length})` : p.type === "image" ? `image(${p.mimeType || "image"})` : `file(${p.mimeType || "file"})`
478
+ const summary = sanitizedResult.content.map(
479
+ (p) => p.type === "text" ? `text(${p.text.length})` : p.type === "image" ? `image(${p.mimeType || "image"})` : p.type === "ui-resource" ? `ui-resource(${p.uri})` : `file(${p.mimeType || "file"})`
449
480
  ).join(", ");
450
481
  this.logger.debug(`ContextManager: Storing tool result (parts) for ${name}: [${summary}]`);
451
482
  await this.addMessage({
452
483
  role: "tool",
453
- content: sanitized.content,
484
+ content: sanitizedResult.content,
454
485
  toolCallId,
455
- name
486
+ name,
487
+ // Success status comes from sanitizedResult.meta (single source of truth)
488
+ success: sanitizedResult.meta.success,
489
+ // Persist approval metadata for frontend display after reload
490
+ ...metadata?.requireApproval !== void 0 && {
491
+ requireApproval: metadata.requireApproval
492
+ },
493
+ ...metadata?.approvalStatus !== void 0 && {
494
+ approvalStatus: metadata.approvalStatus
495
+ }
456
496
  });
457
- return sanitized;
458
- }
459
- /**
460
- * Sets the system prompt for the conversation
461
- *
462
- * @param prompt The system prompt text
463
- */
464
- setSystemPrompt(_prompt) {
465
497
  }
466
498
  /**
467
499
  * Gets the conversation history formatted for the target LLM provider.
@@ -505,13 +537,28 @@ ${prompt}`);
505
537
  this.logger.debug("Resolving blob references in message history before formatting");
506
538
  messageHistory = await Promise.all(
507
539
  messageHistory.map(async (message) => {
508
- const expandedContent = await (0, import_utils.expandBlobReferences)(
509
- message.content,
510
- this.resourceManager,
511
- this.logger,
512
- allowedMediaTypes
513
- );
514
- return { ...message, content: expandedContent };
540
+ if ((0, import_types2.isSystemMessage)(message) || (0, import_types2.isAssistantMessage)(message)) {
541
+ return message;
542
+ }
543
+ if ((0, import_types2.isUserMessage)(message)) {
544
+ const expandedContent = await (0, import_utils.expandBlobReferences)(
545
+ message.content,
546
+ this.resourceManager,
547
+ this.logger,
548
+ allowedMediaTypes
549
+ );
550
+ return { ...message, content: expandedContent };
551
+ }
552
+ if ((0, import_types2.isToolMessage)(message)) {
553
+ const expandedContent = await (0, import_utils.expandBlobReferences)(
554
+ message.content,
555
+ this.resourceManager,
556
+ this.logger,
557
+ allowedMediaTypes
558
+ );
559
+ return { ...message, content: expandedContent };
560
+ }
561
+ return message;
515
562
  })
516
563
  );
517
564
  const prompt = systemPrompt ?? await this.getSystemPrompt(contributorContext);
@@ -520,7 +567,7 @@ ${prompt}`);
520
567
  /**
521
568
  * Gets the conversation ready for LLM consumption with proper flow:
522
569
  * 1. Get system prompt
523
- * 2. Get history and compress if needed
570
+ * 2. Get history and filter (exclude pre-summary messages)
524
571
  * 3. Format messages
525
572
  * This method implements the correct ordering to avoid circular dependencies.
526
573
  *
@@ -530,25 +577,39 @@ ${prompt}`);
530
577
  */
531
578
  async getFormattedMessagesWithCompression(contributorContext, llmContext) {
532
579
  const systemPrompt = await this.getSystemPrompt(contributorContext);
533
- const systemPromptTokens = this.tokenizer.countTokens(systemPrompt);
534
- let history = await this.historyProvider.getHistory();
535
- history = await this.compressHistoryIfNeeded(history, systemPromptTokens);
580
+ const fullHistory = await this.historyProvider.getHistory();
581
+ let history = (0, import_utils.filterCompacted)(fullHistory);
582
+ if (history.length < fullHistory.length) {
583
+ this.logger.debug(
584
+ `filterCompacted: Reduced history from ${fullHistory.length} to ${history.length} messages (summary present)`
585
+ );
586
+ }
587
+ const compactedCount = history.filter((m) => m.role === "tool" && m.compactedAt).length;
588
+ if (compactedCount > 0) {
589
+ history = history.map((msg) => {
590
+ if (msg.role === "tool" && msg.compactedAt) {
591
+ return {
592
+ ...msg,
593
+ content: [
594
+ { type: "text", text: "[Old tool result content cleared]" }
595
+ ]
596
+ };
597
+ }
598
+ return msg;
599
+ });
600
+ this.logger.debug(
601
+ `Transformed ${compactedCount} compacted tool messages to placeholders`
602
+ );
603
+ }
536
604
  const formattedMessages = await this.getFormattedMessages(
537
605
  contributorContext,
538
606
  llmContext,
539
607
  systemPrompt,
540
608
  history
541
609
  );
542
- const historyTokens = (0, import_utils.countMessagesTokens)(history, this.tokenizer, void 0, this.logger);
543
- const formattingOverhead = Math.ceil((systemPromptTokens + historyTokens) * 0.05);
544
- const tokensUsed = systemPromptTokens + historyTokens + formattingOverhead;
545
- this.logger.debug(
546
- `Final token breakdown - System: ${systemPromptTokens}, History: ${historyTokens}, Overhead: ${formattingOverhead}, Total: ${tokensUsed}`
547
- );
548
610
  return {
549
611
  formattedMessages,
550
- systemPrompt,
551
- tokensUsed
612
+ systemPrompt
552
613
  };
553
614
  }
554
615
  /**
@@ -558,9 +619,8 @@ ${prompt}`);
558
619
  * @returns Formatted system prompt or null/undefined based on formatter implementation
559
620
  * @throws Error if formatting fails
560
621
  */
561
- async getFormattedSystemPrompt(context) {
562
- const systemPrompt = await this.getSystemPrompt(context);
563
- return this.formatter.formatSystemPrompt?.(systemPrompt);
622
+ async getFormattedSystemPrompt(_context) {
623
+ return this.formatter.formatSystemPrompt?.();
564
624
  }
565
625
  /**
566
626
  * Resets the conversation history
@@ -572,109 +632,6 @@ ${prompt}`);
572
632
  `ContextManager: Conversation history cleared for session ${this.sessionId}`
573
633
  );
574
634
  }
575
- /**
576
- * Checks if history compression is needed based on token count and applies strategies.
577
- *
578
- * @param history The conversation history to potentially compress
579
- * @param systemPromptTokens The actual token count of the system prompt
580
- * @returns The potentially compressed history
581
- */
582
- async compressHistoryIfNeeded(history, systemPromptTokens) {
583
- let currentTotalTokens = (0, import_utils.countMessagesTokens)(
584
- history,
585
- this.tokenizer,
586
- void 0,
587
- this.logger
588
- );
589
- currentTotalTokens += systemPromptTokens;
590
- this.logger.debug(`ContextManager: Checking if history compression is needed.`);
591
- this.logger.debug(
592
- `History tokens: ${(0, import_utils.countMessagesTokens)(history, this.tokenizer, void 0, this.logger)}, System prompt tokens: ${systemPromptTokens}, Total: ${currentTotalTokens}`
593
- );
594
- if (currentTotalTokens <= this.maxInputTokens) {
595
- this.logger.debug(
596
- `ContextManager: History compression not needed. Total token count: ${currentTotalTokens}, Max tokens: ${this.maxInputTokens}`
597
- );
598
- return history;
599
- }
600
- this.logger.info(
601
- `ContextManager: History exceeds token limit (${currentTotalTokens} > ${this.maxInputTokens}). Applying compression strategies sequentially.`
602
- );
603
- const initialLength = history.length;
604
- let workingHistory = [...history];
605
- const targetHistoryTokens = this.maxInputTokens - systemPromptTokens;
606
- for (const strategy of this.compressionStrategies) {
607
- const strategyName = strategy.constructor.name;
608
- this.logger.debug(`ContextManager: Applying ${strategyName}...`);
609
- try {
610
- workingHistory = strategy.compress(
611
- [...workingHistory],
612
- this.tokenizer,
613
- targetHistoryTokens
614
- // Use target tokens that account for system prompt
615
- );
616
- } catch (error) {
617
- this.logger.error(
618
- `ContextManager: Error applying ${strategyName}: ${error instanceof Error ? error.message : String(error)}`,
619
- { error }
620
- );
621
- break;
622
- }
623
- const historyTokens = (0, import_utils.countMessagesTokens)(
624
- workingHistory,
625
- this.tokenizer,
626
- void 0,
627
- this.logger
628
- );
629
- currentTotalTokens = historyTokens + systemPromptTokens;
630
- const messagesRemoved = initialLength - workingHistory.length;
631
- if (currentTotalTokens <= this.maxInputTokens) {
632
- this.logger.debug(
633
- `ContextManager: Compression successful after ${strategyName}. New total count: ${currentTotalTokens}, messages removed: ${messagesRemoved}`
634
- );
635
- break;
636
- }
637
- }
638
- return workingHistory;
639
- }
640
- /**
641
- * Parses a raw LLM stream response, converts it into internal messages and adds them to the history.
642
- *
643
- * @param response The stream response from the LLM provider
644
- */
645
- async processLLMStreamResponse(response) {
646
- if (this.formatter.parseStreamResponse) {
647
- const msgs = await this.formatter.parseStreamResponse(response) ?? [];
648
- for (const msg of msgs) {
649
- try {
650
- await this.addMessage(msg);
651
- } catch (error) {
652
- this.logger.error(
653
- `ContextManager: Failed to process LLM stream response message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
654
- );
655
- }
656
- }
657
- } else {
658
- await this.processLLMResponse(response);
659
- }
660
- }
661
- /**
662
- * Parses a raw LLM response, converts it into internal messages and adds them to the history.
663
- *
664
- * @param response The response from the LLM provider
665
- */
666
- async processLLMResponse(response) {
667
- const msgs = this.formatter.parseResponse(response) ?? [];
668
- for (const msg of msgs) {
669
- try {
670
- await this.addMessage(msg);
671
- } catch (error) {
672
- this.logger.error(
673
- `ContextManager: Failed to process LLM response message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
674
- );
675
- }
676
- }
677
- }
678
635
  }
679
636
  // Annotate the CommonJS export names for ESM import in node:
680
637
  0 && (module.exports = {