@dexto/core 1.2.4 → 1.2.6

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 (551) hide show
  1. package/README.md +60 -0
  2. package/dist/agent/DextoAgent.cjs +579 -345
  3. package/dist/agent/DextoAgent.d.ts +131 -83
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +573 -336
  6. package/dist/agent/agentCard.cjs +4 -2
  7. package/dist/agent/agentCard.d.ts +0 -1
  8. package/dist/agent/agentCard.d.ts.map +1 -1
  9. package/dist/agent/agentCard.js +4 -2
  10. package/dist/agent/index.cjs +3 -7
  11. package/dist/agent/index.d.ts +3 -3
  12. package/dist/agent/index.d.ts.map +1 -1
  13. package/dist/agent/index.js +7 -6
  14. package/dist/agent/schemas.cjs +179 -75
  15. package/dist/agent/schemas.d.ts +2678 -586
  16. package/dist/agent/schemas.d.ts.map +1 -1
  17. package/dist/agent/schemas.js +172 -65
  18. package/dist/agent/state-manager.cjs +28 -23
  19. package/dist/agent/state-manager.d.ts +4 -1
  20. package/dist/agent/state-manager.d.ts.map +1 -1
  21. package/dist/agent/state-manager.js +28 -23
  22. package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
  23. package/dist/agent/types.d.ts +54 -0
  24. package/dist/agent/types.d.ts.map +1 -0
  25. package/dist/agent/types.js +0 -0
  26. package/dist/approval/errors.cjs +89 -8
  27. package/dist/approval/errors.d.ts +5 -3
  28. package/dist/approval/errors.d.ts.map +1 -1
  29. package/dist/approval/errors.js +89 -8
  30. package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
  31. package/dist/approval/factory.d.ts.map +1 -0
  32. package/dist/approval/{providers/factory.js → factory.js} +1 -1
  33. package/dist/approval/index.cjs +4 -6
  34. package/dist/approval/index.d.ts +3 -5
  35. package/dist/approval/index.d.ts.map +1 -1
  36. package/dist/approval/index.js +4 -5
  37. package/dist/approval/manager.cjs +140 -37
  38. package/dist/approval/manager.d.ts +56 -17
  39. package/dist/approval/manager.d.ts.map +1 -1
  40. package/dist/approval/manager.js +141 -38
  41. package/dist/approval/schemas.cjs +9 -1
  42. package/dist/approval/schemas.d.ts +120 -35
  43. package/dist/approval/schemas.d.ts.map +1 -1
  44. package/dist/approval/schemas.js +9 -2
  45. package/dist/approval/types.cjs +14 -2
  46. package/dist/approval/types.d.ts +64 -12
  47. package/dist/approval/types.d.ts.map +1 -1
  48. package/dist/approval/types.js +12 -1
  49. package/dist/context/compression/middle-removal.cjs +11 -11
  50. package/dist/context/compression/middle-removal.d.ts +3 -1
  51. package/dist/context/compression/middle-removal.d.ts.map +1 -1
  52. package/dist/context/compression/middle-removal.js +11 -11
  53. package/dist/context/compression/oldest-removal.cjs +18 -5
  54. package/dist/context/compression/oldest-removal.d.ts +3 -1
  55. package/dist/context/compression/oldest-removal.d.ts.map +1 -1
  56. package/dist/context/compression/oldest-removal.js +18 -5
  57. package/dist/context/manager.cjs +94 -67
  58. package/dist/context/manager.d.ts +13 -10
  59. package/dist/context/manager.d.ts.map +1 -1
  60. package/dist/context/manager.js +94 -67
  61. package/dist/context/utils.cjs +79 -65
  62. package/dist/context/utils.d.ts +15 -12
  63. package/dist/context/utils.d.ts.map +1 -1
  64. package/dist/context/utils.js +45 -31
  65. package/dist/errors/DextoRuntimeError.d.ts +5 -5
  66. package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
  67. package/dist/errors/result-bridge.cjs +2 -3
  68. package/dist/errors/result-bridge.d.ts +5 -3
  69. package/dist/errors/result-bridge.d.ts.map +1 -1
  70. package/dist/errors/result-bridge.js +1 -2
  71. package/dist/errors/types.cjs +1 -2
  72. package/dist/errors/types.d.ts +5 -8
  73. package/dist/errors/types.d.ts.map +1 -1
  74. package/dist/errors/types.js +1 -2
  75. package/dist/events/index.cjs +125 -55
  76. package/dist/events/index.d.ts +204 -97
  77. package/dist/events/index.d.ts.map +1 -1
  78. package/dist/events/index.js +123 -55
  79. package/dist/filesystem/filesystem-service.cjs +40 -30
  80. package/dist/filesystem/filesystem-service.d.ts +9 -1
  81. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  82. package/dist/filesystem/filesystem-service.js +40 -30
  83. package/dist/filesystem/path-validator.cjs +4 -3
  84. package/dist/filesystem/path-validator.d.ts +3 -1
  85. package/dist/filesystem/path-validator.d.ts.map +1 -1
  86. package/dist/filesystem/path-validator.js +4 -3
  87. package/dist/filesystem/types.d.ts +3 -3
  88. package/dist/filesystem/types.d.ts.map +1 -1
  89. package/dist/index.browser.cjs +7 -0
  90. package/dist/index.browser.d.ts +2 -0
  91. package/dist/index.browser.d.ts.map +1 -1
  92. package/dist/index.browser.js +4 -0
  93. package/dist/index.cjs +0 -7
  94. package/dist/index.d.ts +12 -3
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +0 -4
  97. package/dist/llm/formatters/anthropic.cjs +32 -21
  98. package/dist/llm/formatters/anthropic.d.ts +3 -0
  99. package/dist/llm/formatters/anthropic.d.ts.map +1 -1
  100. package/dist/llm/formatters/anthropic.js +32 -21
  101. package/dist/llm/formatters/factory.cjs +6 -7
  102. package/dist/llm/formatters/factory.d.ts +2 -1
  103. package/dist/llm/formatters/factory.d.ts.map +1 -1
  104. package/dist/llm/formatters/factory.js +4 -5
  105. package/dist/llm/formatters/openai.cjs +38 -9
  106. package/dist/llm/formatters/openai.d.ts +3 -0
  107. package/dist/llm/formatters/openai.d.ts.map +1 -1
  108. package/dist/llm/formatters/openai.js +38 -9
  109. package/dist/llm/formatters/vercel.cjs +49 -8
  110. package/dist/llm/formatters/vercel.d.ts +3 -0
  111. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  112. package/dist/llm/formatters/vercel.js +49 -8
  113. package/dist/llm/registry.cjs +153 -17
  114. package/dist/llm/registry.d.ts +5 -2
  115. package/dist/llm/registry.d.ts.map +1 -1
  116. package/dist/llm/registry.js +143 -7
  117. package/dist/llm/resolver.cjs +4 -4
  118. package/dist/llm/resolver.d.ts +3 -2
  119. package/dist/llm/resolver.d.ts.map +1 -1
  120. package/dist/llm/resolver.js +4 -4
  121. package/dist/llm/schemas.cjs +6 -3
  122. package/dist/llm/schemas.d.ts +51 -17
  123. package/dist/llm/schemas.d.ts.map +1 -1
  124. package/dist/llm/schemas.js +5 -3
  125. package/dist/llm/services/anthropic.cjs +216 -183
  126. package/dist/llm/services/anthropic.d.ts +3 -1
  127. package/dist/llm/services/anthropic.d.ts.map +1 -1
  128. package/dist/llm/services/anthropic.js +217 -184
  129. package/dist/llm/services/factory.cjs +15 -9
  130. package/dist/llm/services/factory.d.ts +2 -1
  131. package/dist/llm/services/factory.d.ts.map +1 -1
  132. package/dist/llm/services/factory.js +15 -9
  133. package/dist/llm/services/openai.cjs +262 -225
  134. package/dist/llm/services/openai.d.ts +3 -1
  135. package/dist/llm/services/openai.d.ts.map +1 -1
  136. package/dist/llm/services/openai.js +263 -226
  137. package/dist/llm/services/test-utils.integration.cjs +58 -12
  138. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  139. package/dist/llm/services/test-utils.integration.js +58 -12
  140. package/dist/llm/services/types.d.ts +9 -0
  141. package/dist/llm/services/types.d.ts.map +1 -1
  142. package/dist/llm/services/vercel.cjs +163 -111
  143. package/dist/llm/services/vercel.d.ts +3 -1
  144. package/dist/llm/services/vercel.d.ts.map +1 -1
  145. package/dist/llm/services/vercel.js +157 -105
  146. package/dist/llm/tokenizer/factory.cjs +2 -2
  147. package/dist/llm/tokenizer/factory.d.ts +3 -1
  148. package/dist/llm/tokenizer/factory.d.ts.map +1 -1
  149. package/dist/llm/tokenizer/factory.js +2 -2
  150. package/dist/llm/tokenizer/openai.cjs +16 -9
  151. package/dist/llm/tokenizer/openai.d.ts +4 -1
  152. package/dist/llm/tokenizer/openai.d.ts.map +1 -1
  153. package/dist/llm/tokenizer/openai.js +16 -9
  154. package/dist/llm/validation.cjs +8 -9
  155. package/dist/llm/validation.d.ts +3 -1
  156. package/dist/llm/validation.d.ts.map +1 -1
  157. package/dist/llm/validation.js +5 -6
  158. package/dist/logger/factory.cjs +54 -0
  159. package/dist/logger/factory.d.ts +36 -0
  160. package/dist/logger/factory.d.ts.map +1 -0
  161. package/dist/logger/factory.js +31 -0
  162. package/dist/logger/index.cjs +42 -3
  163. package/dist/logger/index.d.ts +17 -1
  164. package/dist/logger/index.d.ts.map +1 -1
  165. package/dist/logger/index.js +26 -1
  166. package/dist/logger/logger.cjs +30 -17
  167. package/dist/logger/logger.d.ts.map +1 -1
  168. package/dist/logger/logger.js +30 -17
  169. package/dist/logger/v2/dexto-logger.cjs +141 -0
  170. package/dist/logger/v2/dexto-logger.d.ts +54 -0
  171. package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
  172. package/dist/logger/v2/dexto-logger.js +118 -0
  173. package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
  174. package/dist/logger/v2/error-codes.d.ts +13 -0
  175. package/dist/logger/v2/error-codes.d.ts.map +1 -0
  176. package/dist/logger/v2/error-codes.js +13 -0
  177. package/dist/logger/v2/errors.cjs +107 -0
  178. package/dist/logger/v2/errors.d.ts +32 -0
  179. package/dist/logger/v2/errors.d.ts.map +1 -0
  180. package/dist/logger/v2/errors.js +84 -0
  181. package/dist/logger/v2/schemas.cjs +57 -0
  182. package/dist/logger/v2/schemas.d.ts +147 -0
  183. package/dist/logger/v2/schemas.d.ts.map +1 -0
  184. package/dist/logger/v2/schemas.js +33 -0
  185. package/dist/logger/v2/transport-factory.cjs +53 -0
  186. package/dist/logger/v2/transport-factory.d.ts +21 -0
  187. package/dist/logger/v2/transport-factory.d.ts.map +1 -0
  188. package/dist/logger/v2/transport-factory.js +29 -0
  189. package/dist/logger/v2/transports/console-transport.cjs +79 -0
  190. package/dist/logger/v2/transports/console-transport.d.ts +23 -0
  191. package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
  192. package/dist/logger/v2/transports/console-transport.js +46 -0
  193. package/dist/logger/v2/transports/file-transport.cjs +161 -0
  194. package/dist/logger/v2/transports/file-transport.d.ts +46 -0
  195. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
  196. package/dist/logger/v2/transports/file-transport.js +128 -0
  197. package/dist/logger/v2/types.cjs +49 -0
  198. package/dist/logger/v2/types.d.ts +123 -0
  199. package/dist/logger/v2/types.d.ts.map +1 -0
  200. package/dist/logger/v2/types.js +26 -0
  201. package/dist/mcp/manager.cjs +88 -78
  202. package/dist/mcp/manager.d.ts +3 -1
  203. package/dist/mcp/manager.d.ts.map +1 -1
  204. package/dist/mcp/manager.js +88 -78
  205. package/dist/mcp/mcp-client.cjs +109 -79
  206. package/dist/mcp/mcp-client.d.ts +3 -0
  207. package/dist/mcp/mcp-client.d.ts.map +1 -1
  208. package/dist/mcp/mcp-client.js +102 -72
  209. package/dist/memory/index.cjs +2 -0
  210. package/dist/memory/index.d.ts +1 -1
  211. package/dist/memory/index.d.ts.map +1 -1
  212. package/dist/memory/index.js +3 -1
  213. package/dist/memory/manager.cjs +9 -7
  214. package/dist/memory/manager.d.ts +3 -1
  215. package/dist/memory/manager.d.ts.map +1 -1
  216. package/dist/memory/manager.js +9 -7
  217. package/dist/memory/schemas.cjs +10 -0
  218. package/dist/memory/schemas.d.ts +37 -8
  219. package/dist/memory/schemas.d.ts.map +1 -1
  220. package/dist/memory/schemas.js +9 -0
  221. package/dist/plugins/manager.cjs +21 -19
  222. package/dist/plugins/manager.d.ts +3 -1
  223. package/dist/plugins/manager.d.ts.map +1 -1
  224. package/dist/plugins/manager.js +21 -19
  225. package/dist/plugins/schemas.d.ts +9 -9
  226. package/dist/plugins/types.d.ts +2 -2
  227. package/dist/plugins/types.d.ts.map +1 -1
  228. package/dist/process/command-validator.cjs +30 -20
  229. package/dist/process/command-validator.d.ts +4 -1
  230. package/dist/process/command-validator.d.ts.map +1 -1
  231. package/dist/process/command-validator.js +30 -20
  232. package/dist/process/process-service.cjs +23 -21
  233. package/dist/process/process-service.d.ts +3 -1
  234. package/dist/process/process-service.d.ts.map +1 -1
  235. package/dist/process/process-service.js +23 -21
  236. package/dist/prompts/index.cjs +6 -8
  237. package/dist/prompts/index.d.ts +2 -4
  238. package/dist/prompts/index.d.ts.map +1 -1
  239. package/dist/prompts/index.js +4 -6
  240. package/dist/prompts/prompt-manager.cjs +25 -20
  241. package/dist/prompts/prompt-manager.d.ts +3 -1
  242. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  243. package/dist/prompts/prompt-manager.js +25 -20
  244. package/dist/prompts/providers/config-prompt-provider.cjs +331 -0
  245. package/dist/prompts/providers/config-prompt-provider.d.ts +34 -0
  246. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -0
  247. package/dist/prompts/providers/config-prompt-provider.js +308 -0
  248. package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
  249. package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
  250. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  251. package/dist/prompts/providers/custom-prompt-provider.js +11 -7
  252. package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
  253. package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
  254. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
  255. package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
  256. package/dist/prompts/schemas.cjs +42 -23
  257. package/dist/prompts/schemas.d.ts +123 -14
  258. package/dist/prompts/schemas.d.ts.map +1 -1
  259. package/dist/prompts/schemas.js +39 -22
  260. package/dist/prompts/types.d.ts +1 -1
  261. package/dist/prompts/types.d.ts.map +1 -1
  262. package/dist/resources/handlers/blob-handler.cjs +15 -11
  263. package/dist/resources/handlers/blob-handler.d.ts +3 -1
  264. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  265. package/dist/resources/handlers/blob-handler.js +15 -11
  266. package/dist/resources/handlers/factory.cjs +3 -3
  267. package/dist/resources/handlers/factory.d.ts +2 -1
  268. package/dist/resources/handlers/factory.d.ts.map +1 -1
  269. package/dist/resources/handlers/factory.js +3 -3
  270. package/dist/resources/handlers/filesystem-handler.cjs +10 -8
  271. package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
  272. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  273. package/dist/resources/handlers/filesystem-handler.js +10 -8
  274. package/dist/resources/internal-provider.cjs +28 -20
  275. package/dist/resources/internal-provider.d.ts +3 -1
  276. package/dist/resources/internal-provider.d.ts.map +1 -1
  277. package/dist/resources/internal-provider.js +28 -20
  278. package/dist/resources/manager.cjs +34 -25
  279. package/dist/resources/manager.d.ts +3 -1
  280. package/dist/resources/manager.d.ts.map +1 -1
  281. package/dist/resources/manager.js +34 -25
  282. package/dist/resources/schemas.d.ts +6 -6
  283. package/dist/search/search-service.cjs +8 -6
  284. package/dist/search/search-service.d.ts +3 -1
  285. package/dist/search/search-service.d.ts.map +1 -1
  286. package/dist/search/search-service.js +8 -6
  287. package/dist/session/chat-session.cjs +40 -27
  288. package/dist/session/chat-session.d.ts +10 -7
  289. package/dist/session/chat-session.d.ts.map +1 -1
  290. package/dist/session/chat-session.js +40 -27
  291. package/dist/session/history/database.cjs +18 -11
  292. package/dist/session/history/database.d.ts +3 -1
  293. package/dist/session/history/database.d.ts.map +1 -1
  294. package/dist/session/history/database.js +18 -11
  295. package/dist/session/history/factory.cjs +2 -2
  296. package/dist/session/history/factory.d.ts +5 -1
  297. package/dist/session/history/factory.d.ts.map +1 -1
  298. package/dist/session/history/factory.js +2 -2
  299. package/dist/session/session-manager.cjs +37 -53
  300. package/dist/session/session-manager.d.ts +3 -17
  301. package/dist/session/session-manager.d.ts.map +1 -1
  302. package/dist/session/session-manager.js +37 -53
  303. package/dist/session/title-generator.cjs +3 -2
  304. package/dist/session/title-generator.d.ts +2 -1
  305. package/dist/session/title-generator.d.ts.map +1 -1
  306. package/dist/session/title-generator.js +3 -2
  307. package/dist/storage/blob/factory.cjs +9 -18
  308. package/dist/storage/blob/factory.d.ts +5 -4
  309. package/dist/storage/blob/factory.d.ts.map +1 -1
  310. package/dist/storage/blob/factory.js +8 -17
  311. package/dist/storage/blob/local-blob-store.cjs +25 -32
  312. package/dist/storage/blob/local-blob-store.d.ts +3 -2
  313. package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
  314. package/dist/storage/blob/local-blob-store.js +25 -32
  315. package/dist/storage/blob/memory-blob-store.cjs +326 -0
  316. package/dist/storage/blob/memory-blob-store.d.ts +66 -0
  317. package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
  318. package/dist/storage/blob/memory-blob-store.js +303 -0
  319. package/dist/storage/blob/schemas.cjs +3 -1
  320. package/dist/storage/blob/schemas.d.ts +6 -6
  321. package/dist/storage/blob/schemas.d.ts.map +1 -1
  322. package/dist/storage/blob/schemas.js +3 -1
  323. package/dist/storage/cache/factory.cjs +7 -8
  324. package/dist/storage/cache/factory.d.ts +4 -1
  325. package/dist/storage/cache/factory.d.ts.map +1 -1
  326. package/dist/storage/cache/factory.js +4 -5
  327. package/dist/storage/cache/redis-store.cjs +4 -1
  328. package/dist/storage/cache/redis-store.d.ts +3 -1
  329. package/dist/storage/cache/redis-store.d.ts.map +1 -1
  330. package/dist/storage/cache/redis-store.js +4 -1
  331. package/dist/storage/database/factory.cjs +13 -16
  332. package/dist/storage/database/factory.d.ts +5 -3
  333. package/dist/storage/database/factory.d.ts.map +1 -1
  334. package/dist/storage/database/factory.js +9 -12
  335. package/dist/storage/database/postgres-store.cjs +4 -1
  336. package/dist/storage/database/postgres-store.d.ts +3 -1
  337. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  338. package/dist/storage/database/postgres-store.js +4 -1
  339. package/dist/storage/database/schemas.cjs +3 -4
  340. package/dist/storage/database/schemas.d.ts +8 -16
  341. package/dist/storage/database/schemas.d.ts.map +1 -1
  342. package/dist/storage/database/schemas.js +3 -4
  343. package/dist/storage/database/sqlite-store.cjs +17 -45
  344. package/dist/storage/database/sqlite-store.d.ts +3 -3
  345. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  346. package/dist/storage/database/sqlite-store.js +17 -45
  347. package/dist/storage/schemas.cjs +3 -1
  348. package/dist/storage/schemas.d.ts +16 -23
  349. package/dist/storage/schemas.d.ts.map +1 -1
  350. package/dist/storage/schemas.js +3 -1
  351. package/dist/storage/storage-manager.cjs +15 -15
  352. package/dist/storage/storage-manager.d.ts +6 -6
  353. package/dist/storage/storage-manager.d.ts.map +1 -1
  354. package/dist/storage/storage-manager.js +15 -15
  355. package/dist/systemPrompt/contributors.cjs +15 -15
  356. package/dist/systemPrompt/contributors.d.ts +5 -3
  357. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  358. package/dist/systemPrompt/contributors.js +15 -15
  359. package/dist/systemPrompt/in-built-prompts.cjs +0 -5
  360. package/dist/systemPrompt/in-built-prompts.d.ts +1 -2
  361. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  362. package/dist/systemPrompt/in-built-prompts.js +0 -4
  363. package/dist/systemPrompt/manager.cjs +31 -23
  364. package/dist/systemPrompt/manager.d.ts +5 -3
  365. package/dist/systemPrompt/manager.d.ts.map +1 -1
  366. package/dist/systemPrompt/manager.js +31 -23
  367. package/dist/systemPrompt/registry.cjs +1 -2
  368. package/dist/systemPrompt/registry.d.ts +1 -1
  369. package/dist/systemPrompt/registry.d.ts.map +1 -1
  370. package/dist/systemPrompt/registry.js +1 -2
  371. package/dist/systemPrompt/schemas.cjs +24 -18
  372. package/dist/systemPrompt/schemas.d.ts +46 -222
  373. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  374. package/dist/systemPrompt/schemas.js +14 -18
  375. package/dist/telemetry/decorators.cjs +54 -15
  376. package/dist/telemetry/decorators.d.ts.map +1 -1
  377. package/dist/telemetry/decorators.js +54 -15
  378. package/dist/telemetry/utils.cjs +21 -14
  379. package/dist/telemetry/utils.d.ts +7 -3
  380. package/dist/telemetry/utils.d.ts.map +1 -1
  381. package/dist/telemetry/utils.js +21 -14
  382. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
  383. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
  384. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
  385. package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
  386. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
  387. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
  388. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
  389. package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
  390. package/dist/tools/errors.cjs +2 -1
  391. package/dist/tools/errors.d.ts.map +1 -1
  392. package/dist/tools/errors.js +2 -1
  393. package/dist/tools/internal-tools/constants.cjs +2 -1
  394. package/dist/tools/internal-tools/constants.d.ts +1 -1
  395. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  396. package/dist/tools/internal-tools/constants.js +2 -1
  397. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
  398. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
  399. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
  400. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
  401. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
  402. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
  403. package/dist/tools/internal-tools/provider.cjs +21 -17
  404. package/dist/tools/internal-tools/provider.d.ts +3 -1
  405. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  406. package/dist/tools/internal-tools/provider.js +21 -17
  407. package/dist/tools/internal-tools/registry.cjs +5 -0
  408. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  409. package/dist/tools/internal-tools/registry.js +5 -0
  410. package/dist/tools/schemas.cjs +16 -4
  411. package/dist/tools/schemas.d.ts +21 -9
  412. package/dist/tools/schemas.d.ts.map +1 -1
  413. package/dist/tools/schemas.js +15 -4
  414. package/dist/tools/tool-manager.cjs +64 -47
  415. package/dist/tools/tool-manager.d.ts +4 -2
  416. package/dist/tools/tool-manager.d.ts.map +1 -1
  417. package/dist/tools/tool-manager.js +61 -44
  418. package/dist/tools/types.d.ts +0 -4
  419. package/dist/tools/types.d.ts.map +1 -1
  420. package/dist/utils/env-file.cjs +118 -0
  421. package/dist/utils/env-file.d.ts +5 -0
  422. package/dist/utils/env-file.d.ts.map +1 -0
  423. package/dist/utils/env-file.js +85 -0
  424. package/dist/utils/error-conversion.cjs +23 -1
  425. package/dist/utils/error-conversion.d.ts +2 -1
  426. package/dist/utils/error-conversion.d.ts.map +1 -1
  427. package/dist/utils/error-conversion.js +23 -1
  428. package/dist/utils/execution-context.d.ts.map +1 -1
  429. package/dist/utils/fs-walk.d.ts.map +1 -1
  430. package/dist/utils/index.cjs +7 -9
  431. package/dist/utils/index.d.ts +3 -4
  432. package/dist/utils/index.d.ts.map +1 -1
  433. package/dist/utils/index.js +3 -4
  434. package/dist/utils/path.cjs +22 -57
  435. package/dist/utils/path.d.ts +8 -7
  436. package/dist/utils/path.d.ts.map +1 -1
  437. package/dist/utils/path.js +21 -54
  438. package/dist/utils/result.cjs +37 -14
  439. package/dist/utils/result.d.ts.map +1 -1
  440. package/dist/utils/result.js +37 -14
  441. package/dist/utils/schema.cjs +2 -3
  442. package/dist/utils/schema.d.ts +2 -1
  443. package/dist/utils/schema.d.ts.map +1 -1
  444. package/dist/utils/schema.js +1 -2
  445. package/dist/utils/service-initializer.cjs +88 -61
  446. package/dist/utils/service-initializer.d.ts +4 -2
  447. package/dist/utils/service-initializer.d.ts.map +1 -1
  448. package/dist/utils/service-initializer.js +70 -43
  449. package/package.json +7 -3
  450. package/dist/Dexto.cjs +0 -251
  451. package/dist/Dexto.d.ts +0 -191
  452. package/dist/Dexto.d.ts.map +0 -1
  453. package/dist/Dexto.js +0 -228
  454. package/dist/agent/registry/error-codes.cjs +0 -44
  455. package/dist/agent/registry/error-codes.d.ts +0 -21
  456. package/dist/agent/registry/error-codes.d.ts.map +0 -1
  457. package/dist/agent/registry/error-codes.js +0 -21
  458. package/dist/agent/registry/errors.cjs +0 -188
  459. package/dist/agent/registry/errors.d.ts +0 -63
  460. package/dist/agent/registry/errors.d.ts.map +0 -1
  461. package/dist/agent/registry/errors.js +0 -165
  462. package/dist/agent/registry/registry.cjs +0 -479
  463. package/dist/agent/registry/registry.d.ts +0 -130
  464. package/dist/agent/registry/registry.d.ts.map +0 -1
  465. package/dist/agent/registry/registry.js +0 -453
  466. package/dist/agent/registry/types.cjs +0 -74
  467. package/dist/agent/registry/types.d.ts +0 -142
  468. package/dist/agent/registry/types.d.ts.map +0 -1
  469. package/dist/agent/registry/types.js +0 -48
  470. package/dist/agent/registry/user-registry.cjs +0 -140
  471. package/dist/agent/registry/user-registry.d.ts +0 -34
  472. package/dist/agent/registry/user-registry.d.ts.map +0 -1
  473. package/dist/agent/registry/user-registry.js +0 -105
  474. package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
  475. package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
  476. package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
  477. package/dist/approval/providers/event-based-approval-provider.js +0 -133
  478. package/dist/approval/providers/factory.d.ts.map +0 -1
  479. package/dist/approval/providers/noop-approval-provider.cjs +0 -54
  480. package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
  481. package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
  482. package/dist/approval/providers/noop-approval-provider.js +0 -31
  483. package/dist/config/agent-resolver.cjs +0 -153
  484. package/dist/config/agent-resolver.d.ts +0 -14
  485. package/dist/config/agent-resolver.d.ts.map +0 -1
  486. package/dist/config/agent-resolver.js +0 -123
  487. package/dist/config/error-codes.cjs +0 -39
  488. package/dist/config/error-codes.d.ts +0 -16
  489. package/dist/config/error-codes.d.ts.map +0 -1
  490. package/dist/config/error-codes.js +0 -16
  491. package/dist/config/errors.cjs +0 -126
  492. package/dist/config/errors.d.ts +0 -34
  493. package/dist/config/errors.d.ts.map +0 -1
  494. package/dist/config/errors.js +0 -103
  495. package/dist/config/index.cjs +0 -26
  496. package/dist/config/index.d.ts +0 -4
  497. package/dist/config/index.d.ts.map +0 -1
  498. package/dist/config/index.js +0 -3
  499. package/dist/config/loader.cjs +0 -119
  500. package/dist/config/loader.d.ts +0 -16
  501. package/dist/config/loader.d.ts.map +0 -1
  502. package/dist/config/loader.js +0 -86
  503. package/dist/config/writer.cjs +0 -182
  504. package/dist/config/writer.d.ts +0 -35
  505. package/dist/config/writer.d.ts.map +0 -1
  506. package/dist/config/writer.js +0 -147
  507. package/dist/preferences/constants.d.ts +0 -2
  508. package/dist/preferences/constants.d.ts.map +0 -1
  509. package/dist/preferences/constants.js +0 -5
  510. package/dist/preferences/error-codes.d.ts +0 -8
  511. package/dist/preferences/error-codes.d.ts.map +0 -1
  512. package/dist/preferences/error-codes.js +0 -12
  513. package/dist/preferences/errors.cjs +0 -75
  514. package/dist/preferences/errors.d.ts +0 -18
  515. package/dist/preferences/errors.d.ts.map +0 -1
  516. package/dist/preferences/errors.js +0 -51
  517. package/dist/preferences/index.cjs +0 -55
  518. package/dist/preferences/index.d.ts +0 -6
  519. package/dist/preferences/index.d.ts.map +0 -1
  520. package/dist/preferences/index.js +0 -32
  521. package/dist/preferences/loader.cjs +0 -138
  522. package/dist/preferences/loader.d.ts +0 -51
  523. package/dist/preferences/loader.d.ts.map +0 -1
  524. package/dist/preferences/loader.js +0 -110
  525. package/dist/preferences/schemas.cjs +0 -75
  526. package/dist/preferences/schemas.d.ts +0 -110
  527. package/dist/preferences/schemas.d.ts.map +0 -1
  528. package/dist/preferences/schemas.js +0 -49
  529. package/dist/prompts/providers/file-prompt-provider.cjs +0 -399
  530. package/dist/prompts/providers/file-prompt-provider.d.ts +0 -47
  531. package/dist/prompts/providers/file-prompt-provider.d.ts.map +0 -1
  532. package/dist/prompts/providers/file-prompt-provider.js +0 -376
  533. package/dist/prompts/providers/starter-prompt-provider.cjs +0 -170
  534. package/dist/prompts/providers/starter-prompt-provider.d.ts +0 -45
  535. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +0 -1
  536. package/dist/prompts/providers/starter-prompt-provider.js +0 -147
  537. package/dist/utils/api-key-store.cjs +0 -56
  538. package/dist/utils/api-key-store.d.ts +0 -24
  539. package/dist/utils/api-key-store.d.ts.map +0 -1
  540. package/dist/utils/api-key-store.js +0 -31
  541. package/dist/utils/env.cjs +0 -154
  542. package/dist/utils/env.d.ts +0 -28
  543. package/dist/utils/env.d.ts.map +0 -1
  544. package/dist/utils/env.js +0 -119
  545. package/dist/utils/port-utils.cjs +0 -37
  546. package/dist/utils/port-utils.d.ts +0 -10
  547. package/dist/utils/port-utils.d.ts.map +0 -1
  548. package/dist/utils/port-utils.js +0 -14
  549. package/dist/utils/port-utils.spec.cjs +0 -26
  550. package/dist/utils/port-utils.spec.js +0 -25
  551. /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
