site: drop path references from the Nook agents page

The Nook's config, hook binary, plugins and state all live under
~/.nook now, so per-agent filesystem paths on the /agents cards were
both stale and repetitive — every plugin is stored canonically under
~/.nook/plugins and only linked out to each agent's own config dir.
The wiring copy now describes the mechanism, not the location.

The card review also surfaced drift against hook/setup.go, plugins/*
and AgentRegistry: OpenClaw listed AgentResponse, an event renamed to
Stop in NOOK-298, and several cards missed events their integrations
actually emit (SessionError on halted sessions, AgentStart on pi/omp,
PermissionRequest/Resolved on omp, QuestionAsked on hermes, and
Codex's SessionEnd/PreToolUse/PostToolUse). Codex's gating now notes
its user-input questions are answered from a card too.

Tests: bun test (505 pass, 3 skip, 1 pre-existing queryAuditLogs
failure identical to master); tsc --noEmit diagnostics identical to
master.

NOOK-353

Co-Authored-By: kimi-k3-flex <noreply@freno.me>
This commit is contained in:
2026-10-14 10:01:52 -04:00
parent 14a61fde9b
commit f6d6d442de

View File

@@ -27,13 +27,14 @@ interface AgentEntry {
const AGENTS: AgentEntry[] = [ const AGENTS: AgentEntry[] = [
{ {
name: "Claude Code", name: "Claude Code",
wiring: "Hook entries in settings.json pointing at the shared hook binary", wiring: "Hook entries in its settings, calling the shared hook binary",
events: [ events: [
"UserPromptSubmit", "UserPromptSubmit",
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
"Stop", "Stop",
"StopFailure", "StopFailure",
"SessionError",
"SubagentStart", "SubagentStart",
"SubagentStop", "SubagentStop",
"Notification", "Notification",
@@ -49,14 +50,23 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Codex", name: "Codex",
wiring: "Hook entries in hooks.json (+ hooks enabled in config.toml)", wiring: "Hook entries in its config, with its hooks feature enabled",
events: ["SessionStart", "UserPromptSubmit", "PermissionRequest", "Stop"], events: [
gating: "Full — permission prompts can be allowed or denied from a card" "SessionStart",
"SessionEnd",
"UserPromptSubmit",
"PreToolUse",
"PermissionRequest",
"PostToolUse",
"Stop",
"SessionError"
],
gating:
"Full — command/file approvals and user-input questions can be answered from a card"
}, },
{ {
name: "OpenCode", name: "OpenCode",
wiring: wiring: "In-process plugin on its server bus",
"In-process plugin (~/.config/opencode/plugins/nook.js) on the server bus",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
@@ -64,6 +74,7 @@ const AGENTS: AgentEntry[] = [
"PreToolUse", "PreToolUse",
"PostToolUse", "PostToolUse",
"Stop", "Stop",
"SessionError",
"MessageUpdate", "MessageUpdate",
"PermissionRequest", "PermissionRequest",
"QuestionAsked" "QuestionAsked"
@@ -73,14 +84,16 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Pi", name: "Pi",
wiring: "In-process extension (~/.pi/agent/extensions/nook.ts)", wiring: "In-process extension registered in its settings",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
"AgentStart",
"UserPromptSubmit", "UserPromptSubmit",
"PreToolUse", "PreToolUse",
"PostToolUse", "PostToolUse",
"Stop", "Stop",
"SessionError",
"MessageUpdate", "MessageUpdate",
"QuestionAsked", "QuestionAsked",
"QuestionResolved" "QuestionResolved"
@@ -90,14 +103,18 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Oh My Pi", name: "Oh My Pi",
wiring: "In-process extension package (~/.omp/agent/extensions/nook/)", wiring: "In-process extension package",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
"AgentStart",
"UserPromptSubmit", "UserPromptSubmit",
"PreToolUse", "PreToolUse",
"PermissionRequest",
"PermissionResolved",
"PostToolUse", "PostToolUse",
"Stop", "Stop",
"SessionError",
"MessageUpdate", "MessageUpdate",
"QuestionAsked", "QuestionAsked",
"QuestionResolved" "QuestionResolved"
@@ -108,7 +125,7 @@ const AGENTS: AgentEntry[] = [
{ {
name: "Muse", name: "Muse",
wiring: wiring:
"Plugin at ~/.nook/plugins/muse, installed, approved and enabled through Muse's own plugins CLI; each hook calls the shared hook binary. This Mac only — remote hosts skip it", "Plugin installed, approved and enabled through Muse's own plugins CLI; each hook calls the shared hook binary. This Mac only — remote hosts skip it",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
@@ -140,18 +157,20 @@ const AGENTS: AgentEntry[] = [
"PreToolUse", "PreToolUse",
"PostToolUse", "PostToolUse",
"SubagentStart", "SubagentStart",
"SubagentStop" "SubagentStop",
"QuestionAsked"
], ],
gating: gating:
"Observation — every event appears as a card; the agent keeps its own prompting" "Observation — every event appears as a card; the agent keeps its own prompting"
}, },
{ {
name: "OpenClaw", name: "OpenClaw",
wiring: "Hook handler package (~/.openclaw/hooks/nook/)", wiring: "Hook handler package in its hooks directory",
events: [ events: [
"SessionStart", "SessionStart",
"UserPromptSubmit", "UserPromptSubmit",
"AgentResponse", "Stop",
"SessionError",
"PreCompact", "PreCompact",
"SessionEnd" "SessionEnd"
], ],
@@ -160,7 +179,7 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Z.ai (ZCode)", name: "Z.ai (ZCode)",
wiring: "Hook entries in ~/.zcode/cli/config.json", wiring: "Hook entries in its CLI config",
events: [ events: [
"SessionStart", "SessionStart",
"UserPromptSubmit", "UserPromptSubmit",
@@ -175,12 +194,13 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Gemini CLI", name: "Gemini CLI",
wiring: "Hook entries in settings.json", wiring: "Hook entries in its settings",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
"AgentStart", "AgentStart",
"Stop", "Stop",
"SessionError",
"Notification" "Notification"
], ],
gating: gating:
@@ -188,7 +208,7 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "Cline", name: "Cline",
wiring: "One hook file per event in ~/Documents/Cline/Hooks", wiring: "One hook file per event in its hooks directory",
events: [ events: [
"SessionStart", "SessionStart",
"SessionEnd", "SessionEnd",
@@ -205,7 +225,7 @@ const AGENTS: AgentEntry[] = [
{ {
name: "Qwen Code", name: "Qwen Code",
wiring: wiring:
"Hook entries in settings.json (same surface as the Claude-style schema)", "Hook entries in its settings (same surface as the Claude-style schema)",
events: [ events: [
"UserPromptSubmit", "UserPromptSubmit",
"SessionStart", "SessionStart",
@@ -227,7 +247,7 @@ const AGENTS: AgentEntry[] = [
}, },
{ {
name: "DeepSeek", name: "DeepSeek",
wiring: "Standalone hooks.json at ~/.dsh", wiring: "A standalone hooks file its bridge is pointed at",
events: [ events: [
"SessionStart", "SessionStart",
"UserPromptSubmit", "UserPromptSubmit",