108 lines
3.0 KiB
JSON
108 lines
3.0 KiB
JSON
{
|
|
"_comment": [
|
|
"grok-glance hook wiring.",
|
|
"Passive events use type=http: they POST straight into the daemon with no process spawn,",
|
|
"so they cost ~nothing per tool call and fail open if the daemon is not running.",
|
|
"SessionStart uses type=command because it is what boots the daemon.",
|
|
"PreToolUse is wired twice on purpose: an http entry records every tool call for the",
|
|
"timeline, and a command entry gates only risky tools, because only a command hook has a",
|
|
"documented way to return a deny decision.",
|
|
"If you change the port in ~/.grok/glance/config.json, run `glance sync-hooks` to rewrite",
|
|
"the URLs below, or edit them by hand."
|
|
],
|
|
"hooks": {
|
|
"SessionStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"$GROK_PLUGIN_ROOT/bin/glance-up.mjs\"",
|
|
"timeout": 20
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PreToolUse": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "http",
|
|
"url": "http://127.0.0.1:8791/hook/record",
|
|
"timeout": 3
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"matcher": "^(Bash|Write|Edit|MultiEdit|NotebookEdit)$",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"$GROK_PLUGIN_ROOT/bin/glance-approve.mjs\"",
|
|
"timeout": 125
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PostToolUse": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"PostToolUseFailure": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"UserPromptSubmit": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"PermissionDenied": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"Notification": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"Stop": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"StopFailure": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"SubagentStart": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"SubagentStop": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"PreCompact": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"PostCompact": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
],
|
|
"SessionEnd": [
|
|
{
|
|
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8791/hook/record", "timeout": 3 }]
|
|
}
|
|
]
|
|
}
|
|
}
|