@ketd/gemini-cli-sdk 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +311 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +223 -2
- package/dist/index.d.ts +223 -2
- package/dist/index.js +310 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { EventEmitter as EventEmitter$1 } from 'node:events';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Type definitions for Gemini CLI SDK
|
|
@@ -123,6 +124,8 @@ declare enum JsonStreamEventType {
|
|
|
123
124
|
TOOL_USE = "tool_use",
|
|
124
125
|
/** Tool execution result */
|
|
125
126
|
TOOL_RESULT = "tool_result",
|
|
127
|
+
/** Thought/reasoning process */
|
|
128
|
+
THOUGHT = "thought",
|
|
126
129
|
/** Error event */
|
|
127
130
|
ERROR = "error",
|
|
128
131
|
/** Final result */
|
|
@@ -175,6 +178,14 @@ interface ToolResultEvent extends BaseJsonStreamEvent {
|
|
|
175
178
|
message: string;
|
|
176
179
|
};
|
|
177
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Thought/reasoning event
|
|
183
|
+
*/
|
|
184
|
+
interface ThoughtEvent extends BaseJsonStreamEvent {
|
|
185
|
+
type: JsonStreamEventType.THOUGHT;
|
|
186
|
+
subject: string;
|
|
187
|
+
description?: string;
|
|
188
|
+
}
|
|
178
189
|
/**
|
|
179
190
|
* Error event
|
|
180
191
|
*/
|
|
@@ -208,7 +219,7 @@ interface ResultEvent extends BaseJsonStreamEvent {
|
|
|
208
219
|
/**
|
|
209
220
|
* Union type of all JSON stream events
|
|
210
221
|
*/
|
|
211
|
-
type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolResultEvent | ErrorEvent | ResultEvent;
|
|
222
|
+
type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent;
|
|
212
223
|
/**
|
|
213
224
|
* Gemini CLI exit codes
|
|
214
225
|
*/
|
|
@@ -279,6 +290,90 @@ interface QueryResult {
|
|
|
279
290
|
message: string;
|
|
280
291
|
};
|
|
281
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Input message types for Stream Client (SDK → CLI via stdin)
|
|
295
|
+
*/
|
|
296
|
+
declare enum JsonInputMessageType {
|
|
297
|
+
/** User message */
|
|
298
|
+
USER = "user",
|
|
299
|
+
/** Control command */
|
|
300
|
+
CONTROL = "control"
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* User message sent to CLI
|
|
304
|
+
*/
|
|
305
|
+
interface UserInputMessage {
|
|
306
|
+
type: JsonInputMessageType.USER;
|
|
307
|
+
content: string;
|
|
308
|
+
session_id?: string;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Control message sent to CLI
|
|
312
|
+
*/
|
|
313
|
+
interface ControlInputMessage {
|
|
314
|
+
type: JsonInputMessageType.CONTROL;
|
|
315
|
+
control: {
|
|
316
|
+
subtype: 'interrupt' | 'cancel' | 'shutdown';
|
|
317
|
+
};
|
|
318
|
+
session_id?: string;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Union type for input messages
|
|
322
|
+
*/
|
|
323
|
+
type JsonInputMessage = UserInputMessage | ControlInputMessage;
|
|
324
|
+
/**
|
|
325
|
+
* Options for GeminiStreamClient
|
|
326
|
+
*/
|
|
327
|
+
interface GeminiStreamOptions {
|
|
328
|
+
/**
|
|
329
|
+
* Path to Gemini CLI executable
|
|
330
|
+
* @example 'node_modules/@google/gemini-cli/bundle/gemini.js'
|
|
331
|
+
*/
|
|
332
|
+
pathToGeminiCLI: string;
|
|
333
|
+
/**
|
|
334
|
+
* Session ID for this client instance
|
|
335
|
+
* Each client manages one session
|
|
336
|
+
*/
|
|
337
|
+
sessionId: string;
|
|
338
|
+
/**
|
|
339
|
+
* Workspace ID (optional, for tracking)
|
|
340
|
+
*/
|
|
341
|
+
workspaceId?: string;
|
|
342
|
+
/**
|
|
343
|
+
* Google AI API Key
|
|
344
|
+
* Can also be set via GEMINI_API_KEY environment variable
|
|
345
|
+
*/
|
|
346
|
+
apiKey?: string;
|
|
347
|
+
/**
|
|
348
|
+
* Model name
|
|
349
|
+
* @default 'gemini-2.0-flash-exp'
|
|
350
|
+
*/
|
|
351
|
+
model?: string;
|
|
352
|
+
/**
|
|
353
|
+
* Working directory for CLI execution
|
|
354
|
+
* @default process.cwd()
|
|
355
|
+
*/
|
|
356
|
+
cwd?: string;
|
|
357
|
+
/**
|
|
358
|
+
* Approval mode for tool execution
|
|
359
|
+
* @default 'default'
|
|
360
|
+
*/
|
|
361
|
+
approvalMode?: 'default' | 'auto_edit' | 'yolo';
|
|
362
|
+
/**
|
|
363
|
+
* Custom environment variables
|
|
364
|
+
*/
|
|
365
|
+
env?: Record<string, string>;
|
|
366
|
+
/**
|
|
367
|
+
* Enable debug mode
|
|
368
|
+
* @default false
|
|
369
|
+
*/
|
|
370
|
+
debug?: boolean;
|
|
371
|
+
/**
|
|
372
|
+
* Timeout for process initialization (ms)
|
|
373
|
+
* @default 30000
|
|
374
|
+
*/
|
|
375
|
+
initTimeout?: number;
|
|
376
|
+
}
|
|
282
377
|
|
|
283
378
|
/**
|
|
284
379
|
* Core query function for Gemini CLI SDK
|
|
@@ -382,6 +477,132 @@ declare class GeminiClient extends EventEmitter {
|
|
|
382
477
|
getOptions(): Readonly<GeminiOptions>;
|
|
383
478
|
}
|
|
384
479
|
|
|
480
|
+
/**
|
|
481
|
+
* GeminiStreamClient - Persistent stream-based client for Gemini CLI
|
|
482
|
+
*
|
|
483
|
+
* Architecture:
|
|
484
|
+
* - 1 Client = 1 Node.js Process = 1 Session
|
|
485
|
+
* - Communication via stdin/stdout JSONL
|
|
486
|
+
* - Process stays alive for multiple message exchanges
|
|
487
|
+
* - Similar to Claude Agent SDK's SubprocessCLITransport
|
|
488
|
+
*/
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Events emitted by GeminiStreamClient
|
|
492
|
+
*/
|
|
493
|
+
interface StreamClientEvents {
|
|
494
|
+
/** JSON stream event from CLI */
|
|
495
|
+
event: (event: JsonStreamEvent) => void;
|
|
496
|
+
/** Process started */
|
|
497
|
+
started: () => void;
|
|
498
|
+
/** Process ready (INIT event received) */
|
|
499
|
+
ready: (initEvent: InitEvent) => void;
|
|
500
|
+
/** Process stopped */
|
|
501
|
+
stopped: (code: number | null) => void;
|
|
502
|
+
/** Error occurred */
|
|
503
|
+
error: (error: Error) => void;
|
|
504
|
+
}
|
|
505
|
+
declare interface GeminiStreamClient {
|
|
506
|
+
on<K extends keyof StreamClientEvents>(event: K, listener: StreamClientEvents[K]): this;
|
|
507
|
+
emit<K extends keyof StreamClientEvents>(event: K, ...args: Parameters<StreamClientEvents[K]>): boolean;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* GeminiStreamClient
|
|
511
|
+
*
|
|
512
|
+
* Manages a persistent Gemini CLI process for stream-based communication.
|
|
513
|
+
*
|
|
514
|
+
* @example
|
|
515
|
+
* ```typescript
|
|
516
|
+
* const client = new GeminiStreamClient({
|
|
517
|
+
* pathToGeminiCLI: './gemini.js',
|
|
518
|
+
* sessionId: 'session-123',
|
|
519
|
+
* apiKey: process.env.GEMINI_API_KEY,
|
|
520
|
+
* });
|
|
521
|
+
*
|
|
522
|
+
* client.on('event', (event) => {
|
|
523
|
+
* console.log('Event:', event);
|
|
524
|
+
* });
|
|
525
|
+
*
|
|
526
|
+
* await client.start();
|
|
527
|
+
* await client.sendMessage('Hello, Gemini!');
|
|
528
|
+
* await client.stop();
|
|
529
|
+
* ```
|
|
530
|
+
*/
|
|
531
|
+
declare class GeminiStreamClient extends EventEmitter$1 {
|
|
532
|
+
private options;
|
|
533
|
+
private process;
|
|
534
|
+
private stdinStream;
|
|
535
|
+
private readlineInterface;
|
|
536
|
+
private status;
|
|
537
|
+
private initEvent;
|
|
538
|
+
private initTimeout;
|
|
539
|
+
constructor(options: GeminiStreamOptions);
|
|
540
|
+
/**
|
|
541
|
+
* Start the Gemini CLI process
|
|
542
|
+
*/
|
|
543
|
+
start(): Promise<void>;
|
|
544
|
+
/**
|
|
545
|
+
* Send a user message to the CLI
|
|
546
|
+
*/
|
|
547
|
+
sendMessage(content: string): Promise<void>;
|
|
548
|
+
/**
|
|
549
|
+
* Send an interrupt control command
|
|
550
|
+
*/
|
|
551
|
+
interrupt(): Promise<void>;
|
|
552
|
+
/**
|
|
553
|
+
* Stop the CLI process
|
|
554
|
+
*/
|
|
555
|
+
stop(timeout?: number): Promise<void>;
|
|
556
|
+
/**
|
|
557
|
+
* Check if client is ready to send messages
|
|
558
|
+
*/
|
|
559
|
+
isReady(): boolean;
|
|
560
|
+
/**
|
|
561
|
+
* Get current status
|
|
562
|
+
*/
|
|
563
|
+
getStatus(): ProcessStatus;
|
|
564
|
+
/**
|
|
565
|
+
* Get init event (contains session_id, model, etc.)
|
|
566
|
+
*/
|
|
567
|
+
getInitEvent(): InitEvent | null;
|
|
568
|
+
/**
|
|
569
|
+
* Get process PID
|
|
570
|
+
*/
|
|
571
|
+
getPid(): number | undefined;
|
|
572
|
+
/**
|
|
573
|
+
* Build CLI command arguments
|
|
574
|
+
*/
|
|
575
|
+
private buildCommand;
|
|
576
|
+
/**
|
|
577
|
+
* Build environment variables
|
|
578
|
+
*/
|
|
579
|
+
private buildEnv;
|
|
580
|
+
/**
|
|
581
|
+
* Write a JSON message to stdin
|
|
582
|
+
*/
|
|
583
|
+
private writeMessage;
|
|
584
|
+
/**
|
|
585
|
+
* Start reading JSONL events from stdout
|
|
586
|
+
*/
|
|
587
|
+
private startReadLoop;
|
|
588
|
+
/**
|
|
589
|
+
* Handle a JSON stream event
|
|
590
|
+
*/
|
|
591
|
+
private handleEvent;
|
|
592
|
+
/**
|
|
593
|
+
* Wait for INIT event
|
|
594
|
+
*/
|
|
595
|
+
private waitForInit;
|
|
596
|
+
/**
|
|
597
|
+
* Handle process exit
|
|
598
|
+
*/
|
|
599
|
+
private handleProcessExit;
|
|
600
|
+
/**
|
|
601
|
+
* Handle process error
|
|
602
|
+
*/
|
|
603
|
+
private handleProcessError;
|
|
604
|
+
}
|
|
605
|
+
|
|
385
606
|
/**
|
|
386
607
|
* Utility functions for Gemini CLI SDK
|
|
387
608
|
*/
|
|
@@ -435,4 +656,4 @@ declare function formatDuration(ms: number): string;
|
|
|
435
656
|
*/
|
|
436
657
|
declare function formatTokens(tokens: number): string;
|
|
437
658
|
|
|
438
|
-
export { type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, type InitEvent, type JsonStreamEvent, JsonStreamEventType, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type StreamStats, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, validateApiKey, validateModel };
|
|
659
|
+
export { type ControlInputMessage, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type InitEvent, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type UserInputMessage, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, validateApiKey, validateModel };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { EventEmitter as EventEmitter$1 } from 'node:events';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Type definitions for Gemini CLI SDK
|
|
@@ -123,6 +124,8 @@ declare enum JsonStreamEventType {
|
|
|
123
124
|
TOOL_USE = "tool_use",
|
|
124
125
|
/** Tool execution result */
|
|
125
126
|
TOOL_RESULT = "tool_result",
|
|
127
|
+
/** Thought/reasoning process */
|
|
128
|
+
THOUGHT = "thought",
|
|
126
129
|
/** Error event */
|
|
127
130
|
ERROR = "error",
|
|
128
131
|
/** Final result */
|
|
@@ -175,6 +178,14 @@ interface ToolResultEvent extends BaseJsonStreamEvent {
|
|
|
175
178
|
message: string;
|
|
176
179
|
};
|
|
177
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Thought/reasoning event
|
|
183
|
+
*/
|
|
184
|
+
interface ThoughtEvent extends BaseJsonStreamEvent {
|
|
185
|
+
type: JsonStreamEventType.THOUGHT;
|
|
186
|
+
subject: string;
|
|
187
|
+
description?: string;
|
|
188
|
+
}
|
|
178
189
|
/**
|
|
179
190
|
* Error event
|
|
180
191
|
*/
|
|
@@ -208,7 +219,7 @@ interface ResultEvent extends BaseJsonStreamEvent {
|
|
|
208
219
|
/**
|
|
209
220
|
* Union type of all JSON stream events
|
|
210
221
|
*/
|
|
211
|
-
type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolResultEvent | ErrorEvent | ResultEvent;
|
|
222
|
+
type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent;
|
|
212
223
|
/**
|
|
213
224
|
* Gemini CLI exit codes
|
|
214
225
|
*/
|
|
@@ -279,6 +290,90 @@ interface QueryResult {
|
|
|
279
290
|
message: string;
|
|
280
291
|
};
|
|
281
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Input message types for Stream Client (SDK → CLI via stdin)
|
|
295
|
+
*/
|
|
296
|
+
declare enum JsonInputMessageType {
|
|
297
|
+
/** User message */
|
|
298
|
+
USER = "user",
|
|
299
|
+
/** Control command */
|
|
300
|
+
CONTROL = "control"
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* User message sent to CLI
|
|
304
|
+
*/
|
|
305
|
+
interface UserInputMessage {
|
|
306
|
+
type: JsonInputMessageType.USER;
|
|
307
|
+
content: string;
|
|
308
|
+
session_id?: string;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Control message sent to CLI
|
|
312
|
+
*/
|
|
313
|
+
interface ControlInputMessage {
|
|
314
|
+
type: JsonInputMessageType.CONTROL;
|
|
315
|
+
control: {
|
|
316
|
+
subtype: 'interrupt' | 'cancel' | 'shutdown';
|
|
317
|
+
};
|
|
318
|
+
session_id?: string;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Union type for input messages
|
|
322
|
+
*/
|
|
323
|
+
type JsonInputMessage = UserInputMessage | ControlInputMessage;
|
|
324
|
+
/**
|
|
325
|
+
* Options for GeminiStreamClient
|
|
326
|
+
*/
|
|
327
|
+
interface GeminiStreamOptions {
|
|
328
|
+
/**
|
|
329
|
+
* Path to Gemini CLI executable
|
|
330
|
+
* @example 'node_modules/@google/gemini-cli/bundle/gemini.js'
|
|
331
|
+
*/
|
|
332
|
+
pathToGeminiCLI: string;
|
|
333
|
+
/**
|
|
334
|
+
* Session ID for this client instance
|
|
335
|
+
* Each client manages one session
|
|
336
|
+
*/
|
|
337
|
+
sessionId: string;
|
|
338
|
+
/**
|
|
339
|
+
* Workspace ID (optional, for tracking)
|
|
340
|
+
*/
|
|
341
|
+
workspaceId?: string;
|
|
342
|
+
/**
|
|
343
|
+
* Google AI API Key
|
|
344
|
+
* Can also be set via GEMINI_API_KEY environment variable
|
|
345
|
+
*/
|
|
346
|
+
apiKey?: string;
|
|
347
|
+
/**
|
|
348
|
+
* Model name
|
|
349
|
+
* @default 'gemini-2.0-flash-exp'
|
|
350
|
+
*/
|
|
351
|
+
model?: string;
|
|
352
|
+
/**
|
|
353
|
+
* Working directory for CLI execution
|
|
354
|
+
* @default process.cwd()
|
|
355
|
+
*/
|
|
356
|
+
cwd?: string;
|
|
357
|
+
/**
|
|
358
|
+
* Approval mode for tool execution
|
|
359
|
+
* @default 'default'
|
|
360
|
+
*/
|
|
361
|
+
approvalMode?: 'default' | 'auto_edit' | 'yolo';
|
|
362
|
+
/**
|
|
363
|
+
* Custom environment variables
|
|
364
|
+
*/
|
|
365
|
+
env?: Record<string, string>;
|
|
366
|
+
/**
|
|
367
|
+
* Enable debug mode
|
|
368
|
+
* @default false
|
|
369
|
+
*/
|
|
370
|
+
debug?: boolean;
|
|
371
|
+
/**
|
|
372
|
+
* Timeout for process initialization (ms)
|
|
373
|
+
* @default 30000
|
|
374
|
+
*/
|
|
375
|
+
initTimeout?: number;
|
|
376
|
+
}
|
|
282
377
|
|
|
283
378
|
/**
|
|
284
379
|
* Core query function for Gemini CLI SDK
|
|
@@ -382,6 +477,132 @@ declare class GeminiClient extends EventEmitter {
|
|
|
382
477
|
getOptions(): Readonly<GeminiOptions>;
|
|
383
478
|
}
|
|
384
479
|
|
|
480
|
+
/**
|
|
481
|
+
* GeminiStreamClient - Persistent stream-based client for Gemini CLI
|
|
482
|
+
*
|
|
483
|
+
* Architecture:
|
|
484
|
+
* - 1 Client = 1 Node.js Process = 1 Session
|
|
485
|
+
* - Communication via stdin/stdout JSONL
|
|
486
|
+
* - Process stays alive for multiple message exchanges
|
|
487
|
+
* - Similar to Claude Agent SDK's SubprocessCLITransport
|
|
488
|
+
*/
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Events emitted by GeminiStreamClient
|
|
492
|
+
*/
|
|
493
|
+
interface StreamClientEvents {
|
|
494
|
+
/** JSON stream event from CLI */
|
|
495
|
+
event: (event: JsonStreamEvent) => void;
|
|
496
|
+
/** Process started */
|
|
497
|
+
started: () => void;
|
|
498
|
+
/** Process ready (INIT event received) */
|
|
499
|
+
ready: (initEvent: InitEvent) => void;
|
|
500
|
+
/** Process stopped */
|
|
501
|
+
stopped: (code: number | null) => void;
|
|
502
|
+
/** Error occurred */
|
|
503
|
+
error: (error: Error) => void;
|
|
504
|
+
}
|
|
505
|
+
declare interface GeminiStreamClient {
|
|
506
|
+
on<K extends keyof StreamClientEvents>(event: K, listener: StreamClientEvents[K]): this;
|
|
507
|
+
emit<K extends keyof StreamClientEvents>(event: K, ...args: Parameters<StreamClientEvents[K]>): boolean;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* GeminiStreamClient
|
|
511
|
+
*
|
|
512
|
+
* Manages a persistent Gemini CLI process for stream-based communication.
|
|
513
|
+
*
|
|
514
|
+
* @example
|
|
515
|
+
* ```typescript
|
|
516
|
+
* const client = new GeminiStreamClient({
|
|
517
|
+
* pathToGeminiCLI: './gemini.js',
|
|
518
|
+
* sessionId: 'session-123',
|
|
519
|
+
* apiKey: process.env.GEMINI_API_KEY,
|
|
520
|
+
* });
|
|
521
|
+
*
|
|
522
|
+
* client.on('event', (event) => {
|
|
523
|
+
* console.log('Event:', event);
|
|
524
|
+
* });
|
|
525
|
+
*
|
|
526
|
+
* await client.start();
|
|
527
|
+
* await client.sendMessage('Hello, Gemini!');
|
|
528
|
+
* await client.stop();
|
|
529
|
+
* ```
|
|
530
|
+
*/
|
|
531
|
+
declare class GeminiStreamClient extends EventEmitter$1 {
|
|
532
|
+
private options;
|
|
533
|
+
private process;
|
|
534
|
+
private stdinStream;
|
|
535
|
+
private readlineInterface;
|
|
536
|
+
private status;
|
|
537
|
+
private initEvent;
|
|
538
|
+
private initTimeout;
|
|
539
|
+
constructor(options: GeminiStreamOptions);
|
|
540
|
+
/**
|
|
541
|
+
* Start the Gemini CLI process
|
|
542
|
+
*/
|
|
543
|
+
start(): Promise<void>;
|
|
544
|
+
/**
|
|
545
|
+
* Send a user message to the CLI
|
|
546
|
+
*/
|
|
547
|
+
sendMessage(content: string): Promise<void>;
|
|
548
|
+
/**
|
|
549
|
+
* Send an interrupt control command
|
|
550
|
+
*/
|
|
551
|
+
interrupt(): Promise<void>;
|
|
552
|
+
/**
|
|
553
|
+
* Stop the CLI process
|
|
554
|
+
*/
|
|
555
|
+
stop(timeout?: number): Promise<void>;
|
|
556
|
+
/**
|
|
557
|
+
* Check if client is ready to send messages
|
|
558
|
+
*/
|
|
559
|
+
isReady(): boolean;
|
|
560
|
+
/**
|
|
561
|
+
* Get current status
|
|
562
|
+
*/
|
|
563
|
+
getStatus(): ProcessStatus;
|
|
564
|
+
/**
|
|
565
|
+
* Get init event (contains session_id, model, etc.)
|
|
566
|
+
*/
|
|
567
|
+
getInitEvent(): InitEvent | null;
|
|
568
|
+
/**
|
|
569
|
+
* Get process PID
|
|
570
|
+
*/
|
|
571
|
+
getPid(): number | undefined;
|
|
572
|
+
/**
|
|
573
|
+
* Build CLI command arguments
|
|
574
|
+
*/
|
|
575
|
+
private buildCommand;
|
|
576
|
+
/**
|
|
577
|
+
* Build environment variables
|
|
578
|
+
*/
|
|
579
|
+
private buildEnv;
|
|
580
|
+
/**
|
|
581
|
+
* Write a JSON message to stdin
|
|
582
|
+
*/
|
|
583
|
+
private writeMessage;
|
|
584
|
+
/**
|
|
585
|
+
* Start reading JSONL events from stdout
|
|
586
|
+
*/
|
|
587
|
+
private startReadLoop;
|
|
588
|
+
/**
|
|
589
|
+
* Handle a JSON stream event
|
|
590
|
+
*/
|
|
591
|
+
private handleEvent;
|
|
592
|
+
/**
|
|
593
|
+
* Wait for INIT event
|
|
594
|
+
*/
|
|
595
|
+
private waitForInit;
|
|
596
|
+
/**
|
|
597
|
+
* Handle process exit
|
|
598
|
+
*/
|
|
599
|
+
private handleProcessExit;
|
|
600
|
+
/**
|
|
601
|
+
* Handle process error
|
|
602
|
+
*/
|
|
603
|
+
private handleProcessError;
|
|
604
|
+
}
|
|
605
|
+
|
|
385
606
|
/**
|
|
386
607
|
* Utility functions for Gemini CLI SDK
|
|
387
608
|
*/
|
|
@@ -435,4 +656,4 @@ declare function formatDuration(ms: number): string;
|
|
|
435
656
|
*/
|
|
436
657
|
declare function formatTokens(tokens: number): string;
|
|
437
658
|
|
|
438
|
-
export { type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, type InitEvent, type JsonStreamEvent, JsonStreamEventType, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type StreamStats, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, validateApiKey, validateModel };
|
|
659
|
+
export { type ControlInputMessage, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type InitEvent, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type UserInputMessage, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, validateApiKey, validateModel };
|