@dexto/core 1.2.6 → 1.4.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 (515) hide show
  1. package/README.md +55 -13
  2. package/dist/agent/DextoAgent.cjs +627 -228
  3. package/dist/agent/DextoAgent.d.ts +157 -34
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +625 -227
  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.d.ts +1 -1
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/index.js +1 -1
  18. package/dist/agent/schemas.cjs +4 -1
  19. package/dist/agent/schemas.d.ts +92 -55
  20. package/dist/agent/schemas.d.ts.map +1 -1
  21. package/dist/agent/schemas.js +7 -3
  22. package/dist/agent/state-manager.cjs +5 -5
  23. package/dist/agent/state-manager.d.ts +4 -4
  24. package/dist/agent/state-manager.js +6 -6
  25. package/dist/agent/types.d.ts +24 -11
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/approval/error-codes.js +1 -1
  28. package/dist/approval/errors.js +1 -1
  29. package/dist/approval/factory.js +1 -1
  30. package/dist/approval/index.js +1 -1
  31. package/dist/approval/manager.cjs +69 -3
  32. package/dist/approval/manager.d.ts +41 -3
  33. package/dist/approval/manager.d.ts.map +1 -1
  34. package/dist/approval/manager.js +70 -4
  35. package/dist/approval/schemas.cjs +20 -5
  36. package/dist/approval/schemas.d.ts +127 -52
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +21 -6
  39. package/dist/approval/types.d.ts +6 -0
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +1 -1
  42. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  43. package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
  44. package/dist/context/compression/overflow.d.ts +33 -0
  45. package/dist/context/compression/overflow.d.ts.map +1 -0
  46. package/dist/context/compression/overflow.js +19 -0
  47. package/dist/context/compression/reactive-overflow.cjs +201 -0
  48. package/dist/context/compression/reactive-overflow.d.ts +81 -0
  49. package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
  50. package/dist/context/compression/reactive-overflow.js +178 -0
  51. package/dist/context/compression/types.d.ts +9 -7
  52. package/dist/context/compression/types.d.ts.map +1 -1
  53. package/dist/context/error-codes.cjs +3 -0
  54. package/dist/context/error-codes.d.ts +4 -1
  55. package/dist/context/error-codes.d.ts.map +1 -1
  56. package/dist/context/error-codes.js +4 -1
  57. package/dist/context/errors.cjs +28 -0
  58. package/dist/context/errors.d.ts +7 -0
  59. package/dist/context/errors.d.ts.map +1 -1
  60. package/dist/context/errors.js +29 -1
  61. package/dist/context/index.js +1 -1
  62. package/dist/context/manager.cjs +287 -323
  63. package/dist/context/manager.d.ts +65 -111
  64. package/dist/context/manager.d.ts.map +1 -1
  65. package/dist/context/manager.js +287 -328
  66. package/dist/context/media-helpers.js +1 -1
  67. package/dist/context/types.cjs +49 -0
  68. package/dist/context/types.d.ts +185 -72
  69. package/dist/context/types.d.ts.map +1 -1
  70. package/dist/context/types.js +35 -0
  71. package/dist/context/utils.cjs +266 -283
  72. package/dist/context/utils.d.ts +32 -18
  73. package/dist/context/utils.d.ts.map +1 -1
  74. package/dist/context/utils.js +266 -283
  75. package/dist/errors/DextoBaseError.js +1 -1
  76. package/dist/errors/DextoRuntimeError.js +1 -1
  77. package/dist/errors/DextoValidationError.js +1 -1
  78. package/dist/errors/index.js +1 -1
  79. package/dist/errors/result-bridge.js +1 -1
  80. package/dist/errors/types.cjs +1 -0
  81. package/dist/errors/types.d.ts +4 -2
  82. package/dist/errors/types.d.ts.map +1 -1
  83. package/dist/errors/types.js +2 -1
  84. package/dist/events/index.cjs +22 -2
  85. package/dist/events/index.d.ts +170 -62
  86. package/dist/events/index.d.ts.map +1 -1
  87. package/dist/events/index.js +23 -3
  88. package/dist/filesystem/error-codes.js +1 -1
  89. package/dist/filesystem/errors.js +1 -1
  90. package/dist/filesystem/filesystem-service.js +1 -1
  91. package/dist/filesystem/index.js +1 -1
  92. package/dist/filesystem/path-validator.js +1 -1
  93. package/dist/index.browser.cjs +23 -8
  94. package/dist/index.browser.d.ts +4 -3
  95. package/dist/index.browser.d.ts.map +1 -1
  96. package/dist/index.browser.js +20 -3
  97. package/dist/index.js +1 -1
  98. package/dist/llm/error-codes.cjs +0 -1
  99. package/dist/llm/error-codes.d.ts +0 -1
  100. package/dist/llm/error-codes.d.ts.map +1 -1
  101. package/dist/llm/error-codes.js +1 -2
  102. package/dist/llm/errors.cjs +10 -10
  103. package/dist/llm/errors.d.ts +5 -6
  104. package/dist/llm/errors.d.ts.map +1 -1
  105. package/dist/llm/errors.js +12 -12
  106. package/dist/llm/executor/stream-processor.cjs +367 -0
  107. package/dist/llm/executor/stream-processor.d.ts +55 -0
  108. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  109. package/dist/llm/executor/stream-processor.js +344 -0
  110. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  111. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  112. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  113. package/dist/llm/executor/tool-output-truncator.js +48 -0
  114. package/dist/llm/executor/turn-executor.cjs +753 -0
  115. package/dist/llm/executor/turn-executor.d.ts +166 -0
  116. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  117. package/dist/llm/executor/turn-executor.js +684 -0
  118. package/dist/llm/executor/types.d.ts +27 -0
  119. package/dist/llm/executor/types.d.ts.map +1 -0
  120. package/dist/llm/formatters/vercel.cjs +20 -186
  121. package/dist/llm/formatters/vercel.d.ts +2 -14
  122. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  123. package/dist/llm/formatters/vercel.js +19 -185
  124. package/dist/llm/registry.cjs +36 -45
  125. package/dist/llm/registry.d.ts +53 -39
  126. package/dist/llm/registry.d.ts.map +1 -1
  127. package/dist/llm/registry.js +34 -42
  128. package/dist/llm/resolver.cjs +1 -31
  129. package/dist/llm/resolver.d.ts.map +1 -1
  130. package/dist/llm/resolver.js +2 -34
  131. package/dist/llm/schemas.cjs +2 -17
  132. package/dist/llm/schemas.d.ts +10 -23
  133. package/dist/llm/schemas.d.ts.map +1 -1
  134. package/dist/llm/schemas.js +5 -22
  135. package/dist/llm/services/factory.cjs +3 -92
  136. package/dist/llm/services/factory.d.ts +14 -4
  137. package/dist/llm/services/factory.d.ts.map +1 -1
  138. package/dist/llm/services/factory.js +4 -83
  139. package/dist/llm/services/test-utils.integration.cjs +6 -8
  140. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  141. package/dist/llm/services/test-utils.integration.js +7 -9
  142. package/dist/llm/services/types.d.ts +1 -28
  143. package/dist/llm/services/types.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.cjs +54 -468
  145. package/dist/llm/services/vercel.d.ts +38 -21
  146. package/dist/llm/services/vercel.d.ts.map +1 -1
  147. package/dist/llm/services/vercel.js +56 -475
  148. package/dist/llm/types.cjs +0 -3
  149. package/dist/llm/types.d.ts +8 -8
  150. package/dist/llm/types.d.ts.map +1 -1
  151. package/dist/llm/types.js +1 -3
  152. package/dist/llm/validation.js +1 -1
  153. package/dist/logger/browser.js +1 -1
  154. package/dist/logger/factory.js +1 -1
  155. package/dist/logger/index.js +1 -1
  156. package/dist/logger/logger.js +1 -1
  157. package/dist/logger/v2/dexto-logger.cjs +34 -6
  158. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  159. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  160. package/dist/logger/v2/dexto-logger.js +35 -7
  161. package/dist/logger/v2/error-codes.js +1 -1
  162. package/dist/logger/v2/errors.js +1 -1
  163. package/dist/logger/v2/schemas.cjs +1 -1
  164. package/dist/logger/v2/schemas.js +2 -2
  165. package/dist/logger/v2/test-utils.cjs +70 -0
  166. package/dist/logger/v2/test-utils.d.ts +17 -0
  167. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  168. package/dist/logger/v2/test-utils.js +46 -0
  169. package/dist/logger/v2/transport-factory.js +1 -1
  170. package/dist/logger/v2/transports/console-transport.js +1 -1
  171. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  172. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  173. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  174. package/dist/logger/v2/transports/file-transport.js +7 -1
  175. package/dist/logger/v2/types.cjs +1 -0
  176. package/dist/logger/v2/types.d.ts +18 -2
  177. package/dist/logger/v2/types.d.ts.map +1 -1
  178. package/dist/logger/v2/types.js +2 -1
  179. package/dist/mcp/error-codes.cjs +1 -0
  180. package/dist/mcp/error-codes.d.ts +1 -0
  181. package/dist/mcp/error-codes.d.ts.map +1 -1
  182. package/dist/mcp/error-codes.js +2 -1
  183. package/dist/mcp/errors.cjs +13 -0
  184. package/dist/mcp/errors.d.ts +7 -0
  185. package/dist/mcp/errors.d.ts.map +1 -1
  186. package/dist/mcp/errors.js +14 -1
  187. package/dist/mcp/manager.cjs +4 -0
  188. package/dist/mcp/manager.d.ts.map +1 -1
  189. package/dist/mcp/manager.js +5 -1
  190. package/dist/mcp/mcp-client.js +1 -1
  191. package/dist/mcp/resolver.js +1 -1
  192. package/dist/mcp/schemas.cjs +6 -0
  193. package/dist/mcp/schemas.d.ts +52 -0
  194. package/dist/mcp/schemas.d.ts.map +1 -1
  195. package/dist/mcp/schemas.js +6 -1
  196. package/dist/memory/error-codes.js +1 -1
  197. package/dist/memory/errors.js +1 -1
  198. package/dist/memory/index.js +1 -1
  199. package/dist/memory/manager.js +1 -1
  200. package/dist/memory/schemas.d.ts +2 -2
  201. package/dist/memory/schemas.js +1 -1
  202. package/dist/plugins/builtins/content-policy.js +1 -1
  203. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  204. package/dist/plugins/error-codes.cjs +1 -0
  205. package/dist/plugins/error-codes.d.ts +3 -1
  206. package/dist/plugins/error-codes.d.ts.map +1 -1
  207. package/dist/plugins/error-codes.js +2 -1
  208. package/dist/plugins/index.js +1 -1
  209. package/dist/plugins/loader.cjs +25 -5
  210. package/dist/plugins/loader.d.ts.map +1 -1
  211. package/dist/plugins/loader.js +26 -6
  212. package/dist/plugins/manager.js +1 -1
  213. package/dist/plugins/registrations/builtins.js +1 -1
  214. package/dist/plugins/schemas.d.ts +3 -3
  215. package/dist/plugins/schemas.js +1 -1
  216. package/dist/plugins/types.d.ts +0 -1
  217. package/dist/plugins/types.d.ts.map +1 -1
  218. package/dist/process/command-validator.js +1 -1
  219. package/dist/process/error-codes.js +1 -1
  220. package/dist/process/errors.js +1 -1
  221. package/dist/process/index.js +1 -1
  222. package/dist/process/process-service.cjs +78 -26
  223. package/dist/process/process-service.d.ts +6 -1
  224. package/dist/process/process-service.d.ts.map +1 -1
  225. package/dist/process/process-service.js +79 -27
  226. package/dist/process/types.d.ts +2 -2
  227. package/dist/process/types.d.ts.map +1 -1
  228. package/dist/prompts/error-codes.cjs +1 -0
  229. package/dist/prompts/error-codes.d.ts +2 -1
  230. package/dist/prompts/error-codes.d.ts.map +1 -1
  231. package/dist/prompts/error-codes.js +2 -1
  232. package/dist/prompts/errors.cjs +15 -0
  233. package/dist/prompts/errors.d.ts +4 -0
  234. package/dist/prompts/errors.d.ts.map +1 -1
  235. package/dist/prompts/errors.js +16 -1
  236. package/dist/prompts/index.js +1 -1
  237. package/dist/prompts/name-validation.js +1 -1
  238. package/dist/prompts/prompt-manager.cjs +13 -2
  239. package/dist/prompts/prompt-manager.d.ts +7 -0
  240. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  241. package/dist/prompts/prompt-manager.js +14 -3
  242. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  243. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  244. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  245. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  246. package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
  247. package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
  248. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  249. package/dist/prompts/providers/custom-prompt-provider.js +3 -3
  250. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  251. package/dist/prompts/schemas.d.ts +12 -0
  252. package/dist/prompts/schemas.d.ts.map +1 -1
  253. package/dist/prompts/schemas.js +1 -1
  254. package/dist/prompts/types.d.ts +2 -0
  255. package/dist/prompts/types.d.ts.map +1 -1
  256. package/dist/prompts/utils.js +1 -1
  257. package/dist/resources/error-codes.js +1 -1
  258. package/dist/resources/errors.js +1 -1
  259. package/dist/resources/handlers/blob-handler.js +1 -1
  260. package/dist/resources/handlers/factory.js +1 -1
  261. package/dist/resources/handlers/filesystem-handler.js +1 -1
  262. package/dist/resources/index.js +1 -1
  263. package/dist/resources/internal-provider.js +1 -1
  264. package/dist/resources/manager.js +1 -1
  265. package/dist/resources/reference-parser.js +1 -1
  266. package/dist/resources/schemas.js +1 -1
  267. package/dist/search/index.js +1 -1
  268. package/dist/search/search-service.js +1 -1
  269. package/dist/session/chat-session.cjs +149 -51
  270. package/dist/session/chat-session.d.ts +69 -29
  271. package/dist/session/chat-session.d.ts.map +1 -1
  272. package/dist/session/chat-session.js +150 -52
  273. package/dist/session/error-codes.js +1 -1
  274. package/dist/session/errors.js +1 -1
  275. package/dist/session/history/database.cjs +134 -21
  276. package/dist/session/history/database.d.ts +37 -8
  277. package/dist/session/history/database.d.ts.map +1 -1
  278. package/dist/session/history/database.js +135 -22
  279. package/dist/session/history/factory.js +1 -1
  280. package/dist/session/history/memory.cjs +18 -0
  281. package/dist/session/history/memory.d.ts +8 -0
  282. package/dist/session/history/memory.d.ts.map +1 -1
  283. package/dist/session/history/memory.js +19 -1
  284. package/dist/session/history/types.d.ts +13 -1
  285. package/dist/session/history/types.d.ts.map +1 -1
  286. package/dist/session/index.cjs +3 -0
  287. package/dist/session/index.d.ts +3 -0
  288. package/dist/session/index.d.ts.map +1 -1
  289. package/dist/session/index.js +3 -1
  290. package/dist/session/message-queue.cjs +201 -0
  291. package/dist/session/message-queue.d.ts +114 -0
  292. package/dist/session/message-queue.d.ts.map +1 -0
  293. package/dist/session/message-queue.js +178 -0
  294. package/dist/session/schemas.js +1 -1
  295. package/dist/session/session-manager.cjs +57 -7
  296. package/dist/session/session-manager.d.ts +18 -0
  297. package/dist/session/session-manager.d.ts.map +1 -1
  298. package/dist/session/session-manager.js +58 -8
  299. package/dist/session/title-generator.cjs +4 -8
  300. package/dist/session/title-generator.d.ts +1 -2
  301. package/dist/session/title-generator.d.ts.map +1 -1
  302. package/dist/session/title-generator.js +5 -9
  303. package/dist/session/types.cjs +16 -0
  304. package/dist/session/types.d.ts +14 -0
  305. package/dist/session/types.d.ts.map +1 -0
  306. package/dist/session/types.js +0 -0
  307. package/dist/storage/blob/factory.js +1 -1
  308. package/dist/storage/blob/local-blob-store.js +1 -1
  309. package/dist/storage/blob/memory-blob-store.js +1 -1
  310. package/dist/storage/blob/schemas.js +1 -1
  311. package/dist/storage/cache/factory.cjs +6 -2
  312. package/dist/storage/cache/factory.d.ts +2 -1
  313. package/dist/storage/cache/factory.d.ts.map +1 -1
  314. package/dist/storage/cache/factory.js +7 -3
  315. package/dist/storage/cache/memory-cache-store.js +1 -1
  316. package/dist/storage/cache/redis-store.js +1 -1
  317. package/dist/storage/cache/schemas.js +1 -1
  318. package/dist/storage/database/factory.cjs +11 -17
  319. package/dist/storage/database/factory.d.ts +2 -1
  320. package/dist/storage/database/factory.d.ts.map +1 -1
  321. package/dist/storage/database/factory.js +12 -18
  322. package/dist/storage/database/memory-database-store.js +1 -1
  323. package/dist/storage/database/postgres-store.cjs +12 -0
  324. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  325. package/dist/storage/database/postgres-store.js +13 -1
  326. package/dist/storage/database/schemas.js +1 -1
  327. package/dist/storage/database/sqlite-store.cjs +8 -0
  328. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  329. package/dist/storage/database/sqlite-store.js +9 -1
  330. package/dist/storage/error-codes.cjs +1 -0
  331. package/dist/storage/error-codes.d.ts +1 -0
  332. package/dist/storage/error-codes.d.ts.map +1 -1
  333. package/dist/storage/error-codes.js +2 -1
  334. package/dist/storage/errors.cjs +17 -0
  335. package/dist/storage/errors.d.ts +9 -0
  336. package/dist/storage/errors.d.ts.map +1 -1
  337. package/dist/storage/errors.js +18 -1
  338. package/dist/storage/index.js +1 -1
  339. package/dist/storage/schemas.js +1 -1
  340. package/dist/storage/storage-manager.js +1 -1
  341. package/dist/systemPrompt/contributors.js +1 -1
  342. package/dist/systemPrompt/error-codes.js +1 -1
  343. package/dist/systemPrompt/errors.js +1 -1
  344. package/dist/systemPrompt/in-built-prompts.js +1 -1
  345. package/dist/systemPrompt/index.js +1 -1
  346. package/dist/systemPrompt/manager.js +1 -1
  347. package/dist/systemPrompt/registry.js +1 -1
  348. package/dist/systemPrompt/schemas.d.ts +5 -5
  349. package/dist/systemPrompt/schemas.js +1 -1
  350. package/dist/telemetry/decorators.js +1 -1
  351. package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
  352. package/dist/telemetry/error-codes.d.ts +13 -0
  353. package/dist/telemetry/error-codes.d.ts.map +1 -0
  354. package/dist/telemetry/error-codes.js +13 -0
  355. package/dist/telemetry/errors.cjs +105 -0
  356. package/dist/telemetry/errors.d.ts +28 -0
  357. package/dist/telemetry/errors.d.ts.map +1 -0
  358. package/dist/telemetry/errors.js +82 -0
  359. package/dist/telemetry/exporters.js +1 -1
  360. package/dist/telemetry/index.js +1 -1
  361. package/dist/telemetry/schemas.js +1 -1
  362. package/dist/telemetry/telemetry.cjs +92 -26
  363. package/dist/telemetry/telemetry.d.ts +1 -1
  364. package/dist/telemetry/telemetry.d.ts.map +1 -1
  365. package/dist/telemetry/telemetry.js +75 -19
  366. package/dist/telemetry/utils.js +1 -1
  367. package/dist/tools/bash-pattern-utils.cjs +91 -0
  368. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  369. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  370. package/dist/tools/bash-pattern-utils.js +64 -0
  371. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  372. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  373. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  374. package/dist/tools/display-types.cjs +60 -0
  375. package/dist/tools/display-types.d.ts +133 -0
  376. package/dist/tools/display-types.d.ts.map +1 -0
  377. package/dist/tools/display-types.js +32 -0
  378. package/dist/tools/error-codes.cjs +2 -0
  379. package/dist/tools/error-codes.d.ts +3 -1
  380. package/dist/tools/error-codes.d.ts.map +1 -1
  381. package/dist/tools/error-codes.js +3 -1
  382. package/dist/tools/errors.cjs +30 -0
  383. package/dist/tools/errors.d.ts +16 -0
  384. package/dist/tools/errors.d.ts.map +1 -1
  385. package/dist/tools/errors.js +31 -1
  386. package/dist/tools/index.cjs +2 -0
  387. package/dist/tools/index.d.ts +1 -0
  388. package/dist/tools/index.d.ts.map +1 -1
  389. package/dist/tools/index.js +2 -1
  390. package/dist/tools/internal-tools/constants.js +1 -1
  391. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  392. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  393. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  394. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  395. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  396. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  397. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  398. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  399. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  400. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  401. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  402. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  403. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  404. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  405. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  406. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  407. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  408. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  409. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  410. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  411. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  412. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  413. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  414. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  415. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  416. package/dist/tools/internal-tools/provider.cjs +27 -10
  417. package/dist/tools/internal-tools/provider.d.ts +8 -5
  418. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  419. package/dist/tools/internal-tools/provider.js +28 -11
  420. package/dist/tools/internal-tools/registry.cjs +4 -3
  421. package/dist/tools/internal-tools/registry.d.ts +28 -7
  422. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  423. package/dist/tools/internal-tools/registry.js +5 -4
  424. package/dist/tools/schemas.cjs +17 -7
  425. package/dist/tools/schemas.d.ts +31 -4
  426. package/dist/tools/schemas.d.ts.map +1 -1
  427. package/dist/tools/schemas.js +15 -7
  428. package/dist/tools/tool-manager.cjs +140 -18
  429. package/dist/tools/tool-manager.d.ts +23 -1
  430. package/dist/tools/tool-manager.d.ts.map +1 -1
  431. package/dist/tools/tool-manager.js +145 -19
  432. package/dist/tools/types.d.ts +20 -11
  433. package/dist/tools/types.d.ts.map +1 -1
  434. package/dist/utils/api-key-resolver.js +1 -1
  435. package/dist/utils/async-context.js +1 -1
  436. package/dist/utils/debug.js +1 -1
  437. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  438. package/dist/utils/defer.d.ts +63 -0
  439. package/dist/utils/defer.d.ts.map +1 -0
  440. package/dist/utils/defer.js +19 -0
  441. package/dist/utils/env-file.js +1 -1
  442. package/dist/utils/error-conversion.js +1 -1
  443. package/dist/utils/execution-context.js +1 -1
  444. package/dist/utils/fs-walk.js +1 -1
  445. package/dist/utils/index.cjs +3 -1
  446. package/dist/utils/index.d.ts +1 -0
  447. package/dist/utils/index.d.ts.map +1 -1
  448. package/dist/utils/index.js +1 -0
  449. package/dist/utils/path.js +1 -1
  450. package/dist/utils/redactor.js +1 -1
  451. package/dist/utils/result.js +1 -1
  452. package/dist/utils/safe-stringify.js +1 -1
  453. package/dist/utils/schema-metadata.js +1 -1
  454. package/dist/utils/schema.d.ts +6 -0
  455. package/dist/utils/schema.d.ts.map +1 -1
  456. package/dist/utils/schema.js +1 -1
  457. package/dist/utils/service-initializer.cjs +6 -2
  458. package/dist/utils/service-initializer.d.ts.map +1 -1
  459. package/dist/utils/service-initializer.js +7 -3
  460. package/dist/utils/user-info.js +1 -1
  461. package/dist/utils/zod-schema-converter.js +1 -1
  462. package/package.json +54 -17
  463. package/dist/context/compression/middle-removal.cjs +0 -95
  464. package/dist/context/compression/middle-removal.d.ts +0 -47
  465. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  466. package/dist/context/compression/middle-removal.js +0 -72
  467. package/dist/context/compression/oldest-removal.cjs +0 -83
  468. package/dist/context/compression/oldest-removal.d.ts +0 -42
  469. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  470. package/dist/context/compression/oldest-removal.js +0 -60
  471. package/dist/llm/formatters/anthropic.cjs +0 -257
  472. package/dist/llm/formatters/anthropic.d.ts +0 -46
  473. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  474. package/dist/llm/formatters/anthropic.js +0 -239
  475. package/dist/llm/formatters/factory.cjs +0 -50
  476. package/dist/llm/formatters/factory.d.ts +0 -10
  477. package/dist/llm/formatters/factory.d.ts.map +0 -1
  478. package/dist/llm/formatters/factory.js +0 -27
  479. package/dist/llm/formatters/openai.cjs +0 -196
  480. package/dist/llm/formatters/openai.d.ts +0 -39
  481. package/dist/llm/formatters/openai.d.ts.map +0 -1
  482. package/dist/llm/formatters/openai.js +0 -177
  483. package/dist/llm/formatters/types.d.ts +0 -41
  484. package/dist/llm/formatters/types.d.ts.map +0 -1
  485. package/dist/llm/services/anthropic.cjs +0 -511
  486. package/dist/llm/services/anthropic.d.ts +0 -48
  487. package/dist/llm/services/anthropic.d.ts.map +0 -1
  488. package/dist/llm/services/anthropic.js +0 -447
  489. package/dist/llm/services/openai.cjs +0 -611
  490. package/dist/llm/services/openai.d.ts +0 -48
  491. package/dist/llm/services/openai.d.ts.map +0 -1
  492. package/dist/llm/services/openai.js +0 -547
  493. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  494. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  495. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  496. package/dist/llm/tokenizer/anthropic.js +0 -20
  497. package/dist/llm/tokenizer/default.d.ts +0 -14
  498. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  499. package/dist/llm/tokenizer/default.js +0 -18
  500. package/dist/llm/tokenizer/factory.d.ts +0 -12
  501. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  502. package/dist/llm/tokenizer/factory.js +0 -21
  503. package/dist/llm/tokenizer/google.cjs +0 -52
  504. package/dist/llm/tokenizer/google.d.ts +0 -29
  505. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  506. package/dist/llm/tokenizer/google.js +0 -29
  507. package/dist/llm/tokenizer/openai.cjs +0 -115
  508. package/dist/llm/tokenizer/openai.d.ts +0 -33
  509. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  510. package/dist/llm/tokenizer/openai.js +0 -91
  511. package/dist/llm/tokenizer/types.d.ts +0 -18
  512. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  513. package/dist/llm/tokenizer/types.js +0 -10
  514. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  515. /package/dist/llm/{formatters → executor}/types.js +0 -0