@@ -3,8 +3,7 @@ import { promises as fs, createReadStream } from "fs";
3
3
  import path from "path";
4
4
  import { createHash } from "crypto";
5
5
  import { pathToFileURL } from "url";
6
- import { logger } from "../../logger/index.js";
7
- import { getDextoPath } from "../../utils/path.js";
6
+ import { DextoLogComponent } from "../../logger/v2/types.js";
8
7
  import { StorageError } from "../errors.js";
9
8
  class LocalBlobStore {
10
9
  config;
@@ -13,27 +12,13 @@ class LocalBlobStore {
13
12
  statsCache = null;
14
13
  statsCachePromise = null;
15
14
  lastStatsRefresh = 0;
16
- agentId;
15
+ logger;
17
16
  static STATS_REFRESH_INTERVAL_MS = 6e4;
18
17
  // 1 minute
19
- constructor(config, agentId) {
18
+ constructor(config, logger) {
20
19
  this.config = config;
21
- if (agentId) {
22
- const trimmed = agentId.trim();
23
- if (!trimmed) {
24
- throw StorageError.blobInvalidConfig("agentId cannot be empty or whitespace-only");
25
- }
26
- if (!/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
27
- throw StorageError.blobInvalidConfig(
28
- "agentId must contain only alphanumeric characters, hyphens, and underscores"
29
- );
30
- }
31
- this.agentId = trimmed;
32
- } else {
33
- this.agentId = agentId;
34
- }
35
- const blobSubdir = this.agentId ? `blobs-${this.agentId}` : "blobs";
36
- this.storePath = config.storePath || getDextoPath("data", blobSubdir);
20
+ this.storePath = config.storePath;
21
+ this.logger = logger.createChild(DextoLogComponent.STORAGE);
37
22
  }
38
23
  async connect() {
39
24
  if (this.connected) return;
@@ -42,14 +27,14 @@ class LocalBlobStore {
42
27
  await this.refreshStatsCache();
43
28
  this.lastStatsRefresh = Date.now();
44
29
  this.connected = true;
45
- logger.debug(`LocalBlobStore connected at: ${this.storePath}`);
30
+ this.logger.debug(`LocalBlobStore connected at: ${this.storePath}`);
46
31
  } catch (error) {
47
32
  throw StorageError.blobOperationFailed("connect", "local", error);
48
33
  }
49
34
  }
50
35
  async disconnect() {
51
36
  this.connected = false;
52
- logger.debug("LocalBlobStore disconnected");
37
+ this.logger.debug("LocalBlobStore disconnected");
53
38
  }
54
39
  /**
55
40
  * Normalize metadata after JSON parsing to ensure createdAt is a Date object
@@ -82,7 +67,9 @@ class LocalBlobStore {
82
67
  const existingMeta = await fs.readFile(metaPath, "utf-8");
83
68
  const parsed = JSON.parse(existingMeta);
84
69
  const existingMetadata = this.normalizeMetadata(parsed);
85
- logger.debug(`Blob ${id} already exists, returning existing reference (deduplication)`);
70
+ this.logger.debug(
71
+ `Blob ${id} already exists, returning existing reference (deduplication)`
72
+ );
86
73
  return {
87
74
  id,
88
75
  uri: `blob:${id}`,
@@ -114,7 +101,9 @@ class LocalBlobStore {
114
101
  fs.writeFile(blobPath, buffer),
115
102
  fs.writeFile(metaPath, JSON.stringify(storedMetadata, null, 2))
116
103
  ]);
117
- logger.debug(`Stored blob ${id} (${buffer.length} bytes, ${storedMetadata.mimeType})`);
104
+ this.logger.debug(
105
+ `Stored blob ${id} (${buffer.length} bytes, ${storedMetadata.mimeType})`
106
+ );
118
107
  this.updateStatsCacheAfterStore(buffer.length);
119
108
  return {
120
109
  id,
@@ -203,7 +192,7 @@ class LocalBlobStore {
203
192
  const parsed = JSON.parse(metaContent);
204
193
  const metadata = this.normalizeMetadata(parsed);
205
194
  await Promise.all([fs.unlink(blobPath), fs.unlink(metaPath)]);
206
- logger.debug(`Deleted blob: ${id}`);
195
+ this.logger.debug(`Deleted blob: ${id}`);
207
196
  this.updateStatsCacheAfterDelete(metadata.size);
208
197
  } catch (error) {
209
198
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
@@ -239,14 +228,16 @@ class LocalBlobStore {
239
228
  ]);
240
229
  deletedCount++;
241
230
  this.updateStatsCacheAfterDelete(metadata.size);
242
- logger.debug(`Cleaned up old blob: ${id}`);
231
+ this.logger.debug(`Cleaned up old blob: ${id}`);
243
232
  }
244
233
  } catch (error) {
245
- logger.warn(`Failed to process blob metadata ${metaFile}: ${String(error)}`);
234
+ this.logger.warn(
235
+ `Failed to process blob metadata ${metaFile}: ${String(error)}`
236
+ );
246
237
  }
247
238
  }
248
239
  if (deletedCount > 0) {
249
- logger.info(`Blob cleanup: removed ${deletedCount} old blobs`);
240
+ this.logger.info(`Blob cleanup: removed ${deletedCount} old blobs`);
250
241
  }
251
242
  return deletedCount;
252
243
  } catch (error) {
@@ -289,12 +280,14 @@ class LocalBlobStore {
289
280
  metadata
290
281
  });
291
282
  } catch (error) {
292
- logger.warn(`Failed to process blob metadata ${metaFile}: ${String(error)}`);
283
+ this.logger.warn(
284
+ `Failed to process blob metadata ${metaFile}: ${String(error)}`
285
+ );
293
286
  }
294
287
  }
295
288
  return blobs;
296
289
  } catch (error) {
297
- logger.warn(`Failed to list blobs: ${String(error)}`);
290
+ this.logger.warn(`Failed to list blobs: ${String(error)}`);
298
291
  return [];
299
292
  }
300
293
  }
@@ -326,13 +319,13 @@ class LocalBlobStore {
326
319
  const stat = await fs.stat(path.join(this.storePath, datFile));
327
320
  stats.totalSize += stat.size;
328
321
  } catch (error) {
329
- logger.debug(
322
+ this.logger.debug(
330
323
  `Skipping size calculation for ${datFile}: ${error instanceof Error ? error.message : String(error)}`
331
324
  );
332
325
  }
333
326
  }
334
327
  } catch (error) {
335
- logger.warn(`Failed to refresh blob stats cache: ${String(error)}`);
328
+ this.logger.warn(`Failed to refresh blob stats cache: ${String(error)}`);
336
329
  }
337
330
  this.statsCache = stats;
338
331
  }
@@ -0,0 +1,326 @@
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 memory_blob_store_exports = {};
20
+ __export(memory_blob_store_exports, {
21
+ InMemoryBlobStore: () => InMemoryBlobStore
22
+ });
23
+ module.exports = __toCommonJS(memory_blob_store_exports);
24
+ var import_crypto = require("crypto");
25
+ var import_stream = require("stream");
26
+ var import_types = require("../../logger/v2/types.js");
27
+ var import_errors = require("../errors.js");
28
+ class InMemoryBlobStore {
29
+ config;
30
+ blobs = /* @__PURE__ */ new Map();
31
+ connected = false;
32
+ logger;
33
+ constructor(config, logger) {
34
+ this.config = config;
35
+ this.logger = logger.createChild(import_types.DextoLogComponent.STORAGE);
36
+ }
37
+ async connect() {
38
+ if (this.connected) return;
39
+ this.connected = true;
40
+ this.logger.debug("InMemoryBlobStore connected");
41
+ }
42
+ async disconnect() {
43
+ this.blobs.clear();
44
+ this.connected = false;
45
+ this.logger.debug("InMemoryBlobStore disconnected");
46
+ }
47
+ isConnected() {
48
+ return this.connected;
49
+ }
50
+ getStoreType() {
51
+ return "in-memory";
52
+ }
53
+ async store(input, metadata = {}) {
54
+ if (!this.connected) {
55
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
56
+ }
57
+ const buffer = await this.inputToBuffer(input);
58
+ if (buffer.length > this.config.maxBlobSize) {
59
+ throw import_errors.StorageError.blobSizeExceeded(buffer.length, this.config.maxBlobSize);
60
+ }
61
+ const hash = (0, import_crypto.createHash)("sha256").update(buffer).digest("hex").substring(0, 16);
62
+ const id = hash;
63
+ const existing = this.blobs.get(id);
64
+ if (existing) {
65
+ this.logger.debug(
66
+ `Blob ${id} already exists, returning existing reference (deduplication)`
67
+ );
68
+ return {
69
+ id,
70
+ uri: `blob:${id}`,
71
+ metadata: existing.metadata
72
+ };
73
+ }
74
+ const currentSize = this.getTotalSize();
75
+ if (currentSize + buffer.length > this.config.maxTotalSize) {
76
+ throw import_errors.StorageError.blobTotalSizeExceeded(
77
+ currentSize + buffer.length,
78
+ this.config.maxTotalSize
79
+ );
80
+ }
81
+ const storedMetadata = {
82
+ id,
83
+ mimeType: metadata.mimeType || this.detectMimeType(buffer, metadata.originalName),
84
+ originalName: metadata.originalName,
85
+ createdAt: metadata.createdAt || /* @__PURE__ */ new Date(),
86
+ source: metadata.source || "system",
87
+ size: buffer.length,
88
+ hash
89
+ };
90
+ this.blobs.set(id, { data: buffer, metadata: storedMetadata });
91
+ this.logger.debug(`Stored blob ${id} (${buffer.length} bytes, ${storedMetadata.mimeType})`);
92
+ return {
93
+ id,
94
+ uri: `blob:${id}`,
95
+ metadata: storedMetadata
96
+ };
97
+ }
98
+ async retrieve(reference, format = "base64") {
99
+ if (!this.connected) {
100
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
101
+ }
102
+ const id = this.parseReference(reference);
103
+ const blob = this.blobs.get(id);
104
+ if (!blob) {
105
+ throw import_errors.StorageError.blobNotFound(reference);
106
+ }
107
+ switch (format) {
108
+ case "base64":
109
+ return {
110
+ format: "base64",
111
+ data: blob.data.toString("base64"),
112
+ metadata: blob.metadata
113
+ };
114
+ case "buffer":
115
+ return {
116
+ format: "buffer",
117
+ data: Buffer.from(blob.data),
118
+ metadata: { ...blob.metadata }
119
+ };
120
+ case "path":
121
+ throw new Error(
122
+ "Path format not supported for in-memory blobs. Use local blob storage for filesystem paths."
123
+ );
124
+ case "stream": {
125
+ const stream = import_stream.Readable.from(blob.data);
126
+ return {
127
+ format: "stream",
128
+ data: stream,
129
+ metadata: blob.metadata
130
+ };
131
+ }
132
+ case "url": {
133
+ const base64 = blob.data.toString("base64");
134
+ const mimeType = blob.metadata.mimeType || "application/octet-stream";
135
+ const dataUrl = `data:${mimeType};base64,${base64}`;
136
+ return {
137
+ format: "url",
138
+ data: dataUrl,
139
+ metadata: blob.metadata
140
+ };
141
+ }
142
+ default:
143
+ throw import_errors.StorageError.blobInvalidInput(format, `Unsupported format: ${format}`);
144
+ }
145
+ }
146
+ async exists(reference) {
147
+ if (!this.connected) {
148
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
149
+ }
150
+ const id = this.parseReference(reference);
151
+ return this.blobs.has(id);
152
+ }
153
+ async delete(reference) {
154
+ if (!this.connected) {
155
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
156
+ }
157
+ const id = this.parseReference(reference);
158
+ if (!this.blobs.has(id)) {
159
+ throw import_errors.StorageError.blobNotFound(reference);
160
+ }
161
+ this.blobs.delete(id);
162
+ this.logger.debug(`Deleted blob: ${id}`);
163
+ }
164
+ async cleanup(olderThan) {
165
+ if (!this.connected) {
166
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
167
+ }
168
+ const cutoffDate = olderThan || new Date(Date.now() - 30 * 24 * 60 * 60 * 1e3);
169
+ let deletedCount = 0;
170
+ for (const [id, { metadata }] of this.blobs.entries()) {
171
+ if (metadata.createdAt < cutoffDate) {
172
+ this.blobs.delete(id);
173
+ deletedCount++;
174
+ this.logger.debug(`Cleaned up old blob: ${id}`);
175
+ }
176
+ }
177
+ if (deletedCount > 0) {
178
+ this.logger.info(`Blob cleanup: removed ${deletedCount} old blobs from memory`);
179
+ }
180
+ return deletedCount;
181
+ }
182
+ async getStats() {
183
+ if (!this.connected) {
184
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
185
+ }
186
+ return {
187
+ count: this.blobs.size,
188
+ totalSize: this.getTotalSize(),
189
+ backendType: "in-memory",
190
+ storePath: "memory://"
191
+ };
192
+ }
193
+ async listBlobs() {
194
+ if (!this.connected) {
195
+ throw import_errors.StorageError.blobBackendNotConnected("in-memory");
196
+ }
197
+ return Array.from(this.blobs.entries()).map(([id, { metadata }]) => ({
198
+ id,
199
+ uri: `blob:${id}`,
200
+ metadata
201
+ }));
202
+ }
203
+ getStoragePath() {
204
+ return void 0;
205
+ }
206
+ /**
207
+ * Calculate total size of all blobs in memory
208
+ */
209
+ getTotalSize() {
210
+ return Array.from(this.blobs.values()).reduce((sum, { data }) => sum + data.length, 0);
211
+ }
212
+ /**
213
+ * Convert various input types to Buffer.
214
+ * Copied from LocalBlobStore with minor adaptations.
215
+ */
216
+ async inputToBuffer(input) {
217
+ if (Buffer.isBuffer(input)) {
218
+ return input;
219
+ }
220
+ if (input instanceof Uint8Array) {
221
+ return Buffer.from(input);
222
+ }
223
+ if (input instanceof ArrayBuffer) {
224
+ return Buffer.from(new Uint8Array(input));
225
+ }
226
+ if (typeof input === "string") {
227
+ if (input.startsWith("data:")) {
228
+ const commaIndex = input.indexOf(",");
229
+ if (commaIndex !== -1 && input.includes(";base64,")) {
230
+ const base64Data = input.substring(commaIndex + 1);
231
+ return Buffer.from(base64Data, "base64");
232
+ }
233
+ throw import_errors.StorageError.blobEncodingError(
234
+ "inputToBuffer",
235
+ "Unsupported data URI format"
236
+ );
237
+ }
238
+ try {
239
+ return Buffer.from(input, "base64");
240
+ } catch {
241
+ throw import_errors.StorageError.blobEncodingError("inputToBuffer", "Invalid base64 string");
242
+ }
243
+ }
244
+ throw import_errors.StorageError.blobInvalidInput(input, `Unsupported input type: ${typeof input}`);
245
+ }
246
+ /**
247
+ * Parse blob reference to extract ID.
248
+ * Copied from LocalBlobStore.
249
+ */
250
+ parseReference(reference) {
251
+ if (!reference) {
252
+ throw import_errors.StorageError.blobInvalidReference(reference, "Empty reference");
253
+ }
254
+ if (reference.startsWith("blob:")) {
255
+ const id = reference.substring(5);
256
+ if (!id) {
257
+ throw import_errors.StorageError.blobInvalidReference(reference, "Empty blob ID after prefix");
258
+ }
259
+ return id;
260
+ }
261
+ return reference;
262
+ }
263
+ /**
264
+ * Detect MIME type from buffer content and/or filename.
265
+ * Copied from LocalBlobStore.
266
+ */
267
+ detectMimeType(buffer, filename) {
268
+ const header = buffer.subarray(0, 16);
269
+ if (header.length >= 3) {
270
+ const jpegSignature = header.subarray(0, 3);
271
+ if (jpegSignature.equals(Buffer.from([255, 216, 255]))) {
272
+ return "image/jpeg";
273
+ }
274
+ }
275
+ if (header.length >= 4) {
276
+ const signature = header.subarray(0, 4);
277
+ if (signature.equals(Buffer.from([137, 80, 78, 71]))) return "image/png";
278
+ if (signature.equals(Buffer.from([71, 73, 70, 56]))) return "image/gif";
279
+ if (signature.equals(Buffer.from([37, 80, 68, 70]))) return "application/pdf";
280
+ }
281
+ if (filename) {
282
+ const ext = filename.split(".").pop()?.toLowerCase();
283
+ const mimeTypes = {
284
+ jpg: "image/jpeg",
285
+ jpeg: "image/jpeg",
286
+ png: "image/png",
287
+ gif: "image/gif",
288
+ pdf: "application/pdf",
289
+ txt: "text/plain",
290
+ json: "application/json",
291
+ xml: "text/xml",
292
+ html: "text/html",
293
+ css: "text/css",
294
+ js: "text/javascript",
295
+ md: "text/markdown",
296
+ mp3: "audio/mpeg",
297
+ mp4: "video/mp4",
298
+ wav: "audio/wav"
299
+ };
300
+ if (ext && mimeTypes[ext]) return mimeTypes[ext];
301
+ }
302
+ if (this.isTextBuffer(buffer)) {
303
+ return "text/plain";
304
+ }
305
+ return "application/octet-stream";
306
+ }
307
+ /**
308
+ * Check if buffer contains text content.
309
+ * Copied from LocalBlobStore.
310
+ */
311
+ isTextBuffer(buffer) {
312
+ let printableCount = 0;
313
+ const sampleSize = Math.min(512, buffer.length);
314
+ for (let i = 0; i < sampleSize; i++) {
315
+ const byte = buffer[i];
316
+ if (byte !== void 0 && (byte >= 32 && byte <= 126 || byte === 9 || byte === 10 || byte === 13)) {
317
+ printableCount++;
318
+ }
319
+ }
320
+ return printableCount / sampleSize > 0.7;
321
+ }
322
+ }
323
+ // Annotate the CommonJS export names for ESM import in node:
324
+ 0 && (module.exports = {
325
+ InMemoryBlobStore
326
+ });
@@ -0,0 +1,66 @@
1
+ import type { IDextoLogger } from '../../logger/v2/types.js';
2
+ import type { BlobStore, BlobInput, BlobMetadata, BlobReference, BlobData, BlobStats } from './types.js';
3
+ import type { InMemoryBlobStoreConfig } from './schemas.js';
4
+ /**
5
+ * In-memory blob store implementation.
6
+ *
7
+ * Stores blobs in memory with content-based deduplication and size limits.
8
+ * Suitable for development, testing, and scenarios where blob persistence
9
+ * across restarts is not required.
10
+ *
11
+ * Features:
12
+ * - Content-based deduplication (same as LocalBlobStore)
13
+ * - Configurable size limits (per-blob and total)
14
+ * - Automatic cleanup of old blobs
15
+ * - MIME type detection
16
+ * - Multi-format retrieval (base64, buffer, stream, data URI)
17
+ *
18
+ * Limitations:
19
+ * - Data lost on restart (no persistence)
20
+ * - Path format not supported (no filesystem)
21
+ * - Memory usage proportional to blob size
22
+ */
23
+ export declare class InMemoryBlobStore implements BlobStore {
24
+ private config;
25
+ private blobs;
26
+ private connected;
27
+ private logger;
28
+ constructor(config: InMemoryBlobStoreConfig, logger: IDextoLogger);
29
+ connect(): Promise<void>;
30
+ disconnect(): Promise<void>;
31
+ isConnected(): boolean;
32
+ getStoreType(): string;
33
+ store(input: BlobInput, metadata?: BlobMetadata): Promise<BlobReference>;
34
+ retrieve(reference: string, format?: 'base64' | 'buffer' | 'path' | 'stream' | 'url'): Promise<BlobData>;
35
+ exists(reference: string): Promise<boolean>;
36
+ delete(reference: string): Promise<void>;
37
+ cleanup(olderThan?: Date): Promise<number>;
38
+ getStats(): Promise<BlobStats>;
39
+ listBlobs(): Promise<BlobReference[]>;
40
+ getStoragePath(): string | undefined;
41
+ /**
42
+ * Calculate total size of all blobs in memory
43
+ */
44
+ private getTotalSize;
45
+ /**
46
+ * Convert various input types to Buffer.
47
+ * Copied from LocalBlobStore with minor adaptations.
48
+ */
49
+ private inputToBuffer;
50
+ /**
51
+ * Parse blob reference to extract ID.
52
+ * Copied from LocalBlobStore.
53
+ */
54
+ private parseReference;
55
+ /**
56
+ * Detect MIME type from buffer content and/or filename.
57
+ * Copied from LocalBlobStore.
58
+ */
59
+ private detectMimeType;
60
+ /**
61
+ * Check if buffer contains text content.
62
+ * Copied from LocalBlobStore.
63
+ */
64
+ private isTextBuffer;
65
+ }
66
+ //# sourceMappingURL=memory-blob-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-blob-store.d.ts","sourceRoot":"","sources":["../../../src/storage/blob/memory-blob-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,KAAK,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,SAAS,EAEZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IAC/C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAA0E;IACvF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY;IAK3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,WAAW,IAAI,OAAO;IAItB,YAAY,IAAI,MAAM;IAIhB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IA8D5E,QAAQ,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAgB,GACnE,OAAO,CAAC,QAAQ,CAAC;IA6Dd,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB1C,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAc9B,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAY3C,cAAc,IAAI,MAAM,GAAG,SAAS;IAKpC;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;OAGG;YACW,aAAa;IAuC3B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAkDtB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAiBvB"}