@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
@@ -1,40 +1,68 @@
1
1
  import "../chunk-C6A6W6XS.js";
2
2
  import { EventEmitter } from "events";
3
3
  const AGENT_EVENT_NAMES = [
4
- "dexto:conversationReset",
5
- "dexto:mcpServerConnected",
6
- "dexto:availableToolsUpdated",
7
- "dexto:llmSwitched",
8
- // Agent state manager events
9
- "dexto:stateChanged",
10
- "dexto:stateExported",
11
- "dexto:stateReset",
12
- "dexto:sessionOverrideSet",
13
- "dexto:sessionOverrideCleared",
14
- "dexto:mcpServerAdded",
15
- "dexto:mcpServerRemoved",
16
- "dexto:mcpServerRestarted",
17
- "dexto:mcpServerUpdated",
18
- "dexto:mcpResourceUpdated",
19
- "dexto:mcpPromptsListChanged",
20
- "dexto:mcpToolsListChanged",
21
- "dexto:resourceCacheInvalidated",
22
- "dexto:sessionTitleUpdated",
23
- // User approval events (generalized approval system)
24
- "dexto:approvalRequest",
25
- "dexto:approvalResponse"
4
+ "session:reset",
5
+ "session:created",
6
+ "session:title-updated",
7
+ "session:override-set",
8
+ "session:override-cleared",
9
+ "mcp:server-connected",
10
+ "mcp:server-added",
11
+ "mcp:server-removed",
12
+ "mcp:server-restarted",
13
+ "mcp:server-updated",
14
+ "mcp:resource-updated",
15
+ "mcp:prompts-list-changed",
16
+ "mcp:tools-list-changed",
17
+ "tools:available-updated",
18
+ "llm:switched",
19
+ "state:changed",
20
+ "state:exported",
21
+ "state:reset",
22
+ "resource:cache-invalidated",
23
+ "approval:request",
24
+ "approval:response"
26
25
  ];
27
26
  const SESSION_EVENT_NAMES = [
28
- "llmservice:thinking",
29
- "llmservice:chunk",
30
- "llmservice:response",
31
- "llmservice:toolCall",
32
- "llmservice:toolResult",
33
- "llmservice:error",
34
- "llmservice:switched",
35
- "llmservice:unsupportedInput"
27
+ "llm:thinking",
28
+ "llm:chunk",
29
+ "llm:response",
30
+ "llm:tool-call",
31
+ "llm:tool-result",
32
+ "llm:error",
33
+ "llm:switched",
34
+ "llm:unsupported-input"
36
35
  ];
37
36
  const EVENT_NAMES = [...AGENT_EVENT_NAMES, ...SESSION_EVENT_NAMES];
37
+ const STREAMING_EVENTS = [
38
+ // LLM events (session-scoped, forwarded to agent bus with sessionId)
39
+ "llm:thinking",
40
+ "llm:chunk",
41
+ "llm:response",
42
+ "llm:tool-call",
43
+ "llm:tool-result",
44
+ "llm:error",
45
+ "llm:unsupported-input",
46
+ // Session metadata
47
+ "session:title-updated"
48
+ ];
49
+ const INTEGRATION_EVENTS = [
50
+ ...STREAMING_EVENTS,
51
+ // Session lifecycle
52
+ "session:created",
53
+ "session:reset",
54
+ // MCP lifecycle
55
+ "mcp:server-connected",
56
+ "mcp:server-restarted",
57
+ "mcp:tools-list-changed",
58
+ "mcp:prompts-list-changed",
59
+ // Tools
60
+ "tools:available-updated",
61
+ // LLM provider switching
62
+ "llm:switched",
63
+ // State management
64
+ "state:changed"
65
+ ];
38
66
  const _checkAgentEventNames = true;
39
67
  const _checkSessionEventNames = true;
40
68
  const _checkEventNames = true;
