cyrus-claude-runner 0.0.1 → 0.0.2

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;IAoIvD;;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,208 @@
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 {
131
+ this.emit('error', error instanceof Error ? error : new Error(String(error)));
132
+ }
96
133
  }
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');
134
+ finally {
135
+ // Clean up
136
+ this.abortController = null;
137
+ // Close log stream
138
+ if (this.logStream) {
139
+ this.logStream.end();
140
+ this.logStream = null;
141
+ }
111
142
  }
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
- });
143
+ return this.sessionInfo;
132
144
  }
133
145
  /**
134
- * Send initial prompt and close stdin
146
+ * Stop the current Claude session
135
147
  */
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');
148
+ stop() {
149
+ if (this.abortController) {
150
+ console.log('[ClaudeRunner] Stopping Claude session');
151
+ this.abortController.abort();
152
+ this.abortController = null;
143
153
  }
144
- catch (error) {
145
- console.error('[ClaudeRunner] Error in sendInitialPrompt:', error);
146
- throw error;
147
- }
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;
154
+ if (this.sessionInfo) {
155
+ this.sessionInfo.isRunning = false;
157
156
  }
158
157
  }
159
158
  /**
160
- * Check if process is running
159
+ * Check if session is running
161
160
  */
162
161
  isRunning() {
163
- return this.process !== null && !this.process.killed;
162
+ return this.sessionInfo?.isRunning ?? false;
164
163
  }
165
164
  /**
166
- * Build command line arguments
165
+ * Get current session info
167
166
  */
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;
167
+ getSessionInfo() {
168
+ return this.sessionInfo;
190
169
  }
191
170
  /**
192
- * Set up parser event handlers
171
+ * Get all messages from current session
193
172
  */
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
- });
173
+ getMessages() {
174
+ return [...this.messages];
241
175
  }
