tg-claude 0.3.2 → 0.3.4

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 (125) hide show
  1. package/package.json +2 -3
  2. package/dist/claude/ClaudeProcess.d.ts +0 -83
  3. package/dist/claude/ClaudeProcess.d.ts.map +0 -1
  4. package/dist/claude/ClaudeProcess.js +0 -283
  5. package/dist/claude/ClaudeProcess.js.map +0 -1
  6. package/dist/claude/EventAdapter.d.ts +0 -45
  7. package/dist/claude/EventAdapter.d.ts.map +0 -1
  8. package/dist/claude/EventAdapter.js +0 -138
  9. package/dist/claude/EventAdapter.js.map +0 -1
  10. package/dist/claude/index.d.ts +0 -10
  11. package/dist/claude/index.d.ts.map +0 -1
  12. package/dist/claude/index.js +0 -9
  13. package/dist/claude/index.js.map +0 -1
  14. package/dist/claude/types.d.ts +0 -244
  15. package/dist/claude/types.d.ts.map +0 -1
  16. package/dist/claude/types.js +0 -8
  17. package/dist/claude/types.js.map +0 -1
  18. package/dist/env.d.ts +0 -21
  19. package/dist/env.d.ts.map +0 -1
  20. package/dist/env.js +0 -49
  21. package/dist/env.js.map +0 -1
  22. package/dist/index.d.ts +0 -2
  23. package/dist/index.d.ts.map +0 -1
  24. package/dist/index.js +0 -433
  25. package/dist/index.js.map +0 -1
  26. package/dist/parser/AnsiStripper.d.ts +0 -54
  27. package/dist/parser/AnsiStripper.d.ts.map +0 -1
  28. package/dist/parser/AnsiStripper.js +0 -115
  29. package/dist/parser/AnsiStripper.js.map +0 -1
  30. package/dist/parser/OptionExtractor.d.ts +0 -31
  31. package/dist/parser/OptionExtractor.d.ts.map +0 -1
  32. package/dist/parser/OptionExtractor.js +0 -91
  33. package/dist/parser/OptionExtractor.js.map +0 -1
  34. package/dist/parser/OutputParser.d.ts +0 -121
  35. package/dist/parser/OutputParser.d.ts.map +0 -1
  36. package/dist/parser/OutputParser.js +0 -306
  37. package/dist/parser/OutputParser.js.map +0 -1
  38. package/dist/parser/PromptDetector.d.ts +0 -20
  39. package/dist/parser/PromptDetector.d.ts.map +0 -1
  40. package/dist/parser/PromptDetector.js +0 -68
  41. package/dist/parser/PromptDetector.js.map +0 -1
  42. package/dist/parser/index.d.ts +0 -7
  43. package/dist/parser/index.d.ts.map +0 -1
  44. package/dist/parser/index.js +0 -5
  45. package/dist/parser/index.js.map +0 -1
  46. package/dist/parser/types.d.ts +0 -73
  47. package/dist/parser/types.d.ts.map +0 -1
  48. package/dist/parser/types.js +0 -2
  49. package/dist/parser/types.js.map +0 -1
  50. package/dist/pty/OutputBuffer.d.ts +0 -39
  51. package/dist/pty/OutputBuffer.d.ts.map +0 -1
  52. package/dist/pty/OutputBuffer.js +0 -55
  53. package/dist/pty/OutputBuffer.js.map +0 -1
  54. package/dist/pty/PtyProcess.d.ts +0 -47
  55. package/dist/pty/PtyProcess.d.ts.map +0 -1
  56. package/dist/pty/PtyProcess.js +0 -94
  57. package/dist/pty/PtyProcess.js.map +0 -1
  58. package/dist/pty/PtyService.d.ts +0 -55
  59. package/dist/pty/PtyService.d.ts.map +0 -1
  60. package/dist/pty/PtyService.js +0 -115
  61. package/dist/pty/PtyService.js.map +0 -1
  62. package/dist/pty/index.d.ts +0 -5
  63. package/dist/pty/index.d.ts.map +0 -1
  64. package/dist/pty/index.js +0 -4
  65. package/dist/pty/index.js.map +0 -1
  66. package/dist/pty/types.d.ts +0 -36
  67. package/dist/pty/types.d.ts.map +0 -1
  68. package/dist/pty/types.js +0 -2
  69. package/dist/pty/types.js.map +0 -1
  70. package/dist/router/BoundedQueue.d.ts +0 -57
  71. package/dist/router/BoundedQueue.d.ts.map +0 -1
  72. package/dist/router/BoundedQueue.js +0 -86
  73. package/dist/router/BoundedQueue.js.map +0 -1
  74. package/dist/router/EventRouter.d.ts +0 -103
  75. package/dist/router/EventRouter.d.ts.map +0 -1
  76. package/dist/router/EventRouter.js +0 -169
  77. package/dist/router/EventRouter.js.map +0 -1
  78. package/dist/router/index.d.ts +0 -13
  79. package/dist/router/index.d.ts.map +0 -1
  80. package/dist/router/index.js +0 -12
  81. package/dist/router/index.js.map +0 -1
  82. package/dist/router/types.d.ts +0 -104
  83. package/dist/router/types.d.ts.map +0 -1
  84. package/dist/router/types.js +0 -6
  85. package/dist/router/types.js.map +0 -1
  86. package/dist/setup/envWriter.d.ts +0 -22
  87. package/dist/setup/envWriter.d.ts.map +0 -1
  88. package/dist/setup/envWriter.js +0 -68
  89. package/dist/setup/envWriter.js.map +0 -1
  90. package/dist/setup/index.d.ts +0 -4
  91. package/dist/setup/index.d.ts.map +0 -1
  92. package/dist/setup/index.js +0 -4
  93. package/dist/setup/index.js.map +0 -1
  94. package/dist/setup/validators.d.ts +0 -22
  95. package/dist/setup/validators.d.ts.map +0 -1
  96. package/dist/setup/validators.js +0 -47
  97. package/dist/setup/validators.js.map +0 -1
  98. package/dist/setup/wizard.d.ts +0 -7
  99. package/dist/setup/wizard.d.ts.map +0 -1
  100. package/dist/setup/wizard.js +0 -56
  101. package/dist/setup/wizard.js.map +0 -1
  102. package/dist/telegram/TelegramBot.d.ts +0 -163
  103. package/dist/telegram/TelegramBot.d.ts.map +0 -1
  104. package/dist/telegram/TelegramBot.js +0 -634
  105. package/dist/telegram/TelegramBot.js.map +0 -1
  106. package/dist/telegram/index.d.ts +0 -7
  107. package/dist/telegram/index.d.ts.map +0 -1
  108. package/dist/telegram/index.js +0 -6
  109. package/dist/telegram/index.js.map +0 -1
  110. package/dist/telegram/types.d.ts +0 -30
  111. package/dist/telegram/types.d.ts.map +0 -1
  112. package/dist/telegram/types.js +0 -5
  113. package/dist/telegram/types.js.map +0 -1
  114. package/dist/terminal/TerminalInterface.d.ts +0 -61
  115. package/dist/terminal/TerminalInterface.d.ts.map +0 -1
  116. package/dist/terminal/TerminalInterface.js +0 -218
  117. package/dist/terminal/TerminalInterface.js.map +0 -1
  118. package/dist/terminal/index.d.ts +0 -3
  119. package/dist/terminal/index.d.ts.map +0 -1
  120. package/dist/terminal/index.js +0 -2
  121. package/dist/terminal/index.js.map +0 -1
  122. package/dist/terminal/types.d.ts +0 -17
  123. package/dist/terminal/types.d.ts.map +0 -1
  124. package/dist/terminal/types.js +0 -2
  125. package/dist/terminal/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tg-claude",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Bridge between Claude Code CLI and Telegram for mobile interaction",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,8 +14,7 @@
