harness-typescript/v0.2.0
Auto-drafted from commits in harness-typescript/v0.1.1..harness-typescript/v0.2.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.
🚀 Features
- feat(mcp): expose tool client accessor (#4863) (1556ede)
- feat: add vended subagent tool (#4841) (f076964)
- feat(mcp/ts): restore legacy task execution on the SDK 2.x client (#4711) (d9c971a)
- feat(ts): port mcp_router vended tool to TypeScript (#4448) (ec86d61)
- feat(bidi): normalize token usage events (#4886) (3973d1c)
- feat(multiagent): migrate agent axis policies to SDKs (#4714) (d87a071)
- feat(stop): use agent.cancel() to stop the event loop (#3506) (5e82809)
- feat(skills): add Strands coding-agent skill (#4739) (8404ebb)
- feat: strands decider blog (#4765) (93e51a0)
- feat(agent): add aux_model for auxiliary model calls (#4658) (e3d5b4c)
- feat(session): support BidiAgent in SnapshotSessionManager (#4603) (0f91c9a)
- feat(bidi): graduate bidirectional streaming API (#4707) (8dbc128)
- feat(vended-tools): port a2a_client tool to TypeScript (#4575) (ff114a9)
- feat(bidi): display tool calls in console I/O (#4703) (5a940fb)
- feat(bidi): support cancellation from custom tools (#4664) (3e5e89e)
- feat(bidi): preserve grouped tool calls through execution and delivery (#4687) (43479b8)
- feat(bidi): support typing and speech in a shared console (#4640) (535f2ec)
- feat(bidi): add text and reasoning stream events (#4624) (b106b6e)
- feat(types): bring LocalAgent to parity with the TypeScript interface (#4639) (d56afd3)
- feat(interrupt): export InterruptError from the TypeScript SDK (#4541) (41bfd53)
- feat(site): color the product slug consistently across homepage, menu, and docs (#4527) (bc099a4)
- feat(bidi): add agent-level storage to BidiAgent (#4616) (c56b7de)
- feat(cli): add strands update and polish compact, skills, rename, and setup flows (#4612) (923a5ac)
- feat(bidi): support grouped content messages (#4609) (4342e12)
- feat(bidi): add snapshot capture and restore (#4584) (b8a2e5c)
- feat(cli): replace setup Q&A with Quickstart, Customize, and Export, and add /tools (#4581) (9b7657f)
- feat(py): add a2a_client vended tool (#4304) (9746df6)
- feat(mcp-ts)!: swap to @modelcontextprotocol/client 2.0 (#4093) (ab8ff46)
- feat(bidi): require explicit model IDs for providers (#4525) (8732c7c)
- feat(agent): add Agent.shutdown() for scope-based cleanup (#4519) (fec0427)
🐛 Fixes
- fix(agent): resume nested agent-as-tool interrupts across rehydration (#3675) (79cd735)
- fix(gemini): map RECITATION finish reason to content_filtered (#4898) (2bd213d)
- fix(models): preserve reported cache token usage (#4943) (c43bdb4)
- fix(ts): propagate and resume nested agent-as-tool interrupts (#4782) (356ca49)
- fix(site): improve mobile and small-screen usability (#4856) (34173c1)
- fix: broaden Mantle gpt-6 prefix to cover dot-separated model ids (#4882) (8dbf4d0)
- fix(bidi): emit OpenAI usage before response stop (#4889) (e366bba)
- fix(python): remove sqlalchemy<2.1.0 cap, fixed upstream in 2.1.1 (#4674) (3c64a87)
- fix(ollama): forward numeric keep_alive values such as 0 (#4725) (8ba04f7)
- fix(bidi): save sessions before restart and document checkpoints (#4813) (5831966)
- fix(harness): log at info when the default web_search is unavailable (#4786) (bc4cec4)
- fix(strands-ts): include traceAttributes on chat, execute_tool, and cycle spans (#4669) (563f57d)
- fix(mcp): prevent hang when server connection drops during in-flight tool call (#4499) (a169c4c)
- fix(bidi): confirm OpenAI interruptions and fix console rendering (#4792) (69b81c8)
- fix(cli): preserve HTTPS skill sources (#4579) (456b15f)
- fix(mcp): skip overlong prefixed tools when continuing on error (#4569) (06494b4)
- fix(structured_output): preserve anyOf for nullable enums and respect model_json_schema overrides (#4610) (2fd75dd)
- fix(anthropic): store redacted thinking as bytes and re-encode on send (#4593) (3b11e82)
- fix(site): show full product sidebar in mobile nav and fix dark LinkCard hover (#4780) (47ad14b)
- fix(cli): streamline terminal layout and startup experience (#4729) (e0c95ee)
- fix(session): retry failed multi-agent restore (#4663) (0e9f812)
- fix(site): prevent header nav overflow at laptop widths (#4750) (bc1cf50)
- fix(gemini): tolerate missing usage metadata on final response (#4724) (4cbc6a7)
- fix(bedrock): skip guardContent wrap for blank text (#4693) (142a4bc)
- fix(harness): remove context offloader plugin from harness in favor of context manager's stash (#4701) (c73253d)
- fix(context-manager): keep stashed originals when backfilling after session resume (#4699) (db34d01)
- fix(models): skip location-source documents in OpenAIResponsesModel message formatting (#4706) (ec2d410)
- fix(site): correct homepage code-sample copy and rebalance logo wall (#4571) (9299f22)
- fix(models): add context window limits for Sonnet 5.5, Opus 5.5, Fable 5.1 (py + ts) (#4694) (0ab57b2)
- fix(strands-ts): format model-facing numbers independently of the host locale (#4682) (5109437)
- fix(bedrock): normalize tool inputs before replay (#4625) (226a0f2)
- fix(bidi): deliver tool results that finish after a connection restart (#4677) (9e50496)
- fix(offloader): return portable filename from FileStorage.store instead of host path (#4568) (5b33849)
- fix(harness): reject caching values other than 'auto', a bool, or None (#4631) (d7fbb2a)
- fix(bidi): defer OpenAI responses during user speech (#4642) (7917865)
- fix(caching): surface prompt-cache write tokens on TS OpenAI and Bedrock paths (#4617) (b660f0e)
- fix(openai-responses): map cache_write_tokens to cacheWriteInputTokens (#4193) (15399af)
- fix(anthropic): include cache tokens in totalTokens (#4219) (21b314f)
- fix(py): update model id in cancellation integ tests (#4611) (6da3f48)
- fix(session): rewrite all stored copies of a message when guardrail redacts it (#4606) (69a465e)
- fix(bidi): record tool dispatch in conversation history (#4605) (4dc582c)
- fix(bidi): align response boundaries and transcript history (#4560) (09e2fe3)
- fix(graph): finalize invocation before yielding the result (#4580) (3d4cf9a)
- fix(python): cap sqlalchemy<2.1.0 to avoid RecursionError in Hatch dependency check (#4583) (711be5d)
- fix(a2a): extract content from task.status.message when artifacts are absent (#4511) (7f2b0c5)
- fix(mcp-server): migrate off removed mcp.server.fastmcp for mcp 2.x compat (#4547) (18becd7)
- fix: simplify and clarify CLI UX; fix bugs (#4548) (43b15b7)
- fix(hitl): reject non-boolean classifier decisions (#4538) (08f5bdd)
- fix(site): render search overlay correctly on standalone pages (#4529) (3cff1be)
- fix(cli): align @strands-agents/sdk range with harness (fixes interventions instanceof crash) (#4530) (d13c214)
♻️ Refactoring
- refactor(harness-ts): make @strands-agents/sdk a peerDependency (#4890) (8fd9144)
- refactor(bidi): rename auto_reconnect to auto_restart (#4740) (7ac70b1)
- refactor(bidi): remove directory tool watching (#4746) (536b614)
- refactor(bidi): correct docstrings and drop unused barge-in and connection stop reasons (#4728) (2da3a69)
- refactor(bidi): use restart consistently for connection restarts (#4734) (4dfeca8)
- refactor(bidi): make tool execution internals private (#4708) (a9a62d4)
- refactor(bidi): remove session manager configuration (#4698) (e108c79)
- refactor(bidi): remove response stop reasons (#4604) (b5dac92)
- refactor(bidi): use barge-in terminology (#4566) (e83c048)
📚 Documentation
- docs(box): launch the Strands Box docs, blog post, and homepage (#4970) (e9895fd)
- docs(agentcore): stop advancing time_of_last_update on every /ping (#4968) (0483ff5)
- docs(blog): link Bidi Agent docs and quickstart (#4908) (9b8ae35)
- docs(blog): polish bidi GA announcement (#4904) (d6faa6e)
- docs(blog): embed the AWS x Anthropic MHS video in the Strands Robots post (#4688) (1c212c8)
- docs(bidi): refine model provider guides (#4894) (37b77fa)
- docs(site): reposition homepage metadata as an open source agent toolkit (#4883) (c475949)
- docs(bidi): correct connection and audio docstrings (#4884) (3e5524c)
- docs(bidi): align titles, links, and navigation (#4880) (f594d54)
- docs(bidi): update bidi quickstart page (#4867) (593f919)
- docs(bidi): add bidirectional streaming models overview page (#4868) (64883c2)
- docs(bidi): Rewrite bidirectional streaming overview (#4865) (ccd54ad)
- docs(bidi): add tools guide and clean up failed context entry (#4836) (76bebff)
- docs(bidi): update python readme information for bidi (#4866) (e60a1e1)
- docs(bidi): rewrite I/O streams guide (#4858) (a0c9af7)
- docs(bidi): rewrite agent guide (#4859) (7c6411c)
- docs(bidi): remove standalone barge-in guide (#4860) (4816c2b)
- docs(bidi): clarify hook registration and events (#4818) (7ecd752)
- docs(bidi): document input content (#4824) (7c9bcb5)
- docs(bidi): place sessions and interrupts after hooks (#4823) (2db86f4)
- docs(bidi): group model guides in sidebar (#4820) (bc6cde1)
- docs: add Versioning & Support to Harness SDK nav (#4811) (be08a0e)
- docs(bidi): clarify stream events and ordering (#4788) (c5baa8c)
- docs(changelog): sync strands-agents/harness-sdk python/v1.57.2 (#4799) (e1675f7)
- docs(bidi): remove the voice agent page from Build guides (#4794) (eff1e15)
- docs(bidi): rename the Realtime section to Voice and move its pages to /sdk/bidi/ (#4793) (22706f3)
- docs: add Observability catalog type (#4772) (79bfd80)
- docs(labs): add Strands Decider to Labs projects (#4774) (957579a)
- docs(evals): add Confident AI as an observability integration (#4768) (8925798)
- docs(agents): add note on invocation state (#4744) (ea7305f)
- docs(bidi): add session management and interrupt status pages (#4732) (44bd73a)
- docs: add Human Overview sections to templates per AI usage reflection (#4696) (303a2be)
- docs(catalog): add strands-neuraltrust integration (#4326) (eca8cf1)
- docs(community): add Neo4j Agent Memory memory store to catalog (#4595) (2e80525)
- docs(harness): update default model (#4661) (b7900ae)
- docs(catalog): add serply-mcp to the integrations catalog (#4374) (15da9dc)
- docs(changelog): sync strands-agents/evals backfill (#4522) (f293750)
- docs(changelog): sync strands-agents/harness-sdk backfill (#4615) (4a42ded)
- docs(changelog): sync strands-agents/harness-sdk python/v1.57.1 (#4614) (e2262ed)
- docs(site): add PyBay and Open Source Summit Europe to events (#4562) (0411de6)
- docs(harness): add versioning policy for Strands harness and the CLI (#4535) (2c49c9c)
- docs: add authorship to Strands harness (#4521) (adb9c24)
👷 CI
- ci(typescript): bump proxy-addr from 2.0.7 to 2.0.8 (#4929) (79d8d07)
- ci(docs): bump http-cache-semantics from 4.2.0 to 4.3.0 in /site in the npm_and_yarn group across 1 directory (#4869) (f90af22)
- ci(deps-dev): bump browserslist from 4.28.2 to 4.28.8 in /test-infra in the npm_and_yarn group across 1 directory (#4110) (59f126f)
- ci(typescript): bump vitest from 4.1.10 to 4.1.11 (#4387) (8c35ea4)
- ci(typescript): bump brace-expansion from 5.0.7 to 5.0.12 (#4730) (7517965)
- ci(python): update mistralai requirement from <3.0.0,>=2.0.0 to >=2.0.0,<4.0.0 in /strands-py (#4809) (c631339)
- ci(docs): bump the npm_and_yarn group across 1 directory with 9 updates (#4781) (3d50456)
- ci(docs): bump qs from 6.15.3 to 6.16.0 in /site in the npm_and_yarn group across 1 directory (#4122) (c973821)
- ci(docs): bump prettier from 3.9.8 to 3.9.9 in /site (#4644) (9f0690f)
- ci(docs): bump markdown-it from 15.0.1 to 15.0.2 in /site (#4320) (8b8f8a9)
- ci(typescript): bump ip-address from 10.4.0 to 10.7.2 (#4690) (d7682c0)
- ci(python): bump cedar-policy-mcp-schema-generator from 0.6.0 to 0.6.1 in /strands-py (#4650) (3d8db4b)
- ci: add Python lint/format gate to pre-commit hook (#4528) (219dbf6)
- ci(python): enforce formatting checks (#4526) (83a7f47)