@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.
- package/README.md +29 -9
- package/dist/commonjs/imports/ai-runtime-cjs.cjs.map +1 -0
- package/dist/commonjs/imports/ai-runtime.d.ts +1 -0
- package/dist/commonjs/imports/ai-runtime.js +31 -0
- package/dist/commonjs/imports/uncrypto.js +4 -4
- package/dist/commonjs/package.json +2 -1
- package/dist/commonjs/v3/agentSkillsRuntime.d.ts +28 -0
- package/dist/commonjs/v3/agentSkillsRuntime.js +173 -0
- package/dist/commonjs/v3/agentSkillsRuntime.js.map +1 -0
- package/dist/commonjs/v3/ai-shared.d.ts +156 -0
- package/dist/commonjs/v3/ai-shared.js +215 -0
- package/dist/commonjs/v3/ai-shared.js.map +1 -0
- package/dist/commonjs/v3/ai.d.ts +4225 -0
- package/dist/commonjs/v3/ai.js +11569 -0
- package/dist/commonjs/v3/ai.js.map +1 -0
- package/dist/commonjs/v3/aiAutoTelemetry.d.ts +2 -0
- package/dist/commonjs/v3/aiAutoTelemetry.js +81 -0
- package/dist/commonjs/v3/aiAutoTelemetry.js.map +1 -0
- package/dist/commonjs/v3/auth.d.ts +71 -10
- package/dist/commonjs/v3/auth.js +85 -19
- package/dist/commonjs/v3/auth.js.map +1 -1
- package/dist/commonjs/v3/batch.d.ts +3 -3
- package/dist/commonjs/v3/batch.js.map +1 -1
- package/dist/commonjs/v3/cache.js.map +1 -1
- package/dist/commonjs/v3/chat-client.d.ts +324 -0
- package/dist/commonjs/v3/chat-client.js +774 -0
- package/dist/commonjs/v3/chat-client.js.map +1 -0
- package/dist/commonjs/v3/chat-react.d.ts +244 -0
- package/dist/commonjs/v3/chat-react.js +463 -0
- package/dist/commonjs/v3/chat-react.js.map +1 -0
- package/dist/commonjs/v3/chat-server.d.ts +350 -0
- package/dist/commonjs/v3/chat-server.js +965 -0
- package/dist/commonjs/v3/chat-server.js.map +1 -0
- package/dist/commonjs/v3/chat-tab-coordinator.d.ts +65 -0
- package/dist/commonjs/v3/chat-tab-coordinator.js +235 -0
- package/dist/commonjs/v3/chat-tab-coordinator.js.map +1 -0
- package/dist/commonjs/v3/chat.d.ts +792 -0
- package/dist/commonjs/v3/chat.js +1662 -0
- package/dist/commonjs/v3/chat.js.map +1 -0
- package/dist/commonjs/v3/chatRouteWait.d.ts +21 -0
- package/dist/commonjs/v3/chatRouteWait.js +43 -0
- package/dist/commonjs/v3/chatRouteWait.js.map +1 -0
- package/dist/commonjs/v3/chatSnapshotIo.d.ts +2 -0
- package/dist/commonjs/v3/chatSnapshotIo.js +173 -0
- package/dist/commonjs/v3/chatSnapshotIo.js.map +1 -0
- package/dist/commonjs/v3/chatVersionSkew.d.ts +12 -0
- package/dist/commonjs/v3/chatVersionSkew.js +30 -0
- package/dist/commonjs/v3/chatVersionSkew.js.map +1 -0
- package/dist/commonjs/v3/compactionResponse.d.ts +9 -0
- package/dist/commonjs/v3/compactionResponse.js +37 -0
- package/dist/commonjs/v3/compactionResponse.js.map +1 -0
- package/dist/commonjs/v3/concurrency-shared.d.ts +13 -0
- package/dist/commonjs/v3/concurrency-shared.js +35 -0
- package/dist/commonjs/v3/concurrency-shared.js.map +1 -0
- package/dist/commonjs/v3/concurrencyLimits.d.ts +103 -0
- package/dist/commonjs/v3/concurrencyLimits.js +134 -0
- package/dist/commonjs/v3/concurrencyLimits.js.map +1 -0
- package/dist/commonjs/v3/config.js.map +1 -1
- package/dist/commonjs/v3/deployments.d.ts +25 -0
- package/dist/commonjs/v3/deployments.js +37 -0
- package/dist/commonjs/v3/deployments.js.map +1 -0
- package/dist/commonjs/v3/envvars.d.ts +5 -5
- package/dist/commonjs/v3/envvars.js.map +1 -1
- package/dist/commonjs/v3/externalDeploymentId.d.ts +23 -0
- package/dist/commonjs/v3/externalDeploymentId.js +43 -0
- package/dist/commonjs/v3/externalDeploymentId.js.map +1 -0
- package/dist/commonjs/v3/heartbeats.d.ts +37 -0
- package/dist/commonjs/v3/heartbeats.js +45 -0
- package/dist/commonjs/v3/heartbeats.js.map +1 -0
- package/dist/commonjs/v3/hooks.d.ts +26 -0
- package/dist/commonjs/v3/hooks.js +79 -0
- package/dist/commonjs/v3/hooks.js.map +1 -0
- package/dist/commonjs/v3/idempotencyKeys.d.ts +2 -1
- package/dist/commonjs/v3/idempotencyKeys.js +1 -0
- package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
- package/dist/commonjs/v3/index.d.ts +20 -5
- package/dist/commonjs/v3/index.js +56 -20
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/locals.d.ts +3 -0
- package/dist/commonjs/v3/locals.js +6 -0
- package/dist/commonjs/v3/locals.js.map +1 -0
- package/dist/commonjs/v3/managedChatResponse.d.ts +44 -0
- package/dist/commonjs/v3/managedChatResponse.js +221 -0
- package/dist/commonjs/v3/managedChatResponse.js.map +1 -0
- package/dist/commonjs/v3/metadata.d.ts +5 -2
- package/dist/commonjs/v3/metadata.js +8 -1
- package/dist/commonjs/v3/metadata.js.map +1 -1
- package/dist/commonjs/v3/modelFileDownload.d.ts +10 -0
- package/dist/commonjs/v3/modelFileDownload.js +164 -0
- package/dist/commonjs/v3/modelFileDownload.js.map +1 -0
- package/dist/commonjs/v3/otel.d.ts +4 -0
- package/dist/commonjs/v3/otel.js +12 -0
- package/dist/commonjs/v3/otel.js.map +1 -0
- package/dist/commonjs/v3/prompt.d.ts +38 -0
- package/dist/commonjs/v3/prompt.js +146 -0
- package/dist/commonjs/v3/prompt.js.map +1 -0
- package/dist/commonjs/v3/promptManagement.d.ts +26 -0
- package/dist/commonjs/v3/promptManagement.js +180 -0
- package/dist/commonjs/v3/promptManagement.js.map +1 -0
- package/dist/commonjs/v3/prompts.d.ts +3 -0
- package/dist/commonjs/v3/prompts.js +15 -0
- package/dist/commonjs/v3/prompts.js.map +1 -0
- package/dist/commonjs/v3/query.d.ts +545 -0
- package/dist/commonjs/v3/query.js +163 -0
- package/dist/commonjs/v3/query.js.map +1 -0
- package/dist/commonjs/v3/queues.d.ts +107 -0
- package/dist/commonjs/v3/queues.js +225 -0
- package/dist/commonjs/v3/queues.js.map +1 -0
- package/dist/commonjs/v3/retry.d.ts +6 -2
- package/dist/commonjs/v3/retry.js +34 -23
- package/dist/commonjs/v3/retry.js.map +1 -1
- package/dist/commonjs/v3/runs.d.ts +182 -101
- package/dist/commonjs/v3/runs.js +99 -5
- package/dist/commonjs/v3/runs.js.map +1 -1
- package/dist/commonjs/v3/schedules/api.d.ts +8 -1
- package/dist/commonjs/v3/schedules/index.d.ts +29 -9
- package/dist/commonjs/v3/schedules/index.js +5 -1
- package/dist/commonjs/v3/schedules/index.js.map +1 -1
- package/dist/commonjs/v3/schemas.d.ts +1 -0
- package/dist/commonjs/{integrations.js → v3/schemas.js} +1 -1
- package/dist/commonjs/v3/schemas.js.map +1 -0
- package/dist/commonjs/v3/sessionTracing.d.ts +7 -0
- package/dist/commonjs/v3/sessionTracing.js +44 -0
- package/dist/commonjs/v3/sessionTracing.js.map +1 -0
- package/dist/commonjs/v3/sessions.d.ts +268 -0
- package/dist/commonjs/v3/sessions.js +776 -0
- package/dist/commonjs/v3/sessions.js.map +1 -0
- package/dist/commonjs/v3/shared.d.ts +129 -24
- package/dist/commonjs/v3/shared.js +1527 -689
- package/dist/commonjs/v3/shared.js.map +1 -1
- package/dist/commonjs/v3/skill.d.ts +99 -0
- package/dist/commonjs/v3/skill.js +165 -0
- package/dist/commonjs/v3/skill.js.map +1 -0
- package/dist/commonjs/v3/skills.d.ts +2 -0
- package/dist/commonjs/v3/skills.js +6 -0
- package/dist/commonjs/v3/skills.js.map +1 -0
- package/dist/commonjs/v3/steeringContext.d.ts +41 -0
- package/dist/commonjs/v3/steeringContext.js +118 -0
- package/dist/commonjs/v3/steeringContext.js.map +1 -0
- package/dist/commonjs/v3/streams.d.ts +298 -0
- package/dist/commonjs/v3/streams.js +584 -0
- package/dist/commonjs/v3/streams.js.map +1 -0
- package/dist/commonjs/v3/tasks.d.ts +19 -4
- package/dist/commonjs/v3/tasks.js +15 -1
- package/dist/commonjs/v3/tasks.js.map +1 -1
- package/dist/commonjs/v3/test/index.d.ts +5 -0
- package/dist/commonjs/v3/test/index.js +23 -0
- package/dist/commonjs/v3/test/index.js.map +1 -0
- package/dist/commonjs/v3/test/mock-channel-connector.d.ts +172 -0
- package/dist/commonjs/v3/test/mock-channel-connector.js +173 -0
- package/dist/commonjs/v3/test/mock-channel-connector.js.map +1 -0
- package/dist/commonjs/v3/test/mock-chat-agent.d.ts +388 -0
- package/dist/commonjs/v3/test/mock-chat-agent.js +689 -0
- package/dist/commonjs/v3/test/mock-chat-agent.js.map +1 -0
- package/dist/commonjs/v3/test/setup-catalog.d.ts +1 -0
- package/dist/commonjs/v3/test/setup-catalog.js +18 -0
- package/dist/commonjs/v3/test/setup-catalog.js.map +1 -0
- package/dist/commonjs/v3/test/test-session-handle.d.ts +24 -0
- package/dist/commonjs/v3/test/test-session-handle.js +271 -0
- package/dist/commonjs/v3/test/test-session-handle.js.map +1 -0
- package/dist/commonjs/v3/test/transcript-storage-tests.d.ts +40 -0
- package/dist/commonjs/v3/test/transcript-storage-tests.js +258 -0
- package/dist/commonjs/v3/test/transcript-storage-tests.js.map +1 -0
- package/dist/commonjs/v3/toolResultOrder.d.ts +15 -0
- package/dist/commonjs/v3/toolResultOrder.js +58 -0
- package/dist/commonjs/v3/toolResultOrder.js.map +1 -0
- package/dist/commonjs/v3/transcriptStorage.d.ts +307 -0
- package/dist/commonjs/v3/transcriptStorage.js +445 -0
- package/dist/commonjs/v3/transcriptStorage.js.map +1 -0
- package/dist/commonjs/v3/triggerClient.d.ts +45 -0
- package/dist/commonjs/v3/triggerClient.js +114 -0
- package/dist/commonjs/v3/triggerClient.js.map +1 -0
- package/dist/commonjs/v3/uiMessageChunks.d.ts +1 -0
- package/dist/commonjs/v3/uiMessageChunks.js +119 -0
- package/dist/commonjs/v3/uiMessageChunks.js.map +1 -0
- package/dist/commonjs/v3/usage.js +7 -6
- package/dist/commonjs/v3/usage.js.map +1 -1
- package/dist/commonjs/v3/wait.d.ts +218 -3
- package/dist/commonjs/v3/wait.js +433 -7
- package/dist/commonjs/v3/wait.js.map +1 -1
- package/dist/commonjs/v3/waitUntil.js.map +1 -1
- package/dist/commonjs/v3/webhookWaiters.d.ts +80 -0
- package/dist/commonjs/v3/webhookWaiters.js +156 -0
- package/dist/commonjs/v3/webhookWaiters.js.map +1 -0
- package/dist/commonjs/v3/webhooks.d.ts +192 -2
- package/dist/commonjs/v3/webhooks.js +340 -2
- package/dist/commonjs/v3/webhooks.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/imports/ai-runtime.d.ts +2 -0
- package/dist/esm/imports/ai-runtime.js +16 -0
- package/dist/esm/imports/ai-runtime.js.map +1 -0
- package/dist/esm/package.json +2 -1
- package/dist/esm/v3/agentSkillsRuntime.d.ts +28 -0
- package/dist/esm/v3/agentSkillsRuntime.js +136 -0
- package/dist/esm/v3/agentSkillsRuntime.js.map +1 -0
- package/dist/esm/v3/ai-shared.d.ts +156 -0
- package/dist/esm/v3/ai-shared.js +208 -0
- package/dist/esm/v3/ai-shared.js.map +1 -0
- package/dist/esm/v3/ai.d.ts +4225 -0
- package/dist/esm/v3/ai.js +11550 -0
- package/dist/esm/v3/ai.js.map +1 -0
- package/dist/esm/v3/aiAutoTelemetry.d.ts +2 -0
- package/dist/esm/v3/aiAutoTelemetry.js +78 -0
- package/dist/esm/v3/aiAutoTelemetry.js.map +1 -0
- package/dist/esm/v3/auth.d.ts +71 -10
- package/dist/esm/v3/auth.js +83 -17
- package/dist/esm/v3/auth.js.map +1 -1
- package/dist/esm/v3/batch.d.ts +3 -3
- package/dist/esm/v3/batch.js +2 -2
- package/dist/esm/v3/batch.js.map +1 -1
- package/dist/esm/v3/chat-client.d.ts +324 -0
- package/dist/esm/v3/chat-client.js +769 -0
- package/dist/esm/v3/chat-client.js.map +1 -0
- package/dist/esm/v3/chat-react.d.ts +244 -0
- package/dist/esm/v3/chat-react.js +455 -0
- package/dist/esm/v3/chat-react.js.map +1 -0
- package/dist/esm/v3/chat-server.d.ts +350 -0
- package/dist/esm/v3/chat-server.js +962 -0
- package/dist/esm/v3/chat-server.js.map +1 -0
- package/dist/esm/v3/chat-tab-coordinator.d.ts +65 -0
- package/dist/esm/v3/chat-tab-coordinator.js +231 -0
- package/dist/esm/v3/chat-tab-coordinator.js.map +1 -0
- package/dist/esm/v3/chat.d.ts +792 -0
- package/dist/esm/v3/chat.js +1655 -0
- package/dist/esm/v3/chat.js.map +1 -0
- package/dist/esm/v3/chatRouteWait.d.ts +21 -0
- package/dist/esm/v3/chatRouteWait.js +40 -0
- package/dist/esm/v3/chatRouteWait.js.map +1 -0
- package/dist/esm/v3/chatSnapshotIo.d.ts +2 -0
- package/dist/esm/v3/chatSnapshotIo.js +165 -0
- package/dist/esm/v3/chatSnapshotIo.js.map +1 -0
- package/dist/esm/v3/chatVersionSkew.d.ts +12 -0
- package/dist/esm/v3/chatVersionSkew.js +27 -0
- package/dist/esm/v3/chatVersionSkew.js.map +1 -0
- package/dist/esm/v3/compactionResponse.d.ts +9 -0
- package/dist/esm/v3/compactionResponse.js +34 -0
- package/dist/esm/v3/compactionResponse.js.map +1 -0
- package/dist/esm/v3/concurrency-shared.d.ts +13 -0
- package/dist/esm/v3/concurrency-shared.js +31 -0
- package/dist/esm/v3/concurrency-shared.js.map +1 -0
- package/dist/esm/v3/concurrencyLimits.d.ts +103 -0
- package/dist/esm/v3/concurrencyLimits.js +126 -0
- package/dist/esm/v3/concurrencyLimits.js.map +1 -0
- package/dist/esm/v3/deployments.d.ts +25 -0
- package/dist/esm/v3/deployments.js +34 -0
- package/dist/esm/v3/deployments.js.map +1 -0
- package/dist/esm/v3/envvars.d.ts +5 -5
- package/dist/esm/v3/envvars.js.map +1 -1
- package/dist/esm/v3/externalDeploymentId.d.ts +23 -0
- package/dist/esm/v3/externalDeploymentId.js +38 -0
- package/dist/esm/v3/externalDeploymentId.js.map +1 -0
- package/dist/esm/v3/heartbeats.d.ts +37 -0
- package/dist/esm/v3/heartbeats.js +42 -0
- package/dist/esm/v3/heartbeats.js.map +1 -0
- package/dist/esm/v3/hooks.d.ts +26 -0
- package/dist/esm/v3/hooks.js +66 -0
- package/dist/esm/v3/hooks.js.map +1 -0
- package/dist/esm/v3/idempotencyKeys.d.ts +2 -1
- package/dist/esm/v3/idempotencyKeys.js +2 -1
- package/dist/esm/v3/idempotencyKeys.js.map +1 -1
- package/dist/esm/v3/index.d.ts +20 -5
- package/dist/esm/v3/index.js +16 -2
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/locals.d.ts +3 -0
- package/dist/esm/v3/locals.js +3 -0
- package/dist/esm/v3/locals.js.map +1 -0
- package/dist/esm/v3/managedChatResponse.d.ts +44 -0
- package/dist/esm/v3/managedChatResponse.js +216 -0
- package/dist/esm/v3/managedChatResponse.js.map +1 -0
- package/dist/esm/v3/metadata.d.ts +5 -2
- package/dist/esm/v3/metadata.js +8 -1
- package/dist/esm/v3/metadata.js.map +1 -1
- package/dist/esm/v3/modelFileDownload.d.ts +10 -0
- package/dist/esm/v3/modelFileDownload.js +161 -0
- package/dist/esm/v3/modelFileDownload.js.map +1 -0
- package/dist/esm/v3/otel.d.ts +4 -0
- package/dist/esm/v3/otel.js +9 -0
- package/dist/esm/v3/otel.js.map +1 -0
- package/dist/esm/v3/prompt.d.ts +38 -0
- package/dist/esm/v3/prompt.js +143 -0
- package/dist/esm/v3/prompt.js.map +1 -0
- package/dist/esm/v3/promptManagement.d.ts +26 -0
- package/dist/esm/v3/promptManagement.js +170 -0
- package/dist/esm/v3/promptManagement.js.map +1 -0
- package/dist/esm/v3/prompts.d.ts +3 -0
- package/dist/esm/v3/prompts.js +3 -0
- package/dist/esm/v3/prompts.js.map +1 -0
- package/dist/esm/v3/query.d.ts +545 -0
- package/dist/esm/v3/query.js +160 -0
- package/dist/esm/v3/query.js.map +1 -0
- package/dist/esm/v3/queues.d.ts +107 -0
- package/dist/esm/v3/queues.js +217 -0
- package/dist/esm/v3/queues.js.map +1 -0
- package/dist/esm/v3/retry.d.ts +6 -2
- package/dist/esm/v3/retry.js +27 -19
- package/dist/esm/v3/retry.js.map +1 -1
- package/dist/esm/v3/runs.d.ts +179 -98
- package/dist/esm/v3/runs.js +99 -5
- package/dist/esm/v3/runs.js.map +1 -1
- package/dist/esm/v3/schedules/api.d.ts +8 -1
- package/dist/esm/v3/schedules/index.d.ts +29 -9
- package/dist/esm/v3/schedules/index.js +6 -2
- package/dist/esm/v3/schedules/index.js.map +1 -1
- package/dist/esm/v3/schemas.d.ts +1 -0
- package/dist/esm/v3/schemas.js +2 -0
- package/dist/esm/v3/schemas.js.map +1 -0
- package/dist/esm/v3/sessionTracing.d.ts +7 -0
- package/dist/esm/v3/sessionTracing.js +40 -0
- package/dist/esm/v3/sessionTracing.js.map +1 -0
- package/dist/esm/v3/sessions.d.ts +268 -0
- package/dist/esm/v3/sessions.js +767 -0
- package/dist/esm/v3/sessions.js.map +1 -0
- package/dist/esm/v3/shared.d.ts +129 -24
- package/dist/esm/v3/shared.js +1521 -688
- package/dist/esm/v3/shared.js.map +1 -1
- package/dist/esm/v3/skill.d.ts +99 -0
- package/dist/esm/v3/skill.js +128 -0
- package/dist/esm/v3/skill.js.map +1 -0
- package/dist/esm/v3/skills.d.ts +2 -0
- package/dist/esm/v3/skills.js +2 -0
- package/dist/esm/v3/skills.js.map +1 -0
- package/dist/esm/v3/steeringContext.d.ts +41 -0
- package/dist/esm/v3/steeringContext.js +113 -0
- package/dist/esm/v3/steeringContext.js.map +1 -0
- package/dist/esm/v3/streams.d.ts +298 -0
- package/dist/esm/v3/streams.js +580 -0
- package/dist/esm/v3/streams.js.map +1 -0
- package/dist/esm/v3/tasks.d.ts +19 -4
- package/dist/esm/v3/tasks.js +16 -2
- package/dist/esm/v3/tasks.js.map +1 -1
- package/dist/esm/v3/test/index.d.ts +5 -0
- package/dist/esm/v3/test/index.js +15 -0
- package/dist/esm/v3/test/index.js.map +1 -0
- package/dist/esm/v3/test/mock-channel-connector.d.ts +172 -0
- package/dist/esm/v3/test/mock-channel-connector.js +170 -0
- package/dist/esm/v3/test/mock-channel-connector.js.map +1 -0
- package/dist/esm/v3/test/mock-chat-agent.d.ts +388 -0
- package/dist/esm/v3/test/mock-chat-agent.js +685 -0
- package/dist/esm/v3/test/mock-chat-agent.js.map +1 -0
- package/dist/esm/v3/test/setup-catalog.d.ts +1 -0
- package/dist/esm/v3/test/setup-catalog.js +16 -0
- package/dist/esm/v3/test/setup-catalog.js.map +1 -0
- package/dist/esm/v3/test/test-session-handle.d.ts +24 -0
- package/dist/esm/v3/test/test-session-handle.js +268 -0
- package/dist/esm/v3/test/test-session-handle.js.map +1 -0
- package/dist/esm/v3/test/transcript-storage-tests.d.ts +40 -0
- package/dist/esm/v3/test/transcript-storage-tests.js +255 -0
- package/dist/esm/v3/test/transcript-storage-tests.js.map +1 -0
- package/dist/esm/v3/toolResultOrder.d.ts +15 -0
- package/dist/esm/v3/toolResultOrder.js +55 -0
- package/dist/esm/v3/toolResultOrder.js.map +1 -0
- package/dist/esm/v3/transcriptStorage.d.ts +307 -0
- package/dist/esm/v3/transcriptStorage.js +431 -0
- package/dist/esm/v3/transcriptStorage.js.map +1 -0
- package/dist/esm/v3/triggerClient.d.ts +45 -0
- package/dist/esm/v3/triggerClient.js +77 -0
- package/dist/esm/v3/triggerClient.js.map +1 -0
- package/dist/esm/v3/uiMessageChunks.d.ts +1 -0
- package/dist/esm/v3/uiMessageChunks.js +116 -0
- package/dist/esm/v3/uiMessageChunks.js.map +1 -0
- package/dist/esm/v3/usage.js +7 -6
- package/dist/esm/v3/usage.js.map +1 -1
- package/dist/esm/v3/wait.d.ts +218 -3
- package/dist/esm/v3/wait.js +431 -7
- package/dist/esm/v3/wait.js.map +1 -1
- package/dist/esm/v3/webhookWaiters.d.ts +80 -0
- package/dist/esm/v3/webhookWaiters.js +149 -0
- package/dist/esm/v3/webhookWaiters.js.map +1 -0
- package/dist/esm/v3/webhooks.d.ts +192 -2
- package/dist/esm/v3/webhooks.js +336 -2
- package/dist/esm/v3/webhooks.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/docs/ai/observability.mdx +174 -0
- package/docs/ai/prompts.mdx +426 -0
- package/docs/ai-chat/actions.mdx +148 -0
- package/docs/ai-chat/anatomy.mdx +87 -0
- package/docs/ai-chat/backend.mdx +933 -0
- package/docs/ai-chat/background-injection.mdx +320 -0
- package/docs/ai-chat/changelog.mdx +958 -0
- package/docs/ai-chat/chat-local.mdx +170 -0
- package/docs/ai-chat/client-protocol.mdx +1091 -0
- package/docs/ai-chat/compaction.mdx +413 -0
- package/docs/ai-chat/custom-agents.mdx +545 -0
- package/docs/ai-chat/error-handling.mdx +379 -0
- package/docs/ai-chat/fast-starts.mdx +764 -0
- package/docs/ai-chat/frontend.mdx +634 -0
- package/docs/ai-chat/how-it-works.mdx +226 -0
- package/docs/ai-chat/lifecycle-hooks.mdx +532 -0
- package/docs/ai-chat/mcp.mdx +97 -0
- package/docs/ai-chat/migrating-from-a-route-handler.mdx +594 -0
- package/docs/ai-chat/migrating-from-hydrate-messages.mdx +299 -0
- package/docs/ai-chat/overview.mdx +86 -0
- package/docs/ai-chat/patterns/branching-conversations.mdx +145 -0
- package/docs/ai-chat/patterns/code-sandbox.mdx +122 -0
- package/docs/ai-chat/patterns/database-persistence.mdx +425 -0
- package/docs/ai-chat/patterns/human-in-the-loop.mdx +281 -0
- package/docs/ai-chat/patterns/large-payloads.mdx +165 -0
- package/docs/ai-chat/patterns/native-compaction.mdx +310 -0
- package/docs/ai-chat/patterns/oom-resilience.mdx +116 -0
- package/docs/ai-chat/patterns/persistence-and-replay.mdx +218 -0
- package/docs/ai-chat/patterns/recovery-boot.mdx +233 -0
- package/docs/ai-chat/patterns/redacting-telemetry.mdx +117 -0
- package/docs/ai-chat/patterns/skills.mdx +214 -0
- package/docs/ai-chat/patterns/sub-agents.mdx +412 -0
- package/docs/ai-chat/patterns/tool-result-auditing.mdx +145 -0
- package/docs/ai-chat/patterns/trusted-edge-signals.mdx +333 -0
- package/docs/ai-chat/patterns/version-upgrades.mdx +261 -0
- package/docs/ai-chat/pending-messages.mdx +363 -0
- package/docs/ai-chat/prompt-caching.mdx +204 -0
- package/docs/ai-chat/quick-start.mdx +163 -0
- package/docs/ai-chat/reference.mdx +1071 -0
- package/docs/ai-chat/server-chat.mdx +259 -0
- package/docs/ai-chat/sessions.mdx +334 -0
- package/docs/ai-chat/side-channels.mdx +172 -0
- package/docs/ai-chat/testing.mdx +691 -0
- package/docs/ai-chat/tools.mdx +192 -0
- package/docs/ai-chat/transcript-storage.mdx +247 -0
- package/docs/ai-chat/types.mdx +242 -0
- package/docs/ai-chat/upgrade-guide.mdx +511 -0
- package/docs/apikeys.mdx +170 -0
- package/docs/billing-limits.mdx +73 -0
- package/docs/building-with-ai.mdx +261 -0
- package/docs/bulk-actions.mdx +77 -0
- package/docs/changelog.mdx +6 -0
- package/docs/cli-deploy-commands.mdx +9 -0
- package/docs/cli-dev-commands.mdx +9 -0
- package/docs/cli-env-commands.mdx +115 -0
- package/docs/cli-init-commands.mdx +84 -0
- package/docs/cli-introduction.mdx +25 -0
- package/docs/cli-list-profiles-commands.mdx +42 -0
- package/docs/cli-login-commands.mdx +53 -0
- package/docs/cli-logout-commands.mdx +33 -0
- package/docs/cli-preview-archive.mdx +59 -0
- package/docs/cli-projects-commands.mdx +74 -0
- package/docs/cli-promote-commands.mdx +9 -0
- package/docs/cli-runs-commands.mdx +95 -0
- package/docs/cli-switch.mdx +43 -0
- package/docs/cli-tasks-commands.mdx +95 -0
- package/docs/cli-update-commands.mdx +48 -0
- package/docs/cli-whoami-commands.mdx +45 -0
- package/docs/community.mdx +6 -0
- package/docs/concurrency.mdx +416 -0
- package/docs/config/config-file.mdx +662 -0
- package/docs/config/extensions/additionalFiles.mdx +38 -0
- package/docs/config/extensions/additionalPackages.mdx +40 -0
- package/docs/config/extensions/aptGet.mdx +34 -0
- package/docs/config/extensions/audioWaveform.mdx +23 -0
- package/docs/config/extensions/custom.mdx +393 -0
- package/docs/config/extensions/emitDecoratorMetadata.mdx +52 -0
- package/docs/config/extensions/esbuildPlugin.mdx +31 -0
- package/docs/config/extensions/ffmpeg.mdx +45 -0
- package/docs/config/extensions/lightpanda.mdx +56 -0
- package/docs/config/extensions/overview.mdx +69 -0
- package/docs/config/extensions/playwright.mdx +195 -0
- package/docs/config/extensions/prismaExtension.mdx +1013 -0
- package/docs/config/extensions/puppeteer.mdx +28 -0
- package/docs/config/extensions/pythonExtension.mdx +190 -0
- package/docs/config/extensions/syncEnvVars.mdx +330 -0
- package/docs/context.mdx +235 -0
- package/docs/database-connections.mdx +213 -0
- package/docs/deploy-environment-variables.mdx +466 -0
- package/docs/deployment/atomic-deployment.mdx +470 -0
- package/docs/deployment/dev-branches.mdx +92 -0
- package/docs/deployment/overview.mdx +260 -0
- package/docs/deployment/preview-branches.mdx +227 -0
- package/docs/errors-retrying.mdx +383 -0
- package/docs/github-actions.mdx +260 -0
- package/docs/github-integration.mdx +148 -0
- package/docs/github-repo.mdx +8 -0
- package/docs/help-email.mdx +6 -0
- package/docs/help-slack.mdx +12 -0
- package/docs/hidden-tasks.mdx +56 -0
- package/docs/how-it-works.mdx +454 -0
- package/docs/how-to-reduce-your-spend.mdx +211 -0
- package/docs/idempotency.mdx +542 -0
- package/docs/introduction.mdx +135 -0
- package/docs/limits.mdx +284 -0
- package/docs/logging.mdx +195 -0
- package/docs/machines.mdx +952 -0
- package/docs/manual-setup.mdx +632 -0
- package/docs/mcp-agent-rules.mdx +41 -0
- package/docs/mcp-introduction.mdx +386 -0
- package/docs/mcp-tools.mdx +425 -0
- package/docs/migrating-from-v3.mdx +332 -0
- package/docs/observability/dashboards.mdx +166 -0
- package/docs/observability/query.mdx +614 -0
- package/docs/open-source-contributing.mdx +16 -0
- package/docs/private-networking/aws-console-setup.mdx +304 -0
- package/docs/private-networking/overview.mdx +144 -0
- package/docs/private-networking/troubleshooting.mdx +78 -0
- package/docs/queues.mdx +271 -0
- package/docs/quick-start.mdx +60 -0
- package/docs/realtime/auth.mdx +228 -0
- package/docs/realtime/backend/input-streams.mdx +159 -0
- package/docs/realtime/backend/overview.mdx +45 -0
- package/docs/realtime/backend/streams.mdx +433 -0
- package/docs/realtime/backend/subscribe.mdx +225 -0
- package/docs/realtime/how-it-works.mdx +94 -0
- package/docs/realtime/overview.mdx +63 -0
- package/docs/realtime/react-hooks/overview.mdx +73 -0
- package/docs/realtime/react-hooks/session-stream.mdx +126 -0
- package/docs/realtime/react-hooks/streams.mdx +517 -0
- package/docs/realtime/react-hooks/subscribe.mdx +690 -0
- package/docs/realtime/react-hooks/swr.mdx +87 -0
- package/docs/realtime/react-hooks/triggering.mdx +194 -0
- package/docs/realtime/react-hooks/use-wait-token.mdx +34 -0
- package/docs/realtime/run-object.mdx +197 -0
- package/docs/replaying.mdx +97 -0
- package/docs/reports.mdx +159 -0
- package/docs/request-feature.mdx +6 -0
- package/docs/roadmap.mdx +6 -0
- package/docs/run-tests.mdx +21 -0
- package/docs/run-usage.mdx +113 -0
- package/docs/runs/bulk-actions.mdx +183 -0
- package/docs/runs/heartbeats.mdx +38 -0
- package/docs/runs/list-best-practices.mdx +234 -0
- package/docs/runs/max-duration.mdx +143 -0
- package/docs/runs/metadata.mdx +731 -0
- package/docs/runs/priority.mdx +8 -0
- package/docs/runs.mdx +406 -0
- package/docs/self-hosting/docker.mdx +512 -0
- package/docs/self-hosting/env/supervisor.mdx +78 -0
- package/docs/self-hosting/env/webapp.mdx +305 -0
- package/docs/self-hosting/kubernetes.mdx +725 -0
- package/docs/self-hosting/overview.mdx +145 -0
- package/docs/self-hosting/security.mdx +67 -0
- package/docs/skills.mdx +85 -0
- package/docs/tags.mdx +126 -0
- package/docs/tasks/overview.mdx +695 -0
- package/docs/tasks/scheduled.mdx +479 -0
- package/docs/tasks/schemaTask.mdx +413 -0
- package/docs/tasks/streams.mdx +887 -0
- package/docs/triggering.mdx +1340 -0
- package/docs/troubleshooting-alerts.mdx +607 -0
- package/docs/troubleshooting-debugging-in-vscode.mdx +9 -0
- package/docs/troubleshooting-github-issues.mdx +6 -0
- package/docs/troubleshooting-uptime-status.mdx +7 -0
- package/docs/troubleshooting-zod.mdx +158 -0
- package/docs/troubleshooting.mdx +414 -0
- package/docs/upgrading-packages.mdx +80 -0
- package/docs/vercel-integration.mdx +250 -0
- package/docs/versioning.mdx +58 -0
- package/docs/video-walkthrough.mdx +23 -0
- package/docs/wait-for-token.mdx +540 -0
- package/docs/wait-for.mdx +42 -0
- package/docs/wait-until.mdx +53 -0
- package/docs/wait.mdx +18 -0
- package/docs/webhooks/channels.mdx +154 -0
- package/docs/webhooks/connect.mdx +91 -0
- package/docs/webhooks/deliveries.mdx +99 -0
- package/docs/webhooks/filters.mdx +146 -0
- package/docs/webhooks/human-in-the-loop.mdx +158 -0
- package/docs/webhooks/linear.mdx +186 -0
- package/docs/webhooks/overview.mdx +115 -0
- package/docs/webhooks/session-routing.mdx +141 -0
- package/docs/webhooks/slack.mdx +393 -0
- package/docs/webhooks/sources.mdx +250 -0
- package/docs/webhooks/waiters.mdx +190 -0
- package/docs/writing-tasks-introduction.mdx +34 -0
- package/package.json +143 -42
- package/skills/trigger-authoring-chat-agent/SKILL.md +308 -0
- package/skills/trigger-authoring-tasks/SKILL.md +254 -0
- package/skills/trigger-chat-agent-advanced/SKILL.md +403 -0
- package/skills/trigger-cost-savings/SKILL.md +116 -0
- package/skills/trigger-realtime-and-frontend/SKILL.md +276 -0
- package/dist/commonjs/apiClient.d.ts +0 -727
- package/dist/commonjs/apiClient.js +0 -692
- package/dist/commonjs/apiClient.js.map +0 -1
- package/dist/commonjs/concurrencyLimit.d.ts +0 -10
- package/dist/commonjs/concurrencyLimit.js +0 -17
- package/dist/commonjs/concurrencyLimit.js.map +0 -1
- package/dist/commonjs/errors.d.ts +0 -66
- package/dist/commonjs/errors.js +0 -109
- package/dist/commonjs/errors.js.map +0 -1
- package/dist/commonjs/httpEndpoint.d.ts +0 -87
- package/dist/commonjs/httpEndpoint.js +0 -130
- package/dist/commonjs/httpEndpoint.js.map +0 -1
- package/dist/commonjs/index.d.ts +0 -23
- package/dist/commonjs/index.js +0 -55
- package/dist/commonjs/index.js.map +0 -1
- package/dist/commonjs/integrations.d.ts +0 -11
- package/dist/commonjs/integrations.js.map +0 -1
- package/dist/commonjs/io.d.ts +0 -441
- package/dist/commonjs/io.js +0 -1165
- package/dist/commonjs/io.js.map +0 -1
- package/dist/commonjs/ioWithIntegrations.d.ts +0 -4
- package/dist/commonjs/ioWithIntegrations.js +0 -32
- package/dist/commonjs/ioWithIntegrations.js.map +0 -1
- package/dist/commonjs/job.d.ts +0 -96
- package/dist/commonjs/job.js +0 -210
- package/dist/commonjs/job.js.map +0 -1
- package/dist/commonjs/retry.d.ts +0 -20
- package/dist/commonjs/retry.js +0 -22
- package/dist/commonjs/retry.js.map +0 -1
- package/dist/commonjs/runLocalStorage.d.ts +0 -8
- package/dist/commonjs/runLocalStorage.js +0 -6
- package/dist/commonjs/runLocalStorage.js.map +0 -1
- package/dist/commonjs/security.d.ts +0 -18
- package/dist/commonjs/security.js +0 -41
- package/dist/commonjs/security.js.map +0 -1
- package/dist/commonjs/status.d.ts +0 -19
- package/dist/commonjs/status.js +0 -38
- package/dist/commonjs/status.js.map +0 -1
- package/dist/commonjs/store/keyValueStore.d.ts +0 -17
- package/dist/commonjs/store/keyValueStore.js +0 -138
- package/dist/commonjs/store/keyValueStore.js.map +0 -1
- package/dist/commonjs/store/keyValueStoreClient.d.ts +0 -19
- package/dist/commonjs/store/keyValueStoreClient.js +0 -65
- package/dist/commonjs/store/keyValueStoreClient.js.map +0 -1
- package/dist/commonjs/triggerClient.d.ts +0 -290
- package/dist/commonjs/triggerClient.js +0 -1366
- package/dist/commonjs/triggerClient.js.map +0 -1
- package/dist/commonjs/triggers/dynamic.d.ts +0 -56
- package/dist/commonjs/triggers/dynamic.js +0 -97
- package/dist/commonjs/triggers/dynamic.js.map +0 -1
- package/dist/commonjs/triggers/eventTrigger.d.ts +0 -58
- package/dist/commonjs/triggers/eventTrigger.js +0 -69
- package/dist/commonjs/triggers/eventTrigger.js.map +0 -1
- package/dist/commonjs/triggers/externalSource.d.ts +0 -148
- package/dist/commonjs/triggers/externalSource.js +0 -106
- package/dist/commonjs/triggers/externalSource.js.map +0 -1
- package/dist/commonjs/triggers/invokeTrigger.d.ts +0 -39
- package/dist/commonjs/triggers/invokeTrigger.js +0 -58
- package/dist/commonjs/triggers/invokeTrigger.js.map +0 -1
- package/dist/commonjs/triggers/notifications.d.ts +0 -111
- package/dist/commonjs/triggers/notifications.js +0 -101
- package/dist/commonjs/triggers/notifications.js.map +0 -1
- package/dist/commonjs/triggers/scheduled.d.ts +0 -145
- package/dist/commonjs/triggers/scheduled.js +0 -208
- package/dist/commonjs/triggers/scheduled.js.map +0 -1
- package/dist/commonjs/triggers/webhook.d.ts +0 -143
- package/dist/commonjs/triggers/webhook.js +0 -133
- package/dist/commonjs/triggers/webhook.js.map +0 -1
- package/dist/commonjs/typed-emitter.d.ts +0 -37
- package/dist/commonjs/typed-emitter.js +0 -3
- package/dist/commonjs/typed-emitter.js.map +0 -1
- package/dist/commonjs/types.d.ts +0 -204
- package/dist/commonjs/types.js +0 -23
- package/dist/commonjs/types.js.map +0 -1
- package/dist/commonjs/utils/formatSchemaErrors.d.ts +0 -3
- package/dist/commonjs/utils/formatSchemaErrors.js +0 -10
- package/dist/commonjs/utils/formatSchemaErrors.js.map +0 -1
- package/dist/commonjs/utils/typedAsyncLocalStorage.d.ts +0 -6
- package/dist/commonjs/utils/typedAsyncLocalStorage.js +0 -18
- package/dist/commonjs/utils/typedAsyncLocalStorage.js.map +0 -1
- package/dist/commonjs/utils.d.ts +0 -1
- package/dist/commonjs/utils.js +0 -11
- package/dist/commonjs/utils.js.map +0 -1
- package/dist/esm/apiClient.d.ts +0 -727
- package/dist/esm/apiClient.js +0 -687
- package/dist/esm/apiClient.js.map +0 -1
- package/dist/esm/concurrencyLimit.d.ts +0 -10
- package/dist/esm/concurrencyLimit.js +0 -13
- package/dist/esm/concurrencyLimit.js.map +0 -1
- package/dist/esm/errors.d.ts +0 -66
- package/dist/esm/errors.js +0 -95
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/httpEndpoint.d.ts +0 -87
- package/dist/esm/httpEndpoint.js +0 -125
- package/dist/esm/httpEndpoint.js.map +0 -1
- package/dist/esm/index.d.ts +0 -23
- package/dist/esm/index.js +0 -35
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/integrations.d.ts +0 -11
- package/dist/esm/integrations.js +0 -2
- package/dist/esm/integrations.js.map +0 -1
- package/dist/esm/io.d.ts +0 -441
- package/dist/esm/io.js +0 -1159
- package/dist/esm/io.js.map +0 -1
- package/dist/esm/ioWithIntegrations.d.ts +0 -4
- package/dist/esm/ioWithIntegrations.js +0 -29
- package/dist/esm/ioWithIntegrations.js.map +0 -1
- package/dist/esm/job.d.ts +0 -96
- package/dist/esm/job.js +0 -206
- package/dist/esm/job.js.map +0 -1
- package/dist/esm/retry.d.ts +0 -20
- package/dist/esm/retry.js +0 -19
- package/dist/esm/retry.js.map +0 -1
- package/dist/esm/runLocalStorage.d.ts +0 -8
- package/dist/esm/runLocalStorage.js +0 -3
- package/dist/esm/runLocalStorage.js.map +0 -1
- package/dist/esm/security.d.ts +0 -18
- package/dist/esm/security.js +0 -34
- package/dist/esm/security.js.map +0 -1
- package/dist/esm/status.d.ts +0 -19
- package/dist/esm/status.js +0 -34
- package/dist/esm/status.js.map +0 -1
- package/dist/esm/store/keyValueStore.d.ts +0 -17
- package/dist/esm/store/keyValueStore.js +0 -134
- package/dist/esm/store/keyValueStore.js.map +0 -1
- package/dist/esm/store/keyValueStoreClient.d.ts +0 -19
- package/dist/esm/store/keyValueStoreClient.js +0 -61
- package/dist/esm/store/keyValueStoreClient.js.map +0 -1
- package/dist/esm/triggerClient.d.ts +0 -288
- package/dist/esm/triggerClient.js +0 -1359
- package/dist/esm/triggerClient.js.map +0 -1
- package/dist/esm/triggers/dynamic.d.ts +0 -56
- package/dist/esm/triggers/dynamic.js +0 -93
- package/dist/esm/triggers/dynamic.js.map +0 -1
- package/dist/esm/triggers/eventTrigger.d.ts +0 -58
- package/dist/esm/triggers/eventTrigger.js +0 -64
- package/dist/esm/triggers/eventTrigger.js.map +0 -1
- package/dist/esm/triggers/externalSource.d.ts +0 -148
- package/dist/esm/triggers/externalSource.js +0 -100
- package/dist/esm/triggers/externalSource.js.map +0 -1
- package/dist/esm/triggers/invokeTrigger.d.ts +0 -39
- package/dist/esm/triggers/invokeTrigger.js +0 -53
- package/dist/esm/triggers/invokeTrigger.js.map +0 -1
- package/dist/esm/triggers/notifications.d.ts +0 -111
- package/dist/esm/triggers/notifications.js +0 -94
- package/dist/esm/triggers/notifications.js.map +0 -1
- package/dist/esm/triggers/scheduled.d.ts +0 -145
- package/dist/esm/triggers/scheduled.js +0 -197
- package/dist/esm/triggers/scheduled.js.map +0 -1
- package/dist/esm/triggers/webhook.d.ts +0 -143
- package/dist/esm/triggers/webhook.js +0 -128
- package/dist/esm/triggers/webhook.js.map +0 -1
- package/dist/esm/typed-emitter.d.ts +0 -37
- package/dist/esm/typed-emitter.js +0 -2
- package/dist/esm/typed-emitter.js.map +0 -1
- package/dist/esm/types.d.ts +0 -204
- package/dist/esm/types.js +0 -19
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/utils/formatSchemaErrors.d.ts +0 -3
- package/dist/esm/utils/formatSchemaErrors.js +0 -7
- package/dist/esm/utils/formatSchemaErrors.js.map +0 -1
- package/dist/esm/utils/typedAsyncLocalStorage.d.ts +0 -6
- package/dist/esm/utils/typedAsyncLocalStorage.js +0 -14
- package/dist/esm/utils/typedAsyncLocalStorage.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -1
- package/dist/esm/utils.js +0 -8
- package/dist/esm/utils.js.map +0 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Input Streams
|
|
3
|
+
sidebarTitle: Input Streams
|
|
4
|
+
description: Send data into running tasks from your backend code
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
The Input Streams API allows you to send data into running Trigger.dev tasks from your backend code. This enables bidirectional communication — while [output streams](/realtime/backend/streams) let you read data from tasks, input streams let you push data into them.
|
|
8
|
+
|
|
9
|
+
<Note>
|
|
10
|
+
To learn how to receive input stream data inside your tasks, see [Input
|
|
11
|
+
Streams](/tasks/streams#input-streams) in the Streams doc.
|
|
12
|
+
</Note>
|
|
13
|
+
|
|
14
|
+
<Tip>
|
|
15
|
+
Input streams are keyed by `runId` — they're correct for sending data to a specific live run. If you need a bidirectional channel that survives run boundaries (e.g. a chat that resumes tomorrow, an agent coordinated across many runs), look at [`chat.agent`](/ai-chat/overview): it's built on a durable Session row that owns its runs and exposes the same consumer-side API (`on` / `once` / `wait` / `waitWithIdleTimeout`) on its `.in` channel.
|
|
16
|
+
</Tip>
|
|
17
|
+
|
|
18
|
+
## Sending data to a running task
|
|
19
|
+
|
|
20
|
+
### Using defined input streams (Recommended)
|
|
21
|
+
|
|
22
|
+
The recommended approach is to use [defined input streams](/tasks/streams#defining-input-streams) for full type safety:
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { cancelSignal, approval } from "./trigger/streams";
|
|
26
|
+
|
|
27
|
+
// Cancel a running AI stream
|
|
28
|
+
await cancelSignal.send(runId, { reason: "User clicked stop" });
|
|
29
|
+
|
|
30
|
+
// Approve a draft
|
|
31
|
+
await approval.send(runId, { approved: true, reviewer: "alice@example.com" });
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The `.send()` method is fully typed — the data parameter must match the generic type you defined on the input stream.
|
|
35
|
+
|
|
36
|
+
<Note>
|
|
37
|
+
`.send()` works the same regardless of how the task is listening — whether it uses `.wait()`
|
|
38
|
+
(suspending), `.once()` (non-suspending), or `.on()` (continuous). The sender doesn't need to know
|
|
39
|
+
how the task is consuming the data. See [Input Streams](/tasks/streams#input-streams) for details on each
|
|
40
|
+
receiving method.
|
|
41
|
+
</Note>
|
|
42
|
+
|
|
43
|
+
## Practical examples
|
|
44
|
+
|
|
45
|
+
### Cancel from a Next.js API route
|
|
46
|
+
|
|
47
|
+
```ts app/api/cancel/route.ts
|
|
48
|
+
import { cancelStream } from "@/trigger/streams";
|
|
49
|
+
|
|
50
|
+
export async function POST(req: Request) {
|
|
51
|
+
const { runId } = await req.json();
|
|
52
|
+
|
|
53
|
+
await cancelStream.send(runId, { reason: "User clicked stop" });
|
|
54
|
+
|
|
55
|
+
return Response.json({ cancelled: true });
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Approval workflow API
|
|
60
|
+
|
|
61
|
+
```ts app/api/approve/route.ts
|
|
62
|
+
import { approval } from "@/trigger/streams";
|
|
63
|
+
|
|
64
|
+
export async function POST(req: Request) {
|
|
65
|
+
const { runId, approved, reviewer } = await req.json();
|
|
66
|
+
|
|
67
|
+
await approval.send(runId, {
|
|
68
|
+
approved,
|
|
69
|
+
reviewer,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
return Response.json({ success: true });
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Remix action handler
|
|
77
|
+
|
|
78
|
+
```ts app/routes/api.approve.ts
|
|
79
|
+
import { json, type ActionFunctionArgs } from "@remix-run/node";
|
|
80
|
+
import { approval } from "~/trigger/streams";
|
|
81
|
+
|
|
82
|
+
export async function action({ request }: ActionFunctionArgs) {
|
|
83
|
+
const formData = await request.formData();
|
|
84
|
+
const runId = formData.get("runId") as string;
|
|
85
|
+
const approved = formData.get("approved") === "true";
|
|
86
|
+
const reviewer = formData.get("reviewer") as string;
|
|
87
|
+
|
|
88
|
+
await approval.send(runId, { approved, reviewer });
|
|
89
|
+
|
|
90
|
+
return json({ success: true });
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Express handler
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import express from "express";
|
|
98
|
+
import { cancelSignal } from "./trigger/streams";
|
|
99
|
+
|
|
100
|
+
const app = express();
|
|
101
|
+
app.use(express.json());
|
|
102
|
+
|
|
103
|
+
app.post("/api/cancel", async (req, res) => {
|
|
104
|
+
const { runId, reason } = req.body;
|
|
105
|
+
|
|
106
|
+
await cancelSignal.send(runId, { reason });
|
|
107
|
+
|
|
108
|
+
res.json({ cancelled: true });
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Sending from another task
|
|
113
|
+
|
|
114
|
+
You can send input stream data from one task to another running task:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
import { task } from "@trigger.dev/sdk";
|
|
118
|
+
import { approval } from "./streams";
|
|
119
|
+
|
|
120
|
+
export const reviewerTask = task({
|
|
121
|
+
id: "auto-reviewer",
|
|
122
|
+
run: async (payload: { targetRunId: string }) => {
|
|
123
|
+
// Perform automated review logic...
|
|
124
|
+
const isApproved = await performReview();
|
|
125
|
+
|
|
126
|
+
// Send approval to the waiting task
|
|
127
|
+
await approval.send(payload.targetRunId, {
|
|
128
|
+
approved: isApproved,
|
|
129
|
+
reviewer: "auto-reviewer",
|
|
130
|
+
});
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Error handling
|
|
136
|
+
|
|
137
|
+
The `.send()` method will throw if:
|
|
138
|
+
|
|
139
|
+
- The run has already completed, failed, or been canceled
|
|
140
|
+
- The payload exceeds the 1MB size limit
|
|
141
|
+
- The run ID is invalid
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
import { cancelSignal } from "./trigger/streams";
|
|
145
|
+
|
|
146
|
+
try {
|
|
147
|
+
await cancelSignal.send(runId, { reason: "User clicked stop" });
|
|
148
|
+
} catch (error) {
|
|
149
|
+
console.error("Failed to send:", error);
|
|
150
|
+
// Handle the error — the run may have already completed
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Important notes
|
|
155
|
+
|
|
156
|
+
- Maximum payload size per `.send()` call is **1MB**
|
|
157
|
+
- You cannot send data to a completed, failed, or canceled run
|
|
158
|
+
- Data sent before a listener is registered inside the task is **buffered** and delivered when a listener attaches
|
|
159
|
+
- Input streams require the current streams implementation (v2 is the default in SDK 4.1.0+). See [Streams](/tasks/streams) for details.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Subscribe to tasks from your backend"
|
|
3
|
+
sidebarTitle: Overview
|
|
4
|
+
description: "Subscribe to run progress, stream AI output, and react to task status changes from your backend code or other tasks."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
import RealtimeExamplesCards from "/snippets/realtime-examples-cards.mdx";
|
|
8
|
+
|
|
9
|
+
**Subscribe to runs from your server-side code or other tasks using async iterators.** Get status updates, metadata changes, and streamed data without polling.
|
|
10
|
+
|
|
11
|
+
## What's available
|
|
12
|
+
|
|
13
|
+
| Category | What it does | Guide |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Run updates** | Subscribe to run status, metadata, and tag changes | [Run updates](/realtime/backend/subscribe) |
|
|
16
|
+
| **Streaming** | Read AI output, file chunks, or any continuous data from tasks | [Streaming](/realtime/backend/streams) |
|
|
17
|
+
|
|
18
|
+
<Note>
|
|
19
|
+
To learn how to emit streams from your tasks, see [Streaming data from tasks](/tasks/streams).
|
|
20
|
+
</Note>
|
|
21
|
+
|
|
22
|
+
## Authentication
|
|
23
|
+
|
|
24
|
+
All backend functions support both server-side and client-side authentication:
|
|
25
|
+
|
|
26
|
+
- **Server-side**: Use your API key (automatically handled in tasks)
|
|
27
|
+
- **Client-side**: Generate a Public Access Token with appropriate scopes
|
|
28
|
+
|
|
29
|
+
See our [authentication guide](/realtime/auth) for detailed information on creating and using tokens.
|
|
30
|
+
|
|
31
|
+
## Quick example
|
|
32
|
+
|
|
33
|
+
Subscribe to a run:
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { runs, tasks } from "@trigger.dev/sdk";
|
|
37
|
+
|
|
38
|
+
// Trigger a task
|
|
39
|
+
const handle = await tasks.trigger("my-task", { some: "data" });
|
|
40
|
+
|
|
41
|
+
// Subscribe to real-time updates
|
|
42
|
+
for await (const run of runs.subscribeToRun(handle.id)) {
|
|
43
|
+
console.log(`Run ${run.id} status: ${run.status}`);
|
|
44
|
+
}
|
|
45
|
+
```
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Stream data to your backend (AI, files)"
|
|
3
|
+
sidebarTitle: "Streaming"
|
|
4
|
+
description: "Read AI/LLM output, file chunks, and other streaming data from your Trigger.dev tasks in backend code."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**Read streaming data from your tasks in backend code.** Consume AI completions as they generate, process file chunks, or handle any continuous data your tasks produce.
|
|
8
|
+
|
|
9
|
+
<Note>
|
|
10
|
+
To emit streams from your tasks, see [Streaming data from tasks](/tasks/streams). For React components, see [Streaming in React](/realtime/react-hooks/streams).
|
|
11
|
+
</Note>
|
|
12
|
+
|
|
13
|
+
<Tip>
|
|
14
|
+
Run-scoped streams are the right primitive for ephemeral I/O that lives inside a single run's lifetime. For durable, long-lived channels that outlive a run, see [`chat.agent`](/ai-chat/overview): it's built on a Session row that owns the chat's runs and exposes bidirectional `.in` / `.out` channels addressed by a durable id.
|
|
15
|
+
</Tip>
|
|
16
|
+
|
|
17
|
+
## Reading streams
|
|
18
|
+
|
|
19
|
+
### Using defined streams (Recommended)
|
|
20
|
+
|
|
21
|
+
The recommended approach is to use [defined streams](/tasks/streams#defining-typed-streams-recommended) for full type safety:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { streams } from "@trigger.dev/sdk";
|
|
25
|
+
import { aiStream } from "./trigger/streams";
|
|
26
|
+
|
|
27
|
+
async function consumeStream(runId: string) {
|
|
28
|
+
// Read from the defined stream
|
|
29
|
+
const stream = await aiStream.read(runId);
|
|
30
|
+
|
|
31
|
+
let fullText = "";
|
|
32
|
+
|
|
33
|
+
for await (const chunk of stream) {
|
|
34
|
+
console.log("Received chunk:", chunk); // chunk is typed!
|
|
35
|
+
fullText += chunk;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
console.log("Final text:", fullText);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Direct stream reading
|
|
43
|
+
|
|
44
|
+
If you prefer not to use defined streams, you can read directly by specifying the stream key:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { streams } from "@trigger.dev/sdk";
|
|
48
|
+
|
|
49
|
+
async function consumeStream(runId: string) {
|
|
50
|
+
// Read from a stream by key
|
|
51
|
+
const stream = await streams.read<string>(runId, "ai-output");
|
|
52
|
+
|
|
53
|
+
for await (const chunk of stream) {
|
|
54
|
+
console.log("Received chunk:", chunk);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Reading from the default stream
|
|
60
|
+
|
|
61
|
+
Every run has a default stream, so you can omit the stream key:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { streams } from "@trigger.dev/sdk";
|
|
65
|
+
|
|
66
|
+
async function consumeDefaultStream(runId: string) {
|
|
67
|
+
// Read from the default stream
|
|
68
|
+
const stream = await streams.read<string>(runId);
|
|
69
|
+
|
|
70
|
+
for await (const chunk of stream) {
|
|
71
|
+
console.log("Received chunk:", chunk);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Stream options
|
|
77
|
+
|
|
78
|
+
The `read()` method accepts several options for controlling stream behavior:
|
|
79
|
+
|
|
80
|
+
### Timeout
|
|
81
|
+
|
|
82
|
+
Set a timeout to stop reading if no data is received within a specified time:
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import { streams } from "@trigger.dev/sdk";
|
|
86
|
+
import { aiStream } from "./trigger/streams";
|
|
87
|
+
|
|
88
|
+
async function consumeWithTimeout(runId: string) {
|
|
89
|
+
const stream = await aiStream.read(runId, {
|
|
90
|
+
timeoutInSeconds: 120, // Wait up to 2 minutes for data
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
for await (const chunk of stream) {
|
|
94
|
+
console.log("Received chunk:", chunk);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// The loop ends normally if no data arrives within the timeout
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
If no data arrives within `timeoutInSeconds`, the stream closes and the `for await` loop ends without throwing an error. To detect a timeout, track whether you received the chunk you expected to be last.
|
|
102
|
+
|
|
103
|
+
### Start index
|
|
104
|
+
|
|
105
|
+
Resume reading from a specific chunk index (useful for reconnection scenarios):
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { streams } from "@trigger.dev/sdk";
|
|
109
|
+
import { aiStream } from "./trigger/streams";
|
|
110
|
+
|
|
111
|
+
async function resumeStream(runId: string, lastChunkIndex: number) {
|
|
112
|
+
// Start reading from the chunk after the last one we received
|
|
113
|
+
const stream = await aiStream.read(runId, {
|
|
114
|
+
startIndex: lastChunkIndex + 1,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
for await (const chunk of stream) {
|
|
118
|
+
console.log("Received chunk:", chunk);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Start from latest
|
|
124
|
+
|
|
125
|
+
Pass `from: "latest"` to start reading at the end of the stream instead of replaying its history. You may still receive the most recent existing chunk before new chunks arrive. The default is `"beginning"`, which replays the full history first. `from` is ignored when `startIndex` is set:
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import { streams } from "@trigger.dev/sdk";
|
|
129
|
+
import { aiStream } from "./trigger/streams";
|
|
130
|
+
|
|
131
|
+
async function watchLive(runId: string) {
|
|
132
|
+
const stream = await aiStream.read(runId, {
|
|
133
|
+
from: "latest", // Start at the end of the stream instead of replaying history
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
for await (const chunk of stream) {
|
|
137
|
+
console.log("Received chunk:", chunk);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Abort signal
|
|
143
|
+
|
|
144
|
+
Use an `AbortSignal` to cancel stream reading:
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
import { streams } from "@trigger.dev/sdk";
|
|
148
|
+
import { aiStream } from "./trigger/streams";
|
|
149
|
+
|
|
150
|
+
async function consumeWithCancellation(runId: string) {
|
|
151
|
+
const controller = new AbortController();
|
|
152
|
+
|
|
153
|
+
// Cancel after 30 seconds
|
|
154
|
+
setTimeout(() => controller.abort(), 30000);
|
|
155
|
+
|
|
156
|
+
const stream = await aiStream.read(runId, {
|
|
157
|
+
signal: controller.signal,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
for await (const chunk of stream) {
|
|
162
|
+
console.log("Received chunk:", chunk);
|
|
163
|
+
|
|
164
|
+
// Optionally abort based on content
|
|
165
|
+
if (chunk.includes("STOP")) {
|
|
166
|
+
controller.abort();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
} catch (error) {
|
|
170
|
+
if (error.name === "AbortError") {
|
|
171
|
+
console.log("Stream was cancelled");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Combining options
|
|
178
|
+
|
|
179
|
+
You can combine multiple options:
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
import { streams } from "@trigger.dev/sdk";
|
|
183
|
+
import { aiStream } from "./trigger/streams";
|
|
184
|
+
|
|
185
|
+
async function advancedStreamConsumption(runId: string) {
|
|
186
|
+
const controller = new AbortController();
|
|
187
|
+
|
|
188
|
+
const stream = await aiStream.read(runId, {
|
|
189
|
+
timeoutInSeconds: 300, // 5 minute timeout
|
|
190
|
+
startIndex: 0, // Start from the beginning
|
|
191
|
+
signal: controller.signal, // Allow cancellation
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
for await (const chunk of stream) {
|
|
196
|
+
console.log("Received chunk:", chunk);
|
|
197
|
+
}
|
|
198
|
+
} catch (error) {
|
|
199
|
+
if (error.name === "AbortError") {
|
|
200
|
+
console.log("Stream was cancelled");
|
|
201
|
+
} else {
|
|
202
|
+
console.error("Stream error:", error);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Practical examples
|
|
209
|
+
|
|
210
|
+
### Reading AI streaming responses
|
|
211
|
+
|
|
212
|
+
Here's a complete example of consuming an AI stream from your backend:
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
import { streams } from "@trigger.dev/sdk";
|
|
216
|
+
import { aiStream } from "./trigger/streams";
|
|
217
|
+
|
|
218
|
+
async function consumeAIStream(runId: string) {
|
|
219
|
+
const stream = await aiStream.read(runId, {
|
|
220
|
+
timeoutInSeconds: 300, // AI responses can take time
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
let fullResponse = "";
|
|
224
|
+
const chunks: string[] = [];
|
|
225
|
+
|
|
226
|
+
for await (const chunk of stream) {
|
|
227
|
+
chunks.push(chunk);
|
|
228
|
+
fullResponse += chunk;
|
|
229
|
+
|
|
230
|
+
// Process each chunk as it arrives
|
|
231
|
+
console.log("Chunk received:", chunk);
|
|
232
|
+
|
|
233
|
+
// Could send to websocket, SSE, etc.
|
|
234
|
+
// await sendToClient(chunk);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
console.log("Stream complete!");
|
|
238
|
+
console.log("Total chunks:", chunks.length);
|
|
239
|
+
console.log("Full response:", fullResponse);
|
|
240
|
+
|
|
241
|
+
return { fullResponse, chunks };
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Reading multiple streams
|
|
246
|
+
|
|
247
|
+
If a task emits multiple streams, you can read them concurrently or sequentially:
|
|
248
|
+
|
|
249
|
+
```ts
|
|
250
|
+
import { streams } from "@trigger.dev/sdk";
|
|
251
|
+
import { aiStream, progressStream } from "./trigger/streams";
|
|
252
|
+
|
|
253
|
+
async function consumeMultipleStreams(runId: string) {
|
|
254
|
+
// Read streams concurrently
|
|
255
|
+
const [aiData, progressData] = await Promise.all([
|
|
256
|
+
consumeStream(aiStream, runId),
|
|
257
|
+
consumeStream(progressStream, runId),
|
|
258
|
+
]);
|
|
259
|
+
|
|
260
|
+
return { aiData, progressData };
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
async function consumeStream<T>(
|
|
264
|
+
streamDef: { read: (runId: string) => Promise<AsyncIterableStream<T>> },
|
|
265
|
+
runId: string
|
|
266
|
+
): Promise<T[]> {
|
|
267
|
+
const stream = await streamDef.read(runId);
|
|
268
|
+
const chunks: T[] = [];
|
|
269
|
+
|
|
270
|
+
for await (const chunk of stream) {
|
|
271
|
+
chunks.push(chunk);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return chunks;
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Piping streams to HTTP responses
|
|
279
|
+
|
|
280
|
+
You can pipe streams directly to HTTP responses for server-sent events (SSE):
|
|
281
|
+
|
|
282
|
+
```ts
|
|
283
|
+
import { streams } from "@trigger.dev/sdk";
|
|
284
|
+
import { aiStream } from "./trigger/streams";
|
|
285
|
+
import type { NextRequest } from "next/server";
|
|
286
|
+
|
|
287
|
+
export async function GET(request: NextRequest) {
|
|
288
|
+
const runId = request.nextUrl.searchParams.get("runId");
|
|
289
|
+
|
|
290
|
+
if (!runId) {
|
|
291
|
+
return new Response("Missing runId", { status: 400 });
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const stream = await aiStream.read(runId, {
|
|
295
|
+
timeoutInSeconds: 300,
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
// Create a readable stream for SSE
|
|
299
|
+
const encoder = new TextEncoder();
|
|
300
|
+
const readableStream = new ReadableStream({
|
|
301
|
+
async start(controller) {
|
|
302
|
+
try {
|
|
303
|
+
for await (const chunk of stream) {
|
|
304
|
+
// Format as SSE
|
|
305
|
+
const data = `data: ${JSON.stringify({ chunk })}\n\n`;
|
|
306
|
+
controller.enqueue(encoder.encode(data));
|
|
307
|
+
}
|
|
308
|
+
controller.close();
|
|
309
|
+
} catch (error) {
|
|
310
|
+
controller.error(error);
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
return new Response(readableStream, {
|
|
316
|
+
headers: {
|
|
317
|
+
"Content-Type": "text/event-stream",
|
|
318
|
+
"Cache-Control": "no-cache",
|
|
319
|
+
"Connection": "keep-alive",
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Implementing retry logic
|
|
326
|
+
|
|
327
|
+
Handle transient errors with retry logic:
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
import { streams } from "@trigger.dev/sdk";
|
|
331
|
+
import { aiStream } from "./trigger/streams";
|
|
332
|
+
|
|
333
|
+
async function consumeStreamWithRetry(
|
|
334
|
+
runId: string,
|
|
335
|
+
maxRetries = 3
|
|
336
|
+
): Promise<string[]> {
|
|
337
|
+
let lastChunkIndex = 0;
|
|
338
|
+
const allChunks: string[] = [];
|
|
339
|
+
let attempt = 0;
|
|
340
|
+
|
|
341
|
+
while (attempt < maxRetries) {
|
|
342
|
+
try {
|
|
343
|
+
const stream = await aiStream.read(runId, {
|
|
344
|
+
startIndex: lastChunkIndex,
|
|
345
|
+
timeoutInSeconds: 120,
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
for await (const chunk of stream) {
|
|
349
|
+
allChunks.push(chunk);
|
|
350
|
+
lastChunkIndex++;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// Success! Break out of retry loop
|
|
354
|
+
break;
|
|
355
|
+
} catch (error) {
|
|
356
|
+
attempt++;
|
|
357
|
+
|
|
358
|
+
if (attempt >= maxRetries) {
|
|
359
|
+
throw new Error(`Failed after ${maxRetries} attempts: ${error.message}`);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
console.log(`Retry attempt ${attempt} after error:`, error.message);
|
|
363
|
+
|
|
364
|
+
// Wait before retrying (exponential backoff)
|
|
365
|
+
await new Promise((resolve) => setTimeout(resolve, 1000 * Math.pow(2, attempt)));
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return allChunks;
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Processing streams in chunks
|
|
374
|
+
|
|
375
|
+
Process streams in batches for efficiency:
|
|
376
|
+
|
|
377
|
+
```ts
|
|
378
|
+
import { streams } from "@trigger.dev/sdk";
|
|
379
|
+
import { aiStream } from "./trigger/streams";
|
|
380
|
+
|
|
381
|
+
async function processStreamInBatches(runId: string, batchSize = 10) {
|
|
382
|
+
const stream = await aiStream.read(runId);
|
|
383
|
+
|
|
384
|
+
let batch: string[] = [];
|
|
385
|
+
|
|
386
|
+
for await (const chunk of stream) {
|
|
387
|
+
batch.push(chunk);
|
|
388
|
+
|
|
389
|
+
if (batch.length >= batchSize) {
|
|
390
|
+
// Process the batch
|
|
391
|
+
await processBatch(batch);
|
|
392
|
+
batch = [];
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Process remaining chunks
|
|
397
|
+
if (batch.length > 0) {
|
|
398
|
+
await processBatch(batch);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
async function processBatch(chunks: string[]) {
|
|
403
|
+
console.log(`Processing batch of ${chunks.length} chunks`);
|
|
404
|
+
// Do something with the batch
|
|
405
|
+
// e.g., save to database, send to queue, etc.
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
## Using with `runs.subscribeToRun()`
|
|
410
|
+
|
|
411
|
+
For more advanced use cases where you need both the run status and streams, you can use the `runs.subscribeToRun()` method with `.withStreams()`:
|
|
412
|
+
|
|
413
|
+
```ts
|
|
414
|
+
import { runs } from "@trigger.dev/sdk";
|
|
415
|
+
import type { myTask } from "./trigger/myTask";
|
|
416
|
+
|
|
417
|
+
async function subscribeToRunAndStreams(runId: string) {
|
|
418
|
+
for await (const update of runs.subscribeToRun<typeof myTask>(runId).withStreams()) {
|
|
419
|
+
switch (update.type) {
|
|
420
|
+
case "run":
|
|
421
|
+
console.log("Run update:", update.run.status);
|
|
422
|
+
break;
|
|
423
|
+
case "default":
|
|
424
|
+
console.log("Stream chunk:", update.chunk);
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
<Note>
|
|
432
|
+
For most use cases, we recommend using `streams.read()` with defined streams for better type safety and clearer code. Use `runs.subscribeToRun().withStreams()` only when you need to track both run status and stream data simultaneously.
|
|
433
|
+
</Note>
|