@anthropic-ai/sdk 0.125.0 → 0.127.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/CHANGELOG.md +88 -0
- package/client.d.mts +12 -11
- package/client.d.mts.map +1 -1
- package/client.d.ts +12 -11
- package/client.d.ts.map +1 -1
- package/client.js +865 -845
- package/client.js.map +1 -1
- package/client.mjs +866 -840
- package/client.mjs.map +1 -1
- package/core/api-promise.js +71 -68
- package/core/api-promise.js.map +1 -1
- package/core/api-promise.mjs +71 -64
- package/core/api-promise.mjs.map +1 -1
- package/core/error.js +5 -2
- package/core/error.js.map +1 -1
- package/core/error.mjs +5 -2
- package/core/error.mjs.map +1 -1
- package/core/pagination.js +56 -50
- package/core/pagination.js.map +1 -1
- package/core/pagination.mjs +56 -41
- package/core/pagination.mjs.map +1 -1
- package/core/streaming.js +212 -209
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +212 -209
- package/core/streaming.mjs.map +1 -1
- package/helpers/beta/mcp.js +14 -19
- package/helpers/beta/mcp.js.map +1 -1
- package/helpers/beta/mcp.mjs +14 -13
- package/helpers/beta/mcp.mjs.map +1 -1
- package/internal/constants.js +1 -1
- package/internal/constants.js.map +1 -1
- package/internal/decoders/jsonl.js +27 -24
- package/internal/decoders/jsonl.js.map +1 -1
- package/internal/decoders/jsonl.mjs +27 -24
- package/internal/decoders/jsonl.mjs.map +1 -1
- package/internal/decoders/line.js +52 -49
- package/internal/decoders/line.js.map +1 -1
- package/internal/decoders/line.mjs +52 -43
- package/internal/decoders/line.mjs.map +1 -1
- package/internal/file-store.js +256 -258
- package/internal/file-store.js.map +1 -1
- package/internal/file-store.mjs +256 -243
- package/internal/file-store.mjs.map +1 -1
- package/internal/node.browser.d.mts.map +1 -1
- package/internal/node.browser.d.ts.map +1 -1
- package/internal/node.browser.js.map +1 -1
- package/internal/node.browser.mjs +7 -7
- package/internal/node.browser.mjs.map +1 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +2 -2
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +3 -3
- package/internal/parse.mjs.map +1 -1
- package/internal/shim-types.js +0 -6
- package/internal/shim-types.js.map +1 -1
- package/internal/shim-types.mjs +0 -6
- package/internal/shim-types.mjs.map +1 -1
- package/internal/shims.d.mts +3 -3
- package/internal/shims.d.mts.map +1 -1
- package/internal/shims.d.ts +3 -3
- package/internal/shims.d.ts.map +1 -1
- package/internal/shims.js +0 -6
- package/internal/shims.js.map +1 -1
- package/internal/shims.mjs +0 -6
- package/internal/shims.mjs.map +1 -1
- package/internal/stainless-helper-header.js +6 -6
- package/internal/stainless-helper-header.js.map +1 -1
- package/internal/utils/async-queue.js +66 -63
- package/internal/utils/async-queue.js.map +1 -1
- package/internal/utils/async-queue.mjs +66 -56
- package/internal/utils/async-queue.mjs.map +1 -1
- package/internal/utils/bytes.d.mts +1 -1
- package/internal/utils/bytes.d.mts.map +1 -1
- package/internal/utils/bytes.d.ts +1 -1
- package/internal/utils/bytes.d.ts.map +1 -1
- package/internal/utils/log.d.mts +7 -12
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts +7 -12
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +12 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +11 -0
- package/internal/utils/log.mjs.map +1 -1
- package/lib/BetaMessageStream.d.mts.map +1 -1
- package/lib/BetaMessageStream.d.ts.map +1 -1
- package/lib/BetaMessageStream.js +595 -590
- package/lib/BetaMessageStream.js.map +1 -1
- package/lib/BetaMessageStream.mjs +595 -590
- package/lib/BetaMessageStream.mjs.map +1 -1
- package/lib/MessageStream.js +544 -541
- package/lib/MessageStream.js.map +1 -1
- package/lib/MessageStream.mjs +544 -541
- package/lib/MessageStream.mjs.map +1 -1
- package/lib/beta-parser.d.mts +1 -3
- package/lib/beta-parser.d.mts.map +1 -1
- package/lib/beta-parser.d.ts +1 -3
- package/lib/beta-parser.d.ts.map +1 -1
- package/lib/beta-parser.js.map +1 -1
- package/lib/beta-parser.mjs.map +1 -1
- package/lib/environments/poller.js +180 -174
- package/lib/environments/poller.js.map +1 -1
- package/lib/environments/poller.mjs +180 -153
- package/lib/environments/poller.mjs.map +1 -1
- package/lib/environments/worker.js +375 -369
- package/lib/environments/worker.js.map +1 -1
- package/lib/environments/worker.mjs +374 -329
- package/lib/environments/worker.mjs.map +1 -1
- package/lib/internal/stub.d.mts +2 -0
- package/lib/internal/stub.d.mts.map +1 -0
- package/lib/internal/stub.d.ts +2 -0
- package/lib/internal/stub.d.ts.map +1 -0
- package/lib/internal/stub.js +6 -0
- package/lib/internal/stub.js.map +1 -0
- package/lib/internal/stub.mjs +3 -0
- package/lib/internal/stub.mjs.map +1 -0
- package/lib/internal/types.d.mts +5 -0
- package/lib/internal/types.d.mts.map +1 -0
- package/lib/internal/types.d.ts +5 -0
- package/lib/internal/types.d.ts.map +1 -0
- package/lib/internal/types.js +3 -0
- package/lib/internal/types.js.map +1 -0
- package/lib/internal/types.mjs +2 -0
- package/lib/internal/types.mjs.map +1 -0
- package/lib/middleware.js +6 -1
- package/lib/middleware.js.map +1 -1
- package/lib/middleware.mjs +6 -1
- package/lib/middleware.mjs.map +1 -1
- package/lib/parser.d.mts +1 -3
- package/lib/parser.d.mts.map +1 -1
- package/lib/parser.d.ts +1 -3
- package/lib/parser.d.ts.map +1 -1
- package/lib/parser.js.map +1 -1
- package/lib/parser.mjs.map +1 -1
- package/lib/tools/BetaToolRunner.d.mts +21 -6
- package/lib/tools/BetaToolRunner.d.mts.map +1 -1
- package/lib/tools/BetaToolRunner.d.ts +21 -6
- package/lib/tools/BetaToolRunner.d.ts.map +1 -1
- package/lib/tools/BetaToolRunner.js +415 -310
- package/lib/tools/BetaToolRunner.js.map +1 -1
- package/lib/tools/BetaToolRunner.mjs +414 -303
- package/lib/tools/BetaToolRunner.mjs.map +1 -1
- package/lib/tools/SessionToolRunner.js +241 -235
- package/lib/tools/SessionToolRunner.js.map +1 -1
- package/lib/tools/SessionToolRunner.mjs +241 -192
- package/lib/tools/SessionToolRunner.mjs.map +1 -1
- package/lib/tools/ToolError.js +39 -36
- package/lib/tools/ToolError.js.map +1 -1
- package/lib/tools/ToolError.mjs +39 -13
- package/lib/tools/ToolError.mjs.map +1 -1
- package/lib/transform-json-schema.js +7 -5
- package/lib/transform-json-schema.js.map +1 -1
- package/lib/transform-json-schema.mjs +7 -5
- package/lib/transform-json-schema.mjs.map +1 -1
- package/package.json +4 -3
- package/resources/beta/agents/agents.js +135 -132
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs +135 -132
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/beta.d.mts +5 -5
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +5 -5
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js +39 -36
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs +39 -36
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/deployment-runs.d.mts +4 -0
- package/resources/beta/deployment-runs.d.mts.map +1 -1
- package/resources/beta/deployment-runs.d.ts +4 -0
- package/resources/beta/deployment-runs.d.ts.map +1 -1
- package/resources/beta/deployments.d.mts +5 -0
- package/resources/beta/deployments.d.mts.map +1 -1
- package/resources/beta/deployments.d.ts +5 -0
- package/resources/beta/deployments.d.ts.map +1 -1
- package/resources/beta/dreams.d.mts +19 -28
- package/resources/beta/dreams.d.mts.map +1 -1
- package/resources/beta/dreams.d.ts +19 -28
- package/resources/beta/dreams.d.ts.map +1 -1
- package/resources/beta/environments/environments.js +157 -154
- package/resources/beta/environments/environments.js.map +1 -1
- package/resources/beta/environments/environments.mjs +157 -154
- package/resources/beta/environments/environments.mjs.map +1 -1
- package/resources/beta/environments/work.js +255 -252
- package/resources/beta/environments/work.js.map +1 -1
- package/resources/beta/environments/work.mjs +255 -252
- package/resources/beta/environments/work.mjs.map +1 -1
- package/resources/beta/index.d.mts +2 -2
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +2 -2
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/memory-stores/memories.d.mts +6 -0
- package/resources/beta/memory-stores/memories.d.mts.map +1 -1
- package/resources/beta/memory-stores/memories.d.ts +6 -0
- package/resources/beta/memory-stores/memories.d.ts.map +1 -1
- package/resources/beta/memory-stores/memory-stores.js +150 -147
- package/resources/beta/memory-stores/memory-stores.js.map +1 -1
- package/resources/beta/memory-stores/memory-stores.mjs +150 -147
- package/resources/beta/memory-stores/memory-stores.mjs.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.mts +7 -0
- package/resources/beta/memory-stores/memory-versions.d.mts.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.ts +7 -0
- package/resources/beta/memory-stores/memory-versions.d.ts.map +1 -1
- package/resources/beta/messages/batches.d.mts +12 -1
- package/resources/beta/messages/batches.d.mts.map +1 -1
- package/resources/beta/messages/batches.d.ts +12 -1
- package/resources/beta/messages/batches.d.ts.map +1 -1
- package/resources/beta/messages/index.d.mts +1 -1
- package/resources/beta/messages/index.d.mts.map +1 -1
- package/resources/beta/messages/index.d.ts +1 -1
- package/resources/beta/messages/index.d.ts.map +1 -1
- package/resources/beta/messages/index.js.map +1 -1
- package/resources/beta/messages/index.mjs.map +1 -1
- package/resources/beta/messages/messages.d.mts +239 -101
- package/resources/beta/messages/messages.d.mts.map +1 -1
- package/resources/beta/messages/messages.d.ts +239 -101
- package/resources/beta/messages/messages.d.ts.map +1 -1
- package/resources/beta/messages/messages.js +113 -110
- package/resources/beta/messages/messages.js.map +1 -1
- package/resources/beta/messages/messages.mjs +113 -110
- package/resources/beta/messages/messages.mjs.map +1 -1
- package/resources/beta/models.d.mts +22 -1
- package/resources/beta/models.d.mts.map +1 -1
- package/resources/beta/models.d.ts +22 -1
- package/resources/beta/models.d.ts.map +1 -1
- package/resources/beta/organization/federation/federation.js +11 -8
- package/resources/beta/organization/federation/federation.js.map +1 -1
- package/resources/beta/organization/federation/federation.mjs +11 -8
- package/resources/beta/organization/federation/federation.mjs.map +1 -1
- package/resources/beta/organization/federation/rules/rules.js +187 -184
- package/resources/beta/organization/federation/rules/rules.js.map +1 -1
- package/resources/beta/organization/federation/rules/rules.mjs +187 -184
- package/resources/beta/organization/federation/rules/rules.mjs.map +1 -1
- package/resources/beta/organization/index.d.mts +1 -1
- package/resources/beta/organization/index.d.mts.map +1 -1
- package/resources/beta/organization/index.d.ts +1 -1
- package/resources/beta/organization/index.d.ts.map +1 -1
- package/resources/beta/organization/index.js.map +1 -1
- package/resources/beta/organization/index.mjs.map +1 -1
- package/resources/beta/organization/organization.d.mts +2 -2
- package/resources/beta/organization/organization.d.mts.map +1 -1
- package/resources/beta/organization/organization.d.ts +2 -2
- package/resources/beta/organization/organization.d.ts.map +1 -1
- package/resources/beta/organization/organization.js +38 -35
- package/resources/beta/organization/organization.js.map +1 -1
- package/resources/beta/organization/organization.mjs +38 -35
- package/resources/beta/organization/organization.mjs.map +1 -1
- package/resources/beta/organization/rate-limits.d.mts +87 -5
- package/resources/beta/organization/rate-limits.d.mts.map +1 -1
- package/resources/beta/organization/rate-limits.d.ts +87 -5
- package/resources/beta/organization/rate-limits.d.ts.map +1 -1
- package/resources/beta/organization/service-accounts/service-accounts.js +163 -160
- package/resources/beta/organization/service-accounts/service-accounts.js.map +1 -1
- package/resources/beta/organization/service-accounts/service-accounts.mjs +163 -160
- package/resources/beta/organization/service-accounts/service-accounts.mjs.map +1 -1
- package/resources/beta/organization/workspaces/rate-limits.d.mts +9 -4
- package/resources/beta/organization/workspaces/rate-limits.d.mts.map +1 -1
- package/resources/beta/organization/workspaces/rate-limits.d.ts +9 -4
- package/resources/beta/organization/workspaces/rate-limits.d.ts.map +1 -1
- package/resources/beta/organization/workspaces/rate-limits.js.map +1 -1
- package/resources/beta/organization/workspaces/rate-limits.mjs.map +1 -1
- package/resources/beta/organization/workspaces/workspaces.d.mts +3 -3
- package/resources/beta/organization/workspaces/workspaces.d.mts.map +1 -1
- package/resources/beta/organization/workspaces/workspaces.d.ts +3 -3
- package/resources/beta/organization/workspaces/workspaces.d.ts.map +1 -1
- package/resources/beta/organization/workspaces/workspaces.js +97 -94
- package/resources/beta/organization/workspaces/workspaces.js.map +1 -1
- package/resources/beta/organization/workspaces/workspaces.mjs +97 -94
- package/resources/beta/organization/workspaces/workspaces.mjs.map +1 -1
- package/resources/beta/sessions/events.d.mts +12 -21
- package/resources/beta/sessions/events.d.mts.map +1 -1
- package/resources/beta/sessions/events.d.ts +12 -21
- package/resources/beta/sessions/events.d.ts.map +1 -1
- package/resources/beta/sessions/events.js +118 -115
- package/resources/beta/sessions/events.js.map +1 -1
- package/resources/beta/sessions/events.mjs +118 -115
- package/resources/beta/sessions/events.mjs.map +1 -1
- package/resources/beta/sessions/resources.d.mts +0 -3
- package/resources/beta/sessions/resources.d.mts.map +1 -1
- package/resources/beta/sessions/resources.d.ts +0 -3
- package/resources/beta/sessions/resources.d.ts.map +1 -1
- package/resources/beta/sessions/sessions.d.mts +8 -2
- package/resources/beta/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/sessions/sessions.d.ts +8 -2
- package/resources/beta/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/sessions/sessions.js +161 -158
- package/resources/beta/sessions/sessions.js.map +1 -1
- package/resources/beta/sessions/sessions.mjs +161 -158
- package/resources/beta/sessions/sessions.mjs.map +1 -1
- package/resources/beta/sessions/threads/threads.js +86 -83
- package/resources/beta/sessions/threads/threads.js.map +1 -1
- package/resources/beta/sessions/threads/threads.mjs +86 -83
- package/resources/beta/sessions/threads/threads.mjs.map +1 -1
- package/resources/beta/skills/skills.js +104 -101
- package/resources/beta/skills/skills.js.map +1 -1
- package/resources/beta/skills/skills.mjs +104 -101
- package/resources/beta/skills/skills.mjs.map +1 -1
- package/resources/beta/tunnels/certificates.d.mts +2 -2
- package/resources/beta/tunnels/certificates.d.ts +2 -2
- package/resources/beta/tunnels/tunnels.js +188 -185
- package/resources/beta/tunnels/tunnels.js.map +1 -1
- package/resources/beta/tunnels/tunnels.mjs +188 -185
- package/resources/beta/tunnels/tunnels.mjs.map +1 -1
- package/resources/beta/user-profiles.d.mts +45 -0
- package/resources/beta/user-profiles.d.mts.map +1 -1
- package/resources/beta/user-profiles.d.ts +45 -0
- package/resources/beta/user-profiles.d.ts.map +1 -1
- package/resources/beta/user-profiles.js +25 -10
- package/resources/beta/user-profiles.js.map +1 -1
- package/resources/beta/user-profiles.mjs +25 -10
- package/resources/beta/user-profiles.mjs.map +1 -1
- package/resources/beta/vaults/credentials.d.mts +19 -19
- package/resources/beta/vaults/credentials.d.mts.map +1 -1
- package/resources/beta/vaults/credentials.d.ts +19 -19
- package/resources/beta/vaults/credentials.d.ts.map +1 -1
- package/resources/beta/vaults/vaults.js +156 -153
- package/resources/beta/vaults/vaults.js.map +1 -1
- package/resources/beta/vaults/vaults.mjs +156 -153
- package/resources/beta/vaults/vaults.mjs.map +1 -1
- package/resources/completions.d.mts +1 -1
- package/resources/completions.d.ts +1 -1
- package/resources/index.d.mts +1 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +1 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/messages/index.d.mts +1 -1
- package/resources/messages/index.d.mts.map +1 -1
- package/resources/messages/index.d.ts +1 -1
- package/resources/messages/index.d.ts.map +1 -1
- package/resources/messages/index.js.map +1 -1
- package/resources/messages/index.mjs.map +1 -1
- package/resources/messages/messages.d.mts +100 -63
- package/resources/messages/messages.d.mts.map +1 -1
- package/resources/messages/messages.d.ts +100 -63
- package/resources/messages/messages.d.ts.map +1 -1
- package/resources/messages/messages.js +115 -112
- package/resources/messages/messages.js.map +1 -1
- package/resources/messages/messages.mjs +115 -112
- package/resources/messages/messages.mjs.map +1 -1
- package/resources/skills/skills.js +88 -85
- package/resources/skills/skills.js.map +1 -1
- package/resources/skills/skills.mjs +88 -85
- package/resources/skills/skills.mjs.map +1 -1
- package/resources/top-level.js +0 -1
- package/resources/top-level.js.map +1 -1
- package/resources/top-level.mjs +0 -1
- package/resources/top-level.mjs.map +1 -1
- package/src/client.ts +95 -72
- package/src/internal/node.browser.ts +7 -7
- package/src/internal/parse.ts +8 -11
- package/src/internal/shims.ts +4 -3
- package/src/internal/utils/bytes.ts +1 -1
- package/src/internal/utils/log.ts +16 -2
- package/src/lib/BetaMessageStream.ts +7 -5
- package/src/lib/beta-parser.ts +1 -3
- package/src/lib/internal/stub.ts +2 -0
- package/src/lib/internal/types.ts +2 -0
- package/src/lib/middleware.ts +6 -1
- package/src/lib/parser.ts +1 -3
- package/src/lib/tools/BetaToolRunner.ts +157 -24
- package/src/lib/transform-json-schema.ts +8 -6
- package/src/resources/beta/beta.ts +24 -1
- package/src/resources/beta/deployment-runs.ts +4 -0
- package/src/resources/beta/deployments.ts +5 -0
- package/src/resources/beta/dreams.ts +19 -28
- package/src/resources/beta/index.ts +11 -0
- package/src/resources/beta/memory-stores/memories.ts +6 -0
- package/src/resources/beta/memory-stores/memory-versions.ts +7 -0
- package/src/resources/beta/messages/batches.ts +13 -1
- package/src/resources/beta/messages/index.ts +10 -0
- package/src/resources/beta/messages/messages.ts +289 -100
- package/src/resources/beta/models.ts +25 -0
- package/src/resources/beta/organization/index.ts +6 -0
- package/src/resources/beta/organization/organization.ts +12 -0
- package/src/resources/beta/organization/rate-limits.ts +112 -4
- package/src/resources/beta/organization/workspaces/rate-limits.ts +16 -4
- package/src/resources/beta/organization/workspaces/workspaces.ts +3 -3
- package/src/resources/beta/sessions/events.ts +12 -21
- package/src/resources/beta/sessions/resources.ts +0 -3
- package/src/resources/beta/sessions/sessions.ts +8 -2
- package/src/resources/beta/tunnels/certificates.ts +2 -2
- package/src/resources/beta/user-profiles.ts +75 -10
- package/src/resources/beta/vaults/credentials.ts +19 -19
- package/src/resources/completions.ts +1 -1
- package/src/resources/index.ts +6 -0
- package/src/resources/messages/index.ts +6 -0
- package/src/resources/messages/messages.ts +128 -62
- package/src/tsconfig.json +13 -3
- package/src/version.ts +1 -1
- package/tools/agent-toolset/fs-util.js +0 -6
- package/tools/agent-toolset/fs-util.js.map +1 -1
- package/tools/agent-toolset/fs-util.mjs +0 -6
- package/tools/agent-toolset/fs-util.mjs.map +1 -1
- package/tools/agent-toolset/memories.js +4 -4
- package/tools/agent-toolset/memories.js.map +1 -1
- package/tools/agent-toolset/memories.mjs +2 -2
- package/tools/agent-toolset/memories.mjs.map +1 -1
- package/tools/agent-toolset/node.browser.js +12 -12
- package/tools/agent-toolset/node.browser.js.map +1 -1
- package/tools/agent-toolset/node.js +142 -139
- package/tools/agent-toolset/node.js.map +1 -1
- package/tools/agent-toolset/node.mjs +132 -125
- package/tools/agent-toolset/node.mjs.map +1 -1
- package/tools/agent-toolset/skills.js +5 -5
- package/tools/agent-toolset/skills.js.map +1 -1
- package/tools/agent-toolset/sync-interval.js +3 -3
- package/tools/agent-toolset/sync-interval.js.map +1 -1
- package/tools/memory/node.browser.js +2 -2
- package/tools/memory/node.browser.js.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/lib/BetaMessageStream.js
CHANGED
|
@@ -13,645 +13,650 @@ const message_stream_utils_1 = require("../internal/message-stream-utils.js");
|
|
|
13
13
|
function tracksToolInput(content) {
|
|
14
14
|
return content.type === 'tool_use' || content.type === 'server_tool_use' || content.type === 'mcp_tool_use';
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
16
|
+
var BetaMessageStream = /* @__PURE__ */ (() => {
|
|
17
|
+
class BetaMessageStream {
|
|
18
|
+
constructor(params, opts) {
|
|
19
|
+
_BetaMessageStream_instances.add(this);
|
|
20
|
+
this.messages = [];
|
|
21
|
+
this.receivedMessages = [];
|
|
22
|
+
_BetaMessageStream_currentMessageSnapshot.set(this, void 0);
|
|
23
|
+
_BetaMessageStream_params.set(this, null);
|
|
24
|
+
this.controller = new AbortController();
|
|
25
|
+
_BetaMessageStream_connectedPromise.set(this, void 0);
|
|
26
|
+
_BetaMessageStream_resolveConnectedPromise.set(this, () => { });
|
|
27
|
+
_BetaMessageStream_rejectConnectedPromise.set(this, () => { });
|
|
28
|
+
_BetaMessageStream_endPromise.set(this, void 0);
|
|
29
|
+
_BetaMessageStream_resolveEndPromise.set(this, () => { });
|
|
30
|
+
_BetaMessageStream_rejectEndPromise.set(this, () => { });
|
|
31
|
+
_BetaMessageStream_listeners.set(this, {});
|
|
32
|
+
_BetaMessageStream_ended.set(this, false);
|
|
33
|
+
_BetaMessageStream_errored.set(this, false);
|
|
34
|
+
_BetaMessageStream_aborted.set(this, false);
|
|
35
|
+
_BetaMessageStream_catchingPromiseCreated.set(this, false);
|
|
36
|
+
_BetaMessageStream_response.set(this, void 0);
|
|
37
|
+
_BetaMessageStream_request_id.set(this, void 0);
|
|
38
|
+
_BetaMessageStream_workspace_id.set(this, void 0);
|
|
39
|
+
_BetaMessageStream_logger.set(this, void 0);
|
|
40
|
+
_BetaMessageStream_handleError.set(this, (error) => {
|
|
41
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_errored, true, "f");
|
|
42
|
+
if ((0, errors_1.isAbortError)(error)) {
|
|
43
|
+
error = new error_1.APIUserAbortError();
|
|
44
|
+
}
|
|
45
|
+
if (error instanceof error_1.APIUserAbortError) {
|
|
46
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_aborted, true, "f");
|
|
47
|
+
return this._emit('abort', error);
|
|
48
|
+
}
|
|
49
|
+
if (error instanceof error_1.AnthropicError) {
|
|
50
|
+
return this._emit('error', error);
|
|
51
|
+
}
|
|
52
|
+
if (error instanceof Error) {
|
|
53
|
+
const anthropicError = new error_1.AnthropicError(error.message);
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
anthropicError.cause = error;
|
|
56
|
+
return this._emit('error', anthropicError);
|
|
57
|
+
}
|
|
58
|
+
return this._emit('error', new error_1.AnthropicError(String(error)));
|
|
59
|
+
});
|
|
60
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_connectedPromise, new Promise((resolve, reject) => {
|
|
61
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_resolveConnectedPromise, resolve, "f");
|
|
62
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_rejectConnectedPromise, reject, "f");
|
|
63
|
+
}), "f");
|
|
64
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_endPromise, new Promise((resolve, reject) => {
|
|
65
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_resolveEndPromise, resolve, "f");
|
|
66
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_rejectEndPromise, reject, "f");
|
|
67
|
+
}), "f");
|
|
68
|
+
// Don't let these promises cause unhandled rejection errors.
|
|
69
|
+
// we will manually cause an unhandled rejection error later
|
|
70
|
+
// if the user hasn't registered any error listener or called
|
|
71
|
+
// any promise-returning method.
|
|
72
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_connectedPromise, "f").catch(() => { });
|
|
73
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_endPromise, "f").catch(() => { });
|
|
74
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_params, params, "f");
|
|
75
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_logger, opts?.logger ?? console, "f");
|
|
76
|
+
}
|
|
77
|
+
get response() {
|
|
78
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_response, "f");
|
|
79
|
+
}
|
|
80
|
+
get request_id() {
|
|
81
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_request_id, "f");
|
|
82
|
+
}
|
|
83
|
+
get workspace_id() {
|
|
84
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_workspace_id, "f");
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,
|
|
88
|
+
* returned vie the `request-id` header which is useful for debugging requests and resporting
|
|
89
|
+
* issues to Anthropic.
|
|
90
|
+
*
|
|
91
|
+
* This is the same as the `APIPromise.withResponse()` method.
|
|
92
|
+
*
|
|
93
|
+
* This method will raise an error if you created the stream using `MessageStream.fromReadableStream`
|
|
94
|
+
* as no `Response` is available.
|
|
95
|
+
*/
|
|
96
|
+
async withResponse() {
|
|
97
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
98
|
+
const response = await tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_connectedPromise, "f");
|
|
99
|
+
if (!response) {
|
|
100
|
+
throw new Error('Could not resolve a `Response` object');
|
|
50
101
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
102
|
+
return {
|
|
103
|
+
data: this,
|
|
104
|
+
response,
|
|
105
|
+
request_id: response.headers.get('request-id'),
|
|
106
|
+
workspace_id: response.headers.get('anthropic-workspace-id'),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Intended for use on the frontend, consuming a stream produced with
|
|
111
|
+
* `.toReadableStream()` on the backend.
|
|
112
|
+
*
|
|
113
|
+
* Note that messages sent to the model do not appear in `.on('message')`
|
|
114
|
+
* in this context.
|
|
115
|
+
*/
|
|
116
|
+
static fromReadableStream(stream) {
|
|
117
|
+
const runner = new BetaMessageStream(null);
|
|
118
|
+
runner._run(() => runner._fromReadableStream(stream));
|
|
119
|
+
return runner;
|
|
120
|
+
}
|
|
121
|
+
static createMessage(messages, params, options, { logger } = {}) {
|
|
122
|
+
const runner = new BetaMessageStream(params, { logger });
|
|
123
|
+
for (const message of params.messages) {
|
|
124
|
+
runner._addMessageParam(message);
|
|
56
125
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_resolveConnectedPromise, resolve, "f");
|
|
61
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_rejectConnectedPromise, reject, "f");
|
|
62
|
-
}), "f");
|
|
63
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_endPromise, new Promise((resolve, reject) => {
|
|
64
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_resolveEndPromise, resolve, "f");
|
|
65
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_rejectEndPromise, reject, "f");
|
|
66
|
-
}), "f");
|
|
67
|
-
// Don't let these promises cause unhandled rejection errors.
|
|
68
|
-
// we will manually cause an unhandled rejection error later
|
|
69
|
-
// if the user hasn't registered any error listener or called
|
|
70
|
-
// any promise-returning method.
|
|
71
|
-
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_connectedPromise, "f").catch(() => { });
|
|
72
|
-
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_endPromise, "f").catch(() => { });
|
|
73
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_params, params, "f");
|
|
74
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_logger, opts?.logger ?? console, "f");
|
|
75
|
-
}
|
|
76
|
-
get response() {
|
|
77
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_response, "f");
|
|
78
|
-
}
|
|
79
|
-
get request_id() {
|
|
80
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_request_id, "f");
|
|
81
|
-
}
|
|
82
|
-
get workspace_id() {
|
|
83
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_workspace_id, "f");
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,
|
|
87
|
-
* returned vie the `request-id` header which is useful for debugging requests and resporting
|
|
88
|
-
* issues to Anthropic.
|
|
89
|
-
*
|
|
90
|
-
* This is the same as the `APIPromise.withResponse()` method.
|
|
91
|
-
*
|
|
92
|
-
* This method will raise an error if you created the stream using `MessageStream.fromReadableStream`
|
|
93
|
-
* as no `Response` is available.
|
|
94
|
-
*/
|
|
95
|
-
async withResponse() {
|
|
96
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
97
|
-
const response = await tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_connectedPromise, "f");
|
|
98
|
-
if (!response) {
|
|
99
|
-
throw new Error('Could not resolve a `Response` object');
|
|
126
|
+
tslib_1.__classPrivateFieldSet(runner, _BetaMessageStream_params, { ...params, stream: true }, "f");
|
|
127
|
+
runner._run(() => runner._createMessage(messages, { ...params, stream: true }, { ...options, headers: { ...options?.headers, [stainless_helper_header_1.STAINLESS_HELPER_METHOD_HEADER]: 'stream' } }));
|
|
128
|
+
return runner;
|
|
100
129
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Intended for use on the frontend, consuming a stream produced with
|
|
110
|
-
* `.toReadableStream()` on the backend.
|
|
111
|
-
*
|
|
112
|
-
* Note that messages sent to the model do not appear in `.on('message')`
|
|
113
|
-
* in this context.
|
|
114
|
-
*/
|
|
115
|
-
static fromReadableStream(stream) {
|
|
116
|
-
const runner = new BetaMessageStream(null);
|
|
117
|
-
runner._run(() => runner._fromReadableStream(stream));
|
|
118
|
-
return runner;
|
|
119
|
-
}
|
|
120
|
-
static createMessage(messages, params, options, { logger } = {}) {
|
|
121
|
-
const runner = new BetaMessageStream(params, { logger });
|
|
122
|
-
for (const message of params.messages) {
|
|
123
|
-
runner._addMessageParam(message);
|
|
130
|
+
_run(executor) {
|
|
131
|
+
executor().then(() => {
|
|
132
|
+
this._emitFinal();
|
|
133
|
+
this._emit('end');
|
|
134
|
+
}, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_handleError, "f"));
|
|
124
135
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return runner;
|
|
128
|
-
}
|
|
129
|
-
_run(executor) {
|
|
130
|
-
executor().then(() => {
|
|
131
|
-
this._emitFinal();
|
|
132
|
-
this._emit('end');
|
|
133
|
-
}, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_handleError, "f"));
|
|
134
|
-
}
|
|
135
|
-
_addMessageParam(message) {
|
|
136
|
-
this.messages.push(message);
|
|
137
|
-
}
|
|
138
|
-
_addMessage(message, emit = true) {
|
|
139
|
-
this.receivedMessages.push(message);
|
|
140
|
-
if (emit) {
|
|
141
|
-
this._emit('message', message);
|
|
136
|
+
_addMessageParam(message) {
|
|
137
|
+
this.messages.push(message);
|
|
142
138
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (signal.aborted)
|
|
149
|
-
this.controller.abort();
|
|
150
|
-
abortHandler = this.controller.abort.bind(this.controller);
|
|
151
|
-
signal.addEventListener('abort', abortHandler);
|
|
139
|
+
_addMessage(message, emit = true) {
|
|
140
|
+
this.receivedMessages.push(message);
|
|
141
|
+
if (emit) {
|
|
142
|
+
this._emit('message', message);
|
|
143
|
+
}
|
|
152
144
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
145
|
+
async _createMessage(messages, params, options) {
|
|
146
|
+
const signal = options?.signal;
|
|
147
|
+
let abortHandler;
|
|
148
|
+
if (signal) {
|
|
149
|
+
if (signal.aborted)
|
|
150
|
+
this.controller.abort();
|
|
151
|
+
abortHandler = this.controller.abort.bind(this.controller);
|
|
152
|
+
signal.addEventListener('abort', abortHandler);
|
|
161
153
|
}
|
|
162
|
-
|
|
163
|
-
|
|
154
|
+
try {
|
|
155
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_beginRequest).call(this);
|
|
156
|
+
const { response, data: stream } = await messages
|
|
157
|
+
.create({ ...params, stream: true }, { ...options, signal: this.controller.signal })
|
|
158
|
+
.withResponse();
|
|
159
|
+
this._connected(response);
|
|
160
|
+
for await (const event of stream) {
|
|
161
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_addStreamEvent).call(this, event);
|
|
162
|
+
}
|
|
163
|
+
if (stream.controller.signal?.aborted) {
|
|
164
|
+
throw new error_1.APIUserAbortError();
|
|
165
|
+
}
|
|
166
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_endRequest).call(this);
|
|
164
167
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
signal.removeEventListener('abort', abortHandler);
|
|
168
|
+
finally {
|
|
169
|
+
if (signal && abortHandler) {
|
|
170
|
+
signal.removeEventListener('abort', abortHandler);
|
|
171
|
+
}
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
listeners.push({ listener });
|
|
204
|
-
return this;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Removes the specified listener from the listener array for the event.
|
|
208
|
-
* off() will remove, at most, one instance of a listener from the listener array. If any single
|
|
209
|
-
* listener has been added multiple times to the listener array for the specified event, then
|
|
210
|
-
* off() must be called multiple times to remove each instance.
|
|
211
|
-
* @returns this MessageStream, so that calls can be chained
|
|
212
|
-
*/
|
|
213
|
-
off(event, listener) {
|
|
214
|
-
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event];
|
|
215
|
-
if (!listeners)
|
|
174
|
+
_connected(response) {
|
|
175
|
+
if (this.ended)
|
|
176
|
+
return;
|
|
177
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_response, response, "f");
|
|
178
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_request_id, response?.headers.get('request-id'), "f");
|
|
179
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_workspace_id, response?.headers.get('anthropic-workspace-id'), "f");
|
|
180
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_resolveConnectedPromise, "f").call(this, response);
|
|
181
|
+
this._emit('connect');
|
|
182
|
+
}
|
|
183
|
+
get ended() {
|
|
184
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_ended, "f");
|
|
185
|
+
}
|
|
186
|
+
get errored() {
|
|
187
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_errored, "f");
|
|
188
|
+
}
|
|
189
|
+
get aborted() {
|
|
190
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_aborted, "f");
|
|
191
|
+
}
|
|
192
|
+
abort() {
|
|
193
|
+
this.controller.abort();
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Adds the listener function to the end of the listeners array for the event.
|
|
197
|
+
* No checks are made to see if the listener has already been added. Multiple calls passing
|
|
198
|
+
* the same combination of event and listener will result in the listener being added, and
|
|
199
|
+
* called, multiple times.
|
|
200
|
+
* @returns this MessageStream, so that calls can be chained
|
|
201
|
+
*/
|
|
202
|
+
on(event, listener) {
|
|
203
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] || (tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] = []);
|
|
204
|
+
listeners.push({ listener });
|
|
216
205
|
return this;
|
|
217
|
-
const index = listeners.findIndex((l) => l.listener === listener);
|
|
218
|
-
if (index >= 0)
|
|
219
|
-
listeners.splice(index, 1);
|
|
220
|
-
return this;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Adds a one-time listener function for the event. The next time the event is triggered,
|
|
224
|
-
* this listener is removed and then invoked.
|
|
225
|
-
* @returns this MessageStream, so that calls can be chained
|
|
226
|
-
*/
|
|
227
|
-
once(event, listener) {
|
|
228
|
-
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] || (tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] = []);
|
|
229
|
-
listeners.push({ listener, once: true });
|
|
230
|
-
return this;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* This is similar to `.once()`, but returns a Promise that resolves the next time
|
|
234
|
-
* the event is triggered, instead of calling a listener callback.
|
|
235
|
-
* @returns a Promise that resolves the next time given event is triggered,
|
|
236
|
-
* or rejects if an error is emitted. (If you request the 'error' event,
|
|
237
|
-
* returns a promise that resolves with the error).
|
|
238
|
-
*
|
|
239
|
-
* Example:
|
|
240
|
-
*
|
|
241
|
-
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
242
|
-
*/
|
|
243
|
-
emitted(event) {
|
|
244
|
-
return new Promise((resolve, reject) => {
|
|
245
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
246
|
-
if (event !== 'error')
|
|
247
|
-
this.once('error', reject);
|
|
248
|
-
this.once(event, resolve);
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
async done() {
|
|
252
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
253
|
-
await tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_endPromise, "f");
|
|
254
|
-
}
|
|
255
|
-
get currentMessage() {
|
|
256
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* @returns a promise that resolves with the the final assistant Message response,
|
|
260
|
-
* or rejects if an error occurred or the stream ended prematurely without producing a Message.
|
|
261
|
-
* If structured outputs were used, this will be a ParsedMessage with a `parsed` field.
|
|
262
|
-
*/
|
|
263
|
-
async finalMessage() {
|
|
264
|
-
await this.done();
|
|
265
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalMessage).call(this);
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* @returns a promise that resolves with the the final assistant Message's text response, concatenated
|
|
269
|
-
* together if there are more than one text blocks.
|
|
270
|
-
* Rejects if an error occurred or the stream ended prematurely without producing a Message.
|
|
271
|
-
*/
|
|
272
|
-
async finalText() {
|
|
273
|
-
await this.done();
|
|
274
|
-
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalText).call(this);
|
|
275
|
-
}
|
|
276
|
-
_emit(event, ...args) {
|
|
277
|
-
// make sure we don't emit any MessageStreamEvents after end
|
|
278
|
-
if (tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_ended, "f"))
|
|
279
|
-
return;
|
|
280
|
-
if (event === 'end') {
|
|
281
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_ended, true, "f");
|
|
282
|
-
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_resolveEndPromise, "f").call(this);
|
|
283
206
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Removes the specified listener from the listener array for the event.
|
|
209
|
+
* off() will remove, at most, one instance of a listener from the listener array. If any single
|
|
210
|
+
* listener has been added multiple times to the listener array for the specified event, then
|
|
211
|
+
* off() must be called multiple times to remove each instance.
|
|
212
|
+
* @returns this MessageStream, so that calls can be chained
|
|
213
|
+
*/
|
|
214
|
+
off(event, listener) {
|
|
215
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event];
|
|
216
|
+
if (!listeners)
|
|
217
|
+
return this;
|
|
218
|
+
const index = listeners.findIndex((l) => l.listener === listener);
|
|
219
|
+
if (index >= 0)
|
|
220
|
+
listeners.splice(index, 1);
|
|
221
|
+
return this;
|
|
288
222
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
tslib_1.__classPrivateFieldGet(this,
|
|
296
|
-
|
|
297
|
-
return;
|
|
223
|
+
/**
|
|
224
|
+
* Adds a one-time listener function for the event. The next time the event is triggered,
|
|
225
|
+
* this listener is removed and then invoked.
|
|
226
|
+
* @returns this MessageStream, so that calls can be chained
|
|
227
|
+
*/
|
|
228
|
+
once(event, listener) {
|
|
229
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] || (tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] = []);
|
|
230
|
+
listeners.push({ listener, once: true });
|
|
231
|
+
return this;
|
|
298
232
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
233
|
+
/**
|
|
234
|
+
* This is similar to `.once()`, but returns a Promise that resolves the next time
|
|
235
|
+
* the event is triggered, instead of calling a listener callback.
|
|
236
|
+
* @returns a Promise that resolves the next time given event is triggered,
|
|
237
|
+
* or rejects if an error is emitted. (If you request the 'error' event,
|
|
238
|
+
* returns a promise that resolves with the error).
|
|
239
|
+
*
|
|
240
|
+
* Example:
|
|
241
|
+
*
|
|
242
|
+
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
243
|
+
*/
|
|
244
|
+
emitted(event) {
|
|
245
|
+
return new Promise((resolve, reject) => {
|
|
246
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
247
|
+
if (event !== 'error')
|
|
248
|
+
this.once('error', reject);
|
|
249
|
+
this.once(event, resolve);
|
|
250
|
+
});
|
|
314
251
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (finalMessage) {
|
|
319
|
-
this._emit('finalMessage', tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalMessage).call(this));
|
|
252
|
+
async done() {
|
|
253
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
254
|
+
await tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_endPromise, "f");
|
|
320
255
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
256
|
+
get currentMessage() {
|
|
257
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* @returns a promise that resolves with the the final assistant Message response,
|
|
261
|
+
* or rejects if an error occurred or the stream ended prematurely without producing a Message.
|
|
262
|
+
* If structured outputs were used, this will be a ParsedMessage with a `parsed` field.
|
|
263
|
+
*/
|
|
264
|
+
async finalMessage() {
|
|
265
|
+
await this.done();
|
|
266
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalMessage).call(this);
|
|
330
267
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
268
|
+
/**
|
|
269
|
+
* @returns a promise that resolves with the the final assistant Message's text response, concatenated
|
|
270
|
+
* together if there are more than one text blocks.
|
|
271
|
+
* Rejects if an error occurred or the stream ended prematurely without producing a Message.
|
|
272
|
+
*/
|
|
273
|
+
async finalText() {
|
|
274
|
+
await this.done();
|
|
275
|
+
return tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalText).call(this);
|
|
276
|
+
}
|
|
277
|
+
_emit(event, ...args) {
|
|
278
|
+
// make sure we don't emit any MessageStreamEvents after end
|
|
279
|
+
if (tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_ended, "f"))
|
|
280
|
+
return;
|
|
281
|
+
if (event === 'end') {
|
|
282
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_ended, true, "f");
|
|
283
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_resolveEndPromise, "f").call(this);
|
|
337
284
|
}
|
|
338
|
-
|
|
339
|
-
|
|
285
|
+
const listeners = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event];
|
|
286
|
+
if (listeners) {
|
|
287
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f")[event] = listeners.filter((l) => !l.once);
|
|
288
|
+
listeners.forEach(({ listener }) => listener(...args));
|
|
340
289
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
290
|
+
if (event === 'abort') {
|
|
291
|
+
const error = args[0];
|
|
292
|
+
if (!tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_catchingPromiseCreated, "f") && !listeners?.length) {
|
|
293
|
+
Promise.reject(error);
|
|
294
|
+
}
|
|
295
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_rejectConnectedPromise, "f").call(this, error);
|
|
296
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_rejectEndPromise, "f").call(this, error);
|
|
297
|
+
this._emit('end');
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
if (event === 'error') {
|
|
301
|
+
// NOTE: _emit('error', error) should only be called from #handleError().
|
|
302
|
+
const error = args[0];
|
|
303
|
+
if (!tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_catchingPromiseCreated, "f") && !listeners?.length) {
|
|
304
|
+
// Trigger an unhandled rejection if the user hasn't registered any error handlers.
|
|
305
|
+
// If you are seeing stack traces here, make sure to handle errors via either:
|
|
306
|
+
// - runner.on('error', () => ...)
|
|
307
|
+
// - await runner.done()
|
|
308
|
+
// - await runner.final...()
|
|
309
|
+
// - etc.
|
|
310
|
+
Promise.reject(error);
|
|
311
|
+
}
|
|
312
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_rejectConnectedPromise, "f").call(this, error);
|
|
313
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_rejectEndPromise, "f").call(this, error);
|
|
314
|
+
this._emit('end');
|
|
346
315
|
}
|
|
347
316
|
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
return this.receivedMessages.at(-1);
|
|
354
|
-
}, _BetaMessageStream_getFinalText = function _BetaMessageStream_getFinalText() {
|
|
355
|
-
if (this.receivedMessages.length === 0) {
|
|
356
|
-
throw new error_1.AnthropicError('stream ended without producing a Message with role=assistant');
|
|
317
|
+
_emitFinal() {
|
|
318
|
+
const finalMessage = this.receivedMessages.at(-1);
|
|
319
|
+
if (finalMessage) {
|
|
320
|
+
this._emit('finalMessage', tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_getFinalMessage).call(this));
|
|
321
|
+
}
|
|
357
322
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
323
|
+
async _fromReadableStream(readableStream, options) {
|
|
324
|
+
const signal = options?.signal;
|
|
325
|
+
let abortHandler;
|
|
326
|
+
if (signal) {
|
|
327
|
+
if (signal.aborted)
|
|
328
|
+
this.controller.abort();
|
|
329
|
+
abortHandler = this.controller.abort.bind(this.controller);
|
|
330
|
+
signal.addEventListener('abort', abortHandler);
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_beginRequest).call(this);
|
|
334
|
+
this._connected(null);
|
|
335
|
+
const stream = streaming_1.Stream.fromReadableStream(readableStream, this.controller);
|
|
336
|
+
for await (const event of stream) {
|
|
337
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_addStreamEvent).call(this, event);
|
|
338
|
+
}
|
|
339
|
+
if (stream.controller.signal?.aborted) {
|
|
340
|
+
throw new error_1.APIUserAbortError();
|
|
341
|
+
}
|
|
342
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_endRequest).call(this);
|
|
343
|
+
}
|
|
344
|
+
finally {
|
|
345
|
+
if (signal && abortHandler) {
|
|
346
|
+
signal.removeEventListener('abort', abortHandler);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
364
349
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
350
|
+
[(_BetaMessageStream_currentMessageSnapshot = new WeakMap(), _BetaMessageStream_params = new WeakMap(), _BetaMessageStream_connectedPromise = new WeakMap(), _BetaMessageStream_resolveConnectedPromise = new WeakMap(), _BetaMessageStream_rejectConnectedPromise = new WeakMap(), _BetaMessageStream_endPromise = new WeakMap(), _BetaMessageStream_resolveEndPromise = new WeakMap(), _BetaMessageStream_rejectEndPromise = new WeakMap(), _BetaMessageStream_listeners = new WeakMap(), _BetaMessageStream_ended = new WeakMap(), _BetaMessageStream_errored = new WeakMap(), _BetaMessageStream_aborted = new WeakMap(), _BetaMessageStream_catchingPromiseCreated = new WeakMap(), _BetaMessageStream_response = new WeakMap(), _BetaMessageStream_request_id = new WeakMap(), _BetaMessageStream_workspace_id = new WeakMap(), _BetaMessageStream_logger = new WeakMap(), _BetaMessageStream_handleError = new WeakMap(), _BetaMessageStream_instances = new WeakSet(), _BetaMessageStream_getFinalMessage = function _BetaMessageStream_getFinalMessage() {
|
|
351
|
+
if (this.receivedMessages.length === 0) {
|
|
352
|
+
throw new error_1.AnthropicError('stream ended without producing a Message with role=assistant');
|
|
353
|
+
}
|
|
354
|
+
return this.receivedMessages.at(-1);
|
|
355
|
+
}, _BetaMessageStream_getFinalText = function _BetaMessageStream_getFinalText() {
|
|
356
|
+
if (this.receivedMessages.length === 0) {
|
|
357
|
+
throw new error_1.AnthropicError('stream ended without producing a Message with role=assistant');
|
|
358
|
+
}
|
|
359
|
+
const textBlocks = this.receivedMessages
|
|
360
|
+
.at(-1)
|
|
361
|
+
.content.filter((block) => block.type === 'text')
|
|
362
|
+
.map((block) => block.text);
|
|
363
|
+
if (textBlocks.length === 0) {
|
|
364
|
+
throw new error_1.AnthropicError('stream ended without producing a content block with type=text');
|
|
365
|
+
}
|
|
366
|
+
return textBlocks.join(' ');
|
|
367
|
+
}, _BetaMessageStream_beginRequest = function _BetaMessageStream_beginRequest() {
|
|
368
|
+
if (this.ended)
|
|
369
|
+
return;
|
|
370
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, undefined, "f");
|
|
371
|
+
}, _BetaMessageStream_addStreamEvent = function _BetaMessageStream_addStreamEvent(event) {
|
|
372
|
+
if (this.ended)
|
|
373
|
+
return;
|
|
374
|
+
const messageSnapshot = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_accumulateMessage).call(this, event);
|
|
375
|
+
this._emit('streamEvent', event, messageSnapshot);
|
|
376
|
+
switch (event.type) {
|
|
377
|
+
case 'content_block_delta': {
|
|
378
|
+
const content = messageSnapshot.content.at(-1);
|
|
379
|
+
switch (event.delta.type) {
|
|
380
|
+
case 'text_delta': {
|
|
381
|
+
if (content.type === 'text') {
|
|
382
|
+
this._emit('text', event.delta.text, content.text || '');
|
|
383
|
+
}
|
|
384
|
+
break;
|
|
388
385
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
if (tracksToolInput(content) && tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f").inputJson?.length) {
|
|
393
|
-
let jsonSnapshot;
|
|
394
|
-
try {
|
|
395
|
-
jsonSnapshot = content.input;
|
|
386
|
+
case 'citations_delta': {
|
|
387
|
+
if (content.type === 'text') {
|
|
388
|
+
this._emit('citation', event.delta.citation, content.citations ?? []);
|
|
396
389
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
case 'input_json_delta': {
|
|
393
|
+
if (tracksToolInput(content) && tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_listeners, "f").inputJson?.length) {
|
|
394
|
+
let jsonSnapshot;
|
|
395
|
+
try {
|
|
396
|
+
jsonSnapshot = content.input;
|
|
397
|
+
}
|
|
398
|
+
catch (err) {
|
|
399
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_handleError, "f").call(this, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_toolInputParseError).call(this, content, err));
|
|
400
|
+
break;
|
|
401
|
+
}
|
|
402
|
+
this._emit('inputJson', event.delta.partial_json, jsonSnapshot);
|
|
400
403
|
}
|
|
401
|
-
|
|
404
|
+
break;
|
|
402
405
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
406
|
+
case 'thinking_delta': {
|
|
407
|
+
if (content.type === 'thinking') {
|
|
408
|
+
this._emit('thinking', event.delta.thinking, content.thinking);
|
|
409
|
+
}
|
|
410
|
+
break;
|
|
408
411
|
}
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
412
|
+
case 'signature_delta': {
|
|
413
|
+
if (content.type === 'thinking') {
|
|
414
|
+
this._emit('signature', content.signature);
|
|
415
|
+
}
|
|
416
|
+
break;
|
|
414
417
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
case 'compaction_delta': {
|
|
419
|
+
if (content.type === 'compaction' && content.content) {
|
|
420
|
+
this._emit('compaction', content.content);
|
|
421
|
+
}
|
|
422
|
+
break;
|
|
420
423
|
}
|
|
421
|
-
|
|
424
|
+
default:
|
|
425
|
+
(0, values_1.checkNever)(event.delta);
|
|
422
426
|
}
|
|
423
|
-
|
|
424
|
-
(0, values_1.checkNever)(event.delta);
|
|
427
|
+
break;
|
|
425
428
|
}
|
|
426
|
-
|
|
429
|
+
case 'message_stop': {
|
|
430
|
+
this._addMessageParam(messageSnapshot);
|
|
431
|
+
this._addMessage((0, beta_parser_1.maybeParseBetaMessage)(messageSnapshot, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_params, "f"), { logger: tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_logger, "f") }), true);
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
case 'content_block_stop': {
|
|
435
|
+
this._emit('contentBlock', messageSnapshot.content.at(-1));
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
case 'message_start': {
|
|
439
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, messageSnapshot, "f");
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
case 'content_block_start':
|
|
443
|
+
case 'message_delta':
|
|
444
|
+
break;
|
|
427
445
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
break;
|
|
446
|
+
}, _BetaMessageStream_endRequest = function _BetaMessageStream_endRequest() {
|
|
447
|
+
if (this.ended) {
|
|
448
|
+
throw new error_1.AnthropicError(`stream has ended, this shouldn't happen`);
|
|
432
449
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
450
|
+
const snapshot = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
451
|
+
if (!snapshot) {
|
|
452
|
+
throw new error_1.AnthropicError(`request ended without sending any chunks`);
|
|
436
453
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
454
|
+
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, undefined, "f");
|
|
455
|
+
return (0, beta_parser_1.maybeParseBetaMessage)(snapshot, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_params, "f"), { logger: tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_logger, "f") });
|
|
456
|
+
}, _BetaMessageStream_accumulateMessage = function _BetaMessageStream_accumulateMessage(event) {
|
|
457
|
+
let snapshot = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
458
|
+
if (event.type === 'message_start') {
|
|
459
|
+
if (snapshot) {
|
|
460
|
+
throw new error_1.AnthropicError(`Unexpected event order, got ${event.type} before receiving "message_stop"`);
|
|
461
|
+
}
|
|
462
|
+
return event.message;
|
|
440
463
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
break;
|
|
444
|
-
}
|
|
445
|
-
}, _BetaMessageStream_endRequest = function _BetaMessageStream_endRequest() {
|
|
446
|
-
if (this.ended) {
|
|
447
|
-
throw new error_1.AnthropicError(`stream has ended, this shouldn't happen`);
|
|
448
|
-
}
|
|
449
|
-
const snapshot = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
450
|
-
if (!snapshot) {
|
|
451
|
-
throw new error_1.AnthropicError(`request ended without sending any chunks`);
|
|
452
|
-
}
|
|
453
|
-
tslib_1.__classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, undefined, "f");
|
|
454
|
-
return (0, beta_parser_1.maybeParseBetaMessage)(snapshot, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_params, "f"), { logger: tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_logger, "f") });
|
|
455
|
-
}, _BetaMessageStream_accumulateMessage = function _BetaMessageStream_accumulateMessage(event) {
|
|
456
|
-
let snapshot = tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, "f");
|
|
457
|
-
if (event.type === 'message_start') {
|
|
458
|
-
if (snapshot) {
|
|
459
|
-
throw new error_1.AnthropicError(`Unexpected event order, got ${event.type} before receiving "message_stop"`);
|
|
464
|
+
if (!snapshot) {
|
|
465
|
+
throw new error_1.AnthropicError(`Unexpected event order, got ${event.type} before "message_start"`);
|
|
460
466
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
snapshot.stop_sequence = event.delta.stop_sequence;
|
|
472
|
-
snapshot.stop_details = event.delta.stop_details;
|
|
473
|
-
snapshot.usage.output_tokens = event.usage.output_tokens;
|
|
474
|
-
if (event.delta.container != null) {
|
|
475
|
-
snapshot.container = event.delta.container;
|
|
476
|
-
}
|
|
477
|
-
if (event.context_management != null) {
|
|
478
|
-
snapshot.context_management = event.context_management;
|
|
479
|
-
}
|
|
480
|
-
if (event.input_transformations != null) {
|
|
481
|
-
snapshot.input_transformations = event.input_transformations;
|
|
482
|
-
}
|
|
483
|
-
// The remaining usage counters are cumulative whole-message totals that are
|
|
484
|
-
// omitted when they don't apply, so overwrite when present and never add.
|
|
485
|
-
if (event.usage.input_tokens != null) {
|
|
486
|
-
snapshot.usage.input_tokens = event.usage.input_tokens;
|
|
487
|
-
}
|
|
488
|
-
if (event.usage.cache_creation_input_tokens != null) {
|
|
489
|
-
snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;
|
|
490
|
-
}
|
|
491
|
-
if (event.usage.cache_read_input_tokens != null) {
|
|
492
|
-
snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;
|
|
493
|
-
}
|
|
494
|
-
if (event.usage.server_tool_use != null) {
|
|
495
|
-
snapshot.usage.server_tool_use = event.usage.server_tool_use;
|
|
496
|
-
}
|
|
497
|
-
if (event.usage.iterations != null) {
|
|
498
|
-
snapshot.usage.iterations = event.usage.iterations;
|
|
499
|
-
}
|
|
500
|
-
if (event.usage.fallback_credit != null) {
|
|
501
|
-
snapshot.usage.fallback_credit = event.usage.fallback_credit;
|
|
502
|
-
}
|
|
503
|
-
if (event.usage.output_tokens_details != null) {
|
|
504
|
-
snapshot.usage.output_tokens_details = event.usage.output_tokens_details;
|
|
505
|
-
}
|
|
506
|
-
return snapshot;
|
|
507
|
-
case 'content_block_start':
|
|
508
|
-
snapshot.content.push(event.content_block);
|
|
509
|
-
if (event.content_block.type === 'fallback') {
|
|
510
|
-
// the final hop's fallback block names the model that served the response —
|
|
511
|
-
// keeps the snapshot consistent with the relabeled non-streaming message
|
|
512
|
-
snapshot.model = event.content_block.to.model;
|
|
513
|
-
}
|
|
514
|
-
return snapshot;
|
|
515
|
-
case 'content_block_delta': {
|
|
516
|
-
const snapshotContent = snapshot.content.at(event.index);
|
|
517
|
-
switch (event.delta.type) {
|
|
518
|
-
case 'text_delta': {
|
|
519
|
-
if (snapshotContent?.type === 'text') {
|
|
520
|
-
snapshot.content[event.index] = {
|
|
521
|
-
...snapshotContent,
|
|
522
|
-
text: (snapshotContent.text || '') + event.delta.text,
|
|
523
|
-
};
|
|
524
|
-
}
|
|
525
|
-
break;
|
|
467
|
+
switch (event.type) {
|
|
468
|
+
case 'message_stop':
|
|
469
|
+
return snapshot;
|
|
470
|
+
case 'message_delta':
|
|
471
|
+
snapshot.stop_reason = event.delta.stop_reason;
|
|
472
|
+
snapshot.stop_sequence = event.delta.stop_sequence;
|
|
473
|
+
snapshot.stop_details = event.delta.stop_details;
|
|
474
|
+
snapshot.usage.output_tokens = event.usage.output_tokens;
|
|
475
|
+
if (event.delta.container != null) {
|
|
476
|
+
snapshot.container = event.delta.container;
|
|
526
477
|
}
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
snapshot.content[event.index] = {
|
|
530
|
-
...snapshotContent,
|
|
531
|
-
citations: [...(snapshotContent.citations ?? []), event.delta.citation],
|
|
532
|
-
};
|
|
533
|
-
}
|
|
534
|
-
break;
|
|
478
|
+
if (event.context_management != null) {
|
|
479
|
+
snapshot.context_management = event.context_management;
|
|
535
480
|
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
const jsonBuf = (snapshotContent[message_stream_utils_1.JSON_BUF_PROPERTY] || '') + event.delta.partial_json;
|
|
539
|
-
snapshot.content[event.index] = (0, message_stream_utils_1.withLazyInput)(snapshotContent, jsonBuf);
|
|
540
|
-
}
|
|
541
|
-
break;
|
|
481
|
+
if (event.input_transformations != null) {
|
|
482
|
+
snapshot.input_transformations = event.input_transformations;
|
|
542
483
|
}
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
thinking: snapshotContent.thinking + event.delta.thinking,
|
|
548
|
-
};
|
|
549
|
-
}
|
|
550
|
-
break;
|
|
484
|
+
// The remaining usage counters are cumulative whole-message totals that are
|
|
485
|
+
// omitted when they don't apply, so overwrite when present and never add.
|
|
486
|
+
if (event.usage.input_tokens != null) {
|
|
487
|
+
snapshot.usage.input_tokens = event.usage.input_tokens;
|
|
551
488
|
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
489
|
+
if (event.usage.cache_creation_input_tokens != null) {
|
|
490
|
+
snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;
|
|
491
|
+
}
|
|
492
|
+
if (event.usage.cache_read_input_tokens != null) {
|
|
493
|
+
snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;
|
|
494
|
+
}
|
|
495
|
+
if (event.usage.server_tool_use != null) {
|
|
496
|
+
snapshot.usage.server_tool_use = event.usage.server_tool_use;
|
|
560
497
|
}
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
498
|
+
if (event.usage.iterations != null) {
|
|
499
|
+
snapshot.usage.iterations = event.usage.iterations;
|
|
500
|
+
}
|
|
501
|
+
if (event.usage.fallback_credit != null) {
|
|
502
|
+
snapshot.usage.fallback_credit = event.usage.fallback_credit;
|
|
503
|
+
}
|
|
504
|
+
if (event.usage.output_tokens_details != null) {
|
|
505
|
+
snapshot.usage.output_tokens_details = event.usage.output_tokens_details;
|
|
506
|
+
}
|
|
507
|
+
return snapshot;
|
|
508
|
+
case 'content_block_start':
|
|
509
|
+
snapshot.content.push(event.content_block);
|
|
510
|
+
if (event.content_block.type === 'fallback') {
|
|
511
|
+
// the final hop's fallback block names the model that served the response —
|
|
512
|
+
// keeps the snapshot consistent with the relabeled non-streaming message
|
|
513
|
+
snapshot.model = event.content_block.to.model;
|
|
514
|
+
}
|
|
515
|
+
return snapshot;
|
|
516
|
+
case 'content_block_delta': {
|
|
517
|
+
const snapshotContent = snapshot.content.at(event.index);
|
|
518
|
+
switch (event.delta.type) {
|
|
519
|
+
case 'text_delta': {
|
|
520
|
+
if (snapshotContent?.type === 'text') {
|
|
521
|
+
snapshot.content[event.index] = {
|
|
522
|
+
...snapshotContent,
|
|
523
|
+
text: (snapshotContent.text || '') + event.delta.text,
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
case 'citations_delta': {
|
|
529
|
+
if (snapshotContent?.type === 'text') {
|
|
530
|
+
snapshot.content[event.index] = {
|
|
531
|
+
...snapshotContent,
|
|
532
|
+
citations: [...(snapshotContent.citations ?? []), event.delta.citation],
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
case 'input_json_delta': {
|
|
538
|
+
if (snapshotContent && tracksToolInput(snapshotContent)) {
|
|
539
|
+
const jsonBuf = (snapshotContent[message_stream_utils_1.JSON_BUF_PROPERTY] || '') + event.delta.partial_json;
|
|
540
|
+
snapshot.content[event.index] = (0, message_stream_utils_1.withLazyInput)(snapshotContent, jsonBuf);
|
|
541
|
+
}
|
|
542
|
+
break;
|
|
568
543
|
}
|
|
569
|
-
|
|
544
|
+
case 'thinking_delta': {
|
|
545
|
+
if (snapshotContent?.type === 'thinking') {
|
|
546
|
+
snapshot.content[event.index] = {
|
|
547
|
+
...snapshotContent,
|
|
548
|
+
thinking: snapshotContent.thinking + event.delta.thinking,
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
case 'signature_delta': {
|
|
554
|
+
if (snapshotContent?.type === 'thinking') {
|
|
555
|
+
snapshot.content[event.index] = {
|
|
556
|
+
...snapshotContent,
|
|
557
|
+
signature: event.delta.signature,
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
break;
|
|
561
|
+
}
|
|
562
|
+
case 'compaction_delta': {
|
|
563
|
+
if (snapshotContent?.type === 'compaction') {
|
|
564
|
+
// The delta carries the block's final value (null content = failed compaction), so assign.
|
|
565
|
+
const block = { ...snapshotContent, content: event.delta.content };
|
|
566
|
+
// beta-gated key: only copy it when the server sent it
|
|
567
|
+
if ('encrypted_content' in event.delta) {
|
|
568
|
+
block.encrypted_content = event.delta.encrypted_content;
|
|
569
|
+
}
|
|
570
|
+
snapshot.content[event.index] = block;
|
|
571
|
+
}
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
default:
|
|
575
|
+
(0, values_1.checkNever)(event.delta);
|
|
570
576
|
}
|
|
571
|
-
|
|
572
|
-
(0, values_1.checkNever)(event.delta);
|
|
577
|
+
return snapshot;
|
|
573
578
|
}
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
579
|
+
case 'content_block_stop': {
|
|
580
|
+
const snapshotContent = snapshot.content.at(event.index);
|
|
581
|
+
if (snapshotContent && tracksToolInput(snapshotContent) && message_stream_utils_1.JSON_BUF_PROPERTY in snapshotContent) {
|
|
582
|
+
let input;
|
|
583
|
+
try {
|
|
584
|
+
input = snapshotContent.input;
|
|
585
|
+
}
|
|
586
|
+
catch (err) {
|
|
587
|
+
input = {};
|
|
588
|
+
tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_handleError, "f").call(this, tslib_1.__classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_toolInputParseError).call(this, snapshotContent, err));
|
|
589
|
+
}
|
|
590
|
+
Object.defineProperty(snapshotContent, 'input', {
|
|
591
|
+
value: input,
|
|
592
|
+
enumerable: true,
|
|
593
|
+
configurable: true,
|
|
594
|
+
writable: true,
|
|
595
|
+
});
|
|
586
596
|
}
|
|
587
|
-
|
|
588
|
-
value: input,
|
|
589
|
-
enumerable: true,
|
|
590
|
-
configurable: true,
|
|
591
|
-
writable: true,
|
|
592
|
-
});
|
|
597
|
+
return snapshot;
|
|
593
598
|
}
|
|
594
|
-
return snapshot;
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
}, _BetaMessageStream_toolInputParseError = function _BetaMessageStream_toolInputParseError(block, err) {
|
|
598
|
-
const jsonBuf = block[message_stream_utils_1.JSON_BUF_PROPERTY];
|
|
599
|
-
return new error_1.AnthropicError(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`);
|
|
600
|
-
}, Symbol.asyncIterator)]() {
|
|
601
|
-
const pushQueue = [];
|
|
602
|
-
const readQueue = [];
|
|
603
|
-
let done = false;
|
|
604
|
-
this.on('streamEvent', (event) => {
|
|
605
|
-
const reader = readQueue.shift();
|
|
606
|
-
if (reader) {
|
|
607
|
-
reader.resolve(event);
|
|
608
|
-
}
|
|
609
|
-
else {
|
|
610
|
-
pushQueue.push(event);
|
|
611
|
-
}
|
|
612
|
-
});
|
|
613
|
-
this.on('end', () => {
|
|
614
|
-
done = true;
|
|
615
|
-
for (const reader of readQueue) {
|
|
616
|
-
reader.resolve(undefined);
|
|
617
599
|
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
for (const reader of readQueue) {
|
|
630
|
-
reader.reject(err);
|
|
631
|
-
}
|
|
632
|
-
readQueue.length = 0;
|
|
633
|
-
});
|
|
634
|
-
return {
|
|
635
|
-
next: async () => {
|
|
636
|
-
if (!pushQueue.length) {
|
|
637
|
-
if (done) {
|
|
638
|
-
return { value: undefined, done: true };
|
|
639
|
-
}
|
|
640
|
-
return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));
|
|
600
|
+
}, _BetaMessageStream_toolInputParseError = function _BetaMessageStream_toolInputParseError(block, err) {
|
|
601
|
+
const jsonBuf = block[message_stream_utils_1.JSON_BUF_PROPERTY];
|
|
602
|
+
return new error_1.AnthropicError(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`);
|
|
603
|
+
}, Symbol.asyncIterator)]() {
|
|
604
|
+
const pushQueue = [];
|
|
605
|
+
const readQueue = [];
|
|
606
|
+
let done = false;
|
|
607
|
+
this.on('streamEvent', (event) => {
|
|
608
|
+
const reader = readQueue.shift();
|
|
609
|
+
if (reader) {
|
|
610
|
+
reader.resolve(event);
|
|
641
611
|
}
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
612
|
+
else {
|
|
613
|
+
pushQueue.push(event);
|
|
614
|
+
}
|
|
615
|
+
});
|
|
616
|
+
this.on('end', () => {
|
|
617
|
+
done = true;
|
|
618
|
+
for (const reader of readQueue) {
|
|
619
|
+
reader.resolve(undefined);
|
|
620
|
+
}
|
|
621
|
+
readQueue.length = 0;
|
|
622
|
+
});
|
|
623
|
+
this.on('abort', (err) => {
|
|
624
|
+
done = true;
|
|
625
|
+
for (const reader of readQueue) {
|
|
626
|
+
reader.reject(err);
|
|
627
|
+
}
|
|
628
|
+
readQueue.length = 0;
|
|
629
|
+
});
|
|
630
|
+
this.on('error', (err) => {
|
|
631
|
+
done = true;
|
|
632
|
+
for (const reader of readQueue) {
|
|
633
|
+
reader.reject(err);
|
|
634
|
+
}
|
|
635
|
+
readQueue.length = 0;
|
|
636
|
+
});
|
|
637
|
+
return {
|
|
638
|
+
next: async () => {
|
|
639
|
+
if (!pushQueue.length) {
|
|
640
|
+
if (done) {
|
|
641
|
+
return { value: undefined, done: true };
|
|
642
|
+
}
|
|
643
|
+
return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));
|
|
644
|
+
}
|
|
645
|
+
const chunk = pushQueue.shift();
|
|
646
|
+
return { value: chunk, done: false };
|
|
647
|
+
},
|
|
648
|
+
return: async () => {
|
|
649
|
+
this.abort();
|
|
650
|
+
return { value: undefined, done: true };
|
|
651
|
+
},
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
toReadableStream() {
|
|
655
|
+
const stream = new streaming_1.Stream(this[Symbol.asyncIterator].bind(this), this.controller);
|
|
656
|
+
return stream.toReadableStream();
|
|
657
|
+
}
|
|
654
658
|
}
|
|
655
|
-
|
|
659
|
+
return BetaMessageStream;
|
|
660
|
+
})();
|
|
656
661
|
exports.BetaMessageStream = BetaMessageStream;
|
|
657
662
|
//# sourceMappingURL=BetaMessageStream.js.map
|