242
176
  /**
243
- * Set up process event handlers
177
+ * Process individual SDK messages and emit appropriate events
244
178
  */
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}`));
179
+ processMessage(message) {
180
+ switch (message.type) {
181
+ case 'assistant':
182
+ if (message.message?.content && Array.isArray(message.message.content)) {
183
+ // Process content blocks
184
+ for (const block of message.message.content) {
185
+ if (block.type === 'text') {
186
+ this.emit('text', block.text);
187
+ this.emit('assistant', block.text);
188
+ }
189
+ else if (block.type === 'tool_use') {
190
+ this.emit('tool-use', block.name, block.input);
191
+ }
301
192
  }
302
193
  }
303
- });
304
- }
305
- else {
306
- console.error('[ClaudeRunner] Warning: process.stderr is null');
194
+ break;
195
+ case 'user':
196
+ // User messages don't typically need special processing
197
+ break;
198
+ case 'result':
199
+ // Result messages indicate completion
200
+ break;
201
+ case 'system':
202
+ // System messages are for initialization
203
+ break;
204
+ default:
205
+ console.log(`[ClaudeRunner] Unhandled message type: ${message.type}`);
307
206
  }
308
207
  }
309
208
  /**
@@ -321,16 +220,17 @@ export class ClaudeRunner extends EventEmitter {
321
220
  const workspaceLogsDir = join(logsDir, workspaceName);
322
221
  // Create directories
323
222
  mkdirSync(workspaceLogsDir, { recursive: true });
324
- // Create initial log file with timestamp
223
+ // Create log file with session ID and timestamp
325
224
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
326
- const logFileName = `session-${timestamp}.jsonl`;
225
+ const logFileName = `session-${this.sessionInfo?.sessionId || 'unknown'}-${timestamp}.jsonl`;
327
226
  const logFilePath = join(workspaceLogsDir, logFileName);
328
227
  console.log(`[ClaudeRunner] Creating log file at: ${logFilePath}`);
329
228
  this.logStream = createWriteStream(logFilePath, { flags: 'a' });
330
229
  // Write initial metadata
331
230
  const metadata = {
332
231
  type: 'session-metadata',
333
- startedAt: this.startedAt?.toISOString(),
232
+ sessionId: this.sessionInfo?.sessionId,
233
+ startedAt: this.sessionInfo?.startedAt?.toISOString(),
334
234
  workingDirectory: this.config.workingDirectory,
335
235
  workspaceName: workspaceName,
336
236
  timestamp: new Date().toISOString()
@@ -341,41 +241,5 @@ export class ClaudeRunner extends EventEmitter {
341
241
  console.error('[ClaudeRunner] Failed to set up logging:', error);
342
242
  }
343
243
  }
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
244
  }
381
245
  //# 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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAoB,YAAY,EAAE,MAAM,IAAI,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAmB,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAQ9E;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IACpC,MAAM,CAAoB;IAC1B,eAAe,GAA2B,IAAI,CAAA;IAC9C,WAAW,GAA6B,IAAI,CAAA;IAC5C,SAAS,GAAuB,IAAI,CAAA;IACpC,QAAQ,GAAiB,EAAE,CAAA;IAEnC,YAAY,MAA0B;QACpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,qCAAqC;QACrC,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACpD,IAAI,MAAM,CAAC,UAAU;YAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAED,8CAA8C;QAC9C,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QACpF,IAAI,CAAC,WAAW,GAAG;YACjB,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI;SAChB,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAE9E,kCAAkC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC5D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,2CAA2C;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAE5C,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAElB,IAAI,CAAC;YACH,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,qDAAqD,MAAM,CAAC,MAAM,aAAa,CAAC,CAAA;YAE5F,sEAAsE;YACtE,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAChG,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC9D,uFAAuF;oBACvF,6EAA6E;oBAC7E,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;oBAC1D,OAAO,QAAQ,YAAY,MAAM,CAAA;gBACnC,CAAC,CAAC,CAAA;gBACF,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;YAChH,CAAC;YAED,+BAA+B;YAC/B,IAAI,UAAU,GAAG,EAAE,CAAA;YACnB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;oBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;oBAC9C,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAA;oBACvC,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACzF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,iDAAiD,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,KAAK,CAAC,CAAA;gBACrG,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAgC;gBAChD,MAAM;gBACN,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,OAAO,EAAE;oBACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC1E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC3E,GAAG,CAAC,qBAAqB,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;oBACrE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC7E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC1D;aACF,CAAA;YAED,kCAAkC;YAClC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;oBAC3E,MAAK;gBACP,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3B,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBAE/D,kBAAkB;gBAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,QAAQ,GAAG;wBACf,IAAI,EAAE,aAAa;wBACnB,OAAO;wBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,CAAA;oBACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;gBACvD,CAAC;gBAED,gDAAgD;gBAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC;YAED,iCAAiC;YACjC,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;YACrF,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;YAErD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAA;YACpC,CAAC;YAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,WAAW;YACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;YAE3B,mBAAmB;YACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;YACrD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAA;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,KAAK,CAAA;IAC7C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAmB;QACxC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW;gBACd,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvE,yBAAyB;oBACzB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;4BAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;wBACpC,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;wBAChD,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAK;YAEP,KAAK,MAAM;gBACT,wDAAwD;gBACxD,MAAK;YAEP,KAAK,QAAQ;gBACX,sCAAsC;gBACtC,MAAK;YAEP,KAAK,QAAQ;gBACX,yCAAyC;gBACzC,MAAK;YAEP;gBACE,OAAO,CAAC,GAAG,CAAC,0CAA2C,OAAe,CAAC,IAAI,EAAE,CAAC,CAAA;QAClF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC;YACH,mEAAmE;YACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAEtC,mEAAmE;YACnE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;gBAC7C,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1F,SAAS,CAAA;YACX,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YAErD,qBAAqB;YACrB,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAEhD,gDAAgD;YAChD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YAChE,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,SAAS,IAAI,SAAS,QAAQ,CAAA;YAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAEvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAE/D,yBAAyB;YACzB,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS;gBACtC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE;gBACrD,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBAC9C,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;QAEvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;CACF"}
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.2",
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",