v2.0.4
AgentScope Java 2.0.4 adds OpenAI Responses API support, a redesigned AgentScope Service, new channel and storage integrations, and stronger isolation for concurrent agent runs, tools, and skills.
Core / Models
- Add the OpenAI Responses API module (#3078).
- Support
returnDirecttool results to short-circuit the reasoning loop (#2891). - Expose detailed chat usage token metrics and model-fallback failover listeners (#3215, #3145).
- Support Anthropic bearer token authentication (#3038).
- Add a type-safe Jev System One client, Spring Boot starter, and example middlewares (#3240).
Harness / Tools / Storage
- Add per-run execution control with
AgentRun/RunControland explicit runtime context propagation (#3279). - Add request-scoped tool configuration and isolate tool visibility, streaming callbacks, and session skill resources (#3283).
- Add opt-in
sharedLocalWorkspaceto filesystem specs (#3247). - Allow disabling built-in web tools and injecting an HTTP client into them (#3075, #3103).
- Add configurable MCP metadata propagation per server and tool (#3255).
- Add MongoDB storage extension (#2698).
- Automatically prune old E2B native snapshots per sandbox (#2555).
Service / Channels
- Introduce the redesigned AgentScope Service implementation (#3080).
- Add Personal Weixin iLink channel integration (#3184).
- Add DingTalk HTTP callback receive mode alongside Stream mode (#3177).
- Add pluggable channel access-token storage and inbound-event deduplication, with idle eviction for bot-loop guards (#3182, #3175).
- Expose inbound channel media messages as neutral metadata (#3180).
- Remove the unused message role parameter (#3045).
- Pass Gemini tool parameter schemas directly as native JSON Schema (#3051).
- Derive
Version.VERSIONfrom the Maven project version (#3087). - Migrate the documentation site to Mintlify while preserving legacy URLs and restoring hosted language switching (#3081, #3082, #3276).
Core / State / Concurrency
- Isolate concurrent invocation contexts and cancellation of individual running or queued executions (#3279); prevent cross-session tool and skill interference (#3283).
- Fix version-0 state migration CAS conflicts, atomically return JDBC unconditional-write versions, and cache versions after unconditional writes (#3165, #3220, #3236).
- Evict slot versions with the state cache, avoid deserializing the
Statemarker interface, and persist state after empty agent results (#3074, #3048, #3049). - Preserve failed summary termination state and handle synchronous model-fallback failures (#2757, #3149).
- Emit tool-result events for denied HITL calls and support custom denial reasons (#3104, #2546).
- Make JSON Schema generation thread-safe (#2796).
Model Providers
- Default plaintext HTTP requests to HTTP/1.1 to prevent h2c upgrades from losing POST bodies with vLLM / uvicorn (#3214).
- Preserve reasoning details from all streaming chunks and thought signatures across JSON persistence round-trips; remove redundant OpenAI tool metadata (#3128, #2910, #2914).
- Move cache control to content blocks (#2878).
- Decouple DashScope streaming from thinking mode, allow custom multimodal endpoint detection, and offload blocking embedding SDK calls (#3137, #3163, #3265).
- Correct Gemini token usage accounting (#3034).
- Serialize Ollama tool-result names as
tool_nameand expose thinking output asThinkingBlock(#3093, #3146).
Harness / Sandbox / Integrations
- Preserve non-UTF-8 file uploads and expose session workspace paths in prompts (#2456, #3020).
- Rebind Kubernetes remote snapshots on state resume and preserve wrapping newlines in commands (#3025, #3204).
- Improve Docker sandbox native file transfer and reject truncated downloads (#2923).
- Keep MCP connections open for AgentRun sandboxes that are not owned by the caller; preserve image URLs in MCP tool results (#2302, #3053).
- Allow path separators in JDBC sandbox-shaped slot IDs (#3233).
- Preserve AG-UI tool results after permission resume, assign unique IDs to discontinuous text segments, and clear active-run markers before terminal signals (#3100, #3010, #3109).
- Propagate WeCom send rejections as stream errors (#3173).
- Use modular core and AG-UI dependencies in Spring Boot starters (#3156).
- Normalize Milvus L2 retrieval scores and escape WordReader Markdown table cells (#3070, #3169).
- Add bilingual Agent Harness building guides and rebuild AgentScope Service product guides (#3139, #3136).
- Document Jev structured decision integration and correct the documented
CompactionConfig.keepTokensdefault (#3274, #3144).
Full changelog: v2.0.3...v2.0.4
Nightly
- [py] Validate WebSocket response interval correctly by @cuishuang in https://github.com/SeleniumHQ/selenium/pull/17984
- [py][bidi] Send setClientWindowState rect members as sibling params by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/18100
- [rust] Degrade to empty metadata when the cache cannot be read by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/18101
- [dotnet] [test] Separate project for NUnit infrastructure by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/18104
- [java] Do not leak the HttpClient on startup failure by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/18047
- [java] Add RemoteWebDriver.getClientFactory() and move HttpCommandExecutor field removal to 4.53 by @diemol in https://github.com/SeleniumHQ/selenium/pull/18111
- [dotnet] [test] Parallelize internal testing by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/18110
- [build] pin Firefox BiDi vendor CDDL from the Firefox repository by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18094
- [build] remove obsolete third_party dependencies and dead build references by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18072
- [build] generate release docs at approval and commit them after the packages publish by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18113
- [dotnet] [test] Upgrade NUnit library to v5 by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/18114
- [build] recover from incomplete Java release by dropping staged repositories when found by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18112
- [dotnet] [build] Escape macOS Edge browser path by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/18126
- [js][bidi] Add vendor specific class generation by @pujagani in https://github.com/SeleniumHQ/selenium/pull/18125
- [java] assert setFiles uploads reach the server in SetFilesCommandTest by @yashp676 in https://github.com/SeleniumHQ/selenium/pull/18058
- [java][bidi] Decode nested RemoteValues from the parsed tree instead of re-serializing each subtree by @yashp676 in https://github.com/SeleniumHQ/selenium/pull/18095
- [rb] type a field-less synthetic map record as a validated map by @aguspe in https://github.com/SeleniumHQ/selenium/pull/18121
- [java] remove guava from client bindings #12737 by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/13739
- [build] clean up IntelliJ project files and align .editorconfig with formatters by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18119
- [javascript] Create @seleniumhq/atoms npm package from TypeScript atoms by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17459
- [java][bidi] Add BiDi code generator by @pujagani in https://github.com/SeleniumHQ/selenium/pull/17777
- [java][bidi] Type field-less synthetic map records as Map<String, V> by @yashp676 in https://github.com/SeleniumHQ/selenium/pull/18122
- [javascript] Publish atoms under the @selenium npm scope by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/18132
- [build] sign Java artifacts in-process with in-memory PGP keys instead of gpg-agent by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/18130
- @cuishuang made their first contribution in https://github.com/SeleniumHQ/selenium/pull/17984
Full Changelog: https://github.com/SeleniumHQ/selenium/compare/selenium-4.50.0...nightly