@trigger.dev/core 4.4.6 → 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 +22 -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/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 +14 -0
- package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +7 -0
- package/dist/commonjs/v3/schemas/api.d.ts +333 -0
- 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/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 +160 -0
- 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/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/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 +19 -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/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 +14 -0
- package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +7 -0
- package/dist/esm/v3/schemas/api.d.ts +333 -0
- 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/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 +160 -0
- 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/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/version.js +1 -1
- package/package.json +46 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const manager_js_1 = require("./manager.js");
|
|
5
|
+
// Single-shot mock that mimics S2's long-poll: delivers `records` once via
|
|
6
|
+
// `onPart` on the first subscribe call, then keeps the returned async
|
|
7
|
+
// iterable OPEN until the abort signal fires. Real S2 keeps the SSE
|
|
8
|
+
// connection alive on a long-poll; the manager's `runTail` finally /
|
|
9
|
+
// reconnect path only fires when the connection actually closes. Returning
|
|
10
|
+
// an empty stream synchronously triggers a tight reconnect loop, so the
|
|
11
|
+
// mock parks indefinitely instead.
|
|
12
|
+
function singleShotApiClient(records) {
|
|
13
|
+
let delivered = false;
|
|
14
|
+
return {
|
|
15
|
+
async subscribeToSessionStream(_sessionIdOrExternalId, _io, options) {
|
|
16
|
+
if (!delivered) {
|
|
17
|
+
delivered = true;
|
|
18
|
+
for (const record of records) {
|
|
19
|
+
options?.onPart?.(record);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const signal = options?.signal;
|
|
23
|
+
return (async function* () {
|
|
24
|
+
if (signal?.aborted)
|
|
25
|
+
return;
|
|
26
|
+
await new Promise((resolve) => {
|
|
27
|
+
if (!signal) {
|
|
28
|
+
// No signal — block the stream forever; tests must
|
|
29
|
+
// explicitly call `disconnectStream` / `disconnect` to
|
|
30
|
+
// unblock.
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
signal.addEventListener("abort", () => resolve(), { once: true });
|
|
34
|
+
});
|
|
35
|
+
})();
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
(0, vitest_1.describe)("StandardSessionStreamManager — minTimestamp filter", () => {
|
|
40
|
+
const sessionId = "session-1";
|
|
41
|
+
const io = "in";
|
|
42
|
+
(0, vitest_1.it)("dispatches records when no filter is set", async () => {
|
|
43
|
+
const records = [
|
|
44
|
+
{ id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
|
|
45
|
+
{ id: "1", chunk: { kind: "message", payload: { id: "u2" } }, timestamp: 2000 },
|
|
46
|
+
];
|
|
47
|
+
const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
|
|
48
|
+
const first = await manager.once(sessionId, io);
|
|
49
|
+
(0, vitest_1.expect)(first).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
|
|
50
|
+
const second = await manager.once(sessionId, io);
|
|
51
|
+
(0, vitest_1.expect)(second).toEqual({ ok: true, output: { kind: "message", payload: { id: "u2" } } });
|
|
52
|
+
manager.disconnectStream(sessionId, io); // stop reconnect loop
|
|
53
|
+
manager.disconnect();
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)("drops records whose timestamp is <= minTimestamp", async () => {
|
|
56
|
+
const records = [
|
|
57
|
+
{ id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
|
|
58
|
+
{ id: "1", chunk: { kind: "message", payload: { id: "u2" } }, timestamp: 2000 },
|
|
59
|
+
{ id: "2", chunk: { kind: "message", payload: { id: "u3" } }, timestamp: 3000 },
|
|
60
|
+
];
|
|
61
|
+
const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
|
|
62
|
+
// Cutoff at 2000 (inclusive: `<=` is dropped). Only u3 should pass.
|
|
63
|
+
manager.setMinTimestamp(sessionId, io, 2000);
|
|
64
|
+
const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
|
|
65
|
+
(0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u3" } } });
|
|
66
|
+
manager.disconnectStream(sessionId, io);
|
|
67
|
+
manager.disconnect();
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)("clears the filter when set to undefined", async () => {
|
|
70
|
+
const records = [
|
|
71
|
+
{ id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
|
|
72
|
+
];
|
|
73
|
+
const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
|
|
74
|
+
manager.setMinTimestamp(sessionId, io, 5000);
|
|
75
|
+
manager.setMinTimestamp(sessionId, io, undefined);
|
|
76
|
+
const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
|
|
77
|
+
(0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
|
|
78
|
+
manager.disconnectStream(sessionId, io);
|
|
79
|
+
manager.disconnect();
|
|
80
|
+
});
|
|
81
|
+
(0, vitest_1.it)("filter is per-(sessionId, io) and doesn't bleed across streams", async () => {
|
|
82
|
+
const inApi = singleShotApiClient([
|
|
83
|
+
{ id: "0", chunk: { kind: "in-record" }, timestamp: 1000 },
|
|
84
|
+
]);
|
|
85
|
+
const manager = new manager_js_1.StandardSessionStreamManager(inApi, "http://localhost");
|
|
86
|
+
manager.setMinTimestamp(sessionId, "in", 5000);
|
|
87
|
+
// The "out" stream uses the same singleShotApiClient instance — its
|
|
88
|
+
// single-shot delivers the same fixture, but the filter doesn't apply
|
|
89
|
+
// to "out" so the record passes.
|
|
90
|
+
const outResult = await manager.once(sessionId, "out", { timeoutMs: 200 });
|
|
91
|
+
(0, vitest_1.expect)(outResult).toEqual({ ok: true, output: { kind: "in-record" } });
|
|
92
|
+
// The "in" stream is filtered (minTimestamp=5000, record ts=1000): the
|
|
93
|
+
// once() call should idle-timeout instead of resolving with the record.
|
|
94
|
+
// But the singleShot instance has already delivered to the "out" tail,
|
|
95
|
+
// so the "in" tail will get nothing on first connect anyway. Use a
|
|
96
|
+
// separate manager+api to keep the assertion crisp.
|
|
97
|
+
const inApi2 = singleShotApiClient([
|
|
98
|
+
{ id: "0", chunk: { kind: "in-record-2" }, timestamp: 1000 },
|
|
99
|
+
]);
|
|
100
|
+
const manager2 = new manager_js_1.StandardSessionStreamManager(inApi2, "http://localhost");
|
|
101
|
+
manager2.setMinTimestamp(sessionId, "in", 5000);
|
|
102
|
+
const inResult = await manager2.once(sessionId, "in", { timeoutMs: 100 });
|
|
103
|
+
(0, vitest_1.expect)(inResult.ok).toBe(false); // filter-dropped → idle timeout
|
|
104
|
+
manager.disconnectStream(sessionId, "in");
|
|
105
|
+
manager.disconnectStream(sessionId, "out");
|
|
106
|
+
manager.disconnect();
|
|
107
|
+
manager2.disconnectStream(sessionId, "in");
|
|
108
|
+
manager2.disconnect();
|
|
109
|
+
});
|
|
110
|
+
(0, vitest_1.it)("reset() clears all per-stream timestamp filters", async () => {
|
|
111
|
+
const records = [
|
|
112
|
+
{ id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
|
|
113
|
+
];
|
|
114
|
+
const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
|
|
115
|
+
manager.setMinTimestamp(sessionId, io, 5000);
|
|
116
|
+
manager.reset();
|
|
117
|
+
const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
|
|
118
|
+
(0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
|
|
119
|
+
manager.disconnectStream(sessionId, io);
|
|
120
|
+
manager.disconnect();
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { InputStreamOnceOptions } from "../realtimeStreams/types.js";
|
|
2
|
+
import { InputStreamOncePromise } from "../inputStreams/types.js";
|
|
3
|
+
import { SessionChannelIO, SessionStreamManager } from "./types.js";
|
|
4
|
+
export declare class NoopSessionStreamManager implements SessionStreamManager {
|
|
5
|
+
on(_sessionId: string, _io: SessionChannelIO, _handler: (data: unknown) => void | Promise<void>): {
|
|
6
|
+
off: () => void;
|
|
7
|
+
};
|
|
8
|
+
once(_sessionId: string, _io: SessionChannelIO, _options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
|
|
9
|
+
peek(_sessionId: string, _io: SessionChannelIO): unknown | undefined;
|
|
10
|
+
lastSeqNum(_sessionId: string, _io: SessionChannelIO): number | undefined;
|
|
11
|
+
setLastSeqNum(_sessionId: string, _io: SessionChannelIO, _seqNum: number): void;
|
|
12
|
+
lastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO): number | undefined;
|
|
13
|
+
setLastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO, _seqNum: number): void;
|
|
14
|
+
setMinTimestamp(_sessionId: string, _io: SessionChannelIO, _minTimestamp: number | undefined): void;
|
|
15
|
+
shiftBuffer(_sessionId: string, _io: SessionChannelIO): boolean;
|
|
16
|
+
disconnectStream(_sessionId: string, _io: SessionChannelIO): void;
|
|
17
|
+
clearHandlers(): void;
|
|
18
|
+
reset(): void;
|
|
19
|
+
disconnect(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoopSessionStreamManager = void 0;
|
|
4
|
+
const types_js_1 = require("../inputStreams/types.js");
|
|
5
|
+
class NoopSessionStreamManager {
|
|
6
|
+
on(_sessionId, _io, _handler) {
|
|
7
|
+
return { off: () => { } };
|
|
8
|
+
}
|
|
9
|
+
once(_sessionId, _io, _options) {
|
|
10
|
+
return new types_js_1.InputStreamOncePromise(() => {
|
|
11
|
+
// Never resolves in noop mode.
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
peek(_sessionId, _io) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
lastSeqNum(_sessionId, _io) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
setLastSeqNum(_sessionId, _io, _seqNum) { }
|
|
21
|
+
lastDispatchedSeqNum(_sessionId, _io) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
setLastDispatchedSeqNum(_sessionId, _io, _seqNum) { }
|
|
25
|
+
setMinTimestamp(_sessionId, _io, _minTimestamp) { }
|
|
26
|
+
shiftBuffer(_sessionId, _io) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
disconnectStream(_sessionId, _io) { }
|
|
30
|
+
clearHandlers() { }
|
|
31
|
+
reset() { }
|
|
32
|
+
disconnect() { }
|
|
33
|
+
}
|
|
34
|
+
exports.NoopSessionStreamManager = NoopSessionStreamManager;
|
|
35
|
+
//# sourceMappingURL=noopManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noopManager.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/noopManager.ts"],"names":[],"mappings":";;;AACA,uDAAkE;AAGlE,MAAa,wBAAwB;IACnC,EAAE,CACA,UAAkB,EAClB,GAAqB,EACrB,QAAiD;QAEjD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CACF,UAAkB,EAClB,GAAqB,EACrB,QAAiC;QAEjC,OAAO,IAAI,iCAAsB,CAAC,GAAG,EAAE;YACrC,+BAA+B;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAkB,EAAE,GAAqB;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,GAAqB;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,GAAqB,EAAE,OAAe,IAAS,CAAC;IAElF,oBAAoB,CAAC,UAAkB,EAAE,GAAqB;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB,CACrB,UAAkB,EAClB,GAAqB,EACrB,OAAe,IACR,CAAC;IAEV,eAAe,CACb,UAAkB,EAClB,GAAqB,EACrB,aAAiC,IAC1B,CAAC;IAEV,WAAW,CAAC,UAAkB,EAAE,GAAqB;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,UAAkB,EAAE,GAAqB,IAAS,CAAC;IAEpE,aAAa,KAAU,CAAC;IAExB,KAAK,KAAU,CAAC;IAEhB,UAAU,KAAU,CAAC;CACtB;AAxDD,4DAwDC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { InputStreamOnceOptions } from "../realtimeStreams/types.js";
|
|
2
|
+
import { InputStreamOncePromise, InputStreamOnceResult, InputStreamTimeoutError } from "../inputStreams/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Re-export the run-scoped input stream once-promise machinery so callers
|
|
5
|
+
* depending on sessionStreams don't also need to import from inputStreams.
|
|
6
|
+
* Both APIs return the same shape.
|
|
7
|
+
*/
|
|
8
|
+
export { InputStreamOncePromise, InputStreamTimeoutError };
|
|
9
|
+
export type { InputStreamOnceResult };
|
|
10
|
+
export type SessionChannelIO = "out" | "in";
|
|
11
|
+
/**
|
|
12
|
+
* Manager for Session channel reads: a session-scoped parallel to
|
|
13
|
+
* {@link InputStreamManager} keyed on `(sessionId, io)` instead of
|
|
14
|
+
* `(runId, streamId)`. Used by {@link SessionChannel} to implement
|
|
15
|
+
* `.on` / `.once` / `.peek` / `.wait` / `.waitWithIdleTimeout`.
|
|
16
|
+
*/
|
|
17
|
+
export interface SessionStreamManager {
|
|
18
|
+
/** Register a handler that fires every time data arrives on the given channel. */
|
|
19
|
+
on(sessionId: string, io: SessionChannelIO, handler: (data: unknown) => void | Promise<void>): {
|
|
20
|
+
off: () => void;
|
|
21
|
+
};
|
|
22
|
+
/** Wait for the next record on the given channel (buffered or live). */
|
|
23
|
+
once(sessionId: string, io: SessionChannelIO, options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
|
|
24
|
+
/** Non-blocking peek at the head of the channel buffer. */
|
|
25
|
+
peek(sessionId: string, io: SessionChannelIO): unknown | undefined;
|
|
26
|
+
/** Last S2 sequence number seen on the given channel. */
|
|
27
|
+
lastSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
|
|
28
|
+
/** Advance the last-seen sequence number (prevents SSE replay after `.wait` resume). */
|
|
29
|
+
setLastSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Highest sequence number that has been *consumed* on the channel —
|
|
32
|
+
* delivered to a `once()` waiter or shifted off the buffer into one.
|
|
33
|
+
* Distinct from {@link lastSeqNum}, which advances on every received
|
|
34
|
+
* record regardless of whether anything consumed it. Used by
|
|
35
|
+
* `chat.agent` to persist the `.in` resume cursor on each
|
|
36
|
+
* `turn-complete` control record so the next worker boot can resume
|
|
37
|
+
* the channel from this point without replaying processed messages.
|
|
38
|
+
*/
|
|
39
|
+
lastDispatchedSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Seed the committed-consume cursor at worker boot — e.g. from the
|
|
42
|
+
* `session-in-event-id` header on the latest `turn-complete` on
|
|
43
|
+
* `.out`. Monotonic: only ever advances forward, never backwards.
|
|
44
|
+
*/
|
|
45
|
+
setLastDispatchedSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Set a per-stream lower-bound SSE timestamp. Records whose timestamp
|
|
48
|
+
* is `<= minTimestamp` are dropped before dispatch. Used by chat.agent
|
|
49
|
+
* on OOM-retry boot to skip session.in records belonging to turns
|
|
50
|
+
* that already completed on the prior attempt.
|
|
51
|
+
*
|
|
52
|
+
* Pass `undefined` to clear the filter.
|
|
53
|
+
*/
|
|
54
|
+
setMinTimestamp(sessionId: string, io: SessionChannelIO, minTimestamp: number | undefined): void;
|
|
55
|
+
/** Remove and discard the first buffered record. Returns true if one was removed. */
|
|
56
|
+
shiftBuffer(sessionId: string, io: SessionChannelIO): boolean;
|
|
57
|
+
/** Abort the SSE tail and clear the buffer. Called before `.wait` suspends. */
|
|
58
|
+
disconnectStream(sessionId: string, io: SessionChannelIO): void;
|
|
59
|
+
/** Clear all `.on` handlers; abort tails without pending once-waiters. */
|
|
60
|
+
clearHandlers(): void;
|
|
61
|
+
/** Reset state between task executions. */
|
|
62
|
+
reset(): void;
|
|
63
|
+
/** Disconnect every tail. */
|
|
64
|
+
disconnect(): void;
|
|
65
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InputStreamTimeoutError = exports.InputStreamOncePromise = void 0;
|
|
4
|
+
const types_js_1 = require("../inputStreams/types.js");
|
|
5
|
+
Object.defineProperty(exports, "InputStreamOncePromise", { enumerable: true, get: function () { return types_js_1.InputStreamOncePromise; } });
|
|
6
|
+
Object.defineProperty(exports, "InputStreamTimeoutError", { enumerable: true, get: function () { return types_js_1.InputStreamTimeoutError; } });
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/types.ts"],"names":[],"mappings":";;;AACA,uDAIkC;AAOzB,uGAVP,iCAAsB,OAUO;AAAE,wGAR/B,kCAAuB,OAQ+B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire-format constants for records on `session.out` / `session.in`.
|
|
3
|
+
*
|
|
4
|
+
* Three kinds of records can appear on a Session stream:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Data records** — JSON body shaped as `{data: <UIMessageChunk>, id:
|
|
7
|
+
* <partId>}`, no special headers. The substance of the conversation.
|
|
8
|
+
*
|
|
9
|
+
* 2. **Trigger control records** — empty body, `headers` carry `[
|
|
10
|
+
* ["trigger-control", <subtype>], ...]` plus any subtype-specific sibling
|
|
11
|
+
* headers (e.g. `public-access-token` on `turn-complete`). Routed to a
|
|
12
|
+
* consumer's `onControl` callback; never surfaced as data chunks.
|
|
13
|
+
*
|
|
14
|
+
* 3. **S2 command records** — opaque body, `headers` first entry has an
|
|
15
|
+
* empty name (only valid for S2-interpreted directives like `trim` and
|
|
16
|
+
* `fence`). Filtered out at the SSE parser; consumers never see them.
|
|
17
|
+
*
|
|
18
|
+
* See `docs/ai-chat/client-protocol.mdx#records-on-session-out` for the
|
|
19
|
+
* customer-facing contract.
|
|
20
|
+
*/
|
|
21
|
+
/** Header name carrying the Trigger control subtype on control records. */
|
|
22
|
+
export declare const TRIGGER_CONTROL_HEADER: "trigger-control";
|
|
23
|
+
/** Header name carrying the refreshed `publicAccessToken` on `turn-complete`. */
|
|
24
|
+
export declare const PUBLIC_ACCESS_TOKEN_HEADER: "public-access-token";
|
|
25
|
+
/** Header name carrying the agent's last S2 event id on a handover bridge. */
|
|
26
|
+
export declare const SESSION_STATE_LAST_EVENT_ID_HEADER: "last-event-id";
|
|
27
|
+
/**
|
|
28
|
+
* Header on `turn-complete` records carrying the highest `session.in`
|
|
29
|
+
* seq_num the agent committed to processing during this turn. Read on
|
|
30
|
+
* the next worker boot to seed `.in`'s resume cursor — anything past
|
|
31
|
+
* this seq is new and gets delivered; anything at-or-before was already
|
|
32
|
+
* processed and is skipped. Decimal-string form of the seq_num.
|
|
33
|
+
*
|
|
34
|
+
* Omitted when no `.in` records have been consumed yet (first turn of a
|
|
35
|
+
* fresh chat triggered via the wire payload).
|
|
36
|
+
*/
|
|
37
|
+
export declare const SESSION_IN_EVENT_ID_HEADER: "session-in-event-id";
|
|
38
|
+
export declare const TRIGGER_CONTROL_SUBTYPE: {
|
|
39
|
+
readonly TURN_COMPLETE: "turn-complete";
|
|
40
|
+
readonly UPGRADE_REQUIRED: "upgrade-required";
|
|
41
|
+
};
|
|
42
|
+
export type TriggerControlSubtype = (typeof TRIGGER_CONTROL_SUBTYPE)[keyof typeof TRIGGER_CONTROL_SUBTYPE];
|
|
43
|
+
/** Read a single header value by name. Returns the first match. */
|
|
44
|
+
export declare function headerValue(headers: ReadonlyArray<readonly [string, string]> | undefined, name: string): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Return the Trigger control subtype carried by a record's headers, if any.
|
|
47
|
+
* Returns `undefined` for data records and S2 command records.
|
|
48
|
+
*/
|
|
49
|
+
export declare function controlSubtype(headers: ReadonlyArray<readonly [string, string]> | undefined): string | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Is this record an S2 command record? Detected via the empty-name first
|
|
52
|
+
* header, which S2 permits only for command records (trim/fence).
|
|
53
|
+
*/
|
|
54
|
+
export declare function isS2CommandRecord(headers: ReadonlyArray<readonly [string, string]> | undefined): boolean;
|
|
55
|
+
/** Event payload delivered to a Session-stream `onControl` callback. */
|
|
56
|
+
export type ControlEvent = {
|
|
57
|
+
/** Subtype value from the `trigger-control` header (e.g. `turn-complete`). */
|
|
58
|
+
subtype: string;
|
|
59
|
+
/** All headers on the underlying record. Read additional metadata here. */
|
|
60
|
+
headers: ReadonlyArray<readonly [string, string]>;
|
|
61
|
+
/** S2 sequence number of the control record. */
|
|
62
|
+
seqNum: number;
|
|
63
|
+
/** S2 arrival timestamp of the control record (ms since epoch). */
|
|
64
|
+
timestamp: number;
|
|
65
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wire-format constants for records on `session.out` / `session.in`.
|
|
4
|
+
*
|
|
5
|
+
* Three kinds of records can appear on a Session stream:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Data records** — JSON body shaped as `{data: <UIMessageChunk>, id:
|
|
8
|
+
* <partId>}`, no special headers. The substance of the conversation.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Trigger control records** — empty body, `headers` carry `[
|
|
11
|
+
* ["trigger-control", <subtype>], ...]` plus any subtype-specific sibling
|
|
12
|
+
* headers (e.g. `public-access-token` on `turn-complete`). Routed to a
|
|
13
|
+
* consumer's `onControl` callback; never surfaced as data chunks.
|
|
14
|
+
*
|
|
15
|
+
* 3. **S2 command records** — opaque body, `headers` first entry has an
|
|
16
|
+
* empty name (only valid for S2-interpreted directives like `trim` and
|
|
17
|
+
* `fence`). Filtered out at the SSE parser; consumers never see them.
|
|
18
|
+
*
|
|
19
|
+
* See `docs/ai-chat/client-protocol.mdx#records-on-session-out` for the
|
|
20
|
+
* customer-facing contract.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.TRIGGER_CONTROL_SUBTYPE = exports.SESSION_IN_EVENT_ID_HEADER = exports.SESSION_STATE_LAST_EVENT_ID_HEADER = exports.PUBLIC_ACCESS_TOKEN_HEADER = exports.TRIGGER_CONTROL_HEADER = void 0;
|
|
24
|
+
exports.headerValue = headerValue;
|
|
25
|
+
exports.controlSubtype = controlSubtype;
|
|
26
|
+
exports.isS2CommandRecord = isS2CommandRecord;
|
|
27
|
+
/** Header name carrying the Trigger control subtype on control records. */
|
|
28
|
+
exports.TRIGGER_CONTROL_HEADER = "trigger-control";
|
|
29
|
+
/** Header name carrying the refreshed `publicAccessToken` on `turn-complete`. */
|
|
30
|
+
exports.PUBLIC_ACCESS_TOKEN_HEADER = "public-access-token";
|
|
31
|
+
/** Header name carrying the agent's last S2 event id on a handover bridge. */
|
|
32
|
+
exports.SESSION_STATE_LAST_EVENT_ID_HEADER = "last-event-id";
|
|
33
|
+
/**
|
|
34
|
+
* Header on `turn-complete` records carrying the highest `session.in`
|
|
35
|
+
* seq_num the agent committed to processing during this turn. Read on
|
|
36
|
+
* the next worker boot to seed `.in`'s resume cursor — anything past
|
|
37
|
+
* this seq is new and gets delivered; anything at-or-before was already
|
|
38
|
+
* processed and is skipped. Decimal-string form of the seq_num.
|
|
39
|
+
*
|
|
40
|
+
* Omitted when no `.in` records have been consumed yet (first turn of a
|
|
41
|
+
* fresh chat triggered via the wire payload).
|
|
42
|
+
*/
|
|
43
|
+
exports.SESSION_IN_EVENT_ID_HEADER = "session-in-event-id";
|
|
44
|
+
exports.TRIGGER_CONTROL_SUBTYPE = {
|
|
45
|
+
TURN_COMPLETE: "turn-complete",
|
|
46
|
+
UPGRADE_REQUIRED: "upgrade-required",
|
|
47
|
+
};
|
|
48
|
+
/** Read a single header value by name. Returns the first match. */
|
|
49
|
+
function headerValue(headers, name) {
|
|
50
|
+
if (!headers)
|
|
51
|
+
return undefined;
|
|
52
|
+
for (const entry of headers) {
|
|
53
|
+
if (entry?.[0] === name)
|
|
54
|
+
return entry[1];
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Return the Trigger control subtype carried by a record's headers, if any.
|
|
60
|
+
* Returns `undefined` for data records and S2 command records.
|
|
61
|
+
*/
|
|
62
|
+
function controlSubtype(headers) {
|
|
63
|
+
return headerValue(headers, exports.TRIGGER_CONTROL_HEADER);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Is this record an S2 command record? Detected via the empty-name first
|
|
67
|
+
* header, which S2 permits only for command records (trim/fence).
|
|
68
|
+
*/
|
|
69
|
+
function isS2CommandRecord(headers) {
|
|
70
|
+
return headers?.[0]?.[0] === "";
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=wireProtocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireProtocol.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/wireProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAgCH,kCASC;AAMD,wCAIC;AAMD,8CAIC;AA3DD,2EAA2E;AAC9D,QAAA,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE,iFAAiF;AACpE,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE,8EAA8E;AACjE,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAE5D,QAAA,uBAAuB,GAAG;IACrC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAKX,mEAAmE;AACnE,SAAgB,WAAW,CACzB,OAA6D,EAC7D,IAAY;IAEZ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAC5B,OAA6D;IAE7D,OAAO,WAAW,CAAC,OAAO,EAAE,8BAAsB,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,OAA6D;IAE7D,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -5,6 +5,7 @@ export declare class TaskContextAPI {
|
|
|
5
5
|
#private;
|
|
6
6
|
private static _instance?;
|
|
7
7
|
private _runDisabled;
|
|
8
|
+
private _conversationId?;
|
|
8
9
|
private constructor();
|
|
9
10
|
static getInstance(): TaskContextAPI;
|
|
10
11
|
get isInsideTask(): boolean;
|
|
@@ -13,6 +14,9 @@ export declare class TaskContextAPI {
|
|
|
13
14
|
get worker(): ServerBackgroundWorker | undefined;
|
|
14
15
|
get isWarmStart(): boolean | undefined;
|
|
15
16
|
get attributes(): Attributes;
|
|
17
|
+
get conversationAttributes(): Attributes;
|
|
18
|
+
get conversationId(): string | undefined;
|
|
19
|
+
setConversationId(conversationId: string | undefined): void;
|
|
16
20
|
get resourceAttributes(): Attributes;
|
|
17
21
|
get workerAttributes(): Attributes;
|
|
18
22
|
get contextAttributes(): Attributes;
|
|
@@ -7,6 +7,7 @@ const API_NAME = "task-context";
|
|
|
7
7
|
class TaskContextAPI {
|
|
8
8
|
static _instance;
|
|
9
9
|
_runDisabled = false;
|
|
10
|
+
_conversationId;
|
|
10
11
|
constructor() { }
|
|
11
12
|
static getInstance() {
|
|
12
13
|
if (!this._instance) {
|
|
@@ -34,11 +35,23 @@ class TaskContextAPI {
|
|
|
34
35
|
return {
|
|
35
36
|
...this.contextAttributes,
|
|
36
37
|
...this.workerAttributes,
|
|
38
|
+
...this.conversationAttributes,
|
|
37
39
|
[semanticInternalAttributes_js_1.SemanticInternalAttributes.WARM_START]: !!this.isWarmStart,
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
return {};
|
|
41
43
|
}
|
|
44
|
+
get conversationAttributes() {
|
|
45
|
+
if (!this._conversationId)
|
|
46
|
+
return {};
|
|
47
|
+
return { [semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]: this._conversationId };
|
|
48
|
+
}
|
|
49
|
+
get conversationId() {
|
|
50
|
+
return this._conversationId;
|
|
51
|
+
}
|
|
52
|
+
setConversationId(conversationId) {
|
|
53
|
+
this._conversationId = conversationId || undefined;
|
|
54
|
+
}
|
|
42
55
|
get resourceAttributes() {
|
|
43
56
|
if (this.ctx) {
|
|
44
57
|
return {
|
|
@@ -89,6 +102,11 @@ class TaskContextAPI {
|
|
|
89
102
|
}
|
|
90
103
|
setGlobalTaskContext(taskContext) {
|
|
91
104
|
this._runDisabled = false;
|
|
105
|
+
// Each run boot re-registers the global; clear any conversation id
|
|
106
|
+
// left over from a previous run on this warm-restarted process so
|
|
107
|
+
// attributes don't bleed across runs that don't call
|
|
108
|
+
// `setConversationId` themselves.
|
|
109
|
+
this._conversationId = undefined;
|
|
92
110
|
return (0, globals_js_1.registerGlobal)(API_NAME, taskContext, true);
|
|
93
111
|
}
|
|
94
112
|
#getTaskContext() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.ts"],"names":[],"mappings":";;;AAEA,oFAA8E;AAC9E,oDAAgE;AAGhE,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,MAAa,cAAc;IACjB,MAAM,CAAC,SAAS,CAAkB;IAClC,YAAY,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const globals_js_1 = require("../utils/globals.js");
|
|
5
|
+
const semanticInternalAttributes_js_1 = require("../semanticInternalAttributes.js");
|
|
6
|
+
const index_js_1 = require("./index.js");
|
|
7
|
+
const FAKE_CTX = {
|
|
8
|
+
attempt: { id: "attempt_1", number: 1, startedAt: new Date(), status: "EXECUTING" },
|
|
9
|
+
run: {
|
|
10
|
+
id: "run_1",
|
|
11
|
+
payload: undefined,
|
|
12
|
+
payloadType: "application/json",
|
|
13
|
+
context: undefined,
|
|
14
|
+
createdAt: new Date(),
|
|
15
|
+
tags: [],
|
|
16
|
+
isTest: false,
|
|
17
|
+
isReplay: false,
|
|
18
|
+
startedAt: new Date(),
|
|
19
|
+
durationMs: 0,
|
|
20
|
+
costInCents: 0,
|
|
21
|
+
baseCostInCents: 0,
|
|
22
|
+
},
|
|
23
|
+
task: { id: "my-task", filePath: "src/trigger/task.ts", exportName: "myTask" },
|
|
24
|
+
queue: { id: "queue_1", name: "default" },
|
|
25
|
+
environment: { id: "env_1", slug: "dev", type: "DEVELOPMENT" },
|
|
26
|
+
organization: { id: "org_1", slug: "acme", name: "Acme" },
|
|
27
|
+
project: { id: "proj_1", ref: "proj_xyz", slug: "demo", name: "Demo" },
|
|
28
|
+
machine: {
|
|
29
|
+
name: "small-1x",
|
|
30
|
+
cpu: 0.5,
|
|
31
|
+
memory: 0.5,
|
|
32
|
+
centsPerMs: 0.0001,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const FAKE_WORKER = { id: "worker_1", version: "1.0.0", contentHash: "abc" };
|
|
36
|
+
(0, vitest_1.describe)("TaskContextAPI conversation id", () => {
|
|
37
|
+
(0, vitest_1.afterEach)(() => {
|
|
38
|
+
(0, globals_js_1.unregisterGlobal)("task-context");
|
|
39
|
+
index_js_1.TaskContextAPI.getInstance().setConversationId(undefined);
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)("returns no conversation attribute when setConversationId was never called", () => {
|
|
42
|
+
const api = index_js_1.TaskContextAPI.getInstance();
|
|
43
|
+
api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
|
|
44
|
+
(0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)("includes gen_ai.conversation.id after setConversationId", () => {
|
|
47
|
+
const api = index_js_1.TaskContextAPI.getInstance();
|
|
48
|
+
api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
|
|
49
|
+
api.setConversationId("chat_123");
|
|
50
|
+
(0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBe("chat_123");
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)("clears the conversation attribute when called with undefined", () => {
|
|
53
|
+
const api = index_js_1.TaskContextAPI.getInstance();
|
|
54
|
+
api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
|
|
55
|
+
api.setConversationId("chat_123");
|
|
56
|
+
api.setConversationId(undefined);
|
|
57
|
+
(0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
|
|
58
|
+
(0, vitest_1.expect)(api.conversationId).toBeUndefined();
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.it)("returns no attributes when there is no task context", () => {
|
|
61
|
+
const api = index_js_1.TaskContextAPI.getInstance();
|
|
62
|
+
api.setConversationId("chat_123");
|
|
63
|
+
(0, vitest_1.expect)(api.attributes).toEqual({});
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)("clears conversation id when a new task context is registered (warm restart)", () => {
|
|
66
|
+
const api = index_js_1.TaskContextAPI.getInstance();
|
|
67
|
+
api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
|
|
68
|
+
api.setConversationId("chat_old");
|
|
69
|
+
api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
|
|
70
|
+
(0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,13 @@ class TaskContextSpanProcessor {
|
|
|
22
22
|
if (!task_context_api_js_1.taskContext.isRunDisabled && task_context_api_js_1.taskContext.ctx.run.tags?.length) {
|
|
23
23
|
span.setAttribute(semanticInternalAttributes_js_1.SemanticInternalAttributes.RUN_TAGS, task_context_api_js_1.taskContext.ctx.run.tags);
|
|
24
24
|
}
|
|
25
|
+
// Stamp `gen_ai.conversation.id` (OTel GenAI semantic convention)
|
|
26
|
+
// directly on every span so it survives the OTLP ingest's `ctx.*`
|
|
27
|
+
// strip and lands in the stored attributes column without a schema
|
|
28
|
+
// migration.
|
|
29
|
+
if (task_context_api_js_1.taskContext.conversationId) {
|
|
30
|
+
span.setAttribute(semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID, task_context_api_js_1.taskContext.conversationId);
|
|
31
|
+
}
|
|
25
32
|
}
|
|
26
33
|
if (!isPartialSpan(span) && !skipPartialSpan(span)) {
|
|
27
34
|
const partialSpan = createPartialSpan(this._tracer, span, parentContext);
|
|
@@ -137,6 +144,10 @@ class TaskContextMetricExporter {
|
|
|
137
144
|
if (!task_context_api_js_1.taskContext.isRunDisabled && ctx.run.tags?.length) {
|
|
138
145
|
contextAttrs[semanticInternalAttributes_js_1.SemanticInternalAttributes.RUN_TAGS] = ctx.run.tags;
|
|
139
146
|
}
|
|
147
|
+
if (task_context_api_js_1.taskContext.conversationId) {
|
|
148
|
+
contextAttrs[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID] =
|
|
149
|
+
task_context_api_js_1.taskContext.conversationId;
|
|
150
|
+
}
|
|
140
151
|
const modified = {
|
|
141
152
|
resource: metrics.resource,
|
|
142
153
|
scopeMetrics: metrics.scopeMetrics.map((scope) => ({
|