@anthropic-ai/sdk 0.96.0 → 0.97.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 +18 -0
- package/api-promise.d.mts +1 -0
- package/api-promise.d.mts.map +1 -1
- package/api-promise.d.ts +1 -0
- package/api-promise.d.ts.map +1 -1
- package/api-promise.mjs +1 -0
- package/api-promise.mjs.map +1 -1
- package/bin/migration-config.json +222 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts.map +1 -1
- package/client.mjs.map +1 -1
- package/core/api-promise.d.mts.map +1 -1
- package/core/api-promise.d.ts.map +1 -1
- package/core/api-promise.mjs.map +1 -1
- package/core/credentials.mjs.map +1 -1
- package/core/error.d.mts.map +1 -1
- package/core/error.d.ts.map +1 -1
- package/core/error.mjs.map +1 -1
- package/core/pagination.d.mts.map +1 -1
- package/core/pagination.d.ts.map +1 -1
- package/core/pagination.mjs.map +1 -1
- package/core/resource.d.mts.map +1 -1
- package/core/resource.d.ts.map +1 -1
- package/core/streaming.d.mts.map +1 -1
- package/core/streaming.d.ts.map +1 -1
- package/core/streaming.js +2 -0
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +2 -0
- package/core/streaming.mjs.map +1 -1
- package/core/uploads.d.mts.map +1 -1
- package/core/uploads.d.ts.map +1 -1
- package/core/uploads.mjs.map +1 -1
- package/error.d.mts +1 -0
- package/error.d.mts.map +1 -1
- package/error.d.ts +1 -0
- package/error.d.ts.map +1 -1
- package/error.mjs +1 -0
- package/error.mjs.map +1 -1
- package/helpers/beta/environments.d.mts +22 -0
- package/helpers/beta/environments.d.mts.map +1 -0
- package/helpers/beta/environments.d.ts +22 -0
- package/helpers/beta/environments.d.ts.map +1 -0
- package/helpers/beta/environments.js +30 -0
- package/helpers/beta/environments.js.map +1 -0
- package/helpers/beta/environments.mjs +22 -0
- package/helpers/beta/environments.mjs.map +1 -0
- package/helpers/beta/json-schema.d.mts +6 -0
- package/helpers/beta/json-schema.d.mts.map +1 -1
- package/helpers/beta/json-schema.d.ts +6 -0
- package/helpers/beta/json-schema.d.ts.map +1 -1
- package/helpers/beta/json-schema.js +1 -0
- package/helpers/beta/json-schema.js.map +1 -1
- package/helpers/beta/json-schema.mjs +1 -0
- package/helpers/beta/json-schema.mjs.map +1 -1
- package/helpers/beta/mcp.d.mts.map +1 -1
- package/helpers/beta/mcp.d.ts.map +1 -1
- package/helpers/beta/mcp.mjs.map +1 -1
- package/helpers/beta/memory.d.mts.map +1 -1
- package/helpers/beta/memory.d.ts.map +1 -1
- package/helpers/beta/zod.d.mts +6 -0
- package/helpers/beta/zod.d.mts.map +1 -1
- package/helpers/beta/zod.d.ts +6 -0
- package/helpers/beta/zod.d.ts.map +1 -1
- package/helpers/beta/zod.js +1 -0
- package/helpers/beta/zod.js.map +1 -1
- package/helpers/beta/zod.mjs +1 -0
- package/helpers/beta/zod.mjs.map +1 -1
- package/helpers/index.d.mts.map +1 -1
- package/helpers/index.d.ts.map +1 -1
- package/helpers/index.mjs.map +1 -1
- package/helpers/json-schema.d.mts.map +1 -1
- package/helpers/json-schema.d.ts.map +1 -1
- package/helpers/json-schema.mjs.map +1 -1
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.mjs.map +1 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts.map +1 -1
- package/index.mjs.map +1 -1
- package/internal/decoders/jsonl.d.mts.map +1 -1
- package/internal/decoders/jsonl.d.ts.map +1 -1
- package/internal/decoders/jsonl.mjs.map +1 -1
- package/internal/decoders/line.mjs.map +1 -1
- package/internal/detect-platform.mjs.map +1 -1
- package/internal/headers.mjs.map +1 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.mjs.map +1 -1
- package/internal/qs/formats.d.mts.map +1 -1
- package/internal/qs/formats.d.ts.map +1 -1
- package/internal/qs/index.d.mts +2 -2
- package/internal/qs/index.d.mts.map +1 -1
- package/internal/qs/index.d.ts +2 -2
- package/internal/qs/index.d.ts.map +1 -1
- package/internal/qs/index.mjs.map +1 -1
- package/internal/qs/stringify.d.mts.map +1 -1
- package/internal/qs/stringify.d.ts.map +1 -1
- package/internal/qs/stringify.mjs.map +1 -1
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts.map +1 -1
- package/internal/shims.d.mts +6 -0
- package/internal/shims.d.mts.map +1 -1
- package/internal/shims.d.ts +6 -0
- package/internal/shims.d.ts.map +1 -1
- package/internal/to-file.d.mts.map +1 -1
- package/internal/to-file.d.ts.map +1 -1
- package/internal/to-file.mjs.map +1 -1
- package/internal/types.d.mts +4 -4
- package/internal/types.d.mts.map +1 -1
- package/internal/types.d.ts +4 -4
- package/internal/types.d.ts.map +1 -1
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/abort.d.mts +13 -0
- package/internal/utils/abort.d.mts.map +1 -0
- package/internal/utils/abort.d.ts +13 -0
- package/internal/utils/abort.d.ts.map +1 -0
- package/internal/utils/abort.js +26 -0
- package/internal/utils/abort.js.map +1 -0
- package/internal/utils/abort.mjs +23 -0
- package/internal/utils/abort.mjs.map +1 -0
- package/internal/utils/async-queue.d.mts +31 -0
- package/internal/utils/async-queue.d.mts.map +1 -0
- package/internal/utils/async-queue.d.ts +31 -0
- package/internal/utils/async-queue.d.ts.map +1 -0
- package/internal/utils/async-queue.js +75 -0
- package/internal/utils/async-queue.js.map +1 -0
- package/internal/utils/async-queue.mjs +71 -0
- package/internal/utils/async-queue.mjs.map +1 -0
- package/internal/utils/backoff.d.mts +23 -0
- package/internal/utils/backoff.d.mts.map +1 -0
- package/internal/utils/backoff.d.ts +23 -0
- package/internal/utils/backoff.d.ts.map +1 -0
- package/internal/utils/backoff.js +44 -0
- package/internal/utils/backoff.js.map +1 -0
- package/internal/utils/backoff.mjs +36 -0
- package/internal/utils/backoff.mjs.map +1 -0
- package/internal/utils/base64.mjs.map +1 -1
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.mjs.map +1 -1
- package/internal/utils/path.mjs.map +1 -1
- package/internal/utils/promise.d.mts +11 -0
- package/internal/utils/promise.d.mts.map +1 -0
- package/internal/utils/promise.d.ts +11 -0
- package/internal/utils/promise.d.ts.map +1 -0
- package/internal/utils/promise.js +18 -0
- package/internal/utils/promise.js.map +1 -0
- package/internal/utils/promise.mjs +15 -0
- package/internal/utils/promise.mjs.map +1 -0
- package/internal/utils/query.mjs.map +1 -1
- package/internal/utils/sleep.d.mts +9 -1
- package/internal/utils/sleep.d.mts.map +1 -1
- package/internal/utils/sleep.d.ts +9 -1
- package/internal/utils/sleep.d.ts.map +1 -1
- package/internal/utils/sleep.js +23 -2
- package/internal/utils/sleep.js.map +1 -1
- package/internal/utils/sleep.mjs +23 -2
- package/internal/utils/sleep.mjs.map +1 -1
- package/internal/utils/values.mjs.map +1 -1
- package/internal/utils.d.mts.map +1 -1
- package/internal/utils.d.ts.map +1 -1
- package/internal/utils.mjs.map +1 -1
- package/lib/BetaMessageStream.d.mts.map +1 -1
- package/lib/BetaMessageStream.d.ts.map +1 -1
- package/lib/BetaMessageStream.mjs.map +1 -1
- package/lib/MessageStream.d.mts.map +1 -1
- package/lib/MessageStream.d.ts.map +1 -1
- package/lib/MessageStream.mjs.map +1 -1
- package/lib/beta-parser.d.mts.map +1 -1
- package/lib/beta-parser.d.ts.map +1 -1
- package/lib/beta-parser.mjs.map +1 -1
- package/lib/credentials/credential-chain.d.mts.map +1 -1
- package/lib/credentials/credential-chain.d.ts.map +1 -1
- package/lib/credentials/credential-chain.mjs.map +1 -1
- package/lib/credentials/identity-token.d.mts.map +1 -1
- package/lib/credentials/identity-token.d.ts.map +1 -1
- package/lib/credentials/identity-token.mjs.map +1 -1
- package/lib/credentials/oidc-federation.d.mts.map +1 -1
- package/lib/credentials/oidc-federation.d.ts.map +1 -1
- package/lib/credentials/oidc-federation.mjs.map +1 -1
- package/lib/credentials/token-cache.d.mts.map +1 -1
- package/lib/credentials/token-cache.d.ts.map +1 -1
- package/lib/credentials/token-cache.mjs.map +1 -1
- package/lib/credentials/types.d.mts.map +1 -1
- package/lib/credentials/types.d.ts.map +1 -1
- package/lib/credentials/types.mjs.map +1 -1
- package/lib/credentials/user-oauth.d.mts.map +1 -1
- package/lib/credentials/user-oauth.d.ts.map +1 -1
- package/lib/credentials/user-oauth.mjs.map +1 -1
- package/lib/credentials.d.mts.map +1 -1
- package/lib/credentials.d.ts.map +1 -1
- package/lib/credentials.mjs.map +1 -1
- package/lib/environments/index.d.mts +4 -0
- package/lib/environments/index.d.mts.map +1 -0
- package/lib/environments/index.d.ts +4 -0
- package/lib/environments/index.d.ts.map +1 -0
- package/lib/environments/index.js +18 -0
- package/lib/environments/index.js.map +1 -0
- package/lib/environments/index.mjs +4 -0
- package/lib/environments/index.mjs.map +1 -0
- package/lib/environments/poller.d.mts +89 -0
- package/lib/environments/poller.d.mts.map +1 -0
- package/lib/environments/poller.d.ts +89 -0
- package/lib/environments/poller.d.ts.map +1 -0
- package/lib/environments/poller.js +181 -0
- package/lib/environments/poller.js.map +1 -0
- package/lib/environments/poller.mjs +172 -0
- package/lib/environments/poller.mjs.map +1 -0
- package/lib/environments/worker.d.mts +143 -0
- package/lib/environments/worker.d.mts.map +1 -0
- package/lib/environments/worker.d.ts +143 -0
- package/lib/environments/worker.d.ts.map +1 -0
- package/lib/environments/worker.js +265 -0
- package/lib/environments/worker.js.map +1 -0
- package/lib/environments/worker.mjs +261 -0
- package/lib/environments/worker.mjs.map +1 -0
- package/lib/helper-client.d.mts +49 -0
- package/lib/helper-client.d.mts.map +1 -0
- package/lib/helper-client.d.ts +49 -0
- package/lib/helper-client.d.ts.map +1 -0
- package/lib/helper-client.js +57 -0
- package/lib/helper-client.js.map +1 -0
- package/lib/helper-client.mjs +54 -0
- package/lib/helper-client.mjs.map +1 -0
- package/lib/parser.d.mts.map +1 -1
- package/lib/parser.d.ts.map +1 -1
- package/lib/parser.mjs.map +1 -1
- package/lib/stainless-helper-header.d.mts.map +1 -1
- package/lib/stainless-helper-header.d.ts.map +1 -1
- package/lib/tools/BetaRunnableTool.d.mts +54 -2
- package/lib/tools/BetaRunnableTool.d.mts.map +1 -1
- package/lib/tools/BetaRunnableTool.d.ts +54 -2
- package/lib/tools/BetaRunnableTool.d.ts.map +1 -1
- package/lib/tools/BetaRunnableTool.js +37 -0
- package/lib/tools/BetaRunnableTool.js.map +1 -1
- package/lib/tools/BetaRunnableTool.mjs +34 -1
- package/lib/tools/BetaRunnableTool.mjs.map +1 -1
- package/lib/tools/BetaToolRunner.d.mts.map +1 -1
- package/lib/tools/BetaToolRunner.d.ts.map +1 -1
- package/lib/tools/BetaToolRunner.js +4 -14
- package/lib/tools/BetaToolRunner.js.map +1 -1
- package/lib/tools/BetaToolRunner.mjs +2 -12
- package/lib/tools/BetaToolRunner.mjs.map +1 -1
- package/lib/tools/CompactionControl.d.mts.map +1 -1
- package/lib/tools/CompactionControl.d.ts.map +1 -1
- package/lib/tools/SessionToolRunner.d.mts +140 -0
- package/lib/tools/SessionToolRunner.d.mts.map +1 -0
- package/lib/tools/SessionToolRunner.d.ts +140 -0
- package/lib/tools/SessionToolRunner.d.ts.map +1 -0
- package/lib/tools/SessionToolRunner.js +459 -0
- package/lib/tools/SessionToolRunner.js.map +1 -0
- package/lib/tools/SessionToolRunner.mjs +455 -0
- package/lib/tools/SessionToolRunner.mjs.map +1 -0
- package/lib/tools/ToolError.d.mts.map +1 -1
- package/lib/tools/ToolError.d.ts.map +1 -1
- package/lib/tools/ToolRunner.d.mts.map +1 -1
- package/lib/tools/ToolRunner.d.ts.map +1 -1
- package/lib/tools/ToolRunner.mjs.map +1 -1
- package/lib/transform-json-schema.mjs.map +1 -1
- package/package.json +1 -1
- package/pagination.d.mts +1 -0
- package/pagination.d.mts.map +1 -1
- package/pagination.d.ts +1 -0
- package/pagination.d.ts.map +1 -1
- package/pagination.mjs +1 -0
- package/pagination.mjs.map +1 -1
- package/resource.d.mts +1 -0
- package/resource.d.mts.map +1 -1
- package/resource.d.ts +1 -0
- package/resource.d.ts.map +1 -1
- package/resource.mjs +1 -0
- package/resource.mjs.map +1 -1
- package/resources/beta/agents/agents.d.mts +125 -1
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +125 -1
- package/resources/beta/agents/agents.d.ts.map +1 -1
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/agents/index.d.mts +1 -1
- package/resources/beta/agents/index.d.mts.map +1 -1
- package/resources/beta/agents/index.d.ts +1 -1
- package/resources/beta/agents/index.d.ts.map +1 -1
- package/resources/beta/agents/index.js.map +1 -1
- package/resources/beta/agents/index.mjs.map +1 -1
- package/resources/beta/agents/versions.d.mts.map +1 -1
- package/resources/beta/agents/versions.d.ts.map +1 -1
- package/resources/beta/agents/versions.mjs.map +1 -1
- package/resources/beta/agents.d.mts.map +1 -1
- package/resources/beta/agents.d.ts.map +1 -1
- package/resources/beta/agents.mjs.map +1 -1
- package/resources/beta/beta.d.mts +7 -7
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +7 -7
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js +2 -2
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs +2 -2
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/environments/environments.d.mts +425 -0
- package/resources/beta/environments/environments.d.mts.map +1 -0
- package/resources/beta/environments/environments.d.ts +425 -0
- package/resources/beta/environments/environments.d.ts.map +1 -0
- package/resources/beta/environments/environments.js +150 -0
- package/resources/beta/environments/environments.js.map +1 -0
- package/resources/beta/environments/environments.mjs +145 -0
- package/resources/beta/environments/environments.mjs.map +1 -0
- package/resources/beta/environments/index.d.mts +3 -0
- package/resources/beta/environments/index.d.mts.map +1 -0
- package/resources/beta/environments/index.d.ts +3 -0
- package/resources/beta/environments/index.d.ts.map +1 -0
- package/resources/beta/environments/index.js +9 -0
- package/resources/beta/environments/index.js.map +1 -0
- package/resources/beta/environments/index.mjs +4 -0
- package/resources/beta/environments/index.mjs.map +1 -0
- package/resources/beta/environments/work.d.mts +496 -0
- package/resources/beta/environments/work.d.mts.map +1 -0
- package/resources/beta/environments/work.d.ts +496 -0
- package/resources/beta/environments/work.d.ts.map +1 -0
- package/resources/beta/environments/work.js +274 -0
- package/resources/beta/environments/work.js.map +1 -0
- package/resources/beta/environments/work.mjs +268 -0
- package/resources/beta/environments/work.mjs.map +1 -0
- package/resources/beta/environments.d.mts +1 -388
- package/resources/beta/environments.d.mts.map +1 -1
- package/resources/beta/environments.d.ts +1 -388
- package/resources/beta/environments.d.ts.map +1 -1
- package/resources/beta/environments.js +2 -138
- package/resources/beta/environments.js.map +1 -1
- package/resources/beta/environments.mjs +1 -136
- package/resources/beta/environments.mjs.map +1 -1
- package/resources/beta/files.d.mts.map +1 -1
- package/resources/beta/files.d.ts.map +1 -1
- package/resources/beta/files.mjs.map +1 -1
- package/resources/beta/index.d.mts +3 -3
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +3 -3
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js +12 -12
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/memory-stores/index.d.mts.map +1 -1
- package/resources/beta/memory-stores/index.d.ts.map +1 -1
- package/resources/beta/memory-stores/index.mjs.map +1 -1
- package/resources/beta/memory-stores/memories.d.mts.map +1 -1
- package/resources/beta/memory-stores/memories.d.ts.map +1 -1
- package/resources/beta/memory-stores/memories.mjs.map +1 -1
- package/resources/beta/memory-stores/memory-stores.d.mts.map +1 -1
- package/resources/beta/memory-stores/memory-stores.d.ts.map +1 -1
- package/resources/beta/memory-stores/memory-stores.mjs.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.mts.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.ts.map +1 -1
- package/resources/beta/memory-stores/memory-versions.mjs.map +1 -1
- package/resources/beta/memory-stores.d.mts.map +1 -1
- package/resources/beta/memory-stores.d.ts.map +1 -1
- package/resources/beta/memory-stores.mjs.map +1 -1
- package/resources/beta/messages/batches.d.mts.map +1 -1
- package/resources/beta/messages/batches.d.ts.map +1 -1
- package/resources/beta/messages/batches.mjs.map +1 -1
- package/resources/beta/messages/index.d.mts.map +1 -1
- package/resources/beta/messages/index.d.ts.map +1 -1
- package/resources/beta/messages/index.mjs.map +1 -1
- package/resources/beta/messages/messages.d.mts +4 -4
- package/resources/beta/messages/messages.d.mts.map +1 -1
- package/resources/beta/messages/messages.d.ts +4 -4
- package/resources/beta/messages/messages.d.ts.map +1 -1
- package/resources/beta/messages/messages.mjs.map +1 -1
- package/resources/beta/messages.d.mts.map +1 -1
- package/resources/beta/messages.d.ts.map +1 -1
- package/resources/beta/messages.mjs.map +1 -1
- package/resources/beta/models.d.mts.map +1 -1
- package/resources/beta/models.d.ts.map +1 -1
- package/resources/beta/models.mjs.map +1 -1
- package/resources/beta/sessions/events.d.mts +52 -5
- package/resources/beta/sessions/events.d.mts.map +1 -1
- package/resources/beta/sessions/events.d.ts +52 -5
- package/resources/beta/sessions/events.d.ts.map +1 -1
- package/resources/beta/sessions/events.js +27 -1
- package/resources/beta/sessions/events.js.map +1 -1
- package/resources/beta/sessions/events.mjs +25 -0
- package/resources/beta/sessions/events.mjs.map +1 -1
- package/resources/beta/sessions/index.d.mts +3 -3
- package/resources/beta/sessions/index.d.mts.map +1 -1
- package/resources/beta/sessions/index.d.ts +3 -3
- package/resources/beta/sessions/index.d.ts.map +1 -1
- package/resources/beta/sessions/index.js.map +1 -1
- package/resources/beta/sessions/index.mjs.map +1 -1
- package/resources/beta/sessions/resources.d.mts.map +1 -1
- package/resources/beta/sessions/resources.d.ts.map +1 -1
- package/resources/beta/sessions/resources.mjs.map +1 -1
- package/resources/beta/sessions/sessions.d.mts +98 -6
- package/resources/beta/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/sessions/sessions.d.ts +98 -6
- package/resources/beta/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/sessions/sessions.js.map +1 -1
- package/resources/beta/sessions/sessions.mjs.map +1 -1
- package/resources/beta/sessions/threads/events.d.mts.map +1 -1
- package/resources/beta/sessions/threads/events.d.ts.map +1 -1
- package/resources/beta/sessions/threads/events.mjs.map +1 -1
- package/resources/beta/sessions/threads/index.d.mts +1 -1
- package/resources/beta/sessions/threads/index.d.mts.map +1 -1
- package/resources/beta/sessions/threads/index.d.ts +1 -1
- package/resources/beta/sessions/threads/index.d.ts.map +1 -1
- package/resources/beta/sessions/threads/index.js.map +1 -1
- package/resources/beta/sessions/threads/index.mjs.map +1 -1
- package/resources/beta/sessions/threads/threads.d.mts +3 -23
- package/resources/beta/sessions/threads/threads.d.mts.map +1 -1
- package/resources/beta/sessions/threads/threads.d.ts +3 -23
- package/resources/beta/sessions/threads/threads.d.ts.map +1 -1
- package/resources/beta/sessions/threads/threads.js.map +1 -1
- package/resources/beta/sessions/threads/threads.mjs.map +1 -1
- package/resources/beta/sessions/threads.d.mts.map +1 -1
- package/resources/beta/sessions/threads.d.ts.map +1 -1
- package/resources/beta/sessions/threads.mjs.map +1 -1
- package/resources/beta/sessions.d.mts.map +1 -1
- package/resources/beta/sessions.d.ts.map +1 -1
- package/resources/beta/sessions.mjs.map +1 -1
- package/resources/beta/skills/index.d.mts +1 -1
- package/resources/beta/skills/index.d.mts.map +1 -1
- package/resources/beta/skills/index.d.ts +1 -1
- package/resources/beta/skills/index.d.ts.map +1 -1
- package/resources/beta/skills/index.js.map +1 -1
- package/resources/beta/skills/index.mjs.map +1 -1
- package/resources/beta/skills/skills.d.mts +2 -2
- package/resources/beta/skills/skills.d.mts.map +1 -1
- package/resources/beta/skills/skills.d.ts +2 -2
- package/resources/beta/skills/skills.d.ts.map +1 -1
- package/resources/beta/skills/skills.js.map +1 -1
- package/resources/beta/skills/skills.mjs.map +1 -1
- package/resources/beta/skills/versions.d.mts +28 -1
- package/resources/beta/skills/versions.d.mts.map +1 -1
- package/resources/beta/skills/versions.d.ts +28 -1
- package/resources/beta/skills/versions.d.ts.map +1 -1
- package/resources/beta/skills/versions.js +28 -0
- package/resources/beta/skills/versions.js.map +1 -1
- package/resources/beta/skills/versions.mjs +28 -0
- package/resources/beta/skills/versions.mjs.map +1 -1
- package/resources/beta/skills.d.mts.map +1 -1
- package/resources/beta/skills.d.ts.map +1 -1
- package/resources/beta/skills.mjs.map +1 -1
- package/resources/beta/user-profiles.d.mts.map +1 -1
- package/resources/beta/user-profiles.d.ts.map +1 -1
- package/resources/beta/user-profiles.mjs.map +1 -1
- package/resources/beta/vaults/credentials.d.mts.map +1 -1
- package/resources/beta/vaults/credentials.d.ts.map +1 -1
- package/resources/beta/vaults/credentials.mjs.map +1 -1
- package/resources/beta/vaults/index.d.mts.map +1 -1
- package/resources/beta/vaults/index.d.ts.map +1 -1
- package/resources/beta/vaults/index.mjs.map +1 -1
- package/resources/beta/vaults/vaults.d.mts.map +1 -1
- package/resources/beta/vaults/vaults.d.ts.map +1 -1
- package/resources/beta/vaults/vaults.mjs.map +1 -1
- package/resources/beta/vaults.d.mts.map +1 -1
- package/resources/beta/vaults.d.ts.map +1 -1
- package/resources/beta/vaults.mjs.map +1 -1
- package/resources/beta/webhooks.d.mts.map +1 -1
- package/resources/beta/webhooks.d.ts.map +1 -1
- package/resources/beta/webhooks.mjs.map +1 -1
- package/resources/beta.d.mts.map +1 -1
- package/resources/beta.d.ts.map +1 -1
- package/resources/beta.mjs.map +1 -1
- package/resources/completions.d.mts.map +1 -1
- package/resources/completions.d.ts.map +1 -1
- package/resources/completions.mjs.map +1 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/messages/batches.d.mts.map +1 -1
- package/resources/messages/batches.d.ts.map +1 -1
- package/resources/messages/batches.mjs.map +1 -1
- package/resources/messages/index.d.mts.map +1 -1
- package/resources/messages/index.d.ts.map +1 -1
- package/resources/messages/index.mjs.map +1 -1
- package/resources/messages/messages.d.mts.map +1 -1
- package/resources/messages/messages.d.ts.map +1 -1
- package/resources/messages/messages.mjs.map +1 -1
- package/resources/messages.d.mts.map +1 -1
- package/resources/messages.d.ts.map +1 -1
- package/resources/messages.mjs.map +1 -1
- package/resources/models.d.mts.map +1 -1
- package/resources/models.d.ts.map +1 -1
- package/resources/models.mjs.map +1 -1
- package/resources.d.mts.map +1 -1
- package/resources.d.ts.map +1 -1
- package/resources.mjs.map +1 -1
- package/src/core/streaming.ts +2 -0
- package/src/helpers/beta/environments.ts +33 -0
- package/src/helpers/beta/json-schema.ts +7 -0
- package/src/helpers/beta/zod.ts +7 -0
- package/src/internal/utils/abort.ts +21 -0
- package/src/internal/utils/async-queue.ts +66 -0
- package/src/internal/utils/backoff.ts +41 -0
- package/src/internal/utils/promise.ts +18 -0
- package/src/internal/utils/sleep.ts +25 -2
- package/src/lib/environments/index.ts +23 -0
- package/src/lib/environments/poller.ts +253 -0
- package/src/lib/environments/worker.ts +395 -0
- package/src/lib/helper-client.ts +89 -0
- package/src/lib/tools/BetaRunnableTool.ts +82 -1
- package/src/lib/tools/BetaToolRunner.ts +2 -17
- package/src/lib/tools/SessionToolRunner.ts +591 -0
- package/src/resources/beta/agents/agents.ts +158 -0
- package/src/resources/beta/agents/index.ts +7 -0
- package/src/resources/beta/beta.ts +44 -20
- package/src/resources/beta/environments/environments.ts +625 -0
- package/src/resources/beta/environments/index.ts +42 -0
- package/src/resources/beta/environments/work.ts +697 -0
- package/src/resources/beta/environments.ts +1 -540
- package/src/resources/beta/index.ts +13 -1
- package/src/resources/beta/messages/messages.ts +5 -5
- package/src/resources/beta/sessions/events.ts +77 -3
- package/src/resources/beta/sessions/index.ts +4 -1
- package/src/resources/beta/sessions/sessions.ts +121 -3
- package/src/resources/beta/sessions/threads/index.ts +0 -1
- package/src/resources/beta/sessions/threads/threads.ts +4 -37
- package/src/resources/beta/skills/index.ts +1 -0
- package/src/resources/beta/skills/skills.ts +2 -0
- package/src/resources/beta/skills/versions.ts +44 -0
- package/src/tools/agent-toolset/fs-util.ts +154 -0
- package/src/tools/agent-toolset/node.ts +787 -0
- package/src/tools/agent-toolset/skills.ts +256 -0
- package/src/version.ts +1 -1
- package/streaming.d.mts +1 -0
- package/streaming.d.mts.map +1 -1
- package/streaming.d.ts +1 -0
- package/streaming.d.ts.map +1 -1
- package/streaming.mjs +1 -0
- package/streaming.mjs.map +1 -1
- package/tools/agent-toolset/fs-util.d.mts +49 -0
- package/tools/agent-toolset/fs-util.d.mts.map +1 -0
- package/tools/agent-toolset/fs-util.d.ts +49 -0
- package/tools/agent-toolset/fs-util.d.ts.map +1 -0
- package/tools/agent-toolset/fs-util.js +159 -0
- package/tools/agent-toolset/fs-util.js.map +1 -0
- package/tools/agent-toolset/fs-util.mjs +151 -0
- package/tools/agent-toolset/fs-util.mjs.map +1 -0
- package/tools/agent-toolset/node.d.mts +139 -0
- package/tools/agent-toolset/node.d.mts.map +1 -0
- package/tools/agent-toolset/node.d.ts +139 -0
- package/tools/agent-toolset/node.d.ts.map +1 -0
- package/tools/agent-toolset/node.js +746 -0
- package/tools/agent-toolset/node.js.map +1 -0
- package/tools/agent-toolset/node.mjs +731 -0
- package/tools/agent-toolset/node.mjs.map +1 -0
- package/tools/agent-toolset/skills.d.mts +50 -0
- package/tools/agent-toolset/skills.d.mts.map +1 -0
- package/tools/agent-toolset/skills.d.ts +50 -0
- package/tools/agent-toolset/skills.d.ts.map +1 -0
- package/tools/agent-toolset/skills.js +249 -0
- package/tools/agent-toolset/skills.js.map +1 -0
- package/tools/agent-toolset/skills.mjs +243 -0
- package/tools/agent-toolset/skills.mjs.map +1 -0
- package/tools/memory/node.d.mts.map +1 -1
- package/tools/memory/node.d.ts.map +1 -1
- package/tools/memory/node.mjs.map +1 -1
- package/uploads.d.mts +1 -0
- package/uploads.d.mts.map +1 -1
- package/uploads.d.ts +1 -0
- package/uploads.d.ts.map +1 -1
- package/uploads.mjs +1 -0
- package/uploads.mjs.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
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { Anthropic } from "../../client.js";
|
|
2
|
+
import type { BetaManagedAgentsAgentCustomToolUseEvent, BetaManagedAgentsAgentToolUseEvent, BetaManagedAgentsUserCustomToolResultEventParams, BetaManagedAgentsUserToolResultEventParams } from "../../resources/beta/sessions/events.js";
|
|
3
|
+
import { type BetaRunnableTool } from "./BetaRunnableTool.js";
|
|
4
|
+
import type { BetaToolRunnerRequestOptions } from "./BetaToolRunner.js";
|
|
5
|
+
/** Beta header for the managed-agents API. */
|
|
6
|
+
export declare const MANAGED_AGENTS_BETA = "managed-agents-2026-04-01";
|
|
7
|
+
/**
|
|
8
|
+
* A tool-call event the runner dispatches against the local registry: either a
|
|
9
|
+
* builtin `agent.tool_use` (answered with `user.tool_result`) or a custom
|
|
10
|
+
* `agent.custom_tool_use` (answered with `user.custom_tool_result`). Server-side
|
|
11
|
+
* `agent.mcp_tool_use` calls are intentionally excluded — the runner does not
|
|
12
|
+
* handle them.
|
|
13
|
+
*/
|
|
14
|
+
type DispatchedToolUseEvent = BetaManagedAgentsAgentToolUseEvent | BetaManagedAgentsAgentCustomToolUseEvent;
|
|
15
|
+
/**
|
|
16
|
+
* The result-event params paired with a {@link DispatchedToolUseEvent}: a
|
|
17
|
+
* `user.tool_result` answers an `agent.tool_use`, a `user.custom_tool_result`
|
|
18
|
+
* answers an `agent.custom_tool_use`. The two pairs must be matched exactly.
|
|
19
|
+
*/
|
|
20
|
+
type DispatchedToolResultParams = BetaManagedAgentsUserToolResultEventParams | BetaManagedAgentsUserCustomToolResultEventParams;
|
|
21
|
+
export interface SessionToolRunnerOptions {
|
|
22
|
+
client: Anthropic;
|
|
23
|
+
/**
|
|
24
|
+
* Tools to expose to the session, in the same {@link BetaRunnableTool} shape
|
|
25
|
+
* `client.beta.messages.toolRunner` accepts. Use
|
|
26
|
+
* `betaAgentToolset20260401({ workdir })` from
|
|
27
|
+
* `@anthropic-ai/sdk/tools/agent-toolset/node` for the standard
|
|
28
|
+
* `agent_toolset_20260401` set; filter or extend the array to customise.
|
|
29
|
+
*/
|
|
30
|
+
tools: Array<BetaRunnableTool>;
|
|
31
|
+
/**
|
|
32
|
+
* Once the session goes idle with `stop_reason.type === "end_turn"`, the
|
|
33
|
+
* runner keeps running for this many milliseconds before stopping; any new
|
|
34
|
+
* event resets the countdown and it re-arms on the next `end_turn` idle.
|
|
35
|
+
* Defaults to {@link DEFAULT_MAX_IDLE_MS} (60s). `0` (or negative) disables
|
|
36
|
+
* it — the runner then only stops on session termination or the consumer
|
|
37
|
+
* breaking out / aborting.
|
|
38
|
+
*/
|
|
39
|
+
maxIdleMs?: number;
|
|
40
|
+
/** External abort signal. Aborting it ends the iteration. */
|
|
41
|
+
signal?: AbortSignal;
|
|
42
|
+
/**
|
|
43
|
+
* Extra per-request options merged into every call this runner issues
|
|
44
|
+
* (event stream / list / send). Mirrors what `client.beta.messages.toolRunner`
|
|
45
|
+
* accepts: custom `headers` (e.g. a proxy's auth/routing headers) reach the
|
|
46
|
+
* poll/heartbeat/stop/stream/list/send calls. The runner always owns the abort
|
|
47
|
+
* signal, so a `signal` here is ignored — pass {@link SessionToolRunnerOptions.signal}
|
|
48
|
+
* to abort externally.
|
|
49
|
+
*/
|
|
50
|
+
requestOptions?: BetaToolRunnerRequestOptions;
|
|
51
|
+
}
|
|
52
|
+
/** Default {@link SessionToolRunnerOptions.maxIdleMs}: 60 seconds. */
|
|
53
|
+
export declare const DEFAULT_MAX_IDLE_MS = 60000;
|
|
54
|
+
/**
|
|
55
|
+
* Outcome of a single tool execution dispatched by {@link SessionToolRunner}.
|
|
56
|
+
*
|
|
57
|
+
* Yielded after the tool ran (or failed) and after the result was posted back
|
|
58
|
+
* to the session as a `user.tool_result` event. Consumers can read either the
|
|
59
|
+
* embedded {@link DispatchedToolCall.event} / {@link DispatchedToolCall.result}
|
|
60
|
+
* blocks or the flat top-level convenience fields.
|
|
61
|
+
*/
|
|
62
|
+
export interface DispatchedToolCall {
|
|
63
|
+
/**
|
|
64
|
+
* The `agent.tool_use` or `agent.custom_tool_use` event that triggered this
|
|
65
|
+
* dispatch. Read `event.input` for the raw tool input and `event.name` for the
|
|
66
|
+
* tool name; `event.type` distinguishes a builtin tool call from a custom one.
|
|
67
|
+
*/
|
|
68
|
+
readonly event: DispatchedToolUseEvent;
|
|
69
|
+
/**
|
|
70
|
+
* The result event posted (or attempted) back to the session for this call: a
|
|
71
|
+
* `user.tool_result` for an `agent.tool_use`, a `user.custom_tool_result` for
|
|
72
|
+
* an `agent.custom_tool_use`. Read `result.content` for the tool's output
|
|
73
|
+
* blocks and `result.is_error` for the error flag.
|
|
74
|
+
*/
|
|
75
|
+
readonly result: DispatchedToolResultParams;
|
|
76
|
+
/**
|
|
77
|
+
* Flat convenience for `event.id` — the id of the tool-use event this result
|
|
78
|
+
* answers (echoed back as `tool_use_id` / `custom_tool_use_id` on the result).
|
|
79
|
+
*/
|
|
80
|
+
readonly toolUseId: string;
|
|
81
|
+
/** Flat convenience for `event.name` — the dispatched tool's name. */
|
|
82
|
+
readonly name: string;
|
|
83
|
+
/**
|
|
84
|
+
* Flat convenience for `result.is_error` — `true` when the tool threw or was
|
|
85
|
+
* not found, `false` on success.
|
|
86
|
+
*/
|
|
87
|
+
readonly isError: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Whether the `user.tool_result` was successfully posted back to the session.
|
|
90
|
+
* `false` when the post itself failed — typically a permanent 4xx or
|
|
91
|
+
* send-retry exhaustion.
|
|
92
|
+
*/
|
|
93
|
+
readonly posted: boolean;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The sessions-side counterpart to `client.beta.messages.toolRunner`: an
|
|
97
|
+
* async-iterable that attaches to a managed-agents session, executes every
|
|
98
|
+
* incoming `agent.tool_use` and `agent.custom_tool_use` event against a local
|
|
99
|
+
* tool registry, posts the matching result back (`user.tool_result` for the
|
|
100
|
+
* former, `user.custom_tool_result` for the latter), and yields one
|
|
101
|
+
* {@link DispatchedToolCall} per completed call. Server-side `agent.mcp_tool_use`
|
|
102
|
+
* calls are not dispatched. Internally drives event-stream reconnect and result
|
|
103
|
+
* posting.
|
|
104
|
+
*
|
|
105
|
+
* Iteration ends when the session terminates (`session.status_terminated` /
|
|
106
|
+
* `session.deleted`), when the consumer `break`s out of the loop or aborts the
|
|
107
|
+
* supplied signal, or — once the session has gone idle with
|
|
108
|
+
* `stop_reason.type === "end_turn"` — when `maxIdleMs` elapses with no new
|
|
109
|
+
* event (any new event resets that countdown; it re-arms on the next `end_turn`
|
|
110
|
+
* idle; `maxIdleMs <= 0` disables it). The `finally` branch drains any in-flight
|
|
111
|
+
* tool calls and runs each tool's `close()` cleanup hook. It does *not* touch
|
|
112
|
+
* the work-item lease — wrap it in an `EnvironmentWorker` if you need
|
|
113
|
+
* heartbeating / force-stop.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* import { betaAgentToolset20260401 } from '@anthropic-ai/sdk/tools/agent-toolset/node';
|
|
118
|
+
*
|
|
119
|
+
* for await (const call of client.beta.sessions.events.toolRunner(work.data.id, {
|
|
120
|
+
* tools: [...betaAgentToolset20260401({ workdir }), myTool],
|
|
121
|
+
* })) {
|
|
122
|
+
* console.log(`${call.name} -> ${call.isError ? 'error' : 'ok'}`);
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare class SessionToolRunner implements AsyncIterable<DispatchedToolCall> {
|
|
127
|
+
#private;
|
|
128
|
+
readonly client: Anthropic;
|
|
129
|
+
readonly sessionId: string;
|
|
130
|
+
readonly tools: ReadonlyArray<BetaRunnableTool>;
|
|
131
|
+
readonly maxIdleMs: number;
|
|
132
|
+
constructor(sessionId: string, opts: SessionToolRunnerOptions);
|
|
133
|
+
/** Read-only view of this runner's abort signal. */
|
|
134
|
+
get signal(): AbortSignal;
|
|
135
|
+
/** Abort the runner. Background tasks will wind down and `for await` will exit cleanly. */
|
|
136
|
+
abort(): void;
|
|
137
|
+
[Symbol.asyncIterator](): AsyncIterator<DispatchedToolCall>;
|
|
138
|
+
}
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=SessionToolRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionToolRunner.d.ts","sourceRoot":"","sources":["../../src/lib/tools/SessionToolRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAqB;AAC9C,OAAO,KAAK,EACV,wCAAwC,EACxC,kCAAkC,EAGlC,gDAAgD,EAChD,0CAA0C,EAC3C,gDAA6C;AAS9C,OAAO,EAA6B,KAAK,gBAAgB,EAAE,8BAA2B;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,4BAAyB;AAErE,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAc/D;;;;;;GAMG;AACH,KAAK,sBAAsB,GAAG,kCAAkC,GAAG,wCAAwC,CAAC;AAE5G;;;;GAIG;AACH,KAAK,0BAA0B,GAC3B,0CAA0C,GAC1C,gDAAgD,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,4BAA4B,CAAC;CAC/C;AAED,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,iBAAkB,YAAW,aAAa,CAAC,kBAAkB,CAAC;;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAiBf,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB;IAY7D,oDAAoD;IACpD,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,2FAA2F;IAC3F,KAAK,IAAI,IAAI;IAIN,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,kBAAkB,CAAC;CA8UnE"}
|
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _SessionToolRunner_instances, _SessionToolRunner_consumed, _SessionToolRunner_controller, _SessionToolRunner_detachExternal, _SessionToolRunner_requestOpts, _SessionToolRunner_toolByName, _SessionToolRunner_logger, _SessionToolRunner_seen, _SessionToolRunner_answered, _SessionToolRunner_results, _SessionToolRunner_inFlightCount, _SessionToolRunner_onIdle, _SessionToolRunner_idleTimer, _SessionToolRunner_requestOptions, _SessionToolRunner_streamLoop, _SessionToolRunner_reconcile, _SessionToolRunner_ingestHistory, _SessionToolRunner_handleStreamEvent, _SessionToolRunner_armIdleTimer, _SessionToolRunner_disarmIdleTimer, _SessionToolRunner_execute, _SessionToolRunner_sendResult, _SessionToolRunner_drain;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SessionToolRunner = exports.DEFAULT_MAX_IDLE_MS = exports.MANAGED_AGENTS_BETA = void 0;
|
|
5
|
+
const tslib_1 = require("../../internal/tslib.js");
|
|
6
|
+
const error_1 = require("../../core/error.js");
|
|
7
|
+
const log_1 = require("../../internal/utils/log.js");
|
|
8
|
+
const sleep_1 = require("../../internal/utils/sleep.js");
|
|
9
|
+
const backoff_1 = require("../../internal/utils/backoff.js");
|
|
10
|
+
const abort_1 = require("../../internal/utils/abort.js");
|
|
11
|
+
const async_queue_1 = require("../../internal/utils/async-queue.js");
|
|
12
|
+
const headers_1 = require("../../internal/headers.js");
|
|
13
|
+
const BetaRunnableTool_1 = require("./BetaRunnableTool.js");
|
|
14
|
+
/** Beta header for the managed-agents API. */
|
|
15
|
+
exports.MANAGED_AGENTS_BETA = 'managed-agents-2026-04-01';
|
|
16
|
+
/** `x-stainless-helper` value identifying this helper in SDK telemetry. */
|
|
17
|
+
const HELPER_NAME = 'SessionToolRunner';
|
|
18
|
+
const STREAM_BACKOFF_START_MS = 500;
|
|
19
|
+
const STREAM_BACKOFF_CAP_MS = 10000;
|
|
20
|
+
const TOOL_TIMEOUT_MS = 120000;
|
|
21
|
+
const DRAIN_TIMEOUT_MS = 30000;
|
|
22
|
+
const SEND_RETRIES = 3;
|
|
23
|
+
/** Default {@link SessionToolRunnerOptions.maxIdleMs}: 60 seconds. */
|
|
24
|
+
exports.DEFAULT_MAX_IDLE_MS = 60000;
|
|
25
|
+
/** Returns true if `ev` is a `session.status_idle` with `stop_reason` `end_turn`. */
|
|
26
|
+
function isEndTurnIdle(ev) {
|
|
27
|
+
return ev.type === 'session.status_idle' && ev.stop_reason?.type === 'end_turn';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The sessions-side counterpart to `client.beta.messages.toolRunner`: an
|
|
31
|
+
* async-iterable that attaches to a managed-agents session, executes every
|
|
32
|
+
* incoming `agent.tool_use` and `agent.custom_tool_use` event against a local
|
|
33
|
+
* tool registry, posts the matching result back (`user.tool_result` for the
|
|
34
|
+
* former, `user.custom_tool_result` for the latter), and yields one
|
|
35
|
+
* {@link DispatchedToolCall} per completed call. Server-side `agent.mcp_tool_use`
|
|
36
|
+
* calls are not dispatched. Internally drives event-stream reconnect and result
|
|
37
|
+
* posting.
|
|
38
|
+
*
|
|
39
|
+
* Iteration ends when the session terminates (`session.status_terminated` /
|
|
40
|
+
* `session.deleted`), when the consumer `break`s out of the loop or aborts the
|
|
41
|
+
* supplied signal, or — once the session has gone idle with
|
|
42
|
+
* `stop_reason.type === "end_turn"` — when `maxIdleMs` elapses with no new
|
|
43
|
+
* event (any new event resets that countdown; it re-arms on the next `end_turn`
|
|
44
|
+
* idle; `maxIdleMs <= 0` disables it). The `finally` branch drains any in-flight
|
|
45
|
+
* tool calls and runs each tool's `close()` cleanup hook. It does *not* touch
|
|
46
|
+
* the work-item lease — wrap it in an `EnvironmentWorker` if you need
|
|
47
|
+
* heartbeating / force-stop.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { betaAgentToolset20260401 } from '@anthropic-ai/sdk/tools/agent-toolset/node';
|
|
52
|
+
*
|
|
53
|
+
* for await (const call of client.beta.sessions.events.toolRunner(work.data.id, {
|
|
54
|
+
* tools: [...betaAgentToolset20260401({ workdir }), myTool],
|
|
55
|
+
* })) {
|
|
56
|
+
* console.log(`${call.name} -> ${call.isError ? 'error' : 'ok'}`);
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
class SessionToolRunner {
|
|
61
|
+
constructor(sessionId, opts) {
|
|
62
|
+
_SessionToolRunner_instances.add(this);
|
|
63
|
+
_SessionToolRunner_consumed.set(this, false);
|
|
64
|
+
_SessionToolRunner_controller.set(this, void 0);
|
|
65
|
+
_SessionToolRunner_detachExternal.set(this, void 0);
|
|
66
|
+
_SessionToolRunner_requestOpts.set(this, void 0);
|
|
67
|
+
_SessionToolRunner_toolByName.set(this, void 0);
|
|
68
|
+
_SessionToolRunner_logger.set(this, void 0);
|
|
69
|
+
_SessionToolRunner_seen.set(this, new Set());
|
|
70
|
+
_SessionToolRunner_answered.set(this, new Set());
|
|
71
|
+
_SessionToolRunner_results.set(this, new async_queue_1.AsyncQueue());
|
|
72
|
+
_SessionToolRunner_inFlightCount.set(this, 0);
|
|
73
|
+
_SessionToolRunner_onIdle.set(this, null);
|
|
74
|
+
// When the session is idle past an `end_turn`, the pending stop timer; cleared
|
|
75
|
+
// by any new event. Event-driven — there is no polling watchdog.
|
|
76
|
+
_SessionToolRunner_idleTimer.set(this, void 0);
|
|
77
|
+
this.client = opts.client;
|
|
78
|
+
this.sessionId = sessionId;
|
|
79
|
+
this.tools = opts.tools;
|
|
80
|
+
this.maxIdleMs = opts.maxIdleMs ?? exports.DEFAULT_MAX_IDLE_MS;
|
|
81
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_logger, (0, log_1.loggerFor)(opts.client), "f");
|
|
82
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_toolByName, new Map(opts.tools.map((t) => [(0, BetaRunnableTool_1.toolName)(t), t])), "f");
|
|
83
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_controller, new AbortController(), "f");
|
|
84
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_detachExternal, (0, abort_1.linkAbort)(opts.signal, tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f")), "f");
|
|
85
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_requestOpts, opts.requestOptions, "f");
|
|
86
|
+
}
|
|
87
|
+
/** Read-only view of this runner's abort signal. */
|
|
88
|
+
get signal() {
|
|
89
|
+
return tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").signal;
|
|
90
|
+
}
|
|
91
|
+
/** Abort the runner. Background tasks will wind down and `for await` will exit cleanly. */
|
|
92
|
+
abort() {
|
|
93
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").abort();
|
|
94
|
+
}
|
|
95
|
+
async *[(_SessionToolRunner_consumed = new WeakMap(), _SessionToolRunner_controller = new WeakMap(), _SessionToolRunner_detachExternal = new WeakMap(), _SessionToolRunner_requestOpts = new WeakMap(), _SessionToolRunner_toolByName = new WeakMap(), _SessionToolRunner_logger = new WeakMap(), _SessionToolRunner_seen = new WeakMap(), _SessionToolRunner_answered = new WeakMap(), _SessionToolRunner_results = new WeakMap(), _SessionToolRunner_inFlightCount = new WeakMap(), _SessionToolRunner_onIdle = new WeakMap(), _SessionToolRunner_idleTimer = new WeakMap(), _SessionToolRunner_instances = new WeakSet(), Symbol.asyncIterator)]() {
|
|
96
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_consumed, "f")) {
|
|
97
|
+
throw new error_1.AnthropicError('Cannot iterate over a consumed SessionToolRunner');
|
|
98
|
+
}
|
|
99
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_consumed, true, "f");
|
|
100
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").info('session tool runner starting', {
|
|
101
|
+
component: 'session-tool-runner',
|
|
102
|
+
session_id: this.sessionId,
|
|
103
|
+
});
|
|
104
|
+
// The one background promise: drives the event stream and dispatches tools.
|
|
105
|
+
// Its `.catch` aborts the controller so the main loop unwinds.
|
|
106
|
+
const streamPromise = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_streamLoop).call(this).catch((e) => {
|
|
107
|
+
if (!tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").signal.aborted) {
|
|
108
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").error('stream loop failed', { error: String(e) });
|
|
109
|
+
}
|
|
110
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").abort();
|
|
111
|
+
});
|
|
112
|
+
try {
|
|
113
|
+
// Phase 1: yield results as they arrive. `next(signal)` resolves
|
|
114
|
+
// `done: true` when the controller aborts — cancellation is handled in
|
|
115
|
+
// the queue read, no outer `Promise.race` needed.
|
|
116
|
+
while (true) {
|
|
117
|
+
const next = await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_results, "f").next(tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").signal);
|
|
118
|
+
if (next.done)
|
|
119
|
+
break;
|
|
120
|
+
yield next.value;
|
|
121
|
+
}
|
|
122
|
+
// Phase 2: let the stream loop settle (and push any final results), then
|
|
123
|
+
// drain whatever is still queued before closing.
|
|
124
|
+
await streamPromise;
|
|
125
|
+
let pending;
|
|
126
|
+
while ((pending = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_results, "f").tryShift()) !== undefined) {
|
|
127
|
+
yield pending;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").abort();
|
|
132
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_disarmIdleTimer).call(this);
|
|
133
|
+
// Re-await defensively in case the consumer broke out of phase 1 before
|
|
134
|
+
// phase 2 ran — a no-op if it already settled.
|
|
135
|
+
await streamPromise;
|
|
136
|
+
try {
|
|
137
|
+
await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_drain).call(this);
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").warn('drain failed', { error: String(e) });
|
|
141
|
+
}
|
|
142
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_results, "f").close();
|
|
143
|
+
for (const t of this.tools) {
|
|
144
|
+
try {
|
|
145
|
+
// `close` is typed `() => Promisable<void>`, so a single `await`
|
|
146
|
+
// covers both the sync and async return.
|
|
147
|
+
await t.close?.();
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").warn('tool.close failed', { tool: (0, BetaRunnableTool_1.toolName)(t), error: String(e) });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Detach from the external signal so the consumer can drop their signal
|
|
154
|
+
// reference without leaking this iterator instance.
|
|
155
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_detachExternal, "f").call(this);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.SessionToolRunner = SessionToolRunner;
|
|
160
|
+
_SessionToolRunner_requestOptions = function _SessionToolRunner_requestOptions() {
|
|
161
|
+
return {
|
|
162
|
+
...tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_requestOpts, "f"),
|
|
163
|
+
headers: (0, headers_1.buildHeaders)([{ 'x-stainless-helper': HELPER_NAME }, tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_requestOpts, "f")?.headers]),
|
|
164
|
+
signal: tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").signal,
|
|
165
|
+
};
|
|
166
|
+
}, _SessionToolRunner_streamLoop =
|
|
167
|
+
// ===== event stream =====
|
|
168
|
+
async function _SessionToolRunner_streamLoop() {
|
|
169
|
+
const ctrl = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f");
|
|
170
|
+
let backoff = STREAM_BACKOFF_START_MS;
|
|
171
|
+
while (!ctrl.signal.aborted) {
|
|
172
|
+
try {
|
|
173
|
+
// Establish the event stream *before* reconciling history, so an event
|
|
174
|
+
// emitted in the gap between listing and attaching is buffered on the
|
|
175
|
+
// stream rather than lost. `seen`/`answered` dedup any event that shows
|
|
176
|
+
// up both in the reconcile pass and on the live stream.
|
|
177
|
+
const stream = await this.client.beta.sessions.events.stream(this.sessionId, {}, tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_requestOptions).call(this));
|
|
178
|
+
await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_reconcile).call(this);
|
|
179
|
+
for await (const ev of stream) {
|
|
180
|
+
backoff = STREAM_BACKOFF_START_MS;
|
|
181
|
+
if (await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_handleStreamEvent).call(this, ev))
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
// An abort throws to unwind the caller (the iterator's `streamPromise`
|
|
187
|
+
// `.catch`) rather than returning early and letting it carry on.
|
|
188
|
+
ctrl.signal.throwIfAborted();
|
|
189
|
+
if ((0, backoff_1.isFatal4xx)(e)) {
|
|
190
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").error('permanent stream failure, shutting down', { error: String(e) });
|
|
191
|
+
ctrl.abort();
|
|
192
|
+
throw e;
|
|
193
|
+
}
|
|
194
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").warn('stream disconnected, reconnecting', {
|
|
195
|
+
error: String(e),
|
|
196
|
+
backoff_ms: backoff,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
ctrl.signal.throwIfAborted();
|
|
200
|
+
await (0, sleep_1.sleep)(backoff, ctrl.signal);
|
|
201
|
+
backoff = Math.min(backoff * 2, STREAM_BACKOFF_CAP_MS);
|
|
202
|
+
}
|
|
203
|
+
}, _SessionToolRunner_reconcile =
|
|
204
|
+
/**
|
|
205
|
+
* Read full history before dispatching so a `tool_use` whose result appears
|
|
206
|
+
* later in the same history is not re-executed. Runs after the live stream is
|
|
207
|
+
* already attached (see {@link SessionToolRunner.#streamLoop}).
|
|
208
|
+
*/
|
|
209
|
+
async function _SessionToolRunner_reconcile() {
|
|
210
|
+
const ctrl = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f");
|
|
211
|
+
const pending = [];
|
|
212
|
+
let lastWasEndTurn = false;
|
|
213
|
+
try {
|
|
214
|
+
for await (const ev of this.client.beta.sessions.events.list(this.sessionId, { limit: 1000 }, tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_requestOptions).call(this))) {
|
|
215
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_ingestHistory).call(this, ev, pending);
|
|
216
|
+
lastWasEndTurn = isEndTurnIdle(ev);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
// An abort throws to unwind the caller; a real list failure is
|
|
221
|
+
// non-fatal — undo the speculative `seen` entries and let `#streamLoop`
|
|
222
|
+
// carry on with the live stream.
|
|
223
|
+
ctrl.signal.throwIfAborted();
|
|
224
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").warn('reconcile list failed', { error: String(e) });
|
|
225
|
+
// If list itself failed, undo the speculative `seen` entries so the next
|
|
226
|
+
// reconcile pass (or the live stream) can pick them up. Leave the idle
|
|
227
|
+
// timer untouched — the history we read may be incomplete.
|
|
228
|
+
for (const ev of pending)
|
|
229
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_seen, "f").delete(ev.id);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const unanswered = pending.filter((ev) => !tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").has(ev.id));
|
|
233
|
+
// If the most recent event in history is an `end_turn` idle and there's no
|
|
234
|
+
// outstanding tool work, the session is done — arm the idle timer so the
|
|
235
|
+
// runner stops even if that `end_turn` arrived during a disconnect.
|
|
236
|
+
if (lastWasEndTurn && unanswered.length === 0)
|
|
237
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_armIdleTimer).call(this);
|
|
238
|
+
else
|
|
239
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_disarmIdleTimer).call(this);
|
|
240
|
+
for (const ev of unanswered)
|
|
241
|
+
await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_execute).call(this, ev);
|
|
242
|
+
}, _SessionToolRunner_ingestHistory = function _SessionToolRunner_ingestHistory(ev, pending) {
|
|
243
|
+
if (ev.type === 'agent.tool_use' || ev.type === 'agent.custom_tool_use') {
|
|
244
|
+
// Mark the event seen so a replay on the live stream is not dispatched
|
|
245
|
+
// twice, but decide whether it still needs executing from `answered`, not
|
|
246
|
+
// `seen`: a call whose result post failed is seen-but-unanswered, and must
|
|
247
|
+
// be retried on the next reconcile pass rather than silently dropped.
|
|
248
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_seen, "f").add(ev.id);
|
|
249
|
+
if (!tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").has(ev.id))
|
|
250
|
+
pending.push(ev);
|
|
251
|
+
}
|
|
252
|
+
else if (ev.type === 'user.tool_result') {
|
|
253
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").add(ev.tool_use_id);
|
|
254
|
+
}
|
|
255
|
+
else if (ev.type === 'user.custom_tool_result') {
|
|
256
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").add(ev.custom_tool_use_id);
|
|
257
|
+
}
|
|
258
|
+
}, _SessionToolRunner_handleStreamEvent =
|
|
259
|
+
/** Returns true when the runner should exit. */
|
|
260
|
+
async function _SessionToolRunner_handleStreamEvent(ev) {
|
|
261
|
+
// Arm/disarm the idle timer: an `end_turn` idle starts the grace countdown;
|
|
262
|
+
// any other event cancels it.
|
|
263
|
+
if (isEndTurnIdle(ev))
|
|
264
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_armIdleTimer).call(this);
|
|
265
|
+
else
|
|
266
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_disarmIdleTimer).call(this);
|
|
267
|
+
switch (ev.type) {
|
|
268
|
+
case 'agent.tool_use':
|
|
269
|
+
case 'agent.custom_tool_use':
|
|
270
|
+
if (!tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_seen, "f").has(ev.id)) {
|
|
271
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_seen, "f").add(ev.id);
|
|
272
|
+
await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_execute).call(this, ev);
|
|
273
|
+
}
|
|
274
|
+
return false;
|
|
275
|
+
case 'user.tool_result':
|
|
276
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").add(ev.tool_use_id);
|
|
277
|
+
return false;
|
|
278
|
+
case 'user.custom_tool_result':
|
|
279
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").add(ev.custom_tool_use_id);
|
|
280
|
+
return false;
|
|
281
|
+
case 'session.status_terminated':
|
|
282
|
+
case 'session.deleted':
|
|
283
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").info('session terminated', {
|
|
284
|
+
component: 'session-tool-runner',
|
|
285
|
+
session_id: this.sessionId,
|
|
286
|
+
});
|
|
287
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").abort();
|
|
288
|
+
return true;
|
|
289
|
+
default:
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
}, _SessionToolRunner_armIdleTimer = function _SessionToolRunner_armIdleTimer() {
|
|
293
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_disarmIdleTimer).call(this);
|
|
294
|
+
if (this.maxIdleMs <= 0)
|
|
295
|
+
return;
|
|
296
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_idleTimer, setTimeout(() => {
|
|
297
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").info('session idle after end_turn; stopping', {
|
|
298
|
+
component: 'session-tool-runner',
|
|
299
|
+
session_id: this.sessionId,
|
|
300
|
+
max_idle_ms: this.maxIdleMs,
|
|
301
|
+
});
|
|
302
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").abort();
|
|
303
|
+
}, this.maxIdleMs), "f");
|
|
304
|
+
}, _SessionToolRunner_disarmIdleTimer = function _SessionToolRunner_disarmIdleTimer() {
|
|
305
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_idleTimer, "f") !== undefined) {
|
|
306
|
+
clearTimeout(tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_idleTimer, "f"));
|
|
307
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_idleTimer, undefined, "f");
|
|
308
|
+
}
|
|
309
|
+
}, _SessionToolRunner_execute =
|
|
310
|
+
// ===== tool execution =====
|
|
311
|
+
async function _SessionToolRunner_execute(ev) {
|
|
312
|
+
var _a, _b;
|
|
313
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").has(ev.id))
|
|
314
|
+
return;
|
|
315
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").info('executing tool', {
|
|
316
|
+
component: 'session-tool-runner',
|
|
317
|
+
session_id: this.sessionId,
|
|
318
|
+
tool: ev.name,
|
|
319
|
+
tool_use_id: ev.id,
|
|
320
|
+
});
|
|
321
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_inFlightCount, (_a = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_inFlightCount, "f"), _a++, _a), "f");
|
|
322
|
+
try {
|
|
323
|
+
const tool = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_toolByName, "f").get(ev.name);
|
|
324
|
+
let content;
|
|
325
|
+
let isError;
|
|
326
|
+
if (!tool) {
|
|
327
|
+
// Match `BetaToolRunner`'s wording — the string lands in the model's
|
|
328
|
+
// context, so the two `toolRunner()` surfaces should agree.
|
|
329
|
+
content = `Error: Tool '${ev.name}' not found`;
|
|
330
|
+
isError = true;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
// Per-tool controller: aborts on the runner's own signal *or* the
|
|
334
|
+
// per-tool timeout, so an in-flight tool stops promptly when the runner
|
|
335
|
+
// is aborted instead of running until the timeout.
|
|
336
|
+
const toolCtrl = new AbortController();
|
|
337
|
+
const detachTool = (0, abort_1.linkAbort)(tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f").signal, toolCtrl);
|
|
338
|
+
const timer = setTimeout(() => toolCtrl.abort(), TOOL_TIMEOUT_MS);
|
|
339
|
+
try {
|
|
340
|
+
// Pass the source `agent.tool_use` / `agent.custom_tool_use` event
|
|
341
|
+
// straight through as the run context's `toolUse` — it is a union
|
|
342
|
+
// member of `BetaToolUse`, no Messages-block adapter needed.
|
|
343
|
+
const outcome = await (0, BetaRunnableTool_1.runRunnableTool)(tool, ev.input, {
|
|
344
|
+
toolUse: ev,
|
|
345
|
+
toolUseBlock: ev,
|
|
346
|
+
signal: toolCtrl.signal,
|
|
347
|
+
});
|
|
348
|
+
content = outcome.content;
|
|
349
|
+
isError = outcome.isError;
|
|
350
|
+
}
|
|
351
|
+
finally {
|
|
352
|
+
clearTimeout(timer);
|
|
353
|
+
detachTool();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// Answer with the result event that matches the call kind: a
|
|
357
|
+
// `user.tool_result` for an `agent.tool_use`, a `user.custom_tool_result`
|
|
358
|
+
// for an `agent.custom_tool_use`. Posting the wrong one leaves the call
|
|
359
|
+
// unanswered and the session stuck.
|
|
360
|
+
const result = buildResultEvent(ev, isError, toSessionContent(content));
|
|
361
|
+
const posted = await tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_sendResult).call(this, result, ev.id);
|
|
362
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_results, "f").push({
|
|
363
|
+
event: ev,
|
|
364
|
+
result,
|
|
365
|
+
toolUseId: ev.id,
|
|
366
|
+
name: ev.name,
|
|
367
|
+
isError,
|
|
368
|
+
posted,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_inFlightCount, (_b = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_inFlightCount, "f"), _b--, _b), "f");
|
|
373
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_inFlightCount, "f") === 0)
|
|
374
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_onIdle, "f")?.call(this);
|
|
375
|
+
}
|
|
376
|
+
}, _SessionToolRunner_sendResult = async function _SessionToolRunner_sendResult(result, toolUseId) {
|
|
377
|
+
const ctrl = tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_controller, "f");
|
|
378
|
+
let lastErr;
|
|
379
|
+
for (let i = 0; i < SEND_RETRIES; i++) {
|
|
380
|
+
// An abort throws to unwind the caller rather than returning a
|
|
381
|
+
// `posted: false` result the iterator would carry on past.
|
|
382
|
+
ctrl.signal.throwIfAborted();
|
|
383
|
+
try {
|
|
384
|
+
await this.client.beta.sessions.events.send(this.sessionId, { events: [result] }, tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_instances, "m", _SessionToolRunner_requestOptions).call(this));
|
|
385
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_answered, "f").add(toolUseId);
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
lastErr = e;
|
|
390
|
+
// Only short-circuit on a permanent 4xx; 408/409/429 deserve the
|
|
391
|
+
// remaining retries (aligned with the core client's retry policy).
|
|
392
|
+
if ((0, backoff_1.isFatal4xx)(e))
|
|
393
|
+
break;
|
|
394
|
+
// Back off only *between* attempts — never after the final one, since
|
|
395
|
+
// there is no further try left to wait for.
|
|
396
|
+
if (i < SEND_RETRIES - 1)
|
|
397
|
+
await (0, sleep_1.sleep)((i + 1) * 1000, ctrl.signal);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").error('failed to send tool result', {
|
|
401
|
+
tool_use_id: toolUseId,
|
|
402
|
+
error: String(lastErr),
|
|
403
|
+
});
|
|
404
|
+
return false;
|
|
405
|
+
}, _SessionToolRunner_drain =
|
|
406
|
+
/** Wait (bounded) for in-flight tool executions to finish during teardown. */
|
|
407
|
+
async function _SessionToolRunner_drain() {
|
|
408
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_inFlightCount, "f") === 0)
|
|
409
|
+
return;
|
|
410
|
+
await Promise.race([new Promise((r) => (tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_onIdle, r, "f"))), (0, sleep_1.sleep)(DRAIN_TIMEOUT_MS)]);
|
|
411
|
+
tslib_1.__classPrivateFieldSet(this, _SessionToolRunner_onIdle, null, "f");
|
|
412
|
+
if (tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_inFlightCount, "f") > 0) {
|
|
413
|
+
tslib_1.__classPrivateFieldGet(this, _SessionToolRunner_logger, "f").warn('drain timeout exceeded');
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
/**
|
|
417
|
+
* Build the result event that answers `ev`: a `user.tool_result` for a builtin
|
|
418
|
+
* `agent.tool_use`, a `user.custom_tool_result` for a custom
|
|
419
|
+
* `agent.custom_tool_use`. The two `(use, result)` pairs are distinct API event
|
|
420
|
+
* types and must be matched exactly — a `user.tool_result` does not answer a
|
|
421
|
+
* custom tool call.
|
|
422
|
+
*/
|
|
423
|
+
function buildResultEvent(ev, isError, content) {
|
|
424
|
+
if (ev.type === 'agent.custom_tool_use') {
|
|
425
|
+
return { type: 'user.custom_tool_result', custom_tool_use_id: ev.id, is_error: isError, content };
|
|
426
|
+
}
|
|
427
|
+
return { type: 'user.tool_result', tool_use_id: ev.id, is_error: isError, content };
|
|
428
|
+
}
|
|
429
|
+
// The Messages-API tool-result block union is wider than the Sessions-API
|
|
430
|
+
// tool_result content union; pass through text/image/document and stringify
|
|
431
|
+
// anything else so a BetaRunnableTool authored for toolRunner still works here.
|
|
432
|
+
function toSessionContent(content) {
|
|
433
|
+
if (typeof content === 'string')
|
|
434
|
+
return [{ type: 'text', text: content || '(no output)' }];
|
|
435
|
+
const out = content.map((b) => {
|
|
436
|
+
if (b.type === 'text')
|
|
437
|
+
return { type: 'text', text: b.text || '(no output)' };
|
|
438
|
+
if (b.type === 'image' || b.type === 'document')
|
|
439
|
+
return b;
|
|
440
|
+
if (b.type === 'search_result') {
|
|
441
|
+
// The Messages `search_result` block param maps field-for-field onto the
|
|
442
|
+
// Sessions `BetaManagedAgentsSearchResultBlock`; map it explicitly rather
|
|
443
|
+
// than letting it fall through to the JSON.stringify branch (which would
|
|
444
|
+
// bury a structured result inside a text block). `citations` is required
|
|
445
|
+
// on the Sessions side and optional on the Messages side — default the
|
|
446
|
+
// flag to `false` when the producer left it unset.
|
|
447
|
+
return {
|
|
448
|
+
type: 'search_result',
|
|
449
|
+
source: b.source,
|
|
450
|
+
title: b.title,
|
|
451
|
+
content: b.content.map((c) => ({ type: 'text', text: c.text })),
|
|
452
|
+
citations: { enabled: b.citations?.enabled ?? false },
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
return { type: 'text', text: JSON.stringify(b) };
|
|
456
|
+
});
|
|
457
|
+
return out.length > 0 ? out : [{ type: 'text', text: '(no output)' }];
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=SessionToolRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionToolRunner.js","sourceRoot":"","sources":["../../src/lib/tools/SessionToolRunner.ts"],"names":[],"mappings":"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"}
|