@strands-agents/sdk 1.0.0-rc.5 → 1.1.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/LICENSE +175 -0
- package/README.md +340 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts +22 -1
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +45 -1
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-plugin.js +3 -1
- package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts +5 -2
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +23 -4
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/interrupt.test.d.ts +2 -0
- package/dist/src/__tests__/interrupt.test.d.ts.map +1 -0
- package/dist/src/__tests__/interrupt.test.js +259 -0
- package/dist/src/__tests__/interrupt.test.js.map +1 -0
- package/dist/src/__tests__/mcp.test.js +448 -2
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/a2a/__tests__/events.test.js +2 -0
- package/dist/src/a2a/__tests__/events.test.js.map +1 -1
- package/dist/src/a2a/__tests__/executor.test.js +16 -5
- package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
- package/dist/src/a2a/a2a-agent.d.ts +8 -3
- package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
- package/dist/src/a2a/a2a-agent.js +12 -6
- package/dist/src/a2a/a2a-agent.js.map +1 -1
- package/dist/src/a2a/executor.d.ts +13 -0
- package/dist/src/a2a/executor.d.ts.map +1 -1
- package/dist/src/a2a/executor.js +19 -1
- package/dist/src/a2a/executor.js.map +1 -1
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
- package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
- package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
- package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.hook.test.js +724 -12
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.js +730 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
- package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.js +161 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
- package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.test.js +217 -2
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
- package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.js +51 -4
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
- package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
- package/dist/src/agent/agent-as-tool.js +4 -2
- package/dist/src/agent/agent-as-tool.js.map +1 -1
- package/dist/src/agent/agent.d.ts +109 -4
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +790 -224
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts +2 -2
- package/dist/src/agent/snapshot.d.ts.map +1 -1
- package/dist/src/agent/snapshot.js +20 -2
- package/dist/src/agent/snapshot.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +230 -9
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +19 -6
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +58 -4
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +76 -1
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/conversation-manager.d.ts +67 -22
- package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/conversation-manager.js +65 -13
- package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
- package/dist/src/conversation-manager/index.d.ts +1 -1
- package/dist/src/conversation-manager/index.d.ts.map +1 -1
- package/dist/src/conversation-manager/index.js +1 -1
- package/dist/src/conversation-manager/index.js.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +17 -3
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +10 -4
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +23 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.js +39 -17
- package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
- package/dist/src/errors.d.ts +11 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +12 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +267 -73
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/__tests__/registry.test.js +182 -18
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +193 -51
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +182 -26
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +3 -2
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/registry.d.ts +12 -12
- package/dist/src/hooks/registry.d.ts.map +1 -1
- package/dist/src/hooks/registry.js +55 -15
- package/dist/src/hooks/registry.js.map +1 -1
- package/dist/src/hooks/types.d.ts +23 -0
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/hooks/types.js +17 -1
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/index.d.ts +12 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interrupt.d.ts +220 -0
- package/dist/src/interrupt.d.ts.map +1 -0
- package/dist/src/interrupt.js +274 -0
- package/dist/src/interrupt.js.map +1 -0
- package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
- package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
- package/dist/src/logging/__tests__/warn-once.test.js +30 -0
- package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
- package/dist/src/logging/warn-once.d.ts +13 -0
- package/dist/src/logging/warn-once.d.ts.map +1 -0
- package/dist/src/logging/warn-once.js +18 -0
- package/dist/src/logging/warn-once.js.map +1 -0
- package/dist/src/mcp.d.ts +43 -3
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +85 -17
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/mime.d.ts +2 -1
- package/dist/src/mime.d.ts.map +1 -1
- package/dist/src/mime.js +1 -0
- package/dist/src/mime.js.map +1 -1
- package/dist/src/models/__tests__/anthropic.test.js +147 -3
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +228 -2
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/defaults.test.d.ts +2 -0
- package/dist/src/models/__tests__/defaults.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/defaults.test.js +36 -0
- package/dist/src/models/__tests__/defaults.test.js.map +1 -0
- package/dist/src/models/__tests__/google.test.js +135 -0
- package/dist/src/models/__tests__/google.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +149 -1
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/anthropic.d.ts +20 -1
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +42 -8
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +27 -1
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +100 -12
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/defaults.d.ts +47 -0
- package/dist/src/models/defaults.d.ts.map +1 -0
- package/dist/src/models/defaults.js +170 -0
- package/dist/src/models/defaults.js.map +1 -0
- package/dist/src/models/google/model.d.ts +14 -1
- package/dist/src/models/google/model.d.ts.map +1 -1
- package/dist/src/models/google/model.js +54 -8
- package/dist/src/models/google/model.js.map +1 -1
- package/dist/src/models/google/types.d.ts +8 -0
- package/dist/src/models/google/types.d.ts.map +1 -1
- package/dist/src/models/model.d.ts +65 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +138 -0
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
- package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
- package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +117 -7
- package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
- package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
- package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
- package/dist/src/models/openai/__tests__/responses.test.js +668 -0
- package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
- package/dist/src/models/openai/chat-adapter.d.ts +33 -0
- package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
- package/dist/src/models/openai/chat-adapter.js +383 -0
- package/dist/src/models/openai/chat-adapter.js.map +1 -0
- package/dist/src/models/openai/errors.d.ts +16 -0
- package/dist/src/models/openai/errors.d.ts.map +1 -0
- package/dist/src/models/openai/errors.js +40 -0
- package/dist/src/models/openai/errors.js.map +1 -0
- package/dist/src/models/openai/formatting.d.ts +18 -0
- package/dist/src/models/openai/formatting.d.ts.map +1 -0
- package/dist/src/models/openai/formatting.js +38 -0
- package/dist/src/models/openai/formatting.js.map +1 -0
- package/dist/src/models/openai/index.d.ts +19 -0
- package/dist/src/models/openai/index.d.ts.map +1 -0
- package/dist/src/models/openai/index.js +18 -0
- package/dist/src/models/openai/index.js.map +1 -0
- package/dist/src/models/openai/model.d.ts +77 -0
- package/dist/src/models/openai/model.d.ts.map +1 -0
- package/dist/src/models/openai/model.js +211 -0
- package/dist/src/models/openai/model.js.map +1 -0
- package/dist/src/models/openai/responses-adapter.d.ts +78 -0
- package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
- package/dist/src/models/openai/responses-adapter.js +467 -0
- package/dist/src/models/openai/responses-adapter.js.map +1 -0
- package/dist/src/models/openai/types.d.ts +131 -0
- package/dist/src/models/openai/types.d.ts.map +1 -0
- package/dist/src/models/openai/types.js +5 -0
- package/dist/src/models/openai/types.js.map +1 -0
- package/dist/src/multiagent/__tests__/events.test.js +122 -28
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
- package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/graph.test.js +69 -0
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/nodes.test.js +18 -2
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
- package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.test.js +77 -0
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
- package/dist/src/multiagent/events.d.ts +19 -1
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +18 -0
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +27 -5
- package/dist/src/multiagent/graph.d.ts.map +1 -1
- package/dist/src/multiagent/graph.js +61 -15
- package/dist/src/multiagent/graph.js.map +1 -1
- package/dist/src/multiagent/index.d.ts +1 -1
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/multiagent.d.ts +21 -6
- package/dist/src/multiagent/multiagent.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +28 -3
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +42 -7
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +20 -4
- package/dist/src/multiagent/swarm.d.ts.map +1 -1
- package/dist/src/multiagent/swarm.js +65 -16
- package/dist/src/multiagent/swarm.js.map +1 -1
- package/dist/src/plugins/__tests__/registry.test.js +1 -1
- package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
- package/dist/src/plugins/model-plugin.d.ts +20 -0
- package/dist/src/plugins/model-plugin.d.ts.map +1 -0
- package/dist/src/plugins/model-plugin.js +29 -0
- package/dist/src/plugins/model-plugin.js.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.js +11 -0
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
- package/dist/src/registry/tool-registry.d.ts +4 -0
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +6 -0
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +2 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +1 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.js +116 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.js.map +1 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +2 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +1 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +225 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +1 -0
- package/dist/src/retry/backoff-strategy.d.ts +108 -0
- package/dist/src/retry/backoff-strategy.d.ts.map +1 -0
- package/dist/src/retry/backoff-strategy.js +86 -0
- package/dist/src/retry/backoff-strategy.js.map +1 -0
- package/dist/src/retry/default-model-retry-strategy.d.ts +76 -0
- package/dist/src/retry/default-model-retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/default-model-retry-strategy.js +104 -0
- package/dist/src/retry/default-model-retry-strategy.js.map +1 -0
- package/dist/src/retry/index.d.ts +8 -0
- package/dist/src/retry/index.d.ts.map +1 -0
- package/dist/src/retry/index.js +7 -0
- package/dist/src/retry/index.js.map +1 -0
- package/dist/src/retry/model-retry-strategy.d.ts +80 -0
- package/dist/src/retry/model-retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/model-retry-strategy.js +85 -0
- package/dist/src/retry/model-retry-strategy.js.map +1 -0
- package/dist/src/retry/retry-strategy.d.ts +34 -0
- package/dist/src/retry/retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/retry-strategy.js +25 -0
- package/dist/src/retry/retry-strategy.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +52 -11
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +6 -0
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +17 -0
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/telemetry/__tests__/meter.test.js +23 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +15 -0
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +14 -0
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/tools/__tests__/tool.test.js +24 -1
- package/dist/src/tools/__tests__/tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +6 -1
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +24 -3
- package/dist/src/tools/mcp-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-tool.js +103 -31
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/tool.d.ts +21 -2
- package/dist/src/tools/tool.d.ts.map +1 -1
- package/dist/src/tools/tool.js +12 -0
- package/dist/src/tools/tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +48 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +77 -9
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +30 -6
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/elicitation.d.ts +15 -0
- package/dist/src/types/elicitation.d.ts.map +1 -0
- package/dist/src/types/elicitation.js +2 -0
- package/dist/src/types/elicitation.js.map +1 -0
- package/dist/src/types/interrupt.d.ts +103 -0
- package/dist/src/types/interrupt.d.ts.map +1 -0
- package/dist/src/types/interrupt.js +63 -0
- package/dist/src/types/interrupt.js.map +1 -0
- package/dist/src/types/messages.d.ts +2 -1
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +292 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +148 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +78 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/index.d.ts +23 -0
- package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/index.js +21 -0
- package/dist/src/vended-plugins/context-offloader/index.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts +48 -0
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/plugin.js +244 -0
- package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/storage.d.ts +114 -0
- package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/storage.js +204 -0
- package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -0
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +21 -5
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +4 -0
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
- package/dist/src/vended-tools/bash/bash.js +0 -3
- package/dist/src/vended-tools/bash/bash.js.map +1 -1
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +4 -0
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +4 -0
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/package.json +17 -9
- package/dist/src/models/__tests__/openai.test.d.ts +0 -2
- package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
- package/dist/src/models/__tests__/openai.test.js.map +0 -1
- package/dist/src/models/openai.d.ts +0 -312
- package/dist/src/models/openai.d.ts.map +0 -1
- package/dist/src/models/openai.js +0 -789
- package/dist/src/models/openai.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { BedrockRuntimeClient, ConverseStreamCommand, ValidationException } from '@aws-sdk/client-bedrock-runtime';
|
|
2
|
+
import { BedrockRuntimeClient, ConverseStreamCommand, CountTokensCommand, ValidationException, } from '@aws-sdk/client-bedrock-runtime';
|
|
3
3
|
import { isNode } from '../../__fixtures__/environment.js';
|
|
4
4
|
import { BedrockModel } from '../bedrock.js';
|
|
5
5
|
import { ContextWindowOverflowError, ModelThrottledError } from '../../errors.js';
|
|
@@ -9,6 +9,7 @@ import { ImageBlock, VideoBlock, DocumentBlock } from '../../types/media.js';
|
|
|
9
9
|
import { CitationsBlock } from '../../types/citations.js';
|
|
10
10
|
import { collectIterator } from '../../__fixtures__/model-test-helpers.js';
|
|
11
11
|
import { NOOP_TOOL_SPEC } from '../../tools/noop-tool.js';
|
|
12
|
+
import { warnOnce } from '../../logging/warn-once.js';
|
|
12
13
|
/**
|
|
13
14
|
* Helper function to mock BedrockRuntimeClient implementation with customizable config.
|
|
14
15
|
* @param options - Optional configuration for mock region, useFipsEndpoint, and send functions
|
|
@@ -92,6 +93,8 @@ vi.mock('@aws-sdk/client-bedrock-runtime', async (importOriginal) => {
|
|
|
92
93
|
}
|
|
93
94
|
throw new Error('Unhandled command type in mock');
|
|
94
95
|
});
|
|
96
|
+
// Create a mock CountTokensCommand class
|
|
97
|
+
const CountTokensCommand = vi.fn();
|
|
95
98
|
// Create a mock ValidationException class
|
|
96
99
|
class MockValidationException extends Error {
|
|
97
100
|
constructor(opts) {
|
|
@@ -113,9 +116,13 @@ vi.mock('@aws-sdk/client-bedrock-runtime', async (importOriginal) => {
|
|
|
113
116
|
}),
|
|
114
117
|
ConverseStreamCommand,
|
|
115
118
|
ConverseCommand,
|
|
119
|
+
CountTokensCommand,
|
|
116
120
|
ValidationException: MockValidationException,
|
|
117
121
|
};
|
|
118
122
|
});
|
|
123
|
+
vi.mock('../../logging/warn-once.js', () => ({
|
|
124
|
+
warnOnce: vi.fn(),
|
|
125
|
+
}));
|
|
119
126
|
describe('BedrockModel', () => {
|
|
120
127
|
const BEDROCK_NOOP_TOOL_CONFIG = {
|
|
121
128
|
tools: [{ toolSpec: { ...NOOP_TOOL_SPEC, inputSchema: { json: NOOP_TOOL_SPEC.inputSchema } } }],
|
|
@@ -145,11 +152,20 @@ describe('BedrockModel', () => {
|
|
|
145
152
|
const config = provider.getConfig();
|
|
146
153
|
expect(config.modelId).toBeDefined();
|
|
147
154
|
});
|
|
155
|
+
it('warns when modelId is not explicitly set', () => {
|
|
156
|
+
new BedrockModel();
|
|
157
|
+
expect(warnOnce).toHaveBeenCalledWith(expect.objectContaining({ warn: expect.any(Function) }), expect.stringContaining('using default modelId'));
|
|
158
|
+
});
|
|
159
|
+
it('does not warn when modelId is explicitly set', () => {
|
|
160
|
+
new BedrockModel({ modelId: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0' });
|
|
161
|
+
expect(warnOnce).not.toHaveBeenCalledWith(expect.objectContaining({ warn: expect.any(Function) }), expect.stringContaining('using default modelId'));
|
|
162
|
+
});
|
|
148
163
|
it('uses provided model ID ', () => {
|
|
149
164
|
const customModelId = 'us.anthropic.claude-3-5-sonnet-20241022-v2:0';
|
|
150
165
|
const provider = new BedrockModel({ modelId: customModelId });
|
|
151
166
|
expect(provider.getConfig()).toStrictEqual({
|
|
152
167
|
modelId: customModelId,
|
|
168
|
+
contextWindowLimit: 200_000,
|
|
153
169
|
});
|
|
154
170
|
});
|
|
155
171
|
it('uses provided region', () => {
|
|
@@ -158,6 +174,7 @@ describe('BedrockModel', () => {
|
|
|
158
174
|
expect(BedrockRuntimeClient).toHaveBeenCalledWith({
|
|
159
175
|
region: customRegion,
|
|
160
176
|
customUserAgent: 'strands-agents-ts-sdk',
|
|
177
|
+
requestHandler: { requestTimeout: 120_000 },
|
|
161
178
|
});
|
|
162
179
|
});
|
|
163
180
|
it('extends custom user agent if provided', () => {
|
|
@@ -166,6 +183,7 @@ describe('BedrockModel', () => {
|
|
|
166
183
|
expect(BedrockRuntimeClient).toHaveBeenCalledWith({
|
|
167
184
|
region: 'us-west-2',
|
|
168
185
|
customUserAgent: 'my-app/1.0 strands-agents-ts-sdk',
|
|
186
|
+
requestHandler: { requestTimeout: 120_000 },
|
|
169
187
|
});
|
|
170
188
|
});
|
|
171
189
|
it('passes custom endpoint to client', () => {
|
|
@@ -176,6 +194,7 @@ describe('BedrockModel', () => {
|
|
|
176
194
|
region,
|
|
177
195
|
endpoint,
|
|
178
196
|
customUserAgent: 'strands-agents-ts-sdk',
|
|
197
|
+
requestHandler: { requestTimeout: 120_000 },
|
|
179
198
|
});
|
|
180
199
|
});
|
|
181
200
|
it('passes custom credentials to client', () => {
|
|
@@ -189,8 +208,26 @@ describe('BedrockModel', () => {
|
|
|
189
208
|
region,
|
|
190
209
|
credentials,
|
|
191
210
|
customUserAgent: 'strands-agents-ts-sdk',
|
|
211
|
+
requestHandler: { requestTimeout: 120_000 },
|
|
192
212
|
});
|
|
193
213
|
});
|
|
214
|
+
it('applies a default 120s request timeout', () => {
|
|
215
|
+
new BedrockModel({ region: 'us-west-2' });
|
|
216
|
+
expect(BedrockRuntimeClient).toHaveBeenCalledWith(expect.objectContaining({ requestHandler: { requestTimeout: 120_000 } }));
|
|
217
|
+
});
|
|
218
|
+
it('lets the caller override requestTimeout', () => {
|
|
219
|
+
new BedrockModel({ region: 'us-west-2', clientConfig: { requestHandler: { requestTimeout: 5_000 } } });
|
|
220
|
+
expect(BedrockRuntimeClient).toHaveBeenCalledWith(expect.objectContaining({ requestHandler: { requestTimeout: 5_000 } }));
|
|
221
|
+
});
|
|
222
|
+
it('merges the default timeout with other requestHandler options', () => {
|
|
223
|
+
new BedrockModel({ region: 'us-west-2', clientConfig: { requestHandler: { connectionTimeout: 1_000 } } });
|
|
224
|
+
expect(BedrockRuntimeClient).toHaveBeenCalledWith(expect.objectContaining({ requestHandler: { requestTimeout: 120_000, connectionTimeout: 1_000 } }));
|
|
225
|
+
});
|
|
226
|
+
it('passes a user-provided handler instance through untouched', () => {
|
|
227
|
+
const handler = { handle: vi.fn(), updateHttpClientConfig: vi.fn(), httpHandlerConfigs: vi.fn() };
|
|
228
|
+
new BedrockModel({ region: 'us-west-2', clientConfig: { requestHandler: handler } });
|
|
229
|
+
expect(BedrockRuntimeClient).toHaveBeenCalledWith(expect.objectContaining({ requestHandler: handler }));
|
|
230
|
+
});
|
|
194
231
|
it('adds api key middleware when apiKey is provided', () => {
|
|
195
232
|
const provider = new BedrockModel({ region: 'us-east-1', apiKey: 'br-test-key' });
|
|
196
233
|
const mockAdd = provider['_client'].middlewareStack.add;
|
|
@@ -222,6 +259,7 @@ describe('BedrockModel', () => {
|
|
|
222
259
|
expect(config).toStrictEqual({
|
|
223
260
|
modelId: 'global.anthropic.claude-sonnet-4-6',
|
|
224
261
|
temperature: 0.5,
|
|
262
|
+
contextWindowLimit: 1_000_000,
|
|
225
263
|
});
|
|
226
264
|
});
|
|
227
265
|
it('includes contextWindowLimit in config when provided', () => {
|
|
@@ -234,6 +272,43 @@ describe('BedrockModel', () => {
|
|
|
234
272
|
contextWindowLimit: 200_000,
|
|
235
273
|
});
|
|
236
274
|
});
|
|
275
|
+
it('auto-populates contextWindowLimit from model ID lookup', () => {
|
|
276
|
+
const provider = new BedrockModel({ modelId: 'anthropic.claude-sonnet-4-20250514-v1:0' });
|
|
277
|
+
expect(provider.getConfig()).toStrictEqual({
|
|
278
|
+
modelId: 'anthropic.claude-sonnet-4-20250514-v1:0',
|
|
279
|
+
contextWindowLimit: 1_000_000,
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
it('auto-populates contextWindowLimit for cross-region model IDs', () => {
|
|
283
|
+
const provider = new BedrockModel({ modelId: 'us.anthropic.claude-sonnet-4-6' });
|
|
284
|
+
expect(provider.getConfig()).toStrictEqual({
|
|
285
|
+
modelId: 'us.anthropic.claude-sonnet-4-6',
|
|
286
|
+
contextWindowLimit: 1_000_000,
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
it('auto-populates contextWindowLimit for default model ID', () => {
|
|
290
|
+
const provider = new BedrockModel();
|
|
291
|
+
expect(provider.getConfig()).toStrictEqual({
|
|
292
|
+
modelId: 'global.anthropic.claude-sonnet-4-6',
|
|
293
|
+
contextWindowLimit: 1_000_000,
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
it('does not override explicit contextWindowLimit', () => {
|
|
297
|
+
const provider = new BedrockModel({
|
|
298
|
+
modelId: 'anthropic.claude-sonnet-4-20250514-v1:0',
|
|
299
|
+
contextWindowLimit: 100_000,
|
|
300
|
+
});
|
|
301
|
+
expect(provider.getConfig()).toStrictEqual({
|
|
302
|
+
modelId: 'anthropic.claude-sonnet-4-20250514-v1:0',
|
|
303
|
+
contextWindowLimit: 100_000,
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
it('leaves contextWindowLimit undefined for unknown model IDs', () => {
|
|
307
|
+
const provider = new BedrockModel({ modelId: 'unknown.model-v1:0' });
|
|
308
|
+
expect(provider.getConfig()).toStrictEqual({
|
|
309
|
+
modelId: 'unknown.model-v1:0',
|
|
310
|
+
});
|
|
311
|
+
});
|
|
237
312
|
});
|
|
238
313
|
describe('updateConfig', () => {
|
|
239
314
|
it('merges new config with existing config', () => {
|
|
@@ -243,6 +318,7 @@ describe('BedrockModel', () => {
|
|
|
243
318
|
modelId: 'global.anthropic.claude-sonnet-4-6',
|
|
244
319
|
temperature: 0.8,
|
|
245
320
|
maxTokens: 2048,
|
|
321
|
+
contextWindowLimit: 1_000_000,
|
|
246
322
|
});
|
|
247
323
|
});
|
|
248
324
|
it('preserves fields not included in the update', () => {
|
|
@@ -259,6 +335,24 @@ describe('BedrockModel', () => {
|
|
|
259
335
|
maxTokens: 1024,
|
|
260
336
|
});
|
|
261
337
|
});
|
|
338
|
+
it('re-resolves contextWindowLimit when modelId changes and it was auto-resolved', () => {
|
|
339
|
+
const provider = new BedrockModel({ region: 'us-west-2' });
|
|
340
|
+
expect(provider.getConfig().contextWindowLimit).toBe(1_000_000);
|
|
341
|
+
provider.updateConfig({ modelId: 'anthropic.claude-haiku-4-5-20251001-v1:0' });
|
|
342
|
+
expect(provider.getConfig().contextWindowLimit).toBe(200_000);
|
|
343
|
+
});
|
|
344
|
+
it('clears contextWindowLimit when modelId changes to unknown model', () => {
|
|
345
|
+
const provider = new BedrockModel({ region: 'us-west-2' });
|
|
346
|
+
expect(provider.getConfig().contextWindowLimit).toBe(1_000_000);
|
|
347
|
+
provider.updateConfig({ modelId: 'my-custom-finetuned-model' });
|
|
348
|
+
expect(provider.getConfig().contextWindowLimit).toBeUndefined();
|
|
349
|
+
});
|
|
350
|
+
it('preserves explicit contextWindowLimit when modelId changes', () => {
|
|
351
|
+
const provider = new BedrockModel({ region: 'us-west-2', contextWindowLimit: 50_000 });
|
|
352
|
+
expect(provider.getConfig().contextWindowLimit).toBe(50_000);
|
|
353
|
+
provider.updateConfig({ modelId: 'anthropic.claude-haiku-4-5-20251001-v1:0' });
|
|
354
|
+
expect(provider.getConfig().contextWindowLimit).toBe(50_000);
|
|
355
|
+
});
|
|
262
356
|
});
|
|
263
357
|
describe('getConfig', () => {
|
|
264
358
|
it('returns the current configuration', () => {
|
|
@@ -1174,8 +1268,8 @@ describe('BedrockModel', () => {
|
|
|
1174
1268
|
});
|
|
1175
1269
|
});
|
|
1176
1270
|
it('does not warn when array system prompt is provided without cacheConfig', async () => {
|
|
1177
|
-
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
1178
1271
|
const provider = new BedrockModel();
|
|
1272
|
+
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
1179
1273
|
const messages = [new Message({ role: 'user', content: [new TextBlock('Hello')] })];
|
|
1180
1274
|
const options = {
|
|
1181
1275
|
systemPrompt: [
|
|
@@ -3530,5 +3624,137 @@ describe('BedrockModel', () => {
|
|
|
3530
3624
|
}));
|
|
3531
3625
|
});
|
|
3532
3626
|
});
|
|
3627
|
+
describe('countTokens', () => {
|
|
3628
|
+
const messages = [new Message({ role: 'user', content: [new TextBlock('hello')] })];
|
|
3629
|
+
const toolSpecs = [
|
|
3630
|
+
{ name: 'test_tool', description: 'A test tool', inputSchema: { type: 'object', properties: {} } },
|
|
3631
|
+
];
|
|
3632
|
+
beforeEach(() => {
|
|
3633
|
+
vi.clearAllMocks();
|
|
3634
|
+
BedrockModel.clearCountTokensCache();
|
|
3635
|
+
});
|
|
3636
|
+
it('should return native token count on success', async () => {
|
|
3637
|
+
const mockSend = vi.fn(async () => ({ inputTokens: 42 }));
|
|
3638
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3639
|
+
const model = new BedrockModel();
|
|
3640
|
+
const result = await model.countTokens(messages);
|
|
3641
|
+
expect(result).toBe(42);
|
|
3642
|
+
expect(mockSend).toHaveBeenCalledOnce();
|
|
3643
|
+
});
|
|
3644
|
+
it('should include system prompt in request', async () => {
|
|
3645
|
+
const mockSend = vi.fn(async () => ({ inputTokens: 55 }));
|
|
3646
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3647
|
+
const model = new BedrockModel();
|
|
3648
|
+
const result = await model.countTokens(messages, { systemPrompt: 'Be helpful.' });
|
|
3649
|
+
expect(result).toBe(55);
|
|
3650
|
+
const commandInput = vi.mocked(CountTokensCommand).mock.calls[0][0];
|
|
3651
|
+
expect(commandInput).toStrictEqual({
|
|
3652
|
+
modelId: expect.any(String),
|
|
3653
|
+
input: {
|
|
3654
|
+
converse: {
|
|
3655
|
+
messages: [{ role: 'user', content: [{ text: 'hello' }] }],
|
|
3656
|
+
system: [{ text: 'Be helpful.' }],
|
|
3657
|
+
},
|
|
3658
|
+
},
|
|
3659
|
+
});
|
|
3660
|
+
});
|
|
3661
|
+
it('should include tool specs in request', async () => {
|
|
3662
|
+
const mockSend = vi.fn(async () => ({ inputTokens: 100 }));
|
|
3663
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3664
|
+
const model = new BedrockModel();
|
|
3665
|
+
const result = await model.countTokens(messages, { toolSpecs });
|
|
3666
|
+
expect(result).toBe(100);
|
|
3667
|
+
const commandInput = vi.mocked(CountTokensCommand).mock.calls[0][0];
|
|
3668
|
+
expect(commandInput).toStrictEqual({
|
|
3669
|
+
modelId: expect.any(String),
|
|
3670
|
+
input: {
|
|
3671
|
+
converse: {
|
|
3672
|
+
messages: [{ role: 'user', content: [{ text: 'hello' }] }],
|
|
3673
|
+
toolConfig: {
|
|
3674
|
+
tools: [
|
|
3675
|
+
{
|
|
3676
|
+
toolSpec: {
|
|
3677
|
+
name: 'test_tool',
|
|
3678
|
+
description: 'A test tool',
|
|
3679
|
+
inputSchema: { json: { type: 'object', properties: {} } },
|
|
3680
|
+
},
|
|
3681
|
+
},
|
|
3682
|
+
],
|
|
3683
|
+
},
|
|
3684
|
+
},
|
|
3685
|
+
},
|
|
3686
|
+
});
|
|
3687
|
+
});
|
|
3688
|
+
it('should strip inferenceConfig from request', async () => {
|
|
3689
|
+
const mockSend = vi.fn(async () => ({ inputTokens: 10 }));
|
|
3690
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3691
|
+
const model = new BedrockModel({ maxTokens: 100 });
|
|
3692
|
+
await model.countTokens(messages);
|
|
3693
|
+
const commandInput = vi.mocked(CountTokensCommand).mock.calls[0][0];
|
|
3694
|
+
expect(commandInput).toStrictEqual({
|
|
3695
|
+
modelId: expect.any(String),
|
|
3696
|
+
input: {
|
|
3697
|
+
converse: {
|
|
3698
|
+
messages: [{ role: 'user', content: [{ text: 'hello' }] }],
|
|
3699
|
+
},
|
|
3700
|
+
},
|
|
3701
|
+
});
|
|
3702
|
+
});
|
|
3703
|
+
it('should fall back to estimation on API error', async () => {
|
|
3704
|
+
const mockSend = vi.fn(async () => {
|
|
3705
|
+
throw new Error('API error');
|
|
3706
|
+
});
|
|
3707
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3708
|
+
const model = new BedrockModel();
|
|
3709
|
+
const result = await model.countTokens(messages);
|
|
3710
|
+
expect(typeof result).toBe('number');
|
|
3711
|
+
expect(result).toBeGreaterThanOrEqual(0);
|
|
3712
|
+
});
|
|
3713
|
+
it('should fall back to estimation on generic exception', async () => {
|
|
3714
|
+
const mockSend = vi.fn(async () => {
|
|
3715
|
+
throw new Error('Connection failed');
|
|
3716
|
+
});
|
|
3717
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3718
|
+
const model = new BedrockModel();
|
|
3719
|
+
const result = await model.countTokens(messages);
|
|
3720
|
+
expect(typeof result).toBe('number');
|
|
3721
|
+
expect(result).toBeGreaterThanOrEqual(0);
|
|
3722
|
+
});
|
|
3723
|
+
it('should cache model ID and skip API call when model does not support counting tokens', async () => {
|
|
3724
|
+
const unsupportedError = new Error("The provided model doesn't support counting tokens");
|
|
3725
|
+
unsupportedError.name = 'ValidationException';
|
|
3726
|
+
const mockSend = vi.fn(async () => {
|
|
3727
|
+
throw unsupportedError;
|
|
3728
|
+
});
|
|
3729
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3730
|
+
const model = new BedrockModel();
|
|
3731
|
+
// First call: hits API, gets error, caches
|
|
3732
|
+
await model.countTokens(messages);
|
|
3733
|
+
expect(mockSend).toHaveBeenCalledOnce();
|
|
3734
|
+
// Second call: skips API entirely
|
|
3735
|
+
await model.countTokens(messages);
|
|
3736
|
+
expect(mockSend).toHaveBeenCalledOnce();
|
|
3737
|
+
});
|
|
3738
|
+
it('should not cache model ID for other errors', async () => {
|
|
3739
|
+
const mockSend = vi.fn(async () => {
|
|
3740
|
+
throw new Error('Transient network error');
|
|
3741
|
+
});
|
|
3742
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3743
|
+
const model = new BedrockModel();
|
|
3744
|
+
await model.countTokens(messages);
|
|
3745
|
+
expect(mockSend).toHaveBeenCalledTimes(1);
|
|
3746
|
+
// Second call should still attempt the API
|
|
3747
|
+
await model.countTokens(messages);
|
|
3748
|
+
expect(mockSend).toHaveBeenCalledTimes(2);
|
|
3749
|
+
});
|
|
3750
|
+
it('should skip native API and use heuristic when useNativeTokenCount is false', async () => {
|
|
3751
|
+
const mockSend = vi.fn();
|
|
3752
|
+
mockBedrockClientImplementation({ send: mockSend });
|
|
3753
|
+
const model = new BedrockModel({ useNativeTokenCount: false });
|
|
3754
|
+
const result = await model.countTokens(messages);
|
|
3755
|
+
expect(mockSend).not.toHaveBeenCalled();
|
|
3756
|
+
expect(result).toBe(2); // heuristic: Math.ceil('hello'.length / 4)
|
|
3757
|
+
});
|
|
3758
|
+
});
|
|
3533
3759
|
});
|
|
3534
3760
|
//# sourceMappingURL=bedrock.test.js.map
|