@jsayubi/ccgram 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +3 -0
- package/README.md +18 -7
- package/dist/elicitation-notify.d.ts +20 -0
- package/dist/elicitation-notify.d.ts.map +1 -0
- package/dist/elicitation-notify.js +241 -0
- package/dist/elicitation-notify.js.map +1 -0
- package/dist/enhanced-hook-notify.d.ts +8 -1
- package/dist/enhanced-hook-notify.d.ts.map +1 -1
- package/dist/enhanced-hook-notify.js +119 -5
- package/dist/enhanced-hook-notify.js.map +1 -1
- package/dist/permission-denied-notify.d.ts +11 -0
- package/dist/permission-denied-notify.d.ts.map +1 -0
- package/dist/permission-denied-notify.js +193 -0
- package/dist/permission-denied-notify.js.map +1 -0
- package/dist/permission-hook.js +43 -18
- package/dist/permission-hook.js.map +1 -1
- package/dist/pre-compact-notify.d.ts +13 -0
- package/dist/pre-compact-notify.d.ts.map +1 -0
- package/dist/pre-compact-notify.js +197 -0
- package/dist/pre-compact-notify.js.map +1 -0
- package/dist/question-notify.d.ts +6 -5
- package/dist/question-notify.d.ts.map +1 -1
- package/dist/question-notify.js +107 -23
- package/dist/question-notify.js.map +1 -1
- package/dist/setup.js +26 -10
- package/dist/setup.js.map +1 -1
- package/dist/src/types/callbacks.d.ts +11 -1
- package/dist/src/types/callbacks.d.ts.map +1 -1
- package/dist/src/types/session.d.ts +13 -1
- package/dist/src/types/session.d.ts.map +1 -1
- package/dist/src/utils/callback-parser.d.ts +7 -5
- package/dist/src/utils/callback-parser.d.ts.map +1 -1
- package/dist/src/utils/callback-parser.js +11 -5
- package/dist/src/utils/callback-parser.js.map +1 -1
- package/dist/src/utils/deep-link.d.ts +22 -0
- package/dist/src/utils/deep-link.d.ts.map +1 -0
- package/dist/src/utils/deep-link.js +43 -0
- package/dist/src/utils/deep-link.js.map +1 -0
- package/dist/src/utils/ghostty-session-manager.d.ts +81 -0
- package/dist/src/utils/ghostty-session-manager.d.ts.map +1 -0
- package/dist/src/utils/ghostty-session-manager.js +370 -0
- package/dist/src/utils/ghostty-session-manager.js.map +1 -0
- package/dist/src/utils/transcript-reader.d.ts +57 -0
- package/dist/src/utils/transcript-reader.d.ts.map +1 -0
- package/dist/src/utils/transcript-reader.js +229 -0
- package/dist/src/utils/transcript-reader.js.map +1 -0
- package/dist/workspace-router.d.ts +19 -4
- package/dist/workspace-router.d.ts.map +1 -1
- package/dist/workspace-router.js +57 -1
- package/dist/workspace-router.js.map +1 -1
- package/dist/workspace-telegram-bot.js +515 -114
- package/dist/workspace-telegram-bot.js.map +1 -1
- package/package.json +1 -1
- package/src/types/callbacks.ts +15 -1
- package/src/types/session.ts +14 -1
package/.env.example
CHANGED
|
@@ -16,4 +16,7 @@ TELEGRAM_CHAT_ID=
|
|
|
16
16
|
# Suppress Telegram notifications when actively at terminal (seconds, default: 300)
|
|
17
17
|
# ACTIVE_THRESHOLD_SECONDS=300
|
|
18
18
|
|
|
19
|
+
# Injection backend: tmux (default), ghostty, or pty
|
|
20
|
+
# INJECTION_MODE=ghostty
|
|
21
|
+
|
|
19
22
|
# For advanced options (email relay, LINE, webhooks), see .env.full-example
|
package/README.md
CHANGED
|
@@ -64,14 +64,22 @@ CCGram integrates with [Claude Code hooks](https://docs.anthropic.com/en/docs/cl
|
|
|
64
64
|
|
|
65
65
|
| Hook | Event | What it does |
|
|
66
66
|
|------|-------|-------------|
|
|
67
|
-
| `permission-hook.js` | `PermissionRequest` | Sends a permission dialog with Allow / Deny / Always buttons. Blocks Claude until you respond. |
|
|
68
|
-
| `question-notify.js` | `PreToolUse` (AskUserQuestion) | Sends Claude's question with selectable options.
|
|
67
|
+
| `permission-hook.js` | `PermissionRequest` | Sends a permission dialog with Allow / Deny / Always / Defer buttons. Blocks Claude until you respond. |
|
|
68
|
+
| `question-notify.js` | `PreToolUse` (AskUserQuestion) | Sends Claude's question with selectable options. Returns answer directly via `updatedInput` — works with any terminal. |
|
|
69
69
|
| `enhanced-hook-notify.js completed` | `Stop` | Notifies you when Claude finishes a task, including the last response text. |
|
|
70
70
|
| `enhanced-hook-notify.js waiting` | `Notification` | Notifies you when Claude is waiting for input. |
|
|
71
71
|
| `user-prompt-hook.js` | `UserPromptSubmit` | Tracks terminal activity so notifications are suppressed when you're actively working. |
|
|
72
72
|
| `enhanced-hook-notify.js session-start` | `SessionStart` | Notifies you when a new Claude session starts. |
|
|
73
|
-
| `enhanced-hook-notify.js session-end` | `SessionEnd` | Notifies you when a Claude session ends
|
|
73
|
+
| `enhanced-hook-notify.js session-end` | `SessionEnd` | Notifies you when a Claude session ends. |
|
|
74
74
|
| `enhanced-hook-notify.js subagent-done` | `SubagentStop` | Notifies you when a subagent task completes. |
|
|
75
|
+
| `permission-denied-notify.js` | `PermissionDenied` | Notifies when auto mode blocks a tool. Retry button lets you override. |
|
|
76
|
+
| `enhanced-hook-notify.js stop-failure` | `StopFailure` | Notifies you on API errors (rate limits, network issues). |
|
|
77
|
+
| `enhanced-hook-notify.js post-compact` | `PostCompact` | Notifies when context compaction completes, with token savings. |
|
|
78
|
+
| `pre-compact-notify.js` | `PreCompact` | Warns before compaction starts. Block button lets you preserve context. |
|
|
79
|
+
| `elicitation-notify.js` | `Elicitation` | Forwards MCP server input requests to Telegram. Reply with your answer. |
|
|
80
|
+
| `enhanced-hook-notify.js task-created` | `TaskCreated` | Notifies when Claude creates a new task. |
|
|
81
|
+
| `enhanced-hook-notify.js cwd-changed` | `CwdChanged` | Notifies when Claude changes working directory. |
|
|
82
|
+
| `enhanced-hook-notify.js instructions-loaded` | `InstructionsLoaded` | Notifies when CLAUDE.md or rules are loaded. |
|
|
75
83
|
|
|
76
84
|
> **Smart suppression** — all notifications (including permissions) are automatically silenced when you've sent a message to Claude within the last 5 minutes. The moment you step away, Telegram takes over. Telegram-injected commands always get their response back to Telegram regardless.
|
|
77
85
|
|
|
@@ -91,11 +99,11 @@ Claude requests permission
|
|
|
91
99
|
|
|
92
100
|
```
|
|
93
101
|
Claude asks a question (AskUserQuestion)
|
|
94
|
-
→ Claude shows question UI in terminal
|
|
95
102
|
→ question-notify sends options to Telegram
|
|
96
103
|
→ you tap an option
|
|
97
|
-
→ bot
|
|
98
|
-
→
|
|
104
|
+
→ bot writes response file with your selection
|
|
105
|
+
→ hook returns answer via updatedInput to Claude
|
|
106
|
+
→ Claude receives answer directly (works with any terminal!)
|
|
99
107
|
```
|
|
100
108
|
|
|
101
109
|
## Bot Commands
|
|
@@ -114,9 +122,12 @@ Claude asks a question (AskUserQuestion)
|
|
|
114
122
|
| Command | Description |
|
|
115
123
|
|---------|-------------|
|
|
116
124
|
| `/<workspace> <command>` | Send a command to a specific Claude session |
|
|
117
|
-
| `/status [workspace]` | Show the last 20 lines of
|
|
125
|
+
| `/status [workspace]` | Show the last 20 lines of output (includes rate limit info if available) |
|
|
118
126
|
| `/stop [workspace]` | Send Ctrl+C to interrupt the running prompt |
|
|
119
127
|
| `/compact [workspace]` | Run `/compact` and wait for it to complete |
|
|
128
|
+
| `/effort [workspace] low\|medium\|high` | Set Claude's thinking effort level |
|
|
129
|
+
| `/model [workspace] <model>` | Switch Claude model (sonnet, opus, haiku) |
|
|
130
|
+
| `/link <prompt>` | Generate a deep link to open Claude Code with your prompt |
|
|
120
131
|
|
|
121
132
|
### Project launcher
|
|
122
133
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Elicitation Notify — Called by Claude Code's Elicitation hook.
|
|
4
|
+
*
|
|
5
|
+
* BLOCKING mode: Forwards MCP server input requests to Telegram, polls for
|
|
6
|
+
* user responses (one per form field), then outputs the answer via stdout.
|
|
7
|
+
*
|
|
8
|
+
* Stdin JSON: { mcp_server_name, requested_schema, cwd, session_id, ... }
|
|
9
|
+
* requested_schema: JSON Schema object with `properties` describing form fields
|
|
10
|
+
*
|
|
11
|
+
* Stdout: {
|
|
12
|
+
* hookSpecificOutput: {
|
|
13
|
+
* hookEventName: "Elicitation",
|
|
14
|
+
* action: "accept" | "decline" | "cancel",
|
|
15
|
+
* content: { <fieldName>: <value> } // required when action === "accept"
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=elicitation-notify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitation-notify.d.ts","sourceRoot":"","sources":["../elicitation-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Elicitation Notify — Called by Claude Code's Elicitation hook.
|
|
5
|
+
*
|
|
6
|
+
* BLOCKING mode: Forwards MCP server input requests to Telegram, polls for
|
|
7
|
+
* user responses (one per form field), then outputs the answer via stdout.
|
|
8
|
+
*
|
|
9
|
+
* Stdin JSON: { mcp_server_name, requested_schema, cwd, session_id, ... }
|
|
10
|
+
* requested_schema: JSON Schema object with `properties` describing form fields
|
|
11
|
+
*
|
|
12
|
+
* Stdout: {
|
|
13
|
+
* hookSpecificOutput: {
|
|
14
|
+
* hookEventName: "Elicitation",
|
|
15
|
+
* action: "accept" | "decline" | "cancel",
|
|
16
|
+
* content: { <fieldName>: <value> } // required when action === "accept"
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
21
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
const path_1 = __importDefault(require("path"));
|
|
25
|
+
const paths_1 = require("./src/utils/paths");
|
|
26
|
+
require('dotenv').config({ path: path_1.default.join(paths_1.PROJECT_ROOT, '.env'), quiet: true });
|
|
27
|
+
const fs_1 = __importDefault(require("fs"));
|
|
28
|
+
const https_1 = __importDefault(require("https"));
|
|
29
|
+
const workspace_router_1 = require("./workspace-router");
|
|
30
|
+
const prompt_bridge_1 = require("./prompt-bridge");
|
|
31
|
+
const active_check_1 = require("./src/utils/active-check");
|
|
32
|
+
const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN;
|
|
33
|
+
const CHAT_ID = process.env.TELEGRAM_CHAT_ID;
|
|
34
|
+
// Polling configuration
|
|
35
|
+
const POLL_INTERVAL_MS = 500;
|
|
36
|
+
const POLL_TIMEOUT_MS = 120000; // 2 minutes for user input
|
|
37
|
+
// ── Main ────────────────────────────────────────────────────────
|
|
38
|
+
async function main() {
|
|
39
|
+
const raw = await readStdin();
|
|
40
|
+
// Skip Telegram notification if user is at terminal AND this wasn't Telegram-injected
|
|
41
|
+
const typingActivePath = path_1.default.join(paths_1.PROJECT_ROOT, 'src/data', 'typing-active');
|
|
42
|
+
const isTelegramInjected = fs_1.default.existsSync(typingActivePath);
|
|
43
|
+
if (!isTelegramInjected && (0, active_check_1.isUserActiveAtTerminal)()) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
let payload;
|
|
47
|
+
try {
|
|
48
|
+
payload = JSON.parse(raw);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Payload uses `mcp_server_name` (newer) — fall back to `mcp_server` for safety
|
|
54
|
+
const mcpServer = payload.mcp_server_name || payload.mcp_server || 'Unknown MCP';
|
|
55
|
+
const schema = payload.requested_schema || {};
|
|
56
|
+
const properties = schema.properties || {};
|
|
57
|
+
const fieldNames = Object.keys(properties);
|
|
58
|
+
const cwd = payload.cwd || process.cwd();
|
|
59
|
+
const workspace = (0, workspace_router_1.extractWorkspaceName)(cwd);
|
|
60
|
+
// If the schema has no fields, decline — we can't build a meaningful response.
|
|
61
|
+
if (fieldNames.length === 0) {
|
|
62
|
+
emitDecline();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Prompt the user one field at a time. Any field that doesn't get an answer
|
|
66
|
+
// (timeout) cancels the whole elicitation.
|
|
67
|
+
const content = {};
|
|
68
|
+
for (let i = 0; i < fieldNames.length; i++) {
|
|
69
|
+
const fieldName = fieldNames[i];
|
|
70
|
+
const prop = properties[fieldName];
|
|
71
|
+
const promptId = (0, prompt_bridge_1.generatePromptId)();
|
|
72
|
+
let messageText = `\u{1F50C} *MCP Input Required* — ${escapeMarkdown(workspace)}\n\n`;
|
|
73
|
+
messageText += `*Server:* \`${escapeMarkdown(mcpServer)}\`\n`;
|
|
74
|
+
if (fieldNames.length > 1) {
|
|
75
|
+
messageText += `*Field ${i + 1} of ${fieldNames.length}:* \`${escapeMarkdown(fieldName)}\`\n\n`;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
messageText += `*Field:* \`${escapeMarkdown(fieldName)}\`\n\n`;
|
|
79
|
+
}
|
|
80
|
+
if (prop.description) {
|
|
81
|
+
messageText += `${escapeMarkdown(prop.description)}\n\n`;
|
|
82
|
+
}
|
|
83
|
+
if (prop.enum && prop.enum.length > 0) {
|
|
84
|
+
messageText += `_Allowed values:_ ${prop.enum.map(v => `\`${escapeMarkdown(v)}\``).join(', ')}\n\n`;
|
|
85
|
+
}
|
|
86
|
+
messageText += `_Reply to this message with your answer_`;
|
|
87
|
+
(0, prompt_bridge_1.writePending)(promptId, {
|
|
88
|
+
type: 'elicitation',
|
|
89
|
+
workspace,
|
|
90
|
+
mcpServer,
|
|
91
|
+
fieldName,
|
|
92
|
+
});
|
|
93
|
+
try {
|
|
94
|
+
const result = await sendTelegram(messageText);
|
|
95
|
+
if (result && result.message_id) {
|
|
96
|
+
(0, workspace_router_1.trackNotificationMessage)(result.message_id, workspace, 'elicitation');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
process.stderr.write(`[elicitation-notify] Telegram send failed: ${err.message}\n`);
|
|
101
|
+
(0, prompt_bridge_1.cleanPrompt)(promptId);
|
|
102
|
+
emitCancel();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const response = await pollForResponse(promptId);
|
|
106
|
+
(0, prompt_bridge_1.cleanPrompt)(promptId);
|
|
107
|
+
if (!response || typeof response.textAnswer !== 'string') {
|
|
108
|
+
// Timeout or missing answer — cancel the whole elicitation
|
|
109
|
+
emitCancel();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
content[fieldName] = response.textAnswer;
|
|
113
|
+
}
|
|
114
|
+
const output = {
|
|
115
|
+
hookSpecificOutput: {
|
|
116
|
+
hookEventName: 'Elicitation',
|
|
117
|
+
action: 'accept',
|
|
118
|
+
content,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
process.stdout.write(JSON.stringify(output) + '\n');
|
|
122
|
+
}
|
|
123
|
+
function emitDecline() {
|
|
124
|
+
const output = {
|
|
125
|
+
hookSpecificOutput: {
|
|
126
|
+
hookEventName: 'Elicitation',
|
|
127
|
+
action: 'decline',
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
process.stdout.write(JSON.stringify(output) + '\n');
|
|
131
|
+
}
|
|
132
|
+
function emitCancel() {
|
|
133
|
+
const output = {
|
|
134
|
+
hookSpecificOutput: {
|
|
135
|
+
hookEventName: 'Elicitation',
|
|
136
|
+
action: 'cancel',
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
process.stdout.write(JSON.stringify(output) + '\n');
|
|
140
|
+
}
|
|
141
|
+
// ── Polling ─────────────────────────────────────────────────────
|
|
142
|
+
function pollForResponse(promptId) {
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
const responseFile = path_1.default.join(prompt_bridge_1.PROMPTS_DIR, `response-${promptId}.json`);
|
|
145
|
+
const startTime = Date.now();
|
|
146
|
+
const interval = setInterval(() => {
|
|
147
|
+
if (Date.now() - startTime > POLL_TIMEOUT_MS) {
|
|
148
|
+
clearInterval(interval);
|
|
149
|
+
process.stderr.write(`[elicitation-notify] Timed out waiting for response\n`);
|
|
150
|
+
resolve(null);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
if (fs_1.default.existsSync(responseFile)) {
|
|
155
|
+
const raw = fs_1.default.readFileSync(responseFile, 'utf8');
|
|
156
|
+
const data = JSON.parse(raw);
|
|
157
|
+
clearInterval(interval);
|
|
158
|
+
resolve(data);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// File not ready yet or parse error — keep polling
|
|
163
|
+
}
|
|
164
|
+
}, POLL_INTERVAL_MS);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// ── Telegram ────────────────────────────────────────────────────
|
|
168
|
+
function sendTelegram(text) {
|
|
169
|
+
return new Promise((resolve, reject) => {
|
|
170
|
+
const body = JSON.stringify({
|
|
171
|
+
chat_id: CHAT_ID,
|
|
172
|
+
text,
|
|
173
|
+
parse_mode: 'Markdown',
|
|
174
|
+
});
|
|
175
|
+
const options = {
|
|
176
|
+
hostname: 'api.telegram.org',
|
|
177
|
+
path: `/bot${BOT_TOKEN}/sendMessage`,
|
|
178
|
+
method: 'POST',
|
|
179
|
+
headers: {
|
|
180
|
+
'Content-Type': 'application/json',
|
|
181
|
+
'Content-Length': Buffer.byteLength(body),
|
|
182
|
+
},
|
|
183
|
+
timeout: 5000,
|
|
184
|
+
};
|
|
185
|
+
const req = https_1.default.request(options, (res) => {
|
|
186
|
+
let data = '';
|
|
187
|
+
res.on('data', (chunk) => { data += chunk; });
|
|
188
|
+
res.on('end', () => {
|
|
189
|
+
if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
190
|
+
try {
|
|
191
|
+
const parsed = JSON.parse(data);
|
|
192
|
+
resolve(parsed.result || null);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
resolve(null);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
reject(new Error(`Telegram API ${res.statusCode}: ${data}`));
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
req.on('error', reject);
|
|
204
|
+
req.on('timeout', () => {
|
|
205
|
+
req.destroy();
|
|
206
|
+
reject(new Error('Telegram request timed out'));
|
|
207
|
+
});
|
|
208
|
+
req.write(body);
|
|
209
|
+
req.end();
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// ── Helpers ──────────────────────────────────────────────────────
|
|
213
|
+
function readStdin() {
|
|
214
|
+
return new Promise((resolve) => {
|
|
215
|
+
let data = '';
|
|
216
|
+
let resolved = false;
|
|
217
|
+
process.stdin.setEncoding('utf8');
|
|
218
|
+
process.stdin.on('data', (chunk) => { data += chunk; });
|
|
219
|
+
process.stdin.on('end', () => {
|
|
220
|
+
if (!resolved) {
|
|
221
|
+
resolved = true;
|
|
222
|
+
resolve(data);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
setTimeout(() => {
|
|
226
|
+
if (!resolved) {
|
|
227
|
+
resolved = true;
|
|
228
|
+
process.stdin.destroy();
|
|
229
|
+
resolve(data || '{}');
|
|
230
|
+
}
|
|
231
|
+
}, 500);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function escapeMarkdown(text) {
|
|
235
|
+
return text.replace(/([_*`\[])/g, '\\$1');
|
|
236
|
+
}
|
|
237
|
+
// ── Run ─────────────────────────────────────────────────────────
|
|
238
|
+
main().catch((err) => {
|
|
239
|
+
process.stderr.write(`[elicitation-notify] Fatal: ${err.message}\n`);
|
|
240
|
+
});
|
|
241
|
+
//# sourceMappingURL=elicitation-notify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitation-notify.js","sourceRoot":"","sources":["../elicitation-notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Enhanced Hook Notifier — called by Claude Code hooks.
|
|
4
4
|
*
|
|
5
5
|
* Handles: Stop (completed), Notification (waiting), SessionStart,
|
|
6
|
-
* SessionEnd, SubagentStop (subagent-done)
|
|
6
|
+
* SessionEnd, SubagentStop (subagent-done), StopFailure (stop-failure),
|
|
7
|
+
* PostCompact (post-compact), TaskCreated (task-created),
|
|
8
|
+
* CwdChanged (cwd-changed), InstructionsLoaded (instructions-loaded).
|
|
7
9
|
*
|
|
8
10
|
* Usage (in ~/.claude/settings.json hooks):
|
|
9
11
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js completed
|
|
@@ -11,6 +13,11 @@
|
|
|
11
13
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js session-start
|
|
12
14
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js session-end
|
|
13
15
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js subagent-done
|
|
16
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js stop-failure
|
|
17
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js post-compact
|
|
18
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js task-created
|
|
19
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js cwd-changed
|
|
20
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js instructions-loaded
|
|
14
21
|
*/
|
|
15
22
|
export {};
|
|
16
23
|
//# sourceMappingURL=enhanced-hook-notify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-hook-notify.d.ts","sourceRoot":"","sources":["../enhanced-hook-notify.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"enhanced-hook-notify.d.ts","sourceRoot":"","sources":["../enhanced-hook-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Enhanced Hook Notifier — called by Claude Code hooks.
|
|
5
5
|
*
|
|
6
6
|
* Handles: Stop (completed), Notification (waiting), SessionStart,
|
|
7
|
-
* SessionEnd, SubagentStop (subagent-done)
|
|
7
|
+
* SessionEnd, SubagentStop (subagent-done), StopFailure (stop-failure),
|
|
8
|
+
* PostCompact (post-compact), TaskCreated (task-created),
|
|
9
|
+
* CwdChanged (cwd-changed), InstructionsLoaded (instructions-loaded).
|
|
8
10
|
*
|
|
9
11
|
* Usage (in ~/.claude/settings.json hooks):
|
|
10
12
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js completed
|
|
@@ -12,6 +14,11 @@
|
|
|
12
14
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js session-start
|
|
13
15
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js session-end
|
|
14
16
|
* node /path/to/ccgram/dist/enhanced-hook-notify.js subagent-done
|
|
17
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js stop-failure
|
|
18
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js post-compact
|
|
19
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js task-created
|
|
20
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js cwd-changed
|
|
21
|
+
* node /path/to/ccgram/dist/enhanced-hook-notify.js instructions-loaded
|
|
15
22
|
*/
|
|
16
23
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
24
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -37,6 +44,12 @@ const STATUS_CONFIG = {
|
|
|
37
44
|
'session-start': { icon: '\u{1F7E2}', label: 'Session started', alwaysNotify: false, upsertSession: true },
|
|
38
45
|
'session-end': { icon: '\u{1F534}', label: 'Session ended', alwaysNotify: false, upsertSession: false },
|
|
39
46
|
'subagent-done': { icon: '\u{1F916}', label: 'Subagent finished', alwaysNotify: false, upsertSession: true },
|
|
47
|
+
// Phase 2 hook events
|
|
48
|
+
'stop-failure': { icon: '\u26A0\uFE0F', label: 'API error', alwaysNotify: true, upsertSession: true },
|
|
49
|
+
'post-compact': { icon: '\u{1F4E6}', label: 'Context compacted', alwaysNotify: false, upsertSession: true },
|
|
50
|
+
'task-created': { icon: '\u{1F4CB}', label: 'Task created', alwaysNotify: false, upsertSession: true },
|
|
51
|
+
'cwd-changed': { icon: '\u{1F4C2}', label: 'Directory changed', alwaysNotify: false, upsertSession: true },
|
|
52
|
+
'instructions-loaded': { icon: '\u{1F4D6}', label: 'Instructions loaded', alwaysNotify: false, upsertSession: false },
|
|
40
53
|
};
|
|
41
54
|
// ── Main ────────────────────────────────────────────────────────
|
|
42
55
|
async function main() {
|
|
@@ -50,23 +63,38 @@ async function main() {
|
|
|
50
63
|
}
|
|
51
64
|
const cwd = payload.cwd || process.env.CLAUDE_CWD || process.cwd();
|
|
52
65
|
const workspace = (0, workspace_router_1.extractWorkspaceName)(cwd);
|
|
66
|
+
const sessionTitle = payload.session_title || null; // v2.1.94+
|
|
53
67
|
const tmuxSession = detectSessionName(cwd);
|
|
54
68
|
const sessionId = payload.session_id || null;
|
|
55
69
|
const config = STATUS_CONFIG[STATUS_ARG] ?? STATUS_CONFIG['waiting'];
|
|
70
|
+
// Extract rate limit info from payload (Claude Code v2.1.80+)
|
|
71
|
+
const rateLimit = extractRateLimitInfo(payload);
|
|
56
72
|
// Update session map (skip for session-end — session is over)
|
|
57
73
|
if (config.upsertSession) {
|
|
58
74
|
try {
|
|
75
|
+
const sessionType = process.env.TMUX ? 'tmux'
|
|
76
|
+
: process.env.TERM_PROGRAM === 'ghostty' ? 'ghostty'
|
|
77
|
+
: undefined;
|
|
59
78
|
(0, workspace_router_1.upsertSession)({
|
|
60
79
|
cwd,
|
|
61
80
|
tmuxSession: tmuxSession || `claude-${workspace}`,
|
|
62
81
|
status: STATUS_ARG,
|
|
63
82
|
sessionId,
|
|
83
|
+
sessionType,
|
|
84
|
+
rateLimit,
|
|
64
85
|
});
|
|
65
86
|
}
|
|
66
87
|
catch (err) {
|
|
67
88
|
logger.error(`Failed to update session map: ${err.message}`);
|
|
68
89
|
}
|
|
69
90
|
}
|
|
91
|
+
else if (rateLimit) {
|
|
92
|
+
// Even for session-end, update rate limit if present
|
|
93
|
+
try {
|
|
94
|
+
(0, workspace_router_1.updateSessionRateLimit)(workspace, rateLimit);
|
|
95
|
+
}
|
|
96
|
+
catch { }
|
|
97
|
+
}
|
|
70
98
|
// If the bot injected this command from Telegram, typing-active exists — always notify
|
|
71
99
|
// so the response goes back to Telegram regardless of terminal activity.
|
|
72
100
|
const typingActivePath = path_1.default.join(paths_1.PROJECT_ROOT, 'src/data', 'typing-active');
|
|
@@ -90,9 +118,62 @@ async function main() {
|
|
|
90
118
|
catch { }
|
|
91
119
|
return;
|
|
92
120
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
121
|
+
// Include session title if available (v2.1.94+)
|
|
122
|
+
const titleSuffix = sessionTitle ? ` (${escapeHtml(sessionTitle)})` : '';
|
|
123
|
+
let message = `${config.icon} ${config.label} in <b>${escapeHtml(workspace)}</b>${titleSuffix}`;
|
|
124
|
+
// Status-specific message additions
|
|
125
|
+
if (STATUS_ARG === 'stop-failure') {
|
|
126
|
+
// Include error details from StopFailure hook
|
|
127
|
+
const errorType = payload.error_type;
|
|
128
|
+
const errorMessage = payload.error_message;
|
|
129
|
+
if (errorType || errorMessage) {
|
|
130
|
+
message += `\n\n<b>Error:</b> ${escapeHtml(errorType || 'Unknown')}`;
|
|
131
|
+
if (errorMessage) {
|
|
132
|
+
message += `\n${escapeHtml(errorMessage)}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else if (STATUS_ARG === 'post-compact') {
|
|
137
|
+
// Include compaction stats if available
|
|
138
|
+
const beforeTokens = payload.tokens_before;
|
|
139
|
+
const afterTokens = payload.tokens_after;
|
|
140
|
+
if (beforeTokens && afterTokens) {
|
|
141
|
+
const saved = beforeTokens - afterTokens;
|
|
142
|
+
const percent = Math.round((saved / beforeTokens) * 100);
|
|
143
|
+
message += `\n\n<i>${beforeTokens.toLocaleString()} → ${afterTokens.toLocaleString()} tokens (${percent}% saved)</i>`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (STATUS_ARG === 'task-created') {
|
|
147
|
+
// Include task description
|
|
148
|
+
const taskDescription = payload.task_description;
|
|
149
|
+
const taskId = payload.task_id;
|
|
150
|
+
if (taskDescription) {
|
|
151
|
+
message += `\n\n${escapeHtml(taskDescription)}`;
|
|
152
|
+
}
|
|
153
|
+
if (taskId) {
|
|
154
|
+
message += `\n<i>ID: ${escapeHtml(taskId)}</i>`;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (STATUS_ARG === 'cwd-changed') {
|
|
158
|
+
// Include old and new directory
|
|
159
|
+
const oldCwd = payload.old_cwd;
|
|
160
|
+
const newCwd = payload.new_cwd;
|
|
161
|
+
if (oldCwd && newCwd) {
|
|
162
|
+
const oldWorkspace = (0, workspace_router_1.extractWorkspaceName)(oldCwd);
|
|
163
|
+
const newWorkspace = (0, workspace_router_1.extractWorkspaceName)(newCwd);
|
|
164
|
+
message += `\n\n<i>${escapeHtml(oldWorkspace || oldCwd)} → ${escapeHtml(newWorkspace || newCwd)}</i>`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (STATUS_ARG === 'instructions-loaded') {
|
|
168
|
+
// Include instructions file path
|
|
169
|
+
const instructionsPath = payload.instructions_path;
|
|
170
|
+
if (instructionsPath) {
|
|
171
|
+
message += `\n\n<i>${escapeHtml(instructionsPath)}</i>`;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Append Claude's last response text (skip for session-start and simple notifications)
|
|
175
|
+
const skipResponseText = ['session-start', 'post-compact', 'task-created', 'cwd-changed', 'instructions-loaded'];
|
|
176
|
+
if (!skipResponseText.includes(STATUS_ARG)) {
|
|
96
177
|
const responseText = getResponseText(payload);
|
|
97
178
|
if (responseText) {
|
|
98
179
|
const truncated = responseText.length > 3500
|
|
@@ -200,6 +281,34 @@ function sendTelegram(text, parseMode = 'Markdown') {
|
|
|
200
281
|
});
|
|
201
282
|
}
|
|
202
283
|
// ── Helpers ──────────────────────────────────────────────────────
|
|
284
|
+
/**
|
|
285
|
+
* Extract rate limit info from hook payload (Claude Code v2.1.80+).
|
|
286
|
+
* Rate limits may appear in statusline data or direct payload fields.
|
|
287
|
+
*/
|
|
288
|
+
function extractRateLimitInfo(payload) {
|
|
289
|
+
// Try direct rate_limits field
|
|
290
|
+
const rateLimits = payload.rate_limits;
|
|
291
|
+
if (rateLimits) {
|
|
292
|
+
return {
|
|
293
|
+
remaining: rateLimits.remaining,
|
|
294
|
+
limit: rateLimits.limit,
|
|
295
|
+
resetsAt: rateLimits.resets_at,
|
|
296
|
+
updatedAt: Date.now(),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
// Try statusline object (may contain rate limit info)
|
|
300
|
+
const statusline = payload.statusline;
|
|
301
|
+
if (statusline?.rate_limits) {
|
|
302
|
+
const sl = statusline.rate_limits;
|
|
303
|
+
return {
|
|
304
|
+
remaining: sl.remaining,
|
|
305
|
+
limit: sl.limit,
|
|
306
|
+
resetsAt: sl.resets_at,
|
|
307
|
+
updatedAt: Date.now(),
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
return undefined;
|
|
311
|
+
}
|
|
203
312
|
function extractLastResponse(transcriptPath) {
|
|
204
313
|
const data = fs_1.default.readFileSync(transcriptPath, 'utf8').trimEnd();
|
|
205
314
|
const lines = data.split('\n');
|
|
@@ -248,7 +357,12 @@ function detectSessionName(cwd) {
|
|
|
248
357
|
}
|
|
249
358
|
catch { }
|
|
250
359
|
}
|
|
251
|
-
// 2.
|
|
360
|
+
// 2. Ghostty — derive from CWD (same sanitization as tmux-less path)
|
|
361
|
+
if (process.env.TERM_PROGRAM === 'ghostty') {
|
|
362
|
+
const raw = (0, workspace_router_1.extractWorkspaceName)(cwd);
|
|
363
|
+
return raw ? raw.replace(/[.:\s]/g, '-') : null;
|
|
364
|
+
}
|
|
365
|
+
// 3. Derive from CWD — sanitize so it matches PTY handle key format
|
|
252
366
|
const raw = (0, workspace_router_1.extractWorkspaceName)(cwd);
|
|
253
367
|
if (!raw)
|
|
254
368
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-hook-notify.js","sourceRoot":"","sources":["../enhanced-hook-notify.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;GAYG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,6CAAiD;AACjD,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,oBAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjF,kDAA0B;AAC1B,+DAAuC;AACvC,yDAAmG;AACnG,mDAAyD;AACzD,2DAAkE;AAGlE,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,CAAC,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;AAEjE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;AAalD,MAAM,aAAa,GAAiC;IAClD,WAAW,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAK,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAG;IAC1G,SAAS,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAG;IAC1G,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAI,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAG;IAC7G,aAAa,EAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAM,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;IAC7G,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAG;CAC9G,CAAC;AAEF,mEAAmE;AAEnE,KAAK,UAAU,IAAI;IACjB,IAAI,OAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAI,OAAO,CAAC,GAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/E,MAAM,SAAS,GAAG,IAAA,uCAAoB,EAAC,GAAG,CAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAI,OAAO,CAAC,UAAqB,IAAI,IAAI,CAAC;IAEzD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAErE,8DAA8D;IAC9D,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAA,gCAAa,EAAC;gBACZ,GAAG;gBACH,WAAW,EAAE,WAAW,IAAI,UAAU,SAAS,EAAE;gBACjD,MAAM,EAAE,UAAU;gBAClB,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,uFAAuF;IACvF,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,oBAAY,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE3D,0FAA0F;IAC1F,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,kBAAkB,IAAI,IAAA,qCAAsB,GAAE,EAAE,CAAC;QAC5E,IAAI,CAAC;YAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACjD,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,IAAI,gBAAgB,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QAC7C,8EAA8E;QAC9E,6DAA6D;QAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,IAAA,sCAAsB,EAAC,SAAS,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC;gBAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;QAElF,iFAAiF;QACjF,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI;oBAC1C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK;oBACrC,CAAC,CAAC,YAAY,CAAC;gBACjB,OAAO,IAAI,OAAO,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC;YAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAChC,IAAA,2CAAwB,EAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAChD,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBAChC,IAAA,2CAAwB,EAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YAAC,OAAO,IAAa,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,CAAC,yBAA0B,IAAc,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,oEAAoE;AAEpE;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAgC;IACvD,mDAAmD;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,sBAA4C,CAAC;IACpE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,qDAAqD;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,qBAA2C,CAAC;IAC5E,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IAC/D,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAqC,CAAC;IACjE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YAAC,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AAEnE,SAAS,YAAY,CAAC,IAAY,EAAE,YAA4B,UAAU;IACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,UAAU,GAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACvE,IAAI,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAExC,MAAM,OAAO,GAAyB;YACpC,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,OAAO,SAAS,cAAc;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;YACD,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,GAAG,GAAG,eAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,GAAG,CAAC,UAAW,IAAI,GAAG,IAAI,GAAG,CAAC,UAAW,GAAG,GAAG,EAAE,CAAC;oBACpD,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;oBACjC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oEAAoE;AAEpE,SAAS,mBAAmB,CAAC,cAAsB;IACjD,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;qBAChC,MAAM,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;qBACzD,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,sDAAsD;IACtD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,oEAAoE;IACpE,MAAM,GAAG,GAAG,IAAA,uCAAoB,EAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,iFAAiF;IACjF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAS,EAAE,EAAU,EAAE,IAAY,EAAE,EAAE;QACtF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,OAAO,QAAQ,GAAG,MAAM,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAS,EAAE,IAAY,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;QAC1C,OAAO,QAAQ,GAAG,MAAM,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAExC,4BAA4B;IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AAEnE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"enhanced-hook-notify.js","sourceRoot":"","sources":["../enhanced-hook-notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Permission Denied Notify — Called by Claude Code's PermissionDenied hook.
|
|
4
|
+
*
|
|
5
|
+
* Notifies user when auto mode blocks a tool. Optionally allows retry.
|
|
6
|
+
*
|
|
7
|
+
* Stdin JSON: { tool_name, tool_input, cwd, session_id, reason }
|
|
8
|
+
* Stdout: { hookSpecificOutput: { retry: true } } — to retry the tool
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=permission-denied-notify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-denied-notify.d.ts","sourceRoot":"","sources":["../permission-denied-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|