@ketd/gemini-cli-sdk 0.3.7 → 0.3.8

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.d.cts CHANGED
@@ -268,7 +268,9 @@ declare enum JsonStreamEventType {
268
268
  /** Message completion with metadata */
269
269
  FINISHED = "finished",
270
270
  /** Model information */
271
- MODEL_INFO = "model_info"
271
+ MODEL_INFO = "model_info",
272
+ /** Ask user questions (CLI → Host) */
273
+ ASK_USER = "ask_user"
272
274
  }
273
275
  /**
274
276
  * Base event interface
@@ -410,10 +412,45 @@ interface ModelInfoEvent extends BaseJsonStreamEvent {
410
412
  type: JsonStreamEventType.MODEL_INFO;
411
413
  value: string;
412
414
  }
415
+ /**
416
+ * Question option for AskUserEvent
417
+ */
418
+ interface QuestionOption {
419
+ label: string;
420
+ description: string;
421
+ }
422
+ /**
423
+ * Question type for AskUserEvent
424
+ */
425
+ declare enum QuestionType {
426
+ CHOICE = "choice",
427
+ TEXT = "text",
428
+ YESNO = "yesno"
429
+ }
430
+ /**
431
+ * Question in AskUserEvent
432
+ */
433
+ interface Question {
434
+ question: string;
435
+ header: string;
436
+ type?: QuestionType;
437
+ options?: QuestionOption[];
438
+ multiSelect?: boolean;
439
+ placeholder?: string;
440
+ }
441
+ /**
442
+ * Ask user event (CLI → Host)
443
+ * Emitted when the ask_user tool needs structured user input
444
+ */
445
+ interface AskUserEvent extends BaseJsonStreamEvent {
446
+ type: JsonStreamEventType.ASK_USER;
447
+ questions: Question[];
448
+ correlation_id: string;
449
+ }
413
450
  /**
414
451
  * Union type of all JSON stream events
415
452
  */
416
- type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolCallRequestEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent | ContentEvent | FinishedEvent | ModelInfoEvent;
453
+ type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolCallRequestEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent | ContentEvent | FinishedEvent | ModelInfoEvent | AskUserEvent;
417
454
  /**
418
455
  * Gemini CLI exit codes
419
456
  */
@@ -491,7 +528,9 @@ declare enum JsonInputMessageType {
491
528
  /** User message */
492
529
  USER = "user",
493
530
  /** Control command */
494
- CONTROL = "control"
531
+ CONTROL = "control",
532
+ /** Response to ask_user event (Host → CLI) */
533
+ ASK_USER_RESPONSE = "ask_user_response"
495
534
  }
496
535
  /**
497
536
  * User message sent to CLI
@@ -559,10 +598,21 @@ interface ControlInputMessage {
559
598
  control: InterruptControl | TruncateHistoryControl | ResumeSessionControl | ReplaceHistoryControl;
560
599
  session_id?: string;
561
600
  }
601
+ /**
602
+ * Response to ask_user event (Host → CLI)
603
+ * Sent when the host has collected user answers for an ask_user request
604
+ */
605
+ interface AskUserResponseInputMessage {
606
+ type: JsonInputMessageType.ASK_USER_RESPONSE;
607
+ correlation_id: string;
608
+ answers: {
609
+ [questionIndex: string]: string;
610
+ };
611
+ }
562
612
  /**
563
613
  * Union type for input messages
564
614
  */
565
- type JsonInputMessage = UserInputMessage | ControlInputMessage;
615
+ type JsonInputMessage = UserInputMessage | ControlInputMessage | AskUserResponseInputMessage;
566
616
  /**
567
617
  * Hook configuration types (from Gemini CLI)
568
618
  */
@@ -1019,6 +1069,18 @@ declare class GeminiStreamClient extends EventEmitter$1 {
1019
1069
  role: string;
1020
1070
  parts: unknown[];
1021
1071
  }>): Promise<void>;
