Description 改造目标
让 TUI 只消费 gateway 已定义的协议与数据结构,不再在 TUI 侧“再定义一套”。
保持单版本、强约束,不做历史版本兼容分支。
出错尽早失败(fail-fast),避免静默降级。
总体策略
以 internal/gateway/protocol + internal/gateway/contracts 作为唯一契约源。
TUI 保留“展示层模型”,但传输层/调用层全部改为 gateway 类型直通。
删除本地兜底路径(如本地拼装旧 payload、多层 envelope 猜测)。
具体改造方案(按优先级)
收敛 Runtime 接口到 gateway 契约
改造 [runtime_contract.go]:
入参优先使用 protocol.RunParams / CompactParams / ExecuteSystemToolParams / ResolvePermissionParams。
返回值优先使用 gateway.SessionSummary / gateway.Session / gateway.CompactResult 等。
删除仅为历史兼容存在的方法链路(PrepareUserInput、Run),统一走 Submit -> gateway.run。
RemoteRuntimeAdapter 改为“薄转发器”
改造 [remote_runtime_adapter.go:
只做三件事:参数合法性校验、调用 gateway、错误透传。
不再在 TUI 侧做业务语义转换(例如本地生成过多 fallback 字段)。
Submit 保留 authenticate + bindStream + run,但不再引入额外兼容分支。
事件流严格按 gateway envelope 解码
改造 [gateway_stream_client.go]:
保持只接受 gateway.event。
payload_version 改为引用共享常量(建议将版本常量上移到 gateway/protocol,TUI 不再硬编码)。
去掉“多层 payload 猜测”逻辑,固定按 gateway runtime bridge 当前结构解码;不匹配直接报错并停止流。
启动注入点固定为 gateway runtime
保持 [bootstrap.go]当前远端注入模式,但补充“启动期契约探测”:
启动时执行一次轻量握手(authenticate + bindStream),失败直接退出,不做本地 runtime 回退。
错误语义统一到 gateway code
TUI 错误映射仅识别 protocol.JSONRPCError.Data.GatewayCode,不要再做本地推断。
UI 文案层可映射为用户可读提示,但不改变语义。
清理桥接别名层
评估 [gateway_rpc_client_bridge.go:
若仅 type alias,可直接在 TUI service 引用 internal/gateway/client,减少一层“伪解耦”。
若保留该文件,只保留构造器注入价值,不再重复声明类型别名。
不做的事情(避免过分兼容)
不支持多 payload_version 并行解析。
不保留旧字段名/旧方法名 fallback。
不在 TUI 侧复刻 gateway 的 session/run 绑定策略。
不在 TUI 侧补偿 gateway 缺失能力(缺啥就报错)。
验收标准
TUI 所有 RPC method 名称来自 protocol.Method* 常量。
TUI 传输层不再定义重复 DTO(以 gateway/protocol 类型为主)。
事件流只接受当前协议版本,版本不符启动或运行期明确失败。
关键流程(run/compact/permission/session load)端到端用例通过。
Reactions are currently unavailable
You can’t perform that action at this time.
改造目标
总体策略
internal/gateway/protocol+internal/gateway/contracts作为唯一契约源。具体改造方案(按优先级)
protocol.RunParams / CompactParams / ExecuteSystemToolParams / ResolvePermissionParams。gateway.SessionSummary / gateway.Session / gateway.CompactResult等。PrepareUserInput、Run),统一走Submit -> gateway.run。Submit保留authenticate + bindStream + run,但不再引入额外兼容分支。gateway.event。payload_version改为引用共享常量(建议将版本常量上移到 gateway/protocol,TUI 不再硬编码)。authenticate + bindStream),失败直接退出,不做本地 runtime 回退。protocol.JSONRPCError.Data.GatewayCode,不要再做本地推断。internal/gateway/client,减少一层“伪解耦”。不做的事情(避免过分兼容)
payload_version并行解析。验收标准
protocol.Method*常量。