Skip to content

Releases: strands-agents/harness-sdk

Python WASM v0.0.1

02 Jun 19:58
ea48c58

Choose a tag to compare

Initial release of strands-agents-wasm

typescript/v1.4.0

01 Jun 19:28
5fd6c17

Choose a tag to compare

What's Changed

auto-generated itemized list omitted due to mono-repository merge

Full Changelog: typescript/v1.3.0...typescript/v1.4.0

python/v1.42.0

01 Jun 18:18
5fd6c17

Choose a tag to compare

What's Changed

  • fix(tests): fix flaky tests to accept string or number by @lizradway in #2319
  • chore: prepare directory layout for monorepo convergence by @zastrowm in #2317
  • feat: add endpoint_url parameter to S3SessionManager by @tealgreen0503 in #1934
  • feat(gemini): plumb through cache tokens in metadata events by @yatszhash in #2287
  • fix: handle None text in message content sanitization by @yoppi in #1920
  • chore: merge strands-agents/docs into monorepo by @zastrowm in #2339
  • chore: address fast-follow items from docs monorepo merge by @zastrowm in #2348
  • fix(telemetry): make MetricsClient singleton thread-safe by @gtholpadi in #2349
  • chore: merge strands-agents/sdk-typescript into monorepo by @zastrowm in #2350
  • fix(gemini): handle safety-blocked metadata by @he-yufeng in #2353
  • feat(a2a): add agent_card_url property to A2AServer for customizable url in AgentCard by @waitasecant in #2003
  • fix(openai): read vllm reasoning deltas by @he-yufeng in #2354
  • feat(strands-py-wasm): use call_async for true async streaming by @pgrayy in #2361
  • chore: update stale references for monorepo consolidation by @zastrowm in #2358
  • feat: add Limits and support it during invoke/stream by @notowen333 in #2360
  • feat: pass invocation_state to edge condition calls by @yananym in #2305
  • fix(structured-output): downgrade validation failure log from error to debug by @zastrowm in #2368
  • fix: scope authorization-check job permissions to contents: read by @yonib05 in #2367
  • ci: use env var for repository name in integration test workflow by @yonib05 in #2371
  • chore: sync strands-agents/sdk-typescript into monorepo by @zastrowm in #2363
  • feat(strands-py-wasm): make variant arms inherit from container by @chaynabors in #2386
  • fix: use separate READMEs for Python and TypeScript packages by @zastrowm in #2384
  • chore: revert "feat: pass invocation_state to edge condition calls (#2305)" by @zastrowm in #2389
  • feat(mcp): promote content-to-tool-result method to public API by @gautamsirdeshmukh in #2370
  • fix: keep concurrent tool results in request order by @he-yufeng in #2340
  • fix: realign provider context-overflow patterns and drop MIT dual-license by @chaynabors in #2394
  • fix(strandly): fix bootstrap ordering and update README by @awsarron in #2402
  • docs: add security warnings to http_request and file_editor vended tools by @zastrowm in #2391
  • ci: allow design type in PR title validation by @opieter-aws in #2395
  • docs: replace sunsetted starter toolkit with AgentCore CLI by @notgitika in #2410
  • fix: update vitest to ^4.1.6 by @zastrowm in #2534
  • feat(strands-py-wasm): add DecoratedTool for host-side Python tools by @pgrayy in #2412

New Contributors

Full Changelog: v1.41.0...python/v1.42.0

v1.41.0

21 May 15:31
64a6862

Choose a tag to compare

What's Changed

  • feat(plugins): add MultiAgentPlugin for Swarm and Graph orchestrators by @zastrowm in #2280
  • feat: bump starlette dependency to 1.x by @pgrayy in #2297
  • feat(bedrock): add TTL support to auto-injected tool and system/user cache points by @kpx-dev in #2232
  • fix(tests): add use_native_token_count=True when expected by @lizradway in #2311

Full Changelog: v1.40.0...v1.41.0

v1.40.0

14 May 13:43
fa74d80

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.39.0...v1.40.0

v1.39.0

08 May 13:16
ead3179

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.38.0...v1.39.0

v1.38.0

30 Apr 16:52
6e208a8

Choose a tag to compare

What's Changed

  • feat(mcp): preserve CallToolResult.isError flag in MCPToolResult by @Zelys-DFKH in #2118
  • feat: add count_token method to model with naive estimation using tiktoken by @lizradway in #2031
  • chore(log): added warning for default model awareness and is subject to change by @poshinchen in #2164
  • fix(litellm): forward ttl field from CachePoint in _format_system_messages by @ElliottJW in #2153
  • fix(skills): preserve cache points in system prompt during skills inj… by @mattdai01 in #2134
  • fix(ollama): generate unique toolUseId instead of reusing tool name by @Ratansairohith in #2053
  • feat(cache): add TTL support to CachePoint for prompt caching by @kpx-dev in #1660
  • fix: use non-interactive flag for Nova Sonic history and system promp… by @prettyprettyprettygood in #2188
  • ci: update litellm requirement from <=1.82.6,>=1.75.9 to >=1.75.9,<=1.83.13 by @dependabot[bot] in #2197
  • ci: update pre-commit requirement from <4.6.0,>=3.2.0 to >=3.2.0,<4.7.0 by @dependabot[bot] in #2185
  • feat: large tool result offload by @lizradway in #2162
  • feat: override count_tokens with native token counting for supported providers by @opieter-aws in #2189
  • fix(bedrock): upgrade default model to Claude Sonnet 4.5 by @afarntrog in #2193
  • chore: update style guide for tool spec navigation by @lizradway in #2203
  • feat: add ProviderTokenCountError for native token counting failures by @opieter-aws in #2211
  • fix(conversation-manager): handle window_size=0 and reject negative values by @SuperMarioYL in #2208
  • fix: change token counting fallback log from warning to debug by @opieter-aws in #2220
  • fix: do not synthesize exception for cancelled tools by @Gastly in #2106
  • feat: estimate input tokens before model calls by @opieter-aws in #2221
  • feat(offloader): return explicit paths in preview and auto-enable retrieval by @lizradway in #2222
  • fix: update tests to use non-EOL'd model by @zastrowm in #2226
  • feat(bedrock): add strict_tools config with auto-inject of additional… by @kaghatim in #2213