@@ -46,31 +74,48 @@ const SessionEventNames = Object.freeze([
46
74
  ...SESSION_EVENT_NAMES
47
75
  ]);
48
76
  const EventNames = Object.freeze([...EVENT_NAMES]);
49
- class BaseTypedEventEmitter extends EventEmitter {
77
+ class BaseTypedEventEmitter {
78
+ // Wrapped EventEmitter instance
79
+ _emitter = new EventEmitter();
50
80
  // Store listeners with their abort controllers for cleanup
81
+ // Maps AbortSignal -> Event Name -> Set of listener functions
51
82
  _abortListeners = /* @__PURE__ */ new WeakMap();
52
- // Implementation
83
+ /**
84
+ * Emit an event with type-safe payload
85
+ */
53
86
  emit(event, ...args) {
54
- return super.emit(event, ...args);
87
+ return this._emitter.emit(event, ...args);
55
88
  }
56
- // Implementation
89
+ /**
90
+ * Subscribe to an event with type-safe listener
91
+ */
57
92
  on(event, listener, options) {
58
93
  if (options?.signal?.aborted) {
59
94
  return this;
60
95
  }
61
- super.on(event, listener);
96
+ this._emitter.on(event, listener);
62
97
  if (options?.signal) {
63
98
  const signal = options.signal;
64
99
  if (!this._abortListeners.has(signal)) {
65
- this._abortListeners.set(signal, /* @__PURE__ */ new Set());
100
+ this._abortListeners.set(signal, /* @__PURE__ */ new Map());
66
101
  }
67
- this._abortListeners.get(signal).add({ event, listener });
102
+ const eventMap = this._abortListeners.get(signal);
103
+ if (!eventMap.has(event)) {
104
+ eventMap.set(event, /* @__PURE__ */ new Set());
105
+ }
106
+ eventMap.get(event).add(listener);
68
107
  const abortHandler = () => {
69
108
  this.off(event, listener);
70
- const listeners = this._abortListeners.get(signal);
71
- if (listeners) {
72
- listeners.delete({ event, listener });
73
- if (listeners.size === 0) {
109
+ const eventMap2 = this._abortListeners.get(signal);
110
+ if (eventMap2) {
111
+ const listenerSet = eventMap2.get(event);
112
+ if (listenerSet) {
113
+ listenerSet.delete(listener);
114
+ if (listenerSet.size === 0) {
115
+ eventMap2.delete(event);
116
+ }
117
+ }
118
+ if (eventMap2.size === 0) {
74
119
  this._abortListeners.delete(signal);
75
120
  }
76
121
  }
@@ -79,36 +124,54 @@ class BaseTypedEventEmitter extends EventEmitter {
79
124
  }
80
125
  return this;
81
126
  }
82
- // Implementation
127
+ /**
128
+ * Subscribe to an event once with type-safe listener
129
+ */
83
130
  once(event, listener, options) {
84
131
  if (options?.signal?.aborted) {
85
132
  return this;
86
133
  }
87
134
  const onceWrapper = (...args) => {
88
135
  if (options?.signal) {
89
- const listeners = this._abortListeners.get(options.signal);
90
- if (listeners) {
91
- listeners.delete({ event, listener: onceWrapper });
92
- if (listeners.size === 0) {
136
+ const eventMap = this._abortListeners.get(options.signal);
137
+ if (eventMap) {
138
+ const listenerSet = eventMap.get(event);
139
+ if (listenerSet) {
140
+ listenerSet.delete(onceWrapper);
141
+ if (listenerSet.size === 0) {
142
+ eventMap.delete(event);
143
+ }
144
+ }
145
+ if (eventMap.size === 0) {
93
146
  this._abortListeners.delete(options.signal);
94
147
  }
95
148
  }
96
149
  }
97
150
  listener(...args);
98
151
  };
99
- super.once(event, onceWrapper);
152
+ this._emitter.once(event, onceWrapper);
100
153
  if (options?.signal) {
101
154
  const signal = options.signal;
102
155
  if (!this._abortListeners.has(signal)) {
103
- this._abortListeners.set(signal, /* @__PURE__ */ new Set());
156
+ this._abortListeners.set(signal, /* @__PURE__ */ new Map());
157
+ }
158
+ const eventMap = this._abortListeners.get(signal);
159
+ if (!eventMap.has(event)) {
160
+ eventMap.set(event, /* @__PURE__ */ new Set());
104
161
  }
105
- this._abortListeners.get(signal).add({ event, listener: onceWrapper });
162
+ eventMap.get(event).add(onceWrapper);
106
163
  const abortHandler = () => {
107
164
  this.off(event, onceWrapper);
108
- const listeners = this._abortListeners.get(signal);
109
- if (listeners) {
110
- listeners.delete({ event, listener: onceWrapper });
111
- if (listeners.size === 0) {
165
+ const eventMap2 = this._abortListeners.get(signal);
166
+ if (eventMap2) {
167
+ const listenerSet = eventMap2.get(event);
168
+ if (listenerSet) {
169
+ listenerSet.delete(onceWrapper);
170
+ if (listenerSet.size === 0) {
171
+ eventMap2.delete(event);
172
+ }
173
+ }
174
+ if (eventMap2.size === 0) {
112
175
  this._abortListeners.delete(signal);
113
176
  }
114
177
  }
@@ -117,9 +180,12 @@ class BaseTypedEventEmitter extends EventEmitter {
117
180
  }
118
181
  return this;
119
182
  }
120
- // Implementation
183
+ /**
184
+ * Unsubscribe from an event
185
+ */
121
186
  off(event, listener) {
122
- return super.off(event, listener);
187
+ this._emitter.off(event, listener);
188
+ return this;
123
189
  }
124
190
  }
125
191
  class AgentEventBus extends BaseTypedEventEmitter {
@@ -135,7 +201,9 @@ export {
135
201
  AgentEventNames,
136
202
  EVENT_NAMES,
137
203
  EventNames,
204
+ INTEGRATION_EVENTS,
138
205
  SESSION_EVENT_NAMES,
206
+ STREAMING_EVENTS,
139
207
  SessionEventBus,
140
208
  SessionEventNames,
141
209
  TypedEventEmitter,
@@ -34,9 +34,10 @@ module.exports = __toCommonJS(filesystem_service_exports);
34
34
  var fs = __toESM(require("node:fs/promises"), 1);
35
35
  var path = __toESM(require("node:path"), 1);
36
36
  var import_glob = require("glob");
37
+ var import_path = require("../utils/path.js");
37
38
  var import_path_validator = require("./path-validator.js");
38
39
  var import_errors = require("./errors.js");
39
- var import_logger = require("../logger/index.js");
40
+ var import_types2 = require("../logger/v2/types.js");
40
41
  const DEFAULT_ENCODING = "utf-8";
41
42
  const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
42
43
  const DEFAULT_MAX_RESULTS = 1e3;
@@ -45,43 +46,50 @@ class FileSystemService {
45
46
  config;
46
47
  pathValidator;
47
48
  initialized = false;
48
- constructor(config = {}) {
49
+ logger;
50
+ constructor(config = {}, logger) {
49
51
  this.config = {
50
52
  allowedPaths: config.allowedPaths || ["."],
51
53
  blockedPaths: config.blockedPaths || [".git", "node_modules/.bin", ".env"],
52
54
  blockedExtensions: config.blockedExtensions || [".exe", ".dll", ".so"],
53
55
  maxFileSize: config.maxFileSize || DEFAULT_MAX_FILE_SIZE,
54
56
  enableBackups: config.enableBackups ?? true,
55
- backupPath: config.backupPath || ".dexto/backups",
57
+ backupPath: config.backupPath,
58
+ // Optional absolute override, defaults handled by getBackupDir()
56
59
  backupRetentionDays: config.backupRetentionDays || 7,
57
60
  workingDirectory: config.workingDirectory
58
61
  };
59
- this.pathValidator = new import_path_validator.PathValidator(this.config);
62
+ this.logger = logger.createChild(import_types2.DextoLogComponent.FILESYSTEM);
63
+ this.pathValidator = new import_path_validator.PathValidator(this.config, this.logger);
64
+ }
65
+ /**
66
+ * Get backup directory path (context-aware with optional override)
67
+ * TODO: Migrate to explicit configuration via CLI enrichment layer (per-agent paths)
68
+ */
69
+ getBackupDir() {
70
+ return this.config.backupPath || (0, import_path.getDextoPath)("backups");
60
71
  }
61
72
  /**
62
73
  * Initialize the service
63
74
  */
64
75
  async initialize() {
65
76
  if (this.initialized) {
66
- import_logger.logger.debug("FileSystemService already initialized");
77
+ this.logger.debug("FileSystemService already initialized");
67
78
  return;
68
79
  }
69
80
  if (this.config.enableBackups) {
70
81
  try {
71
- const backupDir = path.resolve(
72
- this.config.workingDirectory || process.cwd(),
73
- this.config.backupPath
74
- );
82
+ const backupDir = this.getBackupDir();
75
83
  await fs.mkdir(backupDir, { recursive: true });
76
- import_logger.logger.debug(`Backup directory created/verified: ${backupDir}`);
84
+ this.logger.debug(`Backup directory created/verified: ${backupDir}`);
77
85
  } catch (error) {
78
- import_logger.logger.warn(
86
+ this.logger.warn(
79
87
  `Failed to create backup directory: ${error instanceof Error ? error.message : String(error)}`
80
88
  );
81
89
  }
82
90
  }
83
91
  this.initialized = true;
84
- import_logger.logger.info("FileSystemService initialized successfully");
92
+ this.logger.info("FileSystemService initialized successfully");
85
93
  }
86
94
  /**
87
95
  * Read a file with validation and size limits
@@ -171,7 +179,7 @@ class FileSystemService {
171
179
  for (const file of files) {
172
180
  const validation = this.pathValidator.validatePath(file);
173
181
  if (!validation.isValid || !validation.normalizedPath) {
174
- import_logger.logger.debug(`Skipping invalid path: ${file}`);
182
+ this.logger.debug(`Skipping invalid path: ${file}`);
175
183
  continue;
176
184
  }
177
185
  if (options.includeMetadata !== false) {
@@ -184,7 +192,7 @@ class FileSystemService {
184
192
  isDirectory: stats.isDirectory()
185
193
  });
186
194
  } catch (error) {
187
- import_logger.logger.debug(
195
+ this.logger.debug(
188
196
  `Failed to stat file ${file}: ${error instanceof Error ? error.message : String(error)}`
189
197
  );
190
198
  }
@@ -272,7 +280,7 @@ class FileSystemService {
272
280
  }
273
281
  }
274
282
  } catch (error) {
275
- import_logger.logger.debug(
283
+ this.logger.debug(
276
284
  `Skipping file ${fileInfo.path}: ${error instanceof Error ? error.message : String(error)}`
277
285
  );
278
286
  }
@@ -323,7 +331,7 @@ class FileSystemService {
323
331
  }
324
332
  await fs.writeFile(normalizedPath, content, encoding);
325
333
  const bytesWritten = Buffer.byteLength(content, encoding);
326
- import_logger.logger.debug(`File written: ${normalizedPath} (${bytesWritten} bytes)`);
334
+ this.logger.debug(`File written: ${normalizedPath} (${bytesWritten} bytes)`);
327
335
  return {
328
336
  success: true,
329
337
  path: normalizedPath,
@@ -374,7 +382,7 @@ class FileSystemService {
374
382
  content = content.replace(operation.oldString, operation.newString);
375
383
  }
376
384
  await fs.writeFile(normalizedPath, content, options.encoding || DEFAULT_ENCODING);
377
- import_logger.logger.debug(`File edited: ${normalizedPath} (${occurrences} replacements)`);
385
+ this.logger.debug(`File edited: ${normalizedPath} (${occurrences} replacements)`);
378
386
  return {
379
387
  success: true,
380
388
  path: normalizedPath,
@@ -392,10 +400,7 @@ class FileSystemService {
392
400
  * Create a backup of a file
393
401
  */
394
402
  async createBackup(filePath) {
395
- const backupDir = path.resolve(
396
- this.config.workingDirectory || process.cwd(),
397
- this.config.backupPath
398
- );
403
+ const backupDir = this.getBackupDir();
399
404
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
400
405
  const basename = path.basename(filePath);
401
406
  const backupFilename = `${basename}.${timestamp}.backup`;
@@ -403,7 +408,7 @@ class FileSystemService {
403
408
  try {
404
409
  await fs.mkdir(backupDir, { recursive: true });
405
410
  await fs.copyFile(filePath, backupPath);
406
- import_logger.logger.debug(`Backup created: ${backupPath}`);
411
+ this.logger.debug(`Backup created: ${backupPath}`);
407
412
  await this.cleanupOldBackups();
408
413
  return backupPath;
409
414
  } catch (error) {
@@ -420,10 +425,15 @@ class FileSystemService {
420
425
  if (!this.config.enableBackups) {
421
426
  return 0;
422
427
  }
423
- const backupDir = path.resolve(
424
- this.config.workingDirectory || process.cwd(),
425
- this.config.backupPath
426
- );
428
+ let backupDir;
429
+ try {
430
+ backupDir = this.getBackupDir();
431
+ } catch (error) {
432
+ this.logger.warn(
433
+ `Failed to resolve backup directory: ${error instanceof Error ? error.message : String(error)}`
434
+ );
435
+ return 0;
436
+ }
427
437
  try {
428
438
  await fs.access(backupDir);
429
439
  } catch {
@@ -443,20 +453,20 @@ class FileSystemService {
443
453
  if (stats.mtime < cutoffDate) {
444
454
  await fs.unlink(filePath);
445
455
  deletedCount++;
446
- import_logger.logger.debug(`Cleaned up old backup: ${file}`);
456
+ this.logger.debug(`Cleaned up old backup: ${file}`);
447
457
  }
448
458
  } catch (error) {
449
- import_logger.logger.warn(
459
+ this.logger.warn(
450
460
  `Failed to process backup file ${file}: ${error instanceof Error ? error.message : String(error)}`
451
461
  );
452
462
  }
453
463
  }
454
464
  if (deletedCount > 0) {
455
- import_logger.logger.info(`Backup cleanup: removed ${deletedCount} old backup files`);
465
+ this.logger.info(`Backup cleanup: removed ${deletedCount} old backup files`);
456
466
  }
457
467
  return deletedCount;
458
468
  } catch (error) {
459
- import_logger.logger.warn(
469
+ this.logger.warn(
460
470
  `Failed to cleanup backup directory: ${error instanceof Error ? error.message : String(error)}`
461
471
  );
462
472
  return 0;
@@ -4,15 +4,23 @@
4
4
  * Secure file system operations for Dexto internal tools
5
5
  */
6
6
  import { FileSystemConfig, FileContent, ReadFileOptions, GlobOptions, GlobResult, GrepOptions, SearchResult, WriteFileOptions, WriteResult, EditFileOptions, EditResult, EditOperation } from './types.js';
7
+ import type { IDextoLogger } from '../logger/v2/types.js';
7
8
  /**
8
9
  * FileSystemService - Handles all file system operations with security checks
9
10
  * TODO: Add tests for this class
11
+ * TODO: instantiate only when internal file tools are enabled to avoid file dependencies which won't work in serverless
10
12
  */
11
13
  export declare class FileSystemService {
12
14
  private config;
13
15
  private pathValidator;
14
16
  private initialized;
15
- constructor(config?: Partial<FileSystemConfig>);
17
+ private logger;
18
+ constructor(config: Partial<FileSystemConfig> | undefined, logger: IDextoLogger);
19
+ /**
20
+ * Get backup directory path (context-aware with optional override)
21
+ * TODO: Migrate to explicit configuration via CLI enrichment layer (per-agent paths)
22
+ */
23
+ private getBackupDir;
16
24
  /**
17
25
  * Initialize the service
18
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-service.d.ts","sourceRoot":"","sources":["../../src/filesystem/filesystem-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACH,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EAEZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EAGhB,MAAM,YAAY,CAAC;AAUpB;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAgBlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BjC;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IA+ErF;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwEhF;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAqGtF;;OAEG;IACG,SAAS,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,WAAW,CAAC;IA0DvB;;OAEG;IACG,QAAQ,CACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAoEtB;;OAEG;YACW,YAAY;IA6B1B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAwD1C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAIvC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAI3C"}
1
+ {"version":3,"file":"filesystem-service.d.ts","sourceRoot":"","sources":["../../src/filesystem/filesystem-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACH,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EAEZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EAGhB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQ1D;;;;GAIG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAK,EAAE,MAAM,EAAE,YAAY;IAiBxE;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IA+ErF;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwEhF;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAqGtF;;OAEG;IACG,SAAS,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,WAAW,CAAC;IA0DvB;;OAEG;IACG,QAAQ,CACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAoEtB;;OAEG;YACW,YAAY;IA0B1B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6D1C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAIvC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAI3C"}
@@ -2,9 +2,10 @@ import "../chunk-C6A6W6XS.js";
2
2
  import * as fs from "node:fs/promises";
3
3
  import * as path from "node:path";
4
4
  import { glob } from "glob";
5
+ import { getDextoPath } from "../utils/path.js";
5
6
  import { PathValidator } from "./path-validator.js";
6
7
  import { FileSystemError } from "./errors.js";
7
- import { logger } from "../logger/index.js";
8
+ import { DextoLogComponent } from "../logger/v2/types.js";
8
9
  const DEFAULT_ENCODING = "utf-8";
9
10
  const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
10
11
  const DEFAULT_MAX_RESULTS = 1e3;
@@ -13,43 +14,50 @@ class FileSystemService {
13
14
  config;
14
15
  pathValidator;
15
16
  initialized = false;
16
- constructor(config = {}) {
17
+ logger;
18
+ constructor(config = {}, logger) {
17
19
  this.config = {
18
20
  allowedPaths: config.allowedPaths || ["."],
19
21
  blockedPaths: config.blockedPaths || [".git", "node_modules/.bin", ".env"],
20
22
  blockedExtensions: config.blockedExtensions || [".exe", ".dll", ".so"],
21
23
  maxFileSize: config.maxFileSize || DEFAULT_MAX_FILE_SIZE,
22
24
  enableBackups: config.enableBackups ?? true,
23
- backupPath: config.backupPath || ".dexto/backups",
25
+ backupPath: config.backupPath,
26
+ // Optional absolute override, defaults handled by getBackupDir()
24
27
  backupRetentionDays: config.backupRetentionDays || 7,
25
28
  workingDirectory: config.workingDirectory
26
29
  };
27
- this.pathValidator = new PathValidator(this.config);
30
+ this.logger = logger.createChild(DextoLogComponent.FILESYSTEM);
31
+ this.pathValidator = new PathValidator(this.config, this.logger);
32
+ }
33
+ /**
34
+ * Get backup directory path (context-aware with optional override)
35
+ * TODO: Migrate to explicit configuration via CLI enrichment layer (per-agent paths)
36
+ */
37
+ getBackupDir() {
38
+ return this.config.backupPath || getDextoPath("backups");
28
39
  }
29
40
  /**
30
41
  * Initialize the service
31
42
  */
32
43
  async initialize() {
33
44
  if (this.initialized) {
34
- logger.debug("FileSystemService already initialized");
45
+ this.logger.debug("FileSystemService already initialized");
35
46
  return;
36
47
  }
37
48
  if (this.config.enableBackups) {
38
49
  try {
39
- const backupDir = path.resolve(
40
- this.config.workingDirectory || process.cwd(),
41
- this.config.backupPath
42
- );
50
+ const backupDir = this.getBackupDir();
43
51
  await fs.mkdir(backupDir, { recursive: true });
44
- logger.debug(`Backup directory created/verified: ${backupDir}`);
52
+ this.logger.debug(`Backup directory created/verified: ${backupDir}`);
45
53
  } catch (error) {
46
- logger.warn(
54
+ this.logger.warn(
47
55
  `Failed to create backup directory: ${error instanceof Error ? error.message : String(error)}`
48
56
  );
49
57
  }
50
58
  }
51
59
  this.initialized = true;
52
- logger.info("FileSystemService initialized successfully");
60
+ this.logger.info("FileSystemService initialized successfully");
53
61
  }
54
62
  /**
55
63
  * Read a file with validation and size limits
@@ -139,7 +147,7 @@ class FileSystemService {
139
147
  for (const file of files) {
140
148
  const validation = this.pathValidator.validatePath(file);
141
149
  if (!validation.isValid || !validation.normalizedPath) {
142
- logger.debug(`Skipping invalid path: ${file}`);
150
+ this.logger.debug(`Skipping invalid path: ${file}`);
143
151
  continue;
144
152
  }
145
153
  if (options.includeMetadata !== false) {
@@ -152,7 +160,7 @@ class FileSystemService {
152
160
  isDirectory: stats.isDirectory()
153
161
  });
154
162
  } catch (error) {
155
- logger.debug(
163
+ this.logger.debug(
156
164
  `Failed to stat file ${file}: ${error instanceof Error ? error.message : String(error)}`
157
165
  );
158
166
  }
@@ -240,7 +248,7 @@ class FileSystemService {
240
248
  }
241
249
  }
242
250
  } catch (error) {
243
- logger.debug(
251
+ this.logger.debug(
244
252
  `Skipping file ${fileInfo.path}: ${error instanceof Error ? error.message : String(error)}`
245
253
  );
246
254
  }
@@ -291,7 +299,7 @@ class FileSystemService {
291
299
  }
292
300
  await fs.writeFile(normalizedPath, content, encoding);
293
301
  const bytesWritten = Buffer.byteLength(content, encoding);
294
- logger.debug(`File written: ${normalizedPath} (${bytesWritten} bytes)`);
302
+ this.logger.debug(`File written: ${normalizedPath} (${bytesWritten} bytes)`);
295
303
  return {
296
304
  success: true,
297
305
  path: normalizedPath,
@@ -342,7 +350,7 @@ class FileSystemService {
342
350
  content = content.replace(operation.oldString, operation.newString);
343
351
  }
344
352
  await fs.writeFile(normalizedPath, content, options.encoding || DEFAULT_ENCODING);
345
- logger.debug(`File edited: ${normalizedPath} (${occurrences} replacements)`);
353
+ this.logger.debug(`File edited: ${normalizedPath} (${occurrences} replacements)`);
346
354
  return {
347
355
  success: true,
348
356
  path: normalizedPath,
@@ -360,10 +368,7 @@ class FileSystemService {
360
368
  * Create a backup of a file
361
369
  */
362
370
  async createBackup(filePath) {
363
- const backupDir = path.resolve(
364
- this.config.workingDirectory || process.cwd(),
365
- this.config.backupPath
366
- );
371
+ const backupDir = this.getBackupDir();
367
372
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
368
373
  const basename = path.basename(filePath);
369
374
  const backupFilename = `${basename}.${timestamp}.backup`;
@@ -371,7 +376,7 @@ class FileSystemService {
371
376
  try {
372
377
  await fs.mkdir(backupDir, { recursive: true });
373
378
  await fs.copyFile(filePath, backupPath);
374
- logger.debug(`Backup created: ${backupPath}`);
379
+ this.logger.debug(`Backup created: ${backupPath}`);
375
380
  await this.cleanupOldBackups();
376
381
  return backupPath;
377
382
  } catch (error) {
@@ -388,10 +393,15 @@ class FileSystemService {
388
393
  if (!this.config.enableBackups) {
389
394
  return 0;
390
395
  }
391
- const backupDir = path.resolve(
392
- this.config.workingDirectory || process.cwd(),
393
- this.config.backupPath
394
- );
396
+ let backupDir;
397
+ try {
398
+ backupDir = this.getBackupDir();
399
+ } catch (error) {
400
+ this.logger.warn(
401
+ `Failed to resolve backup directory: ${error instanceof Error ? error.message : String(error)}`
402
+ );
403
+ return 0;
404
+ }
395
405
  try {
396
406
  await fs.access(backupDir);
397
407
  } catch {
@@ -411,20 +421,20 @@ class FileSystemService {
411
421
  if (stats.mtime < cutoffDate) {
412
422
  await fs.unlink(filePath);
413
423
  deletedCount++;
414
- logger.debug(`Cleaned up old backup: ${file}`);
424
+ this.logger.debug(`Cleaned up old backup: ${file}`);
415
425
  }
416
426
  } catch (error) {
417
- logger.warn(
427
+ this.logger.warn(
418
428
  `Failed to process backup file ${file}: ${error instanceof Error ? error.message : String(error)}`
419
429
  );
420
430
  }
421
431
  }
422
432
  if (deletedCount > 0) {
423
- logger.info(`Backup cleanup: removed ${deletedCount} old backup files`);
433
+ this.logger.info(`Backup cleanup: removed ${deletedCount} old backup files`);
424
434
  }
425
435
  return deletedCount;
426
436
  } catch (error) {
427
- logger.warn(
437
+ this.logger.warn(
428
438
  `Failed to cleanup backup directory: ${error instanceof Error ? error.message : String(error)}`
429
439
  );
430
440
  return 0;
@@ -33,14 +33,15 @@ __export(path_validator_exports, {
33
33
  module.exports = __toCommonJS(path_validator_exports);
34
34
  var path = __toESM(require("node:path"), 1);
35
35
  var import_node_fs = require("node:fs");
36
- var import_logger = require("../logger/index.js");
37
36
  class PathValidator {
38
37
  config;
39
38
  normalizedAllowedPaths;
40
39
  normalizedBlockedPaths;
41
40
  normalizedBlockedExtensions;
42
- constructor(config) {
41
+ logger;
42
+ constructor(config, logger) {
43
43
  this.config = config;
44
+ this.logger = logger;
44
45
  const workingDir = config.workingDirectory || process.cwd();
45
46
  this.normalizedAllowedPaths = config.allowedPaths.map((p) => path.resolve(workingDir, p));
46
47
  this.normalizedBlockedPaths = config.blockedPaths.map((p) => path.normalize(p));
@@ -48,7 +49,7 @@ class PathValidator {
48
49
  const e = ext.startsWith(".") ? ext : `.${ext}`;
49
50
  return e.toLowerCase();
50
51
  });
51
- import_logger.logger.debug(
52
+ this.logger.debug(
52
53
  `PathValidator initialized with ${this.normalizedAllowedPaths.length} allowed paths`
53
54
  );
54
55
  }