cyrus-claude-runner 0.0.1 → 0.0.3

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.
@@ -1,59 +1,47 @@
1
1
  import { EventEmitter } from 'events';
2
- import type { ClaudeRunnerConfig, ClaudeRunnerEvents, ClaudeProcessInfo } from './types.js';
2
+ import { type SDKMessage } from '@anthropic-ai/claude-code';
3
+ import type { ClaudeRunnerConfig, ClaudeRunnerEvents, ClaudeSessionInfo } from './types.js';
3
4
  export declare interface ClaudeRunner {
4
5
  on<K extends keyof ClaudeRunnerEvents>(event: K, listener: ClaudeRunnerEvents[K]): this;
5
6
  emit<K extends keyof ClaudeRunnerEvents>(event: K, ...args: Parameters<ClaudeRunnerEvents[K]>): boolean;
6
7
  }
7
8
  /**
8
- * Manages spawning and communication with Claude CLI processes
9
+ * Manages Claude SDK sessions and communication
9
10
  */
10
11
  export declare class ClaudeRunner extends EventEmitter {
11
12
  private config;
12
- private process;
13
- private parser;
14
- private startedAt;
13
+ private abortController;
14
+ private sessionInfo;
15
15
  private logStream;
16
- private sessionId;
16
+ private messages;
17
17
  constructor(config: ClaudeRunnerConfig);
18
18
  /**
19
- * Spawn a new Claude process
19
+ * Start a new Claude session
20
20
  */
21
- spawn(): ClaudeProcessInfo;
21
+ start(prompt: string): Promise<ClaudeSessionInfo>;
22
22
  /**
23
- * Send input to Claude
23
+ * Stop the current Claude session
24
24
  */
25
- sendInput(input: string): Promise<void>;
25
+ stop(): void;
26
26
  /**
27
- * Send initial prompt and close stdin
28
- */
29
- sendInitialPrompt(prompt: string): Promise<void>;
30
- /**
31
- * Kill the Claude process
32
- */
33
- kill(): void;
34
- /**
35
- * Check if process is running
27
+ * Check if session is running
36
28
  */
37
29
  isRunning(): boolean;
38
30
  /**
39
- * Build command line arguments
31
+ * Get current session info
40
32
  */
41
- private buildArgs;
33
+ getSessionInfo(): ClaudeSessionInfo | null;
42
34
  /**
43
- * Set up parser event handlers
35
+ * Get all messages from current session
44
36
  */
45
- private setupParserEvents;
37
+ getMessages(): SDKMessage[];
46
38
  /**
47
- * Set up process event handlers
39
+ * Process individual SDK messages and emit appropriate events
48
40
  */
49
- private setupProcessEvents;
41
+ private processMessage;
50
42
  /**
51
43
  * Set up logging to .cyrus directory
52
44
  */
53
45
  private setupLogging;
54
- /**
55
- * Update log file path when session ID is captured
56
- */
57
- private updateLogFilePath;
58
46
  }
59
47
  //# sourceMappingURL=ClaudeRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeRunner.d.ts","sourceRoot":"","sources":["../src/ClaudeRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAMrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3F,MAAM,CAAC,OAAO,WAAW,YAAY;IACnC,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACvF,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;CACxG;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAsB;gBAE3B,MAAM,EAAE,kBAAkB;IAUtC;;OAEG;IACH,KAAK,IAAI,iBAAiB;IAmF1B;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B7C;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,SAAS;IA4BjB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwE1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAsCpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAqC1B"}
