From f6d6d442dedf8586f1dd43738ed9361265d8f24e Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Wed, 14 Oct 2026 10:01:52 -0400 Subject: [PATCH] site: drop path references from the Nook agents page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/routes/nook/agents.tsx | 54 ++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/routes/nook/agents.tsx b/src/routes/nook/agents.tsx index 703016c..866ed87 100644 --- a/src/routes/nook/agents.tsx +++ b/src/routes/nook/agents.tsx @@ -27,13 +27,14 @@ interface AgentEntry { const AGENTS: AgentEntry[] = [ { 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: [ "UserPromptSubmit", "SessionStart", "SessionEnd", "Stop", "StopFailure", + "SessionError", "SubagentStart", "SubagentStop", "Notification", @@ -49,14 +50,23 @@ const AGENTS: AgentEntry[] = [ }, { name: "Codex", - wiring: "Hook entries in hooks.json (+ hooks enabled in config.toml)", - events: ["SessionStart", "UserPromptSubmit", "PermissionRequest", "Stop"], - gating: "Full — permission prompts can be allowed or denied from a card" + wiring: "Hook entries in its config, with its hooks feature enabled", + events: [ + "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", - wiring: - "In-process plugin (~/.config/opencode/plugins/nook.js) on the server bus", + wiring: "In-process plugin on its server bus", events: [ "SessionStart", "SessionEnd", @@ -64,6 +74,7 @@ const AGENTS: AgentEntry[] = [ "PreToolUse", "PostToolUse", "Stop", + "SessionError", "MessageUpdate", "PermissionRequest", "QuestionAsked" @@ -73,14 +84,16 @@ const AGENTS: AgentEntry[] = [ }, { name: "Pi", - wiring: "In-process extension (~/.pi/agent/extensions/nook.ts)", + wiring: "In-process extension registered in its settings", events: [ "SessionStart", "SessionEnd", + "AgentStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "Stop", + "SessionError", "MessageUpdate", "QuestionAsked", "QuestionResolved" @@ -90,14 +103,18 @@ const AGENTS: AgentEntry[] = [ }, { name: "Oh My Pi", - wiring: "In-process extension package (~/.omp/agent/extensions/nook/)", + wiring: "In-process extension package", events: [ "SessionStart", "SessionEnd", + "AgentStart", "UserPromptSubmit", "PreToolUse", + "PermissionRequest", + "PermissionResolved", "PostToolUse", "Stop", + "SessionError", "MessageUpdate", "QuestionAsked", "QuestionResolved" @@ -108,7 +125,7 @@ const AGENTS: AgentEntry[] = [ { name: "Muse", 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: [ "SessionStart", "SessionEnd", @@ -140,18 +157,20 @@ const AGENTS: AgentEntry[] = [ "PreToolUse", "PostToolUse", "SubagentStart", - "SubagentStop" + "SubagentStop", + "QuestionAsked" ], gating: "Observation — every event appears as a card; the agent keeps its own prompting" }, { name: "OpenClaw", - wiring: "Hook handler package (~/.openclaw/hooks/nook/)", + wiring: "Hook handler package in its hooks directory", events: [ "SessionStart", "UserPromptSubmit", - "AgentResponse", + "Stop", + "SessionError", "PreCompact", "SessionEnd" ], @@ -160,7 +179,7 @@ const AGENTS: AgentEntry[] = [ }, { name: "Z.ai (ZCode)", - wiring: "Hook entries in ~/.zcode/cli/config.json", + wiring: "Hook entries in its CLI config", events: [ "SessionStart", "UserPromptSubmit", @@ -175,12 +194,13 @@ const AGENTS: AgentEntry[] = [ }, { name: "Gemini CLI", - wiring: "Hook entries in settings.json", + wiring: "Hook entries in its settings", events: [ "SessionStart", "SessionEnd", "AgentStart", "Stop", + "SessionError", "Notification" ], gating: @@ -188,7 +208,7 @@ const AGENTS: AgentEntry[] = [ }, { name: "Cline", - wiring: "One hook file per event in ~/Documents/Cline/Hooks", + wiring: "One hook file per event in its hooks directory", events: [ "SessionStart", "SessionEnd", @@ -205,7 +225,7 @@ const AGENTS: AgentEntry[] = [ { name: "Qwen Code", 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: [ "UserPromptSubmit", "SessionStart", @@ -227,7 +247,7 @@ const AGENTS: AgentEntry[] = [ }, { name: "DeepSeek", - wiring: "Standalone hooks.json at ~/.dsh", + wiring: "A standalone hooks file its bridge is pointed at", events: [ "SessionStart", "UserPromptSubmit",