security(executor): 统一工具级审批 + env 白名单 + 结构化结果

P0-1 统一审批: 高风险工具在 spawn 前统一走审批,与后续消息类型
      (result/http/db) 无关,堵住 stdio→result 绕过审批的漏洞。
      移除 http/db 分支内重复审批(入口已授权)。
P0-4 env 白名单: spawn 前 cmd.env_clear(),仅注入 PATH + spec 声明
      的 env 变量,避免工具读取宿主全部 API key/数据库密码。
      tool_manager spec 补充 HOME/CARGO_HOME/RUSTUP_HOME 供 cargo 使用。
P1-10 结构化结果: 引入 ToolRunOutcome{Ok,Err{kind,message}} 与
      ToolErrorKind 枚举,executor/registry dispatch 返回结构化结果。
      daemon 与 CLI 据此判断成败,删除脆弱的 is_tool_error 字符串前缀
      匹配;失败时记录 kind 便于追踪。
This commit is contained in:
2026-06-22 10:47:01 +08:00
parent bf231352fb
commit 4f80e81b0b
5 changed files with 160 additions and 115 deletions
@@ -5,6 +5,10 @@ tool: tool_manager
path: /target/release/tool_manager
risk_level: high
timeout_secs: 300
env:
- HOME
- CARGO_HOME
- RUSTUP_HOME
params:
- name: action
required: true