@@ -1,547 +0,0 @@
1
- import {
2
- __decorateElement,
3
- __decoratorStart,
4
- __runInitializers
5
- } from "../../chunk-C6A6W6XS.js";
6
- var _OpenAIService_decorators, _init;
7
- import { DextoLogComponent } from "../../logger/v2/types.js";
8
- import { ContextManager } from "../../context/manager.js";
9
- import { getMaxInputTokensForModel, getEffectiveMaxInputTokens } from "../registry.js";
10
- import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
11
- import { LLMErrorCode } from "../error-codes.js";
12
- import { OpenAIMessageFormatter } from "../formatters/openai.js";
13
- import { createTokenizer } from "../tokenizer/factory.js";
14
- import { shouldIncludeRawToolResult } from "../../utils/debug.js";
15
- import { InstrumentClass } from "../../telemetry/decorators.js";
16
- import { trace, context, propagation } from "@opentelemetry/api";
17
- _OpenAIService_decorators = [InstrumentClass({
18
- prefix: "llm.openai",
19
- excludeMethods: ["getAllTools", "formatToolsForOpenAI", "getConfig", "getContextManager"]
20
- })];
21
- class OpenAIService {
22
- openai;
23
- config;
24
- toolManager;
25
- contextManager;
26
- sessionEventBus;
27
- sessionId;
28
- logger;
29
- constructor(toolManager, openai, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger) {
30
- this.logger = logger.createChild(DextoLogComponent.LLM);
31
- this.config = config;
32
- this.openai = openai;
33
- this.toolManager = toolManager;
34
- this.sessionEventBus = sessionEventBus;
35
- this.sessionId = sessionId;
36
- const formatter = new OpenAIMessageFormatter(this.logger);
37
- const tokenizer = createTokenizer(config.provider, config.model, this.logger);
38
- const maxInputTokens = getEffectiveMaxInputTokens(config, this.logger);
39
- this.contextManager = new ContextManager(
40
- config,
41
- formatter,
42
- systemPromptManager,
43
- maxInputTokens,
44
- tokenizer,
45
- historyProvider,
46
- sessionId,
47
- resourceManager,
48
- this.logger
49
- // compressionStrategies uses default
50
- );
51
- }
52
- getAllTools() {
53
- return this.toolManager.getAllTools();
54
- }
55
- async completeTask(textInput, options, imageData, fileData, stream) {
56
- const activeSpan = trace.getActiveSpan();
57
- const currentContext = context.active();
58
- const provider = this.config.provider;
59
- const model = this.config.model;
60
- if (activeSpan) {
61
- activeSpan.setAttribute("llm.provider", provider);
62
- activeSpan.setAttribute("llm.model", model);
63
- }
64
- const existingBaggage = propagation.getBaggage(currentContext);
65
- const baggageEntries = {};
66
- if (existingBaggage) {
67
- existingBaggage.getAllEntries().forEach(([key, entry]) => {
68
- baggageEntries[key] = entry;
69
- });
70
- }
71
- baggageEntries["llm.provider"] = { value: provider };
72
- baggageEntries["llm.model"] = { value: model };
73
- const updatedContext = propagation.setBaggage(
74
- currentContext,
75
- propagation.createBaggage(baggageEntries)
76
- );
77
- return await context.with(updatedContext, async () => {
78
- await this.contextManager.addUserMessage(textInput, imageData, fileData);
79
- const rawTools = await this.toolManager.getAllTools();
80
- const formattedTools = this.formatToolsForOpenAI(rawTools);
81
- this.logger.silly(`Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`);
82
- this.sessionEventBus.emit("llm:thinking");
83
- let iterationCount = 0;
84
- let totalTokens = 0;
85
- let inputTokens = 0;
86
- let outputTokens = 0;
87
- let reasoningTokens = 0;
88
- let fullResponse = "";
89
- const contextStr = stream ? "OpenAI streaming API call" : "OpenAI API call";
90
- try {
91
- while (iterationCount < this.config.maxIterations) {
92
- if (options?.signal?.aborted) {
93
- throw Object.assign(new Error("Aborted"), {
94
- name: "AbortError",
95
- aborted: true
96
- });
97
- }
98
- iterationCount++;
99
- const { message, usage } = stream ? await this.getAIStreamingResponseWithRetries(
100
- formattedTools,
101
- options?.signal
102
- ) : await this.getAIResponseWithRetries(formattedTools, options?.signal);
103
- if (usage) {
104
- totalTokens += usage.total_tokens ?? 0;
105
- inputTokens += usage.prompt_tokens ?? 0;
106
- outputTokens += usage.completion_tokens ?? 0;
107
- reasoningTokens += usage.completion_tokens_details?.reasoning_tokens ?? 0;
108
- }
109
- if (!message.tool_calls || message.tool_calls.length === 0) {
110
- const responseText = message.content || "";
111
- const finalContent = stream ? fullResponse + responseText : responseText;
112
- await this.contextManager.addAssistantMessage(finalContent, void 0, {
113
- tokenUsage: totalTokens > 0 ? {
114
- totalTokens,
115
- inputTokens,
116
- outputTokens,
117
- reasoningTokens
118
- } : void 0
119
- });
120
- if (totalTokens > 0) {
121
- this.contextManager.updateActualTokenCount(totalTokens);
122
- }
123
- this.sessionEventBus.emit("llm:response", {
124
- content: finalContent,
125
- provider: this.config.provider,
126
- model: this.config.model,
127
- router: "in-built",
128
- tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
129
- });
130
- const activeSpan3 = trace.getActiveSpan();
131
- if (activeSpan3 && totalTokens > 0) {
132
- const attributes = {
133
- "gen_ai.usage.total_tokens": totalTokens
134
- };
135
- if (inputTokens > 0) {
136
- attributes["gen_ai.usage.input_tokens"] = inputTokens;
137
- }
138
- if (outputTokens > 0) {
139
- attributes["gen_ai.usage.output_tokens"] = outputTokens;
140
- }
141
- if (reasoningTokens > 0) {
142
- attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
143
- }
144
- activeSpan3.setAttributes(attributes);
145
- }
146
- return finalContent;
147
- }
148
- const functionToolCalls = message.tool_calls.filter(
149
- (toolCall) => {
150
- this.logger.debug(`Tool call type received: ${toolCall.type}`);
151
- return toolCall.type === "function";
152
- }
153
- );
154
- if (message.tool_calls.length > functionToolCalls.length) {
155
- this.logger.warn(
156
- `Filtered out ${message.tool_calls.length - functionToolCalls.length} non-function tool calls`
157
- );
158
- }
159
- await this.contextManager.addAssistantMessage(
160
- message.content,
161
- functionToolCalls.length > 0 ? functionToolCalls : void 0,
162
- {}
163
- );
164
- if (stream && message.content) {
165
- fullResponse += message.content;
166
- }
167
- for (const toolCall of functionToolCalls) {
168
- if (options?.signal?.aborted) {
169
- throw Object.assign(new Error("Aborted"), {
170
- name: "AbortError",
171
- aborted: true
172
- });
173
- }
174
- this.logger.debug(`Tool call initiated - Type: ${toolCall.type}`);
175
- this.logger.debug(
176
- `Tool call details: ${JSON.stringify(toolCall, null, 2)}`
177
- );
178
- const toolName = toolCall.function.name;
179
- let args = {};
180
- try {
181
- args = JSON.parse(toolCall.function.arguments);
182
- } catch (e) {
183
- this.logger.error(`Error parsing arguments for ${toolName}:`, {
184
- error: e instanceof Error ? e.message : String(e)
185
- });
186
- const sanitized = await this.contextManager.addToolResult(
187
- toolCall.id,
188
- toolName,
189
- { error: `Failed to parse arguments: ${e}` },
190
- { success: false }
191
- );
192
- this.sessionEventBus.emit("llm:tool-result", {
193
- toolName,
194
- callId: toolCall.id,
195
- success: false,
196
- sanitized,
197
- ...shouldIncludeRawToolResult() ? { rawResult: { error: `Failed to parse arguments: ${e}` } } : {}
198
- });
199
- continue;
200
- }
201
- this.sessionEventBus.emit("llm:tool-call", {
202
- toolName,
203
- args,
204
- callId: toolCall.id
205
- });
206
- try {
207
- const result = await this.toolManager.executeTool(
208
- toolName,
209
- args,
210
- this.sessionId
211
- );
212
- const sanitized = await this.contextManager.addToolResult(
213
- toolCall.id,
214
- toolName,
215
- result,
216
- { success: true }
217
- );
218
- this.sessionEventBus.emit("llm:tool-result", {
219
- toolName,
220
- callId: toolCall.id,
221
- success: true,
222
- sanitized,
223
- ...shouldIncludeRawToolResult() ? { rawResult: result } : {}
224
- });
225
- } catch (error) {
226
- const errorMessage = error instanceof Error ? error.message : String(error);
227
- this.logger.error(
228
- `Tool execution error for ${toolName}: ${errorMessage}`
229
- );
230
- const sanitized = await this.contextManager.addToolResult(
231
- toolCall.id,
232
- toolName,
233
- { error: errorMessage },
234
- { success: false }
235
- );
236
- this.sessionEventBus.emit("llm:tool-result", {
237
- toolName,
238
- callId: toolCall.id,
239
- success: false,
240
- sanitized,
241
- ...shouldIncludeRawToolResult() ? { rawResult: { error: errorMessage } } : {}
242
- });
243
- }
244
- }
245
- }
246
- this.logger.warn(
247
- `Reached maximum iterations (${this.config.maxIterations}) for task.`
248
- );
249
- const finalResponse = fullResponse || "Task completed but reached maximum tool call iterations.";
250
- await this.contextManager.addAssistantMessage(finalResponse, void 0, {
251
- tokenUsage: totalTokens > 0 ? {
252
- totalTokens,
253
- inputTokens,
254
- outputTokens,
255
- reasoningTokens
256
- } : void 0
257
- });
258
- if (totalTokens > 0) {
259
- this.contextManager.updateActualTokenCount(totalTokens);
260
- }
261
- this.sessionEventBus.emit("llm:response", {
262
- content: finalResponse,
263
- provider: this.config.provider,
264
- model: this.config.model,
265
- router: "in-built",
266
- tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
267
- });
268
- const activeSpan2 = trace.getActiveSpan();
269
- if (activeSpan2 && totalTokens > 0) {
270
- const attributes = {
271
- "gen_ai.usage.total_tokens": totalTokens
272
- };
273
- if (inputTokens > 0) {
274
- attributes["gen_ai.usage.input_tokens"] = inputTokens;
275
- }
276
- if (outputTokens > 0) {
277
- attributes["gen_ai.usage.output_tokens"] = outputTokens;
278
- }
279
- if (reasoningTokens > 0) {
280
- attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
281
- }
282
- activeSpan2.setAttributes(attributes);
283
- }
284
- return finalResponse;
285
- } catch (error) {
286
- if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
287
- throw error;
288
- }
289
- const errorMessage = error instanceof Error ? error.message : String(error);
290
- this.logger.error(`Error in ${contextStr}: ${errorMessage}`, { error });
291
- if (!stream) {
292
- this.logger.warn(
293
- `If this error is due to token overflow, consider configuring 'maxInputTokens' in your LLMConfig.`
294
- );
295
- }
296
- this.sessionEventBus.emit("llm:error", {
297
- error: error instanceof Error ? error : new Error(errorMessage),
298
- context: contextStr,
299
- recoverable: false
300
- });
301
- const errorResponse = `Error processing ${stream ? "streaming " : ""}request: ${errorMessage}`;
302
- await this.contextManager.addAssistantMessage(errorResponse, void 0, {});
303
- return errorResponse;
304
- }
305
- });
306
- }
307
- /**
308
- * Get configuration information about the LLM service
309
- * @returns Configuration object with provider and model information
310
- */
311
- getConfig() {
312
- const configuredMaxInputTokens = this.contextManager.getMaxInputTokens();
313
- let modelMaxInputTokens;
314
- try {
315
- modelMaxInputTokens = getMaxInputTokensForModel(
316
- this.config.provider,
317
- this.config.model,
318
- this.logger
319
- );
320
- } catch (error) {
321
- if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
322
- modelMaxInputTokens = configuredMaxInputTokens;
323
- this.logger.debug(
324
- `Could not find model ${this.config.model} in LLM registry to get max tokens. Using configured max tokens: ${configuredMaxInputTokens}.`
325
- );
326
- } else {
327
- throw error;
328
- }
329
- }
330
- return {
331
- router: "in-built",
332
- provider: this.config.provider,
333
- model: this.config.model,
334
- configuredMaxInputTokens,
335
- modelMaxInputTokens
336
- };
337
- }
338
- // Helper methods
339
- async getAIResponseWithRetries(tools, signal) {
340
- let attempts = 0;
341
- const MAX_ATTEMPTS = 3;
342
- this.logger.debug(`Tools size in getAIResponseWithRetries: ${tools.length}`);
343
- while (attempts < MAX_ATTEMPTS) {
344
- attempts++;
345
- try {
346
- const {
347
- formattedMessages,
348
- systemPrompt: _systemPrompt,
349
- tokensUsed
350
- } = await this.contextManager.getFormattedMessagesWithCompression(
351
- { mcpManager: this.toolManager.getMcpManager() },
352
- { provider: this.config.provider, model: this.config.model }
353
- );
354
- this.logger.silly(
355
- `Message history (potentially compressed) in getAIResponseWithRetries: ${JSON.stringify(formattedMessages, null, 2)}`
356
- );
357
- this.logger.debug(`Estimated tokens being sent to OpenAI: ${tokensUsed}`);
358
- const response = await this.openai.chat.completions.create(
359
- {
360
- model: this.config.model,
361
- messages: formattedMessages,
362
- tools: attempts === 1 ? tools : [],
363
- // Only offer tools on first attempt
364
- tool_choice: attempts === 1 ? "auto" : "none"
365
- // Disable tool choice on retry
366
- },
367
- signal ? { signal } : void 0
368
- );
369
- this.logger.silly(
370
- `OPENAI CHAT COMPLETION RESPONSE: ${JSON.stringify(response, null, 2)}`
371
- );
372
- const message = response.choices[0]?.message;
373
- if (!message) {
374
- throw new Error("Received empty message from OpenAI API");
375
- }
376
- const usage = response.usage;
377
- return { message, ...usage && { usage } };
378
- } catch (error) {
379
- if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
380
- throw error;
381
- }
382
- const apiError = error;
383
- this.logger.error(
384
- `Error in OpenAI API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
385
- { status: apiError.status, headers: apiError.headers }
386
- );
387
- if (apiError.status === 400 && apiError.code === "context_length_exceeded") {
388
- this.logger.warn(
389
- `Context length exceeded. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
390
- );
391
- }
392
- if (attempts >= MAX_ATTEMPTS) {
393
- this.logger.error(
394
- `Failed to get response from OpenAI after ${MAX_ATTEMPTS} attempts.`
395
- );
396
- throw error;
397
- }
398
- await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
399
- }
400
- }
401
- throw new Error("Failed to get response after maximum retry attempts");
402
- }
403
- async getAIStreamingResponseWithRetries(tools, signal) {
404
- let attempts = 0;
405
- const MAX_ATTEMPTS = 3;
406
- while (attempts < MAX_ATTEMPTS) {
407
- attempts++;
408
- try {
409
- const {
410
- formattedMessages,
411
- systemPrompt: _systemPrompt,
412
- tokensUsed
413
- } = await this.contextManager.getFormattedMessagesWithCompression(
414
- { mcpManager: this.toolManager.getMcpManager() },
415
- { provider: this.config.provider, model: this.config.model }
416
- );
417
- this.logger.silly(
418
- `Streaming message history (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
419
- );
420
- this.logger.debug(`Estimated tokens being sent to OpenAI streaming: ${tokensUsed}`);
421
- const stream = await this.openai.chat.completions.create(
422
- {
423
- model: this.config.model,
424
- messages: formattedMessages,
425
- tools: attempts === 1 ? tools : [],
426
- // Only offer tools on first attempt
427
- tool_choice: attempts === 1 ? "auto" : "none",
428
- // Disable tool choice on retry
429
- stream: true,
430
- stream_options: {
431
- include_usage: true
432
- }
433
- },
434
- signal ? { signal } : void 0
435
- );
436
- let content = "";
437
- let toolCalls = [];
438
- let usage;
439
- for await (const chunk of stream) {
440
- if (signal?.aborted) {
441
- throw Object.assign(new Error("Aborted"), {
442
- name: "AbortError",
443
- aborted: true
444
- });
445
- }
446
- const delta = chunk.choices[0]?.delta;
447
- if (delta?.content) {
448
- content += delta.content;
449
- this.sessionEventBus.emit("llm:chunk", {
450
- chunkType: "text",
451
- content: delta.content,
452
- isComplete: false
453
- });
454
- }
455
- if (delta?.tool_calls) {
456
- for (const toolCall of delta.tool_calls) {
457
- const index = toolCall.index;
458
- if (typeof index !== "number") {
459
- continue;
460
- }
461
- if (!toolCalls[index]) {
462
- toolCalls[index] = {
463
- id: `pending-${index}`,
464
- type: "function",
465
- function: { name: "", arguments: "" }
466
- };
467
- }
468
- if (toolCall.id) {
469
- toolCalls[index].id = toolCall.id;
470
- }
471
- const existingToolCall = toolCalls[index];
472
- if (existingToolCall.type === "function" && toolCall.function) {
473
- if (toolCall.function.name) {
474
- existingToolCall.function.name = toolCall.function.name;
475
- }
476
- if (toolCall.function.arguments) {
477
- existingToolCall.function.arguments += toolCall.function.arguments;
478
- }
479
- }
480
- }
481
- }
482
- if (chunk.usage) {
483
- usage = chunk.usage;
484
- }
485
- }
486
- if (content) {
487
- this.sessionEventBus.emit("llm:chunk", {
488
- chunkType: "text",
489
- content: "",
490
- isComplete: true
491
- });
492
- }
493
- const message = {
494
- role: "assistant",
495
- content: content || null,
496
- refusal: null,
497
- ...toolCalls.length > 0 && { tool_calls: toolCalls }
498
- };
499
- this.logger.debug(`OpenAI streaming completed. Usage info: ${usage}`);
500
- return { message, ...usage && { usage } };
501
- } catch (error) {
502
- const apiError = error;
503
- this.logger.error(
504
- `Error in OpenAI streaming API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
505
- { status: apiError.status, headers: apiError.headers }
506
- );
507
- if (apiError.status === 400 && apiError.message?.includes("maximum context length")) {
508
- this.logger.warn(
509
- `Context length exceeded in streaming. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
510
- );
511
- }
512
- if (attempts >= MAX_ATTEMPTS) {
513
- this.logger.error(
514
- `Failed to get streaming response from OpenAI after ${MAX_ATTEMPTS} attempts.`
515
- );
516
- throw error;
517
- }
518
- await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
519
- }
520
- }
521
- throw new Error("Failed to get streaming response after maximum retry attempts");
522
- }
523
- formatToolsForOpenAI(tools) {
524
- return Object.entries(tools).map(([name, tool]) => {
525
- return {
526
- type: "function",
527
- function: {
528
- name,
529
- description: tool.description || "",
530
- parameters: tool.parameters
531
- }
532
- };
533
- });
534
- }
535
- /**
536
- * Get the context manager for external access
537
- */
538
- getContextManager() {
539
- return this.contextManager;
540
- }
541
- }
542
- _init = __decoratorStart(null);
543
- OpenAIService = __decorateElement(_init, 0, "OpenAIService", _OpenAIService_decorators, OpenAIService);
544
- __runInitializers(_init, 1, OpenAIService);
545
- export {
546
- OpenAIService
547
- };
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var anthropic_exports = {};
20
- __export(anthropic_exports, {
21
- AnthropicTokenizer: () => AnthropicTokenizer
22
- });
23
- module.exports = __toCommonJS(anthropic_exports);
24
- class AnthropicTokenizer {
25
- /**
26
- * TODO: Replace with a better implementation for anthropic
27
- * Approximates token count for Anthropic models.
28
- * Assumes roughly 4 characters per token.
29
- * @param text Text content to count tokens for
30
- * @returns Approximate number of tokens
31
- */
32
- countTokens(text) {
33
- if (!text) return 0;
34
- return Math.ceil(text.length / 4);
35
- }
36
- getProviderName() {
37
- return "anthropic";
38
- }
39
- }
40
- // Annotate the CommonJS export names for ESM import in node:
41
- 0 && (module.exports = {
42
- AnthropicTokenizer
43
- });
@@ -1,19 +0,0 @@
1
- import { ITokenizer } from './types.js';
2
- /**
3
- * Placeholder tokenizer for Anthropic models.
4
- * Uses a rough approximation based on character count.
5
- * TODO: IMPORTANT: This is not accurate and should be replaced
6
- * with a better implementation or official library when available.
7
- */
8
- export declare class AnthropicTokenizer implements ITokenizer {
9
- /**
10
- * TODO: Replace with a better implementation for anthropic
11
- * Approximates token count for Anthropic models.
12
- * Assumes roughly 4 characters per token.
13
- * @param text Text content to count tokens for
14
- * @returns Approximate number of tokens
15
- */
16
- countTokens(text: string): number;
17
- getProviderName(): string;
18
- }
19
- //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACjD;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMjC,eAAe,IAAI,MAAM;CAG5B"}
@@ -1,20 +0,0 @@
1
- import "../../chunk-C6A6W6XS.js";
2
- class AnthropicTokenizer {
3
- /**
4
- * TODO: Replace with a better implementation for anthropic
5
- * Approximates token count for Anthropic models.
6
- * Assumes roughly 4 characters per token.
7
- * @param text Text content to count tokens for
8
- * @returns Approximate number of tokens
9
- */
10
- countTokens(text) {
11
- if (!text) return 0;
12
- return Math.ceil(text.length / 4);
13
- }
14
- getProviderName() {
15
- return "anthropic";
16
- }
17
- }
18
- export {
19
- AnthropicTokenizer
20
- };
@@ -1,14 +0,0 @@
1
- import { ITokenizer } from './types.js';
2
- /**
3
- * Placeholder tokenizer for unknown models
4
- */
5
- export declare class DefaultTokenizer implements ITokenizer {
6
- /**
7
- * Assumes roughly 4 characters per token.
8
- * @param text Text content to count tokens for
9
- * @returns Approximate number of tokens
10
- */
11
- countTokens(text: string): number;
12
- getProviderName(): string;
13
- }
14
- //# sourceMappingURL=default.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/default.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IAC/C;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC,eAAe,IAAI,MAAM;CAG5B"}
@@ -1,18 +0,0 @@
1
- import "../../chunk-C6A6W6XS.js";
2
- class DefaultTokenizer {
3
- /**
4
- * Assumes roughly 4 characters per token.
5
- * @param text Text content to count tokens for
6
- * @returns Approximate number of tokens
7
- */
8
- countTokens(text) {
9
- if (!text) return 0;
10
- return Math.ceil(text.length / 4);
11
- }
12
- getProviderName() {
13
- return "default";
14
- }
15
- }
16
- export {
17
- DefaultTokenizer
18
- };
@@ -1,12 +0,0 @@
1
- import { ITokenizer } from './types.js';
2
- import type { LLMProvider } from '../types.js';
3
- import type { IDextoLogger } from '../../logger/v2/types.js';
4
- /**
5
- * Creates the appropriate tokenizer for the specified provider and model
6
- * @param provider The LLM provider name (case-insensitive)
7
- * @param model The specific model name (used by some tokenizers)
8
- * @param logger The logger instance for logging
9
- * @returns An appropriate tokenizer implementation, or DefaultTokenizer if no specific implementation exists
10
- */
11
- export declare function createTokenizer(provider: LLMProvider, model: string, logger: IDextoLogger): ITokenizer;
12
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACrB,UAAU,CAcZ"}