You've already forked agentic-coding-workflow
26 lines
1.5 KiB
SQL
26 lines
1.5 KiB
SQL
-- ============ ACP 工具调用权限审批 ============
|
|
|
|
-- agent kind 的工具白名单:命中的工具调用自动放行(status=auto),未命中走人工审批。
|
|
-- 空数组表示无白名单(全部需人工审批);含 '*' 表示全部自动放行。
|
|
ALTER TABLE acp_agent_kinds ADD COLUMN tool_allowlist TEXT[] NOT NULL DEFAULT '{}';
|
|
|
|
-- 代理发起的 session/request_permission 请求落库,供人工审批与审计。
|
|
CREATE TABLE acp_permission_requests (
|
|
id UUID PRIMARY KEY,
|
|
session_id UUID NOT NULL REFERENCES acp_sessions(id) ON DELETE CASCADE,
|
|
agent_request_id TEXT NOT NULL DEFAULT '', -- 代理 JSON-RPC request id(排障/幂等)
|
|
tool_name TEXT NOT NULL DEFAULT '', -- 从 toolCall 提取的工具标识,便于展示
|
|
tool_call JSONB NOT NULL, -- 原始 toolCall 对象
|
|
options JSONB NOT NULL, -- 原始 options 数组
|
|
status TEXT NOT NULL, -- pending|approved|denied|auto|expired
|
|
chosen_option_id TEXT, -- 最终选中的 option id
|
|
decided_by UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
decided_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
CONSTRAINT acp_perm_status_check
|
|
CHECK (status IN ('pending','approved','denied','auto','expired'))
|
|
);
|
|
|
|
CREATE INDEX idx_acp_perm_session_status ON acp_permission_requests(session_id, status);
|
|
CREATE INDEX idx_acp_perm_pending ON acp_permission_requests(status) WHERE status = 'pending';
|