What's Changed
- fix(runner): preserve nested workflow HITL resume responses by @chaojixinren in #1129
- Consistent %w / %v usage in fmt.Errorf by @wojtas000 in #1265
- fix(live): tear down the flow when LiveSession.Close is called by @hanorik in #1285
- fix(ci): restrict the nightly workflow to a read-only token by @wolo-lab in #1288
- Apply consistent usage of doc.go by @wojtas000 in #1294
- fix(skilltoolset): accept scalar allowed-tools frontmatter by @ktsoator in #1301
- fix(adkrest): add health endpoint by @vivekjm in #1274
- docs: correct role alternation comment in contents_processor by @erensh27 in #1302
- ci: guard the exported API against accidental breaking changes by @baptmont in #1297
- fix(configurable): config loader panics on non string args by @wojtas000 in #1315
- fix(session/vertexai): treat nil function args as an empty struct by @ravyg in #1322
- Enable automated comment linting by @wojtas000 in #1326
- Update go version to 1.26.6 by @kdroste-google in #1339
- telemetry: migrate logs to OpenTelemetry 0.21 by @jadams-positron in #1335
- chore(deps): bump the go-minor-patch group across 1 directory with 11 updates by @dependabot[bot] in #1338
- refactor: finalize streamed responses with complete metadata and unified turn completion logic by @hanorik in #1355
- fix: reject tool confirmations resumed from non-agent-authored events by @prasanna8585 in #1357
- fix(adka2a): mark emitted tasks with the ADK A2A extension by @baptmont in #1246
- fix(adkrest): decode chunked create-session request bodies by @jesseedcp in #1307
- feat(auth/gcp): add credentials-service REST client by @wolo-lab in #1149
- fix(llminternal): read streaming mode from RunConfig to avoid nil deref by @rootkiller6788 in #1336
- fix(llm): ignore sibling branches for current turn by @vivekjm in #1367
- fix(llmagent): scope -httprecord directives so one cassette re-records alone by @chethanuk in #1362
- fix(llminternal): reject tool confirmations with conflicting requests by @kdroste-google in #1369
- fix: only first artifact delta from multiple tool calls is being kept by @mgmcintyre in #474
- docs: Explain adka2a handler wiring by @Haihan-Jiang in #893
- docs(examples/agentregistry): add discovery and capability-binding samples by @wolo-lab in #1266
- docs(examples/agentregistry): add an A2A publish-and-resolve sample by @wolo-lab in #1271
- chore(deps): bump the go-minor-patch group with 4 updates by @dependabot[bot] in #1396
- fix(internal): match the copyright skip list against slash-separated paths by @harshitwandhare in #1394
- fix(llminternal): bound consecutive thought-only turns in the base flow by @jjsasha63 in #1290
- fix(remoteagent): reject card sources that are neither http(s) URLs nor paths by @jjsasha63 in #1328
- Fix unsafe A2A peer-supplied transferToAgent metadata by @prasanna8585 in #1226
- docs(examples/workflow): add a WithUseAsOutput sample by @wolo-lab in #922
- fix(session/database): maintain UpdateTime on app/user state writes by @PratikDhanave in #1204
- fix(session/database): format stale-session timestamps as UnixMicro by @PratikDhanave in #1237
- fix(ci): skip scheduled nightly runs on forks by @IAmSurajBobade in #1366
- docs: replace the nonexistent TempStatePrefix in state delta comments by @Trainingcqy in #1311
- fix(examples): remove unused code in loadartifacts by @mvsouza in #635
- tool/loadartifactstool: return error instead of panic when artifact service is not configured by @GerardGao in #1390
- docs: point AI coding agents at the hosted llms.txt by @wolo-lab in #1402
- fix(preloadmemorytool): guard against nil parts in extractText (#1348) by @chill-czar in #1349
- fix(gcsartifact): recognize wrapped storage.ErrObjectNotExist by @shoemoney in #1375
- fix(agentanalytics): skip logging partial chunks in AfterModelCallback by @nuthalapativarun in #1214
- Adding opt-in option for the debug endpoint in ADK REST API by @kdroste-google in #1413
- test(artifact): cover version lookup after deletion by @mikemikimike in #1415
- fix(loadartifactstool): support load_artifacts when combined with other tool calls by @chill-czar in #1320
- fix(sequentialagent): correct New godoc placement and copy-pasted error string by @dmora in #1151
- test(remoteagent): name the awaited event instead of panicking on a closed channel by @harshitwandhare in #1400
- fix(session/vertexai): quote userId in AIP-160 list filter by @petrmarinec in #1171
- chore(deps): bump the go-minor-patch group with 5 updates by @dependabot[bot] in #1425
- fix(runner): guard against nil event yielded by agent by @sundeep8967 in #1417
- feat(session): carry a context-compaction record on a session event by @baptmont in #1231
- feat(compaction): summarize completed invocations as the conversation grows by @baptmont in #1232
- feat(compaction): compact mid-invocation once the prompt crosses a threshold by @baptmont in #1234
- feat(server): make context compaction reachable from every serving surface by @baptmont in #1235
- test(llmagent): drive context compaction against a recorded real model by @baptmont in #1236
- fix(openaimodel): replay assistant turns with output_text content by @wojtas000 in #1427
- docs(agents): add .agents/skills and a skill for authoring examples by @wolo-lab in #1331
- feat(telemetry): record opt-in gen_ai content attributes on generate_content spans by @jjsasha63 in #1426
- chore(version): bump the tagged version constant to 2.3.0 by @wolo-lab in #1432
- fix(adkgo/deploy): derive Agent Engine builder Go version from go.mod by @PratikDhanave in #1207
- fix: filter thinking parts from agenttool result by @dmora in #696
- docs: fix typos in examples by @aimmetal-tech in #1430
- fix(examples/openai): fix path to openaimodel package in README by @wojtas000 in #1433
- fix(compaction): carry durable facts across re-summarization by @baptmont in #1431
New Contributors
- @chaojixinren made their first contribution in #1129
- @ktsoator made their first contribution in #1301
- @vivekjm made their first contribution in #1274
- @erensh27 made their first contribution in #1302
- @ravyg made their first contribution in #1322
- @jadams-positron made their first contribution in #1335
- @prasanna8585 made their first contribution in #1357
- @jesseedcp made their first contribution in #1307
- @rootkiller6788 made their first contribution in #1336
- @mgmcintyre made their first contribution in #474
- @Haihan-Jiang made their first contribution in #893
- @harshitwandhare made their first contribution in #1394
- @PratikDhanave made their first contribution in #1204
- @Trainingcqy made their first contribution in #1311
- @mvsouza made their first contribution in #635
- @GerardGao made their first contribution in #1390
- @chill-czar made their first contribution in #1349
- @shoemoney made their first contribution in #1375
- @mikemikimike made their first contribution in #1415
- @petrmarinec made their first contribution in #1171
- @sundeep8967 made their first contribution in #1417
- @aimmetal-tech made their first contribution in #1430
Full Changelog: v2.2.0...v2.3.0