@trigger.dev/sdk 0.0.0-python-preview-20250226140121 → 0.0.0-rc-4-8-0-20261021151928

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 (732) hide show
  1. package/README.md +29 -9
  2. package/dist/commonjs/imports/ai-runtime-cjs.cjs.map +1 -0
  3. package/dist/commonjs/imports/ai-runtime.d.ts +1 -0
  4. package/dist/commonjs/imports/ai-runtime.js +31 -0
  5. package/dist/commonjs/imports/uncrypto.js +4 -4
  6. package/dist/commonjs/package.json +2 -1
  7. package/dist/commonjs/v3/agentSkillsRuntime.d.ts +28 -0
  8. package/dist/commonjs/v3/agentSkillsRuntime.js +173 -0
  9. package/dist/commonjs/v3/agentSkillsRuntime.js.map +1 -0
  10. package/dist/commonjs/v3/ai-shared.d.ts +156 -0
  11. package/dist/commonjs/v3/ai-shared.js +215 -0
  12. package/dist/commonjs/v3/ai-shared.js.map +1 -0
  13. package/dist/commonjs/v3/ai.d.ts +4225 -0
  14. package/dist/commonjs/v3/ai.js +11569 -0
  15. package/dist/commonjs/v3/ai.js.map +1 -0
  16. package/dist/commonjs/v3/aiAutoTelemetry.d.ts +2 -0
  17. package/dist/commonjs/v3/aiAutoTelemetry.js +81 -0
  18. package/dist/commonjs/v3/aiAutoTelemetry.js.map +1 -0
  19. package/dist/commonjs/v3/auth.d.ts +71 -10
  20. package/dist/commonjs/v3/auth.js +85 -19
  21. package/dist/commonjs/v3/auth.js.map +1 -1
  22. package/dist/commonjs/v3/batch.d.ts +3 -3
  23. package/dist/commonjs/v3/batch.js.map +1 -1
  24. package/dist/commonjs/v3/cache.js.map +1 -1
  25. package/dist/commonjs/v3/chat-client.d.ts +324 -0
  26. package/dist/commonjs/v3/chat-client.js +774 -0
  27. package/dist/commonjs/v3/chat-client.js.map +1 -0
  28. package/dist/commonjs/v3/chat-react.d.ts +244 -0
  29. package/dist/commonjs/v3/chat-react.js +463 -0
  30. package/dist/commonjs/v3/chat-react.js.map +1 -0
  31. package/dist/commonjs/v3/chat-server.d.ts +350 -0
  32. package/dist/commonjs/v3/chat-server.js +965 -0
  33. package/dist/commonjs/v3/chat-server.js.map +1 -0
  34. package/dist/commonjs/v3/chat-tab-coordinator.d.ts +65 -0
  35. package/dist/commonjs/v3/chat-tab-coordinator.js +235 -0
  36. package/dist/commonjs/v3/chat-tab-coordinator.js.map +1 -0
  37. package/dist/commonjs/v3/chat.d.ts +792 -0
  38. package/dist/commonjs/v3/chat.js +1662 -0
  39. package/dist/commonjs/v3/chat.js.map +1 -0
  40. package/dist/commonjs/v3/chatRouteWait.d.ts +21 -0
  41. package/dist/commonjs/v3/chatRouteWait.js +43 -0
  42. package/dist/commonjs/v3/chatRouteWait.js.map +1 -0
  43. package/dist/commonjs/v3/chatSnapshotIo.d.ts +2 -0
  44. package/dist/commonjs/v3/chatSnapshotIo.js +173 -0
  45. package/dist/commonjs/v3/chatSnapshotIo.js.map +1 -0
  46. package/dist/commonjs/v3/chatVersionSkew.d.ts +12 -0
  47. package/dist/commonjs/v3/chatVersionSkew.js +30 -0
  48. package/dist/commonjs/v3/chatVersionSkew.js.map +1 -0
  49. package/dist/commonjs/v3/compactionResponse.d.ts +9 -0
  50. package/dist/commonjs/v3/compactionResponse.js +37 -0
  51. package/dist/commonjs/v3/compactionResponse.js.map +1 -0
  52. package/dist/commonjs/v3/concurrency-shared.d.ts +13 -0
  53. package/dist/commonjs/v3/concurrency-shared.js +35 -0
  54. package/dist/commonjs/v3/concurrency-shared.js.map +1 -0
  55. package/dist/commonjs/v3/concurrencyLimits.d.ts +103 -0
  56. package/dist/commonjs/v3/concurrencyLimits.js +134 -0
  57. package/dist/commonjs/v3/concurrencyLimits.js.map +1 -0
  58. package/dist/commonjs/v3/config.js.map +1 -1
  59. package/dist/commonjs/v3/deployments.d.ts +25 -0
  60. package/dist/commonjs/v3/deployments.js +37 -0
  61. package/dist/commonjs/v3/deployments.js.map +1 -0
  62. package/dist/commonjs/v3/envvars.d.ts +5 -5
  63. package/dist/commonjs/v3/envvars.js.map +1 -1
  64. package/dist/commonjs/v3/externalDeploymentId.d.ts +23 -0
  65. package/dist/commonjs/v3/externalDeploymentId.js +43 -0
  66. package/dist/commonjs/v3/externalDeploymentId.js.map +1 -0
  67. package/dist/commonjs/v3/heartbeats.d.ts +37 -0
  68. package/dist/commonjs/v3/heartbeats.js +45 -0
  69. package/dist/commonjs/v3/heartbeats.js.map +1 -0
  70. package/dist/commonjs/v3/hooks.d.ts +26 -0
  71. package/dist/commonjs/v3/hooks.js +79 -0
  72. package/dist/commonjs/v3/hooks.js.map +1 -0
  73. package/dist/commonjs/v3/idempotencyKeys.d.ts +2 -1
  74. package/dist/commonjs/v3/idempotencyKeys.js +1 -0
  75. package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
  76. package/dist/commonjs/v3/index.d.ts +20 -5
  77. package/dist/commonjs/v3/index.js +56 -20
  78. package/dist/commonjs/v3/index.js.map +1 -1
  79. package/dist/commonjs/v3/locals.d.ts +3 -0
  80. package/dist/commonjs/v3/locals.js +6 -0
  81. package/dist/commonjs/v3/locals.js.map +1 -0
  82. package/dist/commonjs/v3/managedChatResponse.d.ts +44 -0
  83. package/dist/commonjs/v3/managedChatResponse.js +221 -0
  84. package/dist/commonjs/v3/managedChatResponse.js.map +1 -0
  85. package/dist/commonjs/v3/metadata.d.ts +5 -2
  86. package/dist/commonjs/v3/metadata.js +8 -1
  87. package/dist/commonjs/v3/metadata.js.map +1 -1
  88. package/dist/commonjs/v3/modelFileDownload.d.ts +10 -0
  89. package/dist/commonjs/v3/modelFileDownload.js +164 -0
  90. package/dist/commonjs/v3/modelFileDownload.js.map +1 -0
  91. package/dist/commonjs/v3/otel.d.ts +4 -0
  92. package/dist/commonjs/v3/otel.js +12 -0
  93. package/dist/commonjs/v3/otel.js.map +1 -0
  94. package/dist/commonjs/v3/prompt.d.ts +38 -0
  95. package/dist/commonjs/v3/prompt.js +146 -0
  96. package/dist/commonjs/v3/prompt.js.map +1 -0
  97. package/dist/commonjs/v3/promptManagement.d.ts +26 -0
  98. package/dist/commonjs/v3/promptManagement.js +180 -0
  99. package/dist/commonjs/v3/promptManagement.js.map +1 -0
  100. package/dist/commonjs/v3/prompts.d.ts +3 -0
  101. package/dist/commonjs/v3/prompts.js +15 -0
  102. package/dist/commonjs/v3/prompts.js.map +1 -0
  103. package/dist/commonjs/v3/query.d.ts +545 -0
  104. package/dist/commonjs/v3/query.js +163 -0
  105. package/dist/commonjs/v3/query.js.map +1 -0
  106. package/dist/commonjs/v3/queues.d.ts +107 -0
  107. package/dist/commonjs/v3/queues.js +225 -0
  108. package/dist/commonjs/v3/queues.js.map +1 -0
  109. package/dist/commonjs/v3/retry.d.ts +6 -2
  110. package/dist/commonjs/v3/retry.js +34 -23
  111. package/dist/commonjs/v3/retry.js.map +1 -1
  112. package/dist/commonjs/v3/runs.d.ts +182 -101
  113. package/dist/commonjs/v3/runs.js +99 -5
  114. package/dist/commonjs/v3/runs.js.map +1 -1
  115. package/dist/commonjs/v3/schedules/api.d.ts +8 -1
  116. package/dist/commonjs/v3/schedules/index.d.ts +29 -9
  117. package/dist/commonjs/v3/schedules/index.js +5 -1
  118. package/dist/commonjs/v3/schedules/index.js.map +1 -1
  119. package/dist/commonjs/v3/schemas.d.ts +1 -0
  120. package/dist/commonjs/{integrations.js → v3/schemas.js} +1 -1
  121. package/dist/commonjs/v3/schemas.js.map +1 -0
  122. package/dist/commonjs/v3/sessionTracing.d.ts +7 -0
  123. package/dist/commonjs/v3/sessionTracing.js +44 -0
  124. package/dist/commonjs/v3/sessionTracing.js.map +1 -0
  125. package/dist/commonjs/v3/sessions.d.ts +268 -0
  126. package/dist/commonjs/v3/sessions.js +776 -0
  127. package/dist/commonjs/v3/sessions.js.map +1 -0
  128. package/dist/commonjs/v3/shared.d.ts +129 -24
  129. package/dist/commonjs/v3/shared.js +1527 -689
  130. package/dist/commonjs/v3/shared.js.map +1 -1
  131. package/dist/commonjs/v3/skill.d.ts +99 -0
  132. package/dist/commonjs/v3/skill.js +165 -0
  133. package/dist/commonjs/v3/skill.js.map +1 -0
  134. package/dist/commonjs/v3/skills.d.ts +2 -0
  135. package/dist/commonjs/v3/skills.js +6 -0
  136. package/dist/commonjs/v3/skills.js.map +1 -0
  137. package/dist/commonjs/v3/steeringContext.d.ts +41 -0
  138. package/dist/commonjs/v3/steeringContext.js +118 -0
  139. package/dist/commonjs/v3/steeringContext.js.map +1 -0
  140. package/dist/commonjs/v3/streams.d.ts +298 -0
  141. package/dist/commonjs/v3/streams.js +584 -0
  142. package/dist/commonjs/v3/streams.js.map +1 -0
  143. package/dist/commonjs/v3/tasks.d.ts +19 -4
  144. package/dist/commonjs/v3/tasks.js +15 -1
  145. package/dist/commonjs/v3/tasks.js.map +1 -1
  146. package/dist/commonjs/v3/test/index.d.ts +5 -0
  147. package/dist/commonjs/v3/test/index.js +23 -0
  148. package/dist/commonjs/v3/test/index.js.map +1 -0
  149. package/dist/commonjs/v3/test/mock-channel-connector.d.ts +172 -0
  150. package/dist/commonjs/v3/test/mock-channel-connector.js +173 -0
  151. package/dist/commonjs/v3/test/mock-channel-connector.js.map +1 -0
  152. package/dist/commonjs/v3/test/mock-chat-agent.d.ts +388 -0
  153. package/dist/commonjs/v3/test/mock-chat-agent.js +689 -0
  154. package/dist/commonjs/v3/test/mock-chat-agent.js.map +1 -0
  155. package/dist/commonjs/v3/test/setup-catalog.d.ts +1 -0
  156. package/dist/commonjs/v3/test/setup-catalog.js +18 -0
  157. package/dist/commonjs/v3/test/setup-catalog.js.map +1 -0
  158. package/dist/commonjs/v3/test/test-session-handle.d.ts +24 -0
  159. package/dist/commonjs/v3/test/test-session-handle.js +271 -0
  160. package/dist/commonjs/v3/test/test-session-handle.js.map +1 -0
  161. package/dist/commonjs/v3/test/transcript-storage-tests.d.ts +40 -0
  162. package/dist/commonjs/v3/test/transcript-storage-tests.js +258 -0
  163. package/dist/commonjs/v3/test/transcript-storage-tests.js.map +1 -0
  164. package/dist/commonjs/v3/toolResultOrder.d.ts +15 -0
  165. package/dist/commonjs/v3/toolResultOrder.js +58 -0
  166. package/dist/commonjs/v3/toolResultOrder.js.map +1 -0
  167. package/dist/commonjs/v3/transcriptStorage.d.ts +307 -0
  168. package/dist/commonjs/v3/transcriptStorage.js +445 -0
  169. package/dist/commonjs/v3/transcriptStorage.js.map +1 -0
  170. package/dist/commonjs/v3/triggerClient.d.ts +45 -0
  171. package/dist/commonjs/v3/triggerClient.js +114 -0
  172. package/dist/commonjs/v3/triggerClient.js.map +1 -0
  173. package/dist/commonjs/v3/uiMessageChunks.d.ts +1 -0
  174. package/dist/commonjs/v3/uiMessageChunks.js +119 -0
  175. package/dist/commonjs/v3/uiMessageChunks.js.map +1 -0
  176. package/dist/commonjs/v3/usage.js +7 -6
  177. package/dist/commonjs/v3/usage.js.map +1 -1
  178. package/dist/commonjs/v3/wait.d.ts +218 -3
  179. package/dist/commonjs/v3/wait.js +433 -7
  180. package/dist/commonjs/v3/wait.js.map +1 -1
  181. package/dist/commonjs/v3/waitUntil.js.map +1 -1
  182. package/dist/commonjs/v3/webhookWaiters.d.ts +80 -0
  183. package/dist/commonjs/v3/webhookWaiters.js +156 -0
  184. package/dist/commonjs/v3/webhookWaiters.js.map +1 -0
  185. package/dist/commonjs/v3/webhooks.d.ts +192 -2
  186. package/dist/commonjs/v3/webhooks.js +340 -2
  187. package/dist/commonjs/v3/webhooks.js.map +1 -1
  188. package/dist/commonjs/version.js +1 -1
  189. package/dist/esm/imports/ai-runtime.d.ts +2 -0
  190. package/dist/esm/imports/ai-runtime.js +16 -0
  191. package/dist/esm/imports/ai-runtime.js.map +1 -0
  192. package/dist/esm/package.json +2 -1
  193. package/dist/esm/v3/agentSkillsRuntime.d.ts +28 -0
  194. package/dist/esm/v3/agentSkillsRuntime.js +136 -0
  195. package/dist/esm/v3/agentSkillsRuntime.js.map +1 -0
  196. package/dist/esm/v3/ai-shared.d.ts +156 -0
  197. package/dist/esm/v3/ai-shared.js +208 -0
  198. package/dist/esm/v3/ai-shared.js.map +1 -0
  199. package/dist/esm/v3/ai.d.ts +4225 -0
  200. package/dist/esm/v3/ai.js +11550 -0
  201. package/dist/esm/v3/ai.js.map +1 -0
  202. package/dist/esm/v3/aiAutoTelemetry.d.ts +2 -0
  203. package/dist/esm/v3/aiAutoTelemetry.js +78 -0
  204. package/dist/esm/v3/aiAutoTelemetry.js.map +1 -0
  205. package/dist/esm/v3/auth.d.ts +71 -10
  206. package/dist/esm/v3/auth.js +83 -17
  207. package/dist/esm/v3/auth.js.map +1 -1
  208. package/dist/esm/v3/batch.d.ts +3 -3
  209. package/dist/esm/v3/batch.js +2 -2
  210. package/dist/esm/v3/batch.js.map +1 -1
  211. package/dist/esm/v3/chat-client.d.ts +324 -0
  212. package/dist/esm/v3/chat-client.js +769 -0
  213. package/dist/esm/v3/chat-client.js.map +1 -0
  214. package/dist/esm/v3/chat-react.d.ts +244 -0
  215. package/dist/esm/v3/chat-react.js +455 -0
  216. package/dist/esm/v3/chat-react.js.map +1 -0
  217. package/dist/esm/v3/chat-server.d.ts +350 -0
  218. package/dist/esm/v3/chat-server.js +962 -0
  219. package/dist/esm/v3/chat-server.js.map +1 -0
  220. package/dist/esm/v3/chat-tab-coordinator.d.ts +65 -0
  221. package/dist/esm/v3/chat-tab-coordinator.js +231 -0
  222. package/dist/esm/v3/chat-tab-coordinator.js.map +1 -0
  223. package/dist/esm/v3/chat.d.ts +792 -0
  224. package/dist/esm/v3/chat.js +1655 -0
  225. package/dist/esm/v3/chat.js.map +1 -0
  226. package/dist/esm/v3/chatRouteWait.d.ts +21 -0
  227. package/dist/esm/v3/chatRouteWait.js +40 -0
  228. package/dist/esm/v3/chatRouteWait.js.map +1 -0
  229. package/dist/esm/v3/chatSnapshotIo.d.ts +2 -0
  230. package/dist/esm/v3/chatSnapshotIo.js +165 -0
  231. package/dist/esm/v3/chatSnapshotIo.js.map +1 -0
  232. package/dist/esm/v3/chatVersionSkew.d.ts +12 -0
  233. package/dist/esm/v3/chatVersionSkew.js +27 -0
  234. package/dist/esm/v3/chatVersionSkew.js.map +1 -0
  235. package/dist/esm/v3/compactionResponse.d.ts +9 -0
  236. package/dist/esm/v3/compactionResponse.js +34 -0
  237. package/dist/esm/v3/compactionResponse.js.map +1 -0
  238. package/dist/esm/v3/concurrency-shared.d.ts +13 -0
  239. package/dist/esm/v3/concurrency-shared.js +31 -0
  240. package/dist/esm/v3/concurrency-shared.js.map +1 -0
  241. package/dist/esm/v3/concurrencyLimits.d.ts +103 -0
  242. package/dist/esm/v3/concurrencyLimits.js +126 -0
  243. package/dist/esm/v3/concurrencyLimits.js.map +1 -0
  244. package/dist/esm/v3/deployments.d.ts +25 -0
  245. package/dist/esm/v3/deployments.js +34 -0
  246. package/dist/esm/v3/deployments.js.map +1 -0
  247. package/dist/esm/v3/envvars.d.ts +5 -5
  248. package/dist/esm/v3/envvars.js.map +1 -1
  249. package/dist/esm/v3/externalDeploymentId.d.ts +23 -0
  250. package/dist/esm/v3/externalDeploymentId.js +38 -0
  251. package/dist/esm/v3/externalDeploymentId.js.map +1 -0
  252. package/dist/esm/v3/heartbeats.d.ts +37 -0
  253. package/dist/esm/v3/heartbeats.js +42 -0
  254. package/dist/esm/v3/heartbeats.js.map +1 -0
  255. package/dist/esm/v3/hooks.d.ts +26 -0
  256. package/dist/esm/v3/hooks.js +66 -0
  257. package/dist/esm/v3/hooks.js.map +1 -0
  258. package/dist/esm/v3/idempotencyKeys.d.ts +2 -1
  259. package/dist/esm/v3/idempotencyKeys.js +2 -1
  260. package/dist/esm/v3/idempotencyKeys.js.map +1 -1
  261. package/dist/esm/v3/index.d.ts +20 -5
  262. package/dist/esm/v3/index.js +16 -2
  263. package/dist/esm/v3/index.js.map +1 -1
  264. package/dist/esm/v3/locals.d.ts +3 -0
  265. package/dist/esm/v3/locals.js +3 -0
  266. package/dist/esm/v3/locals.js.map +1 -0
  267. package/dist/esm/v3/managedChatResponse.d.ts +44 -0
  268. package/dist/esm/v3/managedChatResponse.js +216 -0
  269. package/dist/esm/v3/managedChatResponse.js.map +1 -0
  270. package/dist/esm/v3/metadata.d.ts +5 -2
  271. package/dist/esm/v3/metadata.js +8 -1
  272. package/dist/esm/v3/metadata.js.map +1 -1
  273. package/dist/esm/v3/modelFileDownload.d.ts +10 -0
  274. package/dist/esm/v3/modelFileDownload.js +161 -0
  275. package/dist/esm/v3/modelFileDownload.js.map +1 -0
  276. package/dist/esm/v3/otel.d.ts +4 -0
  277. package/dist/esm/v3/otel.js +9 -0
  278. package/dist/esm/v3/otel.js.map +1 -0
  279. package/dist/esm/v3/prompt.d.ts +38 -0
  280. package/dist/esm/v3/prompt.js +143 -0
  281. package/dist/esm/v3/prompt.js.map +1 -0
  282. package/dist/esm/v3/promptManagement.d.ts +26 -0
  283. package/dist/esm/v3/promptManagement.js +170 -0
  284. package/dist/esm/v3/promptManagement.js.map +1 -0
  285. package/dist/esm/v3/prompts.d.ts +3 -0
  286. package/dist/esm/v3/prompts.js +3 -0
  287. package/dist/esm/v3/prompts.js.map +1 -0
  288. package/dist/esm/v3/query.d.ts +545 -0
  289. package/dist/esm/v3/query.js +160 -0
  290. package/dist/esm/v3/query.js.map +1 -0
  291. package/dist/esm/v3/queues.d.ts +107 -0
  292. package/dist/esm/v3/queues.js +217 -0
  293. package/dist/esm/v3/queues.js.map +1 -0
  294. package/dist/esm/v3/retry.d.ts +6 -2
  295. package/dist/esm/v3/retry.js +27 -19
  296. package/dist/esm/v3/retry.js.map +1 -1
  297. package/dist/esm/v3/runs.d.ts +179 -98
  298. package/dist/esm/v3/runs.js +99 -5
  299. package/dist/esm/v3/runs.js.map +1 -1
  300. package/dist/esm/v3/schedules/api.d.ts +8 -1
  301. package/dist/esm/v3/schedules/index.d.ts +29 -9
  302. package/dist/esm/v3/schedules/index.js +6 -2
  303. package/dist/esm/v3/schedules/index.js.map +1 -1
  304. package/dist/esm/v3/schemas.d.ts +1 -0
  305. package/dist/esm/v3/schemas.js +2 -0
  306. package/dist/esm/v3/schemas.js.map +1 -0
  307. package/dist/esm/v3/sessionTracing.d.ts +7 -0
  308. package/dist/esm/v3/sessionTracing.js +40 -0
  309. package/dist/esm/v3/sessionTracing.js.map +1 -0
  310. package/dist/esm/v3/sessions.d.ts +268 -0
  311. package/dist/esm/v3/sessions.js +767 -0
  312. package/dist/esm/v3/sessions.js.map +1 -0
  313. package/dist/esm/v3/shared.d.ts +129 -24
  314. package/dist/esm/v3/shared.js +1521 -688
  315. package/dist/esm/v3/shared.js.map +1 -1
  316. package/dist/esm/v3/skill.d.ts +99 -0
  317. package/dist/esm/v3/skill.js +128 -0
  318. package/dist/esm/v3/skill.js.map +1 -0
  319. package/dist/esm/v3/skills.d.ts +2 -0
  320. package/dist/esm/v3/skills.js +2 -0
  321. package/dist/esm/v3/skills.js.map +1 -0
  322. package/dist/esm/v3/steeringContext.d.ts +41 -0
  323. package/dist/esm/v3/steeringContext.js +113 -0
  324. package/dist/esm/v3/steeringContext.js.map +1 -0
  325. package/dist/esm/v3/streams.d.ts +298 -0
  326. package/dist/esm/v3/streams.js +580 -0
  327. package/dist/esm/v3/streams.js.map +1 -0
  328. package/dist/esm/v3/tasks.d.ts +19 -4
  329. package/dist/esm/v3/tasks.js +16 -2
  330. package/dist/esm/v3/tasks.js.map +1 -1
  331. package/dist/esm/v3/test/index.d.ts +5 -0
  332. package/dist/esm/v3/test/index.js +15 -0
  333. package/dist/esm/v3/test/index.js.map +1 -0
  334. package/dist/esm/v3/test/mock-channel-connector.d.ts +172 -0
  335. package/dist/esm/v3/test/mock-channel-connector.js +170 -0
  336. package/dist/esm/v3/test/mock-channel-connector.js.map +1 -0
  337. package/dist/esm/v3/test/mock-chat-agent.d.ts +388 -0
  338. package/dist/esm/v3/test/mock-chat-agent.js +685 -0
  339. package/dist/esm/v3/test/mock-chat-agent.js.map +1 -0
  340. package/dist/esm/v3/test/setup-catalog.d.ts +1 -0
  341. package/dist/esm/v3/test/setup-catalog.js +16 -0
  342. package/dist/esm/v3/test/setup-catalog.js.map +1 -0
  343. package/dist/esm/v3/test/test-session-handle.d.ts +24 -0
  344. package/dist/esm/v3/test/test-session-handle.js +268 -0
  345. package/dist/esm/v3/test/test-session-handle.js.map +1 -0
  346. package/dist/esm/v3/test/transcript-storage-tests.d.ts +40 -0
  347. package/dist/esm/v3/test/transcript-storage-tests.js +255 -0
  348. package/dist/esm/v3/test/transcript-storage-tests.js.map +1 -0
  349. package/dist/esm/v3/toolResultOrder.d.ts +15 -0
  350. package/dist/esm/v3/toolResultOrder.js +55 -0
  351. package/dist/esm/v3/toolResultOrder.js.map +1 -0
  352. package/dist/esm/v3/transcriptStorage.d.ts +307 -0
  353. package/dist/esm/v3/transcriptStorage.js +431 -0
  354. package/dist/esm/v3/transcriptStorage.js.map +1 -0
  355. package/dist/esm/v3/triggerClient.d.ts +45 -0
  356. package/dist/esm/v3/triggerClient.js +77 -0
  357. package/dist/esm/v3/triggerClient.js.map +1 -0
  358. package/dist/esm/v3/uiMessageChunks.d.ts +1 -0
  359. package/dist/esm/v3/uiMessageChunks.js +116 -0
  360. package/dist/esm/v3/uiMessageChunks.js.map +1 -0
  361. package/dist/esm/v3/usage.js +7 -6
  362. package/dist/esm/v3/usage.js.map +1 -1
  363. package/dist/esm/v3/wait.d.ts +218 -3
  364. package/dist/esm/v3/wait.js +431 -7
  365. package/dist/esm/v3/wait.js.map +1 -1
  366. package/dist/esm/v3/webhookWaiters.d.ts +80 -0
  367. package/dist/esm/v3/webhookWaiters.js +149 -0
  368. package/dist/esm/v3/webhookWaiters.js.map +1 -0
  369. package/dist/esm/v3/webhooks.d.ts +192 -2
  370. package/dist/esm/v3/webhooks.js +336 -2
  371. package/dist/esm/v3/webhooks.js.map +1 -1
  372. package/dist/esm/version.js +1 -1
  373. package/docs/ai/observability.mdx +174 -0
  374. package/docs/ai/prompts.mdx +426 -0
  375. package/docs/ai-chat/actions.mdx +148 -0
  376. package/docs/ai-chat/anatomy.mdx +87 -0
  377. package/docs/ai-chat/backend.mdx +933 -0
  378. package/docs/ai-chat/background-injection.mdx +320 -0
  379. package/docs/ai-chat/changelog.mdx +958 -0
  380. package/docs/ai-chat/chat-local.mdx +170 -0
  381. package/docs/ai-chat/client-protocol.mdx +1091 -0
  382. package/docs/ai-chat/compaction.mdx +413 -0
  383. package/docs/ai-chat/custom-agents.mdx +545 -0
  384. package/docs/ai-chat/error-handling.mdx +379 -0
  385. package/docs/ai-chat/fast-starts.mdx +764 -0
  386. package/docs/ai-chat/frontend.mdx +634 -0
  387. package/docs/ai-chat/how-it-works.mdx +226 -0
  388. package/docs/ai-chat/lifecycle-hooks.mdx +532 -0
  389. package/docs/ai-chat/mcp.mdx +97 -0
  390. package/docs/ai-chat/migrating-from-a-route-handler.mdx +594 -0
  391. package/docs/ai-chat/migrating-from-hydrate-messages.mdx +299 -0
  392. package/docs/ai-chat/overview.mdx +86 -0
  393. package/docs/ai-chat/patterns/branching-conversations.mdx +145 -0
  394. package/docs/ai-chat/patterns/code-sandbox.mdx +122 -0
  395. package/docs/ai-chat/patterns/database-persistence.mdx +425 -0
  396. package/docs/ai-chat/patterns/human-in-the-loop.mdx +281 -0
  397. package/docs/ai-chat/patterns/large-payloads.mdx +165 -0
  398. package/docs/ai-chat/patterns/native-compaction.mdx +310 -0
  399. package/docs/ai-chat/patterns/oom-resilience.mdx +116 -0
  400. package/docs/ai-chat/patterns/persistence-and-replay.mdx +218 -0
  401. package/docs/ai-chat/patterns/recovery-boot.mdx +233 -0
  402. package/docs/ai-chat/patterns/redacting-telemetry.mdx +117 -0
  403. package/docs/ai-chat/patterns/skills.mdx +214 -0
  404. package/docs/ai-chat/patterns/sub-agents.mdx +412 -0
  405. package/docs/ai-chat/patterns/tool-result-auditing.mdx +145 -0
  406. package/docs/ai-chat/patterns/trusted-edge-signals.mdx +333 -0
  407. package/docs/ai-chat/patterns/version-upgrades.mdx +261 -0
  408. package/docs/ai-chat/pending-messages.mdx +363 -0
  409. package/docs/ai-chat/prompt-caching.mdx +204 -0
  410. package/docs/ai-chat/quick-start.mdx +163 -0
  411. package/docs/ai-chat/reference.mdx +1071 -0
  412. package/docs/ai-chat/server-chat.mdx +259 -0
  413. package/docs/ai-chat/sessions.mdx +334 -0
  414. package/docs/ai-chat/side-channels.mdx +172 -0
  415. package/docs/ai-chat/testing.mdx +691 -0
  416. package/docs/ai-chat/tools.mdx +192 -0
  417. package/docs/ai-chat/transcript-storage.mdx +247 -0
  418. package/docs/ai-chat/types.mdx +242 -0
  419. package/docs/ai-chat/upgrade-guide.mdx +511 -0
  420. package/docs/apikeys.mdx +170 -0
  421. package/docs/billing-limits.mdx +73 -0
  422. package/docs/building-with-ai.mdx +261 -0
  423. package/docs/bulk-actions.mdx +77 -0
  424. package/docs/changelog.mdx +6 -0
  425. package/docs/cli-deploy-commands.mdx +9 -0
  426. package/docs/cli-dev-commands.mdx +9 -0
  427. package/docs/cli-env-commands.mdx +115 -0
  428. package/docs/cli-init-commands.mdx +84 -0
  429. package/docs/cli-introduction.mdx +25 -0
  430. package/docs/cli-list-profiles-commands.mdx +42 -0
  431. package/docs/cli-login-commands.mdx +53 -0
  432. package/docs/cli-logout-commands.mdx +33 -0
  433. package/docs/cli-preview-archive.mdx +59 -0
  434. package/docs/cli-projects-commands.mdx +74 -0
  435. package/docs/cli-promote-commands.mdx +9 -0
  436. package/docs/cli-runs-commands.mdx +95 -0
  437. package/docs/cli-switch.mdx +43 -0
  438. package/docs/cli-tasks-commands.mdx +95 -0
  439. package/docs/cli-update-commands.mdx +48 -0
  440. package/docs/cli-whoami-commands.mdx +45 -0
  441. package/docs/community.mdx +6 -0
  442. package/docs/concurrency.mdx +416 -0
  443. package/docs/config/config-file.mdx +662 -0
  444. package/docs/config/extensions/additionalFiles.mdx +38 -0
  445. package/docs/config/extensions/additionalPackages.mdx +40 -0
  446. package/docs/config/extensions/aptGet.mdx +34 -0
  447. package/docs/config/extensions/audioWaveform.mdx +23 -0
  448. package/docs/config/extensions/custom.mdx +393 -0
  449. package/docs/config/extensions/emitDecoratorMetadata.mdx +52 -0
  450. package/docs/config/extensions/esbuildPlugin.mdx +31 -0
  451. package/docs/config/extensions/ffmpeg.mdx +45 -0
  452. package/docs/config/extensions/lightpanda.mdx +56 -0
  453. package/docs/config/extensions/overview.mdx +69 -0
  454. package/docs/config/extensions/playwright.mdx +195 -0
  455. package/docs/config/extensions/prismaExtension.mdx +1013 -0
  456. package/docs/config/extensions/puppeteer.mdx +28 -0
  457. package/docs/config/extensions/pythonExtension.mdx +190 -0
  458. package/docs/config/extensions/syncEnvVars.mdx +330 -0
  459. package/docs/context.mdx +235 -0
  460. package/docs/database-connections.mdx +213 -0
  461. package/docs/deploy-environment-variables.mdx +466 -0
  462. package/docs/deployment/atomic-deployment.mdx +470 -0
  463. package/docs/deployment/dev-branches.mdx +92 -0
  464. package/docs/deployment/overview.mdx +260 -0
  465. package/docs/deployment/preview-branches.mdx +227 -0
  466. package/docs/errors-retrying.mdx +383 -0
  467. package/docs/github-actions.mdx +260 -0
  468. package/docs/github-integration.mdx +148 -0
  469. package/docs/github-repo.mdx +8 -0
  470. package/docs/help-email.mdx +6 -0
  471. package/docs/help-slack.mdx +12 -0
  472. package/docs/hidden-tasks.mdx +56 -0
  473. package/docs/how-it-works.mdx +454 -0
  474. package/docs/how-to-reduce-your-spend.mdx +211 -0
  475. package/docs/idempotency.mdx +542 -0
  476. package/docs/introduction.mdx +135 -0
  477. package/docs/limits.mdx +284 -0
  478. package/docs/logging.mdx +195 -0
  479. package/docs/machines.mdx +952 -0
  480. package/docs/manual-setup.mdx +632 -0
  481. package/docs/mcp-agent-rules.mdx +41 -0
  482. package/docs/mcp-introduction.mdx +386 -0
  483. package/docs/mcp-tools.mdx +425 -0
  484. package/docs/migrating-from-v3.mdx +332 -0
  485. package/docs/observability/dashboards.mdx +166 -0
  486. package/docs/observability/query.mdx +614 -0
  487. package/docs/open-source-contributing.mdx +16 -0
  488. package/docs/private-networking/aws-console-setup.mdx +304 -0
  489. package/docs/private-networking/overview.mdx +144 -0
  490. package/docs/private-networking/troubleshooting.mdx +78 -0
  491. package/docs/queues.mdx +271 -0
  492. package/docs/quick-start.mdx +60 -0
  493. package/docs/realtime/auth.mdx +228 -0
  494. package/docs/realtime/backend/input-streams.mdx +159 -0
  495. package/docs/realtime/backend/overview.mdx +45 -0
  496. package/docs/realtime/backend/streams.mdx +433 -0
  497. package/docs/realtime/backend/subscribe.mdx +225 -0
  498. package/docs/realtime/how-it-works.mdx +94 -0
  499. package/docs/realtime/overview.mdx +63 -0
  500. package/docs/realtime/react-hooks/overview.mdx +73 -0
  501. package/docs/realtime/react-hooks/session-stream.mdx +126 -0
  502. package/docs/realtime/react-hooks/streams.mdx +517 -0
  503. package/docs/realtime/react-hooks/subscribe.mdx +690 -0
  504. package/docs/realtime/react-hooks/swr.mdx +87 -0
  505. package/docs/realtime/react-hooks/triggering.mdx +194 -0
  506. package/docs/realtime/react-hooks/use-wait-token.mdx +34 -0
  507. package/docs/realtime/run-object.mdx +197 -0
  508. package/docs/replaying.mdx +97 -0
  509. package/docs/reports.mdx +159 -0
  510. package/docs/request-feature.mdx +6 -0
  511. package/docs/roadmap.mdx +6 -0
  512. package/docs/run-tests.mdx +21 -0
  513. package/docs/run-usage.mdx +113 -0
  514. package/docs/runs/bulk-actions.mdx +183 -0
  515. package/docs/runs/heartbeats.mdx +38 -0
  516. package/docs/runs/list-best-practices.mdx +234 -0
  517. package/docs/runs/max-duration.mdx +143 -0
  518. package/docs/runs/metadata.mdx +731 -0
  519. package/docs/runs/priority.mdx +8 -0
  520. package/docs/runs.mdx +406 -0
  521. package/docs/self-hosting/docker.mdx +512 -0
  522. package/docs/self-hosting/env/supervisor.mdx +78 -0
  523. package/docs/self-hosting/env/webapp.mdx +305 -0
  524. package/docs/self-hosting/kubernetes.mdx +725 -0
  525. package/docs/self-hosting/overview.mdx +145 -0
  526. package/docs/self-hosting/security.mdx +67 -0
  527. package/docs/skills.mdx +85 -0
  528. package/docs/tags.mdx +126 -0
  529. package/docs/tasks/overview.mdx +695 -0
  530. package/docs/tasks/scheduled.mdx +479 -0
  531. package/docs/tasks/schemaTask.mdx +413 -0
  532. package/docs/tasks/streams.mdx +887 -0
  533. package/docs/triggering.mdx +1340 -0
  534. package/docs/troubleshooting-alerts.mdx +607 -0
  535. package/docs/troubleshooting-debugging-in-vscode.mdx +9 -0
  536. package/docs/troubleshooting-github-issues.mdx +6 -0
  537. package/docs/troubleshooting-uptime-status.mdx +7 -0
  538. package/docs/troubleshooting-zod.mdx +158 -0
  539. package/docs/troubleshooting.mdx +414 -0
  540. package/docs/upgrading-packages.mdx +80 -0
  541. package/docs/vercel-integration.mdx +250 -0
  542. package/docs/versioning.mdx +58 -0
  543. package/docs/video-walkthrough.mdx +23 -0
  544. package/docs/wait-for-token.mdx +540 -0
  545. package/docs/wait-for.mdx +42 -0
  546. package/docs/wait-until.mdx +53 -0
  547. package/docs/wait.mdx +18 -0
  548. package/docs/webhooks/channels.mdx +154 -0
  549. package/docs/webhooks/connect.mdx +91 -0
  550. package/docs/webhooks/deliveries.mdx +99 -0
  551. package/docs/webhooks/filters.mdx +146 -0
  552. package/docs/webhooks/human-in-the-loop.mdx +158 -0
  553. package/docs/webhooks/linear.mdx +186 -0
  554. package/docs/webhooks/overview.mdx +115 -0
  555. package/docs/webhooks/session-routing.mdx +141 -0
  556. package/docs/webhooks/slack.mdx +393 -0
  557. package/docs/webhooks/sources.mdx +250 -0
  558. package/docs/webhooks/waiters.mdx +190 -0
  559. package/docs/writing-tasks-introduction.mdx +34 -0
  560. package/package.json +143 -42
  561. package/skills/trigger-authoring-chat-agent/SKILL.md +308 -0
  562. package/skills/trigger-authoring-tasks/SKILL.md +254 -0
  563. package/skills/trigger-chat-agent-advanced/SKILL.md +403 -0
  564. package/skills/trigger-cost-savings/SKILL.md +116 -0
  565. package/skills/trigger-realtime-and-frontend/SKILL.md +276 -0
  566. package/dist/commonjs/apiClient.d.ts +0 -727
  567. package/dist/commonjs/apiClient.js +0 -692
  568. package/dist/commonjs/apiClient.js.map +0 -1
  569. package/dist/commonjs/concurrencyLimit.d.ts +0 -10
  570. package/dist/commonjs/concurrencyLimit.js +0 -17
  571. package/dist/commonjs/concurrencyLimit.js.map +0 -1
  572. package/dist/commonjs/errors.d.ts +0 -66
  573. package/dist/commonjs/errors.js +0 -109
  574. package/dist/commonjs/errors.js.map +0 -1
  575. package/dist/commonjs/httpEndpoint.d.ts +0 -87
  576. package/dist/commonjs/httpEndpoint.js +0 -130
  577. package/dist/commonjs/httpEndpoint.js.map +0 -1
  578. package/dist/commonjs/index.d.ts +0 -23
  579. package/dist/commonjs/index.js +0 -55
  580. package/dist/commonjs/index.js.map +0 -1
  581. package/dist/commonjs/integrations.d.ts +0 -11
  582. package/dist/commonjs/integrations.js.map +0 -1
  583. package/dist/commonjs/io.d.ts +0 -441
  584. package/dist/commonjs/io.js +0 -1165
  585. package/dist/commonjs/io.js.map +0 -1
  586. package/dist/commonjs/ioWithIntegrations.d.ts +0 -4
  587. package/dist/commonjs/ioWithIntegrations.js +0 -32
  588. package/dist/commonjs/ioWithIntegrations.js.map +0 -1
  589. package/dist/commonjs/job.d.ts +0 -96
  590. package/dist/commonjs/job.js +0 -210
  591. package/dist/commonjs/job.js.map +0 -1
  592. package/dist/commonjs/retry.d.ts +0 -20
  593. package/dist/commonjs/retry.js +0 -22
  594. package/dist/commonjs/retry.js.map +0 -1
  595. package/dist/commonjs/runLocalStorage.d.ts +0 -8
  596. package/dist/commonjs/runLocalStorage.js +0 -6
  597. package/dist/commonjs/runLocalStorage.js.map +0 -1
  598. package/dist/commonjs/security.d.ts +0 -18
  599. package/dist/commonjs/security.js +0 -41
  600. package/dist/commonjs/security.js.map +0 -1
  601. package/dist/commonjs/status.d.ts +0 -19
  602. package/dist/commonjs/status.js +0 -38
  603. package/dist/commonjs/status.js.map +0 -1
  604. package/dist/commonjs/store/keyValueStore.d.ts +0 -17
  605. package/dist/commonjs/store/keyValueStore.js +0 -138
  606. package/dist/commonjs/store/keyValueStore.js.map +0 -1
  607. package/dist/commonjs/store/keyValueStoreClient.d.ts +0 -19
  608. package/dist/commonjs/store/keyValueStoreClient.js +0 -65
  609. package/dist/commonjs/store/keyValueStoreClient.js.map +0 -1
  610. package/dist/commonjs/triggerClient.d.ts +0 -290
  611. package/dist/commonjs/triggerClient.js +0 -1366
  612. package/dist/commonjs/triggerClient.js.map +0 -1
  613. package/dist/commonjs/triggers/dynamic.d.ts +0 -56
  614. package/dist/commonjs/triggers/dynamic.js +0 -97
  615. package/dist/commonjs/triggers/dynamic.js.map +0 -1
  616. package/dist/commonjs/triggers/eventTrigger.d.ts +0 -58
  617. package/dist/commonjs/triggers/eventTrigger.js +0 -69
  618. package/dist/commonjs/triggers/eventTrigger.js.map +0 -1
  619. package/dist/commonjs/triggers/externalSource.d.ts +0 -148
  620. package/dist/commonjs/triggers/externalSource.js +0 -106
  621. package/dist/commonjs/triggers/externalSource.js.map +0 -1
  622. package/dist/commonjs/triggers/invokeTrigger.d.ts +0 -39
  623. package/dist/commonjs/triggers/invokeTrigger.js +0 -58
  624. package/dist/commonjs/triggers/invokeTrigger.js.map +0 -1
  625. package/dist/commonjs/triggers/notifications.d.ts +0 -111
  626. package/dist/commonjs/triggers/notifications.js +0 -101
  627. package/dist/commonjs/triggers/notifications.js.map +0 -1
  628. package/dist/commonjs/triggers/scheduled.d.ts +0 -145
  629. package/dist/commonjs/triggers/scheduled.js +0 -208
  630. package/dist/commonjs/triggers/scheduled.js.map +0 -1
  631. package/dist/commonjs/triggers/webhook.d.ts +0 -143
  632. package/dist/commonjs/triggers/webhook.js +0 -133
  633. package/dist/commonjs/triggers/webhook.js.map +0 -1
  634. package/dist/commonjs/typed-emitter.d.ts +0 -37
  635. package/dist/commonjs/typed-emitter.js +0 -3
  636. package/dist/commonjs/typed-emitter.js.map +0 -1
  637. package/dist/commonjs/types.d.ts +0 -204
  638. package/dist/commonjs/types.js +0 -23
  639. package/dist/commonjs/types.js.map +0 -1
  640. package/dist/commonjs/utils/formatSchemaErrors.d.ts +0 -3
  641. package/dist/commonjs/utils/formatSchemaErrors.js +0 -10
  642. package/dist/commonjs/utils/formatSchemaErrors.js.map +0 -1
  643. package/dist/commonjs/utils/typedAsyncLocalStorage.d.ts +0 -6
  644. package/dist/commonjs/utils/typedAsyncLocalStorage.js +0 -18
  645. package/dist/commonjs/utils/typedAsyncLocalStorage.js.map +0 -1
  646. package/dist/commonjs/utils.d.ts +0 -1
  647. package/dist/commonjs/utils.js +0 -11
  648. package/dist/commonjs/utils.js.map +0 -1
  649. package/dist/esm/apiClient.d.ts +0 -727
  650. package/dist/esm/apiClient.js +0 -687
  651. package/dist/esm/apiClient.js.map +0 -1
  652. package/dist/esm/concurrencyLimit.d.ts +0 -10
  653. package/dist/esm/concurrencyLimit.js +0 -13
  654. package/dist/esm/concurrencyLimit.js.map +0 -1
  655. package/dist/esm/errors.d.ts +0 -66
  656. package/dist/esm/errors.js +0 -95
  657. package/dist/esm/errors.js.map +0 -1
  658. package/dist/esm/httpEndpoint.d.ts +0 -87
  659. package/dist/esm/httpEndpoint.js +0 -125
  660. package/dist/esm/httpEndpoint.js.map +0 -1
  661. package/dist/esm/index.d.ts +0 -23
  662. package/dist/esm/index.js +0 -35
  663. package/dist/esm/index.js.map +0 -1
  664. package/dist/esm/integrations.d.ts +0 -11
  665. package/dist/esm/integrations.js +0 -2
  666. package/dist/esm/integrations.js.map +0 -1
  667. package/dist/esm/io.d.ts +0 -441
  668. package/dist/esm/io.js +0 -1159
  669. package/dist/esm/io.js.map +0 -1
  670. package/dist/esm/ioWithIntegrations.d.ts +0 -4
  671. package/dist/esm/ioWithIntegrations.js +0 -29
  672. package/dist/esm/ioWithIntegrations.js.map +0 -1
  673. package/dist/esm/job.d.ts +0 -96
  674. package/dist/esm/job.js +0 -206
  675. package/dist/esm/job.js.map +0 -1
  676. package/dist/esm/retry.d.ts +0 -20
  677. package/dist/esm/retry.js +0 -19
  678. package/dist/esm/retry.js.map +0 -1
  679. package/dist/esm/runLocalStorage.d.ts +0 -8
  680. package/dist/esm/runLocalStorage.js +0 -3
  681. package/dist/esm/runLocalStorage.js.map +0 -1
  682. package/dist/esm/security.d.ts +0 -18
  683. package/dist/esm/security.js +0 -34
  684. package/dist/esm/security.js.map +0 -1
  685. package/dist/esm/status.d.ts +0 -19
  686. package/dist/esm/status.js +0 -34
  687. package/dist/esm/status.js.map +0 -1
  688. package/dist/esm/store/keyValueStore.d.ts +0 -17
  689. package/dist/esm/store/keyValueStore.js +0 -134
  690. package/dist/esm/store/keyValueStore.js.map +0 -1
  691. package/dist/esm/store/keyValueStoreClient.d.ts +0 -19
  692. package/dist/esm/store/keyValueStoreClient.js +0 -61
  693. package/dist/esm/store/keyValueStoreClient.js.map +0 -1
  694. package/dist/esm/triggerClient.d.ts +0 -288
  695. package/dist/esm/triggerClient.js +0 -1359
  696. package/dist/esm/triggerClient.js.map +0 -1
  697. package/dist/esm/triggers/dynamic.d.ts +0 -56
  698. package/dist/esm/triggers/dynamic.js +0 -93
  699. package/dist/esm/triggers/dynamic.js.map +0 -1
  700. package/dist/esm/triggers/eventTrigger.d.ts +0 -58
  701. package/dist/esm/triggers/eventTrigger.js +0 -64
  702. package/dist/esm/triggers/eventTrigger.js.map +0 -1
  703. package/dist/esm/triggers/externalSource.d.ts +0 -148
  704. package/dist/esm/triggers/externalSource.js +0 -100
  705. package/dist/esm/triggers/externalSource.js.map +0 -1
  706. package/dist/esm/triggers/invokeTrigger.d.ts +0 -39
  707. package/dist/esm/triggers/invokeTrigger.js +0 -53
  708. package/dist/esm/triggers/invokeTrigger.js.map +0 -1
  709. package/dist/esm/triggers/notifications.d.ts +0 -111
  710. package/dist/esm/triggers/notifications.js +0 -94
  711. package/dist/esm/triggers/notifications.js.map +0 -1
  712. package/dist/esm/triggers/scheduled.d.ts +0 -145
  713. package/dist/esm/triggers/scheduled.js +0 -197
  714. package/dist/esm/triggers/scheduled.js.map +0 -1
  715. package/dist/esm/triggers/webhook.d.ts +0 -143
  716. package/dist/esm/triggers/webhook.js +0 -128
  717. package/dist/esm/triggers/webhook.js.map +0 -1
  718. package/dist/esm/typed-emitter.d.ts +0 -37
  719. package/dist/esm/typed-emitter.js +0 -2
  720. package/dist/esm/typed-emitter.js.map +0 -1
  721. package/dist/esm/types.d.ts +0 -204
  722. package/dist/esm/types.js +0 -19
  723. package/dist/esm/types.js.map +0 -1
  724. package/dist/esm/utils/formatSchemaErrors.d.ts +0 -3
  725. package/dist/esm/utils/formatSchemaErrors.js +0 -7
  726. package/dist/esm/utils/formatSchemaErrors.js.map +0 -1
  727. package/dist/esm/utils/typedAsyncLocalStorage.d.ts +0 -6
  728. package/dist/esm/utils/typedAsyncLocalStorage.js +0 -14
  729. package/dist/esm/utils/typedAsyncLocalStorage.js.map +0 -1
  730. package/dist/esm/utils.d.ts +0 -1
  731. package/dist/esm/utils.js +0 -8
  732. package/dist/esm/utils.js.map +0 -1