1
+ {"version":3,"file":"ClaudeRunner.d.ts","sourceRoot":"","sources":["../src/ClaudeRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIrC,OAAO,EAAS,KAAK,UAAU,EAAc,MAAM,2BAA2B,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3F,MAAM,CAAC,OAAO,WAAW,YAAY;IACnC,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACvF,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;CACxG;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,MAAM,EAAE,kBAAkB;IAUtC;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwIvD;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,iBAAiB,GAAG,IAAI;IAI1C;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IAI3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAsCrB"}
@@ -1,309 +1,213 @@
1
1
  import { EventEmitter } from 'events';
2
- import { spawn } from 'child_process';
3
- import { mkdirSync, createWriteStream } from 'fs';
2
+ import { mkdirSync, createWriteStream, readFileSync } from 'fs';
4
3
  import { join } from 'path';
5
4
  import { homedir } from 'os';
6
- import { StdoutParser } from 'cyrus-claude-parser';
5
+ import { query, AbortError } from '@anthropic-ai/claude-code';
7
6
  /**
8
- * Manages spawning and communication with Claude CLI processes
7
+ * Manages Claude SDK sessions and communication
9
8
  */
10
9
  export class ClaudeRunner extends EventEmitter {
11
10
  config;
12
- process = null;
13
- parser = null;
14
- startedAt = null;
11
+ abortController = null;
12
+ sessionInfo = null;
15
13
  logStream = null;
16
- sessionId = null;
14
+ messages = [];
17
15
  constructor(config) {
18
16
  super();
19
17
  this.config = config;
20
18
  // Forward config callbacks to events
21
- if (config.onEvent)
22
- this.on('message', config.onEvent);
19
+ if (config.onMessage)
20
+ this.on('message', config.onMessage);
23
21
  if (config.onError)
24
22
  this.on('error', config.onError);
25
- if (config.onExit)
26
- this.on('exit', config.onExit);
23
+ if (config.onComplete)
24
+ this.on('complete', config.onComplete);
27
25
  }
28
26
  /**
29
- * Spawn a new Claude process
27
+ * Start a new Claude session
30
28
  */
31
- spawn() {
32
- if (this.process) {
33
- throw new Error('Claude process already running');
34
- }
35
- // Build command arguments
36
- const args = this.buildArgs();
37
- const command = `${this.config.claudePath} ${args.join(' ')} | jq -c .`;
38
- // Debug logging
39
- console.error('[ClaudeRunner] Spawning command:', command);
40
- console.error('[ClaudeRunner] Working directory:', this.config.workingDirectory);
41
- console.error('[ClaudeRunner] Claude path:', this.config.claudePath);
29
+ async start(prompt) {
30
+ if (this.isRunning()) {
31
+ throw new Error('Claude session already running');
32
+ }
33
+ // Generate session ID and create session info
34
+ const sessionId = `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
35
+ this.sessionInfo = {
36
+ sessionId,
37
+ startedAt: new Date(),
38
+ isRunning: true
39
+ };
40
+ console.log(`[ClaudeRunner] Starting new session: ${sessionId}`);
41
+ console.log('[ClaudeRunner] Working directory:', this.config.workingDirectory);
42
42
  // Ensure working directory exists
43
43
  if (this.config.workingDirectory) {
44
44
  try {
45
45
  mkdirSync(this.config.workingDirectory, { recursive: true });
46
- console.error('[ClaudeRunner] Created working directory');
46
+ console.log('[ClaudeRunner] Created working directory');
47
47
  }
48
48
  catch (err) {
49
49
  console.error('[ClaudeRunner] Failed to create working directory:', err);
50
50
  }
51
51
  }
52
- // Spawn the process
53
- console.log('[ClaudeRunner] Spawning Claude process...');
54
- this.process = spawn('sh', ['-c', command], {
55
- cwd: this.config.workingDirectory,
56
- stdio: ['pipe', 'pipe', 'pipe'],
57
- shell: false // We're already using sh -c
58
- });
59
- this.startedAt = new Date();
60
- console.log(`[ClaudeRunner] Process spawned with PID: ${this.process.pid}`);
61
- // Set up stdout parser
62
- this.parser = new StdoutParser();
63
- this.setupParserEvents();
64
- // Handle process events
65
- this.setupProcessEvents();
66
52
  // Set up logging
67
53
  this.setupLogging();
68
- // Pipe stdout through parser
69
- if (this.process.stdout) {
70
- console.log('[ClaudeRunner] Setting up stdout data handler');
71
- this.process.stdout.on('data', (chunk) => {
72
- const chunkStr = chunk.toString();
73
- console.log(`[ClaudeRunner] Received stdout data, length: ${chunk.length} bytes`);
74
- console.log(`[ClaudeRunner] First 200 chars of stdout: ${chunkStr.substring(0, 200)}`);
75
- // Log raw stdout to file for debugging
54
+ // Create abort controller for this session
55
+ this.abortController = new AbortController();
56
+ // Reset messages array
57
+ this.messages = [];
58
+ try {
59
+ // Start the query
60
+ console.log(`[ClaudeRunner] Starting query with prompt length: ${prompt.length} characters`);
61
+ // Process allowed directories by adding Read patterns to allowedTools
62
+ let processedAllowedTools = this.config.allowedTools ? [...this.config.allowedTools] : undefined;
63
+ if (this.config.allowedDirectories && this.config.allowedDirectories.length > 0) {
64
+ const directoryTools = this.config.allowedDirectories.map(dir => {
65
+ // Add extra / prefix for absolute paths to ensure Claude Code recognizes them properly
66
+ // See: https://docs.anthropic.com/en/docs/claude-code/settings#read-%26-edit
67
+ const prefixedPath = dir.startsWith('/') ? `/${dir}` : dir;
68
+ return `Read(${prefixedPath}/**)`;
69
+ });
70
+ processedAllowedTools = processedAllowedTools ? [...processedAllowedTools, ...directoryTools] : directoryTools;
71
+ }
72
+ // Parse MCP config if provided
73
+ let mcpServers = {};
74
+ if (this.config.mcpConfigPath) {
75
+ try {
76
+ const mcpConfigContent = readFileSync(this.config.mcpConfigPath, 'utf8');
77
+ const mcpConfig = JSON.parse(mcpConfigContent);
78
+ mcpServers = mcpConfig.mcpServers || {};
79
+ console.log(`[ClaudeRunner] Loaded MCP servers: ${Object.keys(mcpServers).join(', ')}`);
80
+ }
81
+ catch (error) {
82
+ console.error(`[ClaudeRunner] Failed to load MCP config from ${this.config.mcpConfigPath}:`, error);
83
+ }
84
+ }
85
+ const queryOptions = {
86
+ prompt,
87
+ abortController: this.abortController,
88
+ options: {
89
+ ...(this.config.workingDirectory && { cwd: this.config.workingDirectory }),
90
+ ...(this.config.systemPrompt && { systemPrompt: this.config.systemPrompt }),
91
+ ...(processedAllowedTools && { allowedTools: processedAllowedTools }),
92
+ ...(this.config.continueSession && { continue: this.config.continueSession }),
93
+ ...(Object.keys(mcpServers).length > 0 && { mcpServers })
94
+ }
95
+ };
96
+ // Process messages from the query
97
+ for await (const message of query(queryOptions)) {
98
+ if (!this.sessionInfo?.isRunning) {
99
+ console.log('[ClaudeRunner] Session was stopped, breaking from query loop');
100
+ break;
101
+ }
102
+ this.messages.push(message);
103
+ console.log(`[ClaudeRunner] Received message: ${message.type}`);
104
+ // Log the message
76
105
  if (this.logStream) {
77
- const stdoutEvent = {
78
- type: 'stdout-raw',
79
- data: chunkStr,
106
+ const logEntry = {
107
+ type: 'sdk-message',
108
+ message,
80
109
  timestamp: new Date().toISOString()
81
110
  };
82
- this.logStream.write(JSON.stringify(stdoutEvent) + '\n');
111
+ this.logStream.write(JSON.stringify(logEntry) + '\n');
83
112
  }
84
- this.parser?.processData(chunk);
85
- });
86
- }
87
- else {
88
- console.error('[ClaudeRunner] Warning: process.stdout is null');
89
- }
90
- // Check stdin availability
91
- if (this.process.stdin) {
92
- console.log('[ClaudeRunner] stdin is available');
113
+ // Emit appropriate events based on message type
114
+ this.emit('message', message);
115
+ this.processMessage(message);
116
+ }
117
+ // Session completed successfully
118
+ console.log(`[ClaudeRunner] Session completed with ${this.messages.length} messages`);
119
+ this.sessionInfo.isRunning = false;
120
+ this.emit('complete', this.messages);
93
121
  }
94
- else {
95
- console.error('[ClaudeRunner] Warning: process.stdin is null');
122
+ catch (error) {
123
+ console.error('[ClaudeRunner] Session error:', error);
124
+ if (this.sessionInfo) {
125
+ this.sessionInfo.isRunning = false;
126
+ }
127
+ if (error instanceof AbortError) {
128
+ console.log('[ClaudeRunner] Session was aborted');
129
+ }
130
+ else if (error instanceof Error && error.message.includes('Claude Code process exited with code 143')) {
131
+ // Exit code 143 is SIGTERM (128 + 15), which indicates graceful termination
132
+ // This is expected when the session is stopped during unassignment
133
+ console.log('[ClaudeRunner] Session was terminated gracefully (SIGTERM)');
134
+ }
135
+ else {
136
+ this.emit('error', error instanceof Error ? error : new Error(String(error)));
137
+ }
96
138
  }
97
- return {
98
- process: this.process,
99
- pid: this.process.pid,
100
- startedAt: this.startedAt
101
- };
102
- }
103
- /**
104
- * Send input to Claude
105
- */
106
- async sendInput(input) {
107
- console.log(`[ClaudeRunner] sendInput called with input length: ${input.length} characters`);
108
- if (!this.process || !this.process.stdin) {
109
- console.error('[ClaudeRunner] No active Claude process or stdin');
110
- throw new Error('No active Claude process');
139
+ finally {
140
+ // Clean up
141
+ this.abortController = null;
142
+ // Close log stream
143
+ if (this.logStream) {
144
+ this.logStream.end();
145
+ this.logStream = null;
146
+ }
111
147
  }
112
- return new Promise((resolve, reject) => {
113
- // Just send the input directly, no heredoc needed
114
- const inputWithNewline = input.endsWith('\n') ? input : input + '\n';
115
- console.log(`[ClaudeRunner] Writing to stdin, input: "${inputWithNewline.trim()}"`);
116
- this.process.stdin.write(inputWithNewline, (err) => {
117
- if (err) {
118
- console.error('[ClaudeRunner] Error writing to stdin:', err);
119
- reject(err);
120
- }
121
- else {
122
- console.log('[ClaudeRunner] Successfully wrote to stdin');
123
- // Close stdin after writing for --continue mode
124
- if (this.config.continueSession) {
125
- this.process.stdin.end();
126
- console.log('[ClaudeRunner] Closed stdin for continue mode');
127
- }
128
- resolve();
129
- }
130
- });
131
- });
148
+ return this.sessionInfo;
132
149
  }
133
150
  /**
134
- * Send initial prompt and close stdin
151
+ * Stop the current Claude session
135
152
  */
136
- async sendInitialPrompt(prompt) {
137
- console.log(`[ClaudeRunner] sendInitialPrompt called with prompt length: ${prompt.length} characters`);
138
- try {
139
- await this.sendInput(prompt);
140
- console.log('[ClaudeRunner] sendInput completed, closing stdin');
141
- this.process?.stdin?.end();
142
- console.log('[ClaudeRunner] stdin closed successfully');
143
- }
144
- catch (error) {
145
- console.error('[ClaudeRunner] Error in sendInitialPrompt:', error);
146
- throw error;
153
+ stop() {
154
+ if (this.abortController) {
155
+ console.log('[ClaudeRunner] Stopping Claude session');
156
+ this.abortController.abort();
157
+ this.abortController = null;
147
158
  }
148
- }
149
- /**
150
- * Kill the Claude process
151
- */
152
- kill() {
153
- if (this.process) {
154
- this.process.kill('SIGTERM');
155
- this.process = null;
156
- this.parser = null;
159
+ if (this.sessionInfo) {
160
+ this.sessionInfo.isRunning = false;
157
161
  }
158
162
  }
159
163
  /**
160
- * Check if process is running
164
+ * Check if session is running
161
165
  */
162
166
  isRunning() {
163
- return this.process !== null && !this.process.killed;
167
+ return this.sessionInfo?.isRunning ?? false;
164
168
  }
165
169
  /**
166
- * Build command line arguments
170
+ * Get current session info
167
171
  */
168
- buildArgs() {
169
- const args = [
170
- '--print',
171
- '--verbose',
172
- '--output-format',
173
- 'stream-json'
174
- ];
175
- // Add continue flag if specified
176
- if (this.config.continueSession) {
177
- args.push('--continue');
178
- }
179
- // Add allowed tools
180
- if (this.config.allowedTools && this.config.allowedTools.length > 0) {
181
- args.push('--allowedTools');
182
- args.push(...this.config.allowedTools);
183
- }
184
- // Add allowed directories
185
- if (this.config.allowedDirectories && this.config.allowedDirectories.length > 0) {
186
- args.push('--add-dir');
187
- args.push(...this.config.allowedDirectories);
188
- }
189
- return args;
172
+ getSessionInfo() {
173
+ return this.sessionInfo;
190
174
  }
191
175
  /**
192
- * Set up parser event handlers
176
+ * Get all messages from current session
193
177
  */
194
- setupParserEvents() {
195
- if (!this.parser)
196
- return;
197
- // Forward all events
198
- this.parser.on('message', (event) => {
199
- // Capture session ID from the first event if available
200
- if (!this.sessionId && 'sessionId' in event && event.sessionId) {
201
- this.sessionId = event.sessionId;
202
- console.log(`[ClaudeRunner] Captured session ID: ${this.sessionId}`);
203
- this.updateLogFilePath();
204
- }
205
- // Log the event
206
- if (this.logStream) {
207
- this.logStream.write(JSON.stringify(event) + '\n');
208
- }
209
- this.emit('message', event);
210
- });
211
- this.parser.on('assistant', (event) => {
212
- this.emit('assistant', event);
213
- });
214
- this.parser.on('tool-use', (toolName, input) => {
215
- this.emit('tool-use', toolName, input);
216
- });
217
- this.parser.on('text', (text) => {
218
- this.emit('text', text);
219
- });
220
- this.parser.on('end-turn', (lastText) => {
221
- this.emit('end-turn', lastText);
222
- });
223
- this.parser.on('result', (event) => {
224
- this.emit('result', event);
225
- });
226
- this.parser.on('error', (error) => {
227
- if (error instanceof Error) {
228
- this.emit('error', error);
229
- }
230
- else {
231
- // Convert ErrorEvent/ToolErrorEvent to Error
232
- const message = 'message' in error ? error.message :
233
- 'error' in error ? error.error :
234
- 'Unknown error';
235
- this.emit('error', new Error(message));
236
- }
237
- });
238
- this.parser.on('token-limit', () => {
239
- this.emit('token-limit');
240
- });
178
+ getMessages() {
179
+ return [...this.messages];
241
180
  }
242
181
  /**
243
- * Set up process event handlers
182
+ * Process individual SDK messages and emit appropriate events
244
183
  */
245
- setupProcessEvents() {
246
- if (!this.process)
247
- return;
248
- this.process.on('error', (error) => {
249
- this.emit('error', new Error(`Claude process error: ${error.message}`));
250
- });
251
- this.process.on('exit', (code, signal) => {
252
- console.log(`[ClaudeRunner] Process exited with code: ${code}, signal: ${signal}`);
253
- // Log exit to file
254
- if (this.logStream) {
255
- const exitEvent = {
256
- type: 'process-exit',
257
- code,
258
- signal,
259
- timestamp: new Date().toISOString()
260
- };
261
- this.logStream.write(JSON.stringify(exitEvent) + '\n');
262
- }
263
- // Process any remaining data
264
- if (this.parser) {
265
- console.log('[ClaudeRunner] Processing any remaining parser data');
266
- this.parser.processEnd();
267
- }
268
- this.emit('exit', code);
269
- this.process = null;
270
- this.parser = null;
271
- // Close log stream
272
- if (this.logStream) {
273
- this.logStream.end();
274
- this.logStream = null;
275
- }
276
- });
277
- // Capture stderr
278
- if (this.process.stderr) {
279
- console.log('[ClaudeRunner] Setting up stderr handler');
280
- let stderrBuffer = '';
281
- this.process.stderr.on('data', (chunk) => {
282
- const chunkStr = chunk.toString();
283
- console.log(`[ClaudeRunner] Received stderr data: ${chunkStr}`);
284
- stderrBuffer += chunkStr;
285
- // Log to file for debugging
286
- if (this.logStream) {
287
- const errorEvent = {
288
- type: 'stderr',
289
- data: chunkStr,
290
- timestamp: new Date().toISOString()
291
- };
292
- this.logStream.write(JSON.stringify(errorEvent) + '\n');
293
- }
294
- // Emit complete lines
295
- const lines = stderrBuffer.split('\n');
296
- stderrBuffer = lines.pop() || '';
297
- for (const line of lines) {
298
- if (line.trim()) {
299
- console.error(`[ClaudeRunner] stderr line: ${line}`);
300
- this.emit('error', new Error(`Claude stderr: ${line}`));
184
+ processMessage(message) {
185
+ switch (message.type) {
186
+ case 'assistant':
187
+ if (message.message?.content && Array.isArray(message.message.content)) {
188
+ // Process content blocks
189
+ for (const block of message.message.content) {
190
+ if (block.type === 'text') {
191
+ this.emit('text', block.text);
192
+ this.emit('assistant', block.text);
193
+ }
194
+ else if (block.type === 'tool_use') {
195
+ this.emit('tool-use', block.name, block.input);
196
+ }
301
197
  }
302
198
  }
303
- });
304
- }
305
- else {
306
- console.error('[ClaudeRunner] Warning: process.stderr is null');
199
+ break;
200
+ case 'user':
201
+ // User messages don't typically need special processing
202
+ break;
203
+ case 'result':
204
+ // Result messages indicate completion
205
+ break;
206
+ case 'system':
207
+ // System messages are for initialization
208
+ break;
209
+ default:
210
+ console.log(`[ClaudeRunner] Unhandled message type: ${message.type}`);
307
211
  }
308
212
  }
309
213
  /**
@@ -321,16 +225,17 @@ export class ClaudeRunner extends EventEmitter {
321
225
  const workspaceLogsDir = join(logsDir, workspaceName);
322
226
  // Create directories
323
227
  mkdirSync(workspaceLogsDir, { recursive: true });
324
- // Create initial log file with timestamp
228
+ // Create log file with session ID and timestamp
325
229
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
326
- const logFileName = `session-${timestamp}.jsonl`;
230
+ const logFileName = `session-${this.sessionInfo?.sessionId || 'unknown'}-${timestamp}.jsonl`;
327
231
  const logFilePath = join(workspaceLogsDir, logFileName);
328
232
  console.log(`[ClaudeRunner] Creating log file at: ${logFilePath}`);
329
233
  this.logStream = createWriteStream(logFilePath, { flags: 'a' });
330
234
  // Write initial metadata
331
235
  const metadata = {
332
236
  type: 'session-metadata',
333
- startedAt: this.startedAt?.toISOString(),
237
+ sessionId: this.sessionInfo?.sessionId,
238
+ startedAt: this.sessionInfo?.startedAt?.toISOString(),
334
239
  workingDirectory: this.config.workingDirectory,
335
240
  workspaceName: workspaceName,
336
241
  timestamp: new Date().toISOString()
@@ -341,41 +246,5 @@ export class ClaudeRunner extends EventEmitter {
341
246
  console.error('[ClaudeRunner] Failed to set up logging:', error);
342
247
  }
343
248
  }
344
- /**
345
- * Update log file path when session ID is captured
346
- */
347
- updateLogFilePath() {
348
- if (!this.sessionId || !this.logStream)
349
- return;
350
- try {
351
- // Close current stream
352
- this.logStream.end();
353
- // Create new file with session ID
354
- const cyrusDir = join(homedir(), '.cyrus');
355
- const logsDir = join(cyrusDir, 'logs');
356
- const workspaceName = this.config.workspaceName ||
357
- (this.config.workingDirectory ? this.config.workingDirectory.split('/').pop() : 'default') ||
358
- 'default';
359
- const workspaceLogsDir = join(logsDir, workspaceName);
360
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
361
- const logFileName = `session-${this.sessionId}-${timestamp}.jsonl`;
362
- const logFilePath = join(workspaceLogsDir, logFileName);
363
- console.log(`[ClaudeRunner] Updating log file to: ${logFilePath}`);
364
- this.logStream = createWriteStream(logFilePath, { flags: 'a' });
365
- // Write session metadata
366
- const metadata = {
367
- type: 'session-metadata',
368
- sessionId: this.sessionId,
369
- startedAt: this.startedAt?.toISOString(),
370
- workingDirectory: this.config.workingDirectory,
371
- workspaceName: workspaceName,
372
- timestamp: new Date().toISOString()
373
- };
374
- this.logStream.write(JSON.stringify(metadata) + '\n');
375
- }
376
- catch (error) {
377
- console.error('[ClaudeRunner] Failed to update log file path:', error);
378
- }
379
- }
380
249
  }
381
250
  //# sourceMappingURL=ClaudeRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeRunner.js","sourceRoot":"","sources":["../src/ClaudeRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClaudeRunner.js","sourceRoot":"","sources":["../src/ClaudeRunner.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * List of all available tools in Claude Code
6
6
  */
7
- export declare const availableTools: readonly ["Read", "Write", "Edit", "MultiEdit", "Glob", "Grep", "LS", "Bash", "Task", "WebFetch", "TodoRead", "TodoWrite", "NotebookRead", "NotebookEdit", "Batch"];
7
+ export declare const availableTools: readonly ["Read(**)", "Edit(**)", "Bash", "Task", "WebFetch", "WebSearch", "TodoRead", "TodoWrite", "NotebookRead", "NotebookEdit", "Batch"];
8
8
  export type ToolName = typeof availableTools[number];
9
9
  /**
10
10
  * Default read-only tools that are safe to enable
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,qKAmBjB,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,EAGnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAGhC,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,8IAkBjB,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,EAGnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAGhC,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAKvC"}
package/dist/config.js CHANGED
@@ -6,12 +6,11 @@
6
6
  */
7
7
  export const availableTools = [
8
8
  // File system tools
9
- 'Read', 'Write', 'Edit', 'MultiEdit',
10
- 'Glob', 'Grep', 'LS',
9
+ 'Read(**)', 'Edit(**)',
11
10
  // Execution tools
12
11
  'Bash', 'Task',
13
12
  // Web tools
14
- 'WebFetch',
13
+ 'WebFetch', 'WebSearch',
15
14
  // Task management
16
15
  'TodoRead', 'TodoWrite',
17
16
  // Notebook tools
@@ -23,14 +22,14 @@ export const availableTools = [
23
22
  * Default read-only tools that are safe to enable
24
23
  */
25
24
  export const readOnlyTools = [
26
- 'Read', 'Glob', 'Grep', 'LS', 'WebFetch',
25
+ 'Read(**)', 'WebFetch', 'WebSearch',
27
26
  'TodoRead', 'NotebookRead', 'Task', 'Batch'
28
27
  ];
29
28
  /**
30
29
  * Tools that can modify the file system
31
30
  */
32
31
  export const writeTools = [
33
- 'Write', 'Edit', 'MultiEdit', 'Bash',
32
+ 'Edit(**)', 'Bash',
34
33
  'TodoWrite', 'NotebookEdit'
35
34
  ];
36
35
  /**
@@ -49,6 +48,9 @@ export function getAllTools() {
49
48
  * Get all tools except Bash (safer default for repository configuration)
50
49
  */
51
50
  export function getSafeTools() {
52
- return availableTools.filter(tool => tool !== 'Bash');
51
+ return [
52
+ 'Read(**)', 'Edit(**)', 'Task', 'WebFetch', 'WebSearch',
53
+ 'TodoRead', 'TodoWrite', 'NotebookRead', 'NotebookEdit', 'Batch'
54
+ ];
53
55
  }
54
56
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oBAAoB;IACpB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW;IACpC,MAAM,EAAE,MAAM,EAAE,IAAI;IAEpB,kBAAkB;IAClB,MAAM,EAAE,MAAM;IAEd,YAAY;IACZ,UAAU;IAEV,kBAAkB;IAClB,UAAU,EAAE,WAAW;IAEvB,iBAAiB;IACjB,cAAc,EAAE,cAAc;IAE9B,gBAAgB;IAChB,OAAO;CACC,CAAA;AAIV;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IACxC,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO;CAC5C,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IACpC,WAAW,EAAE,cAAc;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,aAAa,CAAC,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,cAAc,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oBAAoB;IACpB,UAAU,EAAE,UAAU;IAEtB,kBAAkB;IAClB,MAAM,EAAE,MAAM;IAEd,YAAY;IACZ,UAAU,EAAE,WAAW;IAEvB,kBAAkB;IAClB,UAAU,EAAE,WAAW;IAEvB,iBAAiB;IACjB,cAAc,EAAE,cAAc;IAE9B,gBAAgB;IAChB,OAAO;CACC,CAAA;AAIV;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,UAAU,EAAE,UAAU,EAAE,WAAW;IACnC,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO;CAC5C,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,cAAc;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,aAAa,CAAC,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,cAAc,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW;QACvD,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO;KACjE,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { ClaudeRunner } from './ClaudeRunner.js';
2
2
  export { availableTools, readOnlyTools, writeTools, getReadOnlyTools, getAllTools, getSafeTools, type ToolName } from './config.js';
3
- export type { ClaudeRunnerConfig, ClaudeProcessInfo, ClaudeRunnerEvents } from './types.js';
3
+ export type { ClaudeRunnerConfig, ClaudeSessionInfo, ClaudeRunnerEvents, SDKMessage } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,YAAY,CAAA"}
package/dist/types.d.ts CHANGED
@@ -1,30 +1,29 @@
1
- import type { ChildProcess } from 'child_process';
2
- import type { ClaudeEvent } from 'cyrus-claude-parser';
1
+ import type { SDKMessage } from '@anthropic-ai/claude-code';
3
2
  export interface ClaudeRunnerConfig {
4
- claudePath: string;
5
3
  workingDirectory?: string;
6
4
  allowedTools?: string[];
7
5
  allowedDirectories?: string[];
8
6
  continueSession?: boolean;
9
7
  workspaceName?: string;
10
- onEvent?: (event: ClaudeEvent) => void;
8
+ systemPrompt?: string;
9
+ mcpConfigPath?: string;
10
+ onMessage?: (message: SDKMessage) => void;
11
11
  onError?: (error: Error) => void;
12
- onExit?: (code: number | null) => void;
12
+ onComplete?: (messages: SDKMessage[]) => void;
13
13
  }
14
- export interface ClaudeProcessInfo {
15
- process: ChildProcess;
16
- pid: number | undefined;
14
+ export interface ClaudeSessionInfo {
15
+ sessionId: string;
17
16
  startedAt: Date;
17
+ isRunning: boolean;
18
18
  }
19
19
  export interface ClaudeRunnerEvents {
20
- 'message': (event: ClaudeEvent) => void;
21
- 'assistant': (event: ClaudeEvent) => void;
20
+ 'message': (message: SDKMessage) => void;
21
+ 'assistant': (content: string) => void;
22
22
  'tool-use': (toolName: string, input: any) => void;
23
23
  'text': (text: string) => void;
24
24
  'end-turn': (lastText: string) => void;
25
- 'result': (event: ClaudeEvent) => void;
26
25
  'error': (error: Error) => void;
27
- 'token-limit': () => void;
28
- 'exit': (code: number | null) => void;
26
+ 'complete': (messages: SDKMessage[]) => void;
29
27
  }
28
+ export type { SDKMessage } from '@anthropic-ai/claude-code';
30
29
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAA;IACrB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACzC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAClD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACtC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAClD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/B,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAA;CAC7C;AAGD,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyrus-claude-runner",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Claude process spawning and management for Cyrus",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,7 @@
9
9
  "dist"
10
10
  ],
11
11
  "dependencies": {
12
- "cyrus-claude-parser": "0.0.1"
12
+ "@anthropic-ai/claude-code": "^1.0.24"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/node": "^20.0.0",