@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,774 @@
1
+ "use strict";
2
+ /**
3
+ * Server-side API for chatting with Trigger.dev agents.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { AgentChat } from "@trigger.dev/sdk/chat";
8
+ *
9
+ * const chat = new AgentChat<typeof myAgent>({
10
+ * agent: "my-agent",
11
+ * clientData: { userId: "user_123" },
12
+ * });
13
+ *
14
+ * const stream = await chat.sendMessage("Review PR #1");
15
+ * const text = await stream.text();
16
+ * await chat.close();
17
+ * ```
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.AgentChat = exports.ChatStream = void 0;
21
+ // `readUIMessageStream` is a runtime value — via the ESM/CJS shim so the CJS
22
+ // build can `require` ESM-only `ai@7` (see ../imports/ai-runtime.ts).
23
+ const ai_runtime_js_1 = require("../imports/ai-runtime.js");
24
+ const v3_1 = require("@trigger.dev/core/v3");
25
+ const ai_shared_js_1 = require("./ai-shared.js");
26
+ const concurrency_shared_js_1 = require("./concurrency-shared.js");
27
+ const sessions_js_1 = require("./sessions.js");
28
+ /**
29
+ * A single turn's response stream from an agent.
30
+ *
31
+ * Pick one consumption mode:
32
+ * - `for await (const chunk of stream)` — typed UIMessageChunk iteration
33
+ * - `await stream.result()` — accumulated `{ text, toolCalls, toolResults }`
34
+ * - `await stream.text()` — just the text
35
+ * - `yield* stream.messages()` — sub-agent pattern (yields UIMessage snapshots)
36
+ */
37
+ class ChatStream {
38
+ _consumerStream;
39
+ _messageCollector;
40
+ resultPromise;
41
+ /** @internal Last UIMessage snapshot from the assistant's response. */
42
+ lastAssistantMessage;
43
+ /** @internal Callback to capture the assistant's response message for accumulation. */
44
+ onAssistantMessage;
45
+ constructor(stream, onAssistantMessage) {
46
+ this.onAssistantMessage = onAssistantMessage;
47
+ if (onAssistantMessage) {
48
+ // Tee the stream: one branch for the consumer, one for message collection
49
+ const [consumer, collector] = stream.tee();
50
+ this._consumerStream = consumer;
51
+ this._messageCollector = (async () => {
52
+ for await (const msg of (0, ai_runtime_js_1.readUIMessageStream)({ stream: collector })) {
53
+ this.lastAssistantMessage = msg;
54
+ }
55
+ if (this.lastAssistantMessage) {
56
+ onAssistantMessage(this.lastAssistantMessage);
57
+ }
58
+ })();
59
+ }
60
+ else {
61
+ this._consumerStream = stream;
62
+ }
63
+ }
64
+ /** The raw ReadableStream for direct use with AI SDK utilities. */
65
+ get stream() {
66
+ return this._consumerStream;
67
+ }
68
+ async *[Symbol.asyncIterator]() {
69
+ const reader = this._consumerStream.getReader();
70
+ try {
71
+ while (true) {
72
+ const { done, value } = await reader.read();
73
+ if (done)
74
+ break;
75
+ yield value;
76
+ }
77
+ }
78
+ finally {
79
+ reader.releaseLock();
80
+ }
81
+ }
82
+ /**
83
+ * Yields accumulated UIMessage snapshots for the sub-agent tool pattern.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const stream = await chat.sendMessage("Research this topic");
88
+ * yield* stream.messages();
89
+ * ```
90
+ */
91
+ async *messages() {
92
+ for await (const message of (0, ai_runtime_js_1.readUIMessageStream)({ stream: this._consumerStream })) {
93
+ this.lastAssistantMessage = message;
94
+ yield message;
95
+ }
96
+ // When the constructor set up `_messageCollector` (because
97
+ // `onAssistantMessage` was provided), that collector IIFE owns
98
+ // firing the callback. Skipping it here prevents a double-invoke.
99
+ if (this.lastAssistantMessage && this.onAssistantMessage && !this._messageCollector) {
100
+ this.onAssistantMessage(this.lastAssistantMessage);
101
+ }
102
+ }
103
+ /** Consume the stream and return the accumulated result. */
104
+ result() {
105
+ if (!this.resultPromise) {
106
+ this.resultPromise = this.consumeStream();
107
+ }
108
+ return this.resultPromise;
109
+ }
110
+ /** Consume the stream and return just the text. */
111
+ async text() {
112
+ return (await this.result()).text;
113
+ }
114
+ async consumeStream() {
115
+ let text = "";
116
+ const toolCalls = [];
117
+ const toolResults = [];
118
+ for await (const chunk of this) {
119
+ if (chunk.type === "text-delta") {
120
+ text += chunk.delta;
121
+ }
122
+ else if (chunk.type === "tool-input-available") {
123
+ toolCalls.push({
124
+ toolName: chunk.toolName,
125
+ toolCallId: chunk.toolCallId,
126
+ input: chunk.input,
127
+ });
128
+ }
129
+ else if (chunk.type === "tool-output-available") {
130
+ toolResults.push({
131
+ toolCallId: chunk.toolCallId,
132
+ output: chunk.output,
133
+ });
134
+ }
135
+ }
136
+ return { text, toolCalls, toolResults };
137
+ }
138
+ }
139
+ exports.ChatStream = ChatStream;
140
+ // ─── AgentChat ─────────────────────────────────────────────────────
141
+ /**
142
+ * A chat conversation with a Trigger.dev agent.
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * // Simple usage
147
+ * const chat = new AgentChat<typeof myAgent>({ agent: "my-agent" });
148
+ * const text = await (await chat.sendMessage("Hello")).text();
149
+ * await chat.close();
150
+ *
151
+ * // Stateless request handler — persist and restore session
152
+ * const chat = new AgentChat<typeof myAgent>({
153
+ * agent: "my-agent",
154
+ * id: chatId,
155
+ * session: { lastEventId: savedLastEventId },
156
+ * onTriggered: ({ runId }) => db.save(chatId, { runId }),
157
+ * onTurnComplete: ({ lastEventId }) => db.update(chatId, { lastEventId }),
158
+ * });
159
+ * ```
160
+ */
161
+ class AgentChat {
162
+ taskId;
163
+ chatId;
164
+ streamTimeoutSeconds;
165
+ clientData;
166
+ triggerConfigDefault;
167
+ onTriggered;
168
+ onTurnComplete;
169
+ baseURLResolver;
170
+ fetchOverride;
171
+ state;
172
+ /**
173
+ * Which subscription armed `skipToTurnComplete`, so only that stream ends at
174
+ * the gated boundary. A later stream reads the same boundary as stale history
175
+ * and keeps reading to its own turn. Deliberately not in `state`: a stop does
176
+ * not outlive the process that issued it.
177
+ */
178
+ streamSeq = 0;
179
+ stoppedStreamId;
180
+ constructor(options) {
181
+ this.taskId = options.agent;
182
+ this.chatId = options.id ?? crypto.randomUUID();
183
+ this.streamTimeoutSeconds = options.streamTimeoutSeconds ?? 120;
184
+ this.clientData = options.clientData;
185
+ this.triggerConfigDefault = options.triggerConfig;
186
+ this.onTriggered = options.onTriggered;
187
+ this.onTurnComplete = options.onTurnComplete;
188
+ const baseURLOption = options.baseURL;
189
+ this.baseURLResolver =
190
+ typeof baseURLOption === "function"
191
+ ? baseURLOption
192
+ : () => baseURLOption ?? v3_1.apiClientManager.baseURL ?? "https://api.trigger.dev";
193
+ this.fetchOverride = options.fetch;
194
+ // Hydration: a non-empty `session` means the caller knows the
195
+ // session already exists (started in a previous request). Mark
196
+ // `started` so we don't re-`sessions.start()` on first message.
197
+ const hydrated = !!options.session;
198
+ this.state = {
199
+ lastEventId: options.session?.lastEventId,
200
+ started: hydrated,
201
+ pinRefreshed: !hydrated,
202
+ };
203
+ }
204
+ /** The conversation ID. */
205
+ get id() {
206
+ return this.chatId;
207
+ }
208
+ /** Persistable session state — pass back via `options.session` to resume. */
209
+ get session() {
210
+ return { lastEventId: this.state.lastEventId };
211
+ }
212
+ /**
213
+ * Eagerly start the session — creates the row and triggers the first
214
+ * run. The agent's `onPreload` hook fires immediately. Idempotent: a
215
+ * second call is a no-op.
216
+ */
217
+ async preload(options) {
218
+ await this.ensureStarted({ idleTimeoutInSeconds: options?.idleTimeoutInSeconds });
219
+ return this.session;
220
+ }
221
+ /**
222
+ * Send a text message and get the response stream.
223
+ *
224
+ * @example
225
+ * ```ts
226
+ * const stream = await chat.sendMessage("Review PR #1");
227
+ * const text = await stream.text();
228
+ * ```
229
+ */
230
+ async sendMessage(text, options) {
231
+ const msgId = `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
232
+ const message = {
233
+ id: msgId,
234
+ role: "user",
235
+ parts: [{ type: "text", text }],
236
+ };
237
+ const rawStream = await this.sendRaw([message], { abortSignal: options?.abortSignal });
238
+ return new ChatStream(rawStream);
239
+ }
240
+ /** Send raw UIMessage-like objects. Use `sendMessage()` for simple text. */
241
+ async sendRaw(messages, options) {
242
+ const triggerType = options?.trigger ?? "submit-message";
243
+ // Make sure the session exists (and a run is alive). The .in/append
244
+ // handler on the server probes currentRunId on every call and
245
+ // re-triggers if needed — so we don't need to track runId here.
246
+ await this.ensureStarted();
247
+ // Slim wire — at most ONE message per record. The agent rebuilds prior
248
+ // history from its durable S3 snapshot + session.out replay at run
249
+ // boot (or `hydrateMessages` if registered).
250
+ //
251
+ // For `submit-message`, assistant messages carrying resolved tool parts
252
+ // (HITL `addToolOutput` answers) are slimmed to just the resolution
253
+ // payload — reasoning blobs, text, and tool `input` come from the
254
+ // agent's authoritative chain. `regenerate-message` omits `message`.
255
+ if (triggerType === "submit-message" && messages.length === 0) {
256
+ throw new Error("AgentChat.sendRaw: 'submit-message' trigger requires at least one message");
257
+ }
258
+ const lastIfSubmit = triggerType === "submit-message"
259
+ ? (0, ai_shared_js_1.slimSubmitMessageForWire)(messages.at(-1))
260
+ : undefined;
261
+ const payload = {
262
+ ...(lastIfSubmit ? { message: lastIfSubmit } : {}),
263
+ chatId: this.chatId,
264
+ trigger: triggerType,
265
+ metadata: this.clientData,
266
+ };
267
+ await this.appendInputChunk(serializeInputChunk({ kind: "message", payload }));
268
+ return this.subscribeToSessionStream(options?.abortSignal, { resumeAfterEof: true });
269
+ }
270
+ /** Send a steering message during an active stream. */
271
+ async steer(text) {
272
+ if (!this.state.started)
273
+ return false;
274
+ const payload = {
275
+ message: {
276
+ id: `steer-${Date.now()}`,
277
+ role: "user",
278
+ parts: [{ type: "text", text }],
279
+ },
280
+ chatId: this.chatId,
281
+ trigger: "submit-message",
282
+ metadata: this.clientData,
283
+ };
284
+ try {
285
+ await this.appendInputChunk(serializeInputChunk({ kind: "message", payload }));
286
+ return true;
287
+ }
288
+ catch {
289
+ return false;
290
+ }
291
+ }
292
+ /** Stop the current generation (agent stays alive for next turn). */
293
+ async stop() {
294
+ if (!this.state.started)
295
+ return;
296
+ this.state.skipToTurnComplete = true;
297
+ this.stoppedStreamId = this.streamSeq;
298
+ await this.appendInputChunk(serializeInputChunk({ kind: "stop" })).catch(() => { });
299
+ }
300
+ /**
301
+ * Hand over from a `chat.handover` route handler to a parked
302
+ * `handover-prepare` agent run. Wakes the run, which seeds its
303
+ * accumulators with `partialAssistantMessage` and continues from
304
+ * tool execution onward — the model call for step 1 is skipped.
305
+ *
306
+ * Used internally by `chat.handover`; not part of the customer
307
+ * surface.
308
+ */
309
+ async sendHandover(args) {
310
+ await this.appendInputChunk(serializeInputChunk({
311
+ kind: "handover",
312
+ partialAssistantMessage: args.partialAssistantMessage,
313
+ messageId: args.messageId,
314
+ isFinal: args.isFinal,
315
+ }));
316
+ }
317
+ /**
318
+ * Tell a parked `handover-prepare` agent run that the customer's
319
+ * first turn finished pure-text (no tool calls) — the run exits
320
+ * cleanly without making an LLM call.
321
+ *
322
+ * Used internally by `chat.handover`; not part of the customer
323
+ * surface.
324
+ */
325
+ async sendHandoverSkip() {
326
+ await this.appendInputChunk(serializeInputChunk({ kind: "handover-skip" }));
327
+ }
328
+ /**
329
+ * Send a custom action to the agent.
330
+ *
331
+ * Actions are not turns. They wake the agent, fire `hydrateMessages`
332
+ * (if configured) and `onAction` only — no `onTurnStart` /
333
+ * `prepareMessages` / `onBeforeTurnComplete` / `onTurnComplete`, no
334
+ * `run()` invocation.
335
+ *
336
+ * The action payload is validated against the agent's `actionSchema`
337
+ * on the backend. Use `chat.history.*` inside `onAction` to mutate
338
+ * state. To produce a model response from the action, return a
339
+ * `StreamTextResult` (or `string` / `UIMessage`) from `onAction` —
340
+ * the returned stream is auto-piped over this stream. When `onAction`
341
+ * returns `void`, the action is side-effect-only and the returned
342
+ * stream completes immediately with `trigger:turn-complete`.
343
+ *
344
+ * @returns A `ChatStream`. For void actions the stream completes
345
+ * immediately. For actions that return a model response, the stream
346
+ * carries the assistant chunks.
347
+ *
348
+ * @example
349
+ * ```ts
350
+ * const stream = await agentChat.sendAction({ type: "undo" });
351
+ * for await (const chunk of stream) {
352
+ * if (chunk.type === "text-delta") process.stdout.write(chunk.delta);
353
+ * }
354
+ * ```
355
+ */
356
+ async sendAction(action, options) {
357
+ await this.ensureStarted();
358
+ const payload = {
359
+ chatId: this.chatId,
360
+ trigger: "action",
361
+ action,
362
+ metadata: this.clientData,
363
+ };
364
+ try {
365
+ await this.appendInputChunk(serializeInputChunk({ kind: "message", payload }));
366
+ }
367
+ catch {
368
+ throw new Error("Failed to send action. The session may have ended.");
369
+ }
370
+ const rawStream = this.subscribeToSessionStream(options?.abortSignal, {
371
+ resumeAfterEof: true,
372
+ });
373
+ return new ChatStream(rawStream);
374
+ }
375
+ /** Close the conversation — agent exits its loop gracefully. */
376
+ async close() {
377
+ if (!this.state.started)
378
+ return false;
379
+ try {
380
+ await this.appendInputChunk(serializeInputChunk({
381
+ kind: "message",
382
+ payload: {
383
+ chatId: this.chatId,
384
+ trigger: "close",
385
+ },
386
+ }));
387
+ this.state = { ...this.state, started: false };
388
+ return true;
389
+ }
390
+ catch {
391
+ return false;
392
+ }
393
+ }
394
+ /**
395
+ * Reconnect to the response stream to resume an already-established session
396
+ * after a disconnect. Requests the caught-up settle probe (`X-Peek-Settled`)
397
+ * so a resumed stream already at a turn-complete tail closes promptly instead
398
+ * of holding the full SSE window, mirroring the browser transport's
399
+ * `reconnectToStream`.
400
+ *
401
+ * Do not call this immediately after `sendMessage()` to read a fresh turn: the
402
+ * settle probe can race the newly-triggered turn's first record, see the prior
403
+ * turn's `turn-complete` tail, and hand back an empty stream (unlike the
404
+ * browser transport, there is no auto-resubscribe). `sendMessage()` already
405
+ * returns the turn's stream; use `reconnect()` only to resume an idle or
406
+ * mid-turn stream.
407
+ */
408
+ async reconnect(abortSignal) {
409
+ if (!this.state.started)
410
+ return null;
411
+ return this.subscribeToSessionStream(abortSignal, {
412
+ sendStopOnAbort: false,
413
+ peekSettled: true,
414
+ });
415
+ }
416
+ // ─── Private ───────────────────────────────────────────────────
417
+ resolveBaseURL(endpoint) {
418
+ return this.baseURLResolver({ endpoint, chatId: this.chatId }).replace(/\/$/, "");
419
+ }
420
+ async doFetch(ctx, url, init) {
421
+ return this.fetchOverride ? this.fetchOverride(url, init, ctx) : fetch(url, init);
422
+ }
423
+ async appendInputChunk(body) {
424
+ const accessToken = v3_1.apiClientManager.accessToken ?? "";
425
+ const ctx = { endpoint: "in", chatId: this.chatId };
426
+ const url = `${this.resolveBaseURL("in")}/realtime/v1/sessions/${encodeURIComponent(this.chatId)}/in/append`;
427
+ const headers = {
428
+ "Content-Type": "application/json",
429
+ Authorization: `Bearer ${accessToken}`,
430
+ "x-trigger-source": "sdk",
431
+ // Idempotency key: the server skips appends whose part id it has
432
+ // already committed, so a retried POST can't duplicate the record.
433
+ "X-Part-Id": crypto.randomUUID(),
434
+ };
435
+ // Preview-env sessions are branch-scoped, so the realtime in/out calls must
436
+ // carry the branch the session was created on. sessions.start sends it via
437
+ // the API client; these raw fetches have to set it themselves.
438
+ const branch = v3_1.apiClientManager.branchName;
439
+ if (branch)
440
+ headers["x-trigger-branch"] = branch;
441
+ const response = await this.doFetch(ctx, url, { method: "POST", headers, body });
442
+ if (!response.ok) {
443
+ const text = await response.text().catch(() => "");
444
+ // Match the error shape that ApiClient/zodfetch produced before the
445
+ // inline-POST refactor so callers inspecting `error.name ===
446
+ // "TriggerApiError"` or `error.status` keep working.
447
+ const err = new Error(`appendToSessionStream failed: ${response.status} ${text}`);
448
+ err.name = "TriggerApiError";
449
+ err.status = response.status;
450
+ throw err;
451
+ }
452
+ }
453
+ /**
454
+ * Idempotent: `sessions.start` upserts on `(env, externalId)`. Two
455
+ * concurrent AgentChat instances on the same chatId converge to the
456
+ * same session.
457
+ */
458
+ async ensureStarted(options) {
459
+ if (this.state.started && this.state.pinRefreshed)
460
+ return;
461
+ const idleTimeoutInSeconds = options?.idleTimeoutInSeconds ?? this.triggerConfigDefault?.idleTimeoutInSeconds;
462
+ const triggerConfig = {
463
+ basePayload: {
464
+ // `trigger: "preload"` mirrors the browser-mediated
465
+ // `chat.createStartSessionAction` shape so the agent runtime fires
466
+ // `onPreload` (not `onChatStart` with `preloaded: true`). Without
467
+ // this, AgentChat's first run skips both preload and start hooks,
468
+ // which is where customer apps typically upsert their Chat row.
469
+ // Slim wire — preload carries no message body.
470
+ trigger: "preload",
471
+ ...(this.triggerConfigDefault?.basePayload ?? {}),
472
+ chatId: this.chatId,
473
+ ...(this.clientData ? { metadata: this.clientData } : {}),
474
+ },
475
+ ...(this.triggerConfigDefault?.machine ? { machine: this.triggerConfigDefault.machine } : {}),
476
+ ...(this.triggerConfigDefault?.queue ? { queue: this.triggerConfigDefault.queue } : {}),
477
+ ...(this.triggerConfigDefault?.concurrency !== undefined
478
+ ? (0, concurrency_shared_js_1.triggerConcurrencyBody)(this.triggerConfigDefault.concurrency)
479
+ : {}),
480
+ ...(this.triggerConfigDefault?.concurrencyKey !== undefined
481
+ ? { concurrencyKey: this.triggerConfigDefault.concurrencyKey }
482
+ : {}),
483
+ tags: (0, ai_shared_js_1.chatRunTags)(this.chatId, this.triggerConfigDefault?.tags),
484
+ ...(this.triggerConfigDefault?.maxAttempts !== undefined
485
+ ? { maxAttempts: this.triggerConfigDefault.maxAttempts }
486
+ : {}),
487
+ ...(this.triggerConfigDefault?.maxDuration !== undefined
488
+ ? { maxDuration: this.triggerConfigDefault.maxDuration }
489
+ : {}),
490
+ ...(this.triggerConfigDefault?.region ? { region: this.triggerConfigDefault.region } : {}),
491
+ ...(this.triggerConfigDefault?.lockToVersion
492
+ ? { lockToVersion: this.triggerConfigDefault.lockToVersion }
493
+ : {}),
494
+ ...(this.triggerConfigDefault?.ttl !== undefined
495
+ ? { ttl: this.triggerConfigDefault.ttl }
496
+ : {}),
497
+ // Not truthiness: `null` opts out and must reach the resolver in `sessions.start`.
498
+ ...(this.triggerConfigDefault?.externalDeploymentId !== undefined
499
+ ? { externalDeploymentId: this.triggerConfigDefault.externalDeploymentId }
500
+ : {}),
501
+ ...(idleTimeoutInSeconds !== undefined ? { idleTimeoutInSeconds } : {}),
502
+ };
503
+ const created = await sessions_js_1.sessions.start({
504
+ type: "chat.agent",
505
+ externalId: this.chatId,
506
+ taskIdentifier: this.taskId,
507
+ triggerConfig,
508
+ });
509
+ const wasInitialStart = !this.state.started;
510
+ this.state.started = true;
511
+ this.state.pinRefreshed = true;
512
+ // `onTriggered` is documented as the initial start, so a restored session
513
+ // refreshing its config does not fire it: the caller handed us that
514
+ // session, and a hook that writes a row would write it again on every
515
+ // request that rehydrates the conversation.
516
+ if (wasInitialStart) {
517
+ await this.onTriggered?.({
518
+ runId: created.runId,
519
+ chatId: this.chatId,
520
+ });
521
+ }
522
+ }
523
+ subscribeToSessionStream(abortSignal, options) {
524
+ const state = this.state;
525
+ const streamId = ++this.streamSeq;
526
+ // A stop was outstanding when I subscribed and it isn't mine: my window
527
+ // replays the stopped turn's tail, so I drop records up to and including
528
+ // its boundary. Captured per subscription — the stopped stream is still
529
+ // live and may consume the shared seed before I reach that record.
530
+ let skipStaleBoundary = state.skipToTurnComplete === true && this.stoppedStreamId !== streamId;
531
+ const accessToken = v3_1.apiClientManager.accessToken ?? "";
532
+ const onTurnComplete = this.onTurnComplete;
533
+ const chatId = this.chatId;
534
+ const sseCtx = { endpoint: "out", chatId };
535
+ const fetchOverride = this.fetchOverride;
536
+ const sseFetchClient = fetchOverride
537
+ ? ((input, init) => {
538
+ if (typeof input === "string") {
539
+ return fetchOverride(input, init ?? {}, sseCtx);
540
+ }
541
+ if (input instanceof URL) {
542
+ return fetchOverride(input.toString(), init ?? {}, sseCtx);
543
+ }
544
+ // Request — preserve its url + intrinsic init, let any provided
545
+ // init override on top (matches fetch(Request, init) semantics).
546
+ return fetchOverride(input.url, {
547
+ method: input.method,
548
+ headers: input.headers,
549
+ signal: input.signal,
550
+ ...(init ?? {}),
551
+ }, sseCtx);
552
+ })
553
+ : undefined;
554
+ const internalAbort = new AbortController();
555
+ const combinedSignal = abortSignal
556
+ ? AbortSignal.any([abortSignal, internalAbort.signal])
557
+ : internalAbort.signal;
558
+ // Detached once the stream ends (see the `finally` below): a caller reusing
559
+ // one signal across turns would otherwise stack listeners, and a late abort
560
+ // would post a stop that gates the next turn.
561
+ const onExternalAbort = () => {
562
+ if (options?.sendStopOnAbort !== false) {
563
+ state.skipToTurnComplete = true;
564
+ this.stoppedStreamId = streamId;
565
+ this.appendInputChunk(serializeInputChunk({ kind: "stop" })).catch(() => { });
566
+ }
567
+ internalAbort.abort();
568
+ };
569
+ abortSignal?.addEventListener("abort", onExternalAbort, { once: true });
570
+ const streamUrl = `${this.resolveBaseURL("out")}/realtime/v1/sessions/${encodeURIComponent(chatId)}/out`;
571
+ return new ReadableStream({
572
+ start: async (controller) => {
573
+ let eofResubscribes = 0;
574
+ let sawLiveTurn = false;
575
+ const closeController = () => {
576
+ try {
577
+ controller.close();
578
+ }
579
+ catch {
580
+ // Controller may already be closed
581
+ }
582
+ };
583
+ const openSubscription = () => new v3_1.SSEStreamSubscription(streamUrl, {
584
+ headers: {
585
+ Authorization: `Bearer ${accessToken}`,
586
+ // Preview-env sessions are branch-scoped (see appendInputChunk).
587
+ ...(v3_1.apiClientManager.branchName
588
+ ? { "x-trigger-branch": v3_1.apiClientManager.branchName }
589
+ : {}),
590
+ ...(options?.peekSettled ? { "X-Peek-Settled": "1" } : {}),
591
+ },
592
+ signal: combinedSignal,
593
+ timeoutInSeconds: this.streamTimeoutSeconds,
594
+ lastEventId: state.lastEventId,
595
+ fetchClient: sseFetchClient,
596
+ });
597
+ try {
598
+ while (true) {
599
+ const subscription = openSubscription();
600
+ const sseStream = await subscription.subscribe();
601
+ const reader = sseStream.getReader();
602
+ try {
603
+ while (true) {
604
+ const next = await reader.read();
605
+ if (next.done) {
606
+ break;
607
+ }
608
+ if (combinedSignal.aborted) {
609
+ internalAbort.abort();
610
+ await reader.cancel();
611
+ closeController();
612
+ return;
613
+ }
614
+ const value = next.value;
615
+ if (value.id)
616
+ state.lastEventId = value.id;
617
+ // Any record re-earns the resubscribe budget: a clean EOF is
618
+ // the normal end of every long-poll window, so a long turn
619
+ // spanning many windows must not exhaust it.
620
+ eofResubscribes = 0;
621
+ // Trigger control records (turn-complete, upgrade-required)
622
+ // route by header — see `client-protocol.mdx`. Their bodies
623
+ // are empty; everything substantive is on `value.headers`.
624
+ //
625
+ // Cross-version bridge: an old agent SDK still writing
626
+ // turn-complete / upgrade-required as `chunk.type` data
627
+ // records would otherwise stall this loop. Fall back to
628
+ // the legacy chunk-type form when no header is present
629
+ // so the deploy-skew window between an `AgentChat`
630
+ // consumer and a not-yet-redeployed agent doesn't hang.
631
+ let controlValue = (0, v3_1.controlSubtype)(value.headers);
632
+ if (!controlValue && value.chunk && typeof value.chunk === "object") {
633
+ const chunk = value.chunk;
634
+ if (chunk.type === "trigger:turn-complete") {
635
+ controlValue = v3_1.TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE;
636
+ }
637
+ else if (chunk.type === "trigger:upgrade-required") {
638
+ controlValue = v3_1.TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED;
639
+ }
640
+ else if (typeof chunk.type === "string" && chunk.type.startsWith("trigger:")) {
641
+ // Future / unknown `trigger:*` legacy control type —
642
+ // drop so it doesn't leak as a UIMessageChunk.
643
+ continue;
644
+ }
645
+ }
646
+ // Stale tail of a turn someone else stopped: swallow it and
647
+ // keep reading to my own turn.
648
+ if (skipStaleBoundary) {
649
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
650
+ skipStaleBoundary = false;
651
+ state.skipToTurnComplete = false;
652
+ }
653
+ continue;
654
+ }
655
+ // I am the stopped stream, so this turn is over at its
656
+ // boundary: close rather than resume into windows it will
657
+ // never fill. Keyed on the id alone, so it holds however far
658
+ // the follow-up subscription has got.
659
+ if (this.stoppedStreamId === streamId) {
660
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
661
+ state.skipToTurnComplete = false;
662
+ this.stoppedStreamId = undefined;
663
+ internalAbort.abort();
664
+ closeController();
665
+ return;
666
+ }
667
+ continue;
668
+ }
669
+ // Both handover markers mean the turn carries on in a
670
+ // successor run, so they count as a live turn: its chunks
671
+ // may only arrive in a later window.
672
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED) {
673
+ // Server has already triggered the new run via
674
+ // `end-and-continue`; v2's chunks arrive on the same
675
+ // S2 stream. Filter the marker for cleanliness and
676
+ // keep reading.
677
+ sawLiveTurn = true;
678
+ continue;
679
+ }
680
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.PENDING_VERSION) {
681
+ sawLiveTurn = true;
682
+ continue;
683
+ }
684
+ // A standalone session-closed record is written after
685
+ // turn-complete, so only a reconnect ever reads it. The
686
+ // conversation is over: end the stream, no stop, no error.
687
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.SESSION_CLOSED) {
688
+ internalAbort.abort();
689
+ closeController();
690
+ return;
691
+ }
692
+ if (controlValue === v3_1.TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
693
+ // Customer's callback may be async (e.g. persisting
694
+ // lastEventId to a DB). Wrap so a rejected Promise
695
+ // doesn't surface as an unhandled rejection — that
696
+ // would crash Node under `--unhandled-rejections=throw`.
697
+ Promise.resolve(onTurnComplete?.({
698
+ chatId,
699
+ lastEventId: state.lastEventId,
700
+ })).catch(() => { });
701
+ internalAbort.abort();
702
+ closeController();
703
+ return;
704
+ }
705
+ // Data record — `value.chunk` is the parsed UIMessageChunk
706
+ // (the SSE parser does the JSON envelope unwrap). Drop
707
+ // empty/malformed payloads defensively.
708
+ if (value.chunk == null)
709
+ continue;
710
+ // Parts and the handover markers above are the only evidence of
711
+ // a live turn. Unknown control records stay neutral: they are no
712
+ // reason for a reconnect to pin another long-poll window.
713
+ sawLiveTurn = true;
714
+ controller.enqueue(value.chunk);
715
+ }
716
+ }
717
+ catch (readError) {
718
+ reader.releaseLock();
719
+ throw readError;
720
+ }
721
+ reader.releaseLock();
722
+ // The body ended without a turn-complete. A turn is in flight
723
+ // either by construction (the send paths) or because records have
724
+ // already flowed on this stream — so unless the server says the
725
+ // session settled we lost the window mid-turn, and resubscribing
726
+ // from the last event id beats truncating the turn. A `reconnect()`
727
+ // that never saw a record can't tell a live turn from a dead
728
+ // session, so it closes rather than pin another long-poll window.
729
+ const turnInFlight = options?.resumeAfterEof || sawLiveTurn;
730
+ if (!turnInFlight || subscription.sessionSettled || combinedSignal.aborted) {
731
+ closeController();
732
+ return;
733
+ }
734
+ if (eofResubscribes >= ai_shared_js_1.MAX_EOF_RESUBSCRIBES) {
735
+ throw new Error("Chat stream ended before the turn completed (reconnect budget exhausted).");
736
+ }
737
+ eofResubscribes++;
738
+ await (0, ai_shared_js_1.waitBeforeEofResubscribe)(eofResubscribes, combinedSignal);
739
+ if (combinedSignal.aborted) {
740
+ closeController();
741
+ return;
742
+ }
743
+ }
744
+ }
745
+ catch (error) {
746
+ if (error instanceof Error && error.name === "AbortError") {
747
+ closeController();
748
+ return;
749
+ }
750
+ controller.error(error);
751
+ }
752
+ finally {
753
+ abortSignal?.removeEventListener("abort", onExternalAbort);
754
+ }
755
+ },
756
+ // A consumer that stops reading must also stop the resubscribe loop —
757
+ // otherwise it keeps reopening a subscription nobody is draining.
758
+ cancel: () => {
759
+ internalAbort.abort();
760
+ },
761
+ });
762
+ }
763
+ }
764
+ exports.AgentChat = AgentChat;
765
+ /**
766
+ * Serialize a {@link ChatInputChunk} for `POST …/sessions/:session/:io/append`.
767
+ * Session channel records are raw JSON strings — the server wraps them
768
+ * in `{ data: <body>, id }` for S2 storage and the subscribe side
769
+ * parses the string back for consumers.
770
+ */
771
+ function serializeInputChunk(chunk) {
772
+ return JSON.stringify(chunk);
773
+ }
774
+ //# sourceMappingURL=chat-client.js.map