{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v node >/dev/null 2>&1 || exit 0\nnode \"${CLAUDE_PLUGIN_ROOT}/hooks/suggest-permissions.mjs\"\nexit $?\n: <<'POLYEOF' #> > $null\nif (-not (Get-Command node -ErrorAction SilentlyContinue)) { exit 0 }\n& node \"${CLAUDE_PLUGIN_ROOT}/hooks/suggest-permissions.mjs\"\nif ($null -eq $LASTEXITCODE) { exit 1 } else { exit $LASTEXITCODE }\nPOLYEOF\n",
            "timeout": 5,
            "once": true
          },
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v node >/dev/null 2>&1 || exit 0\nnode \"${CLAUDE_PLUGIN_ROOT}/hooks/set-session-env.mjs\"\nexit $?\n: <<'POLYEOF' #> > $null\nif (-not (Get-Command node -ErrorAction SilentlyContinue)) { exit 0 }\n& node \"${CLAUDE_PLUGIN_ROOT}/hooks/set-session-env.mjs\"\nif ($null -eq $LASTEXITCODE) { exit 1 } else { exit $LASTEXITCODE }\nPOLYEOF\n",
            "timeout": 5
          },
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v uip >/dev/null 2>&1 || exit 0\nuip track --hook >/dev/null 2>&1\nexit 0\n: <<'POLYEOF' #> > $null\n$c = Get-Command uip.cmd -ErrorAction SilentlyContinue\nif ($null -eq $c) { exit 0 }\n& $c.Source track --hook *> $null\nexit 0\nPOLYEOF\n",
            "async": true
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v uip >/dev/null 2>&1 || exit 0\nuip track --hook >/dev/null 2>&1\nexit 0\n: <<'POLYEOF' #> > $null\n$c = Get-Command uip.cmd -ErrorAction SilentlyContinue\nif ($null -eq $c) { exit 0 }\n& $c.Source track --hook *> $null\nexit 0\nPOLYEOF\n",
            "async": true
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v uip >/dev/null 2>&1 || exit 0\nuip track --hook >/dev/null 2>&1\nexit 0\n: <<'POLYEOF' #> > $null\n$c = Get-Command uip.cmd -ErrorAction SilentlyContinue\nif ($null -eq $c) { exit 0 }\n& $c.Source track --hook *> $null\nexit 0\nPOLYEOF\n",
            "timeout": 30
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v uip >/dev/null 2>&1 || exit 0\nuip track --hook >/dev/null 2>&1\nexit 0\n: <<'POLYEOF' #> > $null\n$c = Get-Command uip.cmd -ErrorAction SilentlyContinue\nif ($null -eq $c) { exit 0 }\n& $c.Source track --hook *> $null\nexit 0\nPOLYEOF\n",
            "async": true
          }
        ]
      }
    ],
    "StopFailure": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo `# <#` >/dev/null\ncommand -v uip >/dev/null 2>&1 || exit 0\nuip track --hook >/dev/null 2>&1\nexit 0\n: <<'POLYEOF' #> > $null\n$c = Get-Command uip.cmd -ErrorAction SilentlyContinue\nif ($null -eq $c) { exit 0 }\n& $c.Source track --hook *> $null\nexit 0\nPOLYEOF\n",
            "async": true
          }
        ]
      }
    ]
  }
}
