cyrus-gemini-runner 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +411 -0
  3. package/dist/GeminiRunner.d.ts +136 -0
  4. package/dist/GeminiRunner.d.ts.map +1 -0
  5. package/dist/GeminiRunner.js +683 -0
  6. package/dist/GeminiRunner.js.map +1 -0
  7. package/dist/SimpleGeminiRunner.d.ts +27 -0
  8. package/dist/SimpleGeminiRunner.d.ts.map +1 -0
  9. package/dist/SimpleGeminiRunner.js +149 -0
  10. package/dist/SimpleGeminiRunner.js.map +1 -0
  11. package/dist/adapters.d.ts +37 -0
  12. package/dist/adapters.d.ts.map +1 -0
  13. package/dist/adapters.js +317 -0
  14. package/dist/adapters.js.map +1 -0
  15. package/dist/formatter.d.ts +40 -0
  16. package/dist/formatter.d.ts.map +1 -0
  17. package/dist/formatter.js +363 -0
  18. package/dist/formatter.js.map +1 -0
  19. package/dist/index.d.ts +36 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +56 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/prompts/system.md +108 -0
  24. package/dist/schemas.d.ts +1472 -0
  25. package/dist/schemas.d.ts.map +1 -0
  26. package/dist/schemas.js +678 -0
  27. package/dist/schemas.js.map +1 -0
  28. package/dist/settingsGenerator.d.ts +72 -0
  29. package/dist/settingsGenerator.d.ts.map +1 -0
  30. package/dist/settingsGenerator.js +255 -0
  31. package/dist/settingsGenerator.js.map +1 -0
  32. package/dist/systemPromptManager.d.ts +27 -0
  33. package/dist/systemPromptManager.d.ts.map +1 -0
  34. package/dist/systemPromptManager.js +65 -0
  35. package/dist/systemPromptManager.js.map +1 -0
  36. package/dist/types.d.ts +113 -0
  37. package/dist/types.d.ts.map +1 -0
  38. package/dist/types.js +23 -0
  39. package/dist/types.js.map +1 -0
  40. package/package.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { McpServerConfig } from "cyrus-core";