14
14
  "scripts": {
15
15
  "build": "tsc",
16
16
  "start": "node dist/index.js",
17
- "dev": "tsx src/index.ts",
18
- "prepare": "npm run build"
17
+ "dev": "tsx src/index.ts"
19
18
  },
20
19
  "engines": {
21
20
  "node": ">=20"
@@ -1,83 +0,0 @@
1
- import type { ClaudeProcessOptions, ClaudeProcessEvents } from './types.js';
2
- /**
3
- * ClaudeProcess spawns the Claude CLI as a subprocess and parses
4
- * NDJSON stream-json output into typed events.
5
- *
6
- * Usage:
7
- * ```typescript
8
- * const claude = new ClaudeProcess({
9
- * cwd: '/path/to/project',
10
- * prompt: 'Hello, Claude!',
11
- * });
12
- *
13
- * claude.on('init', (e) => console.log('Session:', e.sessionId));
14
- * claude.on('text', (e) => console.log('Text:', e.text));
15
- * claude.on('complete', (e) => console.log('Done:', e.result));
16
- * claude.on('error', (e) => console.error('Error:', e.message));
17
- *
18
- * await claude.start();
19
- * ```
20
- */
21
- export declare class ClaudeProcess {
22
- private readonly options;
23
- private readonly emitter;
24
- private proc;
25
- private readline;
26
- private sessionId;
27
- private running;
28
- private stderrChunks;
29
- private emittedToolUseIds;
30
- constructor(options: ClaudeProcessOptions);
31
- /**
32
- * Subscribe to process events
33
- */
34
- on<K extends keyof ClaudeProcessEvents>(event: K, listener: ClaudeProcessEvents[K]): this;
35
- /**
36
- * Subscribe to process events (once)
37
- */
38
- once<K extends keyof ClaudeProcessEvents>(event: K, listener: ClaudeProcessEvents[K]): this;
39
- /**
40
- * Unsubscribe from process events
41
- */
42
- off<K extends keyof ClaudeProcessEvents>(event: K, listener: ClaudeProcessEvents[K]): this;
43
- /**
44
- * Remove all listeners for an event
45
- */
46
- removeAllListeners<K extends keyof ClaudeProcessEvents>(event?: K): this;
47
- /**
48
- * Start the Claude CLI process and begin parsing output
49
- * Resolves when the process exits (or rejects on spawn error)
50
- */
51
- start(): Promise<void>;
52
- /**
53
- * Build CLI arguments based on options
54
- */
55
- private buildArgs;
56
- /**
57
- * Handle a parsed stream-json message
58
- */
59
- private handleMessage;
60
- /**
61
- * Emit an error event with structured details
62
- */
63
- private emitError;
64
- /**
65
- * Get the current session ID (available after 'init' event)
66
- */
67
- get currentSessionId(): string | null;
68
- /**
69
- * Check if the process is currently running
70
- */
71
- get isRunning(): boolean;
72
- /**
73
- * Kill the Claude CLI process
74
- */
75
- kill(): void;
76
- /**
77
- * Write a response to stdin (for answering AskUserQuestion)
78
- * @param text The response text to send
79
- * @returns true if written successfully, false if process not running or stdin unavailable
80
- */
81
- writeStdin(text: string): boolean;
82
- }
83
- //# sourceMappingURL=ClaudeProcess.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClaudeProcess.d.ts","sourceRoot":"","sources":["../../src/claude/ClaudeProcess.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAcpB,MAAM,YAAY,CAAC;AAapB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa;IASZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,iBAAiB,CAAqB;gBAEjB,OAAO,EAAE,oBAAoB;IAI1D;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAKzF;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK3F;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1F;;OAEG;IACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAKxE;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkF5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoFrB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CASlC"}
@@ -1,283 +0,0 @@
1
- import { spawn } from 'child_process';
2
- import { createInterface } from 'readline';
3
- import { EventEmitter } from 'events';
4
- /**
5
- * ClaudeProcess spawns the Claude CLI as a subprocess and parses
6
- * NDJSON stream-json output into typed events.
7
- *
8
- * Usage:
9
- * ```typescript
10
- * const claude = new ClaudeProcess({
11
- * cwd: '/path/to/project',
12
- * prompt: 'Hello, Claude!',
13
- * });
14
- *
15
- * claude.on('init', (e) => console.log('Session:', e.sessionId));
16
- * claude.on('text', (e) => console.log('Text:', e.text));
17
- * claude.on('complete', (e) => console.log('Done:', e.result));
18
- * claude.on('error', (e) => console.error('Error:', e.message));
19
- *
20
- * await claude.start();
21
- * ```
22
- */
23
- export class ClaudeProcess {
24
- options;
25
- emitter;
26
- proc = null;
27
- readline = null;
28
- sessionId = null;
29
- running = false;
30
- stderrChunks = [];
31
- emittedToolUseIds = new Set(); // Dedupe tool_use events
32
- constructor(options) {
33
- this.options = options;
34
- this.emitter = new EventEmitter();
35
- }
36
- /**
37
- * Subscribe to process events
38
- */
39
- on(event, listener) {
40
- this.emitter.on(event, listener);
41
- return this;
42
- }
43
- /**
44
- * Subscribe to process events (once)
45
- */
46
- once(event, listener) {
47
- this.emitter.once(event, listener);
48
- return this;
49
- }
50
- /**
51
- * Unsubscribe from process events
52
- */
53
- off(event, listener) {
54
- this.emitter.off(event, listener);
55
- return this;
56
- }
57
- /**
58
- * Remove all listeners for an event
59
- */
60
- removeAllListeners(event) {
61
- this.emitter.removeAllListeners(event);
62
- return this;
63
- }
64
- /**
65
- * Start the Claude CLI process and begin parsing output
66
- * Resolves when the process exits (or rejects on spawn error)
67
- */
68
- async start() {
69
- if (this.running) {
70
- throw new Error('ClaudeProcess is already running');
71
- }
72
- const args = this.buildArgs();
73
- this.running = true;
74
- try {
75
- this.proc = spawn('claude', args, {
76
- cwd: this.options.cwd,
77
- stdio: ['pipe', 'pipe', 'pipe'],
78
- });
79
- }
80
- catch (err) {
81
- this.running = false;
82
- const error = err;
83
- this.emitError('spawn', `Failed to spawn claude CLI: ${error.message}`);
84
- return;
85
- }
86
- // Handle spawn errors (e.g., ENOENT when claude is not found)
87
- this.proc.on('error', (err) => {
88
- this.running = false;
89
- if (err.code === 'ENOENT') {
90
- this.emitError('spawn', "Claude CLI not found. Ensure 'claude' is installed and in PATH.");
91
- }
92
- else {
93
- this.emitError('spawn', `Failed to spawn claude CLI: ${err.message}`);
94
- }
95
- });
96
- // Collect stderr for error reporting
97
- if (this.proc.stderr) {
98
- this.proc.stderr.on('data', (chunk) => {
99
- this.stderrChunks.push(chunk);
100
- });
101
- }
102
- // Create readline interface on stdout for NDJSON parsing
103
- if (this.proc.stdout) {
104
- this.readline = createInterface({ input: this.proc.stdout });
105
- // Parse each line as JSON
106
- for await (const line of this.readline) {
107
- if (!line.trim())
108
- continue;
109
- try {
110
- const msg = JSON.parse(line);
111
- this.handleMessage(msg);
112
- }
113
- catch (err) {
114
- const error = err;
115
- this.emitError('parse', `Failed to parse JSON: ${error.message}`, {
116
- line: line.slice(0, 200),
117
- });
118
- }
119
- }
120
- }
121
- // Wait for process to exit
122
- const exitCode = await new Promise((resolve) => {
123
- if (!this.proc) {
124
- resolve(null);
125
- return;
126
- }
127
- this.proc.on('close', (code) => {
128
- this.running = false;
129
- resolve(code);
130
- });
131
- });
132
- // Report non-zero exit
133
- if (exitCode !== null && exitCode !== 0) {
134
- const stderr = Buffer.concat(this.stderrChunks).toString();
135
- this.emitError('exit', `Claude CLI exited with code ${exitCode}`, {
136
- code: exitCode,
137
- stderr: stderr.slice(0, 1000),
138
- });
139
- }
140
- }
141
- /**
142
- * Build CLI arguments based on options
143
- */
144
- buildArgs() {
145
- const args = [
146
- '-p',
147
- this.options.prompt,
148
- '--output-format',
149
- 'stream-json',
150
- '--verbose',
151
- ];
152
- if (this.options.sessionId) {
153
- args.push('--resume', this.options.sessionId);
154
- }
155
- if (this.options.permissionMode) {
156
- args.push('--permission-mode', this.options.permissionMode);
157
- }
158
- return args;
159
- }
160
- /**
161
- * Handle a parsed stream-json message
162
- */
163
- handleMessage(msg) {
164
- switch (msg.type) {
165
- case 'system':
166
- if ('subtype' in msg && msg.subtype === 'init') {
167
- const initMsg = msg;
168
- this.sessionId = initMsg.session_id;
169
- const initEvent = {
170
- sessionId: initMsg.session_id,
171
- tools: initMsg.tools,
172
- model: initMsg.model,
173
- };
174
- this.emitter.emit('init', initEvent);
175
- }
176
- // Hook messages (hook_started, hook_response) are skipped silently
177
- break;
178
- case 'assistant': {
179
- const assistantMsg = msg;
180
- for (const block of assistantMsg.message.content) {
181
- if (block.type === 'text') {
182
- const textEvent = { text: block.text };
183
- this.emitter.emit('text', textEvent);
184
- }
185
- else if (block.type === 'tool_use') {
186
- // Deduplicate tool_use events by ID (same message may be streamed multiple times)
187
- if (this.emittedToolUseIds.has(block.id)) {
188
- continue;
189
- }
190
- this.emittedToolUseIds.add(block.id);
191
- const toolUseEvent = {
192
- id: block.id,
193
- name: block.name,
194
- input: block.input,
195
- };
196
- this.emitter.emit('tool_use', toolUseEvent);
197
- // Emit special 'question' event for AskUserQuestion tool
198
- if (block.name === 'AskUserQuestion') {
199
- const askInput = block.input;
200
- if (askInput.questions && askInput.questions.length > 0) {
201
- const q = askInput.questions[0]; // Handle first question
202
- const questionEvent = {
203
- question: q.question,
204
- options: q.options,
205
- multiSelect: q.multiSelect,
206
- };
207
- this.emitter.emit('question', questionEvent);
208
- }
209
- }
210
- }
211
- }
212
- break;
213
- }
214
- case 'user': {
215
- const userMsg = msg;
216
- // Emit tool_result for each tool result in the message
217
- for (const content of userMsg.message.content) {
218
- if (content.type === 'tool_result') {
219
- const toolResultEvent = {
220
- result: content.content,
221
- isError: content.is_error,
222
- };
223
- this.emitter.emit('tool_result', toolResultEvent);
224
- }
225
- }
226
- break;
227
- }
228
- case 'result': {
229
- const resultMsg = msg;
230
- const completeEvent = {
231
- result: resultMsg.result,
232
- sessionId: resultMsg.session_id,
233
- cost: resultMsg.total_cost_usd,
234
- duration: resultMsg.duration_ms,
235
- isError: resultMsg.is_error,
236
- };
237
- this.emitter.emit('complete', completeEvent);
238
- break;
239
- }
240
- }
241
- }
242
- /**
243
- * Emit an error event with structured details
244
- */
245
- emitError(type, message, details) {
246
- const errorEvent = { type, message, details };
247
- this.emitter.emit('error', errorEvent);
248
- }
249
- /**
250
- * Get the current session ID (available after 'init' event)
251
- */
252
- get currentSessionId() {
253
- return this.sessionId;
254
- }
255
- /**
256
- * Check if the process is currently running
257
- */
258
- get isRunning() {
259
- return this.running;
260
- }
261
- /**
262
- * Kill the Claude CLI process
263
- */
264
- kill() {
265
- if (this.proc && this.running) {
266
- this.proc.kill('SIGTERM');
267
- }
268
- }
269
- /**
270
- * Write a response to stdin (for answering AskUserQuestion)
271
- * @param text The response text to send
272
- * @returns true if written successfully, false if process not running or stdin unavailable
273
- */
274
- writeStdin(text) {
275
- if (!this.proc || !this.running || !this.proc.stdin) {
276
- return false;
277
- }
278
- // Write the response followed by newline (simulates user pressing Enter)
279
- this.proc.stdin.write(text + '\n');
280
- return true;
281
- }
282
- }
283
- //# sourceMappingURL=ClaudeProcess.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClaudeProcess.js","sourceRoot":"","sources":["../../src/claude/ClaudeProcess.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import type { ClaudeProcess } from './ClaudeProcess.js';
2
- import type { EventRouter } from '../router/EventRouter.js';
3
- /**
4
- * EventAdapter bridges ClaudeProcess events to EventRouter format.
5
- *
6
- * Subscribes to ClaudeProcess events and publishes corresponding
7
- * OutboundEvents to the router for Telegram integration.
8
- */
9
- export declare class EventAdapter {
10
- private readonly claudeProcess;
11
- private readonly router;
12
- private readonly sessionId;
13
- private _lastSessionId;
14
- private _textBuffer;
15
- private _hasQuestion;
16
- private _lastQuestionHash;
17
- constructor(claudeProcess: ClaudeProcess, router: EventRouter, sessionId: string);
18
- /**
19
- * Subscribe to ClaudeProcess events and wire to router
20
- */
21
- private subscribeToEvents;
22
- /**
23
- * Clean result text for Telegram
24
- * - Strips TUI box drawing characters
25
- * - Returns "Task completed" if empty after cleaning
26
- */
27
- private cleanResult;
28
- /**
29
- * Get the session ID from Claude's last run (for --resume)
30
- */
31
- get lastSessionId(): string | null;
32
- /**
33
- * Get accumulated text output
34
- */
35
- get textBuffer(): string;
36
- /**
37
- * Check if a question was asked in this turn
38
- */
39
- get hasQuestion(): boolean;
40
- /**
41
- * Clear text buffer and question state for new conversation turn
42
- */
43
- reset(): void;
44
- }
45
- //# sourceMappingURL=EventAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventAdapter.d.ts","sourceRoot":"","sources":["../../src/claude/EventAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAS5D;;;;;GAKG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAuB;gBAG7B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM;IAKpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqFzB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
@@ -1,138 +0,0 @@
1
- /**
2
- * TUI box drawing characters to strip from summaries
3
- */
4
- const TUI_CHARS_REGEX = /[─│┌┐└┘├┤┬┴┼═║╔╗╚╝╠╣╦╩╬]/g;
5
- /**
6
- * EventAdapter bridges ClaudeProcess events to EventRouter format.
7
- *
8
- * Subscribes to ClaudeProcess events and publishes corresponding
9
- * OutboundEvents to the router for Telegram integration.
10
- */
11
- export class EventAdapter {
12
- claudeProcess;
13
- router;
14
- sessionId;
15
- _lastSessionId = null;
16
- _textBuffer = '';
17
- _hasQuestion = false;
18
- _lastQuestionHash = null; // Dedupe repeated questions
19
- constructor(claudeProcess, router, sessionId) {
20
- this.claudeProcess = claudeProcess;
21
- this.router = router;
22
- this.sessionId = sessionId;
23
- this.subscribeToEvents();
24
- }
25
- /**
26
- * Subscribe to ClaudeProcess events and wire to router
27
- */
28
- subscribeToEvents() {
29
- // Accumulate text output for context
30
- this.claudeProcess.on('text', (event) => {
31
- this._textBuffer += event.text;
32
- });
33
- // Log tool usage for debugging/status
34
- this.claudeProcess.on('tool_use', (event) => {
35
- console.log(`[ADAPTER] Tool use: ${event.name}`);
36
- if (event.name === 'AskUserQuestion') {
37
- console.log(`[ADAPTER] AskUserQuestion input:`, JSON.stringify(event.input, null, 2));
38
- }
39
- });
40
- // Log tool results for debugging/status
41
- this.claudeProcess.on('tool_result', (event) => {
42
- const preview = event.result.slice(0, 100);
43
- console.log(`[ADAPTER] Tool result: ${preview}${event.result.length > 100 ? '...' : ''}`);
44
- });
45
- // Handle AskUserQuestion - publish prompt event to router
46
- this.claudeProcess.on('question', (event) => {
47
- // Deduplicate repeated questions (Claude may retry while waiting for response)
48
- const questionHash = `${event.question}:${event.options.map(o => o.label).join(',')}`;
49
- if (this._lastQuestionHash === questionHash) {
50
- console.log(`[ADAPTER] Skipping duplicate question: ${event.question.slice(0, 50)}...`);
51
- return;
52
- }
53
- this._lastQuestionHash = questionHash;
54
- this._hasQuestion = true;
55
- console.log(`[ADAPTER] Question detected: ${event.question}`);
56
- // Convert to PromptOption format (index is 1-based)
57
- const options = event.options.map((opt, idx) => ({
58
- index: idx + 1,
59
- text: `${opt.label} - ${opt.description}`,
60
- selected: idx === 0, // First option selected by default
61
- }));
62
- const promptEvent = {
63
- type: 'blocking-prompt',
64
- question: event.question,
65
- options,
66
- rawContext: this._textBuffer.slice(-500), // Last 500 chars of context
67
- timestamp: Date.now(),
68
- multiSelect: event.multiSelect, // Pass through multiSelect flag
69
- };
70
- this.router.publishOutbound({
71
- sessionId: this.sessionId,
72
- type: 'prompt',
73
- payload: promptEvent,
74
- timestamp: Date.now(),
75
- });
76
- });
77
- // Handle completion - publish to router (skip if question was asked)
78
- this.claudeProcess.on('complete', (event) => {
79
- this._lastSessionId = event.sessionId;
80
- // Skip completion notification if a question was asked
81
- // (user needs to respond to question first)
82
- if (this._hasQuestion) {
83
- console.log(`[ADAPTER] Complete (skipped notification - awaiting question response): sessionId=${event.sessionId}, cost=$${event.cost.toFixed(4)}`);
84
- return;
85
- }
86
- const summary = this.cleanResult(event.result);
87
- const payload = {
88
- summary,
89
- duration: event.duration,
90
- };
91
- console.log(`[ADAPTER] Complete: sessionId=${event.sessionId}, cost=$${event.cost.toFixed(4)}`);
92
- this.router.publishOutbound({
93
- sessionId: this.sessionId,
94
- type: 'completion',
95
- payload,
96
- timestamp: Date.now(),
97
- });
98
- });
99
- }
100
- /**
101
- * Clean result text for Telegram
102
- * - Strips TUI box drawing characters
103
- * - Returns "Task completed" if empty after cleaning
104
- */
105
- cleanResult(result) {
106
- // Strip TUI box drawing characters
107
- const cleaned = result.replace(TUI_CHARS_REGEX, '').trim();
108
- // Return default if empty
109
- return cleaned || 'Task completed';
110
- }
111
- /**
112
- * Get the session ID from Claude's last run (for --resume)
113
- */
114
- get lastSessionId() {
115
- return this._lastSessionId;
116
- }
117
- /**
118
- * Get accumulated text output
119
- */
120
- get textBuffer() {
121
- return this._textBuffer;
122
- }
123
- /**
124
- * Check if a question was asked in this turn
125
- */
126
- get hasQuestion() {
127
- return this._hasQuestion;
128
- }
129
- /**
130
- * Clear text buffer and question state for new conversation turn
131
- */
132
- reset() {
133
- this._textBuffer = '';
134
- this._hasQuestion = false;
135
- this._lastQuestionHash = null; // Allow same question in new turn
136
- }
137
- }
138
- //# sourceMappingURL=EventAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventAdapter.js","sourceRoot":"","sources":["../../src/claude/EventAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Claude CLI integration module
3
- *
4
- * Provides subprocess management for Claude CLI with stream-json output parsing.
5
- * This replaces PTY-based ANSI parsing with structured JSON events.
6
- */
7
- export { ClaudeProcess } from './ClaudeProcess.js';
8
- export { EventAdapter } from './EventAdapter.js';
9
- export type { BaseMessage, SystemInitMessage, SystemHookMessage, SystemMessage, TextBlock, ToolUseBlock, ContentBlock, MessageUsage, AssistantMessage, ToolResultContent, UserMessage, ResultSubtype, ResultMessage, StreamMessage, InitEvent, TextEvent, ToolUseEvent, ToolResultEvent, CompleteEvent, ErrorType, ErrorEvent, PermissionMode, ClaudeProcessOptions, ClaudeProcessEvents, } from './types.js';
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,YAAY,EAEV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EAEb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,UAAU,EAEV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Claude CLI integration module
3
- *
4
- * Provides subprocess management for Claude CLI with stream-json output parsing.
5
- * This replaces PTY-based ANSI parsing with structured JSON events.
6
- */
7
- export { ClaudeProcess } from './ClaudeProcess.js';
8
- export { EventAdapter } from './EventAdapter.js';
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}