github strands-agents/harness-sdk typescript/v1.20.0

typescript/v1.20.0

Auto-drafted from commits in typescript/v1.19.0..typescript/v1.20.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)
  • fix(cli): improve onboarding and terminal responsiveness (#4518) (2db4074)
  • fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e)

♻️ 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)
  • docs(changelog): sync strands-agents/harness-sdk python/v1.57.0 (#4517) (880c5bd)
  • docs(changelog): sync strands-agents/harness-sdk typescript/v1.19.0 (#4516) (68cf9d2)

👷 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)

🔧 Chores

  • chore(cli): depend on harness ~0.1.1 (#4582) (7ae759d)
  • chore(harness-ts): lift the @strands-agents/sdk <1.18.0 cap (#4520) (15c42ff)

🔖 Other

  • blog: announce Bidi Agents general availability (#4899) (210d695)

Don't miss a new harness-sdk release

NewReleases is sending notifications on new releases.