f3bf42c432
HITL 持久化中断/恢复的地基:compose checkpoint 需要一个可持久化、抗重启的 存储后端。dispatcher 是"只说 NATS、无 DB"的纯净设计,故复用既有 JetStream (bus.js)开 KV 桶,不引 Redis、不破坏架构原则。 - shared/bus: 新增 KVHandle + Bus.Checkpoints(bucket, ttl)。薄封装把 NATS 细节(ErrKeyNotFound→ok=false、Delete 幂等)挡在 bus 内,对外是朴素 Get/Put/Delete;bus 无需反向依赖 eino。File 存储 + 桶级 TTL 兜底清理。 - dispatcher/eino: checkpointStore 把 CheckpointKV 适配成 compose.CheckPointStore (Get/Set + 可选 Delete)。CheckpointKV 是最小接口,bus.KVHandle 结构化满足。 - 测试: 内存桩往返(Set→Get→Delete→miss)+ 编译期契约断言 `var _ CheckpointKV = (*bus.KVHandle)(nil)` 钉死 bus↔eino 隐式契约。 零爆炸半径(纯新增)。go test ./... 全绿。 下一步增量2:审批节点改 compose.Interrupt + Orchestrator 识别中断置 waiting。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>