@trigger.dev/core 4.4.5 → 4.5.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/v3/apiClient/errors.d.ts +5 -0
- package/dist/commonjs/v3/apiClient/errors.js +12 -0
- package/dist/commonjs/v3/apiClient/errors.js.map +1 -1
- package/dist/commonjs/v3/apiClient/index.d.ts +208 -1
- package/dist/commonjs/v3/apiClient/index.js +204 -0
- package/dist/commonjs/v3/apiClient/index.js.map +1 -1
- package/dist/commonjs/v3/apiClient/runStream.d.ts +44 -0
- package/dist/commonjs/v3/apiClient/runStream.js +156 -22
- package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
- package/dist/commonjs/v3/apiClient/runStream.test.d.ts +1 -0
- package/dist/commonjs/v3/apiClient/runStream.test.js +511 -0
- package/dist/commonjs/v3/apiClient/runStream.test.js.map +1 -0
- package/dist/commonjs/v3/apiClient/types.d.ts +2 -0
- package/dist/commonjs/v3/auth/environment.d.ts +62 -0
- package/dist/commonjs/v3/auth/environment.js +20 -0
- package/dist/commonjs/v3/auth/environment.js.map +1 -0
- package/dist/commonjs/v3/errors.d.ts +7 -0
- package/dist/commonjs/v3/errors.js +36 -2
- package/dist/commonjs/v3/errors.js.map +1 -1
- package/dist/commonjs/v3/index.d.ts +2 -1
- package/dist/commonjs/v3/index.js +1 -0
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/inputStreams/index.d.ts +3 -0
- package/dist/commonjs/v3/inputStreams/index.js +9 -0
- package/dist/commonjs/v3/inputStreams/index.js.map +1 -1
- package/dist/commonjs/v3/inputStreams/manager.d.ts +14 -0
- package/dist/commonjs/v3/inputStreams/manager.js +116 -4
- package/dist/commonjs/v3/inputStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/inputStreams/noopManager.d.ts +3 -0
- package/dist/commonjs/v3/inputStreams/noopManager.js +3 -0
- package/dist/commonjs/v3/inputStreams/noopManager.js.map +1 -1
- package/dist/commonjs/v3/inputStreams/types.d.ts +19 -0
- package/dist/commonjs/v3/links.d.ts +1 -0
- package/dist/commonjs/v3/links.js +1 -0
- package/dist/commonjs/v3/links.js.map +1 -1
- package/dist/commonjs/v3/locals/manager.js.map +1 -1
- package/dist/commonjs/v3/locals/types.d.ts +18 -7
- package/dist/commonjs/v3/realtime-streams-api.d.ts +3 -0
- package/dist/commonjs/v3/realtime-streams-api.js +8 -1
- package/dist/commonjs/v3/realtime-streams-api.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/index.d.ts +3 -0
- package/dist/commonjs/v3/realtimeStreams/index.js +11 -1
- package/dist/commonjs/v3/realtimeStreams/index.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/manager.d.ts +11 -0
- package/dist/commonjs/v3/realtimeStreams/manager.js +58 -2
- package/dist/commonjs/v3/realtimeStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +1 -0
- package/dist/commonjs/v3/realtimeStreams/manager.test.js +92 -0
- package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +1 -0
- package/dist/commonjs/v3/realtimeStreams/noopManager.js +1 -1
- package/dist/commonjs/v3/realtimeStreams/noopManager.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.d.ts +41 -0
- package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.js +77 -0
- package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.js.map +1 -0
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +45 -0
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +83 -0
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -0
- package/dist/commonjs/v3/realtimeStreams/streamInstance.d.ts +14 -2
- package/dist/commonjs/v3/realtimeStreams/streamInstance.js +5 -2
- package/dist/commonjs/v3/realtimeStreams/streamInstance.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.d.ts +2 -2
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js +2 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.d.ts +23 -2
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js +57 -4
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +1 -0
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +68 -0
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +1 -0
- package/dist/commonjs/v3/realtimeStreams/types.d.ts +42 -3
- package/dist/commonjs/v3/resource-catalog/catalog.d.ts +4 -1
- package/dist/commonjs/v3/resource-catalog/index.d.ts +4 -1
- package/dist/commonjs/v3/resource-catalog/index.js +9 -0
- package/dist/commonjs/v3/resource-catalog/index.js.map +1 -1
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +4 -1
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js +9 -0
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +6 -1
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +52 -4
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +2 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +21 -7
- package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +14 -7
- package/dist/commonjs/v3/schemas/api.d.ts +338 -5
- package/dist/commonjs/v3/schemas/api.js +82 -9
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/schemas/build.d.ts +240 -0
- package/dist/commonjs/v3/schemas/build.js +3 -0
- package/dist/commonjs/v3/schemas/build.js.map +1 -1
- package/dist/commonjs/v3/schemas/checkpoints.d.ts +7 -0
- package/dist/commonjs/v3/schemas/common.d.ts +24 -24
- package/dist/commonjs/v3/schemas/common.js +1 -0
- package/dist/commonjs/v3/schemas/common.js.map +1 -1
- package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +1 -0
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js +143 -0
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +1 -0
- package/dist/commonjs/v3/schemas/messages.d.ts +276 -116
- package/dist/commonjs/v3/schemas/resources.d.ts +40 -0
- package/dist/commonjs/v3/schemas/resources.js +5 -1
- package/dist/commonjs/v3/schemas/resources.js.map +1 -1
- package/dist/commonjs/v3/schemas/runEngine.d.ts +12 -0
- package/dist/commonjs/v3/schemas/runEngine.js +3 -1
- package/dist/commonjs/v3/schemas/runEngine.js.map +1 -1
- package/dist/commonjs/v3/schemas/schemas.d.ts +59 -0
- package/dist/commonjs/v3/schemas/schemas.js +21 -1
- package/dist/commonjs/v3/schemas/schemas.js.map +1 -1
- package/dist/commonjs/v3/schemas/webhooks.d.ts +16 -16
- package/dist/commonjs/v3/semanticInternalAttributes.d.ts +1 -0
- package/dist/commonjs/v3/semanticInternalAttributes.js +1 -0
- package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
- package/dist/commonjs/v3/session-streams-api.d.ts +5 -0
- package/dist/commonjs/v3/session-streams-api.js +25 -0
- package/dist/commonjs/v3/session-streams-api.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.d.ts +53 -0
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.js +43 -0
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/index.d.ts +24 -0
- package/dist/commonjs/v3/sessionStreams/index.js +64 -0
- package/dist/commonjs/v3/sessionStreams/index.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/manager.d.ts +54 -0
- package/dist/commonjs/v3/sessionStreams/manager.js +511 -0
- package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +1 -0
- package/dist/commonjs/v3/sessionStreams/manager.test.js +123 -0
- package/dist/commonjs/v3/sessionStreams/manager.test.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +20 -0
- package/dist/commonjs/v3/sessionStreams/noopManager.js +35 -0
- package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/types.d.ts +65 -0
- package/dist/commonjs/v3/sessionStreams/types.js +7 -0
- package/dist/commonjs/v3/sessionStreams/types.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/wireProtocol.d.ts +65 -0
- package/dist/commonjs/v3/sessionStreams/wireProtocol.js +72 -0
- package/dist/commonjs/v3/sessionStreams/wireProtocol.js.map +1 -0
- package/dist/commonjs/v3/taskContext/index.d.ts +4 -0
- package/dist/commonjs/v3/taskContext/index.js +18 -0
- package/dist/commonjs/v3/taskContext/index.js.map +1 -1
- package/dist/commonjs/v3/taskContext/index.test.d.ts +1 -0
- package/dist/commonjs/v3/taskContext/index.test.js +73 -0
- package/dist/commonjs/v3/taskContext/index.test.js.map +1 -0
- package/dist/commonjs/v3/taskContext/otelProcessors.js +11 -0
- package/dist/commonjs/v3/taskContext/otelProcessors.js.map +1 -1
- package/dist/commonjs/v3/test/index.d.ts +5 -0
- package/dist/commonjs/v3/test/index.js +14 -0
- package/dist/commonjs/v3/test/index.js.map +1 -0
- package/dist/commonjs/v3/test/mock-task-context.d.ts +123 -0
- package/dist/commonjs/v3/test/mock-task-context.js +193 -0
- package/dist/commonjs/v3/test/mock-task-context.js.map +1 -0
- package/dist/commonjs/v3/test/test-input-stream-manager.d.ts +46 -0
- package/dist/commonjs/v3/test/test-input-stream-manager.js +192 -0
- package/dist/commonjs/v3/test/test-input-stream-manager.js.map +1 -0
- package/dist/commonjs/v3/test/test-realtime-streams-manager.d.ts +40 -0
- package/dist/commonjs/v3/test/test-realtime-streams-manager.js +140 -0
- package/dist/commonjs/v3/test/test-realtime-streams-manager.js.map +1 -0
- package/dist/commonjs/v3/test/test-run-metadata-manager.d.ts +31 -0
- package/dist/commonjs/v3/test/test-run-metadata-manager.js +86 -0
- package/dist/commonjs/v3/test/test-run-metadata-manager.js.map +1 -0
- package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +60 -0
- package/dist/commonjs/v3/test/test-session-stream-manager.js +247 -0
- package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -0
- package/dist/commonjs/v3/types/tasks.d.ts +35 -0
- package/dist/commonjs/v3/utils/gitBranch.d.ts +2 -0
- package/dist/commonjs/v3/utils/gitBranch.js +46 -0
- package/dist/commonjs/v3/utils/gitBranch.js.map +1 -0
- package/dist/commonjs/v3/utils/globals.d.ts +2 -0
- package/dist/commonjs/v3/utils/globals.js.map +1 -1
- package/dist/commonjs/v3/utils/reconnectBackoff.d.ts +20 -0
- package/dist/commonjs/v3/utils/reconnectBackoff.js +29 -0
- package/dist/commonjs/v3/utils/reconnectBackoff.js.map +1 -0
- package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +1 -0
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js +76 -0
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +1 -0
- package/dist/commonjs/v3/workers/index.d.ts +1 -0
- package/dist/commonjs/v3/workers/index.js +3 -1
- package/dist/commonjs/v3/workers/index.js.map +1 -1
- package/dist/commonjs/v3/workers/taskExecutor.js +1 -0
- package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
- package/dist/commonjs/v3/zodIpc.d.ts +1 -0
- package/dist/commonjs/v3/zodIpc.js +13 -1
- package/dist/commonjs/v3/zodIpc.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/apiClient/errors.d.ts +5 -0
- package/dist/esm/v3/apiClient/errors.js +11 -0
- package/dist/esm/v3/apiClient/errors.js.map +1 -1
- package/dist/esm/v3/apiClient/index.d.ts +208 -1
- package/dist/esm/v3/apiClient/index.js +205 -1
- package/dist/esm/v3/apiClient/index.js.map +1 -1
- package/dist/esm/v3/apiClient/runStream.d.ts +44 -0
- package/dist/esm/v3/apiClient/runStream.js +157 -23
- package/dist/esm/v3/apiClient/runStream.js.map +1 -1
- package/dist/esm/v3/apiClient/runStream.test.d.ts +1 -0
- package/dist/esm/v3/apiClient/runStream.test.js +509 -0
- package/dist/esm/v3/apiClient/runStream.test.js.map +1 -0
- package/dist/esm/v3/apiClient/types.d.ts +2 -0
- package/dist/esm/v3/auth/environment.d.ts +62 -0
- package/dist/esm/v3/auth/environment.js +19 -0
- package/dist/esm/v3/auth/environment.js.map +1 -0
- package/dist/esm/v3/errors.d.ts +7 -0
- package/dist/esm/v3/errors.js +33 -1
- package/dist/esm/v3/errors.js.map +1 -1
- package/dist/esm/v3/index.d.ts +2 -1
- package/dist/esm/v3/index.js +1 -0
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/inputStreams/index.d.ts +3 -0
- package/dist/esm/v3/inputStreams/index.js +9 -0
- package/dist/esm/v3/inputStreams/index.js.map +1 -1
- package/dist/esm/v3/inputStreams/manager.d.ts +14 -0
- package/dist/esm/v3/inputStreams/manager.js +116 -4
- package/dist/esm/v3/inputStreams/manager.js.map +1 -1
- package/dist/esm/v3/inputStreams/noopManager.d.ts +3 -0
- package/dist/esm/v3/inputStreams/noopManager.js +3 -0
- package/dist/esm/v3/inputStreams/noopManager.js.map +1 -1
- package/dist/esm/v3/inputStreams/types.d.ts +19 -0
- package/dist/esm/v3/links.d.ts +1 -0
- package/dist/esm/v3/links.js +1 -0
- package/dist/esm/v3/links.js.map +1 -1
- package/dist/esm/v3/locals/manager.js.map +1 -1
- package/dist/esm/v3/locals/types.d.ts +18 -7
- package/dist/esm/v3/realtime-streams-api.d.ts +3 -0
- package/dist/esm/v3/realtime-streams-api.js +2 -0
- package/dist/esm/v3/realtime-streams-api.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/index.d.ts +3 -0
- package/dist/esm/v3/realtimeStreams/index.js +5 -0
- package/dist/esm/v3/realtimeStreams/index.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/manager.d.ts +11 -0
- package/dist/esm/v3/realtimeStreams/manager.js +58 -2
- package/dist/esm/v3/realtimeStreams/manager.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/manager.test.d.ts +1 -0
- package/dist/esm/v3/realtimeStreams/manager.test.js +90 -0
- package/dist/esm/v3/realtimeStreams/manager.test.js.map +1 -0
- package/dist/esm/v3/realtimeStreams/noopManager.js +1 -1
- package/dist/esm/v3/realtimeStreams/noopManager.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/sessionStreamInstance.d.ts +41 -0
- package/dist/esm/v3/realtimeStreams/sessionStreamInstance.js +73 -0
- package/dist/esm/v3/realtimeStreams/sessionStreamInstance.js.map +1 -0
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +45 -0
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +77 -0
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -0
- package/dist/esm/v3/realtimeStreams/streamInstance.d.ts +14 -2
- package/dist/esm/v3/realtimeStreams/streamInstance.js +5 -2
- package/dist/esm/v3/realtimeStreams/streamInstance.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV1.d.ts +2 -2
- package/dist/esm/v3/realtimeStreams/streamsWriterV1.js +2 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV1.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.d.ts +23 -2
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.js +56 -4
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +1 -0
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +66 -0
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +1 -0
- package/dist/esm/v3/realtimeStreams/types.d.ts +42 -3
- package/dist/esm/v3/resource-catalog/catalog.d.ts +4 -1
- package/dist/esm/v3/resource-catalog/index.d.ts +4 -1
- package/dist/esm/v3/resource-catalog/index.js +9 -0
- package/dist/esm/v3/resource-catalog/index.js.map +1 -1
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +4 -1
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.js +9 -0
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +6 -1
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +52 -4
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +2 -0
- package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +21 -7
- package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +14 -7
- package/dist/esm/v3/schemas/api.d.ts +338 -5
- package/dist/esm/v3/schemas/api.js +80 -7
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/schemas/build.d.ts +240 -0
- package/dist/esm/v3/schemas/build.js +4 -1
- package/dist/esm/v3/schemas/build.js.map +1 -1
- package/dist/esm/v3/schemas/checkpoints.d.ts +7 -0
- package/dist/esm/v3/schemas/common.d.ts +24 -24
- package/dist/esm/v3/schemas/common.js +1 -0
- package/dist/esm/v3/schemas/common.js.map +1 -1
- package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +1 -0
- package/dist/esm/v3/schemas/idempotencyKey.test.js +141 -0
- package/dist/esm/v3/schemas/idempotencyKey.test.js.map +1 -0
- package/dist/esm/v3/schemas/messages.d.ts +276 -116
- package/dist/esm/v3/schemas/resources.d.ts +40 -0
- package/dist/esm/v3/schemas/resources.js +4 -0
- package/dist/esm/v3/schemas/resources.js.map +1 -1
- package/dist/esm/v3/schemas/runEngine.d.ts +12 -0
- package/dist/esm/v3/schemas/runEngine.js +2 -0
- package/dist/esm/v3/schemas/runEngine.js.map +1 -1
- package/dist/esm/v3/schemas/schemas.d.ts +59 -0
- package/dist/esm/v3/schemas/schemas.js +20 -0
- package/dist/esm/v3/schemas/schemas.js.map +1 -1
- package/dist/esm/v3/schemas/webhooks.d.ts +16 -16
- package/dist/esm/v3/semanticInternalAttributes.d.ts +1 -0
- package/dist/esm/v3/semanticInternalAttributes.js +1 -0
- package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
- package/dist/esm/v3/session-streams-api.d.ts +5 -0
- package/dist/esm/v3/session-streams-api.js +8 -0
- package/dist/esm/v3/session-streams-api.js.map +1 -0
- package/dist/esm/v3/sessionStreams/chatSnapshot.d.ts +53 -0
- package/dist/esm/v3/sessionStreams/chatSnapshot.js +39 -0
- package/dist/esm/v3/sessionStreams/chatSnapshot.js.map +1 -0
- package/dist/esm/v3/sessionStreams/index.d.ts +24 -0
- package/dist/esm/v3/sessionStreams/index.js +60 -0
- package/dist/esm/v3/sessionStreams/index.js.map +1 -0
- package/dist/esm/v3/sessionStreams/manager.d.ts +54 -0
- package/dist/esm/v3/sessionStreams/manager.js +507 -0
- package/dist/esm/v3/sessionStreams/manager.js.map +1 -0
- package/dist/esm/v3/sessionStreams/manager.test.d.ts +1 -0
- package/dist/esm/v3/sessionStreams/manager.test.js +121 -0
- package/dist/esm/v3/sessionStreams/manager.test.js.map +1 -0
- package/dist/esm/v3/sessionStreams/noopManager.d.ts +20 -0
- package/dist/esm/v3/sessionStreams/noopManager.js +31 -0
- package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -0
- package/dist/esm/v3/sessionStreams/types.d.ts +65 -0
- package/dist/esm/v3/sessionStreams/types.js +8 -0
- package/dist/esm/v3/sessionStreams/types.js.map +1 -0
- package/dist/esm/v3/sessionStreams/wireProtocol.d.ts +65 -0
- package/dist/esm/v3/sessionStreams/wireProtocol.js +66 -0
- package/dist/esm/v3/sessionStreams/wireProtocol.js.map +1 -0
- package/dist/esm/v3/taskContext/index.d.ts +4 -0
- package/dist/esm/v3/taskContext/index.js +18 -0
- package/dist/esm/v3/taskContext/index.js.map +1 -1
- package/dist/esm/v3/taskContext/index.test.d.ts +1 -0
- package/dist/esm/v3/taskContext/index.test.js +71 -0
- package/dist/esm/v3/taskContext/index.test.js.map +1 -0
- package/dist/esm/v3/taskContext/otelProcessors.js +11 -0
- package/dist/esm/v3/taskContext/otelProcessors.js.map +1 -1
- package/dist/esm/v3/test/index.d.ts +5 -0
- package/dist/esm/v3/test/index.js +6 -0
- package/dist/esm/v3/test/index.js.map +1 -0
- package/dist/esm/v3/test/mock-task-context.d.ts +123 -0
- package/dist/esm/v3/test/mock-task-context.js +190 -0
- package/dist/esm/v3/test/mock-task-context.js.map +1 -0
- package/dist/esm/v3/test/test-input-stream-manager.d.ts +46 -0
- package/dist/esm/v3/test/test-input-stream-manager.js +188 -0
- package/dist/esm/v3/test/test-input-stream-manager.js.map +1 -0
- package/dist/esm/v3/test/test-realtime-streams-manager.d.ts +40 -0
- package/dist/esm/v3/test/test-realtime-streams-manager.js +136 -0
- package/dist/esm/v3/test/test-realtime-streams-manager.js.map +1 -0
- package/dist/esm/v3/test/test-run-metadata-manager.d.ts +31 -0
- package/dist/esm/v3/test/test-run-metadata-manager.js +82 -0
- package/dist/esm/v3/test/test-run-metadata-manager.js.map +1 -0
- package/dist/esm/v3/test/test-session-stream-manager.d.ts +60 -0
- package/dist/esm/v3/test/test-session-stream-manager.js +243 -0
- package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -0
- package/dist/esm/v3/types/tasks.d.ts +35 -0
- package/dist/esm/v3/utils/gitBranch.d.ts +2 -0
- package/dist/esm/v3/utils/gitBranch.js +42 -0
- package/dist/esm/v3/utils/gitBranch.js.map +1 -0
- package/dist/esm/v3/utils/globals.d.ts +2 -0
- package/dist/esm/v3/utils/globals.js.map +1 -1
- package/dist/esm/v3/utils/reconnectBackoff.d.ts +20 -0
- package/dist/esm/v3/utils/reconnectBackoff.js +25 -0
- package/dist/esm/v3/utils/reconnectBackoff.js.map +1 -0
- package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +1 -0
- package/dist/esm/v3/utils/reconnectBackoff.test.js +74 -0
- package/dist/esm/v3/utils/reconnectBackoff.test.js.map +1 -0
- package/dist/esm/v3/workers/index.d.ts +1 -0
- package/dist/esm/v3/workers/index.js +1 -0
- package/dist/esm/v3/workers/index.js.map +1 -1
- package/dist/esm/v3/workers/taskExecutor.js +2 -1
- package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
- package/dist/esm/v3/zodIpc.d.ts +1 -0
- package/dist/esm/v3/zodIpc.js +13 -1
- package/dist/esm/v3/zodIpc.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +46 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { createAsyncIterableStreamFromAsyncIterable, } from "../streams/asyncIterableStream.js";
|
|
2
|
+
export class TestRealtimeStreamsManager {
|
|
3
|
+
buffers = new Map();
|
|
4
|
+
pipeWaits = new Map();
|
|
5
|
+
writeListeners = new Set();
|
|
6
|
+
pipe(key, source, _options) {
|
|
7
|
+
const buffer = this.getBuffer(key);
|
|
8
|
+
const self = this;
|
|
9
|
+
// Eagerly drain the source in the background so chunks land in the
|
|
10
|
+
// buffer + notify listeners even when the caller never consumes the
|
|
11
|
+
// returned stream. This mirrors the real SDK behavior: `streams.writer`
|
|
12
|
+
// awaits `instance.wait()`, it doesn't read the returned stream.
|
|
13
|
+
//
|
|
14
|
+
// The source is read ONCE (into a chunks array) and replayed into a
|
|
15
|
+
// ReadableStream so the caller can still consume it if they want.
|
|
16
|
+
const readChunks = [];
|
|
17
|
+
let resolveDone;
|
|
18
|
+
const done = new Promise((resolve) => {
|
|
19
|
+
resolveDone = resolve;
|
|
20
|
+
});
|
|
21
|
+
(async () => {
|
|
22
|
+
try {
|
|
23
|
+
const iter = source instanceof ReadableStream
|
|
24
|
+
? (async function* () {
|
|
25
|
+
const reader = source.getReader();
|
|
26
|
+
try {
|
|
27
|
+
while (true) {
|
|
28
|
+
const { done: d, value } = await reader.read();
|
|
29
|
+
if (d)
|
|
30
|
+
return;
|
|
31
|
+
yield value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
reader.releaseLock();
|
|
36
|
+
}
|
|
37
|
+
})()
|
|
38
|
+
: source;
|
|
39
|
+
for await (const chunk of iter) {
|
|
40
|
+
readChunks.push(chunk);
|
|
41
|
+
buffer.push(chunk);
|
|
42
|
+
self.notify(key, chunk);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Swallow — tests can inspect what made it into the buffer
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
resolveDone();
|
|
50
|
+
}
|
|
51
|
+
})();
|
|
52
|
+
const replayStream = (async function* () {
|
|
53
|
+
// Wait for all chunks to be drained, then replay from our snapshot
|
|
54
|
+
await done;
|
|
55
|
+
for (const chunk of readChunks)
|
|
56
|
+
yield chunk;
|
|
57
|
+
})();
|
|
58
|
+
const wrappedStream = createAsyncIterableStreamFromAsyncIterable(replayStream);
|
|
59
|
+
if (!this.pipeWaits.has(key))
|
|
60
|
+
this.pipeWaits.set(key, []);
|
|
61
|
+
this.pipeWaits.get(key).push(done);
|
|
62
|
+
return {
|
|
63
|
+
wait: () => done.then(() => ({})),
|
|
64
|
+
get stream() {
|
|
65
|
+
return wrappedStream;
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async append(key, part, _options) {
|
|
70
|
+
this.getBuffer(key).push(part);
|
|
71
|
+
this.notify(key, part);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Register a listener fired for every chunk written to any stream.
|
|
75
|
+
* Returns an unsubscribe function.
|
|
76
|
+
*
|
|
77
|
+
* Intended for test harnesses that need to react to writes synchronously
|
|
78
|
+
* (e.g. resolving a "turn complete" latch).
|
|
79
|
+
*/
|
|
80
|
+
onWrite(listener) {
|
|
81
|
+
this.writeListeners.add(listener);
|
|
82
|
+
return () => {
|
|
83
|
+
this.writeListeners.delete(listener);
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
notify(key, chunk) {
|
|
87
|
+
for (const listener of this.writeListeners) {
|
|
88
|
+
try {
|
|
89
|
+
listener(key, chunk);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Never let a listener error break stream writes
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ── Test driver API (not part of RealtimeStreamsManager interface) ──────
|
|
97
|
+
/**
|
|
98
|
+
* Return all chunks written to the given stream key in order of write.
|
|
99
|
+
*/
|
|
100
|
+
__chunksFromTest(key) {
|
|
101
|
+
return (this.buffers.get(key) ?? []).slice();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Return all chunks across every stream, keyed by stream id.
|
|
105
|
+
*/
|
|
106
|
+
__allChunksFromTest() {
|
|
107
|
+
const result = {};
|
|
108
|
+
for (const [key, chunks] of this.buffers.entries()) {
|
|
109
|
+
result[key] = chunks.slice();
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Clear the buffer for a specific stream or all streams.
|
|
115
|
+
*/
|
|
116
|
+
__clearFromTest(key) {
|
|
117
|
+
if (key === undefined) {
|
|
118
|
+
this.buffers.clear();
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.buffers.delete(key);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
reset() {
|
|
125
|
+
this.buffers.clear();
|
|
126
|
+
this.pipeWaits.clear();
|
|
127
|
+
this.writeListeners.clear();
|
|
128
|
+
}
|
|
129
|
+
getBuffer(key) {
|
|
130
|
+
if (!this.buffers.has(key)) {
|
|
131
|
+
this.buffers.set(key, []);
|
|
132
|
+
}
|
|
133
|
+
return this.buffers.get(key);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=test-realtime-streams-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-realtime-streams-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-realtime-streams-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DeserializedJson } from "../../schemas/json.js";
|
|
2
|
+
import type { AsyncIterableStream } from "../streams/asyncIterableStream.js";
|
|
3
|
+
import type { RunMetadataManager, RunMetadataUpdater } from "../runMetadata/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* In-memory implementation of `RunMetadataManager` for unit tests.
|
|
6
|
+
*
|
|
7
|
+
* Just stores metadata in a Map — no API calls, no queue. Good enough
|
|
8
|
+
* for tests that read/write metadata via `runMetadata.getKey()` /
|
|
9
|
+
* `runMetadata.set()`, including the IDLE_TIMEOUT and TURN_TIMEOUT
|
|
10
|
+
* checks inside `chat.agent()`.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestRunMetadataManager implements RunMetadataManager {
|
|
13
|
+
private store;
|
|
14
|
+
enterWithMetadata(metadata: Record<string, DeserializedJson>): void;
|
|
15
|
+
current(): Record<string, DeserializedJson> | undefined;
|
|
16
|
+
getKey(key: string): DeserializedJson | undefined;
|
|
17
|
+
set(key: string, value: DeserializedJson): this;
|
|
18
|
+
del(key: string): this;
|
|
19
|
+
append(key: string, value: DeserializedJson): this;
|
|
20
|
+
remove(key: string, value: DeserializedJson): this;
|
|
21
|
+
increment(key: string, value: number): this;
|
|
22
|
+
decrement(key: string, value: number): this;
|
|
23
|
+
update(metadata: Record<string, DeserializedJson>): this;
|
|
24
|
+
flush(): Promise<void>;
|
|
25
|
+
refresh(): Promise<void>;
|
|
26
|
+
stream<T>(_key: string, value: AsyncIterable<T> | ReadableStream<T>): Promise<AsyncIterable<T>>;
|
|
27
|
+
fetchStream<T>(_key: string): Promise<AsyncIterableStream<T>>;
|
|
28
|
+
get parent(): RunMetadataUpdater;
|
|
29
|
+
get root(): RunMetadataUpdater;
|
|
30
|
+
reset(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory implementation of `RunMetadataManager` for unit tests.
|
|
3
|
+
*
|
|
4
|
+
* Just stores metadata in a Map — no API calls, no queue. Good enough
|
|
5
|
+
* for tests that read/write metadata via `runMetadata.getKey()` /
|
|
6
|
+
* `runMetadata.set()`, including the IDLE_TIMEOUT and TURN_TIMEOUT
|
|
7
|
+
* checks inside `chat.agent()`.
|
|
8
|
+
*/
|
|
9
|
+
export class TestRunMetadataManager {
|
|
10
|
+
store = {};
|
|
11
|
+
enterWithMetadata(metadata) {
|
|
12
|
+
this.store = { ...metadata };
|
|
13
|
+
}
|
|
14
|
+
current() {
|
|
15
|
+
return { ...this.store };
|
|
16
|
+
}
|
|
17
|
+
getKey(key) {
|
|
18
|
+
return this.store[key];
|
|
19
|
+
}
|
|
20
|
+
set(key, value) {
|
|
21
|
+
this.store[key] = value;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
del(key) {
|
|
25
|
+
delete this.store[key];
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
append(key, value) {
|
|
29
|
+
const existing = this.store[key];
|
|
30
|
+
if (Array.isArray(existing)) {
|
|
31
|
+
existing.push(value);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.store[key] = [value];
|
|
35
|
+
}
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
remove(key, value) {
|
|
39
|
+
const existing = this.store[key];
|
|
40
|
+
if (Array.isArray(existing)) {
|
|
41
|
+
this.store[key] = existing.filter((v) => v !== value);
|
|
42
|
+
}
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
increment(key, value) {
|
|
46
|
+
const existing = this.store[key];
|
|
47
|
+
const current = typeof existing === "number" ? existing : 0;
|
|
48
|
+
this.store[key] = current + value;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
decrement(key, value) {
|
|
52
|
+
return this.increment(key, -value);
|
|
53
|
+
}
|
|
54
|
+
update(metadata) {
|
|
55
|
+
this.store = { ...metadata };
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
async flush() { }
|
|
59
|
+
async refresh() { }
|
|
60
|
+
async stream(_key, value) {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
async fetchStream(_key) {
|
|
64
|
+
// Return an empty async iterable — tests can override if needed
|
|
65
|
+
const empty = {
|
|
66
|
+
[Symbol.asyncIterator]: () => ({
|
|
67
|
+
next: () => Promise.resolve({ done: true, value: undefined }),
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
70
|
+
return empty;
|
|
71
|
+
}
|
|
72
|
+
get parent() {
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
get root() {
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
reset() {
|
|
79
|
+
this.store = {};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=test-run-metadata-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-run-metadata-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-run-metadata-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { InputStreamOncePromise } from "../inputStreams/types.js";
|
|
2
|
+
import type { InputStreamOnceOptions } from "../realtimeStreams/types.js";
|
|
3
|
+
import type { SessionChannelIO, SessionStreamManager } from "../sessionStreams/types.js";
|
|
4
|
+
type Handler = (data: unknown) => void | Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* In-memory implementation of `SessionStreamManager` for unit tests. Same
|
|
7
|
+
* shape as {@link TestInputStreamManager} but keyed on `(sessionId, io)`.
|
|
8
|
+
*
|
|
9
|
+
* Tests push data via `__sendFromTest(sessionId, io, data)` — any pending
|
|
10
|
+
* `once()` waiters resolve immediately, and all `on()` handlers fire (awaited
|
|
11
|
+
* if they return a promise). Records that arrive before a listener is
|
|
12
|
+
* registered are buffered so the first `once()` picks them up.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TestSessionStreamManager implements SessionStreamManager {
|
|
15
|
+
private handlers;
|
|
16
|
+
private onceWaiters;
|
|
17
|
+
private buffer;
|
|
18
|
+
private seqNums;
|
|
19
|
+
on(sessionId: string, io: SessionChannelIO, handler: Handler): {
|
|
20
|
+
off: () => void;
|
|
21
|
+
};
|
|
22
|
+
once(sessionId: string, io: SessionChannelIO, options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
|
|
23
|
+
peek(sessionId: string, io: SessionChannelIO): unknown | undefined;
|
|
24
|
+
lastSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
|
|
25
|
+
setLastSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
|
|
26
|
+
lastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO): number | undefined;
|
|
27
|
+
setLastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO, _seqNum: number): void;
|
|
28
|
+
setMinTimestamp(_sessionId: string, _io: SessionChannelIO, _minTimestamp: number | undefined): void;
|
|
29
|
+
shiftBuffer(sessionId: string, io: SessionChannelIO): boolean;
|
|
30
|
+
disconnectStream(_sessionId: string, _io: SessionChannelIO): void;
|
|
31
|
+
clearHandlers(): void;
|
|
32
|
+
reset(): void;
|
|
33
|
+
disconnect(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Push a record onto the given channel.
|
|
36
|
+
*
|
|
37
|
+
* Dispatch rules — similar to the production manager, but with a tweak
|
|
38
|
+
* that makes unit tests deterministic:
|
|
39
|
+
*
|
|
40
|
+
* 1. **Handlers always observe** (like production). A session-level `.on`
|
|
41
|
+
* is a filter-observer — it fires every time a record arrives,
|
|
42
|
+
* regardless of whether a `.once` waiter is also active.
|
|
43
|
+
* 2. **First waiter consumes** the record if present (like production).
|
|
44
|
+
* 3. **If no waiter, the record is buffered for the next `.once` call.**
|
|
45
|
+
* Production discards records that only match handlers — but in
|
|
46
|
+
* production the SSE tail introduces enough latency that the next
|
|
47
|
+
* `.once` is usually registered before the next record arrives. Tests
|
|
48
|
+
* send synchronously right after `turn-complete`, so without this
|
|
49
|
+
* buffer the next `waitWithIdleTimeout` would race and lose the
|
|
50
|
+
* message. The buffer is the only deviation from production semantics.
|
|
51
|
+
*/
|
|
52
|
+
__sendFromTest(sessionId: string, io: SessionChannelIO, data: unknown): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Immediately resolve every pending `once()` waiter for the given channel
|
|
55
|
+
* with a timeout error. Simulates a closed stream (e.g. session closed).
|
|
56
|
+
*/
|
|
57
|
+
__closeFromTest(sessionId: string, io: SessionChannelIO): void;
|
|
58
|
+
private removeWaiter;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { InputStreamOncePromise, InputStreamTimeoutError, } from "../inputStreams/types.js";
|
|
2
|
+
function keyFor(sessionId, io) {
|
|
3
|
+
return `${sessionId}:${io}`;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* In-memory implementation of `SessionStreamManager` for unit tests. Same
|
|
7
|
+
* shape as {@link TestInputStreamManager} but keyed on `(sessionId, io)`.
|
|
8
|
+
*
|
|
9
|
+
* Tests push data via `__sendFromTest(sessionId, io, data)` — any pending
|
|
10
|
+
* `once()` waiters resolve immediately, and all `on()` handlers fire (awaited
|
|
11
|
+
* if they return a promise). Records that arrive before a listener is
|
|
12
|
+
* registered are buffered so the first `once()` picks them up.
|
|
13
|
+
*/
|
|
14
|
+
export class TestSessionStreamManager {
|
|
15
|
+
handlers = new Map();
|
|
16
|
+
onceWaiters = new Map();
|
|
17
|
+
buffer = new Map();
|
|
18
|
+
seqNums = new Map();
|
|
19
|
+
on(sessionId, io, handler) {
|
|
20
|
+
const key = keyFor(sessionId, io);
|
|
21
|
+
let set = this.handlers.get(key);
|
|
22
|
+
if (!set) {
|
|
23
|
+
set = new Set();
|
|
24
|
+
this.handlers.set(key, set);
|
|
25
|
+
}
|
|
26
|
+
set.add(handler);
|
|
27
|
+
// Note: we intentionally do NOT replay buffered records into the
|
|
28
|
+
// newly-registered handler, and we do NOT drain the buffer. The
|
|
29
|
+
// buffer is owned by `once()` — registering a passive observer
|
|
30
|
+
// (`on`) must not consume records destined for a future `once`
|
|
31
|
+
// waiter. This matches production SSE semantics where handlers
|
|
32
|
+
// observe records as they arrive, not retroactively.
|
|
33
|
+
//
|
|
34
|
+
// Earlier versions drained the buffer here, which caused user
|
|
35
|
+
// messages buffered during the runtime's `runFn` boot phase to be
|
|
36
|
+
// silently swallowed by the `stopInput.on()` handler registered at
|
|
37
|
+
// ai.ts:4806 (the stop handler ignores `kind: "message"` chunks).
|
|
38
|
+
// The next `messagesInput.waitWithIdleTimeout` then waited 30s for
|
|
39
|
+
// a record that had already been "delivered" to a handler that
|
|
40
|
+
// didn't want it.
|
|
41
|
+
return {
|
|
42
|
+
off: () => {
|
|
43
|
+
this.handlers.get(key)?.delete(handler);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
once(sessionId, io, options) {
|
|
48
|
+
const key = keyFor(sessionId, io);
|
|
49
|
+
return new InputStreamOncePromise((resolve) => {
|
|
50
|
+
if (options?.signal?.aborted) {
|
|
51
|
+
resolve({
|
|
52
|
+
ok: false,
|
|
53
|
+
error: new InputStreamTimeoutError(key, options.timeoutMs ?? 0),
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const buffered = this.buffer.get(key);
|
|
58
|
+
if (buffered && buffered.length > 0) {
|
|
59
|
+
const next = buffered.shift();
|
|
60
|
+
if (buffered.length === 0)
|
|
61
|
+
this.buffer.delete(key);
|
|
62
|
+
resolve({ ok: true, output: next });
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const waiter = { resolve, signal: options?.signal };
|
|
66
|
+
if (options?.timeoutMs !== undefined) {
|
|
67
|
+
waiter.timer = setTimeout(() => {
|
|
68
|
+
this.removeWaiter(key, waiter);
|
|
69
|
+
resolve({
|
|
70
|
+
ok: false,
|
|
71
|
+
error: new InputStreamTimeoutError(key, options.timeoutMs),
|
|
72
|
+
});
|
|
73
|
+
}, options.timeoutMs);
|
|
74
|
+
}
|
|
75
|
+
if (options?.signal) {
|
|
76
|
+
const abortHandler = () => {
|
|
77
|
+
this.removeWaiter(key, waiter);
|
|
78
|
+
if (waiter.timer)
|
|
79
|
+
clearTimeout(waiter.timer);
|
|
80
|
+
resolve({
|
|
81
|
+
ok: false,
|
|
82
|
+
error: new InputStreamTimeoutError(key, options.timeoutMs ?? 0),
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
waiter.abortHandler = abortHandler;
|
|
86
|
+
options.signal.addEventListener("abort", abortHandler, { once: true });
|
|
87
|
+
}
|
|
88
|
+
let waiters = this.onceWaiters.get(key);
|
|
89
|
+
if (!waiters) {
|
|
90
|
+
waiters = [];
|
|
91
|
+
this.onceWaiters.set(key, waiters);
|
|
92
|
+
}
|
|
93
|
+
waiters.push(waiter);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
peek(sessionId, io) {
|
|
97
|
+
const buffered = this.buffer.get(keyFor(sessionId, io));
|
|
98
|
+
if (buffered && buffered.length > 0)
|
|
99
|
+
return buffered[0];
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
lastSeqNum(sessionId, io) {
|
|
103
|
+
return this.seqNums.get(keyFor(sessionId, io));
|
|
104
|
+
}
|
|
105
|
+
setLastSeqNum(sessionId, io, seqNum) {
|
|
106
|
+
this.seqNums.set(keyFor(sessionId, io), seqNum);
|
|
107
|
+
}
|
|
108
|
+
lastDispatchedSeqNum(_sessionId, _io) {
|
|
109
|
+
// The test harness drives records via `__sendFromTest` without seq
|
|
110
|
+
// numbers, so the committed-consume cursor stays undefined. Tests
|
|
111
|
+
// that need cursor behaviour exercise it via the real manager.
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
setLastDispatchedSeqNum(_sessionId, _io, _seqNum) {
|
|
115
|
+
// no-op — see comment on `lastDispatchedSeqNum`.
|
|
116
|
+
}
|
|
117
|
+
setMinTimestamp(_sessionId, _io, _minTimestamp) {
|
|
118
|
+
// No filter applied in tests; the test harness drives records directly
|
|
119
|
+
// and the chat.agent retry path is exercised separately.
|
|
120
|
+
}
|
|
121
|
+
shiftBuffer(sessionId, io) {
|
|
122
|
+
const key = keyFor(sessionId, io);
|
|
123
|
+
const buffered = this.buffer.get(key);
|
|
124
|
+
if (buffered && buffered.length > 0) {
|
|
125
|
+
buffered.shift();
|
|
126
|
+
if (buffered.length === 0)
|
|
127
|
+
this.buffer.delete(key);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
disconnectStream(_sessionId, _io) {
|
|
133
|
+
// no-op — no real SSE tail in tests
|
|
134
|
+
}
|
|
135
|
+
clearHandlers() {
|
|
136
|
+
this.handlers.clear();
|
|
137
|
+
}
|
|
138
|
+
reset() {
|
|
139
|
+
for (const waiters of this.onceWaiters.values()) {
|
|
140
|
+
for (const w of waiters) {
|
|
141
|
+
if (w.timer)
|
|
142
|
+
clearTimeout(w.timer);
|
|
143
|
+
if (w.signal && w.abortHandler) {
|
|
144
|
+
w.signal.removeEventListener("abort", w.abortHandler);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
this.onceWaiters.clear();
|
|
149
|
+
this.handlers.clear();
|
|
150
|
+
this.buffer.clear();
|
|
151
|
+
this.seqNums.clear();
|
|
152
|
+
}
|
|
153
|
+
disconnect() {
|
|
154
|
+
this.reset();
|
|
155
|
+
}
|
|
156
|
+
// ── Test driver API (not part of SessionStreamManager interface) ──────
|
|
157
|
+
/**
|
|
158
|
+
* Push a record onto the given channel.
|
|
159
|
+
*
|
|
160
|
+
* Dispatch rules — similar to the production manager, but with a tweak
|
|
161
|
+
* that makes unit tests deterministic:
|
|
162
|
+
*
|
|
163
|
+
* 1. **Handlers always observe** (like production). A session-level `.on`
|
|
164
|
+
* is a filter-observer — it fires every time a record arrives,
|
|
165
|
+
* regardless of whether a `.once` waiter is also active.
|
|
166
|
+
* 2. **First waiter consumes** the record if present (like production).
|
|
167
|
+
* 3. **If no waiter, the record is buffered for the next `.once` call.**
|
|
168
|
+
* Production discards records that only match handlers — but in
|
|
169
|
+
* production the SSE tail introduces enough latency that the next
|
|
170
|
+
* `.once` is usually registered before the next record arrives. Tests
|
|
171
|
+
* send synchronously right after `turn-complete`, so without this
|
|
172
|
+
* buffer the next `waitWithIdleTimeout` would race and lose the
|
|
173
|
+
* message. The buffer is the only deviation from production semantics.
|
|
174
|
+
*/
|
|
175
|
+
async __sendFromTest(sessionId, io, data) {
|
|
176
|
+
const key = keyFor(sessionId, io);
|
|
177
|
+
const handlers = this.handlers.get(key);
|
|
178
|
+
if (handlers && handlers.size > 0) {
|
|
179
|
+
// Awaited so test code can rely on handlers having completed by the
|
|
180
|
+
// time `__sendFromTest` resolves. Wrapped per-handler so a
|
|
181
|
+
// throwing/rejecting handler doesn't poison Promise.all and break
|
|
182
|
+
// unrelated test state.
|
|
183
|
+
await Promise.all(Array.from(handlers).map(async (h) => {
|
|
184
|
+
try {
|
|
185
|
+
await h(data);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// Never let a handler error break test state
|
|
189
|
+
}
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
const waiters = this.onceWaiters.get(key);
|
|
193
|
+
if (waiters && waiters.length > 0) {
|
|
194
|
+
const w = waiters.shift();
|
|
195
|
+
if (waiters.length === 0)
|
|
196
|
+
this.onceWaiters.delete(key);
|
|
197
|
+
if (w.timer)
|
|
198
|
+
clearTimeout(w.timer);
|
|
199
|
+
if (w.signal && w.abortHandler) {
|
|
200
|
+
w.signal.removeEventListener("abort", w.abortHandler);
|
|
201
|
+
}
|
|
202
|
+
w.resolve({ ok: true, output: data });
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
let buffered = this.buffer.get(key);
|
|
206
|
+
if (!buffered) {
|
|
207
|
+
buffered = [];
|
|
208
|
+
this.buffer.set(key, buffered);
|
|
209
|
+
}
|
|
210
|
+
buffered.push(data);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Immediately resolve every pending `once()` waiter for the given channel
|
|
214
|
+
* with a timeout error. Simulates a closed stream (e.g. session closed).
|
|
215
|
+
*/
|
|
216
|
+
__closeFromTest(sessionId, io) {
|
|
217
|
+
const key = keyFor(sessionId, io);
|
|
218
|
+
const waiters = this.onceWaiters.get(key);
|
|
219
|
+
if (!waiters)
|
|
220
|
+
return;
|
|
221
|
+
const pending = waiters.splice(0);
|
|
222
|
+
for (const w of pending) {
|
|
223
|
+
if (w.timer)
|
|
224
|
+
clearTimeout(w.timer);
|
|
225
|
+
if (w.signal && w.abortHandler) {
|
|
226
|
+
w.signal.removeEventListener("abort", w.abortHandler);
|
|
227
|
+
}
|
|
228
|
+
w.resolve({
|
|
229
|
+
ok: false,
|
|
230
|
+
error: new InputStreamTimeoutError(key, 0),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
removeWaiter(key, waiter) {
|
|
235
|
+
const waiters = this.onceWaiters.get(key);
|
|
236
|
+
if (!waiters)
|
|
237
|
+
return;
|
|
238
|
+
const idx = waiters.indexOf(waiter);
|
|
239
|
+
if (idx >= 0)
|
|
240
|
+
waiters.splice(idx, 1);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=test-session-stream-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-session-stream-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-session-stream-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -280,6 +280,12 @@ type CommonTaskOptions<TIdentifier extends string, TPayload = void, TOutput = un
|
|
|
280
280
|
* Should be a valid JSON Schema Draft 7 object.
|
|
281
281
|
*/
|
|
282
282
|
jsonSchema?: JSONSchema;
|
|
283
|
+
/** @internal Set by SDK internals (e.g. `chat.agent()`, `schedules.task()`). */
|
|
284
|
+
triggerSource?: string;
|
|
285
|
+
/** @internal Agent configuration, only set when `triggerSource` is `"agent"`. */
|
|
286
|
+
agentConfig?: {
|
|
287
|
+
type: string;
|
|
288
|
+
};
|
|
283
289
|
};
|
|
284
290
|
export type TaskOptions<TIdentifier extends string, TPayload = void, TOutput = unknown, TInitOutput extends InitOutput = any> = CommonTaskOptions<TIdentifier, TPayload, TOutput, TInitOutput>;
|
|
285
291
|
export type TaskOptionsWithSchema<TIdentifier extends string, TOutput = unknown, TInitOutput extends InitOutput = any> = CommonTaskOptions<TIdentifier, any, TOutput, TInitOutput> & {
|
|
@@ -424,6 +430,26 @@ export interface Task<TIdentifier extends string, TInput = void, TOutput = any>
|
|
|
424
430
|
* ```
|
|
425
431
|
*/
|
|
426
432
|
triggerAndWait: (payload: TInput, options?: TriggerAndWaitOptions, requestOptions?: TriggerApiRequestOptions) => TaskRunPromise<TIdentifier, TOutput>;
|
|
433
|
+
/**
|
|
434
|
+
* Trigger a task and subscribe to its updates via realtime. Unlike `triggerAndWait`,
|
|
435
|
+
* this does NOT suspend the parent run — the parent stays alive and polls for updates.
|
|
436
|
+
* This enables parallel tool calls and proper abort signal handling.
|
|
437
|
+
*
|
|
438
|
+
* @param payload
|
|
439
|
+
* @param options - Options for the task run, including an optional `signal` to cancel the subscription and child run
|
|
440
|
+
* @returns TaskRunPromise
|
|
441
|
+
* @example
|
|
442
|
+
* ```
|
|
443
|
+
* const result = await task.triggerAndSubscribe({ foo: "bar" }, { signal: abortSignal });
|
|
444
|
+
*
|
|
445
|
+
* if (result.ok) {
|
|
446
|
+
* console.log(result.output);
|
|
447
|
+
* } else {
|
|
448
|
+
* console.error(result.error);
|
|
449
|
+
* }
|
|
450
|
+
* ```
|
|
451
|
+
*/
|
|
452
|
+
triggerAndSubscribe: (payload: TInput, options?: TriggerAndSubscribeOptions) => TaskRunPromise<TIdentifier, TOutput>;
|
|
427
453
|
/**
|
|
428
454
|
* Batch trigger multiple task runs with the given payloads, and wait for the results. Returns the results of the task runs.
|
|
429
455
|
* @param items - Array, AsyncIterable, or ReadableStream of batch items
|
|
@@ -713,6 +739,15 @@ export type TriggerOptions = {
|
|
|
713
739
|
};
|
|
714
740
|
};
|
|
715
741
|
export type TriggerAndWaitOptions = Omit<TriggerOptions, "version">;
|
|
742
|
+
export type TriggerAndSubscribeOptions = Omit<TriggerOptions, "version"> & {
|
|
743
|
+
/** An AbortSignal to cancel the subscription. When fired, the subscription closes and the promise rejects. */
|
|
744
|
+
signal?: AbortSignal;
|
|
745
|
+
/**
|
|
746
|
+
* Whether to cancel the child run when the abort signal fires.
|
|
747
|
+
* @default true
|
|
748
|
+
*/
|
|
749
|
+
cancelOnAbort?: boolean;
|
|
750
|
+
};
|
|
716
751
|
export type BatchTriggerOptions = {
|
|
717
752
|
/**
|
|
718
753
|
* If no idempotencyKey is set on an individual item in the batch, it will use this key on each item + the array index.
|