@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.
Files changed (55) hide show
  1. package/.env.example +3 -0
  2. package/README.md +18 -7
  3. package/dist/elicitation-notify.d.ts +20 -0
  4. package/dist/elicitation-notify.d.ts.map +1 -0
  5. package/dist/elicitation-notify.js +241 -0
  6. package/dist/elicitation-notify.js.map +1 -0
  7. package/dist/enhanced-hook-notify.d.ts +8 -1
  8. package/dist/enhanced-hook-notify.d.ts.map +1 -1
  9. package/dist/enhanced-hook-notify.js +119 -5
  10. package/dist/enhanced-hook-notify.js.map +1 -1
  11. package/dist/permission-denied-notify.d.ts +11 -0
  12. package/dist/permission-denied-notify.d.ts.map +1 -0
  13. package/dist/permission-denied-notify.js +193 -0
  14. package/dist/permission-denied-notify.js.map +1 -0
  15. package/dist/permission-hook.js +43 -18
  16. package/dist/permission-hook.js.map +1 -1
  17. package/dist/pre-compact-notify.d.ts +13 -0
  18. package/dist/pre-compact-notify.d.ts.map +1 -0
  19. package/dist/pre-compact-notify.js +197 -0
  20. package/dist/pre-compact-notify.js.map +1 -0
  21. package/dist/question-notify.d.ts +6 -5
  22. package/dist/question-notify.d.ts.map +1 -1
  23. package/dist/question-notify.js +107 -23
  24. package/dist/question-notify.js.map +1 -1
  25. package/dist/setup.js +26 -10
  26. package/dist/setup.js.map +1 -1
  27. package/dist/src/types/callbacks.d.ts +11 -1
  28. package/dist/src/types/callbacks.d.ts.map +1 -1
  29. package/dist/src/types/session.d.ts +13 -1
  30. package/dist/src/types/session.d.ts.map +1 -1
  31. package/dist/src/utils/callback-parser.d.ts +7 -5
  32. package/dist/src/utils/callback-parser.d.ts.map +1 -1
  33. package/dist/src/utils/callback-parser.js +11 -5
  34. package/dist/src/utils/callback-parser.js.map +1 -1
  35. package/dist/src/utils/deep-link.d.ts +22 -0
  36. package/dist/src/utils/deep-link.d.ts.map +1 -0
  37. package/dist/src/utils/deep-link.js +43 -0
  38. package/dist/src/utils/deep-link.js.map +1 -0
  39. package/dist/src/utils/ghostty-session-manager.d.ts +81 -0
  40. package/dist/src/utils/ghostty-session-manager.d.ts.map +1 -0
  41. package/dist/src/utils/ghostty-session-manager.js +370 -0
  42. package/dist/src/utils/ghostty-session-manager.js.map +1 -0
  43. package/dist/src/utils/transcript-reader.d.ts +57 -0
  44. package/dist/src/utils/transcript-reader.d.ts.map +1 -0
  45. package/dist/src/utils/transcript-reader.js +229 -0
  46. package/dist/src/utils/transcript-reader.js.map +1 -0
  47. package/dist/workspace-router.d.ts +19 -4
  48. package/dist/workspace-router.d.ts.map +1 -1
  49. package/dist/workspace-router.js +57 -1
  50. package/dist/workspace-router.js.map +1 -1
  51. package/dist/workspace-telegram-bot.js +515 -114
  52. package/dist/workspace-telegram-bot.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/types/callbacks.ts +15 -1
  55. package/src/types/session.ts +14 -1
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Permission Denied Notify — Called by Claude Code's PermissionDenied hook.
5
+ *
6
+ * Notifies user when auto mode blocks a tool. Optionally allows retry.
7
+ *
8
+ * Stdin JSON: { tool_name, tool_input, cwd, session_id, reason }
9
+ * Stdout: { hookSpecificOutput: { retry: true } } — to retry the tool
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const paths_1 = require("./src/utils/paths");
17
+ require('dotenv').config({ path: path_1.default.join(paths_1.PROJECT_ROOT, '.env'), quiet: true });
18
+ const fs_1 = __importDefault(require("fs"));
19
+ const https_1 = __importDefault(require("https"));
20
+ const workspace_router_1 = require("./workspace-router");
21
+ const prompt_bridge_1 = require("./prompt-bridge");
22
+ const active_check_1 = require("./src/utils/active-check");
23
+ const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN;
24
+ const CHAT_ID = process.env.TELEGRAM_CHAT_ID;
25
+ // Polling configuration
26
+ const POLL_INTERVAL_MS = 500;
27
+ const POLL_TIMEOUT_MS = 30000; // 30 seconds for permission denied (shorter than regular permission)
28
+ // ── Main ────────────────────────────────────────────────────────
29
+ async function main() {
30
+ const raw = await readStdin();
31
+ // Skip Telegram notification if user is at terminal AND this wasn't Telegram-injected
32
+ const typingActivePath = path_1.default.join(paths_1.PROJECT_ROOT, 'src/data', 'typing-active');
33
+ const isTelegramInjected = fs_1.default.existsSync(typingActivePath);
34
+ if (!isTelegramInjected && (0, active_check_1.isUserActiveAtTerminal)()) {
35
+ return;
36
+ }
37
+ let payload;
38
+ try {
39
+ payload = JSON.parse(raw);
40
+ }
41
+ catch {
42
+ return;
43
+ }
44
+ const toolName = payload.tool_name || 'Unknown tool';
45
+ const reason = payload.reason || 'No reason provided';
46
+ const cwd = payload.cwd || process.cwd();
47
+ const workspace = (0, workspace_router_1.extractWorkspaceName)(cwd);
48
+ const promptId = (0, prompt_bridge_1.generatePromptId)();
49
+ let messageText = `\u{1F6AB} *Permission Denied* — ${escapeMarkdown(workspace)}\n\n`;
50
+ messageText += `*Tool:* \`${escapeMarkdown(toolName)}\`\n`;
51
+ messageText += `*Reason:* ${escapeMarkdown(reason)}`;
52
+ // Build inline keyboard with Retry/Dismiss buttons
53
+ const keyboard = [
54
+ [
55
+ { text: '\u{1F504} Retry', callback_data: `perm-denied:${promptId}:retry` },
56
+ { text: '\u274C Dismiss', callback_data: `perm-denied:${promptId}:dismiss` },
57
+ ],
58
+ ];
59
+ // Write pending file
60
+ (0, prompt_bridge_1.writePending)(promptId, {
61
+ type: 'permission-denied',
62
+ workspace,
63
+ toolName,
64
+ reason,
65
+ });
66
+ // Send Telegram message
67
+ try {
68
+ const result = await sendTelegramWithKeyboard(messageText, { inline_keyboard: keyboard });
69
+ if (result && result.message_id) {
70
+ (0, workspace_router_1.trackNotificationMessage)(result.message_id, workspace, 'permission-denied');
71
+ }
72
+ }
73
+ catch (err) {
74
+ process.stderr.write(`[permission-denied-notify] Telegram send failed: ${err.message}\n`);
75
+ (0, prompt_bridge_1.cleanPrompt)(promptId);
76
+ return;
77
+ }
78
+ // Poll for response
79
+ const response = await pollForResponse(promptId);
80
+ (0, prompt_bridge_1.cleanPrompt)(promptId);
81
+ if (response && response.action === 'retry') {
82
+ const output = {
83
+ hookSpecificOutput: {
84
+ hookEventName: 'PermissionDenied',
85
+ retry: true,
86
+ },
87
+ };
88
+ process.stdout.write(JSON.stringify(output) + '\n');
89
+ }
90
+ // If dismiss or timeout, no output — tool stays blocked
91
+ }
92
+ // ── Polling ─────────────────────────────────────────────────────
93
+ function pollForResponse(promptId) {
94
+ return new Promise((resolve) => {
95
+ const responseFile = path_1.default.join(prompt_bridge_1.PROMPTS_DIR, `response-${promptId}.json`);
96
+ const startTime = Date.now();
97
+ const interval = setInterval(() => {
98
+ if (Date.now() - startTime > POLL_TIMEOUT_MS) {
99
+ clearInterval(interval);
100
+ process.stderr.write(`[permission-denied-notify] Timed out waiting for response\n`);
101
+ resolve(null);
102
+ return;
103
+ }
104
+ try {
105
+ if (fs_1.default.existsSync(responseFile)) {
106
+ const raw = fs_1.default.readFileSync(responseFile, 'utf8');
107
+ const data = JSON.parse(raw);
108
+ clearInterval(interval);
109
+ resolve(data);
110
+ }
111
+ }
112
+ catch {
113
+ // File not ready yet or parse error — keep polling
114
+ }
115
+ }, POLL_INTERVAL_MS);
116
+ });
117
+ }
118
+ // ── Telegram ────────────────────────────────────────────────────
119
+ function sendTelegramWithKeyboard(text, replyMarkup) {
120
+ return new Promise((resolve, reject) => {
121
+ const body = JSON.stringify({
122
+ chat_id: CHAT_ID,
123
+ text,
124
+ parse_mode: 'Markdown',
125
+ reply_markup: replyMarkup,
126
+ });
127
+ const options = {
128
+ hostname: 'api.telegram.org',
129
+ path: `/bot${BOT_TOKEN}/sendMessage`,
130
+ method: 'POST',
131
+ headers: {
132
+ 'Content-Type': 'application/json',
133
+ 'Content-Length': Buffer.byteLength(body),
134
+ },
135
+ timeout: 5000,
136
+ };
137
+ const req = https_1.default.request(options, (res) => {
138
+ let data = '';
139
+ res.on('data', (chunk) => { data += chunk; });
140
+ res.on('end', () => {
141
+ if (res.statusCode >= 200 && res.statusCode < 300) {
142
+ try {
143
+ const parsed = JSON.parse(data);
144
+ resolve(parsed.result || null);
145
+ }
146
+ catch {
147
+ resolve(null);
148
+ }
149
+ }
150
+ else {
151
+ reject(new Error(`Telegram API ${res.statusCode}: ${data}`));
152
+ }
153
+ });
154
+ });
155
+ req.on('error', reject);
156
+ req.on('timeout', () => {
157
+ req.destroy();
158
+ reject(new Error('Telegram request timed out'));
159
+ });
160
+ req.write(body);
161
+ req.end();
162
+ });
163
+ }
164
+ // ── Helpers ──────────────────────────────────────────────────────
165
+ function readStdin() {
166
+ return new Promise((resolve) => {
167
+ let data = '';
168
+ let resolved = false;
169
+ process.stdin.setEncoding('utf8');
170
+ process.stdin.on('data', (chunk) => { data += chunk; });
171
+ process.stdin.on('end', () => {
172
+ if (!resolved) {
173
+ resolved = true;
174
+ resolve(data);
175
+ }
176
+ });
177
+ setTimeout(() => {
178
+ if (!resolved) {
179
+ resolved = true;
180
+ process.stdin.destroy();
181
+ resolve(data || '{}');
182
+ }
183
+ }, 500);
184
+ });
185
+ }
186
+ function escapeMarkdown(text) {
187
+ return text.replace(/([_*`\[])/g, '\\$1');
188
+ }
189
+ // ── Run ─────────────────────────────────────────────────────────
190
+ main().catch((err) => {
191
+ process.stderr.write(`[permission-denied-notify] Fatal: ${err.message}\n`);
192
+ });
193
+ //# sourceMappingURL=permission-denied-notify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-denied-notify.js","sourceRoot":"","sources":["../permission-denied-notify.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ async function main() {
70
70
  const toolInput = (payload.tool_input || {});
71
71
  const cwd = payload.cwd || process.cwd();
72
72
  const workspace = (0, workspace_router_1.extractWorkspaceName)(cwd);
73
+ const sessionTitle = payload.session_title || null; // v2.1.94+
73
74
  const promptId = (0, prompt_bridge_1.generatePromptId)();
74
75
  const tmuxSession = detectSessionName(cwd);
75
76
  const isPlan = toolName === 'ExitPlanMode';
@@ -105,7 +106,9 @@ async function main() {
105
106
  else {
106
107
  // Tool permission request
107
108
  const toolDescription = formatToolDescription(toolName, toolInput);
108
- messageText = `\u{1F510} *Permission* ${escapeMarkdown(workspace)}\n\n*Tool:* ${escapeMarkdown(toolName)}`;
109
+ // Include session title if available (v2.1.94+)
110
+ const titleSuffix = sessionTitle ? ` (${escapeMarkdown(sessionTitle)})` : '';
111
+ messageText = `\u{1F510} *Permission* — ${escapeMarkdown(workspace)}${titleSuffix}\n\n*Tool:* ${escapeMarkdown(toolName)}`;
109
112
  if (toolDescription) {
110
113
  const truncated = toolDescription.length > 2500
111
114
  ? toolDescription.slice(0, 2497) + '...'
@@ -119,6 +122,9 @@ async function main() {
119
122
  { text: '\u274C Deny', callback_data: `perm:${promptId}:deny` },
120
123
  { text: '\u{1F513} Always', callback_data: `perm:${promptId}:always` },
121
124
  ],
125
+ [
126
+ { text: '\u23F8 Defer', callback_data: `perm:${promptId}:defer` },
127
+ ],
122
128
  ],
123
129
  };
124
130
  }
@@ -151,26 +157,45 @@ async function main() {
151
157
  if (response) {
152
158
  const action = response.action || 'allow';
153
159
  debugLog(`[${promptId}] Got response: action=${action}`);
154
- let decision;
155
- if (action === 'deny') {
156
- decision = 'deny';
160
+ // Handle defer action — pause the session so user can resume later
161
+ if (action === 'defer') {
162
+ // For PermissionRequest, defer means deny but with a message suggesting resume
163
+ const output = {
164
+ hookSpecificOutput: {
165
+ hookEventName: 'PermissionRequest',
166
+ decision: {
167
+ behavior: 'deny',
168
+ },
169
+ },
170
+ systemMessage: 'Session paused via Telegram. Resume with: claude --resume',
171
+ };
172
+ const outputStr = JSON.stringify(output);
173
+ debugLog(`[${promptId}] Writing defer (as deny) to stdout: ${outputStr}`);
174
+ process.stdout.write(outputStr + '\n');
175
+ debugLog(`[${promptId}] Stdout written`);
157
176
  }
158
177
  else {
159
- decision = 'allow';
160
- }
161
- const output = {
162
- hookSpecificOutput: {
163
- hookEventName: 'PermissionRequest',
164
- decision: {
165
- behavior: decision,
178
+ let decision;
179
+ if (action === 'deny') {
180
+ decision = 'deny';
181
+ }
182
+ else {
183
+ decision = 'allow';
184
+ }
185
+ const output = {
186
+ hookSpecificOutput: {
187
+ hookEventName: 'PermissionRequest',
188
+ decision: {
189
+ behavior: decision,
190
+ },
166
191
  },
167
- },
168
- systemMessage: `Decision received via Telegram: user ${decision}ed`,
169
- };
170
- const outputStr = JSON.stringify(output);
171
- debugLog(`[${promptId}] Writing to stdout: ${outputStr}`);
172
- process.stdout.write(outputStr + '\n');
173
- debugLog(`[${promptId}] Stdout written`);
192
+ systemMessage: `Decision received via Telegram: user ${decision}ed`,
193
+ };
194
+ const outputStr = JSON.stringify(output);
195
+ debugLog(`[${promptId}] Writing to stdout: ${outputStr}`);
196
+ process.stdout.write(outputStr + '\n');
197
+ debugLog(`[${promptId}] Stdout written`);
198
+ }
174
199
  }
175
200
  else {
176
201
  debugLog(`[${promptId}] No response received (timed out or error)`);
@@ -1 +1 @@
1
- {"version":3,"file":"permission-hook.js","sourceRoot":"","sources":["../permission-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-hook.js","sourceRoot":"","sources":["../permission-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pre-Compact Notify — Called by Claude Code's PreCompact hook.
4
+ *
5
+ * BLOCKING mode: Notifies user before context compaction, allows them to
6
+ * block it if they want to preserve context.
7
+ *
8
+ * Stdin JSON: { cwd, session_id, tokens_current, ... }
9
+ * Stdout: { hookSpecificOutput: { decision: "block" } } — to prevent compaction
10
+ * (or exit silently to allow compaction)
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=pre-compact-notify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-compact-notify.d.ts","sourceRoot":"","sources":["../pre-compact-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Pre-Compact Notify — Called by Claude Code's PreCompact hook.
5
+ *
6
+ * BLOCKING mode: Notifies user before context compaction, allows them to
7
+ * block it if they want to preserve context.
8
+ *
9
+ * Stdin JSON: { cwd, session_id, tokens_current, ... }
10
+ * Stdout: { hookSpecificOutput: { decision: "block" } } — to prevent compaction
11
+ * (or exit silently to allow compaction)
12
+ */
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const path_1 = __importDefault(require("path"));
18
+ const paths_1 = require("./src/utils/paths");
19
+ require('dotenv').config({ path: path_1.default.join(paths_1.PROJECT_ROOT, '.env'), quiet: true });
20
+ const fs_1 = __importDefault(require("fs"));
21
+ const https_1 = __importDefault(require("https"));
22
+ const workspace_router_1 = require("./workspace-router");
23
+ const prompt_bridge_1 = require("./prompt-bridge");
24
+ const active_check_1 = require("./src/utils/active-check");
25
+ const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN;
26
+ const CHAT_ID = process.env.TELEGRAM_CHAT_ID;
27
+ // Polling configuration
28
+ const POLL_INTERVAL_MS = 500;
29
+ const POLL_TIMEOUT_MS = 30000; // 30 seconds to decide
30
+ // ── Main ────────────────────────────────────────────────────────
31
+ async function main() {
32
+ const raw = await readStdin();
33
+ // Skip Telegram notification if user is at terminal AND this wasn't Telegram-injected
34
+ const typingActivePath = path_1.default.join(paths_1.PROJECT_ROOT, 'src/data', 'typing-active');
35
+ const isTelegramInjected = fs_1.default.existsSync(typingActivePath);
36
+ if (!isTelegramInjected && (0, active_check_1.isUserActiveAtTerminal)()) {
37
+ // User is at terminal — let compaction proceed automatically
38
+ return;
39
+ }
40
+ let payload;
41
+ try {
42
+ payload = JSON.parse(raw);
43
+ }
44
+ catch {
45
+ return;
46
+ }
47
+ const cwd = payload.cwd || process.cwd();
48
+ const workspace = (0, workspace_router_1.extractWorkspaceName)(cwd);
49
+ const tokensCurrent = payload.tokens_current;
50
+ const promptId = (0, prompt_bridge_1.generatePromptId)();
51
+ let messageText = `\u{1F4E6} *Context Compaction* — ${escapeMarkdown(workspace)}\n\n`;
52
+ messageText += `Context is getting large and will be compacted.`;
53
+ if (tokensCurrent) {
54
+ messageText += `\n\n_Current tokens: ${tokensCurrent.toLocaleString()}_`;
55
+ }
56
+ // Build inline keyboard with Proceed/Block buttons
57
+ const keyboard = [
58
+ [
59
+ { text: '\u2705 Proceed', callback_data: `pre-compact:${promptId}:proceed` },
60
+ { text: '\u{1F6D1} Block', callback_data: `pre-compact:${promptId}:block` },
61
+ ],
62
+ ];
63
+ // Write pending file
64
+ (0, prompt_bridge_1.writePending)(promptId, {
65
+ type: 'pre-compact',
66
+ workspace,
67
+ tokensCurrent,
68
+ });
69
+ // Send Telegram message
70
+ try {
71
+ const result = await sendTelegramWithKeyboard(messageText, { inline_keyboard: keyboard });
72
+ if (result && result.message_id) {
73
+ (0, workspace_router_1.trackNotificationMessage)(result.message_id, workspace, 'pre-compact');
74
+ }
75
+ }
76
+ catch (err) {
77
+ process.stderr.write(`[pre-compact-notify] Telegram send failed: ${err.message}\n`);
78
+ (0, prompt_bridge_1.cleanPrompt)(promptId);
79
+ return; // Let compaction proceed on send failure
80
+ }
81
+ // Poll for response
82
+ const response = await pollForResponse(promptId);
83
+ (0, prompt_bridge_1.cleanPrompt)(promptId);
84
+ if (response && response.action === 'block') {
85
+ const output = {
86
+ decision: 'block',
87
+ reason: 'User blocked compaction via Telegram to preserve context',
88
+ hookSpecificOutput: {
89
+ hookEventName: 'PreCompact',
90
+ },
91
+ };
92
+ process.stdout.write(JSON.stringify(output) + '\n');
93
+ }
94
+ // If proceed or timeout, exit silently — compaction proceeds
95
+ }
96
+ // ── Polling ─────────────────────────────────────────────────────
97
+ function pollForResponse(promptId) {
98
+ return new Promise((resolve) => {
99
+ const responseFile = path_1.default.join(prompt_bridge_1.PROMPTS_DIR, `response-${promptId}.json`);
100
+ const startTime = Date.now();
101
+ const interval = setInterval(() => {
102
+ if (Date.now() - startTime > POLL_TIMEOUT_MS) {
103
+ clearInterval(interval);
104
+ process.stderr.write(`[pre-compact-notify] Timed out — allowing compaction\n`);
105
+ resolve(null);
106
+ return;
107
+ }
108
+ try {
109
+ if (fs_1.default.existsSync(responseFile)) {
110
+ const raw = fs_1.default.readFileSync(responseFile, 'utf8');
111
+ const data = JSON.parse(raw);
112
+ clearInterval(interval);
113
+ resolve(data);
114
+ }
115
+ }
116
+ catch {
117
+ // File not ready yet or parse error — keep polling
118
+ }
119
+ }, POLL_INTERVAL_MS);
120
+ });
121
+ }
122
+ // ── Telegram ────────────────────────────────────────────────────
123
+ function sendTelegramWithKeyboard(text, replyMarkup) {
124
+ return new Promise((resolve, reject) => {
125
+ const body = JSON.stringify({
126
+ chat_id: CHAT_ID,
127
+ text,
128
+ parse_mode: 'Markdown',
129
+ reply_markup: replyMarkup,
130
+ });
131
+ const options = {
132
+ hostname: 'api.telegram.org',
133
+ path: `/bot${BOT_TOKEN}/sendMessage`,
134
+ method: 'POST',
135
+ headers: {
136
+ 'Content-Type': 'application/json',
137
+ 'Content-Length': Buffer.byteLength(body),
138
+ },
139
+ timeout: 5000,
140
+ };
141
+ const req = https_1.default.request(options, (res) => {
142
+ let data = '';
143
+ res.on('data', (chunk) => { data += chunk; });
144
+ res.on('end', () => {
145
+ if (res.statusCode >= 200 && res.statusCode < 300) {
146
+ try {
147
+ const parsed = JSON.parse(data);
148
+ resolve(parsed.result || null);
149
+ }
150
+ catch {
151
+ resolve(null);
152
+ }
153
+ }
154
+ else {
155
+ reject(new Error(`Telegram API ${res.statusCode}: ${data}`));
156
+ }
157
+ });
158
+ });
159
+ req.on('error', reject);
160
+ req.on('timeout', () => {
161
+ req.destroy();
162
+ reject(new Error('Telegram request timed out'));
163
+ });
164
+ req.write(body);
165
+ req.end();
166
+ });
167
+ }
168
+ // ── Helpers ──────────────────────────────────────────────────────
169
+ function readStdin() {
170
+ return new Promise((resolve) => {
171
+ let data = '';
172
+ let resolved = false;
173
+ process.stdin.setEncoding('utf8');
174
+ process.stdin.on('data', (chunk) => { data += chunk; });
175
+ process.stdin.on('end', () => {
176
+ if (!resolved) {
177
+ resolved = true;
178
+ resolve(data);
179
+ }
180
+ });
181
+ setTimeout(() => {
182
+ if (!resolved) {
183
+ resolved = true;
184
+ process.stdin.destroy();
185
+ resolve(data || '{}');
186
+ }
187
+ }, 500);
188
+ });
189
+ }
190
+ function escapeMarkdown(text) {
191
+ return text.replace(/([_*`\[])/g, '\\$1');
192
+ }
193
+ // ── Run ─────────────────────────────────────────────────────────
194
+ main().catch((err) => {
195
+ process.stderr.write(`[pre-compact-notify] Fatal: ${err.message}\n`);
196
+ });
197
+ //# sourceMappingURL=pre-compact-notify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-compact-notify.js","sourceRoot":"","sources":["../pre-compact-notify.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,16 @@
2
2
  /**
3
3
  * Question Notify — Called by Claude Code's PreToolUse hook (matcher: AskUserQuestion).
4
4
  *
5
- * Non-blocking: sends a Telegram message with option buttons, then returns
6
- * without stdout output. AskUserQuestion must be in the permissions allow
7
- * list (settings.json) so Claude Code handles permission automatically.
8
- * The bot callback handler later injects the selected option number via tmux.
5
+ * BLOCKING mode (v2.0): Sends Telegram notification with option buttons, polls for
6
+ * user selection, then outputs `updatedInput` via stdout so Claude Code receives
7
+ * the answer directly no keystroke injection needed!
8
+ *
9
+ * This works with ANY terminal (tmux, Ghostty, bare terminal).
9
10
  *
10
11
  * Stdin JSON: { tool_name, tool_input, cwd, session_id, hook_event_name }
11
12
  * tool_input.questions: [{ question, header, options: [{ label, description }], multiSelect }]
12
13
  *
13
- * Stdout: (none intentionally omitted so Claude Code shows the interactive question UI)
14
+ * Stdout: { hookSpecificOutput: { updatedInput: { questions: [...] }, permissionDecision: "allow" } }
14
15
  */
15
16
  export {};
16
17
  //# sourceMappingURL=question-notify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"question-notify.d.ts","sourceRoot":"","sources":["../question-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
1
+ {"version":3,"file":"question-notify.d.ts","sourceRoot":"","sources":["../question-notify.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG"}