@dexto/core 1.7.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/agent/DextoAgent.cjs +157 -62
  2. package/dist/agent/DextoAgent.d.ts +71 -17
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +161 -63
  5. package/dist/agent/agent-options.d.ts +6 -10
  6. package/dist/agent/agent-options.d.ts.map +1 -1
  7. package/dist/agent/agentCard.js +1 -1
  8. package/dist/agent/error-codes.js +1 -1
  9. package/dist/agent/errors.js +1 -1
  10. package/dist/agent/index.d.ts +1 -0
  11. package/dist/agent/index.d.ts.map +1 -1
  12. package/dist/agent/index.js +1 -1
  13. package/dist/agent/schemas.d.ts +2 -2
  14. package/dist/agent/schemas.js +1 -1
  15. package/dist/agent/state-manager.js +1 -1
  16. package/dist/approval/error-codes.cjs +1 -1
  17. package/dist/approval/error-codes.d.ts +1 -1
  18. package/dist/approval/error-codes.d.ts.map +1 -1
  19. package/dist/approval/error-codes.js +2 -2
  20. package/dist/approval/errors.cjs +2 -5
  21. package/dist/approval/errors.d.ts.map +1 -1
  22. package/dist/approval/errors.js +3 -6
  23. package/dist/approval/factory.cjs +19 -4
  24. package/dist/approval/factory.d.ts +4 -1
  25. package/dist/approval/factory.d.ts.map +1 -1
  26. package/dist/approval/factory.js +19 -5
  27. package/dist/approval/index.d.ts +1 -1
  28. package/dist/approval/index.d.ts.map +1 -1
  29. package/dist/approval/index.js +1 -1
  30. package/dist/approval/manager.cjs +168 -26
  31. package/dist/approval/manager.d.ts +46 -12
  32. package/dist/approval/manager.d.ts.map +1 -1
  33. package/dist/approval/manager.js +177 -29
  34. package/dist/approval/schemas.cjs +26 -26
  35. package/dist/approval/schemas.d.ts +29 -29
  36. package/dist/approval/schemas.d.ts.map +1 -1
  37. package/dist/approval/schemas.js +23 -23
  38. package/dist/approval/types.cjs +5 -5
  39. package/dist/approval/types.d.ts +18 -18
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +6 -6
  42. package/dist/{chunk-PTJYTZNU.js → chunk-C6A6W6XS.js} +1 -44
  43. package/dist/config/index.cjs +75 -0
  44. package/dist/config/index.d.ts +15 -0
  45. package/dist/config/index.d.ts.map +1 -0
  46. package/dist/config/index.js +50 -0
  47. package/dist/context/compaction/overflow.js +1 -1
  48. package/dist/context/compaction/strategies/noop.js +1 -1
  49. package/dist/context/compaction/strategies/reactive-overflow-compaction.js +1 -1
  50. package/dist/context/content-clone.cjs +131 -0
  51. package/dist/context/content-clone.d.ts +7 -0
  52. package/dist/context/content-clone.d.ts.map +1 -0
  53. package/dist/context/content-clone.js +104 -0
  54. package/dist/context/error-codes.js +1 -1
  55. package/dist/context/errors.js +1 -1
  56. package/dist/context/index.cjs +2 -0
  57. package/dist/context/index.d.ts +1 -0
  58. package/dist/context/index.d.ts.map +1 -1
  59. package/dist/context/index.js +2 -1
  60. package/dist/context/manager.cjs +47 -35
  61. package/dist/context/manager.d.ts +7 -7
  62. package/dist/context/manager.d.ts.map +1 -1
  63. package/dist/context/manager.js +48 -36
  64. package/dist/context/media-helpers.js +1 -1
  65. package/dist/context/schemas.cjs +77 -0
  66. package/dist/context/schemas.d.ts +5 -0
  67. package/dist/context/schemas.d.ts.map +1 -0
  68. package/dist/context/schemas.js +53 -0
  69. package/dist/context/types.js +1 -1
  70. package/dist/context/utils.cjs +70 -69
  71. package/dist/context/utils.d.ts +3 -3
  72. package/dist/context/utils.d.ts.map +1 -1
  73. package/dist/context/utils.js +71 -70
  74. package/dist/errors/DextoBaseError.js +1 -1
  75. package/dist/errors/DextoRuntimeError.js +1 -1
  76. package/dist/errors/DextoValidationError.js +1 -1
  77. package/dist/errors/index.js +1 -1
  78. package/dist/errors/result-bridge.js +1 -1
  79. package/dist/errors/types.js +1 -1
  80. package/dist/events/index.cjs +9 -1
  81. package/dist/events/index.d.ts +20 -8
  82. package/dist/events/index.d.ts.map +1 -1
  83. package/dist/events/index.js +10 -2
  84. package/dist/hooks/builtins/content-policy.js +1 -1
  85. package/dist/hooks/builtins/response-sanitizer.js +1 -1
  86. package/dist/hooks/error-codes.js +1 -1
  87. package/dist/hooks/index.js +1 -1
  88. package/dist/hooks/manager.cjs +1 -1
  89. package/dist/hooks/manager.d.ts +2 -2
  90. package/dist/hooks/manager.d.ts.map +1 -1
  91. package/dist/hooks/manager.js +2 -2
  92. package/dist/hooks/types.d.ts +2 -2
  93. package/dist/hooks/types.d.ts.map +1 -1
  94. package/dist/index.browser.js +1 -1
  95. package/dist/index.cjs +2 -0
  96. package/dist/index.d.ts +1 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +2 -1
  99. package/dist/llm/curation-config.js +1 -1
  100. package/dist/llm/curation.js +1 -1
  101. package/dist/llm/error-codes.js +1 -1
  102. package/dist/llm/errors.js +1 -1
  103. package/dist/llm/executor/index.cjs +32 -0
  104. package/dist/llm/executor/index.d.ts +2 -0
  105. package/dist/llm/executor/index.d.ts.map +1 -0
  106. package/dist/llm/executor/index.js +11 -0
  107. package/dist/llm/executor/provider-options.js +1 -1
  108. package/dist/llm/executor/stream-processor.cjs +28 -139
  109. package/dist/llm/executor/stream-processor.d.ts +2 -13
  110. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  111. package/dist/llm/executor/stream-processor.js +29 -140
  112. package/dist/{session/history/memory.cjs → llm/executor/tool-definitions.cjs} +21 -33
  113. package/dist/llm/executor/tool-definitions.d.ts +4 -0
  114. package/dist/llm/executor/tool-definitions.d.ts.map +1 -0
  115. package/dist/llm/executor/tool-definitions.js +22 -0
  116. package/dist/llm/executor/tool-output-truncator.js +1 -1
  117. package/dist/llm/executor/turn-executor.cjs +1093 -458
  118. package/dist/llm/executor/turn-executor.d.ts +269 -43
  119. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  120. package/dist/llm/executor/turn-executor.js +1079 -405
  121. package/dist/llm/executor/types.d.ts +6 -0
  122. package/dist/llm/executor/types.d.ts.map +1 -1
  123. package/dist/llm/formatters/vercel.js +1 -1
  124. package/dist/llm/index.cjs +2 -0
  125. package/dist/llm/index.d.ts +1 -0
  126. package/dist/llm/index.d.ts.map +1 -1
  127. package/dist/llm/index.js +2 -1
  128. package/dist/llm/providers/codex-app-server.cjs +22 -2
  129. package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
  130. package/dist/llm/providers/codex-app-server.js +23 -3
  131. package/dist/llm/providers/codex-base-url.js +1 -1
  132. package/dist/llm/providers/local/ai-sdk-adapter.js +1 -1
  133. package/dist/llm/providers/local/downloader.js +1 -1
  134. package/dist/llm/providers/local/error-codes.js +1 -1
  135. package/dist/llm/providers/local/errors.js +1 -1
  136. package/dist/llm/providers/local/gpu-detector.js +1 -1
  137. package/dist/llm/providers/local/index.js +1 -1
  138. package/dist/llm/providers/local/node-llama-provider.js +1 -1
  139. package/dist/llm/providers/local/ollama-provider.js +1 -1
  140. package/dist/llm/providers/local/registry.js +1 -1
  141. package/dist/llm/providers/local/schemas.js +1 -1
  142. package/dist/llm/providers/openrouter-model-registry.js +1 -1
  143. package/dist/llm/reasoning/anthropic-betas.js +1 -1
  144. package/dist/llm/reasoning/anthropic-thinking.js +1 -1
  145. package/dist/llm/reasoning/openai-reasoning-effort.js +1 -1
  146. package/dist/llm/reasoning/profile.js +1 -1
  147. package/dist/llm/reasoning/profiles/anthropic.js +1 -1
  148. package/dist/llm/reasoning/profiles/bedrock.js +1 -1
  149. package/dist/llm/reasoning/profiles/google.js +1 -1
  150. package/dist/llm/reasoning/profiles/openai-compatible.js +1 -1
  151. package/dist/llm/reasoning/profiles/openai.js +1 -1
  152. package/dist/llm/reasoning/profiles/openrouter.js +1 -1
  153. package/dist/llm/reasoning/profiles/shared.js +1 -1
  154. package/dist/llm/reasoning/profiles/vertex.js +1 -1
  155. package/dist/llm/registry/auto-update.js +1 -1
  156. package/dist/llm/registry/index.js +1 -1
  157. package/dist/llm/registry/models.generated.js +1 -1
  158. package/dist/llm/registry/models.manual.js +1 -1
  159. package/dist/llm/registry/sync.js +1 -1
  160. package/dist/llm/resolver.js +1 -1
  161. package/dist/llm/schemas.js +1 -1
  162. package/dist/llm/services/factory.cjs +5 -4
  163. package/dist/llm/services/factory.d.ts +3 -3
  164. package/dist/llm/services/factory.d.ts.map +1 -1
  165. package/dist/llm/services/factory.js +6 -5
  166. package/dist/llm/services/types.d.ts +10 -1
  167. package/dist/llm/services/types.d.ts.map +1 -1
  168. package/dist/llm/services/vercel.cjs +23 -8
  169. package/dist/llm/services/vercel.d.ts +11 -7
  170. package/dist/llm/services/vercel.d.ts.map +1 -1
  171. package/dist/llm/services/vercel.js +24 -9
  172. package/dist/llm/types.js +1 -1
  173. package/dist/llm/usage-metadata.cjs +20 -3
  174. package/dist/llm/usage-metadata.d.ts +1 -0
  175. package/dist/llm/usage-metadata.d.ts.map +1 -1
  176. package/dist/llm/usage-metadata.js +19 -3
  177. package/dist/llm/usage-scope.js +1 -1
  178. package/dist/llm/usage-summary.js +1 -1
  179. package/dist/llm/validation.js +1 -1
  180. package/dist/logger/browser.js +1 -1
  181. package/dist/logger/default-logger-factory.js +1 -1
  182. package/dist/logger/factory.js +1 -1
  183. package/dist/logger/index.js +1 -1
  184. package/dist/logger/logger.js +1 -1
  185. package/dist/logger/v2/dexto-logger.js +1 -1
  186. package/dist/logger/v2/error-codes.js +1 -1
  187. package/dist/logger/v2/errors.js +1 -1
  188. package/dist/logger/v2/schemas.js +1 -1
  189. package/dist/logger/v2/test-utils.js +1 -1
  190. package/dist/logger/v2/transport-factory.js +1 -1
  191. package/dist/logger/v2/transports/console-transport.js +1 -1
  192. package/dist/logger/v2/transports/file-transport.js +1 -1
  193. package/dist/logger/v2/transports/silent-transport.js +1 -1
  194. package/dist/logger/v2/types.js +1 -1
  195. package/dist/mcp/bundled-config.js +1 -1
  196. package/dist/mcp/error-codes.js +1 -1
  197. package/dist/mcp/errors.js +1 -1
  198. package/dist/mcp/index.js +1 -1
  199. package/dist/mcp/manager.js +1 -1
  200. package/dist/mcp/mcp-client.js +1 -1
  201. package/dist/mcp/resolver.js +1 -1
  202. package/dist/mcp/schemas.js +1 -1
  203. package/dist/memory/error-codes.js +1 -1
  204. package/dist/memory/errors.js +1 -1
  205. package/dist/memory/index.js +1 -1
  206. package/dist/memory/manager.cjs +7 -27
  207. package/dist/memory/manager.d.ts +4 -12
  208. package/dist/memory/manager.d.ts.map +1 -1
  209. package/dist/memory/manager.js +8 -28
  210. package/dist/memory/schemas.js +1 -1
  211. package/dist/prompts/error-codes.js +1 -1
  212. package/dist/prompts/errors.js +1 -1
  213. package/dist/prompts/index.js +1 -1
  214. package/dist/prompts/name-validation.js +1 -1
  215. package/dist/prompts/prompt-manager.cjs +9 -38
  216. package/dist/prompts/prompt-manager.d.ts +2 -10
  217. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  218. package/dist/prompts/prompt-manager.js +10 -39
  219. package/dist/prompts/providers/config-prompt-provider.cjs +8 -87
  220. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  221. package/dist/prompts/providers/config-prompt-provider.js +9 -88
  222. package/dist/prompts/providers/custom-prompt-provider.cjs +21 -22
  223. package/dist/prompts/providers/custom-prompt-provider.d.ts +19 -4
  224. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  225. package/dist/prompts/providers/custom-prompt-provider.js +22 -23
  226. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  227. package/dist/prompts/schemas.cjs +2 -24
  228. package/dist/prompts/schemas.d.ts +0 -52
  229. package/dist/prompts/schemas.d.ts.map +1 -1
  230. package/dist/prompts/schemas.js +3 -25
  231. package/dist/prompts/types.d.ts +5 -32
  232. package/dist/prompts/types.d.ts.map +1 -1
  233. package/dist/prompts/utils.js +1 -1
  234. package/dist/resources/agent-resources-provider.js +1 -1
  235. package/dist/resources/error-codes.js +1 -1
  236. package/dist/resources/errors.js +1 -1
  237. package/dist/resources/handlers/blob-handler.cjs +14 -11
  238. package/dist/resources/handlers/blob-handler.d.ts +4 -4
  239. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  240. package/dist/resources/handlers/blob-handler.js +15 -12
  241. package/dist/resources/handlers/factory.cjs +3 -3
  242. package/dist/resources/handlers/factory.js +4 -4
  243. package/dist/resources/handlers/filesystem-handler.js +1 -1
  244. package/dist/resources/handlers/types.d.ts +2 -2
  245. package/dist/resources/handlers/types.d.ts.map +1 -1
  246. package/dist/resources/index.js +1 -1
  247. package/dist/resources/manager.cjs +10 -7
  248. package/dist/resources/manager.d.ts +4 -4
  249. package/dist/resources/manager.d.ts.map +1 -1
  250. package/dist/resources/manager.js +11 -8
  251. package/dist/resources/reference-parser.js +1 -1
  252. package/dist/resources/schemas.cjs +1 -1
  253. package/dist/resources/schemas.d.ts +2 -2
  254. package/dist/resources/schemas.js +2 -2
  255. package/dist/runtime/host-runtime.js +1 -1
  256. package/dist/runtime/index.cjs +3 -0
  257. package/dist/runtime/index.d.ts +2 -0
  258. package/dist/runtime/index.d.ts.map +1 -1
  259. package/dist/runtime/index.js +3 -1
  260. package/dist/runtime/run-context.js +1 -1
  261. package/dist/search/index.js +1 -1
  262. package/dist/search/search-service.cjs +6 -13
  263. package/dist/search/search-service.d.ts +5 -3
  264. package/dist/search/search-service.d.ts.map +1 -1
  265. package/dist/search/search-service.js +7 -14
  266. package/dist/session/chat-session.cjs +264 -108
  267. package/dist/session/chat-session.d.ts +75 -21
  268. package/dist/session/chat-session.d.ts.map +1 -1
  269. package/dist/session/chat-session.js +268 -108
  270. package/dist/session/error-codes.js +1 -1
  271. package/dist/session/errors.js +1 -1
  272. package/dist/session/index.cjs +19 -2
  273. package/dist/session/index.d.ts +4 -3
  274. package/dist/session/index.d.ts.map +1 -1
  275. package/dist/session/index.js +19 -3
  276. package/dist/session/message-queue.cjs +82 -51
  277. package/dist/session/message-queue.d.ts +13 -8
  278. package/dist/session/message-queue.d.ts.map +1 -1
  279. package/dist/session/message-queue.js +83 -52
  280. package/dist/session/queue-clone.cjs +50 -0
  281. package/dist/session/queue-clone.d.ts +5 -0
  282. package/dist/session/queue-clone.d.ts.map +1 -0
  283. package/dist/session/queue-clone.js +25 -0
  284. package/dist/session/schemas.cjs +74 -2
  285. package/dist/session/schemas.d.ts +94 -0
  286. package/dist/session/schemas.d.ts.map +1 -1
  287. package/dist/session/schemas.js +69 -2
  288. package/dist/session/session-manager.cjs +107 -123
  289. package/dist/session/session-manager.d.ts +7 -6
  290. package/dist/session/session-manager.d.ts.map +1 -1
  291. package/dist/session/session-manager.js +108 -124
  292. package/dist/session/title-generator.cjs +14 -26
  293. package/dist/session/title-generator.d.ts +4 -6
  294. package/dist/session/title-generator.d.ts.map +1 -1
  295. package/dist/session/title-generator.js +16 -28
  296. package/dist/session/types.cjs +28 -0
  297. package/dist/session/types.d.ts +5 -1
  298. package/dist/session/types.d.ts.map +1 -1
  299. package/dist/session/types.js +19 -0
  300. package/dist/{session/history/factory.cjs → skills/index.cjs} +9 -9
  301. package/dist/skills/index.d.ts +4 -0
  302. package/dist/skills/index.d.ts.map +1 -0
  303. package/dist/skills/index.js +7 -0
  304. package/dist/skills/skill-manager.cjs +76 -0
  305. package/dist/skills/skill-manager.d.ts +13 -0
  306. package/dist/skills/skill-manager.d.ts.map +1 -0
  307. package/dist/skills/skill-manager.js +53 -0
  308. package/dist/skills/types.d.ts +24 -0
  309. package/dist/skills/types.d.ts.map +1 -0
  310. package/dist/skills/workspace-skill-source.cjs +120 -0
  311. package/dist/skills/workspace-skill-source.d.ts +16 -0
  312. package/dist/skills/workspace-skill-source.d.ts.map +1 -0
  313. package/dist/skills/workspace-skill-source.js +97 -0
  314. package/dist/storage/approvals/types.cjs +38 -0
  315. package/dist/storage/approvals/types.d.ts +54 -0
  316. package/dist/storage/approvals/types.d.ts.map +1 -0
  317. package/dist/storage/approvals/types.js +14 -0
  318. package/dist/storage/artifacts/types.d.ts +73 -0
  319. package/dist/storage/artifacts/types.d.ts.map +1 -0
  320. package/dist/storage/conversation/database.cjs +233 -0
  321. package/dist/storage/conversation/database.d.ts +38 -0
  322. package/dist/storage/conversation/database.d.ts.map +1 -0
  323. package/dist/storage/conversation/database.js +210 -0
  324. package/dist/storage/conversation/types.cjs +16 -0
  325. package/dist/storage/conversation/types.d.ts +21 -0
  326. package/dist/storage/conversation/types.d.ts.map +1 -0
  327. package/dist/storage/conversation/types.js +0 -0
  328. package/dist/storage/database/types.d.ts +4 -0
  329. package/dist/storage/database/types.d.ts.map +1 -1
  330. package/dist/storage/error-codes.js +1 -1
  331. package/dist/storage/errors.cjs +6 -6
  332. package/dist/storage/errors.d.ts +2 -2
  333. package/dist/storage/errors.js +7 -7
  334. package/dist/storage/index.cjs +42 -5
  335. package/dist/storage/index.d.ts +19 -8
  336. package/dist/storage/index.d.ts.map +1 -1
  337. package/dist/storage/index.js +39 -4
  338. package/dist/storage/memories/types.cjs +16 -0
  339. package/dist/storage/memories/types.d.ts +17 -0
  340. package/dist/storage/memories/types.d.ts.map +1 -0
  341. package/dist/storage/memories/types.js +0 -0
  342. package/dist/storage/message-queue/types.cjs +16 -0
  343. package/dist/storage/message-queue/types.d.ts +15 -0
  344. package/dist/storage/message-queue/types.d.ts.map +1 -0
  345. package/dist/storage/message-queue/types.js +0 -0
  346. package/dist/storage/prompts/types.cjs +16 -0
  347. package/dist/storage/prompts/types.d.ts +14 -0
  348. package/dist/storage/prompts/types.d.ts.map +1 -0
  349. package/dist/storage/prompts/types.js +0 -0
  350. package/dist/storage/runtime-events/types.cjs +16 -0
  351. package/dist/storage/runtime-events/types.d.ts +19 -0
  352. package/dist/storage/runtime-events/types.d.ts.map +1 -0
  353. package/dist/storage/runtime-events/types.js +0 -0
  354. package/dist/storage/sessions/types.cjs +16 -0
  355. package/dist/storage/sessions/types.d.ts +19 -0
  356. package/dist/storage/sessions/types.d.ts.map +1 -0
  357. package/dist/storage/sessions/types.js +0 -0
  358. package/dist/storage/stores/backend.cjs +702 -0
  359. package/dist/storage/stores/backend.d.ts +303 -0
  360. package/dist/storage/stores/backend.d.ts.map +1 -0
  361. package/dist/storage/stores/backend.js +677 -0
  362. package/dist/storage/stores/in-memory.cjs +510 -0
  363. package/dist/storage/stores/in-memory.d.ts +11 -0
  364. package/dist/storage/stores/in-memory.d.ts.map +1 -0
  365. package/dist/storage/stores/in-memory.js +487 -0
  366. package/dist/storage/stores/types.cjs +16 -0
  367. package/dist/storage/stores/types.d.ts +36 -0
  368. package/dist/storage/stores/types.d.ts.map +1 -0
  369. package/dist/storage/stores/types.js +0 -0
  370. package/dist/storage/tool-executions/types.cjs +127 -0
  371. package/dist/storage/tool-executions/types.d.ts +193 -0
  372. package/dist/storage/tool-executions/types.d.ts.map +1 -0
  373. package/dist/storage/tool-executions/types.js +96 -0
  374. package/dist/storage/tool-preferences/types.cjs +16 -0
  375. package/dist/storage/tool-preferences/types.d.ts +29 -0
  376. package/dist/storage/tool-preferences/types.d.ts.map +1 -0
  377. package/dist/storage/tool-preferences/types.js +0 -0
  378. package/dist/storage/tool-state/types.cjs +16 -0
  379. package/dist/storage/tool-state/types.d.ts +20 -0
  380. package/dist/storage/tool-state/types.d.ts.map +1 -0
  381. package/dist/storage/tool-state/types.js +0 -0
  382. package/dist/storage/workspaces/types.cjs +16 -0
  383. package/dist/storage/workspaces/types.d.ts +19 -0
  384. package/dist/storage/workspaces/types.d.ts.map +1 -0
  385. package/dist/storage/workspaces/types.js +0 -0
  386. package/dist/systemPrompt/contributors.cjs +10 -14
  387. package/dist/systemPrompt/contributors.d.ts +3 -3
  388. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  389. package/dist/systemPrompt/contributors.js +11 -15
  390. package/dist/systemPrompt/error-codes.js +1 -1
  391. package/dist/systemPrompt/errors.js +1 -1
  392. package/dist/systemPrompt/in-built-prompts.js +1 -1
  393. package/dist/systemPrompt/index.js +1 -1
  394. package/dist/systemPrompt/manager.js +1 -1
  395. package/dist/systemPrompt/registry.js +1 -1
  396. package/dist/systemPrompt/schemas.js +1 -1
  397. package/dist/telemetry/decorators.js +1 -1
  398. package/dist/telemetry/error-codes.js +1 -1
  399. package/dist/telemetry/errors.js +1 -1
  400. package/dist/telemetry/exporters.js +1 -1
  401. package/dist/telemetry/index.js +1 -1
  402. package/dist/telemetry/schemas.js +1 -1
  403. package/dist/telemetry/telemetry.js +1 -1
  404. package/dist/telemetry/utils.js +1 -1
  405. package/dist/test-utils/in-memory-storage.cjs +9 -17
  406. package/dist/test-utils/in-memory-storage.js +9 -16
  407. package/dist/test-utils/session-state-stores.cjs +21 -24
  408. package/dist/test-utils/session-state-stores.js +22 -24
  409. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.cjs +1 -1
  410. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.d.ts +2 -2
  411. package/dist/tools/approval/allowed-tools-provider/factory.d.ts.map +1 -0
  412. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.js +2 -2
  413. package/dist/tools/approval/allowed-tools-provider/in-memory.d.ts.map +1 -0
  414. package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.js +1 -1
  415. package/dist/tools/approval/allowed-tools-provider/storage.cjs +66 -0
  416. package/dist/tools/{confirmation → approval}/allowed-tools-provider/storage.d.ts +4 -10
  417. package/dist/tools/approval/allowed-tools-provider/storage.d.ts.map +1 -0
  418. package/dist/tools/approval/allowed-tools-provider/storage.js +43 -0
  419. package/dist/tools/approval/allowed-tools-provider/types.cjs +16 -0
  420. package/dist/tools/approval/allowed-tools-provider/types.d.ts.map +1 -0
  421. package/dist/tools/approval/allowed-tools-provider/types.js +0 -0
  422. package/dist/tools/approval/session-tool-policy.cjs +269 -0
  423. package/dist/tools/approval/session-tool-policy.d.ts +43 -0
  424. package/dist/tools/approval/session-tool-policy.d.ts.map +1 -0
  425. package/dist/tools/approval/session-tool-policy.js +245 -0
  426. package/dist/tools/define-tool.js +1 -1
  427. package/dist/tools/display-types.js +1 -1
  428. package/dist/tools/error-codes.cjs +3 -3
  429. package/dist/tools/error-codes.d.ts +4 -4
  430. package/dist/tools/error-codes.d.ts.map +1 -1
  431. package/dist/tools/error-codes.js +4 -4
  432. package/dist/tools/errors.cjs +12 -12
  433. package/dist/tools/errors.d.ts +6 -6
  434. package/dist/tools/errors.d.ts.map +1 -1
  435. package/dist/tools/errors.js +13 -13
  436. package/dist/tools/index.cjs +3 -0
  437. package/dist/tools/index.d.ts +3 -0
  438. package/dist/tools/index.d.ts.map +1 -1
  439. package/dist/tools/index.js +3 -1
  440. package/dist/tools/pattern-utils.js +1 -1
  441. package/dist/tools/presentation/tool-presentation.cjs +182 -0
  442. package/dist/tools/presentation/tool-presentation.d.ts +51 -0
  443. package/dist/tools/presentation/tool-presentation.d.ts.map +1 -0
  444. package/dist/tools/presentation/tool-presentation.js +159 -0
  445. package/dist/tools/presentation.js +1 -1
  446. package/dist/tools/schemas.cjs +5 -10
  447. package/dist/tools/schemas.d.ts +1 -4
  448. package/dist/tools/schemas.d.ts.map +1 -1
  449. package/dist/tools/schemas.js +6 -11
  450. package/dist/tools/session-tool-preferences-store.cjs +12 -28
  451. package/dist/tools/session-tool-preferences-store.d.ts +4 -7
  452. package/dist/tools/session-tool-preferences-store.d.ts.map +1 -1
  453. package/dist/tools/session-tool-preferences-store.js +12 -29
  454. package/dist/tools/tool-call-metadata.js +1 -1
  455. package/dist/tools/tool-manager.cjs +871 -834
  456. package/dist/tools/tool-manager.d.ts +94 -96
  457. package/dist/tools/tool-manager.d.ts.map +1 -1
  458. package/dist/tools/tool-manager.js +876 -833
  459. package/dist/tools/types.d.ts +10 -14
  460. package/dist/tools/types.d.ts.map +1 -1
  461. package/dist/utils/api-key-resolver.js +1 -1
  462. package/dist/utils/async-context.js +1 -1
  463. package/dist/utils/debug.js +1 -1
  464. package/dist/utils/defer.js +1 -1
  465. package/dist/utils/env.js +1 -1
  466. package/dist/utils/error-conversion.js +1 -1
  467. package/dist/utils/execution-context.js +1 -1
  468. package/dist/utils/fs-walk.js +1 -1
  469. package/dist/utils/path.js +1 -1
  470. package/dist/utils/redactor.js +1 -1
  471. package/dist/utils/result.js +1 -1
  472. package/dist/utils/safe-stringify.js +1 -1
  473. package/dist/utils/schema.js +1 -1
  474. package/dist/utils/service-initializer.cjs +37 -33
  475. package/dist/utils/service-initializer.d.ts +9 -5
  476. package/dist/utils/service-initializer.d.ts.map +1 -1
  477. package/dist/utils/service-initializer.js +38 -34
  478. package/dist/utils/zod-schema-converter.js +1 -1
  479. package/dist/workspace/error-codes.cjs +5 -1
  480. package/dist/workspace/error-codes.d.ts +4 -0
  481. package/dist/workspace/error-codes.d.ts.map +1 -1
  482. package/dist/workspace/error-codes.js +6 -2
  483. package/dist/workspace/errors.cjs +43 -0
  484. package/dist/workspace/errors.d.ts +9 -0
  485. package/dist/workspace/errors.d.ts.map +1 -1
  486. package/dist/workspace/errors.js +44 -1
  487. package/dist/workspace/index.d.ts +1 -1
  488. package/dist/workspace/index.d.ts.map +1 -1
  489. package/dist/workspace/index.js +1 -1
  490. package/dist/workspace/manager.cjs +21 -29
  491. package/dist/workspace/manager.d.ts +6 -6
  492. package/dist/workspace/manager.d.ts.map +1 -1
  493. package/dist/workspace/manager.js +22 -30
  494. package/dist/workspace/types.d.ts +47 -0
  495. package/dist/workspace/types.d.ts.map +1 -1
  496. package/package.json +114 -2
  497. package/dist/approval/session-approval-store.cjs +0 -91
  498. package/dist/approval/session-approval-store.d.ts +0 -37
  499. package/dist/approval/session-approval-store.d.ts.map +0 -1
  500. package/dist/approval/session-approval-store.js +0 -68
  501. package/dist/session/history/database.cjs +0 -232
  502. package/dist/session/history/database.d.ts +0 -41
  503. package/dist/session/history/database.d.ts.map +0 -1
  504. package/dist/session/history/database.js +0 -209
  505. package/dist/session/history/factory.d.ts +0 -11
  506. package/dist/session/history/factory.d.ts.map +0 -1
  507. package/dist/session/history/factory.js +0 -8
  508. package/dist/session/history/memory.d.ts +0 -22
  509. package/dist/session/history/memory.d.ts.map +0 -1
  510. package/dist/session/history/memory.js +0 -34
  511. package/dist/session/history/types.d.ts +0 -26
  512. package/dist/session/history/types.d.ts.map +0 -1
  513. package/dist/session/message-queue-store.cjs +0 -75
  514. package/dist/session/message-queue-store.d.ts +0 -16
  515. package/dist/session/message-queue-store.d.ts.map +0 -1
  516. package/dist/session/message-queue-store.js +0 -52
  517. package/dist/storage/storage-manager.cjs +0 -209
  518. package/dist/storage/storage-manager.d.ts +0 -77
  519. package/dist/storage/storage-manager.d.ts.map +0 -1
  520. package/dist/storage/storage-manager.js +0 -186
  521. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +0 -1
  522. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +0 -1
  523. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +0 -69
  524. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +0 -1
  525. package/dist/tools/confirmation/allowed-tools-provider/storage.js +0 -46
  526. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +0 -1
  527. /package/dist/{session/history → skills}/types.cjs +0 -0
  528. /package/dist/{session/history → skills}/types.js +0 -0
  529. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.cjs +0 -0
  530. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.js +0 -0
  531. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.cjs +0 -0
  532. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.d.ts +0 -0
  533. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/types.d.ts +0 -0
