@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
@@ -79,9 +79,9 @@ var import_crypto = require("crypto");
79
79
  var import_events = require("events");
80
80
  var import_zod = require("zod");
81
81
  var import_contributors = require("../systemPrompt/contributors.js");
82
+ var import_skills = require("../skills/index.js");
82
83
  var import_resources = require("../resources/index.js");
83
84
  var import_utils = require("../context/utils.js");
84
- var import_storage = require("../storage/index.js");
85
85
  var import_prompts = require("../prompts/index.js");
86
86
  var import_session = require("../session/index.js");
87
87
  var import_decorators = require("../telemetry/decorators.js");
@@ -153,6 +153,7 @@ let _DextoAgent = class _DextoAgent {
153
153
  systemPromptManager;
154
154
  agentEventBus;
155
155
  promptManager;
156
+ skillManager;
156
157
  stateManager;
157
158
  sessionManager;
158
159
  workspaceManager;
@@ -171,7 +172,7 @@ let _DextoAgent = class _DextoAgent {
171
172
  eventSubscribers = /* @__PURE__ */ new Set();
172
173
  // Telemetry instance for distributed tracing
173
174
  telemetry;
174
- // Approval handler for manual tool confirmation and elicitation
175
+ // Approval handler for manual tool approval and elicitation
175
176
  // Set via setApprovalHandler() before start() if needed
176
177
  approvalHandler;
177
178
  mcpAuthProviderFactory = null;
@@ -182,6 +183,7 @@ let _DextoAgent = class _DextoAgent {
182
183
  toolkitLoader;
183
184
  loadedToolkits = /* @__PURE__ */ new Set();
184
185
  loadingToolkits = /* @__PURE__ */ new Set();
186
+ skillSources;
185
187
  // DI-provided local tools.
186
188
  tools;
187
189
  compactionStrategy;
@@ -231,7 +233,7 @@ let _DextoAgent = class _DextoAgent {
231
233
  constructor(options) {
232
234
  const {
233
235
  logger,
234
- storage,
236
+ stores,
235
237
  tools: toolsInput,
236
238
  hooks: hooksInput,
237
239
  compaction,
@@ -245,21 +247,15 @@ let _DextoAgent = class _DextoAgent {
245
247
  this.tools = tools;
246
248
  this.compactionStrategy = compaction ?? null;
247
249
  const overrides = { ...overridesInput ?? {} };
248
- if (overrides.storageManager === void 0) {
249
- overrides.storageManager = new import_storage.StorageManager(
250
- {
251
- cache: storage.cache,
252
- database: storage.database,
253
- blobStore: storage.blob
254
- },
255
- this.logger
256
- );
250
+ if (overrides.stores === void 0) {
251
+ overrides.stores = stores;
257
252
  }
258
253
  if (overrides.hooks === void 0) {
259
254
  overrides.hooks = hooks;
260
255
  }
261
256
  this.overrides = overrides;
262
257
  this.toolkitLoader = options.toolkitLoader;
258
+ this.skillSources = options.skillSources ?? [];
263
259
  if (overrides.mcpAuthProviderFactory !== void 0) {
264
260
  this.mcpAuthProviderFactory = overrides.mcpAuthProviderFactory;
265
261
  }
@@ -309,7 +305,7 @@ let _DextoAgent = class _DextoAgent {
309
305
  `An approval handler is required but not configured (${reasons.join(" and ")}).
310
306
  Either:
311
307
  \u2022 Call agent.setApprovalHandler() before starting
312
- \u2022 Set permissions: { mode: "auto-approve" } or { mode: "auto-deny" }
308
+ \u2022 Set permissions: { mode: "auto-approve" }
313
309
  \u2022 Disable elicitation: { enabled: false }`
314
310
  );
315
311
  }
@@ -332,23 +328,24 @@ Either:
332
328
  this.resourceManager,
333
329
  this.config,
334
330
  this.agentEventBus,
335
- services.storageManager.getDatabase(),
331
+ services.stores,
336
332
  this.logger
337
333
  );
338
334
  await promptManager.initialize();
339
- Object.assign(this, { promptManager });
340
- const toolExecutionStorage = {
341
- blob: services.storageManager.getBlobStore(),
342
- database: services.storageManager.getDatabase(),
343
- cache: services.storageManager.getCache()
344
- };
335
+ const skillManager = new import_skills.CompositeSkillManager([
336
+ ...this.skillSources,
337
+ new import_skills.WorkspaceSkillSource(services.workspaceManager)
338
+ ]);
339
+ Object.assign(this, { promptManager, skillManager });
345
340
  const toolExecutionServices = {
346
341
  approval: services.approvalManager,
347
342
  search: services.searchService,
348
343
  resources: services.resourceManager,
349
344
  prompts: promptManager,
345
+ skills: skillManager,
350
346
  mcp: services.mcpManager,
351
- taskForker: null
347
+ taskForker: null,
348
+ workspaceManager: services.workspaceManager
352
349
  };
353
350
  services.toolManager.setToolExecutionContextFactory((baseContext) => ({
354
351
  ...baseContext,
@@ -356,7 +353,7 @@ Either:
356
353
  hostRuntime: baseContext.runContext.hostRuntime
357
354
  },
358
355
  agent: this,
359
- storage: toolExecutionStorage,
356
+ toolState: services.stores.getStore("toolState"),
360
357
  services: toolExecutionServices
361
358
  }));
362
359
  const agentTools = this.tools;
@@ -365,7 +362,7 @@ Either:
365
362
  "skills",
366
363
  50,
367
364
  // Priority after memories (40) but before most other content
368
- promptManager,
365
+ skillManager,
369
366
  this.logger
370
367
  );
371
368
  services.systemPromptManager.addContributor(skillsContributor);
@@ -451,13 +448,13 @@ Either:
451
448
  shutdownErrors.push(new Error(`ResourceManager cleanup failed: ${err.message}`));
452
449
  }
453
450
  try {
454
- if (this.services?.storageManager) {
455
- await this.services.storageManager.disconnect();
456
- this.logger.debug("Storage manager disconnected successfully");
451
+ if (this.services?.stores) {
452
+ await this.services.stores.disconnect();
453
+ this.logger.debug("Stores disconnected successfully");
457
454
  }
458
455
  } catch (error) {
459
456
  const err = error instanceof Error ? error : new Error(String(error));
460
- shutdownErrors.push(new Error(`Storage disconnect failed: ${err.message}`));
457
+ shutdownErrors.push(new Error(`Store disconnect failed: ${err.message}`));
461
458
  }
462
459
  this._isStopped = true;
463
460
  this._isStarted = false;
@@ -651,7 +648,7 @@ Either:
651
648
  return {
652
649
  toolName: tc.toolName,
653
650
  args: tc.args,
654
- callId: tc.callId || `tool_${Date.now()}`,
651
+ callId: tc.callId,
655
652
  result: toolResult ? {
656
653
  success: toolResult.success,
657
654
  data: toolResult.sanitized
@@ -743,6 +740,7 @@ Either:
743
740
  let contentParts = typeof content === "string" ? [{ type: "text", text: content }] : [...content];
744
741
  const eventQueue = [];
745
742
  let completed = false;
743
+ let terminalError;
746
744
  let sawFatalErrorEvent = false;
747
745
  let sawRunCompleteEvent = false;
748
746
  const controller = new AbortController();
@@ -817,10 +815,16 @@ Either:
817
815
  eventQueue.push({ name: "llm:tool-result", ...data });
818
816
  };
819
817
  addStreamingListener("llm:tool-result", toolResultListener);
818
+ const retryingListener = (data) => {
819
+ if (data.sessionId !== sessionId) return;
820
+ eventQueue.push({ name: "llm:retrying", ...data });
821
+ };
822
+ addStreamingListener("llm:retrying", retryingListener);
820
823
  const errorListener = (data) => {
821
824
  if (data.sessionId !== sessionId) return;
822
825
  if (data.recoverable !== true) {
823
826
  sawFatalErrorEvent = true;
827
+ terminalError = data.error;
824
828
  }
825
829
  eventQueue.push({ name: "llm:error", ...data });
826
830
  };
@@ -878,6 +882,9 @@ Either:
878
882
  const runCompleteListener = (data) => {
879
883
  if (data.sessionId !== sessionId) return;
880
884
  sawRunCompleteEvent = true;
885
+ if (data.finishReason === "error" && data.error !== void 0) {
886
+ terminalError = data.error;
887
+ }
881
888
  eventQueue.push({ name: "run:complete", ...data });
882
889
  completed = true;
883
890
  };
@@ -1054,6 +1061,7 @@ Either:
1054
1061
  return;
1055
1062
  }
1056
1063
  completed = true;
1064
+ terminalError = error;
1057
1065
  this.logger.error(`Error in DextoAgent.stream: ${error.message}`);
1058
1066
  const errorEvent = {
1059
1067
  name: "llm:error",
@@ -1083,6 +1091,9 @@ Either:
1083
1091
  if (completed) {
1084
1092
  cleanupListeners();
1085
1093
  controller.abort();
1094
+ if (terminalError !== void 0) {
1095
+ throw terminalError;
1096
+ }
1086
1097
  return { done: true, value: void 0 };
1087
1098
  }
1088
1099
  cleanupListeners();
@@ -1110,61 +1121,129 @@ Either:
1110
1121
  return session?.isBusy?.() ?? false;
1111
1122
  }
1112
1123
  /**
1113
- * Queue a message for processing when a session is busy.
1114
- * The message will be injected into the conversation when the current turn completes.
1124
+ * Queue a message as active-turn steer input for a session.
1125
+ * The message is injected at the next executor boundary while the current turn is active.
1115
1126
  *
1116
1127
  * @param sessionId Session id
1117
- * @param message The user message to queue
1128
+ * @param message The user message to use as steer input
1118
1129
  * @returns Queue position and message ID
1119
- * @throws Error if session doesn't support message queueing
1120
1130
  */
1121
- async queueMessage(sessionId, message) {
1131
+ async steer(sessionId, message) {
1132
+ this.ensureStarted();
1133
+ const session = await this.sessionManager.getSession(sessionId, false);
1134
+ if (!session) {
1135
+ throw import_session.SessionError.notFound(sessionId);
1136
+ }
1137
+ return session.steer(message);
1138
+ }
1139
+ /**
1140
+ * Queue a message as follow-up work for a session.
1141
+ * The message is processed only after the active turn would otherwise stop.
1142
+ *
1143
+ * @param sessionId Session id
1144
+ * @param message The user message to queue as follow-up work
1145
+ * @returns Queue position and message ID
1146
+ */
1147
+ async followUp(sessionId, message) {
1148
+ this.ensureStarted();
1149
+ const session = await this.sessionManager.getSession(sessionId, false);
1150
+ if (!session) {
1151
+ throw import_session.SessionError.notFound(sessionId);
1152
+ }
1153
+ return session.followUp(message);
1154
+ }
1155
+ /**
1156
+ * Get all steer messages for a session.
1157
+ * @param sessionId Session id
1158
+ * @returns Array of steer messages
1159
+ */
1160
+ async getSteerMessages(sessionId) {
1161
+ this.ensureStarted();
1162
+ const session = await this.sessionManager.getSession(sessionId, false);
1163
+ if (!session) {
1164
+ throw import_session.SessionError.notFound(sessionId);
1165
+ }
1166
+ return session.getSteerMessages();
1167
+ }
1168
+ /**
1169
+ * Get all follow-up messages for a session.
1170
+ * @param sessionId Session id
1171
+ * @returns Array of follow-up messages
1172
+ */
1173
+ async getFollowUpMessages(sessionId) {
1122
1174
  this.ensureStarted();
1123
1175
  const session = await this.sessionManager.getSession(sessionId, false);
1124
1176
  if (!session) {
1125
1177
  throw import_session.SessionError.notFound(sessionId);
1126
1178
  }
1127
- return session.queueMessage(message);
1179
+ return session.getFollowUpMessages();
1128
1180
  }
1129
1181
  /**
1130
- * Get all queued messages for a session.
1182
+ * Remove a steer message.
1131
1183
  * @param sessionId Session id
1132
- * @returns Array of queued messages
1184
+ * @param messageId The ID of the steer message to remove
1185
+ * @returns true if message was found and removed, false otherwise
1133
1186
  */
1134
- async getQueuedMessages(sessionId) {
1187
+ async removeSteerMessage(sessionId, messageId) {
1135
1188
  this.ensureStarted();
1136
1189
  const session = await this.sessionManager.getSession(sessionId, false);
1137
1190
  if (!session) {
1138
1191
  throw import_session.SessionError.notFound(sessionId);
1139
1192
  }
1140
- return session.getQueuedMessages();
1193
+ return session.removeSteerMessage(messageId);
1141
1194
  }
1142
1195
  /**
1143
- * Remove a queued message.
1196
+ * Remove a follow-up message.
1144
1197
  * @param sessionId Session id
1145
- * @param messageId The ID of the queued message to remove
1198
+ * @param messageId The ID of the follow-up message to remove
1146
1199
  * @returns true if message was found and removed, false otherwise
1147
1200
  */
1148
- async removeQueuedMessage(sessionId, messageId) {
1201
+ async removeFollowUpMessage(sessionId, messageId) {
1202
+ this.ensureStarted();
1203
+ const session = await this.sessionManager.getSession(sessionId, false);
1204
+ if (!session) {
1205
+ throw import_session.SessionError.notFound(sessionId);
1206
+ }
1207
+ return session.removeFollowUpMessage(messageId);
1208
+ }
1209
+ /**
1210
+ * Clear all steer messages for a session.
1211
+ * @param sessionId Session id
1212
+ * @returns Number of messages that were cleared
1213
+ */
1214
+ async clearSteerQueue(sessionId) {
1149
1215
  this.ensureStarted();
1150
1216
  const session = await this.sessionManager.getSession(sessionId, false);
1151
1217
  if (!session) {
1152
1218
  throw import_session.SessionError.notFound(sessionId);
1153
1219
  }
1154
- return session.removeQueuedMessage(messageId);
1220
+ return session.clearSteerQueue();
1155
1221
  }
1156
1222
  /**
1157
- * Clear all queued messages for a session.
1223
+ * Clear all follow-up messages for a session.
1158
1224
  * @param sessionId Session id
1159
1225
  * @returns Number of messages that were cleared
1160
1226
  */
1161
- async clearMessageQueue(sessionId) {
1227
+ async clearFollowUpQueue(sessionId) {
1162
1228
  this.ensureStarted();
1163
1229
  const session = await this.sessionManager.getSession(sessionId, false);
1164
1230
  if (!session) {
1165
1231
  throw import_session.SessionError.notFound(sessionId);
1166
1232
  }
1167
- return session.clearMessageQueue();
1233
+ return session.clearFollowUpQueue();
1234
+ }
1235
+ /**
1236
+ * Clear all pending steer and follow-up input for a session.
1237
+ * @param sessionId Session id
1238
+ * @returns Number of messages that were cleared
1239
+ */
1240
+ async clearPendingInput(sessionId) {
1241
+ this.ensureStarted();
1242
+ const session = await this.sessionManager.getSession(sessionId, false);
1243
+ if (!session) {
1244
+ throw import_session.SessionError.notFound(sessionId);
1245
+ }
1246
+ return session.clearPendingInput();
1168
1247
  }
1169
1248
  /**
1170
1249
  * Cancels the currently running turn for a session.
@@ -1328,6 +1407,16 @@ Either:
1328
1407
  * @returns Promise that resolves to the generated title, or null if generation failed
1329
1408
  */
1330
1409
  async generateSessionTitle(sessionId) {
1410
+ const result = await this.generateSessionTitleDetails(sessionId);
1411
+ return result?.title ?? null;
1412
+ }
1413
+ /**
1414
+ * Generate a title for a session and report whether it came from the LLM or heuristic fallback.
1415
+ *
1416
+ * @param sessionId Session ID to generate title for
1417
+ * @returns Promise that resolves to title details, or null if generation failed
1418
+ */
1419
+ async generateSessionTitleDetails(sessionId) {
1331
1420
  this.ensureStarted();
1332
1421
  const metadata = await this.sessionManager.getSessionMetadata(sessionId);
1333
1422
  if (!metadata) {
@@ -1337,7 +1426,10 @@ Either:
1337
1426
  this.logger.debug(
1338
1427
  `[SessionTitle] Session ${sessionId} already has title '${metadata.title}'`
1339
1428
  );
1340
- return metadata.title;
1429
+ return {
1430
+ source: "existing",
1431
+ title: metadata.title
1432
+ };
1341
1433
  }
1342
1434
  const session = await this.sessionManager.getSession(sessionId);
1343
1435
  if (!session) {
@@ -1355,24 +1447,25 @@ Either:
1355
1447
  return null;
1356
1448
  }
1357
1449
  const llmConfig = this.getEffectiveConfig(sessionId).llm;
1358
- const result = await (0, import_title_generator.generateSessionTitle)(
1359
- llmConfig,
1360
- this.toolManager,
1361
- this.systemPromptManager,
1362
- this.resourceManager,
1363
- userText,
1364
- this.logger,
1365
- {
1366
- ...this.overrides.languageModelFactory !== void 0 && {
1367
- languageModelFactory: this.overrides.languageModelFactory
1368
- }
1450
+ const result = await (0, import_title_generator.generateSessionTitle)(llmConfig, userText, this.logger, {
1451
+ providerContext: { sessionId },
1452
+ ...this.overrides.languageModelFactory !== void 0 && {
1453
+ languageModelFactory: this.overrides.languageModelFactory
1369
1454
  }
1370
- );
1455
+ });
1371
1456
  let title = result.title;
1372
1457
  if (!title) {
1373
1458
  title = (0, import_title_generator.deriveHeuristicTitle)(userText);
1374
1459
  if (title) {
1375
1460
  this.logger.info(`[SessionTitle] Using heuristic title for ${sessionId}: ${title}`);
1461
+ const details = {
1462
+ ...result.error !== void 0 && { reason: result.error },
1463
+ ...result.timedOut !== void 0 && { timedOut: result.timedOut },
1464
+ source: "heuristic",
1465
+ title
1466
+ };
1467
+ await this.sessionManager.setSessionTitle(sessionId, title, { ifUnsetOnly: true });
1468
+ return details;
1376
1469
  } else {
1377
1470
  this.logger.debug(`[SessionTitle] No suitable title derived for ${sessionId}`);
1378
1471
  return null;
@@ -1381,7 +1474,10 @@ Either:
1381
1474
  this.logger.info(`[SessionTitle] Generated LLM title for ${sessionId}: ${title}`);
1382
1475
  }
1383
1476
  await this.sessionManager.setSessionTitle(sessionId, title, { ifUnsetOnly: true });
1384
- return title;
1477
+ return {
1478
+ source: "llm",
1479
+ title
1480
+ };
1385
1481
  }
1386
1482
  /**
1387
1483
  * Gets the conversation history for a specific session.
@@ -2639,11 +2735,10 @@ Either:
2639
2735
  * - Prompt key resolution (resolving aliases)
2640
2736
  * - Argument normalization (including special _context field)
2641
2737
  * - Prompt execution and flattening
2642
- * - Returning per-prompt overrides (allowedTools, model) for the invoker to apply
2643
2738
  *
2644
2739
  * @param name The prompt name or alias
2645
2740
  * @param options Optional configuration for prompt resolution
2646
- * @returns Promise resolving to the resolved text, resource URIs, and optional overrides
2741
+ * @returns Promise resolving to the resolved text and resource URIs.
2647
2742
  */
2648
2743
  async resolvePrompt(name, options = {}) {
2649
2744
  this.ensureStarted();
@@ -2671,7 +2766,7 @@ Either:
2671
2766
  * Set a custom approval handler for manual approval mode.
2672
2767
  *
2673
2768
  * When `permissions.mode` is set to 'manual', an approval handler must be
2674
- * provided to process tool confirmation requests. The handler will be called
2769
+ * provided to process tool approval requests. The handler will be called
2675
2770
  * whenever a tool execution requires user approval.
2676
2771
  *
2677
2772
  * The handler receives an approval request and must return a promise that resolves
@@ -1,13 +1,15 @@
1
1
  import { MCPManager } from '../mcp/manager.js';
2
2
  import { ToolManager } from '../tools/tool-manager.js';
3
3
  import { SystemPromptManager } from '../systemPrompt/manager.js';
4
+ import { type SkillManager } from '../skills/index.js';
4
5
  import { ResourceManager } from '../resources/index.js';
5
6
  import type { InternalMessage } from '../context/types.js';
6
7
  import { PromptManager } from '../prompts/index.js';
7
8
  import type { PromptsConfig } from '../prompts/schemas.js';
8
9
  import { AgentStateManager } from './state-manager.js';
9
10
  import { SessionManager, ChatSession } from '../session/index.js';
10
- import type { SessionMetadata } from '../session/index.js';
11
+ import type { QueuedMessage, SessionMetadata } from '../session/index.js';
12
+ import type { UserMessageInput } from '../session/message-queue.js';
11
13
  import { AgentServices } from '../utils/service-initializer.js';
12
14
  import type { Logger, LogLevel } from '../logger/v2/types.js';
13
15
  import type { McpServerConfig, McpServerStatus, ValidatedMcpServerConfig } from '../mcp/schemas.js';
@@ -30,6 +32,13 @@ import type { SetWorkspaceInput, WorkspaceContext } from '../workspace/types.js'
30
32
  export interface AgentEventSubscriber {
31
33
  subscribe(eventBus: AgentEventBus): void;
32
34
  }
35
+ export type SessionTitleSource = 'existing' | 'llm' | 'heuristic';
36
+ export interface SessionTitleGenerationDetails {
37
+ title: string;
38
+ source: SessionTitleSource;
39
+ reason?: string;
40
+ timedOut?: boolean;
41
+ }
33
42
  /**
34
43
  * The main entry point into Dexto's core functionality.
35
44
  *
@@ -97,6 +106,7 @@ export declare class DextoAgent {
97
106
  readonly systemPromptManager: SystemPromptManager;
98
107
  private readonly agentEventBus;
99
108
  readonly promptManager: PromptManager;
109
+ readonly skillManager: SkillManager;
100
110
  readonly stateManager: AgentStateManager;
101
111
  readonly sessionManager: SessionManager;
102
112
  readonly workspaceManager: WorkspaceManager;
@@ -117,6 +127,7 @@ export declare class DextoAgent {
117
127
  private readonly toolkitLoader;
118
128
  private readonly loadedToolkits;
119
129
  private readonly loadingToolkits;
130
+ private readonly skillSources;
120
131
  private tools;
121
132
  private readonly compactionStrategy;
122
133
  readonly logger: Logger;
@@ -282,38 +293,75 @@ export declare class DextoAgent {
282
293
  */
283
294
  isSessionBusy(sessionId: string): Promise<boolean>;
284
295
  /**
285
- * Queue a message for processing when a session is busy.
286
- * The message will be injected into the conversation when the current turn completes.
296
+ * Queue a message as active-turn steer input for a session.
297
+ * The message is injected at the next executor boundary while the current turn is active.
287
298
  *
288
299
  * @param sessionId Session id
289
- * @param message The user message to queue
300
+ * @param message The user message to use as steer input
290
301
  * @returns Queue position and message ID
291
- * @throws Error if session doesn't support message queueing
292
302
  */
293
- queueMessage(sessionId: string, message: import('../session/message-queue.js').UserMessageInput): Promise<{
303
+ steer(sessionId: string, message: UserMessageInput): Promise<{
294
304
  queued: true;
295
305
  position: number;
296
306
  id: string;
297
307
  }>;
298
308
  /**
299
- * Get all queued messages for a session.
309
+ * Queue a message as follow-up work for a session.
310
+ * The message is processed only after the active turn would otherwise stop.
311
+ *
300
312
  * @param sessionId Session id
301
- * @returns Array of queued messages
313
+ * @param message The user message to queue as follow-up work
314
+ * @returns Queue position and message ID
302
315
  */
303
- getQueuedMessages(sessionId: string): Promise<import('../session/types.js').QueuedMessage[]>;
316
+ followUp(sessionId: string, message: UserMessageInput): Promise<{
317
+ queued: true;
318
+ position: number;
319
+ id: string;
320
+ }>;
304
321
  /**
305
- * Remove a queued message.
322
+ * Get all steer messages for a session.
306
323
  * @param sessionId Session id
307
- * @param messageId The ID of the queued message to remove
324
+ * @returns Array of steer messages
325
+ */
326
+ getSteerMessages(sessionId: string): Promise<QueuedMessage[]>;
327
+ /**
328
+ * Get all follow-up messages for a session.
329
+ * @param sessionId Session id
330
+ * @returns Array of follow-up messages
331
+ */
332
+ getFollowUpMessages(sessionId: string): Promise<QueuedMessage[]>;
333
+ /**
334
+ * Remove a steer message.
335
+ * @param sessionId Session id
336
+ * @param messageId The ID of the steer message to remove
308
337
  * @returns true if message was found and removed, false otherwise
309
338
  */
310
- removeQueuedMessage(sessionId: string, messageId: string): Promise<boolean>;
339
+ removeSteerMessage(sessionId: string, messageId: string): Promise<boolean>;
311
340
  /**
312
- * Clear all queued messages for a session.
341
+ * Remove a follow-up message.
342
+ * @param sessionId Session id
343
+ * @param messageId The ID of the follow-up message to remove
344
+ * @returns true if message was found and removed, false otherwise
345
+ */
346
+ removeFollowUpMessage(sessionId: string, messageId: string): Promise<boolean>;
347
+ /**
348
+ * Clear all steer messages for a session.
349
+ * @param sessionId Session id
350
+ * @returns Number of messages that were cleared
351
+ */
352
+ clearSteerQueue(sessionId: string): Promise<number>;
353
+ /**
354
+ * Clear all follow-up messages for a session.
355
+ * @param sessionId Session id
356
+ * @returns Number of messages that were cleared
357
+ */
358
+ clearFollowUpQueue(sessionId: string): Promise<number>;
359
+ /**
360
+ * Clear all pending steer and follow-up input for a session.
313
361
  * @param sessionId Session id
314
362
  * @returns Number of messages that were cleared
315
363
  */
316
- clearMessageQueue(sessionId: string): Promise<number>;
364
+ clearPendingInput(sessionId: string): Promise<number>;
317
365
  /**
318
366
  * Cancels the currently running turn for a session.
319
367
  * Safe to call even if no run is in progress.
@@ -405,6 +453,13 @@ export declare class DextoAgent {
405
453
  * @returns Promise that resolves to the generated title, or null if generation failed
406
454
  */
407
455
  generateSessionTitle(sessionId: string): Promise<string | null>;
456
+ /**
457
+ * Generate a title for a session and report whether it came from the LLM or heuristic fallback.
458
+ *
459
+ * @param sessionId Session ID to generate title for
460
+ * @returns Promise that resolves to title details, or null if generation failed
461
+ */
462
+ generateSessionTitleDetails(sessionId: string): Promise<SessionTitleGenerationDetails | null>;
408
463
  /**
409
464
  * Gets the conversation history for a specific session.
410
465
  * @param sessionId The session ID
@@ -921,11 +976,10 @@ export declare class DextoAgent {
921
976
  * - Prompt key resolution (resolving aliases)
922
977
  * - Argument normalization (including special _context field)
923
978
  * - Prompt execution and flattening
924
- * - Returning per-prompt overrides (allowedTools, model) for the invoker to apply
925
979
  *
926
980
  * @param name The prompt name or alias
927
981
  * @param options Optional configuration for prompt resolution
928
- * @returns Promise resolving to the resolved text, resource URIs, and optional overrides
982
+ * @returns Promise resolving to the resolved text and resource URIs.
929
983
  */
930
984
  resolvePrompt(name: string, options?: {
931
985
  context?: string;
@@ -943,7 +997,7 @@ export declare class DextoAgent {
943
997
  * Set a custom approval handler for manual approval mode.
944
998
  *
945
999
  * When `permissions.mode` is set to 'manual', an approval handler must be
946
- * provided to process tool confirmation requests. The handler will be called
1000
+ * provided to process tool approval requests. The handler will be called
947
1001
  * whenever a tool execution requires user approval.
948
1002
  *
949
1003
  * The handler receives an approval request and must return a promise that resolves