Files
agent-ui/.claude/settings.local.json
josedario87 816a8d9abe feat: Rich hook forwarding, permission bridge, and toast notifications
Replace hardcoded PowerShell status hooks with stdin-forwarding hooks
that send full Claude Code hook data (tool_input, tool_response, prompt,
session_id, model, etc.) to /api/claude-hook endpoint.

- PowerShell hooks read stdin JSON and POST to /api/claude-hook
- Server derives status for backward-compat FAB animations
- Server extracts assistant_response from transcript on Stop events
- New /api/claude-permission endpoint with Promise-based allow/deny flow
- HookNotifications.vue: toast system showing session, prompt, tool use,
  tool results, notifications, and final assistant response
- WebSocket broadcast for claude-hook and claude-permission message types
2026-02-15 16:16:59 -06:00

177 lines
7.1 KiB
JSON

{
"permissions": {
"allow": [
"Skill(playwright-cli)",
"Bash(playwright-cli close:*)",
"Bash(playwright-cli open:*)",
"Bash(playwright-cli screenshot:*)",
"WebFetch(domain:github.com)",
"Bash(playwright-cli goto:*)",
"Bash(playwright-cli snapshot:*)",
"Bash(playwright-cli mousewheel:*)",
"Bash(playwright-cli eval:*)",
"Bash(playwright-cli tab-list:*)",
"Bash(playwright-cli tab-select:*)",
"Bash(playwright-cli click:*)",
"Bash(playwright-cli press:*)",
"WebFetch(domain:gitea.nucleoriofrio.com)",
"Bash(dir \"C:\\\\Users\\\\jodar\\\\agent-ui\")",
"WebSearch",
"Bash(cmd /c \"bun --version\")",
"Bash(powershell -Command \"bun --version\")",
"Bash(C:Usersjodar.bunbinbun.exe create vite . --template vue-ts)",
"mcp__agent-ui___webmcp_get-token",
"mcp__agent-ui___webmcp_quitar-tool",
"mcp__agent-ui__localhost_3000-render_html",
"mcp__agent-ui__localhost_4100-navigate_to",
"mcp__agent-ui__localhost_4100-get_design_tokens",
"mcp__agent-ui__localhost_4100-set_theme_variable",
"mcp__agent-ui__localhost_4100-list_available_tools",
"mcp__agent-ui__localhost_4100-switch_theme",
"mcp__agent-ui__localhost_4100-set_default_theme",
"mcp__agent-ui__localhost_4100-save_theme",
"mcp__agent-ui___webmcp_browser-info",
"mcp__agent-ui__localhost_4100-render_vue_component",
"Bash(bun remove:*)",
"Bash(bun add:*)",
"mcp__agent-ui__localhost_4100-confetti",
"mcp__agent-ui__localhost_4100-get_current_page",
"mcp__agent-ui___webmcp_server-info",
"mcp__agent-ui__localhost_4100-toggle_pin_tool",
"mcp__agent-ui__localhost_4100-pin_tool",
"Bash(npx vue-tsc:*)",
"mcp__agent-ui__localhost_4100-activate_tool",
"mcp__agent-ui__localhost_4100-terminal_open",
"mcp__agent-ui__localhost_4100-terminal_move",
"mcp__agent-ui__localhost_4100-terminal_resize",
"mcp__agent-ui__localhost_4100-terminal_toggle",
"mcp__agent-ui__localhost_4100-terminal_close",
"mcp__agent-ui__localhost_4100-bubbleResponse",
"mcp__agent-ui__localhost_4100-notificar",
"mcp__agent-ui__localhost_4100-enviar_al_panel",
"mcp__agent-ui__localhost_4100-render_html",
"mcp__agent-ui__localhost_4100-load_vue_component",
"mcp__agent-ui__localhost_4100-page_refresh",
"WebFetch(domain:docs.anthropic.com)",
"mcp__agent-ui__z590_nucleoriofrio_com-bubbleResponse",
"Bash(git add:*)",
"Bash(git commit:*)",
"mcp__agent-ui__z590_nucleoriofrio_com-navigate_to",
"mcp__agent-ui__z590_nucleoriofrio_com-activate_tool",
"mcp__agent-ui__z590_nucleoriofrio_com-list_available_tools",
"mcp__agent-ui__z590_nucleoriofrio_com-page_refresh",
"mcp__agent-ui__z590_nucleoriofrio_com-render_html",
"mcp__agent-ui__z590_nucleoriofrio_com-render_vue_component",
"mcp__agent-ui__z590_nucleoriofrio_com-pin_tool",
"mcp__agent-ui__z590_nucleoriofrio_com-list_torch_clients",
"mcp__agent-ui__z590_nucleoriofrio_com-transfer_torch",
"mcp__agent-ui__z590_nucleoriofrio_com-get_current_page",
"mcp__agent-ui__z590_nucleoriofrio_com-list_windows",
"mcp__agent-ui__z590_nucleoriofrio_com-move_window",
"mcp__agent-ui__z590_nucleoriofrio_com-close_window",
"mcp__agent-ui__z590_nucleoriofrio_com-get_canvas_css",
"mcp__agent-ui__z590_nucleoriofrio_com-inspect_window",
"mcp__agent-ui__z590_nucleoriofrio_com-get_canvas",
"mcp__agent-ui__z590_nucleoriofrio_com-canvas_js",
"mcp__agent-ui__z590_nucleoriofrio_com-canvas_css",
"mcp__agent-ui__z590_nucleoriofrio_com-edit_canvas",
"mcp__agent-ui__z590_nucleoriofrio_com-load_vue_component",
"mcp__agent-ui__z590_nucleoriofrio_com-save_vue_component",
"mcp__agent-ui__z590_nucleoriofrio_com-resize_window",
"mcp__agent-ui__z590_nucleoriofrio_com-save_canvas_snapshot",
"mcp__agent-ui__z590_nucleoriofrio_com-load_canvas_snapshot",
"mcp__agent-ui__z590_nucleoriofrio_com-list_canvas_snapshots",
"mcp__agent-ui__z590_nucleoriofrio_com-list_canvases",
"mcp__agent-ui__z590_nucleoriofrio_com-list_vue_components",
"Bash(jq:*)"
]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"agent-ui"
],
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"PreToolUse": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"PostToolUse": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"PermissionRequest": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"Notification": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 5000
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -Command \"try{$b=[Console]::In.ReadToEnd();Invoke-RestMethod -Uri 'http://localhost:4101/api/claude-hook' -Method POST -Body $b -ContentType 'application/json' -TimeoutSec 3|Out-Null}catch{}\"",
"timeout": 10000
}
]
}
]
}
}