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