Releases: strands-agents/harness-sdk
Python WASM v0.0.1
Initial release of strands-agents-wasm
typescript/v1.4.0
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
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_urlproperty toA2AServerfor customizableurlinAgentCardby @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
- @tealgreen0503 made their first contribution in #1934
- @yatszhash made their first contribution in #2287
- @yoppi made their first contribution in #1920
- @gtholpadi made their first contribution in #2349
- @he-yufeng made their first contribution in #2353
- @yananym made their first contribution in #2305
- @chaynabors made their first contribution in #2386
Full Changelog: v1.41.0...python/v1.42.0
v1.41.0
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
What's Changed
- feat: add proactive context compression to conversation managers by @opieter-aws in #2239
- feat: cache AccessDenied error for count tokens by @opieter-aws in #2279
- fix(ollama): update return type of latencyMs metric for ollama model provider by @paliwalvimal in #2236
- feat: add official Discord link by @Albertozhao in #2285
- fix: set use_native_token_count default to false by @opieter-aws in #2284
- fix: swarm bug "Failed to detach context" with opentelemetry by @mehtarac in #2281
New Contributors
- @paliwalvimal made their first contribution in #2236
- @Albertozhao made their first contribution in #2285
Full Changelog: v1.39.0...v1.40.0
v1.39.0
What's Changed
- feat: enable openai provider use aws profile by @JackYPCOnline in #2230
- fix: include root cause in MCPClientInitializationError message by @aidandaly24 in #2238
- feat: add context window limit lookup table by @opieter-aws in #2249
- fix: fix count tokens for bedrock models by @mehtarac in #2254
- fix: cache unsupported models for bedrocks token counting by @opieter-aws in #2250
- feat: add useNativeTokenCount flag to skip token counting API calls by @opieter-aws in #2255
- fix: correct MCPClient.exit and stop() type annotations by @cogwirrel in #2248
- feat(a2a): implement full A2A task lifecycle state support by @agent-of-mkmeral in #2245
- fix: integration test updates by @mehtarac in #2262
New Contributors
- @aidandaly24 made their first contribution in #2238
- @cogwirrel made their first contribution in #2248
Full Changelog: v1.38.0...v1.39.0
v1.38.0
What's Changed
- feat(mcp): preserve CallToolResult.isError flag in MCPToolResult by @Zelys-DFKH in #2118
- feat: add
count_tokenmethod 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
- @Zelys-DFKH made their first contribution in #2118
- @ElliottJW made their first contribution in #2153
- @Ratansairohith made their first contribution in #2053
- @kpx-dev made their first contribution in #1660
- @prettyprettyprettygood made their first contribution in #2188
- @SuperMarioYL made their first contribution in #2208
- @Gastly made their first contribution in #2106
- @kaghatim made their first contribution in #2213
Full Changelog: v1.37.0...v1.38.0
v1.37.0
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
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
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 enforcement — PR#2087: The sliding window could produce a trimmed conversation starting with an assistant message, causing
ValidationExceptionon providers that require user-first ordering (including Bedrock Nova). The trim-point validation now ensures the first remaining message always hasrole == "user". Also fixed a short-circuit logic bug in thetoolUseguard that let orphaned tool-use blocks slip through at window boundaries. -
MCP
_metaforwarding — PR#1918, PR#2081: Custom metadata per the MCP spec was silently dropped becauseMCPClientnever forwarded the_metafield toClientSession.call_tool(). Additionally, the OTEL instrumentation usedmodel_dump()instead ofmodel_dump(by_alias=True), serializing the field as"meta"instead of"_meta"and corrupting the payload. Both the directcall_tooland task-augmented execution paths now correctly forwardmeta. -
Tool exception propagation to OpenTelemetry spans — PR#2046: When a tool raised an exception, the original exception was dropped before reaching
end_tool_call_span, causing all tool spans to getStatusCode.OKeven on errors. Tool errors now correctly propagate withStatusCode.ERROR, preserving the original exception type and traceback for observability backends like Langfuse. -
Anthropic premature stream termination — PR#2047: The Anthropic provider crashed with
AttributeErrorwhen the stream terminated before the finalmessage_stopevent, because it accessedevent.message.usageon event types that lack a.messageattribute. Now uses the Anthropic SDK'sstream.get_final_message()to read accumulated usage from all received events, gracefully handling premature termination and empty streams. -
Anthropic Pydantic deprecation warnings — PR#2044: Fixed
message_stopevent handling to avoid Pydantic deprecation warnings.
New Contributors
- @mananpatel320 made their first contribution in #1918
- @opieter-aws made their first contribution in #2044
- @mattdai01 made their first contribution in #2046
- @KKamJi98 made their first contribution in #1906
- @gautamsirdeshmukh made their first contribution in #2047
Full Changelog: v1.34.1...v1.35.0