@anthropic-ai/sdk 0.120.0 → 0.122.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 +62 -0
- package/README.md +1 -1
- package/core/middleware.d.mts.map +1 -1
- package/core/middleware.d.ts.map +1 -1
- package/core/middleware.js +4 -4
- package/core/middleware.js.map +1 -1
- package/core/middleware.mjs +4 -4
- package/core/middleware.mjs.map +1 -1
- package/helpers/beta/standard-schema.d.mts +45 -0
- package/helpers/beta/standard-schema.d.mts.map +1 -0
- package/helpers/beta/standard-schema.d.ts +45 -0
- package/helpers/beta/standard-schema.d.ts.map +1 -0
- package/helpers/beta/standard-schema.js +58 -0
- package/helpers/beta/standard-schema.js.map +1 -0
- package/helpers/beta/standard-schema.mjs +54 -0
- package/helpers/beta/standard-schema.mjs.map +1 -0
- package/internal/detect-platform.js +1 -1
- package/internal/detect-platform.js.map +1 -1
- package/internal/detect-platform.mjs +1 -1
- package/internal/detect-platform.mjs.map +1 -1
- package/internal/errors.d.mts.map +1 -1
- package/internal/errors.d.ts.map +1 -1
- package/internal/errors.js +3 -1
- package/internal/errors.js.map +1 -1
- package/internal/errors.mjs +3 -1
- package/internal/errors.mjs.map +1 -1
- package/internal/parse.js +1 -1
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +1 -1
- package/internal/parse.mjs.map +1 -1
- package/internal/uploads.js +10 -6
- package/internal/uploads.js.map +1 -1
- package/internal/uploads.mjs +10 -6
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/values.d.mts +6 -0
- package/internal/utils/values.d.mts.map +1 -1
- package/internal/utils/values.d.ts +6 -0
- package/internal/utils/values.d.ts.map +1 -1
- package/internal/utils/values.js +7 -0
- package/internal/utils/values.js.map +1 -1
- package/internal/utils/values.mjs +6 -0
- package/internal/utils/values.mjs.map +1 -1
- package/lib/BetaMessageStream.d.mts.map +1 -1
- package/lib/BetaMessageStream.d.ts.map +1 -1
- package/lib/BetaMessageStream.js +3 -4
- package/lib/BetaMessageStream.js.map +1 -1
- package/lib/BetaMessageStream.mjs +1 -2
- 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.js +3 -4
- package/lib/MessageStream.js.map +1 -1
- package/lib/MessageStream.mjs +1 -2
- package/lib/MessageStream.mjs.map +1 -1
- package/lib/sessions/accumulate.d.mts +3 -2
- package/lib/sessions/accumulate.d.mts.map +1 -1
- package/lib/sessions/accumulate.d.ts +3 -2
- package/lib/sessions/accumulate.d.ts.map +1 -1
- package/lib/sessions/accumulate.js +3 -46
- package/lib/sessions/accumulate.js.map +1 -1
- package/lib/sessions/accumulate.mjs +3 -46
- package/lib/sessions/accumulate.mjs.map +1 -1
- package/lib/standard-schema.d.mts +131 -0
- package/lib/standard-schema.d.mts.map +1 -0
- package/lib/standard-schema.d.ts +131 -0
- package/lib/standard-schema.d.ts.map +1 -0
- package/lib/standard-schema.js +45 -0
- package/lib/standard-schema.js.map +1 -0
- package/lib/standard-schema.mjs +41 -0
- package/lib/standard-schema.mjs.map +1 -0
- package/lib/tools/BetaToolRunner.d.mts.map +1 -1
- package/lib/tools/BetaToolRunner.d.ts.map +1 -1
- package/lib/tools/BetaToolRunner.js +35 -6
- package/lib/tools/BetaToolRunner.js.map +1 -1
- package/lib/tools/BetaToolRunner.mjs +35 -6
- package/lib/tools/BetaToolRunner.mjs.map +1 -1
- package/package.json +2 -11
- package/resources/beta/beta.d.mts +11 -7
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +11 -7
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js +4 -0
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs +4 -0
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/environments/environments.d.mts +8 -1
- package/resources/beta/environments/environments.d.mts.map +1 -1
- package/resources/beta/environments/environments.d.ts +8 -1
- package/resources/beta/environments/environments.d.ts.map +1 -1
- package/resources/beta/environments/environments.js.map +1 -1
- package/resources/beta/environments/environments.mjs.map +1 -1
- package/resources/beta/files.d.mts +25 -5
- package/resources/beta/files.d.mts.map +1 -1
- package/resources/beta/files.d.ts +25 -5
- package/resources/beta/files.d.ts.map +1 -1
- package/resources/beta/files.js +6 -6
- package/resources/beta/files.js.map +1 -1
- package/resources/beta/files.mjs +7 -7
- package/resources/beta/files.mjs.map +1 -1
- package/resources/beta/index.d.mts +4 -3
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +4 -3
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js +11 -9
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs +1 -0
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/memory-stores/memories.d.mts +6 -5
- package/resources/beta/memory-stores/memories.d.mts.map +1 -1
- package/resources/beta/memory-stores/memories.d.ts +6 -5
- package/resources/beta/memory-stores/memories.d.ts.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.mts +8 -5
- package/resources/beta/memory-stores/memory-versions.d.mts.map +1 -1
- package/resources/beta/memory-stores/memory-versions.d.ts +8 -5
- package/resources/beta/memory-stores/memory-versions.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/messages.d.mts +69 -27
- package/resources/beta/messages/messages.d.mts.map +1 -1
- package/resources/beta/messages/messages.d.ts +69 -27
- package/resources/beta/messages/messages.d.ts.map +1 -1
- package/resources/beta/messages/messages.js.map +1 -1
- package/resources/beta/messages/messages.mjs.map +1 -1
- package/resources/beta/organization/api-keys.d.mts +177 -0
- package/resources/beta/organization/api-keys.d.mts.map +1 -0
- package/resources/beta/organization/api-keys.d.ts +177 -0
- package/resources/beta/organization/api-keys.d.ts.map +1 -0
- package/resources/beta/organization/api-keys.js +56 -0
- package/resources/beta/organization/api-keys.js.map +1 -0
- package/resources/beta/organization/api-keys.mjs +52 -0
- package/resources/beta/organization/api-keys.mjs.map +1 -0
- package/resources/beta/organization/external-keys.d.mts +269 -0
- package/resources/beta/organization/external-keys.d.mts.map +1 -0
- package/resources/beta/organization/external-keys.d.ts +269 -0
- package/resources/beta/organization/external-keys.d.ts.map +1 -0
- package/resources/beta/organization/external-keys.js +119 -0
- package/resources/beta/organization/external-keys.js.map +1 -0
- package/resources/beta/organization/external-keys.mjs +115 -0
- package/resources/beta/organization/external-keys.mjs.map +1 -0
- package/resources/beta/organization/federation/federation.d.mts +14 -0
- package/resources/beta/organization/federation/federation.d.mts.map +1 -0
- package/resources/beta/organization/federation/federation.d.ts +14 -0
- package/resources/beta/organization/federation/federation.d.ts.map +1 -0
- package/resources/beta/organization/federation/federation.js +21 -0
- package/resources/beta/organization/federation/federation.js.map +1 -0
- package/resources/beta/organization/federation/federation.mjs +16 -0
- package/resources/beta/organization/federation/federation.mjs.map +1 -0
- package/resources/beta/organization/federation/index.d.mts +4 -0
- package/resources/beta/organization/federation/index.d.mts.map +1 -0
- package/resources/beta/organization/federation/index.d.ts +4 -0
- package/resources/beta/organization/federation/index.d.ts.map +1 -0
- package/resources/beta/organization/federation/index.js +11 -0
- package/resources/beta/organization/federation/index.js.map +1 -0
- package/resources/beta/organization/federation/index.mjs +5 -0
- package/resources/beta/organization/federation/index.mjs.map +1 -0
- package/resources/beta/organization/federation/issuers.d.mts +353 -0
- package/resources/beta/organization/federation/issuers.d.mts.map +1 -0
- package/resources/beta/organization/federation/issuers.d.ts +353 -0
- package/resources/beta/organization/federation/issuers.d.ts.map +1 -0
- package/resources/beta/organization/federation/issuers.js +169 -0
- package/resources/beta/organization/federation/issuers.js.map +1 -0
- package/resources/beta/organization/federation/issuers.mjs +165 -0
- package/resources/beta/organization/federation/issuers.mjs.map +1 -0
- package/resources/beta/organization/federation/rules/index.d.mts +3 -0
- package/resources/beta/organization/federation/rules/index.d.mts.map +1 -0
- package/resources/beta/organization/federation/rules/index.d.ts +3 -0
- package/resources/beta/organization/federation/rules/index.d.ts.map +1 -0
- package/resources/beta/organization/federation/rules/index.js +9 -0
- package/resources/beta/organization/federation/rules/index.js.map +1 -0
- package/resources/beta/organization/federation/rules/index.mjs +4 -0
- package/resources/beta/organization/federation/rules/index.mjs.map +1 -0
- package/resources/beta/organization/federation/rules/rules.d.mts +468 -0
- package/resources/beta/organization/federation/rules/rules.d.mts.map +1 -0
- package/resources/beta/organization/federation/rules/rules.d.ts +468 -0
- package/resources/beta/organization/federation/rules/rules.d.ts.map +1 -0
- package/resources/beta/organization/federation/rules/rules.js +198 -0
- package/resources/beta/organization/federation/rules/rules.js.map +1 -0
- package/resources/beta/organization/federation/rules/rules.mjs +193 -0
- package/resources/beta/organization/federation/rules/rules.mjs.map +1 -0
- package/resources/beta/organization/federation/rules/workspaces.d.mts +124 -0
- package/resources/beta/organization/federation/rules/workspaces.d.mts.map +1 -0
- package/resources/beta/organization/federation/rules/workspaces.d.ts +124 -0
- package/resources/beta/organization/federation/rules/workspaces.d.ts.map +1 -0
- package/resources/beta/organization/federation/rules/workspaces.js +114 -0
- package/resources/beta/organization/federation/rules/workspaces.js.map +1 -0
- package/resources/beta/organization/federation/rules/workspaces.mjs +110 -0
- package/resources/beta/organization/federation/rules/workspaces.mjs.map +1 -0
- package/resources/beta/organization/federation/rules.d.mts +2 -0
- package/resources/beta/organization/federation/rules.d.mts.map +1 -0
- package/resources/beta/organization/federation/rules.d.ts +2 -0
- package/resources/beta/organization/federation/rules.d.ts.map +1 -0
- package/resources/beta/organization/federation/rules.js +6 -0
- package/resources/beta/organization/federation/rules.js.map +1 -0
- package/resources/beta/organization/federation/rules.mjs +3 -0
- package/resources/beta/organization/federation/rules.mjs.map +1 -0
- package/resources/beta/organization/federation.d.mts +2 -0
- package/resources/beta/organization/federation.d.mts.map +1 -0
- package/resources/beta/organization/federation.d.ts +2 -0
- package/resources/beta/organization/federation.d.ts.map +1 -0
- package/resources/beta/organization/federation.js +6 -0
- package/resources/beta/organization/federation.js.map +1 -0
- package/resources/beta/organization/federation.mjs +3 -0
- package/resources/beta/organization/federation.mjs.map +1 -0
- package/resources/beta/organization/index.d.mts +10 -0
- package/resources/beta/organization/index.d.mts.map +1 -0
- package/resources/beta/organization/index.d.ts +10 -0
- package/resources/beta/organization/index.d.ts.map +1 -0
- package/resources/beta/organization/index.js +23 -0
- package/resources/beta/organization/index.js.map +1 -0
- package/resources/beta/organization/index.mjs +11 -0
- package/resources/beta/organization/index.mjs.map +1 -0
- package/resources/beta/organization/invites.d.mts +162 -0
- package/resources/beta/organization/invites.d.mts.map +1 -0
- package/resources/beta/organization/invites.d.ts +162 -0
- package/resources/beta/organization/invites.d.ts.map +1 -0
- package/resources/beta/organization/invites.js +76 -0
- package/resources/beta/organization/invites.js.map +1 -0
- package/resources/beta/organization/invites.mjs +72 -0
- package/resources/beta/organization/invites.mjs.map +1 -0
- package/resources/beta/organization/organization.d.mts +69 -0
- package/resources/beta/organization/organization.d.mts.map +1 -0
- package/resources/beta/organization/organization.d.ts +69 -0
- package/resources/beta/organization/organization.d.ts.map +1 -0
- package/resources/beta/organization/organization.js +58 -0
- package/resources/beta/organization/organization.js.map +1 -0
- package/resources/beta/organization/organization.mjs +53 -0
- package/resources/beta/organization/organization.mjs.map +1 -0
- package/resources/beta/organization/rate-limits.d.mts +77 -0
- package/resources/beta/organization/rate-limits.d.mts.map +1 -0
- package/resources/beta/organization/rate-limits.d.ts +77 -0
- package/resources/beta/organization/rate-limits.d.ts.map +1 -0
- package/resources/beta/organization/rate-limits.js +31 -0
- package/resources/beta/organization/rate-limits.js.map +1 -0
- package/resources/beta/organization/rate-limits.mjs +27 -0
- package/resources/beta/organization/rate-limits.mjs.map +1 -0
- package/resources/beta/organization/service-accounts/index.d.mts +3 -0
- package/resources/beta/organization/service-accounts/index.d.mts.map +1 -0
- package/resources/beta/organization/service-accounts/index.d.ts +3 -0
- package/resources/beta/organization/service-accounts/index.d.ts.map +1 -0
- package/resources/beta/organization/service-accounts/index.js +9 -0
- package/resources/beta/organization/service-accounts/index.js.map +1 -0
- package/resources/beta/organization/service-accounts/index.mjs +4 -0
- package/resources/beta/organization/service-accounts/index.mjs.map +1 -0
- package/resources/beta/organization/service-accounts/service-accounts.d.mts +258 -0
- package/resources/beta/organization/service-accounts/service-accounts.d.mts.map +1 -0
- package/resources/beta/organization/service-accounts/service-accounts.d.ts +258 -0
- package/resources/beta/organization/service-accounts/service-accounts.d.ts.map +1 -0
- package/resources/beta/organization/service-accounts/service-accounts.js +174 -0
- package/resources/beta/organization/service-accounts/service-accounts.js.map +1 -0
- package/resources/beta/organization/service-accounts/service-accounts.mjs +169 -0
- package/resources/beta/organization/service-accounts/service-accounts.mjs.map +1 -0
- package/resources/beta/organization/service-accounts/workspaces.d.mts +141 -0
- package/resources/beta/organization/service-accounts/workspaces.d.mts.map +1 -0
- package/resources/beta/organization/service-accounts/workspaces.d.ts +141 -0
- package/resources/beta/organization/service-accounts/workspaces.d.ts.map +1 -0
- package/resources/beta/organization/service-accounts/workspaces.js +125 -0
- package/resources/beta/organization/service-accounts/workspaces.js.map +1 -0
- package/resources/beta/organization/service-accounts/workspaces.mjs +121 -0
- package/resources/beta/organization/service-accounts/workspaces.mjs.map +1 -0
- package/resources/beta/organization/service-accounts.d.mts +2 -0
- package/resources/beta/organization/service-accounts.d.mts.map +1 -0
- package/resources/beta/organization/service-accounts.d.ts +2 -0
- package/resources/beta/organization/service-accounts.d.ts.map +1 -0
- package/resources/beta/organization/service-accounts.js +6 -0
- package/resources/beta/organization/service-accounts.js.map +1 -0
- package/resources/beta/organization/service-accounts.mjs +3 -0
- package/resources/beta/organization/service-accounts.mjs.map +1 -0
- package/resources/beta/organization/users.d.mts +124 -0
- package/resources/beta/organization/users.d.mts.map +1 -0
- package/resources/beta/organization/users.d.ts +124 -0
- package/resources/beta/organization/users.d.ts.map +1 -0
- package/resources/beta/organization/users.js +67 -0
- package/resources/beta/organization/users.js.map +1 -0
- package/resources/beta/organization/users.mjs +63 -0
- package/resources/beta/organization/users.mjs.map +1 -0
- package/resources/beta/organization/workspaces/index.d.mts +5 -0
- package/resources/beta/organization/workspaces/index.d.mts.map +1 -0
- package/resources/beta/organization/workspaces/index.d.ts +5 -0
- package/resources/beta/organization/workspaces/index.d.ts.map +1 -0
- package/resources/beta/organization/workspaces/index.js +13 -0
- package/resources/beta/organization/workspaces/index.js.map +1 -0
- package/resources/beta/organization/workspaces/index.mjs +6 -0
- package/resources/beta/organization/workspaces/index.mjs.map +1 -0
- package/resources/beta/organization/workspaces/members.d.mts +135 -0
- package/resources/beta/organization/workspaces/members.d.mts.map +1 -0
- package/resources/beta/organization/workspaces/members.d.ts +135 -0
- package/resources/beta/organization/workspaces/members.d.ts.map +1 -0
- package/resources/beta/organization/workspaces/members.js +102 -0
- package/resources/beta/organization/workspaces/members.js.map +1 -0
- package/resources/beta/organization/workspaces/members.mjs +98 -0
- package/resources/beta/organization/workspaces/members.mjs.map +1 -0
- package/resources/beta/organization/workspaces/rate-limits.d.mts +83 -0
- package/resources/beta/organization/workspaces/rate-limits.d.mts.map +1 -0
- package/resources/beta/organization/workspaces/rate-limits.d.ts +83 -0
- package/resources/beta/organization/workspaces/rate-limits.d.ts.map +1 -0
- package/resources/beta/organization/workspaces/rate-limits.js +34 -0
- package/resources/beta/organization/workspaces/rate-limits.js.map +1 -0
- package/resources/beta/organization/workspaces/rate-limits.mjs +30 -0
- package/resources/beta/organization/workspaces/rate-limits.mjs.map +1 -0
- package/resources/beta/organization/workspaces/service-accounts.d.mts +210 -0
- package/resources/beta/organization/workspaces/service-accounts.d.mts.map +1 -0
- package/resources/beta/organization/workspaces/service-accounts.d.ts +210 -0
- package/resources/beta/organization/workspaces/service-accounts.d.ts.map +1 -0
- package/resources/beta/organization/workspaces/service-accounts.js +189 -0
- package/resources/beta/organization/workspaces/service-accounts.js.map +1 -0
- package/resources/beta/organization/workspaces/service-accounts.mjs +185 -0
- package/resources/beta/organization/workspaces/service-accounts.mjs.map +1 -0
- package/resources/beta/organization/workspaces/workspaces.d.mts +287 -0
- package/resources/beta/organization/workspaces/workspaces.d.mts.map +1 -0
- package/resources/beta/organization/workspaces/workspaces.d.ts +287 -0
- package/resources/beta/organization/workspaces/workspaces.d.ts.map +1 -0
- package/resources/beta/organization/workspaces/workspaces.js +112 -0
- package/resources/beta/organization/workspaces/workspaces.js.map +1 -0
- package/resources/beta/organization/workspaces/workspaces.mjs +107 -0
- package/resources/beta/organization/workspaces/workspaces.mjs.map +1 -0
- package/resources/beta/organization/workspaces.d.mts +2 -0
- package/resources/beta/organization/workspaces.d.mts.map +1 -0
- package/resources/beta/organization/workspaces.d.ts +2 -0
- package/resources/beta/organization/workspaces.d.ts.map +1 -0
- package/resources/beta/organization/workspaces.js +6 -0
- package/resources/beta/organization/workspaces.js.map +1 -0
- package/resources/beta/organization/workspaces.mjs +3 -0
- package/resources/beta/organization/workspaces.mjs.map +1 -0
- package/resources/beta/organization.d.mts +2 -0
- package/resources/beta/organization.d.mts.map +1 -0
- package/resources/beta/organization.d.ts +2 -0
- package/resources/beta/organization.d.ts.map +1 -0
- package/resources/beta/organization.js +6 -0
- package/resources/beta/organization.js.map +1 -0
- package/resources/beta/organization.mjs +3 -0
- package/resources/beta/organization.mjs.map +1 -0
- package/resources/beta/sessions/threads/threads.d.mts +2 -1
- package/resources/beta/sessions/threads/threads.d.mts.map +1 -1
- package/resources/beta/sessions/threads/threads.d.ts +2 -1
- 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/skills/index.d.mts +2 -2
- package/resources/beta/skills/index.d.mts.map +1 -1
- package/resources/beta/skills/index.d.ts +2 -2
- 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 +48 -120
- package/resources/beta/skills/skills.d.mts.map +1 -1
- package/resources/beta/skills/skills.d.ts +48 -120
- package/resources/beta/skills/skills.d.ts.map +1 -1
- package/resources/beta/skills/skills.js +12 -8
- package/resources/beta/skills/skills.js.map +1 -1
- package/resources/beta/skills/skills.mjs +12 -8
- package/resources/beta/skills/skills.mjs.map +1 -1
- package/resources/beta/skills/versions.d.mts +35 -138
- package/resources/beta/skills/versions.d.mts.map +1 -1
- package/resources/beta/skills/versions.d.ts +35 -138
- package/resources/beta/skills/versions.d.ts.map +1 -1
- package/resources/beta/skills/versions.js +18 -18
- package/resources/beta/skills/versions.js.map +1 -1
- package/resources/beta/skills/versions.mjs +18 -18
- package/resources/beta/skills/versions.mjs.map +1 -1
- package/resources/beta/webhooks.d.mts +16 -17
- package/resources/beta/webhooks.d.mts.map +1 -1
- package/resources/beta/webhooks.d.ts +16 -17
- package/resources/beta/webhooks.d.ts.map +1 -1
- package/resources/beta/webhooks.js +21 -8
- package/resources/beta/webhooks.js.map +1 -1
- package/resources/beta/webhooks.mjs +21 -8
- package/resources/beta/webhooks.mjs.map +1 -1
- package/src/core/middleware.ts +4 -3
- package/src/helpers/beta/standard-schema.ts +99 -0
- package/src/internal/detect-platform.ts +1 -1
- package/src/internal/errors.ts +3 -1
- package/src/internal/parse.ts +1 -1
- package/src/internal/uploads.ts +10 -7
- package/src/internal/utils/values.ts +7 -0
- package/src/lib/BetaMessageStream.ts +1 -3
- package/src/lib/MessageStream.ts +1 -3
- package/src/lib/sessions/accumulate.ts +7 -49
- package/src/lib/standard-schema.ts +209 -0
- package/src/lib/tools/BetaToolRunner.ts +38 -6
- package/src/resources/beta/beta.ts +30 -15
- package/src/resources/beta/environments/environments.ts +8 -1
- package/src/resources/beta/files.ts +34 -11
- package/src/resources/beta/index.ts +7 -7
- package/src/resources/beta/memory-stores/memories.ts +6 -5
- package/src/resources/beta/memory-stores/memory-versions.ts +8 -5
- package/src/resources/beta/messages/index.ts +1 -1
- package/src/resources/beta/messages/messages.ts +72 -30
- package/src/resources/beta/organization/api-keys.ts +231 -0
- package/src/resources/beta/organization/external-keys.ts +362 -0
- package/src/resources/beta/organization/federation/federation.ts +71 -0
- package/src/resources/beta/organization/federation/index.ts +31 -0
- package/src/resources/beta/organization/federation/issuers.ts +486 -0
- package/src/resources/beta/organization/federation/rules/index.ts +23 -0
- package/src/resources/beta/organization/federation/rules/rules.ts +624 -0
- package/src/resources/beta/organization/federation/rules/workspaces.ts +196 -0
- package/src/resources/beta/organization/federation/rules.ts +3 -0
- package/src/resources/beta/organization/federation.ts +3 -0
- package/src/resources/beta/organization/index.ts +83 -0
- package/src/resources/beta/organization/invites.ts +207 -0
- package/src/resources/beta/organization/organization.ts +245 -0
- package/src/resources/beta/organization/rate-limits.ts +104 -0
- package/src/resources/beta/organization/service-accounts/index.ts +21 -0
- package/src/resources/beta/organization/service-accounts/service-accounts.ts +389 -0
- package/src/resources/beta/organization/service-accounts/workspaces.ts +217 -0
- package/src/resources/beta/organization/service-accounts.ts +3 -0
- package/src/resources/beta/organization/users.ts +163 -0
- package/src/resources/beta/organization/workspaces/index.ts +43 -0
- package/src/resources/beta/organization/workspaces/members.ts +209 -0
- package/src/resources/beta/organization/workspaces/rate-limits.ts +113 -0
- package/src/resources/beta/organization/workspaces/service-accounts.ts +325 -0
- package/src/resources/beta/organization/workspaces/workspaces.ts +434 -0
- package/src/resources/beta/organization/workspaces.ts +3 -0
- package/src/resources/beta/organization.ts +3 -0
- package/src/resources/beta/sessions/threads/threads.ts +2 -1
- package/src/resources/beta/skills/index.ts +7 -10
- package/src/resources/beta/skills/skills.ts +60 -150
- package/src/resources/beta/skills/versions.ts +43 -166
- package/src/resources/beta/webhooks.ts +25 -29
- package/src/tools/agent-toolset/node.browser.ts +1 -5
- package/src/tools/agent-toolset/node.ts +122 -17
- package/src/tools/agent-toolset/skills.ts +5 -33
- package/src/version.ts +1 -1
- package/tools/agent-toolset/node.browser.d.mts +1 -2
- package/tools/agent-toolset/node.browser.d.mts.map +1 -1
- package/tools/agent-toolset/node.browser.d.ts +1 -2
- package/tools/agent-toolset/node.browser.d.ts.map +1 -1
- package/tools/agent-toolset/node.browser.js +0 -4
- package/tools/agent-toolset/node.browser.js.map +1 -1
- package/tools/agent-toolset/node.browser.mjs +0 -3
- package/tools/agent-toolset/node.browser.mjs.map +1 -1
- package/tools/agent-toolset/node.d.mts +11 -9
- package/tools/agent-toolset/node.d.mts.map +1 -1
- package/tools/agent-toolset/node.d.ts +11 -9
- package/tools/agent-toolset/node.d.ts.map +1 -1
- package/tools/agent-toolset/node.js +96 -8
- package/tools/agent-toolset/node.js.map +1 -1
- package/tools/agent-toolset/node.mjs +96 -7
- package/tools/agent-toolset/node.mjs.map +1 -1
- package/tools/agent-toolset/skills.d.mts +0 -8
- package/tools/agent-toolset/skills.d.mts.map +1 -1
- package/tools/agent-toolset/skills.d.ts +0 -8
- package/tools/agent-toolset/skills.d.ts.map +1 -1
- package/tools/agent-toolset/skills.js +5 -25
- package/tools/agent-toolset/skills.js.map +1 -1
- package/tools/agent-toolset/skills.mjs +5 -24
- package/tools/agent-toolset/skills.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
|
@@ -16,17 +16,17 @@ export class Versions extends APIResource {
|
|
|
16
16
|
*
|
|
17
17
|
* @example
|
|
18
18
|
* ```ts
|
|
19
|
-
* const
|
|
20
|
-
* 'skill_id',
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* const betaSkillVersion =
|
|
20
|
+
* await client.beta.skills.versions.create('skill_id', {
|
|
21
|
+
* files: [fs.createReadStream('path/to/file')],
|
|
22
|
+
* });
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
create(
|
|
26
26
|
skillID: string,
|
|
27
27
|
params: VersionCreateParams,
|
|
28
28
|
options?: RequestOptions,
|
|
29
|
-
): APIPromise<
|
|
29
|
+
): APIPromise<BetaSkillVersion> {
|
|
30
30
|
const { betas, ...body } = params;
|
|
31
31
|
return this._client.post(
|
|
32
32
|
path`/v1/skills/${skillID}/versions?beta=true`,
|
|
@@ -35,7 +35,7 @@ export class Versions extends APIResource {
|
|
|
35
35
|
body,
|
|
36
36
|
...options,
|
|
37
37
|
headers: buildHeaders([
|
|
38
|
-
{
|
|
38
|
+
{ ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },
|
|
39
39
|
options?.headers,
|
|
40
40
|
]),
|
|
41
41
|
},
|
|
@@ -50,22 +50,22 @@ export class Versions extends APIResource {
|
|
|
50
50
|
*
|
|
51
51
|
* @example
|
|
52
52
|
* ```ts
|
|
53
|
-
* const
|
|
54
|
-
* 'version',
|
|
55
|
-
*
|
|
56
|
-
*
|
|
53
|
+
* const betaSkillVersion =
|
|
54
|
+
* await client.beta.skills.versions.retrieve('version', {
|
|
55
|
+
* skill_id: 'skill_id',
|
|
56
|
+
* });
|
|
57
57
|
* ```
|
|
58
58
|
*/
|
|
59
59
|
retrieve(
|
|
60
60
|
version: string,
|
|
61
61
|
params: VersionRetrieveParams,
|
|
62
62
|
options?: RequestOptions,
|
|
63
|
-
): APIPromise<
|
|
63
|
+
): APIPromise<BetaSkillVersion> {
|
|
64
64
|
const { skill_id, betas } = params;
|
|
65
65
|
return this._client.get(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {
|
|
66
66
|
...options,
|
|
67
67
|
headers: buildHeaders([
|
|
68
|
-
{
|
|
68
|
+
{ ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },
|
|
69
69
|
options?.headers,
|
|
70
70
|
]),
|
|
71
71
|
});
|
|
@@ -77,7 +77,7 @@ export class Versions extends APIResource {
|
|
|
77
77
|
* @example
|
|
78
78
|
* ```ts
|
|
79
79
|
* // Automatically fetches more pages as needed.
|
|
80
|
-
* for await (const
|
|
80
|
+
* for await (const betaSkillVersion of client.beta.skills.versions.list(
|
|
81
81
|
* 'skill_id',
|
|
82
82
|
* )) {
|
|
83
83
|
* // ...
|
|
@@ -88,16 +88,16 @@ export class Versions extends APIResource {
|
|
|
88
88
|
skillID: string,
|
|
89
89
|
params: VersionListParams | null | undefined = {},
|
|
90
90
|
options?: RequestOptions,
|
|
91
|
-
): PagePromise<
|
|
91
|
+
): PagePromise<BetaSkillVersionsPageCursor, BetaSkillVersion> {
|
|
92
92
|
const { betas, ...query } = params ?? {};
|
|
93
93
|
return this._client.getAPIList(
|
|
94
94
|
path`/v1/skills/${skillID}/versions?beta=true`,
|
|
95
|
-
PageCursor<
|
|
95
|
+
PageCursor<BetaSkillVersion>,
|
|
96
96
|
{
|
|
97
97
|
query,
|
|
98
98
|
...options,
|
|
99
99
|
headers: buildHeaders([
|
|
100
|
-
{
|
|
100
|
+
{ ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },
|
|
101
101
|
options?.headers,
|
|
102
102
|
]),
|
|
103
103
|
},
|
|
@@ -109,22 +109,22 @@ export class Versions extends APIResource {
|
|
|
109
109
|
*
|
|
110
110
|
* @example
|
|
111
111
|
* ```ts
|
|
112
|
-
* const
|
|
113
|
-
* 'version',
|
|
114
|
-
*
|
|
115
|
-
*
|
|
112
|
+
* const betaDeletedSkillVersion =
|
|
113
|
+
* await client.beta.skills.versions.delete('version', {
|
|
114
|
+
* skill_id: 'skill_id',
|
|
115
|
+
* });
|
|
116
116
|
* ```
|
|
117
117
|
*/
|
|
118
118
|
delete(
|
|
119
119
|
version: string,
|
|
120
120
|
params: VersionDeleteParams,
|
|
121
121
|
options?: RequestOptions,
|
|
122
|
-
): APIPromise<
|
|
122
|
+
): APIPromise<BetaDeletedSkillVersion> {
|
|
123
123
|
const { skill_id, betas } = params;
|
|
124
124
|
return this._client.delete(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {
|
|
125
125
|
...options,
|
|
126
126
|
headers: buildHeaders([
|
|
127
|
-
{
|
|
127
|
+
{ ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },
|
|
128
128
|
options?.headers,
|
|
129
129
|
]),
|
|
130
130
|
});
|
|
@@ -150,8 +150,8 @@ export class Versions extends APIResource {
|
|
|
150
150
|
...options,
|
|
151
151
|
headers: buildHeaders([
|
|
152
152
|
{
|
|
153
|
-
'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString(),
|
|
154
153
|
Accept: 'application/binary',
|
|
154
|
+
...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined),
|
|
155
155
|
},
|
|
156
156
|
options?.headers,
|
|
157
157
|
]),
|
|
@@ -160,72 +160,32 @@ export class Versions extends APIResource {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
export type
|
|
163
|
+
export type BetaSkillVersionsPageCursor = PageCursor<BetaSkillVersion>;
|
|
164
164
|
|
|
165
|
-
export interface
|
|
165
|
+
export interface BetaDeletedSkillVersion {
|
|
166
166
|
/**
|
|
167
|
-
* Unique identifier for the
|
|
168
|
-
*
|
|
169
|
-
* The format and length of IDs may change over time.
|
|
167
|
+
* Unique identifier for this Skill Version. The id addresses the version in paths
|
|
168
|
+
* and pins it in references.
|
|
170
169
|
*/
|
|
171
170
|
id: string;
|
|
172
171
|
|
|
173
172
|
/**
|
|
174
|
-
*
|
|
175
|
-
*/
|
|
176
|
-
created_at: string;
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Description of the skill version.
|
|
180
|
-
*
|
|
181
|
-
* This is extracted from the SKILL.md file in the skill upload.
|
|
182
|
-
*/
|
|
183
|
-
description: string;
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Directory name of the skill version.
|
|
187
|
-
*
|
|
188
|
-
* This is the top-level directory name that was extracted from the uploaded files.
|
|
189
|
-
*/
|
|
190
|
-
directory: string;
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Human-readable name of the skill version.
|
|
194
|
-
*
|
|
195
|
-
* This is extracted from the SKILL.md file in the skill upload.
|
|
196
|
-
*/
|
|
197
|
-
name: string;
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Identifier for the skill that this version belongs to.
|
|
201
|
-
*/
|
|
202
|
-
skill_id: string;
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Object type.
|
|
206
|
-
*
|
|
207
|
-
* For Skill Versions, this is always `"skill_version"`.
|
|
208
|
-
*/
|
|
209
|
-
type: string;
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Version identifier for the skill.
|
|
173
|
+
* Deleted object type.
|
|
213
174
|
*
|
|
214
|
-
*
|
|
175
|
+
* For Skill Versions, this is always `"skill_version_deleted"`.
|
|
215
176
|
*/
|
|
216
|
-
|
|
177
|
+
type: 'skill_version_deleted';
|
|
217
178
|
}
|
|
218
179
|
|
|
219
|
-
export interface
|
|
180
|
+
export interface BetaSkillVersion {
|
|
220
181
|
/**
|
|
221
|
-
* Unique identifier for the
|
|
222
|
-
*
|
|
223
|
-
* The format and length of IDs may change over time.
|
|
182
|
+
* Unique identifier for this Skill Version. The id addresses the version in paths
|
|
183
|
+
* and pins it in references.
|
|
224
184
|
*/
|
|
225
185
|
id: string;
|
|
226
186
|
|
|
227
187
|
/**
|
|
228
|
-
* ISO 8601 timestamp of when the skill
|
|
188
|
+
* ISO 8601 timestamp of when the skill was created.
|
|
229
189
|
*/
|
|
230
190
|
created_at: string;
|
|
231
191
|
|
|
@@ -237,76 +197,18 @@ export interface VersionRetrieveResponse {
|
|
|
237
197
|
description: string;
|
|
238
198
|
|
|
239
199
|
/**
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
|
|
244
|
-
directory: string;
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Human-readable name of the skill version.
|
|
248
|
-
*
|
|
249
|
-
* This is extracted from the SKILL.md file in the skill upload.
|
|
200
|
+
* The Skill's immutable kebab-case slug, set at creation from the first upload's
|
|
201
|
+
* SKILL.md frontmatter `name` (or its enclosing directory). Every later upload
|
|
202
|
+
* must resolve to the same value. Also the top-level directory of the Skill's
|
|
203
|
+
* mounted files and the base name of a downloaded archive.
|
|
250
204
|
*/
|
|
251
205
|
name: string;
|
|
252
206
|
|
|
253
207
|
/**
|
|
254
|
-
*
|
|
255
|
-
*/
|
|
256
|
-
skill_id: string;
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Object type.
|
|
260
|
-
*
|
|
261
|
-
* For Skill Versions, this is always `"skill_version"`.
|
|
262
|
-
*/
|
|
263
|
-
type: string;
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Version identifier for the skill.
|
|
267
|
-
*
|
|
268
|
-
* Each version is identified by a Unix epoch timestamp (e.g., "1759178010641129").
|
|
269
|
-
*/
|
|
270
|
-
version: string;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
export interface VersionListResponse {
|
|
274
|
-
/**
|
|
275
|
-
* Unique identifier for the skill version.
|
|
208
|
+
* Unique identifier for the skill.
|
|
276
209
|
*
|
|
277
210
|
* The format and length of IDs may change over time.
|
|
278
211
|
*/
|
|
279
|
-
id: string;
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* ISO 8601 timestamp of when the skill version was created.
|
|
283
|
-
*/
|
|
284
|
-
created_at: string;
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Description of the skill version.
|
|
288
|
-
*
|
|
289
|
-
* This is extracted from the SKILL.md file in the skill upload.
|
|
290
|
-
*/
|
|
291
|
-
description: string;
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Directory name of the skill version.
|
|
295
|
-
*
|
|
296
|
-
* This is the top-level directory name that was extracted from the uploaded files.
|
|
297
|
-
*/
|
|
298
|
-
directory: string;
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Human-readable name of the skill version.
|
|
302
|
-
*
|
|
303
|
-
* This is extracted from the SKILL.md file in the skill upload.
|
|
304
|
-
*/
|
|
305
|
-
name: string;
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Identifier for the skill that this version belongs to.
|
|
309
|
-
*/
|
|
310
212
|
skill_id: string;
|
|
311
213
|
|
|
312
214
|
/**
|
|
@@ -314,30 +216,7 @@ export interface VersionListResponse {
|
|
|
314
216
|
*
|
|
315
217
|
* For Skill Versions, this is always `"skill_version"`.
|
|
316
218
|
*/
|
|
317
|
-
type:
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Version identifier for the skill.
|
|
321
|
-
*
|
|
322
|
-
* Each version is identified by a Unix epoch timestamp (e.g., "1759178010641129").
|
|
323
|
-
*/
|
|
324
|
-
version: string;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
export interface VersionDeleteResponse {
|
|
328
|
-
/**
|
|
329
|
-
* Version identifier for the skill.
|
|
330
|
-
*
|
|
331
|
-
* Each version is identified by a Unix epoch timestamp (e.g., "1759178010641129").
|
|
332
|
-
*/
|
|
333
|
-
id: string;
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Deleted object type.
|
|
337
|
-
*
|
|
338
|
-
* For Skill Versions, this is always `"skill_version_deleted"`.
|
|
339
|
-
*/
|
|
340
|
-
type: string;
|
|
219
|
+
type: 'skill_version';
|
|
341
220
|
}
|
|
342
221
|
|
|
343
222
|
export interface VersionCreateParams {
|
|
@@ -406,11 +285,9 @@ export interface VersionDownloadParams {
|
|
|
406
285
|
|
|
407
286
|
export declare namespace Versions {
|
|
408
287
|
export {
|
|
409
|
-
type
|
|
410
|
-
type
|
|
411
|
-
type
|
|
412
|
-
type VersionDeleteResponse as VersionDeleteResponse,
|
|
413
|
-
type VersionListResponsesPageCursor as VersionListResponsesPageCursor,
|
|
288
|
+
type BetaDeletedSkillVersion as BetaDeletedSkillVersion,
|
|
289
|
+
type BetaSkillVersion as BetaSkillVersion,
|
|
290
|
+
type BetaSkillVersionsPageCursor as BetaSkillVersionsPageCursor,
|
|
414
291
|
type VersionCreateParams as VersionCreateParams,
|
|
415
292
|
type VersionRetrieveParams as VersionRetrieveParams,
|
|
416
293
|
type VersionListParams as VersionListParams,
|
|
@@ -4,17 +4,27 @@ import { APIResource } from '../../core/resource';
|
|
|
4
4
|
import { Webhook } from 'standardwebhooks';
|
|
5
5
|
|
|
6
6
|
export class Webhooks extends APIResource {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Parses a webhook payload into an event without verifying its signature. Prefer
|
|
9
|
+
* `unwrap()` unless you have already verified the signature yourself.
|
|
10
|
+
*/
|
|
11
|
+
parseUnverified(body: string): BetaWebhookEvent {
|
|
12
|
+
return JSON.parse(body) as BetaWebhookEvent;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Verifies the webhook signature from the `webhook-id`, `webhook-timestamp` and
|
|
17
|
+
* `webhook-signature` headers using your webhook signing key, then parses the
|
|
18
|
+
* payload into an event. Fails if the signature is missing or invalid.
|
|
19
|
+
*/
|
|
20
|
+
unwrap(body: string, options: { headers: Record<string, string>; key?: string }): BetaWebhookEvent {
|
|
21
|
+
const headers = options?.headers;
|
|
22
|
+
if (headers == null) throw new Error('Webhook headers are required in order to verify the signature');
|
|
23
|
+
const keyStr: string | null = options.key === undefined ? this._client.webhookKey : options.key;
|
|
24
|
+
if (!keyStr) throw new Error('Webhook key must not be null or empty in order to unwrap');
|
|
25
|
+
const wh = new Webhook(keyStr);
|
|
26
|
+
wh.verify(body, headers);
|
|
27
|
+
return JSON.parse(body) as BetaWebhookEvent;
|
|
18
28
|
}
|
|
19
29
|
}
|
|
20
30
|
|
|
@@ -690,24 +700,10 @@ export interface BetaWebhookVaultDeletedEventData {
|
|
|
690
700
|
workspace_id: string;
|
|
691
701
|
}
|
|
692
702
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
id: string;
|
|
698
|
-
|
|
699
|
-
/**
|
|
700
|
-
* RFC 3339 timestamp when the event occurred.
|
|
701
|
-
*/
|
|
702
|
-
created_at: string;
|
|
703
|
-
|
|
704
|
-
data: BetaWebhookEventData;
|
|
705
|
-
|
|
706
|
-
/**
|
|
707
|
-
* Object type. Always `event` for webhook payloads.
|
|
708
|
-
*/
|
|
709
|
-
type: 'event';
|
|
710
|
-
}
|
|
703
|
+
/**
|
|
704
|
+
* @deprecated UnwrapWebhookEvent has been renamed to BetaWebhookEvent
|
|
705
|
+
*/
|
|
706
|
+
export type UnwrapWebhookEvent = BetaWebhookEvent;
|
|
711
707
|
|
|
712
708
|
export declare namespace Webhooks {
|
|
713
709
|
export {
|
|
@@ -96,10 +96,6 @@ export function setupSkills(_ctx: AgentToolContext): Promise<() => Promise<void>
|
|
|
96
96
|
return nodeOnly('setupSkills');
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
export function resolveSkillVersion(_client: Anthropic, _skillId: string, _version: string): Promise<string> {
|
|
100
|
-
return nodeOnly('resolveSkillVersion');
|
|
101
|
-
}
|
|
102
|
-
|
|
103
99
|
export function extractSkillArchive(_resp: Response, _dest: string): Promise<void> {
|
|
104
100
|
return nodeOnly('extractSkillArchive');
|
|
105
101
|
}
|
|
@@ -127,7 +123,7 @@ export class BashTimeoutError extends AnthropicError {
|
|
|
127
123
|
}
|
|
128
124
|
|
|
129
125
|
export class BashSession {
|
|
130
|
-
constructor(_dir: string, _env?:
|
|
126
|
+
constructor(_dir: string, _env?: Record<string, string | undefined>) {
|
|
131
127
|
nodeOnly('BashSession');
|
|
132
128
|
}
|
|
133
129
|
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
isWithin,
|
|
53
53
|
} from './fs-util';
|
|
54
54
|
|
|
55
|
-
export { setupSkills,
|
|
55
|
+
export { setupSkills, extractSkillArchive } from './skills';
|
|
56
56
|
export {
|
|
57
57
|
SessionMemoryStores,
|
|
58
58
|
SessionMemoryError,
|
|
@@ -70,6 +70,8 @@ const BASH_DEFAULT_TIMEOUT_MS = 120_000;
|
|
|
70
70
|
// memory) when AgentToolContext.maxFileBytes is unset. The reject-vs-truncate
|
|
71
71
|
// behaviour remains a separate question pending CMA validation.
|
|
72
72
|
const DEFAULT_MAX_FILE_BYTES = 256 * 1024;
|
|
73
|
+
const READ_STREAM_CHUNK_BYTES = 64 * 1024;
|
|
74
|
+
const NEWLINE = Buffer.from('\n');
|
|
73
75
|
const GREP_OUTPUT_LIMIT = 100 * 1024;
|
|
74
76
|
const GREP_MAX_LINE_LENGTH = 2000;
|
|
75
77
|
const GLOB_RESULT_LIMIT = 200;
|
|
@@ -192,14 +194,16 @@ export interface AgentToolContext {
|
|
|
192
194
|
* to the scrubbed process environment. To keep the defaults plus extra vars,
|
|
193
195
|
* build the combined mapping yourself before passing it.
|
|
194
196
|
*/
|
|
195
|
-
env?:
|
|
197
|
+
env?: Record<string, string | undefined>;
|
|
196
198
|
/**
|
|
197
|
-
* Size cap for
|
|
198
|
-
* memory. `
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
199
|
+
* Size cap for a whole-file `read` and for `edit`, which both load the whole
|
|
200
|
+
* file into memory. A `read` with `view_range` on a larger file streams it and
|
|
201
|
+
* applies the cap to the selected lines instead. `undefined` (default) uses the
|
|
202
|
+
* built-in 256 KiB cap; a positive number sets a custom cap; `null` disables the
|
|
203
|
+
* cap entirely. Disabling it reintroduces the OOM risk on a model-controlled
|
|
204
|
+
* path, so pass `null` only when the sandbox can absorb arbitrarily large files.
|
|
205
|
+
* The non-regular-file (FIFO/device) guard always applies regardless of this
|
|
206
|
+
* value.
|
|
203
207
|
*/
|
|
204
208
|
maxFileBytes?: number | null;
|
|
205
209
|
}
|
|
@@ -282,8 +286,8 @@ function readOnlyRootFor(ctx: AgentToolContext, target: string): Promise<string
|
|
|
282
286
|
* environment verbatim; nothing here is merged in, so callers who want the
|
|
283
287
|
* scrubbed process environment plus extras must build that mapping themselves.
|
|
284
288
|
*/
|
|
285
|
-
function scrubbedShellEnv():
|
|
286
|
-
const env:
|
|
289
|
+
function scrubbedShellEnv(): Record<string, string | undefined> {
|
|
290
|
+
const env: Record<string, string | undefined> = {};
|
|
287
291
|
for (const [key, value] of Object.entries(process.env)) {
|
|
288
292
|
if (key.startsWith('ANTHROPIC_')) continue;
|
|
289
293
|
env[key] = value;
|
|
@@ -304,7 +308,7 @@ export class BashSession {
|
|
|
304
308
|
// in `#buf` (or once the shell dies). Event-driven: no polling loop.
|
|
305
309
|
#waiting: { sentinel: string; resolve: () => void } | null = null;
|
|
306
310
|
|
|
307
|
-
constructor(dir: string, env:
|
|
311
|
+
constructor(dir: string, env: Record<string, string | undefined> = scrubbedShellEnv()) {
|
|
308
312
|
this.#proc = cp.spawn('/bin/bash', ['--noprofile', '--norc'], {
|
|
309
313
|
cwd: dir,
|
|
310
314
|
// `env` is the full base environment (the scrubbed process env by
|
|
@@ -525,6 +529,9 @@ export function betaReadTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
|
525
529
|
run: async ({ file_path, view_range }) => {
|
|
526
530
|
if (!file_path) throw new ToolError('read: file_path is required');
|
|
527
531
|
const abs = await resolvePath(ctx, file_path);
|
|
532
|
+
if (view_range?.length && view_range.length !== 2) {
|
|
533
|
+
throw new ToolError('read: view_range must be [start_line, end_line]');
|
|
534
|
+
}
|
|
528
535
|
let data: string;
|
|
529
536
|
try {
|
|
530
537
|
// stat() before any open(): the size cap stops a multi-GB file from
|
|
@@ -536,10 +543,14 @@ export function betaReadTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
|
536
543
|
}
|
|
537
544
|
const limit = resolveMaxBytes(ctx.maxFileBytes);
|
|
538
545
|
if (limit !== null && st.size > limit) {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
546
|
+
if (!view_range?.length) {
|
|
547
|
+
throw new ToolError(
|
|
548
|
+
`read: ${file_path} is ${st.size} bytes, exceeds ${limit}-byte limit. ` +
|
|
549
|
+
'Use the view_range parameter to read specific line ranges, e.g. view_range: [1, 500].',
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
const [startLine, endLine] = view_range as [number, number];
|
|
553
|
+
return await readRangeStreaming(abs, file_path, startLine, endLine, limit);
|
|
543
554
|
}
|
|
544
555
|
data = await fs.readFile(abs, 'utf8');
|
|
545
556
|
} catch (e) {
|
|
@@ -547,7 +558,6 @@ export function betaReadTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
|
547
558
|
throw new ToolError(`read: ${fsErrorMessage(e, file_path)}`);
|
|
548
559
|
}
|
|
549
560
|
if (!view_range?.length) return data;
|
|
550
|
-
if (view_range.length !== 2) throw new ToolError('read: view_range must be [start_line, end_line]');
|
|
551
561
|
const [startLine, endLine] = view_range as [number, number];
|
|
552
562
|
const lines = data.split('\n');
|
|
553
563
|
const start = Math.max(0, startLine - 1);
|
|
@@ -557,6 +567,101 @@ export function betaReadTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
|
557
567
|
});
|
|
558
568
|
}
|
|
559
569
|
|
|
570
|
+
/** Returns lines `[startLine, endLine]` of the file at `abs`, capping the selected bytes at `limit`. */
|
|
571
|
+
async function readRangeStreaming(
|
|
572
|
+
abs: string,
|
|
573
|
+
filePath: string,
|
|
574
|
+
startLine: number,
|
|
575
|
+
endLine: number,
|
|
576
|
+
limit: number,
|
|
577
|
+
): Promise<string> {
|
|
578
|
+
const lines = new LineRangeCollector(filePath, startLine, endLine, limit);
|
|
579
|
+
if (lines.rangeIsEmpty()) return '';
|
|
580
|
+
// Byte chunks rather than readline: a single huge line must never be buffered
|
|
581
|
+
// whole, so memory stays bounded by `limit` plus one chunk.
|
|
582
|
+
const stream = fssync.createReadStream(abs, { highWaterMark: READ_STREAM_CHUNK_BYTES });
|
|
583
|
+
try {
|
|
584
|
+
for await (const chunk of stream as AsyncIterable<Buffer>) {
|
|
585
|
+
lines.collectFrom(chunk);
|
|
586
|
+
if (lines.rangeIsCollected()) break;
|
|
587
|
+
}
|
|
588
|
+
} finally {
|
|
589
|
+
stream.destroy();
|
|
590
|
+
}
|
|
591
|
+
return lines.text();
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/** Collects the bytes of lines `[startLine, endLine]` from consecutive file chunks, capped at `limit`. */
|
|
595
|
+
class LineRangeCollector {
|
|
596
|
+
readonly #filePath: string;
|
|
597
|
+
readonly #startLine: number;
|
|
598
|
+
readonly #endLine: number;
|
|
599
|
+
readonly #start: number;
|
|
600
|
+
readonly #end: number;
|
|
601
|
+
readonly #limit: number;
|
|
602
|
+
#line = 0;
|
|
603
|
+
#collected: Buffer[] = [];
|
|
604
|
+
#collectedBytes = 0;
|
|
605
|
+
|
|
606
|
+
constructor(filePath: string, startLine: number, endLine: number, limit: number) {
|
|
607
|
+
this.#filePath = filePath;
|
|
608
|
+
this.#startLine = startLine;
|
|
609
|
+
this.#endLine = endLine;
|
|
610
|
+
this.#start = Math.max(0, startLine - 1);
|
|
611
|
+
this.#end = endLine > 0 ? endLine : Infinity;
|
|
612
|
+
this.#limit = limit;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
rangeIsEmpty(): boolean {
|
|
616
|
+
return this.#end <= this.#start;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
rangeIsCollected(): boolean {
|
|
620
|
+
return this.#line >= this.#end;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
collectFrom(chunk: Buffer): void {
|
|
624
|
+
let lineStart = 0;
|
|
625
|
+
while (lineStart < chunk.length && !this.rangeIsCollected()) {
|
|
626
|
+
const newline = chunk.indexOf(0x0a, lineStart);
|
|
627
|
+
const lineEnd = newline < 0 ? chunk.length : newline;
|
|
628
|
+
if (this.#line >= this.#start) {
|
|
629
|
+
this.#collect(chunk.subarray(lineStart, lineEnd), newline >= 0);
|
|
630
|
+
}
|
|
631
|
+
if (newline < 0) break;
|
|
632
|
+
this.#line++;
|
|
633
|
+
lineStart = newline + 1;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
#collect(lineBytes: Buffer, newlineTerminated: boolean): void {
|
|
638
|
+
this.#collected.push(lineBytes);
|
|
639
|
+
this.#collectedBytes += lineBytes.length;
|
|
640
|
+
if (newlineTerminated && this.#line + 1 < this.#end) {
|
|
641
|
+
this.#collected.push(NEWLINE);
|
|
642
|
+
this.#collectedBytes += NEWLINE.length;
|
|
643
|
+
}
|
|
644
|
+
if (this.#collectedBytes > this.#limit) throw this.#overLimitError();
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
#overLimitError(): ToolError {
|
|
648
|
+
if (this.#end - this.#start === 1) {
|
|
649
|
+
return new ToolError(
|
|
650
|
+
`read: line ${this.#start + 1} of ${this.#filePath} alone exceeds ${this.#limit}-byte limit. ` +
|
|
651
|
+
'The read tool cannot return part of a line, so view_range cannot narrow this further.',
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
return new ToolError(
|
|
655
|
+
`read: view_range [${this.#startLine}, ${this.#endLine}] of ${this.#filePath} exceeds ${this.#limit}-byte limit. ` +
|
|
656
|
+
'Narrow the view_range to read a smaller portion.',
|
|
657
|
+
);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
text(): string {
|
|
661
|
+
return Buffer.concat(this.#collected, this.#collectedBytes).toString('utf8');
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
560
665
|
export function betaWriteTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
561
666
|
rejectUnrestrictedPaths(ctx.unrestrictedPaths);
|
|
562
667
|
return betaTool({
|
|
@@ -624,7 +729,7 @@ export function betaEditTool(ctx: AgentToolContext): BetaRunnableTool {
|
|
|
624
729
|
if (limit !== null && st.size > limit) {
|
|
625
730
|
throw new ToolError(
|
|
626
731
|
`edit: ${file_path} is ${st.size} bytes, exceeds ${limit}-byte limit. ` +
|
|
627
|
-
'
|
|
732
|
+
'The edit tool loads the whole file and cannot modify a file this large.',
|
|
628
733
|
);
|
|
629
734
|
}
|
|
630
735
|
data = await fs.readFile(abs, 'utf8');
|