New Contributors

Full Changelog: v1.37.0...v1.38.0

v1.37.0

22 Apr 19:13
50439e0

Choose a tag to compare

What's Changed

  • fix: add fallback trim point for tool-heavy conversations in SlidingWindowConversationManager by @lufecadu in #2174
  • feat: introduce checkpoint in experimental by @JackYPCOnline in #2181
  • feat: add context_window_limit to model configs by @opieter-aws in #2176
  • fix(mcp): skip MCPClient cleanup during interpreter finalization by @minorun365 in #2144
  • fix(tests): update retired claude-3-haiku model in integration tests by @afarntrog in #2186

New Contributors

Full Changelog: v1.36.0...v1.37.0

v1.36.0

17 Apr 20:09
4e3ad44

Choose a tag to compare

What's Changed

  • feat(hooks): accept callable hook callbacks in Agent constructor by @agent-of-mkmeral in #1992
  • fix: handle missing optional fields in non-streaming citation conversion by @agent-of-mkmeral in #2098
  • fix(telemetry): add common gen_ai attributes to event loop cycle spans by @giulio-leone in #1973
  • fix(telemetry): use per-invocation usage in agent span attributes by @en-yao in #2017
  • feat(a2a): add client_config param and deprecate a2a_client_factory by @agent-of-mkmeral in #2103
  • fix: clear leaked running loop in MCP client background thread by @mkmeral in #2111
  • feat(openai): plumb through cache tokens in metadata events by @Unshure in #2116
  • feat(agent): add take_snapshot() and load_snapshot() methods by @zastrowm in #1948
  • feat(skills): support loading skills from URLs by @dgallitelli in #2091
  • feat: add metadata field to messages for stateful context tracking by @lizradway in #2125
  • feat(bidi): support request_state stop_event_loop flag by @agent-of-mkmeral in #1954
  • fix: preserve Gemini thought_signature in LiteLLM multi-turn tool calls by @opieter-aws in #2129
  • fix(bedrock): normalize empty toolResult content arrays in _format_bedrock_messages by @ghhamel in #2123
  • fix(telemetry): remove force_flush in tracer by @poshinchen in #2142

New Contributors

Full Changelog: v1.35.0...v1.36.0

v1.35.0

08 Apr 19:41
cd5da4f

Choose a tag to compare

What's Changed

Features

Bedrock Service Tier Support — PR#1799

Amazon Bedrock now offers service tiers (Priority, Standard, Flex) that let you control the trade-off between latency and cost on a per-request basis. BedrockModel accepts a new service_tier configuration field, consistent with how other Bedrock-specific features like guardrails are exposed. When not set, the field is omitted and Bedrock uses its default behavior.

from strands import Agent
from strands.models.bedrock import BedrockModel

# Use "flex" tier for cost-optimized batch processing
model = BedrockModel(
    model_id="us.anthropic.claude-sonnet-4-20250514-v1:0",
    service_tier="flex",
)
agent = Agent(model=model)

# Use "priority" for latency-sensitive applications
realtime_model = BedrockModel(
    model_id="us.anthropic.claude-sonnet-4-20250514-v1:0",
    service_tier="priority",
)

Valid values are "default", "priority", and "flex". If a model or region does not support the specified tier, Bedrock returns a ValidationException.

Bug Fixes

  • Sliding window conversation manager user-first enforcementPR#2087: The sliding window could produce a trimmed conversation starting with an assistant message, causing ValidationException on providers that require user-first ordering (including Bedrock Nova). The trim-point validation now ensures the first remaining message always has role == "user". Also fixed a short-circuit logic bug in the toolUse guard that let orphaned tool-use blocks slip through at window boundaries.

  • MCP _meta forwardingPR#1918, PR#2081: Custom metadata per the MCP spec was silently dropped because MCPClient never forwarded the _meta field to ClientSession.call_tool(). Additionally, the OTEL instrumentation used model_dump() instead of model_dump(by_alias=True), serializing the field as "meta" instead of "_meta" and corrupting the payload. Both the direct call_tool and task-augmented execution paths now correctly forward meta.

  • Tool exception propagation to OpenTelemetry spansPR#2046: When a tool raised an exception, the original exception was dropped before reaching end_tool_call_span, causing all tool spans to get StatusCode.OK even on errors. Tool errors now correctly propagate with StatusCode.ERROR, preserving the original exception type and traceback for observability backends like Langfuse.

  • Anthropic premature stream terminationPR#2047: The Anthropic provider crashed with AttributeError when the stream terminated before the final message_stop event, because it accessed event.message.usage on event types that lack a .message attribute. Now uses the Anthropic SDK's stream.get_final_message() to read accumulated usage from all received events, gracefully handling premature termination and empty streams.

  • Anthropic Pydantic deprecation warningsPR#2044: Fixed message_stop event handling to avoid Pydantic deprecation warnings.

New Contributors

Full Changelog: v1.34.1...v1.35.0