@@ -13,7 +13,7 @@ export declare enum ApprovalErrorCode {
13
13
  APPROVAL_PROVIDER_NOT_CONFIGURED = "approval_provider_not_configured",
14
14
  APPROVAL_PROVIDER_ERROR = "approval_provider_error",
15
15
  APPROVAL_NOT_FOUND = "approval_not_found",
16
- APPROVAL_TOOL_APPROVAL_DENIED = "approval_tool_confirmation_denied",
16
+ APPROVAL_TOOL_APPROVAL_DENIED = "approval_tool_approval_denied",
17
17
  APPROVAL_ELICITATION_DENIED = "approval_elicitation_denied",
18
18
  APPROVAL_ELICITATION_VALIDATION_FAILED = "approval_elicitation_validation_failed",
19
19
  APPROVAL_CONFIG_INVALID = "approval_config_invalid"
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/approval/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,iBAAiB;IAEzB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IAGnD,gBAAgB,qBAAqB;IAGrC,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,gCAAgC,qCAAqC;IACrE,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IAGzC,6BAA6B,sCAAsC;IACnE,2BAA2B,gCAAgC;IAC3D,sCAAsC,2CAA2C;IAGjF,uBAAuB,4BAA4B;CACtD"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/approval/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,iBAAiB;IAEzB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IAGnD,gBAAgB,qBAAqB;IAGrC,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,gCAAgC,qCAAqC;IACrE,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IAGzC,6BAA6B,kCAAkC;IAC/D,2BAA2B,gCAAgC;IAC3D,sCAAsC,2CAA2C;IAGjF,uBAAuB,4BAA4B;CACtD"}
@@ -1,4 +1,4 @@
1
- import "../chunk-PTJYTZNU.js";
1
+ import "../chunk-C6A6W6XS.js";
2
2
  var ApprovalErrorCode = /* @__PURE__ */ ((ApprovalErrorCode2) => {
3
3
  ApprovalErrorCode2["APPROVAL_INVALID_REQUEST"] = "approval_invalid_request";
4
4
  ApprovalErrorCode2["APPROVAL_INVALID_RESPONSE"] = "approval_invalid_response";
@@ -10,7 +10,7 @@ var ApprovalErrorCode = /* @__PURE__ */ ((ApprovalErrorCode2) => {
10
10
  ApprovalErrorCode2["APPROVAL_PROVIDER_NOT_CONFIGURED"] = "approval_provider_not_configured";
11
11
  ApprovalErrorCode2["APPROVAL_PROVIDER_ERROR"] = "approval_provider_error";
12
12
  ApprovalErrorCode2["APPROVAL_NOT_FOUND"] = "approval_not_found";
13
- ApprovalErrorCode2["APPROVAL_TOOL_APPROVAL_DENIED"] = "approval_tool_confirmation_denied";
13
+ ApprovalErrorCode2["APPROVAL_TOOL_APPROVAL_DENIED"] = "approval_tool_approval_denied";
14
14
  ApprovalErrorCode2["APPROVAL_ELICITATION_DENIED"] = "approval_elicitation_denied";
15
15
  ApprovalErrorCode2["APPROVAL_ELICITATION_VALIDATION_FAILED"] = "approval_elicitation_validation_failed";
16
16
  ApprovalErrorCode2["APPROVAL_CONFIG_INVALID"] = "approval_config_invalid";
@@ -206,7 +206,7 @@ class ApprovalError {
206
206
  case "system_denied":
207
207
  message = customMessage ?? `Tool execution denied by system policy: ${toolName}`;
208
208
  suggestions = [
209
- "Tool is in the alwaysDeny list",
209
+ "Tool was blocked by host policy",
210
210
  "Check permissions.toolPolicies in agent configuration"
211
211
  ];
212
212
  break;
@@ -219,10 +219,7 @@ class ApprovalError {
219
219
  break;
220
220
  default:
221
221
  message = customMessage ?? `Tool execution denied: ${toolName}`;
222
- suggestions = [
223
- "Approve the tool in the confirmation dialog",
224
- "Check tool permissions"
225
- ];
222
+ suggestions = ["Approve the tool in the approval dialog", "Check tool permissions"];
226
223
  }
227
224
  const context = {
228
225
  toolName
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/approval/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/approval/errors.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import "../chunk-PTJYTZNU.js";
1
+ import "../chunk-C6A6W6XS.js";
2
2
  import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
3
3
  import { ApprovalErrorCode } from "./error-codes.js";
4
4
  class ApprovalError {
@@ -184,7 +184,7 @@ class ApprovalError {
184
184
  case "system_denied":
185
185
  message = customMessage ?? `Tool execution denied by system policy: ${toolName}`;
186
186
  suggestions = [
187
- "Tool is in the alwaysDeny list",
187
+ "Tool was blocked by host policy",
188
188
  "Check permissions.toolPolicies in agent configuration"
189
189
  ];
190
190
  break;
@@ -197,10 +197,7 @@ class ApprovalError {
197
197
  break;
198
198
  default:
199
199
  message = customMessage ?? `Tool execution denied: ${toolName}`;
200
- suggestions = [
201
- "Approve the tool in the confirmation dialog",
202
- "Check tool permissions"
203
- ];
200
+ suggestions = ["Approve the tool in the approval dialog", "Check tool permissions"];
204
201
  }
205
202
  const context = {
206
203
  toolName
@@ -18,13 +18,27 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var factory_exports = {};
20
20
  __export(factory_exports, {
21
- createApprovalRequest: () => createApprovalRequest
21
+ createApprovalRequest: () => createApprovalRequest,
22
+ createDeterministicApprovalId: () => createDeterministicApprovalId
22
23
  });
23
24
  module.exports = __toCommonJS(factory_exports);
24
25
  var import_crypto = require("crypto");
25
- function createApprovalRequest(details) {
26
+ function createDeterministicApprovalId(key) {
27
+ const hash = (0, import_crypto.createHash)("sha256").update(key).digest("hex");
28
+ const variant = (Number.parseInt(hash.slice(16, 17), 16) & 3 | 8).toString(16);
29
+ const uuidHex = `${hash.slice(0, 12)}5${hash.slice(13, 16)}${variant}${hash.slice(17, 32)}`;
30
+ const approvalId = [
31
+ uuidHex.slice(0, 8),
32
+ uuidHex.slice(8, 12),
33
+ uuidHex.slice(12, 16),
34
+ uuidHex.slice(16, 20),
35
+ uuidHex.slice(20, 32)
36
+ ].join("-");
37
+ return approvalId;
38
+ }
39
+ function createApprovalRequest(details, approvalId = (0, import_crypto.randomUUID)()) {
26
40
  return {
27
- approvalId: (0, import_crypto.randomUUID)(),
41
+ approvalId,
28
42
  type: details.type,
29
43
  sessionId: details.sessionId,
30
44
  hostRuntime: details.hostRuntime,
@@ -35,5 +49,6 @@ function createApprovalRequest(details) {
35
49
  }
36
50
  // Annotate the CommonJS export names for ESM import in node:
37
51
  0 && (module.exports = {
38
- createApprovalRequest
52
+ createApprovalRequest,
53
+ createDeterministicApprovalId
39
54
  });
@@ -1,4 +1,6 @@
1
1
  import type { ApprovalRequest, ApprovalRequestDetails } from './types.js';
2
+ type ApprovalId = ApprovalRequest['approvalId'];
3
+ export declare function createDeterministicApprovalId(key: string): ApprovalId;
2
4
  /**
3
5
  * Factory function to create an approval request with generated ID and timestamp.
4
6
  *
@@ -8,5 +10,6 @@ import type { ApprovalRequest, ApprovalRequestDetails } from './types.js';
8
10
  * @param details - Simplified approval request details without ID and timestamp
9
11
  * @returns A complete ApprovalRequest with generated UUID and current timestamp
10
12
  */
11
- export declare function createApprovalRequest(details: ApprovalRequestDetails): ApprovalRequest;
13
+ export declare function createApprovalRequest(details: ApprovalRequestDetails, approvalId?: ApprovalId): ApprovalRequest;
14
+ export {};
12
15
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/approval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAUtF"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/approval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E,KAAK,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AAEhD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAYrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,sBAAsB,EAC/B,UAAU,GAAE,UAAyB,GACtC,eAAe,CAUjB"}
@@ -1,8 +1,21 @@
1
- import "../chunk-PTJYTZNU.js";
2
- import { randomUUID } from "crypto";
3
- function createApprovalRequest(details) {
1
+ import "../chunk-C6A6W6XS.js";
2
+ import { createHash, randomUUID } from "crypto";
3
+ function createDeterministicApprovalId(key) {
4
+ const hash = createHash("sha256").update(key).digest("hex");
5
+ const variant = (Number.parseInt(hash.slice(16, 17), 16) & 3 | 8).toString(16);
6
+ const uuidHex = `${hash.slice(0, 12)}5${hash.slice(13, 16)}${variant}${hash.slice(17, 32)}`;
7
+ const approvalId = [
8
+ uuidHex.slice(0, 8),
9
+ uuidHex.slice(8, 12),
10
+ uuidHex.slice(12, 16),
11
+ uuidHex.slice(16, 20),
12
+ uuidHex.slice(20, 32)
13
+ ].join("-");
14
+ return approvalId;
15
+ }
16
+ function createApprovalRequest(details, approvalId = randomUUID()) {
4
17
  return {
5
- approvalId: randomUUID(),
18
+ approvalId,
6
19
  type: details.type,
7
20
  sessionId: details.sessionId,
8
21
  hostRuntime: details.hostRuntime,
@@ -12,5 +25,6 @@ function createApprovalRequest(details) {
12
25
  };
13
26
  }
14
27
  export {
15
- createApprovalRequest
28
+ createApprovalRequest,
29
+ createDeterministicApprovalId
16
30
  };
@@ -6,5 +6,5 @@ export { ApprovalErrorCode } from './error-codes.js';
6
6
  export { ApprovalError } from './errors.js';
7
7
  export type { ApprovalValidationContext, ApprovalTimeoutContext, ApprovalCancellationContext, ElicitationValidationContext, } from './errors.js';
8
8
  export { ApprovalManager } from './manager.js';
9
- export type { ApprovalManagerConfig } from './manager.js';
9
+ export type { ApprovalDecisionInput, ApprovalManagerConfig, ApprovalRecordIdentity, ApprovalResponseRecord, } from './manager.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC/B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,GACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACR,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC/B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,GACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACR,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EACR,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACzB,MAAM,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- import "../chunk-PTJYTZNU.js";
1
+ import "../chunk-C6A6W6XS.js";
2
2
  import {
3
3
  APPROVAL_TYPES,
4
4
  APPROVAL_STATUSES,
@@ -33,7 +33,9 @@ __export(manager_exports, {
33
33
  module.exports = __toCommonJS(manager_exports);
34
34
  var import_node_path = __toESM(require("node:path"), 1);
35
35
  var import_node_fs = require("node:fs");
36
+ var import_node_util = require("node:util");
36
37
  var import_types = require("./types.js");
38
+ var import_schemas = require("./schemas.js");
37
39
  var import_factory = require("./factory.js");
38
40
  var import_types2 = require("../logger/v2/types.js");
39
41
  var import_errors = require("./errors.js");
@@ -64,8 +66,8 @@ function tryRealpathSyncWithExistingParent(resolvedPath) {
64
66
  }
65
67
  }
66
68
  class ApprovalManager {
67
- constructor(config, logger, sessionApprovalStore) {
68
- this.sessionApprovalStore = sessionApprovalStore;
69
+ constructor(config, logger, approvalStore) {
70
+ this.approvalStore = approvalStore;
69
71
  this.config = config;
70
72
  this.logger = logger.createChild(import_types2.DextoLogComponent.APPROVAL);
71
73
  this.logger.debug(
@@ -77,6 +79,7 @@ class ApprovalManager {
77
79
  logger;
78
80
  loadedScopes = /* @__PURE__ */ new Set();
79
81
  scopeLocks = /* @__PURE__ */ new Map();
82
+ approvalRecordLocks = /* @__PURE__ */ new Map();
80
83
  scopes = /* @__PURE__ */ new Map();
81
84
  getScopeKey(sessionId) {
82
85
  return sessionId ?? GLOBAL_APPROVAL_SCOPE;
@@ -84,6 +87,9 @@ class ApprovalManager {
84
87
  getScopeLabel(sessionId) {
85
88
  return sessionId ?? "global";
86
89
  }
90
+ sessionScope(sessionId) {
91
+ return sessionId === void 0 ? {} : { sessionId };
92
+ }
87
93
  getApprovalTimeout(type, timeout) {
88
94
  return timeout ?? this.getDefaultTimeout(type);
89
95
  }
@@ -123,6 +129,23 @@ class ApprovalManager {
123
129
  }
124
130
  }
125
131
  }
132
+ async runWithApprovalRecordLock(approvalId, fn) {
133
+ const previousLock = this.approvalRecordLocks.get(approvalId) ?? Promise.resolve();
134
+ const currentResult = previousLock.catch(() => {
135
+ }).then(() => fn());
136
+ const currentLock = currentResult.then(
137
+ () => void 0,
138
+ () => void 0
139
+ );
140
+ this.approvalRecordLocks.set(approvalId, currentLock);
141
+ try {
142
+ return await currentResult;
143
+ } finally {
144
+ if (this.approvalRecordLocks.get(approvalId) === currentLock) {
145
+ this.approvalRecordLocks.delete(approvalId);
146
+ }
147
+ }
148
+ }
126
149
  snapshotToolPatterns(scopeKey) {
127
150
  const snapshot = {};
128
151
  for (const [toolName, patterns] of this.getScope(scopeKey).toolPatterns) {
@@ -144,7 +167,10 @@ class ApprovalManager {
144
167
  toolPatterns: this.snapshotToolPatterns(scopeKey),
145
168
  approvedDirectories: this.snapshotApprovedDirectories(scopeKey)
146
169
  };
147
- await this.sessionApprovalStore.save(sessionId, state);
170
+ await this.approvalStore.saveSessionState({
171
+ ...this.sessionScope(sessionId),
172
+ state
173
+ });
148
174
  }
149
175
  hydrateScope(sessionId, state) {
150
176
  const scopeKey = this.getScopeKey(sessionId);
@@ -170,7 +196,7 @@ class ApprovalManager {
170
196
  if (this.loadedScopes.has(scopeKey)) {
171
197
  return;
172
198
  }
173
- const state = await this.sessionApprovalStore.load(sessionId);
199
+ const state = await this.approvalStore.loadSessionState(this.sessionScope(sessionId));
174
200
  this.hydrateScope(sessionId, state);
175
201
  this.loadedScopes.add(scopeKey);
176
202
  this.logger.debug("Restored persisted approval state", {
@@ -189,7 +215,7 @@ class ApprovalManager {
189
215
  const scopeKey = this.getScopeKey(sessionId);
190
216
  await this.runWithScopeLock(scopeKey, async () => {
191
217
  this.evictSessionState(sessionId);
192
- await this.sessionApprovalStore.delete(sessionId);
218
+ await this.approvalStore.deleteSessionState(this.sessionScope(sessionId));
193
219
  });
194
220
  }
195
221
  // ==================== Pattern Methods ====================
@@ -468,14 +494,71 @@ class ApprovalManager {
468
494
  }
469
495
  return details;
470
496
  }
497
+ withDefaultTimeout(details) {
498
+ return {
499
+ ...details,
500
+ timeout: this.getApprovalTimeout(details.type, details.timeout)
501
+ };
502
+ }
503
+ approvalIdentityKey(identity) {
504
+ return JSON.stringify([
505
+ identity.runId,
506
+ identity.turnId,
507
+ identity.modelStepId,
508
+ identity.toolCallId
509
+ ]);
510
+ }
511
+ assertMatchingRecordedRequest(existing, candidate) {
512
+ const existingComparable = {
513
+ type: existing.type,
514
+ sessionId: existing.sessionId,
515
+ hostRuntime: existing.hostRuntime,
516
+ timeout: existing.timeout,
517
+ metadata: existing.metadata
518
+ };
519
+ const candidateComparable = {
520
+ type: candidate.type,
521
+ sessionId: candidate.sessionId,
522
+ hostRuntime: candidate.hostRuntime,
523
+ timeout: candidate.timeout,
524
+ metadata: candidate.metadata
525
+ };
526
+ if (!(0, import_node_util.isDeepStrictEqual)(existingComparable, candidateComparable)) {
527
+ throw import_errors.ApprovalError.invalidRequest(
528
+ "Approval request conflicts with existing approval request",
529
+ {
530
+ approvalId: existing.approvalId,
531
+ type: existing.type
532
+ }
533
+ );
534
+ }
535
+ }
471
536
  createResponse(request, response) {
472
537
  return {
538
+ status: response.status,
473
539
  approvalId: request.approvalId,
474
540
  ...request.sessionId !== void 0 ? { sessionId: request.sessionId } : {},
475
541
  ...request.hostRuntime !== void 0 ? { hostRuntime: request.hostRuntime } : {},
476
- ...response
542
+ ...response.reason !== void 0 ? { reason: response.reason } : {},
543
+ ...response.message !== void 0 ? { message: response.message } : {},
544
+ ...response.timeoutMs !== void 0 ? { timeoutMs: response.timeoutMs } : {},
545
+ ...response.data !== void 0 ? { data: response.data } : {}
477
546
  };
478
547
  }
548
+ parseResponseForRequest(request, response) {
549
+ switch (request.type) {
550
+ case import_types.ApprovalType.TOOL_APPROVAL:
551
+ return import_schemas.ToolApprovalResponseSchema.parse(response);
552
+ case import_types.ApprovalType.COMMAND_APPROVAL:
553
+ return import_schemas.CommandApprovalResponseSchema.parse(response);
554
+ case import_types.ApprovalType.ELICITATION:
555
+ return import_schemas.ElicitationResponseSchema.parse(response);
556
+ case import_types.ApprovalType.CUSTOM:
557
+ return import_schemas.CustomApprovalResponseSchema.parse(response);
558
+ case import_types.ApprovalType.DIRECTORY_ACCESS:
559
+ return import_schemas.DirectoryAccessResponseSchema.parse(response);
560
+ }
561
+ }
479
562
  getElicitationFormData(response) {
480
563
  if (response.data && typeof response.data === "object" && "formData" in response.data && typeof response.data.formData === "object" && response.data.formData !== null) {
481
564
  return response.data.formData;
@@ -520,7 +603,7 @@ class ApprovalManager {
520
603
  * Request a generic approval
521
604
  */
522
605
  async requestApproval(details) {
523
- const request = (0, import_factory.createApprovalRequest)(details);
606
+ const request = (0, import_factory.createApprovalRequest)(this.withDefaultTimeout(details));
524
607
  if (request.type === import_types.ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
525
608
  throw import_errors.ApprovalError.invalidConfig(
526
609
  "Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
@@ -528,8 +611,77 @@ class ApprovalManager {
528
611
  }
529
612
  return this.handleApproval(request);
530
613
  }
614
+ async recordApprovalRequest(details, identity) {
615
+ if (details.type === import_types.ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
616
+ throw import_errors.ApprovalError.invalidConfig(
617
+ "Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
618
+ );
619
+ }
620
+ const approvalId = (0, import_factory.createDeterministicApprovalId)(this.approvalIdentityKey(identity));
621
+ const request = (0, import_factory.createApprovalRequest)(this.withDefaultTimeout(details), approvalId);
622
+ return this.runWithApprovalRecordLock(approvalId, async () => {
623
+ const existing = await this.approvalStore.getRequest({ approvalId });
624
+ if (existing) {
625
+ this.assertMatchingRecordedRequest(existing, request);
626
+ return existing;
627
+ }
628
+ const recorded = await this.approvalStore.createRequest({ request });
629
+ this.assertMatchingRecordedRequest(recorded, request);
630
+ return recorded;
631
+ });
632
+ }
633
+ async recordApprovalResponse(decision) {
634
+ const record = await this.recordApprovalResponseRecord(decision);
635
+ return record.response;
636
+ }
637
+ async recordApprovalResponseRecord(decision, expectedRequest) {
638
+ return this.runWithApprovalRecordLock(decision.approvalId, async () => {
639
+ const request = await this.approvalStore.getRequest({
640
+ approvalId: decision.approvalId
641
+ });
642
+ if (!request) {
643
+ throw import_errors.ApprovalError.invalidResponse("Approval response has no recorded request", {
644
+ approvalId: decision.approvalId
645
+ });
646
+ }
647
+ if (expectedRequest !== void 0) {
648
+ this.assertMatchingRecordedRequest(request, expectedRequest);
649
+ }
650
+ const response = this.parseResponseForRequest(
651
+ request,
652
+ this.createResponse(request, decision)
653
+ );
654
+ const existing = await this.approvalStore.getResponse({
655
+ approvalId: decision.approvalId
656
+ });
657
+ if (existing) {
658
+ if (!(0, import_node_util.isDeepStrictEqual)(existing, response)) {
659
+ throw import_errors.ApprovalError.invalidResponse(
660
+ "Approval response conflicts with existing approval response",
661
+ {
662
+ approvalId: decision.approvalId
663
+ }
664
+ );
665
+ }
666
+ return { response: existing, status: "replayed" };
667
+ }
668
+ const record = await this.approvalStore.saveResponse({ response });
669
+ if (!(0, import_node_util.isDeepStrictEqual)(record.response, response)) {
670
+ throw import_errors.ApprovalError.invalidResponse(
671
+ "Approval response conflicts with existing approval response",
672
+ {
673
+ approvalId: decision.approvalId
674
+ }
675
+ );
676
+ }
677
+ return record;
678
+ });
679
+ }
680
+ async requestApprovalDecision(request) {
681
+ return this.handleApproval(request);
682
+ }
531
683
  /**
532
- * Handle approval requests (tool approval, elicitation, command confirmation, directory access, custom)
684
+ * Handle approval requests (tool approval, elicitation, command approval, directory access, custom)
533
685
  * @private
534
686
  */
535
687
  async handleApproval(request) {
@@ -549,16 +701,6 @@ class ApprovalManager {
549
701
  status: import_types.ApprovalStatus.APPROVED
550
702
  });
551
703
  }
552
- if (mode === "auto-deny") {
553
- this.logger.info(
554
- `Auto-deny approval '${request.type}', approvalId: ${request.approvalId}`
555
- );
556
- return this.createResponse(request, {
557
- status: import_types.ApprovalStatus.DENIED,
558
- reason: import_types.DenialReason.SYSTEM_DENIED,
559
- message: `Approval automatically denied by system policy (auto-deny mode)`
560
- });
561
- }
562
704
  const handler = this.ensureHandler();
563
705
  this.logger.info(
564
706
  `Manual approval '${request.type}' requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
@@ -570,7 +712,7 @@ class ApprovalManager {
570
712
  * Convenience method for tool execution approval
571
713
  *
572
714
  * TODO: Make sessionId required once all callers are updated to pass it
573
- * Tool confirmations always happen in session context during LLM execution
715
+ * Tool approvals always happen in session context during LLM execution
574
716
  */
575
717
  async requestToolApproval(metadata) {
576
718
  const { sessionId, hostRuntime, timeout, ...toolMetadata } = metadata;
@@ -585,19 +727,19 @@ class ApprovalManager {
585
727
  );
586
728
  }
587
729
  /**
588
- * Request command confirmation approval
730
+ * Request command approval
589
731
  * Convenience method for dangerous command execution within an already-approved tool
590
732
  *
591
733
  * This is different from tool approval - it's for per-command approval
592
734
  * of dangerous operations (like rm, git push) within tools that are already approved.
593
735
  *
594
736
  * TODO: Make sessionId required once all callers are updated to pass it
595
- * Command confirmations always happen during tool execution which has session context
737
+ * Command approvals always happen during tool execution which has session context
596
738
  *
597
739
  * @example
598
740
  * ```typescript
599
741
  * // bash_exec tool is approved, but dangerous commands still require approval
600
- * const response = await manager.requestCommandConfirmation({
742
+ * const response = await manager.requestCommandApproval({
601
743
  * toolName: 'bash_exec',
602
744
  * command: 'rm -rf /important',
603
745
  * originalCommand: 'rm -rf /important',
@@ -605,11 +747,11 @@ class ApprovalManager {
605
747
  * });
606
748
  * ```
607
749
  */
608
- async requestCommandConfirmation(metadata) {
750
+ async requestCommandApproval(metadata) {
609
751
  const { sessionId, hostRuntime, timeout, ...commandMetadata } = metadata;
610
752
  return this.requestApproval(
611
753
  this.createApprovalDetails(
612
- import_types.ApprovalType.COMMAND_CONFIRMATION,
754
+ import_types.ApprovalType.COMMAND_APPROVAL,
613
755
  commandMetadata,
614
756
  sessionId,
615
757
  hostRuntime,
@@ -732,7 +874,7 @@ class ApprovalManager {
732
874
  * Set the approval handler for manual approval mode.
733
875
  *
734
876
  * The handler will be called for:
735
- * - Tool confirmation requests when permissions.mode is 'manual'
877
+ * - Tool approval requests when permissions.mode is 'manual'
736
878
  * - All elicitation requests (when elicitation is enabled, regardless of permissions.mode)
737
879
  *
738
880
  * A handler must be set before processing requests if:
@@ -769,7 +911,7 @@ class ApprovalManager {
769
911
  ensureHandler() {
770
912
  if (!this.handler) {
771
913
  throw import_errors.ApprovalError.invalidConfig(
772
- 'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool approval mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set permissions.mode to "auto-approve" or "auto-deny", or\n \u2022 disable elicitation (set elicitation.enabled: false), or\n \u2022 call agent.setApprovalHandler(...) before processing requests.'
914
+ 'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool approval mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set permissions.mode to "auto-approve", or\n \u2022 disable elicitation (set elicitation.enabled: false), or\n \u2022 call agent.setApprovalHandler(...) before processing requests.'
773
915
  );
774
916
  }
775
917
  return this.handler;