Skip to content

v2.0.0-RC5

Choose a tag to compare

@chickenlj chickenlj released this 07 Jul 07:47

v2.0.0-RC5

This release completes the model-provider modularization (all providers extracted from agentscope-core into independent agentscope-extensions-model-* modules), adds unified multimodal DataBlock support across all providers, introduces native structured output for tool calls, and includes 30+ bug fixes spanning agent lifecycle, sandbox, tracing, A2A, and subagent propagation.

Breaking Changes

  • Model provider modularization: OpenAI, Gemini, Anthropic, DashScope, and Ollama model providers have been moved from agentscope-core into separate agentscope-extensions-model-* extension modules. Applications must add the corresponding extension dependency. (#1890, #1916, #1947, #1972)

New Features

  • Unified DataBlock support in all provider message converters (OpenAI, DashScope, Gemini, Anthropic), covering single-agent, multi-agent, and tool-result paths (#1933)
  • Native structured output handling with tools — models that support structured output can now enforce JSON schema constraints alongside tool calls (#1904)
  • Native structured output support for DashScope models (#1935)
  • httpRequestCustomizer support in McpClientBuilder for dynamic token injection (e.g. OAuth refresh) (#1992)
  • Align AguiEvent with the AG-UI protocol spec — add missing event types (#1862)
  • Optional skill allowlist filter for subagents (#1873)
  • knownSkillNames support in NacosSkillRepository (#1853)
  • CosAgentStateStore, CosBaseStore and CosDistributedStore for Tencent Cloud COS-backed state persistence (#1857)
  • Expose cached prompt tokens in ChatUsage (#1868)

Bug Fixes

Core / Agent

  • Persist agent state on user interrupt recovery (#2008)
  • Wire fallback model into ReActAgent (#1851)
  • Fix ReActAgent stream event block end ordering (#1829)
  • Update ToolResultBlock state before adding to agent context (#1886)
  • Reuse classpath skill JAR file systems to avoid resource leaks (#1981)
  • Resolve serializeOnKey gate leak in Flux.create callbacks (#1796)

Model Providers

  • Map thinkingBudget to OpenAI-compatible API request (#2028)
  • Fix Anthropic stream thinking event handling (#1943)
  • Preserve executionConfig in OllamaOptions fromOptions/toBuilder (#2011)
  • Degrade forced tool choice in DashScope thinking mode (#1882)

Harness / Sandbox

  • Restore remote snapshot state deserialization — re-inject RemoteSnapshotClient after Jackson round-trip (#2013)
  • Fix THROTTLED memory save mode losing state when recreating instances per request (#1788)
  • Propagate userId through wakeup dispatch (#2001)
  • Run message bus heartbeat on boundedElastic instead of parallel scheduler (#1974)
  • Avoid duplicating GracefulShutdownMiddleware in fromAgent (#1952)
  • Escape spaces in skill paths returned by ShellPathPolicy (#2031)
  • Fallback to simple key-value extraction when YAML parsing fails (#2027)
  • Report sandbox file sizes in ls (#1838)
  • Normalize Windows list_files paths (#1892)
  • Normalize \r\n to \n for file content in LocalFilesystem.edit() (#2020)
  • Treat "." as root equivalent in CompositeFilesystem (#1830)
  • Validate working_directory to prevent namespace escape (#1834)
  • Fall back to LocalFilesystemSpec when no distributed AgentStateStore is configured (#1841)
  • Fix WebSocket race in Kubernetes hydrateWithArchive causing exit=null (#1903)
  • Tolerate wrapped sandbox base64 downloads (#1866)
  • Remove AgentRun sandbox API version prefix (#1891)
  • Add connect JSON codec support for E2B sandbox (#1844)

Tracing / Observability

  • Fix orphan spans in OtelTracingMiddleware by reading parent OTel Context from Reactor ContextView (#1940)
  • Fix child spans not seeing correct parent spans in OtelTracingMiddleware (#1909)
  • Propagate Reactor context to chunk event hooks (#1923)

Subagent

  • Propagate parent RuntimeContext to child agents (#1833)
  • Propagate parent middleware to subagents (#1843)

A2A

  • Handle streaming backpressure (#1734)
  • Preserve AgentScope message roles across A2A conversion (#1995)

AG-UI

  • Propagate run input and frontend tools (#1895)

Middleware

  • Wrap doFlush in Mono.defer to prevent premature evaluation (#1880)

Other

  • Nacos auto-configurations should be opt-in (matchIfMissing=false) and fix A2A server-addr override (#1709)
  • Add ObjectMapper bean for MarketContributionService in DataAgent (#1993)

Documentation

  • Clarify stream event blockId semantics (#2016)
  • Improve model provider documentation (#1986)
  • Remove invalid ChatResponse.isLast references (#1921)
  • Fix multi-replica Redis example — declare jedis dependency and add stateStore (#1869)
  • Fix MemoryCompactionExample to show memory files and fire compaction (#1978)