Eino: v0.7.*-interrupt resume refactor
Version Overview
v0.7.0 is an important milestone release for the Eino framework. The core highlight is the architecture-level refactoring of Human in the Loop (HITL) / Interrupt-Resume capabilities, providing a more powerful and flexible interrupt-resume mechanism. It also introduces Skill middleware, ChatModel retry mechanism, multimodal tool support, and other core capabilities.
v0.7.0
Release Date: 2025-11-20
π₯ Core Changes: Interrupt-Resume Architecture Refactor (#563)
v0.7.0 performed an architecture-level refactor of the interrupt-resume mechanism, with massive code changes (+7527/-1692 lines), involving major modifications to 28 files.
New Core Modules
- compose/resume.go: Provides type-safe resume state retrieval API
GetInterruptState[T]: Get the persisted state from last interruptGetResumeContext: Check if current component is the resume target
- internal/core/interrupt.go: Interrupt signal core definitions
InterruptSignal: Nested interrupt signal structure supportInterruptState: State and layer-specific payload supportInterruptConfig: Interrupt configuration parameters
- internal/core/address.go: Component address system
- internal/core/resume.go: Core implementation of resume logic
Refactored Core Modules
- adk/interrupt.go: ADK layer interrupt handling refactor (+238 lines)
- compose/interrupt.go: Orchestration layer interrupt handling refactor (+256 lines)
- adk/workflow.go: Workflow Agent supports interrupt-resume (+510 lines refactored)
- compose/graph_run.go: Graph execution interrupt-resume support
- compose/tool_node.go: Tool node interrupt support
New Resume Strategies
Two resume strategies are supported:
- Implicit “Resume All”: Single “continue” button resumes all interrupt points
- Explicit “Targeted Resume”: Independent resumption of specific interrupt points (recommended)
Agent Tool Interrupt Improvements
- Use
GetInterruptStateinstead of manual state management - Support
CompositeInterruptcomposite interrupts - Agent Tool correctly propagates internal interrupt signals
Other Improvements
- ADK serialization enhancement (#557): Fixed missing type registration for gob serialization in checkpoint
- DeepAgent optimization (#558): Automatically remove task tool when no sub-Agents
- ChatModelAgent improvement (#552): Correctly apply compose option when no tools configured
- Plan-Execute enhancement (#555): Correctly report error when no tool calls
- MultiAgent fix (#548): Fixed default summary prompt not working issue
v0.7.1 - v0.7.36 Main Updates
Interrupt-Resume Continuous Enhancement
Building on v0.7.0’s architecture refactor, subsequent versions continue to improve interrupt-resume capabilities:
Tool Interrupt API (#691)
- New tool interrupt API: Support triggering interrupts during tool execution
- Extended isResumeTarget: Support descendant target identification
Nested Agent Interrupt Resume (#647, #672)
- Nested preset/workflow Agents: Support interrupt-resume for arbitrary level Agent wrappers
- Wrapped FlowAgents: Correctly handle deterministic transfer skip
Checkpoint Enhancement
- Node input persistence (#634): Persist rerun node inputs in checkpoint
- Graph resume improvement (#695): Correctly enable ProcessState in OnStart during resume
- Serialization fixes (#608, #606): Fixed array/slice deserialization panic
Tool Error Handling (#583)
- Tool error handler no longer wraps interrupt error
Major New Features
Skill Middleware (#661)
- Encapsulate reusable capabilities as Skills
- Extend Agent capabilities through middleware
- Optimized Skill prompts (#724)
ChatModel Retry Mechanism (#635)
- ChatModelAgent supports automatic retry on call failure
- Configurable ModelRetryConfig (#648)
- Added WillRetryError for error chain checking (#707)
Multimodal Tool Support (#760)
- compose module enhanced tool interface
- Support multimodal input and output
Nested Graph State Access (#584)
- Nested Graph can access parent Graph state
Feature Enhancements
- Execute Backend & Tool (#682)
- OutputKey configuration (#711): Store final answer to SessionValues
- Nested Runner shared session (#645)
- Agent event emission (#620, #791)
- ToJSONSchema deterministic output (#630)
- Token usage details (#629)
Bug Fixes
- AfterChatModel returns modified message (#717, #792)
- Loop Agent BreakLoopAction interrupt (#814)
- Sub-Agent error terminates loop Agent (#813)
- Streaming execution command no output error (#790)
- DeepAgent auto instruction rendering (#726)
- Graph duplicate skip reporting (#694)
- Graph unique successors (#693)
Documentation & Engineering
- Rewrote README focusing on ADK (#748, #686, #719)
- Enabled golangci-lint (#602)
- Added code style guide (#673)