v0.2.9
AppFlowy-IO/AppFlowyv0.2.9May 29, 2026by github-actions[bot]
AI Summary
Adds MCP configuration UI support and fixes issues with MQTT channels and streaming content.
Key Highlights
- Add MCP section to config web UI
- Add MQTT channel support
- Fix stop_mqtt_channel
- Fix deepseek-stream-reasoning-content
New Features
- Add MCP section to config web UI
- Add MQTT channel support
Full Release Notes
## Changelog * f062cb41d70a5bfb05b06a5bbcc819b1bf129ca5 1 * 1055e082a427f8e055465cb64456e3271e038fba Add MCP section to config web UI (#2770) * bdaff5cb693f2c5efbc0105c19d9c8459e7dab2c Add pretty_print and disable_escape_html to tool_feedback defaults * 569939a7b37e15fd92a5549a44919f7c36308f06 Fix stop_mqtt_channel * 2287de521e4709f1f6e40e58b5048fa56874f323 Linter fixed * c731ecdc7409515e8349e5db258d5c48a4490d45 Merge branch 'main' into fix/gemini-mcp-schema-sanitization * 6e6293e59694342bff8bc7799a13906556862c4c Merge pull request #2158 from afjcjsbx/feat/agent-discovery-prompt * 01280eaa53c53131cf101523444edc3a3b498c66 Merge pull request #2413 from ex-takashima/refactor/line-sdk * 658961b728a9a15a1125b87ab4d6a1b9deed3fbf Merge pull request #2531 from is-Xiaoen/feat/delegate-tool * 306f96cfe3cef434fa724fa95f66afa1d8079a51 Merge pull request #2645 from loafoe/feat/bedrock-streaming * 272dee3fcab0cc45385a0112c5e281f7ce2d802c Merge pull request #2669 from david1gp/fix/network-error-retry * ba4abff4a4598623aa8e836ff743a4eb20ee6e78 Merge pull request #2670 from david1gp/fix/tool-feedback-pretty-print * be67aed4dcc6e0b61f84cd15460659c56203c5c3 Merge pull request #2677 from alexhoshina/feat/runtime-events-plan * 828a7cba70951e10b3f3439c09d8bee6949a4bf8 Merge pull request #2681 from afjcjsbx/fix/gemini-mcp-schema-sanitization * f4a5d6e8082197aa33a9db3134bed3df700fe23e Merge pull request #2682 from dtapps/fix/docs-agent-defaults-model-format * 8508f8060841db0bbdb913eb1c4e4c743e5b342e Merge pull request #2705 from hehaijunandhenry/main * 490d90749cf4ad7b0c33cdb26f296372a570844e Merge pull request #2717 from LiusCraft/feat/deepseek-vision-unsupported-error * 7dc78425d1b83e934b89114ee61658a0732cffa0 Merge pull request #2719 from loafoe/feat/slack-webhook-channel * 5745957429be1440080c7b420cc553b23e41ced2 Merge pull request #2731 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/bedrockruntime-1.50.6 * 4e8bd73a581b3b9b664645378d9ffd32d36b5abc Merge pull request #2735 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/config-1.32.17 * f7d25c654676701d341946d50272ecdba6b5142c Merge pull request #2741 from lc6464/fix/deepseek-stream-reasoning-content * 777269b429be0a8e300d54717180ee479b91b080 Merge pull request #2758 from bogdanovich/codex/telegram-media-groups * 788cda5c7a81174befe1066337325399804ffee4 Merge pull request #2762 from afjcjsbx/feat/stop-command * 71c49812ae9d128a989e80b99ba93fea0efe31aa Merge pull request #2764 from alexhoshina/main * 0df050ff2ea0206625dedb033059c3e7e1d39179 Merge pull request #2766 from SiYue-ZO/docs/v3-config-format-sync * eb4e18755024b00c1057093f589d52f84cff9cd5 Merge pull request #2767 from afjcjsbx/fix/leaf-summary-target-validation * 0129da1c8e6523649eb2f4c84ab5ee230a93cab6 Merge pull request #2773 from zhangxinping666/codex/fix-telegram-svg-media * 894c6251c56bc7da5bf256a28f1e954c2ff754a1 Merge pull request #2783 from zhangxinping666/codex/fix-reload-voice-media-store * 2834db13de1f60734f1a4e2cbf508512912fa729 Merge pull request #2801 from sipeed/dependabot/go_modules/github.com/google/jsonschema-go-0.4.3 * 6817aa5311fedb762ea25e9a344d1c5c13355bdb Merge pull request #2811 from afjcjsbx/fix/mcp-streamable-http-support * f571a142bf9038f3c6a6608c5e2cf705fa048f2b Merge pull request #2823 from bogdanovich/fix/parent-session-tool-feedback-cleanup * af901617ac4d2b6ab06846c2c75683f4d0dfd4fe Merge pull request #2828 from bogdanovich/fix/queued-voice-followups * eb0653074bb8c80a4558d19e65c8cc6da5761bea Merge pull request #2857 from afjcjsbx/feat/edit-file-diff-preview * c62a9bf55b3a838371e7eb35ce0f7234bfd38bd1 Merge pull request #2862 from lc6464/fix/mimo-reasoning-history-replay * 33f9d638626a2957891355b3703357a93dae7898 Merge pull request #2891 from SiYue-ZO/feat/factory-reset * 87ee76b1174c70ae9da592149746417ca13f11e4 Merge remote-tracking branch 'origin/fix/gemini-mcp-schema-sanitization' into fix/gemini-mcp-schema-sanitization * 188ee24d2e225683e39ae07ee1f43cdf7983b9dc Merge remote-tracking branch 'origin/main' into refactor/line-sdk * 5b0c9e27082a712fa79f5912dd3994bf02dce490 Merge remote-tracking branch 'origin/main' into refactor/line-sdk * e7c0dc821a095f859071af88a27e7e880834fdea Merge remote-tracking branch 'remotes/upstream/main' * 6f6270b39dd76f4a72e43145908f79a815753916 Merge upstream/main into feat/agent-discovery-prompt * 9f0f914ad73f9d4516b47e65ac997114d967d3c5 Merge upstream/main into feat/delegate-tool * 5c0492900e885e446124a7a50e01257cc40ea646 add MQTT channel support * 4ddd650be44d6e0ec4724437d0a16c64e6fa2d54 align ToolFeedbackConfig field spacing * f4338d3aaba91f19abe4bc4dc7e09b580a79e285 build(deps): bump @tabler/icons-react in /web/frontend (#2806) * e3a05bd36d235dfa0ddcc6379a545bbc2e98b8c9 build(deps): bump @tailwindcss/vite from 4.2.2 to 4.2.4 in /web/frontend (#2734) * 00742b0196178ef9b06b2939912631e398e79575 build(deps): bump @tanstack/react-router in /web/frontend (#2733) * d0ab5aed7a3e582443f0ada45c63a192c474605b build(deps): bump fyne.io/systray from 1.12.0 to 1.12.1 (#2803) * eec4436e64518eda50b0cf5e5031a137fd6d5eb8 build(deps): bump github.com/adhocore/gronx from 1.19.6 to 1.19.7 (#2868) * b792d8b77bd1cc440ec86ac4dbf7b0d166882d0c build(deps): bump github.com/aws/aws-sdk-go-v2/config * 330aa297e2db1027805830d595c49e38380f8d4b build(deps): bump github.com/aws/aws-sdk-go-v2/service/bedrockruntime * e948106d50fe8645af9e3c1d47b71f2e05d39dd9 build(deps): bump github.com/google/jsonschema-go from 0.4.2 to 0.4.3 * 0977f59feeeac74d8c2ba0bd9a97ad7958bfa62f build(deps): bump github.com/larksuite/oapi-sdk-go/v3 (#2736) * 89631b86710d5cb5842deb920dd7ca6f46d336af build(deps): bump github.com/larksuite/oapi-sdk-go/v3 (#2864) * 2f8429f57c4c85b1b11d2af4ff9675e75e74ddd2 build(deps): bump github.com/mymmrac/telego from 1.8.0 to 1.9.0 (#2866) * dc41c9c5663e1be23ad76ab180d9ce3796aaed64 build(deps): bump golang.org/x/net from 0.53.0 to 0.54.0 (#2867) * 0419497c72fd7f6130e20cbec4f62083c28a8146 build(deps): bump i18next from 26.0.7 to 26.0.8 in /web/frontend (#2732) * 3788e9edad4757e7c60ba2341746db4d99e6c001 build(deps): bump i18next from 26.0.8 to 26.0.10 in /web/frontend (#2809) * 8ab455171c3068cd3e725be2ca94dfe8c5a39f74 build(deps): bump jotai from 2.19.1 to 2.20.0 in /web/frontend (#2869) * 4db116896217c8e1237e6b37d2c9bfaa03c1f621 build(deps): bump modernc.org/sqlite from 1.48.2 to 1.50.1 (#2863) * c2044e5a2c51276714ef6561c7c55e74aad53880 build(deps): bump react-i18next from 17.0.4 to 17.0.6 in /web/frontend (#2808) * b7edd35d132579df84af78f6d77003060f74239d build(deps): bump shadcn from 4.3.0 to 4.7.0 in /web/frontend (#2804) * c0bc8a3f9dc8489f0ed2c5720b3ddcab1daa295e build(deps): bump tailwindcss from 4.2.2 to 4.2.4 in /web/frontend (#2729) * 215d98aa7835e2d7d65ac14d314ec028599bd623 build(deps): bump tailwindcss from 4.2.4 to 4.3.0 in /web/frontend (#2872) * b225629af8aee699298d7e9c99f306f5d4f737c6 build(deps): update @tailwindcss/vite to 4.3.0 (#2876) * 7c8cd7c66a5ec277327010cb016f204daa6d7190 build(deps-dev): bump globals from 17.5.0 to 17.6.0 in /web/frontend (#2807) * a4abbf62e2707ee05df66b762201000bbc1cc547 build(deps-dev): bump prettier-plugin-tailwindcss in /web/frontend (#2870) * 864bfa1cef054254a3c502615d113d087eef48ed build(deps-dev): bump typescript-eslint in /web/frontend (#2730) * dab8391344e66306eaa0a23b37b5fea02f40c641 build(deps-dev): bump typescript-eslint in /web/frontend (#2871) * d8385ce0a7764e0e41d049a05bb667bdc8f548b5 build(deps-dev): bump vite from 8.0.10 to 8.0.13 in /web/frontend (#2865) * 1c25dcd239956a2d2bc6bd4bf49f4418ed847edc build(go): bump Go to 1.25.10 to fix stdlib vulnerabilities (#2818) * 32c8b8ce6ae523f8ee29e50c99fd68f735240fd4 chore(config): add default values for max_llm_retries and llm_retry_backoff_secs * 07748bf076adc564c51a98e360be6303efba6ba4 chore: revert unrelated golines formatting * a94ba8218186b7d0e1202d2bf137c0059399fa34 chore: update WeChat group QR code (#2747) * bfb2b35f742451152bce331c8204c6d86f3339c6 chore: update slack-go to v0.23.1 (#2875) * ffe091d8b2ebbd8fc897c8af4faa611c37faf098 docs(cli): mention streamable-http in mcp add transport help * fce800414dd4d608123ac525ea89866c7c95ee59 docs(events): align hook design with runtime observation * f4a24614b88c4a574aaf2983c32a27ea9d605d25 docs(events): remove stale subturn event names * 0ac8703e0fe1a96a19332c53c6819b65740c4b1e docs(tests): document integration test strategy * c47f5fd2c43f7d797f4004019e65fea720d75681 feat(agent): add TargetAgentID to SubTurnConfig for cross-agent delegation * 3b173c0beee1232472b1e0593b14d3988b47661d feat(agent): add multi-agent discovery prompt and per-agent * 06fad9571959df0d908c8a7dc48d70b3c39a3326 feat(agent): add network error retry with configurable max retries and backoff * bcc3d447a188114a19c7f900be013e578b95d3c9 feat(agent): add pretty_print and disable_escape_html options for tool feedback * a0245c7b02e3828fab780c6ff5bdea221a291fd6 feat(agent): stop command * f3ef7090c5d40b463cf1730132b770c1039daca9 feat(agent): stop command * 039f35563e6222da0acac3a1dada2f27e6174bec feat(agent): wire delegate tool registration for multi-agent setups * f53222f6a4c0d1cf78fa053d5df5978c022bbb5a feat(api): add POST /api/config/reset endpoint * ad5232ade8035012facaab0f3fae5bb2406d8599 feat(bedrock): implement StreamingProvider for real-time token streaming * b12f03be2e4c43803af0c8dbd5339078333e23c9 feat(channels): add slack_webhook channel * 789f907f6ddaa92e8c35895d924895ba54ef9aa0 feat(chat): add independent code block copy and collapse controls (#2882) * b7db0595441d1f725cd4ace994a9936e08557337 feat(chat,seahorse): persist and display model_name across history (#2897) * d61902d42a1b7c4ec350ace4c7e280e58a9c7e2f feat(config): add ResetToDefaults and CLI `config reset` command * b3d9f86a01e634cc0afa5b6d95520ac01dd29fc4 feat(events): add configurable runtime event logging * eedebabbeabfb616b919297354434baf2b8c2f6c feat(events): add runtime event bus * 8caf9aeb2b3ffb97dd7f554f7b11b284f3b04116 feat(events): publish runtime service events * 3f653161e33e6e1ef9d1a6b50f2fc91b527f123c feat(frontend): add factory reset button with confirmation dialog * e613258fa5655a2c5d9eb75cd1006005dc7cdcee feat(gateway): publish lifecycle runtime events * 96621eff211d96b378629a4a019e1786c8bdd7cb feat(i18n): add Portuguese (Brazil) locale (#2037) * 57876248e23724ef2fcbecac38a520fe0963aa7b feat(provider): add SiliconFlow provider support (#2885) * 5bbebb5fc817ba721226794a8b1583425621c6a0 feat(provider): add gpt4free openai-compatible provider (#2909) * 81a050555d8f6b960e8f2c1df69e1daf75c2b856 feat(provider,web,asr): enhance model management with explicit provider metadata (#2701) * 794eb04f320a64a900331fd18d2c2803486735ad feat(providers): add gemini web search provider (#2763) * cd7717bc155a440c06d42dad4c1b9c4aaed1d83b feat(tool): tool schema semplification * 484ef399f1bcb77cb80cfb77feee784a4afa1b66 feat(tools): add delegate tool for synchronous cross-agent task handoff * 4a81f0e740a7c58b25e1dc081aae1521147f6a1f feat(tools): show unified diff for edit_file edits * 941bac2332cf1cf1ed42f6410edfc902800d86e2 feat(web): add chat detail visibility selector (#2886) * f6190b54de244134aabf7040facafcf28330726b feat(web,api): fetch models and saved catalog support (#2832) * d2c0b69243a16da6386130f78bec7187d225167f feat(web,api): provider selection and model form foundation (#2831) * 604187e3125703fdcc8ebbd7e1b62acb74fc30a8 feat(web,api): test connection with real connectivity verification (#2833) * 1722cfc28222f5259a717a52aaeb63b0a44c1a5c feat: add DeepSeek vision unsupported error detection * 2992eccbf03e54258a6889cf19a5a4fe6255895f feat: add request-scoped context policies (#2914) * b3a7b7ad649e241fd25b69496854bef053ad8395 feat: agent self evolution (#2847) * 639b32703a304ce3b8ba7df7c00cacd04d525bad feat: support streaming (#2892) * 97b1c3efecc2d5f9050566f4e15596263a743ff7 fix duplicate toolFeedbackArgsPreview function declaration * bca131909d52d814a6e149a60ad178c7af79debd fix lint * ec21ddc22231556d7107e860262cd2e1968cba05 fix lint * 4eeb69688e6dffbb4e26c3ca015ce51ee7a0c145 fix lint * 4d6337fd262a8915fad272b5369cffaf39f3819c fix runtime event logger reload and shutdown * 09d3dff4322c24a361ac9d1307d5344436358fe6 fix telegram media group album handling * 7a1f5fe8b9d86804922584f3246899dffb51ffd4 fix test * 23df824c776334317aae2cbcf9c6ff3a26695fe2 fix test * 7b3e8004078b66e91eaa4c19eb1a3fa3980a6134 fix test * e0370aafcc5df79c5345b48af79537d254cf16ac fix test * 9bc702ebaf5570fd10e16b87b2d683d1e2cd93b6 fix test: enable pretty_print in tool feedback test * dd8e247550b62eb6b9b974b1fed5e92eba1fc343 fix(agent): align MCP prompt registration with tool allowlist * 610e9e3fe8c012ff2a66dba657697b446e759d51 fix(agent): dismiss session tool feedback on skipped outbound * d63430ab33ef1f0cd30c29431f42127715ba10bb fix(agent): don't arm pending stop when /stop targets idle session * a7e52e8a25341027fa1b03f866dc89194a71a9f9 fix(agent): drain scoped follow-up queue when pending stop skips turn startup * 409251e69dd4f1465c6cf43c6d3607afe0850cd3 fix(agent): fail closed on invalid AGENT frontmatter * abeb2d8e0a3023c245d84e65baec0b8492ee1add fix(agent): fall back to first AGENT line for discovery * b8f4257ceefbc798abd6d7fc86c18f11bb78e734 fix(agent): filter discovery by spawn permissions * 148583e7bb211349075b788c36773da328f8f636 fix(agent): hide discovery when spawn is unavailable * e7e21df354cfd3137acb85b2e922b85bb8fe6980 fix(agent): honor explicit thinking off (#2898) * f5f1dc980868e6a88fa3a95e5c4a26cd0db66676 fix(agent): load only allowed MCP servers * 96fd887cad4bf2b49a8c54121c8779f8b621512e fix(agent): match MCP server allowlists case-insensitively * 38baf1ccd0ef0f357653747d27519476ff18e26b fix(agent): normalize nil args and improve error handling in FormatArgsJSON * e1ed47b0ffdbfad9452561005e874ff4638d6962 fix(agent): remove unused scheduled helper * ffa184d18328a77ed1d321374052f133dd718635 fix(agent): resolve primary provider from frontmatter model * d601b752681028ea20fba95763d0d698d3f686d0 fix(agent): send SVG attachments as files * c6a09a35e23ded5bcba79b5af3445f6e04f8b0fe fix(agent): suppress MCP discovery when no servers are selectable * 836220363154452217f7555c1c02c74e24b8384b fix(agent): transcribe queued voice follow-ups * 2ae25b10389b1608a01c2c5cda964af20c6d6837 fix(agent): treat empty AGENT.md tools as allow none * 057683d94ce998729e5e98b29ca1900c593e3120 fix(agent): use runtime event kind for LLM retry * 27bd816b1c832fdfae662c64842cfdb183e02d14 fix(agent): validate AGENT tool declarations from registry * 765a165475b77e6744631533badb6de170c17f99 fix(agent): warn on unknown frontmatter capabilities * 703f630f33b2f635d2dfdce4baf3c649ffec18a6 fix(ci): define golang image and volumes for integration-runner * 6dd30a0c772ad6ee9a0bf0256d3b4b86c836def1 fix(ci): ensure go binary resolution and correct command execution * 612097b41139a6a78bb3d44aa5cf031d21d786be fix(config): align gci formatting for LLM retry fields * d2f6a089818dd3207f8007f9af471dd59f5a8eca fix(config): align gci formatting for MaxLLMRetries field * 1b2f8aac7998a72c51d2081941fdebf7349a7fc5 fix(config): align indentation for new LLM retry default fields * f0dc709b17de4e358e36327992346e5ee963427a fix(config): fix golines max-len for MaxLLMRetries field * 68e572f9697a692072b01bfb3811cea7c0fdde28 fix(config): make load_image configurable (#2879) * d5c8bfffbcdd3e0f0c2c5c7b5436afc4b8c7ede4 fix(docs): correct Baidu Search free tier from 1000/day to 1500/month (#2784) (#2825) * 78fd080189cdaab14861a41273fc5e0cc6d1cf43 fix(events): keep runtime observers non-blocking * 91f024eb1d6cb45397d2174f2e0f6b96c4b73163 fix(gateway): keep media store aligned after reload * f55d7a0598142c09e8c3745af989292039c31a35 fix(i18n): sync locale strings for model provider UI (#2911) * ffb82437217c9b66026291e51302570b9d957d9e fix(integration): docker runner workspace mounts and go command path * 4edbc73b640d254967db356a8fc3ec72ee693002 fix(integration): execute suite commands directly in docker runner * 6d7d1b09096a7da43dfa759950fbcf689716f297 fix(line): capture QuoteToken for all message types and handle location * 9b7fc7aa6cd805f1e52420bbbeebaf6028b8b1c2 fix(line): classify SDK errors with HTTP status and add client timeout * ad78ba06ea60df10e643b6cc771af58d98ef5955 fix(line): close HTTP response body from WithHttpInfo calls * bacb9aba7cfa2c0afb9c013a9155e3a314a0e9de fix(line): close response body on successful SendMedia calls * ffc8bdba367510749ae06be3e35fe6972c7fa79c fix(mcp): normalize streamable-http before config validation * 1ff8a418f65e36b46c39e3338568ec2e1f0baca7 fix(mcp): sanitize MCP tool schemas for Gemini function calling * 6e8590900b99fb4b05ee34ad8adfdfa964580a6b fix(mcp): support streamable HTTP alias and request-response mode * 6ae7dc38b93795d455f9a67dddf7fd5a5ad74531 fix(openai_compat): align MiMo reasoning replay with DeepSeek * 10f4466a7e53ca057be42271bff1786fcdf94aba fix(openai_compat): parse SSE events and reasoning variants in streams * b00ff5bc5d8f5ce7449f44bc5ff335b99b9cbf02 fix(openai_compat): parse reasoning_content in streaming responses * 412705783d20919d065e59b6051a4c42db7f9945 fix(pico): preserve image media across pico attachments and client (#2874) * cb5d33124c0c9fe90e9b7253a282b4d4a249ed91 fix(powershell): windows security enhancement, sec deny powershell encoding bypass via iex inje… (#2836) * 7a8d7fb2181c8e8b6724a710de9e3f8543e6885f fix(scripts): allow command expansion in integration runner * a1b55fd4f9c0f4bfc31230f0c761423fd5958f85 fix(seahorse): enforce target token thresholds for leaf summaries * 6801cc7ab8971019c0385e30470077f4307f4b1c fix(telegram): wrap long voice media append * 131f33f084c0ebf3abae96d6aed97dd9d4ca3ea9 fix(tests): add t.Parallel() to mcp streamable subtests * 87048499fff62fd8249948c09aa2655bedf47a46 fix(tools) diff preview for files without trailing newline * 56cca3f12fb0c462e9e83f51beabcd56d916c147 fix(tools) limit edit diff preview size for user and model * 871892ff15b2d3e627ea0e73d3de5c1ac97e6bbb fix(tools): exempt MCP discovery tools from agent allowlists * df486b99393cf9e69550b2f4406938977a5f7b2b fix(tools): normalize agent_id before self-check and delegation * 30938df40b89e147a697c941fad38d731557c306 fix(web): use stored API key when fetching models for saved providers (#2910) * 4d3070e849620c543bf8c2b06dc0e6552908801f fix(web): 兼容 HTTP 环境复制按钮 (#2712) * e656ddf5bbe8fa197c31ec310c019f14932585cb fix: align struct tag spacing in AgentDefaults config * 8dca2a13195fc5fc6bb3546914e12061dada4cd0 fix: improve error handling and nil consistency in FormatArgsJSON * 847218ef29a6bae4d44bceb6a1d95044ab2f9c57 refactor(agent): added mcp allowlist * 0ef25f779e1e61cb1211b690d968771b9c41a089 refactor(agent): move delegation details out of discovery prompt * 6ee66123f22f96eb273fb4b247855bbe1d7ade89 refactor(agent): simplify delegate registration gate * 6429f6af9a63e0ffc6c5cfc6e602e1abe9adf80c refactor(agent): source discovery identity from AGENT.md frontmatter * 795ee362ead99924e600618c6509b980494c698e refactor(events): emit agent runtime events directly * b954e6b8dc26dca2e7b460320ebf845d06bccdc6 refactor(events): remove legacy agent event bus * b2249df3eae0b3b21fe9456d75d1f7ff6a517864 refactor(events): split agent event payload types * d9717b5632a8858f0c69919fbf4b304296d4adfa refactor(events): start runtime event consumer migration * fe51cd504fac4b49904942a75839a7a5aa73f146 refactor(line): use official LINE Bot SDK v8 * 548dc15acdd2f87f18ec445bb9bc0ff874863df0 refactor(models): unify provider metadata around backend catalog (#2896) * f1f6e1131b0bdc1e62e3d0abf245f8b9487acf47 removed unused code * 41d6156dce2e875aba3986c02bfdf16505d7e365 style(line): shorten long line for golines linter * 3c4523e7aaeb969d2530f4cb812219c32b65c946 test(agent): add unit tests for network error retry backoff strategy * a34120b8219eb342846c538b5ddb4c0e59a095c7 test(agent): assert child turn uses target agent model * a3edbcd05e37ba7c55fba2a81b104cd22f5afabb test(agent): satisfy lint for tool feedback cleanup * c8335bfd47c83401c674b7fa7f772d7a4a17aabe test(agent): verify TargetAgentID resolves to correct agent instance * b03fa6176429ec5c81fca93c7818aa9dea6f308b test(bedrock): add unit tests for ChatStream/parseStreamResponse * dc80e8f5f20662a9f8d0587b6f89bf04bf87b541 test(events): migrate agent tests to runtime events * 6e8a81bfbf2ec680fe028dd4ed45dc9bcd4ec5d5 test(events): prefer runtime hook observation * 0ff78fa53f453a31a665a079076db7da8b5d72e5 test(tools): add delegate tool unit tests * 6db17b8211a99c070294437e8fca03a4ddcd0269 test(tools): verify normalization prevents self-delegation bypass * fc89fea319bb8d8cde70ea488965836edf0caac8 test(utils): add unit tests for FormatArgsJSON --- Released by [GoReleaser](https://github.com/goreleaser/goreleaser).