docs: update all docs for hooks integration with elicitation_dialog

- Add hook:elicitation_dialog SSE handler in frontend (critical urgency)
- Add Desktop Notifications section to README with hook event table
- Add hooks API endpoint to README API reference
- Update CLAUDE.md SSE events and API routes for elicitation_dialog
- Add session log entry for hooks feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-24 03:20:03 +01:00
co-authored by Claude Opus 4.5
parent 10222075cb
commit d516609af5
3 changed files with 35 additions and 2 deletions
+2 -2
View File
@@ -474,7 +474,7 @@ Key events for frontend handling (see `app.js:handleSSEEvent()`):
- `respawn:detectionUpdate` - Multi-layer idle detection status (confidence level, waiting state)
- `spawn:queued`, `spawn:started`, `spawn:completed`, `spawn:failed`, `spawn:timeout`, `spawn:cancelled` - Agent lifecycle
- `spawn:progress`, `spawn:message`, `spawn:budgetWarning`, `spawn:stateUpdate` - Agent monitoring
- `hook:idle_prompt`, `hook:permission_prompt`, `hook:stop` - Claude Code hooks (desktop notifications)
- `hook:idle_prompt`, `hook:permission_prompt`, `hook:elicitation_dialog`, `hook:stop` - Claude Code hooks (desktop notifications)
### Frontend (app.js)
@@ -678,7 +678,7 @@ Long-running sessions are supported with automatic trimming:
| GET | `/api/spawn/status` | Orchestrator status (counts, config) |
| PUT | `/api/spawn/config` | Update orchestrator config |
| POST | `/api/spawn/trigger` | Programmatic spawn (bypass terminal detection) |
| POST | `/api/hook-event` | Receive Claude Code hook callbacks (idle_prompt, permission_prompt, stop) |
| POST | `/api/hook-event` | Receive Claude Code hook callbacks (idle_prompt, permission_prompt, elicitation_dialog, stop) |
## Keyboard Shortcuts (Web UI)
+20
View File
@@ -159,6 +159,21 @@ curl -X POST localhost:3000/api/sessions/:id/auto-compact \
---
### 🔔 Desktop Notifications via Hooks
Automatic desktop notifications when sessions need attention — powered by Claude Code's hooks system:
| Hook Event | Urgency | Meaning |
|------------|---------|---------|
| `permission_prompt` | Critical | Claude needs tool approval |
| `elicitation_dialog` | Critical | Claude is asking a question |
| `idle_prompt` | Warning | Session idle, waiting for input |
| `stop` | Info | Response complete |
Hooks are auto-configured per case directory (`.claude/settings.local.json`). Requires `--https` flag for browser notification API support.
---
### 🖥️ Multi-Session Dashboard
Run **20 parallel sessions** with full visibility:
@@ -257,6 +272,11 @@ npx tsx src/index.ts web
| `POST` | `/api/spawn/agents/:id/cancel` | Cancel agent |
| `POST` | `/api/spawn/trigger` | Programmatic spawn |
### Hooks & Notifications
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/api/hook-event` | Claude Code hook callbacks |
### Real-Time
| Method | Endpoint | Description |
|--------|----------|-------------|
+13
View File
@@ -1120,6 +1120,19 @@ class ClaudemanApp {
});
});
this.eventSource.addEventListener('hook:elicitation_dialog', (e) => {
const data = JSON.parse(e.data);
const session = this.sessions.get(data.sessionId);
this.notificationManager?.notify({
urgency: 'critical',
category: 'hook-elicitation',
sessionId: data.sessionId,
sessionName: session?.name || data.sessionId,
title: 'Question Asked',
message: 'Claude is asking a question and waiting for your answer',
});
});
this.eventSource.addEventListener('hook:stop', (e) => {
const data = JSON.parse(e.data);
const session = this.sessions.get(data.sessionId);