@@ -0,0 +1,685 @@
1
+ import { resourceCatalog, sessionStreams } from "@trigger.dev/core/v3";
2
+ import { runInMockTaskContext } from "@trigger.dev/core/v3/test";
3
+ import { __setSessionCloseImplForTests, __setSessionOpenImplForTests, __setSessionStartImplForTests, } from "../sessions.js";
4
+ import { __resetChatInputRouterForTests, __setReadChatSnapshotImplForTests, __waitForChannelEgressForTests, __setReplaySessionInTailImplForTests, __setReplaySessionOutTailImplForTests, __setWriteChatSnapshotImplForTests, } from "../ai.js";
5
+ import { createTestSessionHandle } from "./test-session-handle.js";
6
+ import { reduceUIMessageChunks } from "../uiMessageChunks.js";
7
+ /**
8
+ * Default `connectorId` used by {@link MockChatAgentHarness.sendChannelEvent}
9
+ * when the caller omits it. Matches the default `id` of
10
+ * {@link recordingChannelConnector}, so a single-connector agent needs no
11
+ * explicit id on either side.
12
+ */
13
+ export const DEFAULT_TEST_CONNECTOR_ID = "test-channel";
14
+ /**
15
+ * Wait for a channel turn's post-completion egress to land. The run loop
16
+ * writes the `trigger:turn-complete` chunk (which unblocks the harness's
17
+ * turn-complete latch) BEFORE it awaits the connector's final `send()` and
18
+ * its done/error reactions, and settles a per-chat latch once those have
19
+ * finished. Awaiting that latch, rather than draining timers, makes the
20
+ * connector's recorded sends and reactions deterministic for any connector
21
+ * latency. A latch that never settles is a runtime bug, so it fails loudly.
22
+ */
23
+ async function settlePostTurnChannelEgress(chatId) {
24
+ let timer;
25
+ const timeout = new Promise((_, reject) => {
26
+ timer = setTimeout(() => reject(new Error(`channel egress for ${chatId} did not settle within 10s`)), 10_000);
27
+ });
28
+ try {
29
+ await Promise.race([__waitForChannelEgressForTests(chatId), timeout]);
30
+ }
31
+ finally {
32
+ clearTimeout(timer);
33
+ }
34
+ }
35
+ const CONTROL_CHUNK_TYPES = new Set(["trigger:turn-complete", "trigger:upgrade-required"]);
36
+ function isControlChunk(chunk) {
37
+ if (typeof chunk !== "object" || chunk === null)
38
+ return false;
39
+ const type = chunk.type;
40
+ return typeof type === "string" && CONTROL_CHUNK_TYPES.has(type);
41
+ }
42
+ /**
43
+ * Highest `session.in` seqNum any harness has produced for a session id,
44
+ * keyed by `sessionId`. Production `session.in` is a durable S2 stream whose
45
+ * seqNums are monotonic across the runs of a chat; a fresh in-memory manager
46
+ * per `mockChatAgent` would otherwise restart at 0, so a continuation's
47
+ * follow-up message would collide with the resume floor and be dropped. This
48
+ * survives the per-run manager reset so continuation runs stay monotonic.
49
+ */
50
+ const durableSessionInSeq = new Map();
51
+ /**
52
+ * Create an offline test harness for a `chat.agent` task.
53
+ *
54
+ * The harness starts the agent's `run()` function in a mocked task context,
55
+ * waits in preload for the first message, then exposes driver methods for
56
+ * sending messages / actions / stop signals and awaiting turn completion.
57
+ *
58
+ * Users are responsible for mocking the language model themselves — use
59
+ * `MockLanguageModelV3` and `simulateReadableStream` from `ai/test` inside
60
+ * their agent's `run()` function (typically via DI through `clientData`).
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import { mockChatAgent } from "@trigger.dev/sdk/ai/test";
65
+ * import { MockLanguageModelV3, simulateReadableStream } from "ai/test";
66
+ * import { myAgent } from "./my-agent";
67
+ *
68
+ * test("says hello", async () => {
69
+ * const harness = mockChatAgent(myAgent, { chatId: "test-1" });
70
+ * try {
71
+ * const turn = await harness.sendMessage({
72
+ * id: "m1",
73
+ * role: "user",
74
+ * parts: [{ type: "text", text: "hi" }],
75
+ * });
76
+ * expect(turn.chunks).toContainEqual(
77
+ * expect.objectContaining({ type: "text-delta", delta: "hello" })
78
+ * );
79
+ * } finally {
80
+ * await harness.close();
81
+ * }
82
+ * });
83
+ * ```
84
+ */
85
+ export function mockChatAgent(agent, options = {}) {
86
+ const chatId = options.chatId ?? "test-chat";
87
+ // The agent opens the session with `payload.sessionId ?? payload.chatId`.
88
+ // We pass no sessionId, so it falls back to chatId.
89
+ const sessionId = chatId;
90
+ // `continuation: true` without an explicit mode auto-selects "continuation"
91
+ // — the canonical shape for a continuation-run boot.
92
+ const mode = options.mode ??
93
+ (options.continuation === true
94
+ ? "continuation"
95
+ : options.preload === false
96
+ ? "submit-message"
97
+ : "preload");
98
+ const clientData = options.clientData;
99
+ const taskEntry = resourceCatalog.getTask(agent.id);
100
+ if (!taskEntry) {
101
+ throw new Error(`mockChatAgent: no task registered with id "${agent.id}". ` +
102
+ `Import "@trigger.dev/sdk/ai/test" before your agent module so tasks register correctly.`);
103
+ }
104
+ const runFn = taskEntry.fns.run;
105
+ // Session .out state: chunks + listener registry. Shared between the
106
+ // harness and the TestSessionOutputChannel installed via the open-override.
107
+ const sessionOutState = {
108
+ chunks: [],
109
+ listeners: new Set(),
110
+ };
111
+ // Buffers that survive across harness method calls
112
+ const allRawChunks = [];
113
+ const allChunks = [];
114
+ // Promise that resolves when the background task run() function returns.
115
+ let taskFinished;
116
+ let sendSessionInput;
117
+ let closeSessionInput;
118
+ let runSignal;
119
+ let channelDeliveryCounter = 0;
120
+ // A latch that resolves every time `trigger:turn-complete` appears on the chat stream.
121
+ // We use a shared pending promise and replace it after each completion.
122
+ let turnCompleteResolvers = [];
123
+ const waitForTurnComplete = () => new Promise((resolve) => {
124
+ turnCompleteResolvers.push(resolve);
125
+ });
126
+ // Signal that the caller is ready to observe output
127
+ let harnessReadyResolve;
128
+ const harnessReady = new Promise((resolve) => {
129
+ harnessReadyResolve = resolve;
130
+ });
131
+ // ── Snapshot read/write override state ───────────────────────────────
132
+ // The runtime's snapshot read returns whatever `seededSnapshot` is at
133
+ // boot time. The runtime's snapshot write captures into
134
+ // `lastWrittenSnapshot` for harness consumers to assert via
135
+ // `getSnapshot()`. Installed below alongside the session overrides;
136
+ // cleared on close in the same finally block.
137
+ let seededSnapshot = options.snapshot;
138
+ let lastWrittenSnapshot;
139
+ let seededReplayChunks = [];
140
+ let seededReplayPartial;
141
+ let seededSessionInTail = [];
142
+ const closeCalls = [];
143
+ let failCloseCalls = 0;
144
+ __resetChatInputRouterForTests();
145
+ __setReadChatSnapshotImplForTests(() => seededSnapshot);
146
+ __setWriteChatSnapshotImplForTests((_id, snapshot) => {
147
+ lastWrittenSnapshot = snapshot;
148
+ });
149
+ // Replay override: install a default that returns whatever
150
+ // `seededReplayChunks` reduces to. `mockChatAgent` doesn't model the
151
+ // settled-vs-partial split — seeded chunks always reduce to the
152
+ // `settled` array with `partial: undefined`. Recovery-specific
153
+ // tests can install their own override to seed a partial.
154
+ // Cleared in the same `finally` block as the other test overrides.
155
+ __setReplaySessionOutTailImplForTests(async () => {
156
+ const settled = seededReplayChunks.length === 0
157
+ ? []
158
+ : (await reduceChunksToMessages(seededReplayChunks));
159
+ // For the mock harness, `partialRaw` is the same as `partial` — we
160
+ // don't model cleanupAbortedParts separately. Recovery tests that
161
+ // need a partialRaw distinct from partial install their own stub.
162
+ return {
163
+ settled,
164
+ partial: seededReplayPartial,
165
+ partialRaw: seededReplayPartial,
166
+ };
167
+ });
168
+ __setReplaySessionInTailImplForTests(async () => {
169
+ const messages = [];
170
+ const channelEvents = [];
171
+ seededSessionInTail.forEach((entry, i) => {
172
+ if ("channelEvent" in entry) {
173
+ channelEvents.push({
174
+ channelEvent: {
175
+ connectorId: entry.channelEvent.connectorId ?? DEFAULT_TEST_CONNECTOR_ID,
176
+ event: entry.channelEvent.event,
177
+ source: entry.channelEvent.source ?? "custom",
178
+ headers: entry.channelEvent.headers ?? {},
179
+ deliveryId: entry.channelEvent.deliveryId ?? `dlv_seeded_${i + 1}`,
180
+ },
181
+ metadata: clientData,
182
+ seqNum: i + 1,
183
+ });
184
+ }
185
+ else {
186
+ messages.push({ message: entry, metadata: clientData, seqNum: i + 1 });
187
+ }
188
+ });
189
+ return { messages, channelEvents };
190
+ });
191
+ // Install the session open override so `sessions.open(id)` returns a
192
+ // SessionHandle with an in-memory `.out` that captures writes. The
193
+ // `.in` channel routes record subscriptions (`on`/`once`/`peek`)
194
+ // through the `sessionStreams` global — the mock task context
195
+ // installs a `TestSessionStreamManager` there — and stubs `wait()`
196
+ // so the suspend path resolves cleanly on `runSignal.abort()` without
197
+ // touching the api client.
198
+ __setSessionOpenImplForTests((id) => createTestSessionHandle(id, sessionOutState, () => runSignal?.signal));
199
+ // Record `sessions.close()` calls instead of reaching the control plane, so
200
+ // a test can assert the agent actually closed the row (and with what reason).
201
+ __setSessionCloseImplForTests((sessionIdOrExternalId, body) => {
202
+ closeCalls.push({
203
+ sessionId: sessionIdOrExternalId,
204
+ ...(body?.reason ? { reason: body.reason } : {}),
205
+ });
206
+ if (failCloseCalls > 0) {
207
+ failCloseCalls--;
208
+ throw new Error("mockChatAgent: sessions.close() failure injected by the test");
209
+ }
210
+ return {
211
+ id: sessionIdOrExternalId,
212
+ externalId: sessionIdOrExternalId,
213
+ closedAt: new Date().toISOString(),
214
+ closedReason: body?.reason ?? null,
215
+ };
216
+ });
217
+ // Install the session start override so any test path that invokes
218
+ // `sessions.start()` (typically through a server action shim like
219
+ // `chat.createStartSessionAction`) becomes a no-op fixture instead of
220
+ // hitting a real API. Most chat.agent tests trigger the run directly
221
+ // via `sendPayloadAndWait` and never go through this path, but the
222
+ // stub keeps the API safe to call from inside tested code.
223
+ __setSessionStartImplForTests((body) => {
224
+ if (process.env.TRIGGER_CHAT_TEST_DEBUG === "1") {
225
+ console.log("[mockChatAgent] sessions.start override:", body);
226
+ }
227
+ const fakeRunId = `run_test_${body.externalId ?? "anon"}`;
228
+ return {
229
+ id: `session_test_${body.externalId ?? "anon"}`,
230
+ externalId: body.externalId ?? null,
231
+ type: body.type,
232
+ taskIdentifier: body.taskIdentifier,
233
+ triggerConfig: body.triggerConfig,
234
+ currentRunId: fakeRunId,
235
+ runId: fakeRunId,
236
+ publicAccessToken: "tr_test_session_pat",
237
+ tags: body.tags ?? [],
238
+ metadata: (body.metadata ?? null),
239
+ closedAt: null,
240
+ closedReason: null,
241
+ expiresAt: null,
242
+ createdAt: new Date(0),
243
+ updatedAt: new Date(0),
244
+ isCached: false,
245
+ };
246
+ });
247
+ taskFinished = runInMockTaskContext(async (drivers) => {
248
+ runSignal = new AbortController();
249
+ // For `mode: "continuation"`, omit `trigger` from the wire payload —
250
+ // mirrors what the server's `ensureRunForSession` / `swapSessionRun`
251
+ // produces (the continuation overrides clear `trigger` so the SDK
252
+ // boot path falls into the continuation-wait branch instead of
253
+ // re-firing the basePayload's stale first-run trigger). `continuation:
254
+ // true` is set unconditionally for this mode so the boot path's
255
+ // continuation-wait condition matches.
256
+ const isContinuationMode = mode === "continuation";
257
+ const initialPayload = {
258
+ chatId,
259
+ ...(isContinuationMode
260
+ ? { trigger: undefined, continuation: true }
261
+ : { trigger: mode }),
262
+ metadata: clientData,
263
+ ...(!isContinuationMode && options.continuation ? { continuation: true } : {}),
264
+ ...(options.previousRunId ? { previousRunId: options.previousRunId } : {}),
265
+ ...(options.headStartMessages ? { headStartMessages: options.headStartMessages } : {}),
266
+ };
267
+ const durableSeq = durableSessionInSeq.get(sessionId);
268
+ if (durableSeq !== undefined) {
269
+ sessionStreams.setLastSeqNum(sessionId, "in", durableSeq);
270
+ }
271
+ const rawSendSessionInput = drivers.sessions.in.send;
272
+ sendSessionInput = async (id, data, io, metadata) => {
273
+ await rawSendSessionInput(id, data, io, metadata);
274
+ const io2 = io ?? "in";
275
+ if (io2 === "in") {
276
+ const latest = sessionStreams.lastSeqNum(id, "in");
277
+ if (latest !== undefined) {
278
+ durableSessionInSeq.set(id, Math.max(durableSessionInSeq.get(id) ?? latest, latest));
279
+ }
280
+ }
281
+ };
282
+ closeSessionInput = drivers.sessions.in.close;
283
+ // Record every chunk written to session.out, detect turn-complete.
284
+ const listener = (chunk) => {
285
+ allRawChunks.push(chunk);
286
+ if (!isControlChunk(chunk)) {
287
+ allChunks.push(chunk);
288
+ }
289
+ if (typeof chunk === "object" &&
290
+ chunk !== null &&
291
+ chunk.type === "trigger:turn-complete") {
292
+ const resolvers = turnCompleteResolvers;
293
+ turnCompleteResolvers = [];
294
+ for (const resolve of resolvers)
295
+ resolve();
296
+ }
297
+ };
298
+ sessionOutState.listeners.add(listener);
299
+ const unsubscribe = () => sessionOutState.listeners.delete(listener);
300
+ if (options.setupLocals) {
301
+ await options.setupLocals({ set: drivers.locals.set });
302
+ }
303
+ harnessReadyResolve();
304
+ try {
305
+ if (process.env.TRIGGER_CHAT_TEST_DEBUG === "1") {
306
+ console.log("[mockChatAgent] Starting runFn with payload:", initialPayload);
307
+ }
308
+ await runFn(initialPayload, {
309
+ ctx: drivers.ctx,
310
+ signal: runSignal.signal,
311
+ });
312
+ if (process.env.TRIGGER_CHAT_TEST_DEBUG === "1") {
313
+ console.log("[mockChatAgent] runFn returned");
314
+ }
315
+ }
316
+ catch (err) {
317
+ if (process.env.TRIGGER_CHAT_TEST_DEBUG === "1") {
318
+ console.log("[mockChatAgent] runFn threw:", err);
319
+ }
320
+ throw err;
321
+ }
322
+ finally {
323
+ unsubscribe();
324
+ // Resolve any outstanding turn-complete waiters so callers don't hang
325
+ const resolvers = turnCompleteResolvers;
326
+ turnCompleteResolvers = [];
327
+ for (const resolve of resolvers)
328
+ resolve();
329
+ }
330
+ }, options.taskContext)
331
+ .catch((err) => {
332
+ // Propagate errors to pending turn waiters instead of dropping them
333
+ const resolvers = turnCompleteResolvers;
334
+ turnCompleteResolvers = [];
335
+ for (const resolve of resolvers)
336
+ resolve();
337
+ throw err;
338
+ })
339
+ .finally(() => {
340
+ // Always clear the test overrides, even if the task threw.
341
+ __setSessionOpenImplForTests(undefined);
342
+ __setSessionStartImplForTests(undefined);
343
+ __setSessionCloseImplForTests(undefined);
344
+ __setReadChatSnapshotImplForTests(undefined);
345
+ __setWriteChatSnapshotImplForTests(undefined);
346
+ __setReplaySessionOutTailImplForTests(undefined);
347
+ __setReplaySessionInTailImplForTests(undefined);
348
+ });
349
+ const sendPayloadAndWait = async (payload) => {
350
+ await harnessReady;
351
+ const before = allRawChunks.length;
352
+ const turnComplete = waitForTurnComplete();
353
+ await sendSessionInput(sessionId, { kind: "message", payload });
354
+ await turnComplete;
355
+ const rawChunks = allRawChunks.slice(before);
356
+ const chunks = rawChunks.filter((c) => !isControlChunk(c));
357
+ return { chunks, rawChunks };
358
+ };
359
+ const harness = {
360
+ chatId,
361
+ async sendMessage(message) {
362
+ return sendPayloadAndWait({
363
+ message,
364
+ chatId,
365
+ trigger: "submit-message",
366
+ metadata: clientData,
367
+ });
368
+ },
369
+ async sendRegenerate() {
370
+ return sendPayloadAndWait({
371
+ chatId,
372
+ trigger: "regenerate-message",
373
+ metadata: clientData,
374
+ });
375
+ },
376
+ async sendHeadStart({ messages }) {
377
+ return sendPayloadAndWait({
378
+ headStartMessages: messages,
379
+ chatId,
380
+ trigger: "handover-prepare",
381
+ metadata: clientData,
382
+ });
383
+ },
384
+ async sendAction(action) {
385
+ return sendPayloadAndWait({
386
+ chatId,
387
+ trigger: "action",
388
+ action,
389
+ metadata: clientData,
390
+ });
391
+ },
392
+ async sendWebhookAction(args) {
393
+ const deliveryId = args.deliveryId ?? `dlv_${++channelDeliveryCounter}`;
394
+ const turn = await sendPayloadAndWait({
395
+ chatId,
396
+ trigger: "action",
397
+ actionSource: "webhook",
398
+ action: {
399
+ type: args.type,
400
+ event: args.event,
401
+ source: args.source ?? "custom",
402
+ headers: args.headers ?? {},
403
+ deliveryId,
404
+ ...(args.externalDeliveryId ? { externalDeliveryId: args.externalDeliveryId } : {}),
405
+ },
406
+ metadata: clientData,
407
+ });
408
+ await settlePostTurnChannelEgress(chatId);
409
+ return turn;
410
+ },
411
+ async sendPendingChannelEvent(args) {
412
+ await harnessReady;
413
+ const seqBefore = sessionStreams.lastSeqNum(chatId, "in") ?? -1;
414
+ const deliveryId = args.deliveryId ?? `dlv_${++channelDeliveryCounter}`;
415
+ await sendSessionInput(sessionId, {
416
+ kind: "message",
417
+ payload: {
418
+ chatId,
419
+ trigger: "submit-message",
420
+ channelEvent: {
421
+ connectorId: args.connectorId ?? DEFAULT_TEST_CONNECTOR_ID,
422
+ event: args.event,
423
+ source: args.source ?? "custom",
424
+ headers: {},
425
+ deliveryId,
426
+ },
427
+ metadata: clientData,
428
+ },
429
+ });
430
+ const deadline = Date.now() + 5_000;
431
+ while ((sessionStreams.lastSeqNum(chatId, "in") ?? -1) <= seqBefore) {
432
+ if (Date.now() > deadline) {
433
+ throw new Error(`sendPendingChannelEvent: ${deliveryId} never landed on session.in`);
434
+ }
435
+ await new Promise((resolve) => setTimeout(resolve, 5));
436
+ }
437
+ },
438
+ async sendPendingMessage(message) {
439
+ await harnessReady;
440
+ const seqBefore = sessionStreams.lastSeqNum(chatId, "in") ?? -1;
441
+ await sendSessionInput(sessionId, {
442
+ kind: "message",
443
+ payload: {
444
+ message,
445
+ chatId,
446
+ trigger: "submit-message",
447
+ metadata: clientData,
448
+ },
449
+ });
450
+ /**
451
+ * Wait for the record to be observable on the channel, not merely for the
452
+ * send call to return. A test that continues on the send alone is racing the
453
+ * append: the message can still be in flight when the step boundary runs, so
454
+ * the injection it was meant to trigger silently does not happen and the test
455
+ * passes while proving nothing.
456
+ */
457
+ const deadline = Date.now() + 5_000;
458
+ while ((sessionStreams.lastSeqNum(chatId, "in") ?? -1) <= seqBefore) {
459
+ if (Date.now() > deadline) {
460
+ throw new Error(`sendPendingMessage: append for ${message.id} never landed on session.in`);
461
+ }
462
+ await new Promise((resolve) => setTimeout(resolve, 5));
463
+ }
464
+ },
465
+ async sendChannelEvent(args) {
466
+ const deliveryId = args.deliveryId ?? `dlv_${++channelDeliveryCounter}`;
467
+ const turn = await sendPayloadAndWait({
468
+ chatId,
469
+ trigger: "submit-message",
470
+ channelEvent: {
471
+ connectorId: args.connectorId ?? DEFAULT_TEST_CONNECTOR_ID,
472
+ event: args.event,
473
+ source: args.source ?? "custom",
474
+ headers: args.headers ?? {},
475
+ deliveryId,
476
+ ...(args.externalDeliveryId ? { externalDeliveryId: args.externalDeliveryId } : {}),
477
+ },
478
+ metadata: clientData,
479
+ });
480
+ await settlePostTurnChannelEgress(chatId);
481
+ return turn;
482
+ },
483
+ async deliverChannelEvent(args) {
484
+ const deliveryId = args.deliveryId ?? `dlv_${++channelDeliveryCounter}`;
485
+ await sendPayloadAndWait({
486
+ chatId,
487
+ trigger: "submit-message",
488
+ channelEvent: {
489
+ connectorId: args.connectorId ?? DEFAULT_TEST_CONNECTOR_ID,
490
+ event: args.event,
491
+ source: args.source ?? "custom",
492
+ headers: args.headers ?? {},
493
+ deliveryId,
494
+ ...(args.externalDeliveryId ? { externalDeliveryId: args.externalDeliveryId } : {}),
495
+ },
496
+ metadata: clientData,
497
+ });
498
+ await settlePostTurnChannelEgress(chatId);
499
+ },
500
+ async sendStop(message) {
501
+ await harnessReady;
502
+ await sendSessionInput(sessionId, { kind: "stop", message });
503
+ },
504
+ async sendHandover(args) {
505
+ await harnessReady;
506
+ const before = allRawChunks.length;
507
+ const turnComplete = waitForTurnComplete();
508
+ await sendSessionInput(sessionId, {
509
+ kind: "handover",
510
+ partialAssistantMessage: args.partialAssistantMessage,
511
+ messageId: args.messageId,
512
+ isFinal: args.isFinal ?? false,
513
+ });
514
+ await turnComplete;
515
+ const rawChunks = allRawChunks.slice(before);
516
+ const chunks = rawChunks.filter((c) => !isControlChunk(c));
517
+ return { chunks, rawChunks };
518
+ },
519
+ async sendHandoverSkip() {
520
+ await harnessReady;
521
+ // No turn-complete on skip — the agent exits without firing hooks.
522
+ // Send the chunk and wait for the run to finish.
523
+ await sendSessionInput(sessionId, { kind: "handover-skip" });
524
+ await Promise.race([
525
+ taskFinished.catch(() => { }),
526
+ new Promise((resolve) => setTimeout(resolve, 1000)),
527
+ ]);
528
+ },
529
+ async sendClose() {
530
+ await harnessReady;
531
+ await sendSessionInput(sessionId, {
532
+ kind: "message",
533
+ payload: {
534
+ chatId,
535
+ trigger: "close",
536
+ },
537
+ });
538
+ await harness.waitForExit();
539
+ },
540
+ async waitForExit(timeoutMs = 2000) {
541
+ let timer;
542
+ const timedOut = new Promise((resolve) => {
543
+ timer = setTimeout(() => resolve("timeout"), timeoutMs);
544
+ });
545
+ try {
546
+ const result = await Promise.race([taskFinished.catch(() => "done"), timedOut]);
547
+ if (result === "timeout") {
548
+ throw new Error(`mockChatAgent: run did not exit within ${timeoutMs}ms`);
549
+ }
550
+ }
551
+ finally {
552
+ if (timer)
553
+ clearTimeout(timer);
554
+ }
555
+ },
556
+ getCloseCalls() {
557
+ return [...closeCalls];
558
+ },
559
+ failNextCloseCalls(count) {
560
+ failCloseCalls = count;
561
+ },
562
+ seedSnapshot(snapshot) {
563
+ seededSnapshot = snapshot;
564
+ },
565
+ seedSessionOutTail(chunks) {
566
+ seededReplayChunks = chunks ?? [];
567
+ },
568
+ seedSessionOutPartial(partial) {
569
+ seededReplayPartial = partial;
570
+ },
571
+ seedSessionInTail(entries) {
572
+ seededSessionInTail = entries;
573
+ // The seeded tail occupies seqNums 1..n of the channel, so anything sent
574
+ // live afterwards has to continue above it.
575
+ if (entries.length > 0) {
576
+ sessionStreams.setLastSeqNum(sessionId, "in", entries.length);
577
+ }
578
+ },
579
+ async deliverSessionInAtSeq(message, seqNum) {
580
+ await harnessReady;
581
+ await sendSessionInput(sessionId, { kind: "message", payload: { chatId, trigger: "submit-message", message } }, "in", { seqNum });
582
+ },
583
+ getSnapshot() {
584
+ return lastWrittenSnapshot;
585
+ },
586
+ async close() {
587
+ await harnessReady;
588
+ // Send a close trigger wrapped as a `kind: "message"` ChatInputChunk.
589
+ // The turn loop checks for this after a successful turn and exits
590
+ // cleanly. On error-recovery paths the loop just loops back with
591
+ // the close payload, so we also close the session input below to
592
+ // unblock any pending once() waiters.
593
+ try {
594
+ await sendSessionInput(sessionId, {
595
+ kind: "message",
596
+ payload: {
597
+ chatId,
598
+ trigger: "close",
599
+ },
600
+ });
601
+ }
602
+ catch {
603
+ // best-effort
604
+ }
605
+ // Resolve any pending once() waiters on the session input with a
606
+ // timeout error — that makes waitWithIdleTimeout return
607
+ // `{ ok: false }` and the turn loop exits cleanly.
608
+ closeSessionInput?.(sessionId);
609
+ // Also abort the run signal so anything downstream (streamText,
610
+ // deferred work) unwinds promptly.
611
+ runSignal?.abort("close");
612
+ // Wait for run() to return. The loop's error recovery path will
613
+ // see !next.ok and exit. Use a bounded wait so tests never hang.
614
+ await Promise.race([
615
+ taskFinished.catch(() => { }),
616
+ new Promise((resolve) => setTimeout(resolve, 1000)),
617
+ ]);
618
+ },
619
+ get allChunks() {
620
+ return allChunks.slice();
621
+ },
622
+ get allRawChunks() {
623
+ return allRawChunks.slice();
624
+ },
625
+ };
626
+ return harness;
627
+ }
628
+ /**
629
+ * Reduce a synthetic UIMessageChunk[] sequence into the UIMessage[] that
630
+ * the runtime's `replaySessionOutTail` would produce. Splits chunks at
631
+ * `start` boundaries and reduces each segment with
632
+ * `reduceUIMessageChunks`. The trailing un-finished segment goes through
633
+ * `cleanupAbortedParts`. Mirrors the production reducer used in
634
+ * `ai.ts:replaySessionOutTail`.
635
+ */
636
+ async function reduceChunksToMessages(chunks) {
637
+ if (chunks.length === 0)
638
+ return [];
639
+ const aiModule = (await import("ai"));
640
+ const cleanupAbortedParts = aiModule.cleanupAbortedParts;
641
+ const segments = [];
642
+ let current;
643
+ for (const chunk of chunks) {
644
+ if (chunk.type === "start") {
645
+ current = { chunks: [chunk], closed: false };
646
+ segments.push(current);
647
+ continue;
648
+ }
649
+ if (!current) {
650
+ current = { chunks: [], closed: false };
651
+ segments.push(current);
652
+ }
653
+ current.chunks.push(chunk);
654
+ if (chunk.type === "finish") {
655
+ current.closed = true;
656
+ current = undefined;
657
+ }
658
+ }
659
+ const out = [];
660
+ for (let i = 0; i < segments.length; i++) {
661
+ const seg = segments[i];
662
+ const isTrailing = i === segments.length - 1 && !seg.closed;
663
+ let last;
664
+ try {
665
+ last = await reduceUIMessageChunks(seg.chunks);
666
+ }
667
+ catch {
668
+ // Skip malformed segment — tests can assert by inspecting what makes it through.
669
+ continue;
670
+ }
671
+ if (!last)
672
+ continue;
673
+ if (isTrailing && cleanupAbortedParts) {
674
+ const cleaned = cleanupAbortedParts(last);
675
+ if (!cleaned.parts || cleaned.parts.length === 0)
676
+ continue;
677
+ out.push(cleaned);
678
+ }
679
+ else {
680
+ out.push(last);
681
+ }
682
+ }
683
+ return out;
684
+ }
685
+ //# sourceMappingURL=mock-chat-agent.js.map