mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-19 02:18:25 +08:00
Add an opt-in human approval gate so Agent runs pause before executing MCP tools that operators flag as dangerous, surface an approval card in the chat UI, and only resume after the user approves (optionally with edited args) or rejects. Backend - New mcp_tool_approvals table + repo/service to mark per-tool approval required (PG migration 000042 + sqlite init). - approval.Gate coordinates RequestAndWait / Resolve with sync.Once delivery, configurable timeout, and Redis Pub/Sub fan-out so multi- replica deployments work without sticky sessions. - MCPTool.Execute integrates the gate; uses a round-level ApprovalCtx (without the per-tool 60s timeout) for the wait, and re-derives a fresh 60s exec ctx after approval so CallTool keeps a full window. - New SSE response types (tool_approval_required / _resolved) and EventBus events plumb approval state to AgentStreamDisplay. - REST: list/set per-tool approval flag, resolve pending approval. - Configurable via agent.tool_approval_timeout_seconds (yaml) or WEKNORA_AGENT_TOOL_APPROVAL_TIMEOUT env (accepts seconds or Go duration). Frontend - MCP settings: per-tool "require approval" switch on the test panel. - Chat: ToolApprovalCard renders the pause point with editable JSON args, validation feedback, mm:ss countdown that turns warning/danger near deadline, and a resolved state that retains context. - i18n strings added for zh-CN / en-US / ko-KR / ru-RU. Docs - docs/zh/mcp-approval.md covering behavior, config, API, deployment considerations (Redis cross-instance, restart limitations).
20 lines
679 B
SQL
20 lines
679 B
SQL
DROP TABLE IF EXISTS tenant_disabled_shared_agents;
|
|
DROP TABLE IF EXISTS agent_shares;
|
|
DROP TABLE IF EXISTS organization_join_requests;
|
|
DROP TABLE IF EXISTS kb_shares;
|
|
DROP TABLE IF EXISTS organization_members;
|
|
DROP TABLE IF EXISTS organizations;
|
|
DROP TABLE IF EXISTS custom_agents;
|
|
DROP TABLE IF EXISTS mcp_tool_approvals;
|
|
DROP TABLE IF EXISTS mcp_services;
|
|
DROP TABLE IF EXISTS knowledge_tags;
|
|
DROP TABLE IF EXISTS auth_tokens;
|
|
DROP TABLE IF EXISTS users;
|
|
DROP TABLE IF EXISTS chunks;
|
|
DROP TABLE IF EXISTS messages;
|
|
DROP TABLE IF EXISTS sessions;
|
|
DROP TABLE IF EXISTS knowledges;
|
|
DROP TABLE IF EXISTS knowledge_bases;
|
|
DROP TABLE IF EXISTS models;
|
|
DROP TABLE IF EXISTS tenants;
|