2
+ import type { GeminiMcpServerConfig } from "./types.js";
3
+ /**
4
+ * Options for generating Gemini settings
5
+ */
6
+ export interface GeminiSettingsOptions {
7
+ maxSessionTurns?: number;
8
+ mcpServers?: Record<string, GeminiMcpServerConfig>;
9
+ allowMCPServers?: string[];
10
+ excludeMCPServers?: string[];
11
+ }
12
+ /**
13
+ * Convert McpServerConfig (cyrus-core format) to GeminiMcpServerConfig (Gemini CLI format)
14
+ * https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md
15
+ *
16
+ * Gemini CLI supports three transport types:
17
+ * - stdio: command-based (spawns subprocess)
18
+ * - sse: Server-Sent Events (url-based)
19
+ * - http: Streamable HTTP (httpUrl-based)
20
+ *
21
+ * Claude SDK's McpServerConfig uses `type: "http"` with `url` for HTTP servers.
22
+ * This function maps to Gemini CLI's format which uses `httpUrl` for HTTP transport.
23
+ *
24
+ * @param serverName - Name of the MCP server (for logging)
25
+ * @param config - McpServerConfig from cyrus-core
26
+ * @returns GeminiMcpServerConfig or null if conversion not possible
27
+ */
28
+ export declare function convertToGeminiMcpConfig(serverName: string, config: McpServerConfig): GeminiMcpServerConfig | null;
29
+ /**
30
+ * Load MCP configuration from file paths
31
+ *
32
+ * @param configPaths - Single path or array of paths to MCP config files
33
+ *
34
+ * @returns Merged MCP server configurations
35
+ */
36
+ export declare function loadMcpConfigFromPaths(configPaths: string | string[] | undefined): Record<string, McpServerConfig>;
37
+ /**
38
+ * Auto-detect .mcp.json in working directory
39
+ *
40
+ * @param workingDirectory - Working directory to check
41
+ * @returns Path to .mcp.json if valid, undefined otherwise
42
+ */
43
+ export declare function autoDetectMcpConfig(workingDirectory?: string): string | undefined;
44
+ /**
45
+ * Backup existing settings.json if it exists
46
+ * Returns true if backup was created, false if no file to backup
47
+ */
48
+ export declare function backupGeminiSettings(): boolean;
49
+ /**
50
+ * Restore settings.json from backup
51
+ * Returns true if restored, false if no backup exists
52
+ */
53
+ export declare function restoreGeminiSettings(): boolean;
54
+ /**
55
+ * Delete settings.json (used when no backup existed)
56
+ */
57
+ export declare function deleteGeminiSettings(): void;
58
+ /**
59
+ * Write settings.json with specified options
60
+ * Creates ~/.gemini directory if it doesn't exist
61
+ *
62
+ * @param options - Settings options including maxSessionTurns, mcpServers, etc.
63
+ */
64
+ export declare function writeGeminiSettings(options: GeminiSettingsOptions): void;
65
+ /**
66
+ * Setup Gemini settings for a session
67
+ * Returns cleanup function to call when session ends
68
+ *
69
+ * @param options - Settings options including maxSessionTurns, mcpServers, etc.
70
+ */
71
+ export declare function setupGeminiSettings(options: GeminiSettingsOptions): () => void;
72
+ //# sourceMappingURL=settingsGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsGenerator.d.ts","sourceRoot":"","sources":["../src/settingsGenerator.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAqBxD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACrB,qBAAqB,GAAG,IAAI,CA0F9B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACxC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA0BjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,SAAS,CAoBpB;AA6CD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAS9C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAU/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAoBxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,qBAAqB,GAC5B,MAAM,IAAI,CAcZ"}
@@ -0,0 +1,255 @@
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ const GEMINI_DIR = join(homedir(), ".gemini");
5
+ const SETTINGS_PATH = join(GEMINI_DIR, "settings.json");
6
+ const BACKUP_PATH = join(GEMINI_DIR, "settings.json.backup");
7
+ /**
8
+ * Convert McpServerConfig (cyrus-core format) to GeminiMcpServerConfig (Gemini CLI format)
9
+ * https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md
10
+ *
11
+ * Gemini CLI supports three transport types:
12
+ * - stdio: command-based (spawns subprocess)
13
+ * - sse: Server-Sent Events (url-based)
14
+ * - http: Streamable HTTP (httpUrl-based)
15
+ *
16
+ * Claude SDK's McpServerConfig uses `type: "http"` with `url` for HTTP servers.
17
+ * This function maps to Gemini CLI's format which uses `httpUrl` for HTTP transport.
18
+ *
19
+ * @param serverName - Name of the MCP server (for logging)
20
+ * @param config - McpServerConfig from cyrus-core
21
+ * @returns GeminiMcpServerConfig or null if conversion not possible
22
+ */
23
+ export function convertToGeminiMcpConfig(serverName, config) {
24
+ const configAny = config;
25
+ // Detect SDK MCP server instances (in-process servers)
26
+ // These have methods like listTools, callTool, etc. and are not convertible
27
+ // to Gemini CLI's transport-based configuration format
28
+ if (typeof configAny.listTools === "function" ||
29
+ typeof configAny.callTool === "function" ||
30
+ typeof configAny.name === "string") {
31
+ console.warn(`[GeminiRunner] MCP server "${serverName}" is an SDK server instance (in-process). ` +
32
+ `Gemini CLI only supports external MCP servers with transport configurations. Skipping.`);
33
+ return null;
34
+ }
35
+ const geminiConfig = {};
36
+ // Determine transport type and configure accordingly
37
+ if (configAny.type === "http" && configAny.url) {
38
+ // Claude SDK HTTP transport -> Gemini HTTP transport (httpUrl)
39
+ geminiConfig.httpUrl = configAny.url;
40
+ console.log(`[GeminiRunner] MCP server "${serverName}" configured with HTTP transport: ${geminiConfig.httpUrl}`);
41
+ }
42
+ else if (configAny.url && !configAny.command) {
43
+ // URL without command and not explicitly HTTP -> treat as SSE
44
+ geminiConfig.url = configAny.url;
45
+ console.log(`[GeminiRunner] MCP server "${serverName}" configured with SSE transport: ${geminiConfig.url}`);
46
+ }
47
+ else if (configAny.command) {
48
+ // Command-based -> stdio transport
49
+ geminiConfig.command = configAny.command;
50
+ console.log(`[GeminiRunner] MCP server "${serverName}" configured with stdio transport: ${geminiConfig.command}`);
51
+ }
52
+ else {
53
+ // No valid transport configuration
54
+ console.warn(`[GeminiRunner] MCP server "${serverName}" has no valid transport configuration (need command, url, or httpUrl). Skipping.`);
55
+ return null;
56
+ }
57
+ // Map stdio-specific fields
58
+ if (configAny.args && Array.isArray(configAny.args)) {
59
+ geminiConfig.args = configAny.args;
60
+ }
61
+ if (configAny.cwd && typeof configAny.cwd === "string") {
62
+ geminiConfig.cwd = configAny.cwd;
63
+ }
64
+ // Map HTTP headers (for SSE and HTTP transports)
65
+ if (configAny.headers &&
66
+ typeof configAny.headers === "object" &&
67
+ !Array.isArray(configAny.headers)) {
68
+ geminiConfig.headers = configAny.headers;
69
+ }
70
+ // Map common fields
71
+ if (configAny.env &&
72
+ typeof configAny.env === "object" &&
73
+ !Array.isArray(configAny.env)) {
74
+ geminiConfig.env = configAny.env;
75
+ }
76
+ if (configAny.timeout && typeof configAny.timeout === "number") {
77
+ geminiConfig.timeout = configAny.timeout;
78
+ }
79
+ // Trust MCP servers by default for auto-approval (matches --yolo behavior)
80
+ geminiConfig.trust = true;
81
+ if (configAny.includeTools && Array.isArray(configAny.includeTools)) {
82
+ geminiConfig.includeTools = configAny.includeTools;
83
+ }
84
+ if (configAny.excludeTools && Array.isArray(configAny.excludeTools)) {
85
+ geminiConfig.excludeTools = configAny.excludeTools;
86
+ }
87
+ return geminiConfig;
88
+ }
89
+ /**
90
+ * Load MCP configuration from file paths
91
+ *
92
+ * @param configPaths - Single path or array of paths to MCP config files
93
+ *
94
+ * @returns Merged MCP server configurations
95
+ */
96
+ export function loadMcpConfigFromPaths(configPaths) {
97
+ if (!configPaths) {
98
+ return {};
99
+ }
100
+ const paths = Array.isArray(configPaths) ? configPaths : [configPaths];
101
+ let mcpServers = {};
102
+ for (const configPath of paths) {
103
+ try {
104
+ const mcpConfigContent = readFileSync(configPath, "utf8");
105
+ const mcpConfig = JSON.parse(mcpConfigContent);
106
+ const servers = mcpConfig.mcpServers || {};
107
+ mcpServers = { ...mcpServers, ...servers };
108
+ console.log(`[GeminiRunner] Loaded MCP config from ${configPath}: ${Object.keys(servers).join(", ")}`);
109
+ }
110
+ catch (error) {
111
+ console.error(`[GeminiRunner] Failed to load MCP config from ${configPath}:`, error);
112
+ }
113
+ }
114
+ return mcpServers;
115
+ }
116
+ /**
117
+ * Auto-detect .mcp.json in working directory
118
+ *
119
+ * @param workingDirectory - Working directory to check
120
+ * @returns Path to .mcp.json if valid, undefined otherwise
121
+ */
122
+ export function autoDetectMcpConfig(workingDirectory) {
123
+ if (!workingDirectory) {
124
+ return undefined;
125
+ }
126
+ const mcpJsonPath = join(workingDirectory, ".mcp.json");
127
+ if (existsSync(mcpJsonPath)) {
128
+ try {
129
+ // Validate it's valid JSON
130
+ const content = readFileSync(mcpJsonPath, "utf8");
131
+ JSON.parse(content);
132
+ console.log(`[GeminiRunner] Auto-detected .mcp.json at ${mcpJsonPath}`);
133
+ return mcpJsonPath;
134
+ }
135
+ catch {
136
+ console.warn(`[GeminiRunner] Found .mcp.json at ${mcpJsonPath} but it's not valid JSON, skipping`);
137
+ }
138
+ }
139
+ return undefined;
140
+ }
141
+ /**
142
+ * Generates settings.json structure with maxSessionTurns and MCP servers
143
+ * Reference: https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/configuration.md
144
+ *
145
+ * Based on investigation of Gemini CLI source code, maxSessionTurns is a top-level
146
+ * setting under "model", not a per-alias configuration. Aliases can only configure
147
+ * generateContentConfig parameters (temperature, topP, etc).
148
+ */
149
+ function generateSettings(options) {
150
+ const settings = {
151
+ general: {
152
+ previewFeatures: true,
153
+ },
154
+ };
155
+ // Add model settings if maxSessionTurns specified
156
+ if (options.maxSessionTurns !== undefined) {
157
+ settings.model = {
158
+ maxSessionTurns: options.maxSessionTurns,
159
+ };
160
+ }
161
+ // Add MCP servers if provided
162
+ if (options.mcpServers && Object.keys(options.mcpServers).length > 0) {
163
+ settings.mcpServers = options.mcpServers;
164
+ console.log(`[GeminiRunner] Including ${Object.keys(options.mcpServers).length} MCP server(s) in settings.json: ${Object.keys(options.mcpServers).join(", ")}`);
165
+ }
166
+ // Add allowMCPServers whitelist if provided
167
+ if (options.allowMCPServers && options.allowMCPServers.length > 0) {
168
+ settings.allowMCPServers = options.allowMCPServers;
169
+ }
170
+ // Add excludeMCPServers blacklist if provided
171
+ if (options.excludeMCPServers && options.excludeMCPServers.length > 0) {
172
+ settings.excludeMCPServers = options.excludeMCPServers;
173
+ }
174
+ return settings;
175
+ }
176
+ /**
177
+ * Backup existing settings.json if it exists
178
+ * Returns true if backup was created, false if no file to backup
179
+ */
180
+ export function backupGeminiSettings() {
181
+ if (!existsSync(SETTINGS_PATH)) {
182
+ return false;
183
+ }
184
+ // Create backup
185
+ copyFileSync(SETTINGS_PATH, BACKUP_PATH);
186
+ console.log(`[GeminiRunner] Backed up settings.json to ${BACKUP_PATH}`);
187
+ return true;
188
+ }
189
+ /**
190
+ * Restore settings.json from backup
191
+ * Returns true if restored, false if no backup exists
192
+ */
193
+ export function restoreGeminiSettings() {
194
+ if (!existsSync(BACKUP_PATH)) {
195
+ return false;
196
+ }
197
+ // Restore from backup
198
+ copyFileSync(BACKUP_PATH, SETTINGS_PATH);
199
+ unlinkSync(BACKUP_PATH);
200
+ console.log(`[GeminiRunner] Restored settings.json from backup`);
201
+ return true;
202
+ }
203
+ /**
204
+ * Delete settings.json (used when no backup existed)
205
+ */
206
+ export function deleteGeminiSettings() {
207
+ if (existsSync(SETTINGS_PATH)) {
208
+ unlinkSync(SETTINGS_PATH);
209
+ console.log(`[GeminiRunner] Deleted temporary settings.json`);
210
+ }
211
+ }
212
+ /**
213
+ * Write settings.json with specified options
214
+ * Creates ~/.gemini directory if it doesn't exist
215
+ *
216
+ * @param options - Settings options including maxSessionTurns, mcpServers, etc.
217
+ */
218
+ export function writeGeminiSettings(options) {
219
+ // Create ~/.gemini directory if it doesn't exist
220
+ if (!existsSync(GEMINI_DIR)) {
221
+ mkdirSync(GEMINI_DIR, { recursive: true });
222
+ }
223
+ // Generate and write settings
224
+ const settings = generateSettings(options);
225
+ writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2), "utf-8");
226
+ const parts = [];
227
+ if (options.maxSessionTurns !== undefined) {
228
+ parts.push(`maxSessionTurns=${options.maxSessionTurns}`);
229
+ }
230
+ if (options.mcpServers && Object.keys(options.mcpServers).length > 0) {
231
+ parts.push(`mcpServers=[${Object.keys(options.mcpServers).join(", ")}]`);
232
+ }
233
+ console.log(`[GeminiRunner] Wrote settings.json${parts.length > 0 ? ` with ${parts.join(", ")}` : ""}`);
234
+ }
235
+ /**
236
+ * Setup Gemini settings for a session
237
+ * Returns cleanup function to call when session ends
238
+ *
239
+ * @param options - Settings options including maxSessionTurns, mcpServers, etc.
240
+ */
241
+ export function setupGeminiSettings(options) {
242
+ const hadBackup = backupGeminiSettings();
243
+ // Write settings
244
+ writeGeminiSettings(options);
245
+ // Return cleanup function
246
+ return () => {
247
+ if (hadBackup) {
248
+ restoreGeminiSettings();
249
+ }
250
+ else {
251
+ deleteGeminiSettings();
252
+ }
253
+ };
254
+ }
255
+ //# sourceMappingURL=settingsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsGenerator.js","sourceRoot":"","sources":["../src/settingsGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Manages system prompts for Gemini CLI by writing them to disk
3
+ * and configuring the GEMINI_SYSTEM_MD environment variable.
4
+ *
5
+ * Unlike Claude runner which can accept system prompts directly,
6
+ * Gemini CLI requires system prompts to be in a file on disk.
7
+ *
8
+ * Supports parallel execution by using unique file paths per workspace.
9
+ */
10
+ export declare class SystemPromptManager {
11
+ private cyrusHome;
12
+ private systemPromptPath;
13
+ constructor(cyrusHome: string, workspaceName: string);
14
+ /**
15
+ * Write system prompt to disk and return the path to be used with GEMINI_SYSTEM_MD
16
+ */
17
+ prepareSystemPrompt(dynamicSystemPrompt: string): Promise<string>;
18
+ /**
19
+ * Get the path where system prompts are stored for this workspace
20
+ */
21
+ getSystemPromptPath(): string;
22
+ /**
23
+ * Resolve tilde (~) in paths to absolute home directory path
24
+ */
25
+ static resolveTildePath(path: string): string;
26
+ }
27
+ //# sourceMappingURL=systemPromptManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemPromptManager.d.ts","sourceRoot":"","sources":["../src/systemPromptManager.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IASpD;;OAEG;IACG,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BvE;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAM7C"}
@@ -0,0 +1,65 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ /**
6
+ * Manages system prompts for Gemini CLI by writing them to disk
7
+ * and configuring the GEMINI_SYSTEM_MD environment variable.
8
+ *
9
+ * Unlike Claude runner which can accept system prompts directly,
10
+ * Gemini CLI requires system prompts to be in a file on disk.
11
+ *
12
+ * Supports parallel execution by using unique file paths per workspace.
13
+ */
14
+ export class SystemPromptManager {
15
+ cyrusHome;
16
+ systemPromptPath;
17
+ constructor(cyrusHome, workspaceName) {
18
+ this.cyrusHome = cyrusHome;
19
+ // Use workspace-specific path to support parallel execution
20
+ // Format: ~/.cyrus/gemini-system-prompts/<workspace-name>.md
21
+ // NOTE: Workspace-name is the Linear issue identifier
22
+ const promptsDir = join(this.cyrusHome, "gemini-system-prompts");
23
+ this.systemPromptPath = join(promptsDir, `${workspaceName}.md`);
24
+ }
25
+ /**
26
+ * Write system prompt to disk and return the path to be used with GEMINI_SYSTEM_MD
27
+ */
28
+ async prepareSystemPrompt(dynamicSystemPrompt) {
29
+ try {
30
+ // Ensure prompts directory exists
31
+ const promptsDir = join(this.cyrusHome, "gemini-system-prompts");
32
+ await mkdir(promptsDir, { recursive: true });
33
+ // Get Gemini system prompt, which we will append
34
+ const __filename = fileURLToPath(import.meta.url);
35
+ const __dirname = dirname(__filename);
36
+ const subroutinePromptPath = join(__dirname, "prompts", "system.md");
37
+ const geminiSystemPrompt = await readFile(subroutinePromptPath, "utf-8");
38
+ const completeSystemPrompt = geminiSystemPrompt + dynamicSystemPrompt;
39
+ // Write system prompt to workspace-specific file
40
+ await writeFile(this.systemPromptPath, completeSystemPrompt, "utf8");
41
+ console.log(`[SystemPromptManager] Wrote system prompt to: ${this.systemPromptPath}`);
42
+ return this.systemPromptPath;
43
+ }
44
+ catch (error) {
45
+ console.error("[SystemPromptManager] Failed to write system prompt:", error);
46
+ throw error;
47
+ }
48
+ }
49
+ /**
50
+ * Get the path where system prompts are stored for this workspace
51
+ */
52
+ getSystemPromptPath() {
53
+ return this.systemPromptPath;
54
+ }
55
+ /**
56
+ * Resolve tilde (~) in paths to absolute home directory path
57
+ */
58
+ static resolveTildePath(path) {
59
+ if (path.startsWith("~/")) {
60
+ return join(homedir(), path.slice(2));
61
+ }
62
+ return path;
63
+ }
64
+ }
65
+ //# sourceMappingURL=systemPromptManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemPromptManager.js","sourceRoot":"","sources":["../src/systemPromptManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IACvB,SAAS,CAAS;IAClB,gBAAgB,CAAS;IAEjC,YAAY,SAAiB,EAAE,aAAqB;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,4DAA4D;QAC5D,6DAA6D;QAC7D,sDAAsD;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,KAAK,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,mBAA2B;QACpD,IAAI,CAAC;YACJ,kCAAkC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7C,iDAAiD;YACjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAErE,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YACzE,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;YAEtE,iDAAiD;YACjD,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAErE,OAAO,CAAC,GAAG,CACV,iDAAiD,IAAI,CAAC,gBAAgB,EAAE,CACxE,CAAC;YAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,sDAAsD,EACtD,KAAK,CACL,CAAC;YACF,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;OAEG;IACH,mBAAmB;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Type definitions for Gemini Runner
3
+ *
4
+ * Event types are derived from Zod schemas in schemas.ts for runtime validation.
5
+ * Configuration and session types remain as interfaces.
6
+ */
7
+ import type { AgentRunnerConfig, AgentSessionInfo, McpServerConfig, SDKMessage } from "cyrus-core";
8
+ /**
9
+ * Gemini CLI MCP server configuration
10
+ *
11
+ * Gemini CLI supports three transport types:
12
+ * - stdio: Spawns a subprocess and communicates via stdin/stdout (command-based)
13
+ * - sse: Connects to Server-Sent Events endpoints (url-based)
14
+ * - http: Uses HTTP streaming for communication (httpUrl-based)
15
+ *
16
+ * Reference: https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/configuration.md
17
+ */
18
+ export interface GeminiMcpServerConfig {
19
+ /** The command to execute to start the MCP server (stdio transport) */
20
+ command?: string;
21
+ /** Arguments to pass to the command (stdio transport) */
22
+ args?: string[];
23
+ /** The working directory in which to start the server (stdio transport) */
24
+ cwd?: string;
25
+ /** SSE endpoint URL (sse transport) */
26
+ url?: string;
27
+ /** HTTP streaming endpoint URL (http transport) */
28
+ httpUrl?: string;
29
+ /** Custom HTTP headers when using url or httpUrl */
30
+ headers?: Record<string, string>;
31
+ /** Environment variables for the server process */
32
+ env?: Record<string, string>;
33
+ /** Timeout in milliseconds for requests to this MCP server (default: 600000ms) */
34
+ timeout?: number;
35
+ /** Trust this server and bypass all tool call confirmations */
36
+ trust?: boolean;
37
+ /** List of tool names to include from this MCP server (whitelist) */
38
+ includeTools?: string[];
39
+ /** List of tool names to exclude from this MCP server (blacklist) */
40
+ excludeTools?: string[];
41
+ }
42
+ export type { McpServerConfig };
43
+ export type { GeminiErrorEvent, GeminiInitEvent, GeminiMessageEvent, GeminiResultEvent, GeminiStreamEvent, GeminiToolParameters, GeminiToolResultEvent, GeminiToolUseEvent, ListDirectoryParameters, ListDirectoryToolResult, ListDirectoryToolUseEvent, ReadFileParameters, ReadFileToolResult, ReadFileToolUseEvent, ReplaceParameters, ReplaceToolResult, ReplaceToolUseEvent, RunShellCommandParameters, RunShellCommandToolResult, RunShellCommandToolUseEvent, SearchFileContentParameters, SearchFileContentToolResult, SearchFileContentToolUseEvent, TodoItem, UnknownToolUseEvent, WriteFileParameters, WriteFileToolResult, WriteFileToolUseEvent, WriteTodosParameters, WriteTodosToolResult, WriteTodosToolUseEvent, } from "./schemas.js";
44
+ export { extractToolNameFromId, GeminiErrorEventSchema, GeminiInitEventSchema, GeminiMessageEventSchema, GeminiResultEventSchema, GeminiStreamEventSchema, GeminiToolParametersSchema, GeminiToolResultEventSchema, GeminiToolUseEventSchema, isGeminiErrorEvent, isGeminiInitEvent, isGeminiMessageEvent, isGeminiResultEvent, isGeminiToolResultEvent, isGeminiToolUseEvent, isListDirectoryTool, isListDirectoryToolResult, isReadFileTool, isReadFileToolResult, isReplaceTool, isReplaceToolResult, isRunShellCommandTool, isRunShellCommandToolResult, isSearchFileContentTool, isSearchFileContentToolResult, isWriteFileTool, isWriteFileToolResult, isWriteTodosTool, isWriteTodosToolResult, ListDirectoryParametersSchema, ListDirectoryToolResultSchema, ListDirectoryToolUseEventSchema, parseAsListDirectoryTool, parseAsReadFileTool, parseAsReplaceTool, parseAsRunShellCommandTool, parseAsSearchFileContentTool, parseAsWriteFileTool, parseAsWriteTodosTool, parseGeminiStreamEvent, ReadFileParametersSchema, ReadFileToolResultSchema, ReadFileToolUseEventSchema, ReplaceParametersSchema, ReplaceToolResultSchema, ReplaceToolUseEventSchema, RunShellCommandParametersSchema, RunShellCommandToolResultSchema, RunShellCommandToolUseEventSchema, SearchFileContentParametersSchema, SearchFileContentToolResultSchema, SearchFileContentToolUseEventSchema, safeParseGeminiStreamEvent, TodoItemSchema, UnknownToolUseEventSchema, WriteFileParametersSchema, WriteFileToolResultSchema, WriteFileToolUseEventSchema, WriteTodosParametersSchema, WriteTodosToolResultSchema, WriteTodosToolUseEventSchema, } from "./schemas.js";
45
+ /**
46
+ * Configuration for GeminiRunner
47
+ * Extends the base AgentRunnerConfig with Gemini-specific options
48
+ *
49
+ * MCP Configuration:
50
+ * - mcpConfig: Inline MCP server configurations (inherited from AgentRunnerConfig)
51
+ * - mcpConfigPath: Path(s) to MCP configuration file(s) (inherited from AgentRunnerConfig)
52
+ * - allowMCPServers: Gemini-specific whitelist of MCP server names
53
+ * - excludeMCPServers: Gemini-specific blacklist of MCP server names
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const config: GeminiRunnerConfig = {
58
+ * cyrusHome: '/home/user/.cyrus',
59
+ * workingDirectory: '/path/to/repo',
60
+ * mcpConfig: {
61
+ * linear: {
62
+ * command: 'npx',
63
+ * args: ['-y', '@anthropic/mcp-linear'],
64
+ * env: { LINEAR_API_TOKEN: 'token' }
65
+ * }
66
+ * },
67
+ * allowMCPServers: ['linear'], // Only enable Linear MCP
68
+ * };
69
+ * ```
70
+ */
71
+ export interface GeminiRunnerConfig extends AgentRunnerConfig {
72
+ /** Path to gemini CLI binary (defaults to 'gemini' in PATH) */
73
+ geminiPath?: string;
74
+ /** Whether to auto-approve all actions (--yolo flag) */
75
+ autoApprove?: boolean;
76
+ /** Approval mode for tool use */
77
+ approvalMode?: "auto_edit" | "auto" | "manual";
78
+ /** Enable debug output */
79
+ debug?: boolean;
80
+ /** Additional directories to include in workspace context (--include-directories flag) */
81
+ includeDirectories?: string[];
82
+ /** Enable single-turn mode (sets maxSessionTurns=1 in settings.json) */
83
+ singleTurn?: boolean;
84
+ /**
85
+ * Whitelist of MCP server names to make available to the model.
86
+ * If specified, only listed servers will be available.
87
+ * Matches Gemini CLI's allowMCPServers setting.
88
+ */
89
+ allowMCPServers?: string[];
90
+ /**
91
+ * Blacklist of MCP server names to exclude from the model.
92
+ * Takes precedence over allowMCPServers.
93
+ * Matches Gemini CLI's excludeMCPServers setting.
94
+ */
95
+ excludeMCPServers?: string[];
96
+ }
97
+ /**
98
+ * Session information for Gemini runner
99
+ */
100
+ export interface GeminiSessionInfo extends AgentSessionInfo {
101
+ /** Gemini-specific session ID */
102
+ sessionId: string | null;
103
+ }
104
+ /**
105
+ * Event emitter interface for GeminiRunner
106
+ */
107
+ export interface GeminiRunnerEvents {
108
+ message: (message: SDKMessage) => void;
109
+ error: (error: Error) => void;
110
+ complete: (messages: SDKMessage[]) => void;
111
+ streamEvent: (event: import("./schemas.js").GeminiStreamEvent) => void;
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Type definitions for Gemini Runner
3
+ *
4
+ * Event types are derived from Zod schemas in schemas.ts for runtime validation.
5
+ * Configuration and session types remain as interfaces.
6
+ */
7
+ // Re-export schemas for runtime validation
8
+ export {
9
+ // Parsing utilities
10
+ extractToolNameFromId,
11
+ // Event schemas
12
+ GeminiErrorEventSchema, GeminiInitEventSchema, GeminiMessageEventSchema, GeminiResultEventSchema, GeminiStreamEventSchema,
13
+ // Tool parameter schemas
14
+ GeminiToolParametersSchema, GeminiToolResultEventSchema, GeminiToolUseEventSchema,
15
+ // Event type guards
16
+ isGeminiErrorEvent, isGeminiInitEvent, isGeminiMessageEvent, isGeminiResultEvent, isGeminiToolResultEvent, isGeminiToolUseEvent,
17
+ // Tool use type guards
18
+ isListDirectoryTool,
19
+ // Tool result type guards
20
+ isListDirectoryToolResult, isReadFileTool, isReadFileToolResult, isReplaceTool, isReplaceToolResult, isRunShellCommandTool, isRunShellCommandToolResult, isSearchFileContentTool, isSearchFileContentToolResult, isWriteFileTool, isWriteFileToolResult, isWriteTodosTool, isWriteTodosToolResult, ListDirectoryParametersSchema,
21
+ // Tool result schemas
22
+ ListDirectoryToolResultSchema, ListDirectoryToolUseEventSchema, parseAsListDirectoryTool, parseAsReadFileTool, parseAsReplaceTool, parseAsRunShellCommandTool, parseAsSearchFileContentTool, parseAsWriteFileTool, parseAsWriteTodosTool, parseGeminiStreamEvent, ReadFileParametersSchema, ReadFileToolResultSchema, ReadFileToolUseEventSchema, ReplaceParametersSchema, ReplaceToolResultSchema, ReplaceToolUseEventSchema, RunShellCommandParametersSchema, RunShellCommandToolResultSchema, RunShellCommandToolUseEventSchema, SearchFileContentParametersSchema, SearchFileContentToolResultSchema, SearchFileContentToolUseEventSchema, safeParseGeminiStreamEvent, TodoItemSchema, UnknownToolUseEventSchema, WriteFileParametersSchema, WriteFileToolResultSchema, WriteFileToolUseEventSchema, WriteTodosParametersSchema, WriteTodosToolResultSchema, WriteTodosToolUseEventSchema, } from "./schemas.js";
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2FH,2CAA2C;AAC3C,OAAO;AACN,oBAAoB;AACpB,qBAAqB;AACrB,gBAAgB;AAChB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB;AACvB,yBAAyB;AACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB;AACxB,oBAAoB;AACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB;AACpB,uBAAuB;AACvB,mBAAmB;AACnB,0BAA0B;AAC1B,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B;AAC7B,sBAAsB;AACtB,6BAA6B,EAC7B,+BAA+B,EAC/B,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EACjC,iCAAiC,EACjC,mCAAmC,EACnC,0BAA0B,EAC1B,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,GAC5B,MAAM,cAAc,CAAC"}