feat: MCP permission model + unified policy enforcement + settings UI (Phase 4) (#129) * feat(mcp-bridge): enforce McpPolicy + flat /tools shape - bump data-studio-agent to feat/mcp-permissions (confirm_destructive) - McpConfig.policy field (serde default, backward compatible) - pure check_policy() gates /invoke: mode → allowlist → read-only override → confirm_destructive - invoke_with_policy() extracted for testability - /tools returns flat [{name, description, inputSchema, metadata:{riskLevel, ... #412
| Job | Run time |
|---|---|
| 6m 34s | |
| 2m 16s | |
| 1m 40s | |
| 10m 30s |