1072
+ /**
1073
+ * Send a response to an ask_user request from the CLI
1074
+ *
1075
+ * When the CLI emits an 'ask_user' event (from the ask_user tool),
1076
+ * the host collects user answers and sends them back via this method.
1077
+ *
1078
+ * @param correlationId - The correlation_id from the AskUserEvent
1079
+ * @param answers - Map of question index to user's answer string
1080
+ */
1081
+ sendAskUserResponse(correlationId: string, answers: {
1082
+ [questionIndex: string]: string;
1083
+ }): void;
1022
1084
  /**
1023
1085
  * Stop the CLI process
1024
1086
  */
@@ -1137,4 +1199,4 @@ declare function formatDuration(ms: number): string;
1137
1199
  */
1138
1200
  declare function formatTokens(tokens: number): string;
1139
1201
 
1140
- export { type ContextConfig, type ControlInputMessage, type ControlSubtype, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type HooksConfiguration, type InitEvent, type InterruptControl, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, LogLevel, type Logger, type LoggerOptions, type MCPServerConfig, type MCPServersConfig, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type ResumeSessionControl, SDKLogger, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type ToolsConfig, type TruncateHistoryControl, type UserInputMessage, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
1202
+ export { type AskUserEvent, type AskUserResponseInputMessage, type ContextConfig, type ControlInputMessage, type ControlSubtype, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type HooksConfiguration, type InitEvent, type InterruptControl, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, LogLevel, type Logger, type LoggerOptions, type MCPServerConfig, type MCPServersConfig, type MessageEvent, ProcessStatus, type QueryResult, type Question, type QuestionOption, QuestionType, type ResultEvent, type ResumeSessionControl, SDKLogger, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type ToolsConfig, type TruncateHistoryControl, type UserInputMessage, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
package/dist/index.d.ts CHANGED
@@ -268,7 +268,9 @@ declare enum JsonStreamEventType {
268
268
  /** Message completion with metadata */
269
269
  FINISHED = "finished",
270
270
  /** Model information */
271
- MODEL_INFO = "model_info"
271
+ MODEL_INFO = "model_info",
272
+ /** Ask user questions (CLI → Host) */
273
+ ASK_USER = "ask_user"
272
274
  }
273
275
  /**
274
276
  * Base event interface
@@ -410,10 +412,45 @@ interface ModelInfoEvent extends BaseJsonStreamEvent {
410
412
  type: JsonStreamEventType.MODEL_INFO;
411
413
  value: string;
412
414
  }
415
+ /**
416
+ * Question option for AskUserEvent
417
+ */
418
+ interface QuestionOption {
419
+ label: string;
420
+ description: string;
421
+ }
422
+ /**
423
+ * Question type for AskUserEvent
424
+ */
425
+ declare enum QuestionType {
426
+ CHOICE = "choice",
427
+ TEXT = "text",
428
+ YESNO = "yesno"
429
+ }
430
+ /**
431
+ * Question in AskUserEvent
432
+ */
433
+ interface Question {
434
+ question: string;
435
+ header: string;
436
+ type?: QuestionType;
437
+ options?: QuestionOption[];
438
+ multiSelect?: boolean;
439
+ placeholder?: string;
440
+ }
441
+ /**
442
+ * Ask user event (CLI → Host)
443
+ * Emitted when the ask_user tool needs structured user input
444
+ */
445
+ interface AskUserEvent extends BaseJsonStreamEvent {
446
+ type: JsonStreamEventType.ASK_USER;
447
+ questions: Question[];
448
+ correlation_id: string;
449
+ }
413
450
  /**
414
451
  * Union type of all JSON stream events
415
452
  */
416
- type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolCallRequestEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent | ContentEvent | FinishedEvent | ModelInfoEvent;
453
+ type JsonStreamEvent = InitEvent | MessageEvent | ToolUseEvent | ToolCallRequestEvent | ToolResultEvent | ThoughtEvent | ErrorEvent | ResultEvent | ContentEvent | FinishedEvent | ModelInfoEvent | AskUserEvent;
417
454
  /**
418
455
  * Gemini CLI exit codes
419
456
  */
@@ -491,7 +528,9 @@ declare enum JsonInputMessageType {
491
528
  /** User message */
492
529
  USER = "user",
493
530
  /** Control command */
494
- CONTROL = "control"
531
+ CONTROL = "control",
532
+ /** Response to ask_user event (Host → CLI) */
533
+ ASK_USER_RESPONSE = "ask_user_response"
495
534
  }
496
535
  /**
497
536
  * User message sent to CLI
@@ -559,10 +598,21 @@ interface ControlInputMessage {
559
598
  control: InterruptControl | TruncateHistoryControl | ResumeSessionControl | ReplaceHistoryControl;
560
599
  session_id?: string;
561
600
  }
601
+ /**
602
+ * Response to ask_user event (Host → CLI)
603
+ * Sent when the host has collected user answers for an ask_user request
604
+ */
605
+ interface AskUserResponseInputMessage {
606
+ type: JsonInputMessageType.ASK_USER_RESPONSE;
607
+ correlation_id: string;
608
+ answers: {
609
+ [questionIndex: string]: string;
610
+ };
611
+ }
562
612
  /**
563
613
  * Union type for input messages
564
614
  */
565
- type JsonInputMessage = UserInputMessage | ControlInputMessage;
615
+ type JsonInputMessage = UserInputMessage | ControlInputMessage | AskUserResponseInputMessage;
566
616
  /**
567
617
  * Hook configuration types (from Gemini CLI)
568
618
  */
@@ -1019,6 +1069,18 @@ declare class GeminiStreamClient extends EventEmitter$1 {
1019
1069
  role: string;
1020
1070
  parts: unknown[];
1021
1071
  }>): Promise<void>;
1072
+ /**
1073
+ * Send a response to an ask_user request from the CLI
1074
+ *
1075
+ * When the CLI emits an 'ask_user' event (from the ask_user tool),
1076
+ * the host collects user answers and sends them back via this method.
1077
+ *
1078
+ * @param correlationId - The correlation_id from the AskUserEvent
1079
+ * @param answers - Map of question index to user's answer string
1080
+ */
1081
+ sendAskUserResponse(correlationId: string, answers: {
1082
+ [questionIndex: string]: string;
1083
+ }): void;
1022
1084
  /**
1023
1085
  * Stop the CLI process
1024
1086
  */
@@ -1137,4 +1199,4 @@ declare function formatDuration(ms: number): string;
1137
1199
  */
1138
1200
  declare function formatTokens(tokens: number): string;
1139
1201
 
1140
- export { type ContextConfig, type ControlInputMessage, type ControlSubtype, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type HooksConfiguration, type InitEvent, type InterruptControl, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, LogLevel, type Logger, type LoggerOptions, type MCPServerConfig, type MCPServersConfig, type MessageEvent, ProcessStatus, type QueryResult, type ResultEvent, type ResumeSessionControl, SDKLogger, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type ToolsConfig, type TruncateHistoryControl, type UserInputMessage, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
1202
+ export { type AskUserEvent, type AskUserResponseInputMessage, type ContextConfig, type ControlInputMessage, type ControlSubtype, type ErrorEvent, ExitCode, GeminiClient, type GeminiOptions, GeminiSDKError, GeminiStreamClient, type GeminiStreamOptions, type HooksConfiguration, type InitEvent, type InterruptControl, type JsonInputMessage, JsonInputMessageType, type JsonStreamEvent, JsonStreamEventType, LogLevel, type Logger, type LoggerOptions, type MCPServerConfig, type MCPServersConfig, type MessageEvent, ProcessStatus, type QueryResult, type Question, type QuestionOption, QuestionType, type ResultEvent, type ResumeSessionControl, SDKLogger, type StreamStats, type ThoughtEvent, type ToolPermissionDecision, type ToolPermissionRequest, type ToolResultEvent, type ToolUseEvent, type ToolsConfig, type TruncateHistoryControl, type UserInputMessage, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
package/dist/index.js CHANGED
@@ -19,8 +19,15 @@ var JsonStreamEventType = /* @__PURE__ */ ((JsonStreamEventType2) => {
19
19
  JsonStreamEventType2["CONTENT"] = "content";
20
20
  JsonStreamEventType2["FINISHED"] = "finished";
21
21
  JsonStreamEventType2["MODEL_INFO"] = "model_info";
22
+ JsonStreamEventType2["ASK_USER"] = "ask_user";
22
23
  return JsonStreamEventType2;
23
24
  })(JsonStreamEventType || {});
25
+ var QuestionType = /* @__PURE__ */ ((QuestionType2) => {
26
+ QuestionType2["CHOICE"] = "choice";
27
+ QuestionType2["TEXT"] = "text";
28
+ QuestionType2["YESNO"] = "yesno";
29
+ return QuestionType2;
30
+ })(QuestionType || {});
24
31
  var ExitCode = /* @__PURE__ */ ((ExitCode2) => {
25
32
  ExitCode2[ExitCode2["SUCCESS"] = 0] = "SUCCESS";
26
33
  ExitCode2[ExitCode2["GENERAL_ERROR"] = 1] = "GENERAL_ERROR";
@@ -50,6 +57,7 @@ var GeminiSDKError = class _GeminiSDKError extends Error {
50
57
  var JsonInputMessageType = /* @__PURE__ */ ((JsonInputMessageType2) => {
51
58
  JsonInputMessageType2["USER"] = "user";
52
59
  JsonInputMessageType2["CONTROL"] = "control";
60
+ JsonInputMessageType2["ASK_USER_RESPONSE"] = "ask_user_response";
53
61
  return JsonInputMessageType2;
54
62
  })(JsonInputMessageType || {});
55
63
 
@@ -662,6 +670,26 @@ var GeminiStreamClient = class extends EventEmitter {
662
670
  };
663
671
  this.writeMessage(message);
664
672
  }
673
+ /**
674
+ * Send a response to an ask_user request from the CLI
675
+ *
676
+ * When the CLI emits an 'ask_user' event (from the ask_user tool),
677
+ * the host collects user answers and sends them back via this method.
678
+ *
679
+ * @param correlationId - The correlation_id from the AskUserEvent
680
+ * @param answers - Map of question index to user's answer string
681
+ */
682
+ sendAskUserResponse(correlationId, answers) {
683
+ if (!this.isReady()) {
684
+ throw new GeminiSDKError("Client not ready. Call start() first.");
685
+ }
686
+ const message = {
687
+ type: "ask_user_response" /* ASK_USER_RESPONSE */,
688
+ correlation_id: correlationId,
689
+ answers
690
+ };
691
+ this.writeMessage(message);
692
+ }
665
693
  /**
666
694
  * Stop the CLI process
667
695
  */
@@ -1021,6 +1049,6 @@ function formatTokens(tokens) {
1021
1049
  return tokens.toLocaleString();
1022
1050
  }
1023
1051
 
1024
- export { ExitCode, GeminiClient, GeminiSDKError, GeminiStreamClient, JsonInputMessageType, JsonStreamEventType, LogLevel, ProcessStatus, SDKLogger, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
1052
+ export { ExitCode, GeminiClient, GeminiSDKError, GeminiStreamClient, JsonInputMessageType, JsonStreamEventType, LogLevel, ProcessStatus, QuestionType, SDKLogger, createLogger, findGeminiCLI, formatDuration, formatTokens, getApiKey, query, sdkLogger, silentLogger, validateApiKey, validateModel };
1025
1053
  //# sourceMappingURL=index.js.map
1026
1054
  //# sourceMappingURL=index.js.map