@dexto/core 1.3.0 → 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 (479) hide show
  1. package/README.md +17 -9
  2. package/dist/agent/DextoAgent.cjs +548 -207
  3. package/dist/agent/DextoAgent.d.ts +156 -33
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +545 -204
  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 +3 -0
  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 +6 -2
  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 -10
  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 +18 -4
  36. package/dist/approval/schemas.d.ts +106 -32
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +19 -5
  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/default.cjs → context/compression/overflow.cjs} +20 -18
  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 +280 -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 +280 -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 +181 -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.js +1 -1
  81. package/dist/events/index.cjs +18 -1
  82. package/dist/events/index.d.ts +149 -12
  83. package/dist/events/index.d.ts.map +1 -1
  84. package/dist/events/index.js +19 -2
  85. package/dist/filesystem/error-codes.js +1 -1
  86. package/dist/filesystem/errors.js +1 -1
  87. package/dist/filesystem/filesystem-service.js +1 -1
  88. package/dist/filesystem/index.js +1 -1
  89. package/dist/filesystem/path-validator.js +1 -1
  90. package/dist/index.browser.cjs +23 -8
  91. package/dist/index.browser.d.ts +4 -3
  92. package/dist/index.browser.d.ts.map +1 -1
  93. package/dist/index.browser.js +20 -3
  94. package/dist/index.js +1 -1
  95. package/dist/llm/error-codes.cjs +0 -1
  96. package/dist/llm/error-codes.d.ts +0 -1
  97. package/dist/llm/error-codes.d.ts.map +1 -1
  98. package/dist/llm/error-codes.js +1 -2
  99. package/dist/llm/errors.cjs +10 -10
  100. package/dist/llm/errors.d.ts +5 -6
  101. package/dist/llm/errors.d.ts.map +1 -1
  102. package/dist/llm/errors.js +12 -12
  103. package/dist/llm/executor/stream-processor.cjs +367 -0
  104. package/dist/llm/executor/stream-processor.d.ts +55 -0
  105. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  106. package/dist/llm/executor/stream-processor.js +344 -0
  107. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  108. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  109. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  110. package/dist/llm/executor/tool-output-truncator.js +48 -0
  111. package/dist/llm/executor/turn-executor.cjs +753 -0
  112. package/dist/llm/executor/turn-executor.d.ts +166 -0
  113. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  114. package/dist/llm/executor/turn-executor.js +684 -0
  115. package/dist/llm/executor/types.d.ts +27 -0
  116. package/dist/llm/executor/types.d.ts.map +1 -0
  117. package/dist/llm/formatters/vercel.cjs +20 -186
  118. package/dist/llm/formatters/vercel.d.ts +2 -14
  119. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  120. package/dist/llm/formatters/vercel.js +19 -185
  121. package/dist/llm/registry.cjs +36 -45
  122. package/dist/llm/registry.d.ts +53 -39
  123. package/dist/llm/registry.d.ts.map +1 -1
  124. package/dist/llm/registry.js +34 -42
  125. package/dist/llm/resolver.cjs +1 -31
  126. package/dist/llm/resolver.d.ts.map +1 -1
  127. package/dist/llm/resolver.js +2 -34
  128. package/dist/llm/schemas.cjs +2 -17
  129. package/dist/llm/schemas.d.ts +10 -23
  130. package/dist/llm/schemas.d.ts.map +1 -1
  131. package/dist/llm/schemas.js +5 -22
  132. package/dist/llm/services/factory.cjs +3 -92
  133. package/dist/llm/services/factory.d.ts +14 -4
  134. package/dist/llm/services/factory.d.ts.map +1 -1
  135. package/dist/llm/services/factory.js +4 -83
  136. package/dist/llm/services/test-utils.integration.cjs +6 -8
  137. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  138. package/dist/llm/services/test-utils.integration.js +7 -9
  139. package/dist/llm/services/types.d.ts +1 -28
  140. package/dist/llm/services/types.d.ts.map +1 -1
  141. package/dist/llm/services/vercel.cjs +54 -468
  142. package/dist/llm/services/vercel.d.ts +38 -21
  143. package/dist/llm/services/vercel.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.js +56 -475
  145. package/dist/llm/types.cjs +0 -3
  146. package/dist/llm/types.d.ts +8 -8
  147. package/dist/llm/types.d.ts.map +1 -1
  148. package/dist/llm/types.js +1 -3
  149. package/dist/llm/validation.js +1 -1
  150. package/dist/logger/browser.js +1 -1
  151. package/dist/logger/factory.js +1 -1
  152. package/dist/logger/index.js +1 -1
  153. package/dist/logger/logger.js +1 -1
  154. package/dist/logger/v2/dexto-logger.cjs +34 -6
  155. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  156. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  157. package/dist/logger/v2/dexto-logger.js +35 -7
  158. package/dist/logger/v2/error-codes.js +1 -1
  159. package/dist/logger/v2/errors.js +1 -1
  160. package/dist/logger/v2/schemas.js +1 -1
  161. package/dist/logger/v2/test-utils.cjs +70 -0
  162. package/dist/logger/v2/test-utils.d.ts +17 -0
  163. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  164. package/dist/logger/v2/test-utils.js +46 -0
  165. package/dist/logger/v2/transport-factory.js +1 -1
  166. package/dist/logger/v2/transports/console-transport.js +1 -1
  167. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  168. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  169. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  170. package/dist/logger/v2/transports/file-transport.js +7 -1
  171. package/dist/logger/v2/types.cjs +1 -0
  172. package/dist/logger/v2/types.d.ts +18 -2
  173. package/dist/logger/v2/types.d.ts.map +1 -1
  174. package/dist/logger/v2/types.js +2 -1
  175. package/dist/mcp/error-codes.cjs +1 -0
  176. package/dist/mcp/error-codes.d.ts +1 -0
  177. package/dist/mcp/error-codes.d.ts.map +1 -1
  178. package/dist/mcp/error-codes.js +2 -1
  179. package/dist/mcp/errors.cjs +13 -0
  180. package/dist/mcp/errors.d.ts +7 -0
  181. package/dist/mcp/errors.d.ts.map +1 -1
  182. package/dist/mcp/errors.js +14 -1
  183. package/dist/mcp/manager.cjs +4 -0
  184. package/dist/mcp/manager.d.ts.map +1 -1
  185. package/dist/mcp/manager.js +5 -1
  186. package/dist/mcp/mcp-client.js +1 -1
  187. package/dist/mcp/resolver.js +1 -1
  188. package/dist/mcp/schemas.cjs +6 -0
  189. package/dist/mcp/schemas.d.ts +52 -0
  190. package/dist/mcp/schemas.d.ts.map +1 -1
  191. package/dist/mcp/schemas.js +6 -1
  192. package/dist/memory/error-codes.js +1 -1
  193. package/dist/memory/errors.js +1 -1
  194. package/dist/memory/index.js +1 -1
  195. package/dist/memory/manager.js +1 -1
  196. package/dist/memory/schemas.d.ts +2 -2
  197. package/dist/memory/schemas.js +1 -1
  198. package/dist/plugins/builtins/content-policy.js +1 -1
  199. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  200. package/dist/plugins/error-codes.js +1 -1
  201. package/dist/plugins/index.js +1 -1
  202. package/dist/plugins/loader.js +1 -1
  203. package/dist/plugins/manager.js +1 -1
  204. package/dist/plugins/registrations/builtins.js +1 -1
  205. package/dist/plugins/schemas.d.ts +3 -3
  206. package/dist/plugins/schemas.js +1 -1
  207. package/dist/plugins/types.d.ts +0 -1
  208. package/dist/plugins/types.d.ts.map +1 -1
  209. package/dist/process/command-validator.js +1 -1
  210. package/dist/process/error-codes.js +1 -1
  211. package/dist/process/errors.js +1 -1
  212. package/dist/process/index.js +1 -1
  213. package/dist/process/process-service.cjs +78 -26
  214. package/dist/process/process-service.d.ts +6 -1
  215. package/dist/process/process-service.d.ts.map +1 -1
  216. package/dist/process/process-service.js +79 -27
  217. package/dist/process/types.d.ts +2 -2
  218. package/dist/process/types.d.ts.map +1 -1
  219. package/dist/prompts/error-codes.cjs +1 -0
  220. package/dist/prompts/error-codes.d.ts +2 -1
  221. package/dist/prompts/error-codes.d.ts.map +1 -1
  222. package/dist/prompts/error-codes.js +2 -1
  223. package/dist/prompts/errors.cjs +15 -0
  224. package/dist/prompts/errors.d.ts +4 -0
  225. package/dist/prompts/errors.d.ts.map +1 -1
  226. package/dist/prompts/errors.js +16 -1
  227. package/dist/prompts/index.js +1 -1
  228. package/dist/prompts/name-validation.js +1 -1
  229. package/dist/prompts/prompt-manager.cjs +13 -2
  230. package/dist/prompts/prompt-manager.d.ts +7 -0
  231. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  232. package/dist/prompts/prompt-manager.js +14 -3
  233. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  234. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  235. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  236. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  237. package/dist/prompts/providers/custom-prompt-provider.js +1 -1
  238. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  239. package/dist/prompts/schemas.d.ts +12 -0
  240. package/dist/prompts/schemas.d.ts.map +1 -1
  241. package/dist/prompts/schemas.js +1 -1
  242. package/dist/prompts/types.d.ts +2 -0
  243. package/dist/prompts/types.d.ts.map +1 -1
  244. package/dist/prompts/utils.js +1 -1
  245. package/dist/resources/error-codes.js +1 -1
  246. package/dist/resources/errors.js +1 -1
  247. package/dist/resources/handlers/blob-handler.js +1 -1
  248. package/dist/resources/handlers/factory.js +1 -1
  249. package/dist/resources/handlers/filesystem-handler.js +1 -1
  250. package/dist/resources/index.js +1 -1
  251. package/dist/resources/internal-provider.js +1 -1
  252. package/dist/resources/manager.js +1 -1
  253. package/dist/resources/reference-parser.js +1 -1
  254. package/dist/resources/schemas.js +1 -1
  255. package/dist/search/index.js +1 -1
  256. package/dist/search/search-service.js +1 -1
  257. package/dist/session/chat-session.cjs +149 -51
  258. package/dist/session/chat-session.d.ts +69 -29
  259. package/dist/session/chat-session.d.ts.map +1 -1
  260. package/dist/session/chat-session.js +150 -52
  261. package/dist/session/error-codes.js +1 -1
  262. package/dist/session/errors.js +1 -1
  263. package/dist/session/history/database.cjs +134 -21
  264. package/dist/session/history/database.d.ts +37 -8
  265. package/dist/session/history/database.d.ts.map +1 -1
  266. package/dist/session/history/database.js +135 -22
  267. package/dist/session/history/factory.js +1 -1
  268. package/dist/session/history/memory.cjs +18 -0
  269. package/dist/session/history/memory.d.ts +8 -0
  270. package/dist/session/history/memory.d.ts.map +1 -1
  271. package/dist/session/history/memory.js +19 -1
  272. package/dist/session/history/types.d.ts +13 -1
  273. package/dist/session/history/types.d.ts.map +1 -1
  274. package/dist/session/index.cjs +3 -0
  275. package/dist/session/index.d.ts +3 -0
  276. package/dist/session/index.d.ts.map +1 -1
  277. package/dist/session/index.js +3 -1
  278. package/dist/session/message-queue.cjs +201 -0
  279. package/dist/session/message-queue.d.ts +114 -0
  280. package/dist/session/message-queue.d.ts.map +1 -0
  281. package/dist/session/message-queue.js +178 -0
  282. package/dist/session/schemas.js +1 -1
  283. package/dist/session/session-manager.cjs +57 -7
  284. package/dist/session/session-manager.d.ts +18 -0
  285. package/dist/session/session-manager.d.ts.map +1 -1
  286. package/dist/session/session-manager.js +58 -8
  287. package/dist/session/title-generator.cjs +4 -8
  288. package/dist/session/title-generator.d.ts +1 -2
  289. package/dist/session/title-generator.d.ts.map +1 -1
  290. package/dist/session/title-generator.js +5 -9
  291. package/dist/session/types.cjs +16 -0
  292. package/dist/session/types.d.ts +14 -0
  293. package/dist/session/types.d.ts.map +1 -0
  294. package/dist/session/types.js +0 -0
  295. package/dist/storage/blob/factory.js +1 -1
  296. package/dist/storage/blob/local-blob-store.js +1 -1
  297. package/dist/storage/blob/memory-blob-store.js +1 -1
  298. package/dist/storage/blob/schemas.js +1 -1
  299. package/dist/storage/cache/factory.js +1 -1
  300. package/dist/storage/cache/memory-cache-store.js +1 -1
  301. package/dist/storage/cache/redis-store.js +1 -1
  302. package/dist/storage/cache/schemas.js +1 -1
  303. package/dist/storage/database/factory.js +1 -1
  304. package/dist/storage/database/memory-database-store.js +1 -1
  305. package/dist/storage/database/postgres-store.cjs +12 -0
  306. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  307. package/dist/storage/database/postgres-store.js +13 -1
  308. package/dist/storage/database/schemas.js +1 -1
  309. package/dist/storage/database/sqlite-store.js +1 -1
  310. package/dist/storage/error-codes.js +1 -1
  311. package/dist/storage/errors.js +1 -1
  312. package/dist/storage/index.js +1 -1
  313. package/dist/storage/schemas.js +1 -1
  314. package/dist/storage/storage-manager.js +1 -1
  315. package/dist/systemPrompt/contributors.js +1 -1
  316. package/dist/systemPrompt/error-codes.js +1 -1
  317. package/dist/systemPrompt/errors.js +1 -1
  318. package/dist/systemPrompt/in-built-prompts.js +1 -1
  319. package/dist/systemPrompt/index.js +1 -1
  320. package/dist/systemPrompt/manager.js +1 -1
  321. package/dist/systemPrompt/registry.js +1 -1
  322. package/dist/systemPrompt/schemas.d.ts +5 -5
  323. package/dist/systemPrompt/schemas.js +1 -1
  324. package/dist/telemetry/decorators.js +1 -1
  325. package/dist/telemetry/error-codes.js +1 -1
  326. package/dist/telemetry/errors.js +1 -1
  327. package/dist/telemetry/exporters.js +1 -1
  328. package/dist/telemetry/index.js +1 -1
  329. package/dist/telemetry/schemas.js +1 -1
  330. package/dist/telemetry/telemetry.js +1 -1
  331. package/dist/telemetry/utils.js +1 -1
  332. package/dist/tools/bash-pattern-utils.cjs +91 -0
  333. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  334. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  335. package/dist/tools/bash-pattern-utils.js +64 -0
  336. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  337. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  338. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  339. package/dist/tools/display-types.cjs +60 -0
  340. package/dist/tools/display-types.d.ts +133 -0
  341. package/dist/tools/display-types.d.ts.map +1 -0
  342. package/dist/tools/display-types.js +32 -0
  343. package/dist/tools/error-codes.cjs +2 -0
  344. package/dist/tools/error-codes.d.ts +3 -1
  345. package/dist/tools/error-codes.d.ts.map +1 -1
  346. package/dist/tools/error-codes.js +3 -1
  347. package/dist/tools/errors.cjs +30 -0
  348. package/dist/tools/errors.d.ts +16 -0
  349. package/dist/tools/errors.d.ts.map +1 -1
  350. package/dist/tools/errors.js +31 -1
  351. package/dist/tools/index.cjs +2 -0
  352. package/dist/tools/index.d.ts +1 -0
  353. package/dist/tools/index.d.ts.map +1 -1
  354. package/dist/tools/index.js +2 -1
  355. package/dist/tools/internal-tools/constants.js +1 -1
  356. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  357. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  358. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  359. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  360. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  361. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  362. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  363. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  364. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  365. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  366. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  367. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  368. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  369. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  370. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  371. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  372. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  373. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  374. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  375. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  376. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  377. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  378. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  379. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  380. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  381. package/dist/tools/internal-tools/provider.cjs +27 -10
  382. package/dist/tools/internal-tools/provider.d.ts +8 -5
  383. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  384. package/dist/tools/internal-tools/provider.js +28 -11
  385. package/dist/tools/internal-tools/registry.cjs +4 -3
  386. package/dist/tools/internal-tools/registry.d.ts +28 -7
  387. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  388. package/dist/tools/internal-tools/registry.js +5 -4
  389. package/dist/tools/schemas.cjs +16 -6
  390. package/dist/tools/schemas.d.ts +31 -4
  391. package/dist/tools/schemas.d.ts.map +1 -1
  392. package/dist/tools/schemas.js +14 -6
  393. package/dist/tools/tool-manager.cjs +140 -18
  394. package/dist/tools/tool-manager.d.ts +23 -1
  395. package/dist/tools/tool-manager.d.ts.map +1 -1
  396. package/dist/tools/tool-manager.js +145 -19
  397. package/dist/tools/types.d.ts +20 -0
  398. package/dist/tools/types.d.ts.map +1 -1
  399. package/dist/utils/api-key-resolver.js +1 -1
  400. package/dist/utils/async-context.js +1 -1
  401. package/dist/utils/debug.js +1 -1
  402. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  403. package/dist/utils/defer.d.ts +63 -0
  404. package/dist/utils/defer.d.ts.map +1 -0
  405. package/dist/utils/defer.js +19 -0
  406. package/dist/utils/env-file.js +1 -1
  407. package/dist/utils/error-conversion.js +1 -1
  408. package/dist/utils/execution-context.js +1 -1
  409. package/dist/utils/fs-walk.js +1 -1
  410. package/dist/utils/index.cjs +3 -1
  411. package/dist/utils/index.d.ts +1 -0
  412. package/dist/utils/index.d.ts.map +1 -1
  413. package/dist/utils/index.js +1 -0
  414. package/dist/utils/path.js +1 -1
  415. package/dist/utils/redactor.js +1 -1
  416. package/dist/utils/result.js +1 -1
  417. package/dist/utils/safe-stringify.js +1 -1
  418. package/dist/utils/schema-metadata.js +1 -1
  419. package/dist/utils/schema.js +1 -1
  420. package/dist/utils/service-initializer.cjs +6 -2
  421. package/dist/utils/service-initializer.d.ts.map +1 -1
  422. package/dist/utils/service-initializer.js +7 -3
  423. package/dist/utils/user-info.js +1 -1
  424. package/dist/utils/zod-schema-converter.js +1 -1
  425. package/package.json +6 -7
  426. package/dist/context/compression/middle-removal.cjs +0 -95
  427. package/dist/context/compression/middle-removal.d.ts +0 -47
  428. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  429. package/dist/context/compression/middle-removal.js +0 -72
  430. package/dist/context/compression/oldest-removal.cjs +0 -83
  431. package/dist/context/compression/oldest-removal.d.ts +0 -42
  432. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  433. package/dist/context/compression/oldest-removal.js +0 -60
  434. package/dist/llm/formatters/anthropic.cjs +0 -257
  435. package/dist/llm/formatters/anthropic.d.ts +0 -46
  436. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  437. package/dist/llm/formatters/anthropic.js +0 -239
  438. package/dist/llm/formatters/factory.cjs +0 -50
  439. package/dist/llm/formatters/factory.d.ts +0 -10
  440. package/dist/llm/formatters/factory.d.ts.map +0 -1
  441. package/dist/llm/formatters/factory.js +0 -27
  442. package/dist/llm/formatters/openai.cjs +0 -203
  443. package/dist/llm/formatters/openai.d.ts +0 -39
  444. package/dist/llm/formatters/openai.d.ts.map +0 -1
  445. package/dist/llm/formatters/openai.js +0 -184
  446. package/dist/llm/formatters/types.d.ts +0 -41
  447. package/dist/llm/formatters/types.d.ts.map +0 -1
  448. package/dist/llm/services/anthropic.cjs +0 -511
  449. package/dist/llm/services/anthropic.d.ts +0 -48
  450. package/dist/llm/services/anthropic.d.ts.map +0 -1
  451. package/dist/llm/services/anthropic.js +0 -447
  452. package/dist/llm/services/openai.cjs +0 -611
  453. package/dist/llm/services/openai.d.ts +0 -48
  454. package/dist/llm/services/openai.d.ts.map +0 -1
  455. package/dist/llm/services/openai.js +0 -547
  456. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  457. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  458. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  459. package/dist/llm/tokenizer/anthropic.js +0 -20
  460. package/dist/llm/tokenizer/default.d.ts +0 -14
  461. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  462. package/dist/llm/tokenizer/default.js +0 -18
  463. package/dist/llm/tokenizer/factory.cjs +0 -44
  464. package/dist/llm/tokenizer/factory.d.ts +0 -12
  465. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  466. package/dist/llm/tokenizer/factory.js +0 -21
  467. package/dist/llm/tokenizer/google.cjs +0 -52
  468. package/dist/llm/tokenizer/google.d.ts +0 -29
  469. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  470. package/dist/llm/tokenizer/google.js +0 -29
  471. package/dist/llm/tokenizer/openai.cjs +0 -115
  472. package/dist/llm/tokenizer/openai.d.ts +0 -41
  473. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  474. package/dist/llm/tokenizer/openai.js +0 -91
  475. package/dist/llm/tokenizer/types.d.ts +0 -18
  476. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  477. package/dist/llm/tokenizer/types.js +0 -10
  478. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  479. /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
- };