jinn-cli 0.7.7 → 0.8.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.
Files changed (128) hide show
  1. package/dist/bin/jimmy.js +2 -1
  2. package/dist/bin/jimmy.js.map +1 -1
  3. package/dist/package.json +54 -0
  4. package/dist/src/cli/__tests__/migrate.test.d.ts +2 -0
  5. package/dist/src/cli/__tests__/migrate.test.d.ts.map +1 -0
  6. package/dist/src/cli/__tests__/migrate.test.js +79 -0
  7. package/dist/src/cli/__tests__/migrate.test.js.map +1 -0
  8. package/dist/src/cli/migrate.d.ts.map +1 -1
  9. package/dist/src/cli/migrate.js +3 -2
  10. package/dist/src/cli/migrate.js.map +1 -1
  11. package/dist/src/connectors/telegram/__tests__/connector.test.d.ts +2 -0
  12. package/dist/src/connectors/telegram/__tests__/connector.test.d.ts.map +1 -0
  13. package/dist/src/connectors/telegram/__tests__/connector.test.js +257 -0
  14. package/dist/src/connectors/telegram/__tests__/connector.test.js.map +1 -0
  15. package/dist/src/connectors/telegram/__tests__/format.test.d.ts +2 -0
  16. package/dist/src/connectors/telegram/__tests__/format.test.d.ts.map +1 -0
  17. package/dist/src/connectors/telegram/__tests__/format.test.js +79 -0
  18. package/dist/src/connectors/telegram/__tests__/format.test.js.map +1 -0
  19. package/dist/src/connectors/telegram/__tests__/threads.test.d.ts +2 -0
  20. package/dist/src/connectors/telegram/__tests__/threads.test.d.ts.map +1 -0
  21. package/dist/src/connectors/telegram/__tests__/threads.test.js +51 -0
  22. package/dist/src/connectors/telegram/__tests__/threads.test.js.map +1 -0
  23. package/dist/src/connectors/telegram/format.d.ts +12 -0
  24. package/dist/src/connectors/telegram/format.d.ts.map +1 -0
  25. package/dist/src/connectors/telegram/format.js +61 -0
  26. package/dist/src/connectors/telegram/format.js.map +1 -0
  27. package/dist/src/connectors/telegram/index.d.ts +26 -0
  28. package/dist/src/connectors/telegram/index.d.ts.map +1 -0
  29. package/dist/src/connectors/telegram/index.js +185 -0
  30. package/dist/src/connectors/telegram/index.js.map +1 -0
  31. package/dist/src/connectors/telegram/threads.d.ts +29 -0
  32. package/dist/src/connectors/telegram/threads.d.ts.map +1 -0
  33. package/dist/src/connectors/telegram/threads.js +26 -0
  34. package/dist/src/connectors/telegram/threads.js.map +1 -0
  35. package/dist/src/cron/runner.js.map +1 -1
  36. package/dist/src/engines/__tests__/gemini.test.d.ts +2 -0
  37. package/dist/src/engines/__tests__/gemini.test.d.ts.map +1 -0
  38. package/dist/src/engines/__tests__/gemini.test.js +404 -0
  39. package/dist/src/engines/__tests__/gemini.test.js.map +1 -0
  40. package/dist/src/engines/gemini.d.ts +32 -0
  41. package/dist/src/engines/gemini.d.ts.map +1 -0
  42. package/dist/src/engines/gemini.js +328 -0
  43. package/dist/src/engines/gemini.js.map +1 -0
  44. package/dist/src/gateway/__tests__/org-update.test.d.ts +2 -0
  45. package/dist/src/gateway/__tests__/org-update.test.d.ts.map +1 -0
  46. package/dist/src/gateway/__tests__/org-update.test.js +99 -0
  47. package/dist/src/gateway/__tests__/org-update.test.js.map +1 -0
  48. package/dist/src/gateway/__tests__/org.test.d.ts +2 -0
  49. package/dist/src/gateway/__tests__/org.test.d.ts.map +1 -0
  50. package/dist/src/gateway/__tests__/org.test.js +77 -0
  51. package/dist/src/gateway/__tests__/org.test.js.map +1 -0
  52. package/dist/src/gateway/__tests__/services.test.d.ts +2 -0
  53. package/dist/src/gateway/__tests__/services.test.d.ts.map +1 -0
  54. package/dist/src/gateway/__tests__/services.test.js +165 -0
  55. package/dist/src/gateway/__tests__/services.test.js.map +1 -0
  56. package/dist/src/gateway/api.d.ts.map +1 -1
  57. package/dist/src/gateway/api.js +61 -14
  58. package/dist/src/gateway/api.js.map +1 -1
  59. package/dist/src/gateway/org.d.ts +7 -0
  60. package/dist/src/gateway/org.d.ts.map +1 -1
  61. package/dist/src/gateway/org.js +58 -0
  62. package/dist/src/gateway/org.js.map +1 -1
  63. package/dist/src/gateway/server.d.ts.map +1 -1
  64. package/dist/src/gateway/server.js +27 -0
  65. package/dist/src/gateway/server.js.map +1 -1
  66. package/dist/src/gateway/services.d.ts +17 -0
  67. package/dist/src/gateway/services.d.ts.map +1 -0
  68. package/dist/src/gateway/services.js +73 -0
  69. package/dist/src/gateway/services.js.map +1 -0
  70. package/dist/src/sessions/__tests__/callbacks.test.js +37 -1
  71. package/dist/src/sessions/__tests__/callbacks.test.js.map +1 -1
  72. package/dist/src/sessions/callbacks.d.ts +2 -0
  73. package/dist/src/sessions/callbacks.d.ts.map +1 -1
  74. package/dist/src/sessions/callbacks.js +4 -2
  75. package/dist/src/sessions/callbacks.js.map +1 -1
  76. package/dist/src/sessions/context.js +8 -1
  77. package/dist/src/sessions/context.js.map +1 -1
  78. package/dist/src/sessions/manager.d.ts.map +1 -1
  79. package/dist/src/sessions/manager.js +8 -5
  80. package/dist/src/sessions/manager.js.map +1 -1
  81. package/dist/src/sessions/registry.d.ts +1 -0
  82. package/dist/src/sessions/registry.d.ts.map +1 -1
  83. package/dist/src/sessions/registry.js +4 -0
  84. package/dist/src/sessions/registry.js.map +1 -1
  85. package/dist/src/shared/types.d.ts +15 -1
  86. package/dist/src/shared/types.d.ts.map +1 -1
  87. package/dist/web/404.html +1 -1
  88. package/dist/web/_next/static/chunks/155-d60b5aa6e01f7738.js +1 -0
  89. package/dist/web/_next/static/chunks/192-8281220a22c7a155.js +1 -0
  90. package/dist/web/_next/static/chunks/379-11f5e4203461fd6a.js +1 -0
  91. package/dist/web/_next/static/chunks/app/chat/page-3a532ea2d0f8b961.js +1 -0
  92. package/dist/web/_next/static/chunks/app/{layout-497d1e93737edeae.js → layout-f5c5165308a903e2.js} +1 -1
  93. package/dist/web/_next/static/chunks/app/org/page-99d1b67b8f17e4d5.js +1 -0
  94. package/dist/web/_next/static/css/214f7107c416b9a3.css +1 -0
  95. package/dist/web/chat.html +1 -1
  96. package/dist/web/chat.txt +5 -5
  97. package/dist/web/cron.html +1 -1
  98. package/dist/web/cron.txt +5 -5
  99. package/dist/web/index.html +1 -1
  100. package/dist/web/index.txt +5 -5
  101. package/dist/web/kanban.html +1 -1
  102. package/dist/web/kanban.txt +5 -5
  103. package/dist/web/logs.html +2 -2
  104. package/dist/web/logs.txt +5 -5
  105. package/dist/web/org.html +1 -1
  106. package/dist/web/org.txt +5 -5
  107. package/dist/web/sessions.html +1 -1
  108. package/dist/web/sessions.txt +4 -4
  109. package/dist/web/settings.html +1 -1
  110. package/dist/web/settings.txt +5 -5
  111. package/dist/web/skills.html +1 -1
  112. package/dist/web/skills.txt +5 -5
  113. package/package.json +5 -3
  114. package/template/AGENTS.md +1 -1
  115. package/template/CLAUDE.md +1 -1
  116. package/template/migrations/0.7.3/MIGRATION.md +63 -0
  117. package/template/migrations/0.7.3/files/AGENTS.md +188 -0
  118. package/template/migrations/0.7.3/files/CLAUDE.md +127 -0
  119. package/template/migrations/0.7.5/MIGRATION.md +78 -0
  120. package/template/migrations/0.8.0/MIGRATION.md +73 -0
  121. package/dist/web/_next/static/chunks/155-5843f8840f40f6f8.js +0 -1
  122. package/dist/web/_next/static/chunks/192-f566317c5713c743.js +0 -1
  123. package/dist/web/_next/static/chunks/660-7b281827cf68988a.js +0 -1
  124. package/dist/web/_next/static/chunks/app/chat/page-01d396112fbc8623.js +0 -1
  125. package/dist/web/_next/static/chunks/app/org/page-b14614ed22c7a80d.js +0 -1
  126. package/dist/web/_next/static/css/29fd6f6f1915cce0.css +0 -1
  127. /package/dist/web/_next/static/{73aF2gsMYJ-t64sWQw1Av → yhgZ2UX_j_Aier68GaRfB}/_buildManifest.js +0 -0
  128. /package/dist/web/_next/static/{73aF2gsMYJ-t64sWQw1Av → yhgZ2UX_j_Aier68GaRfB}/_ssgManifest.js +0 -0
@@ -0,0 +1,404 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { EventEmitter } from "node:events";
3
+ import { GeminiEngine } from "../gemini.js";
4
+ // Mock child_process.spawn
5
+ vi.mock("node:child_process", () => ({
6
+ spawn: vi.fn(),
7
+ }));
8
+ import { spawn } from "node:child_process";
9
+ const mockSpawn = vi.mocked(spawn);
10
+ /** Creates a mock ChildProcess that emits events and has controllable stdout/stderr */
11
+ function createMockProcess() {
12
+ const proc = new EventEmitter();
13
+ proc.stdout = new EventEmitter();
14
+ proc.stderr = new EventEmitter();
15
+ proc.stdin = { end: vi.fn() };
16
+ proc.pid = 12345;
17
+ proc.exitCode = null;
18
+ proc.killed = false;
19
+ proc.kill = vi.fn(() => { proc.killed = true; });
20
+ return proc;
21
+ }
22
+ describe("GeminiEngine", () => {
23
+ let engine;
24
+ beforeEach(() => {
25
+ engine = new GeminiEngine();
26
+ });
27
+ describe("constructor and identity", () => {
28
+ it("should have name 'gemini'", () => {
29
+ expect(engine.name).toBe("gemini");
30
+ });
31
+ it("should implement InterruptibleEngine interface", () => {
32
+ expect(typeof engine.kill).toBe("function");
33
+ expect(typeof engine.isAlive).toBe("function");
34
+ expect(typeof engine.killAll).toBe("function");
35
+ expect(typeof engine.run).toBe("function");
36
+ });
37
+ });
38
+ describe("buildArgs", () => {
39
+ const baseOpts = { prompt: "test prompt", cwd: "/tmp" };
40
+ it("should build fresh args with streaming", () => {
41
+ const args = engine.buildArgs(baseOpts, "test prompt", true);
42
+ expect(args).toEqual(["--output-format", "stream-json", "--yolo", "test prompt"]);
43
+ });
44
+ it("should build fresh args without streaming (json mode)", () => {
45
+ const args = engine.buildArgs(baseOpts, "test prompt", false);
46
+ expect(args).toEqual(["--output-format", "json", "--yolo", "test prompt"]);
47
+ });
48
+ it("should include --model when specified", () => {
49
+ const opts = { ...baseOpts, model: "gemini-2.5-pro" };
50
+ const args = engine.buildArgs(opts, "test prompt", true);
51
+ expect(args).toContain("--model");
52
+ expect(args).toContain("gemini-2.5-pro");
53
+ });
54
+ it("should include --resume when resumeSessionId is set", () => {
55
+ const opts = { ...baseOpts, resumeSessionId: "abc-123" };
56
+ const args = engine.buildArgs(opts, "test prompt", true);
57
+ expect(args).toContain("--resume");
58
+ expect(args).toContain("abc-123");
59
+ });
60
+ it("should append cliFlags", () => {
61
+ const opts = { ...baseOpts, cliFlags: ["--debug", "--verbose"] };
62
+ const args = engine.buildArgs(opts, "test prompt", true);
63
+ expect(args).toContain("--debug");
64
+ expect(args).toContain("--verbose");
65
+ });
66
+ it("should put prompt as the last argument", () => {
67
+ const opts = { ...baseOpts, model: "gemini-2.5-pro", resumeSessionId: "abc-123" };
68
+ const args = engine.buildArgs(opts, "my prompt here", true);
69
+ expect(args[args.length - 1]).toBe("my prompt here");
70
+ });
71
+ });
72
+ describe("processStreamLine", () => {
73
+ it("should return null for empty lines", () => {
74
+ expect(engine.processStreamLine("")).toBeNull();
75
+ expect(engine.processStreamLine(" ")).toBeNull();
76
+ });
77
+ it("should return null for unparseable JSON", () => {
78
+ expect(engine.processStreamLine("not json")).toBeNull();
79
+ });
80
+ it("should parse session.start event", () => {
81
+ const line = JSON.stringify({ type: "session.start", session_id: "gem-abc-123" });
82
+ const result = engine.processStreamLine(line);
83
+ expect(result).toEqual({ type: "session_id", sessionId: "gem-abc-123" });
84
+ });
85
+ it("should parse session.started event (alternative name)", () => {
86
+ const line = JSON.stringify({ type: "session.started", sessionId: "gem-xyz-789" });
87
+ const result = engine.processStreamLine(line);
88
+ expect(result).toEqual({ type: "session_id", sessionId: "gem-xyz-789" });
89
+ });
90
+ it("should parse text events", () => {
91
+ const line = JSON.stringify({ type: "text", text: "Hello world" });
92
+ const result = engine.processStreamLine(line);
93
+ expect(result).toEqual({
94
+ type: "text",
95
+ delta: { type: "text", content: "Hello world" },
96
+ });
97
+ });
98
+ it("should parse content.text events", () => {
99
+ const line = JSON.stringify({ type: "content.text", content: "Some text" });
100
+ const result = engine.processStreamLine(line);
101
+ expect(result).toEqual({
102
+ type: "text",
103
+ delta: { type: "text", content: "Some text" },
104
+ });
105
+ });
106
+ it("should parse text_delta events", () => {
107
+ const line = JSON.stringify({ type: "text_delta", delta: "chunk" });
108
+ const result = engine.processStreamLine(line);
109
+ expect(result).toEqual({
110
+ type: "text",
111
+ delta: { type: "text", content: "chunk" },
112
+ });
113
+ });
114
+ it("should parse tool.start events", () => {
115
+ const line = JSON.stringify({ type: "tool.start", name: "read_file", id: "t-1" });
116
+ const result = engine.processStreamLine(line);
117
+ expect(result).toEqual({
118
+ type: "tool_start",
119
+ delta: { type: "tool_use", content: "Using read_file", toolName: "read_file", toolId: "t-1" },
120
+ });
121
+ });
122
+ it("should parse tool_use events", () => {
123
+ const line = JSON.stringify({ type: "tool_use", tool_name: "shell", tool_id: "t-2" });
124
+ const result = engine.processStreamLine(line);
125
+ expect(result).toEqual({
126
+ type: "tool_start",
127
+ delta: { type: "tool_use", content: "Using shell", toolName: "shell", toolId: "t-2" },
128
+ });
129
+ });
130
+ it("should parse tool.end events", () => {
131
+ const line = JSON.stringify({ type: "tool.end", output: "file contents here" });
132
+ const result = engine.processStreamLine(line);
133
+ expect(result).toEqual({
134
+ type: "tool_end",
135
+ delta: { type: "tool_result", content: "file contents here" },
136
+ });
137
+ });
138
+ it("should parse tool_result events", () => {
139
+ const line = JSON.stringify({ type: "tool_result", result: "command output" });
140
+ const result = engine.processStreamLine(line);
141
+ expect(result).toEqual({
142
+ type: "tool_end",
143
+ delta: { type: "tool_result", content: "command output" },
144
+ });
145
+ });
146
+ it("should parse turn.complete events", () => {
147
+ const line = JSON.stringify({ type: "turn.complete" });
148
+ expect(engine.processStreamLine(line)).toEqual({ type: "turn_complete" });
149
+ });
150
+ it("should parse turn.completed events (alternative name)", () => {
151
+ const line = JSON.stringify({ type: "turn.completed" });
152
+ expect(engine.processStreamLine(line)).toEqual({ type: "turn_complete" });
153
+ });
154
+ it("should parse error events", () => {
155
+ const line = JSON.stringify({ type: "error", message: "Something went wrong" });
156
+ const result = engine.processStreamLine(line);
157
+ expect(result).toEqual({ type: "error", message: "Something went wrong" });
158
+ });
159
+ it("should parse result events as text", () => {
160
+ const line = JSON.stringify({ type: "result", result: "Final answer here" });
161
+ const result = engine.processStreamLine(line);
162
+ expect(result).toEqual({
163
+ type: "text",
164
+ delta: { type: "text", content: "Final answer here" },
165
+ });
166
+ });
167
+ it("should return null for unrecognized event types", () => {
168
+ const line = JSON.stringify({ type: "some_future_event", data: "whatever" });
169
+ expect(engine.processStreamLine(line)).toBeNull();
170
+ });
171
+ });
172
+ describe("system prompt handling", () => {
173
+ it("should prepend system prompt to user prompt in run()", async () => {
174
+ // We test this by verifying buildArgs receives the combined prompt
175
+ // The actual prepending happens in run() before buildArgs is called
176
+ const opts = {
177
+ prompt: "user task",
178
+ systemPrompt: "You are a helpful assistant.",
179
+ cwd: "/tmp",
180
+ };
181
+ // Spy on buildArgs to capture the prompt it receives
182
+ const buildArgsSpy = vi.spyOn(engine, "buildArgs");
183
+ // run() will fail because gemini binary doesn't exist, but that's OK —
184
+ // we just need to verify the prompt was combined before buildArgs is called
185
+ try {
186
+ await engine.run(opts);
187
+ }
188
+ catch {
189
+ // Expected: spawn will fail
190
+ }
191
+ expect(buildArgsSpy).toHaveBeenCalledWith(opts, "You are a helpful assistant.\n\n---\n\nuser task", expect.any(Boolean));
192
+ });
193
+ it("should append attachments to prompt", async () => {
194
+ const opts = {
195
+ prompt: "review this",
196
+ attachments: ["/path/to/file.ts", "/path/to/other.ts"],
197
+ cwd: "/tmp",
198
+ };
199
+ const buildArgsSpy = vi.spyOn(engine, "buildArgs");
200
+ try {
201
+ await engine.run(opts);
202
+ }
203
+ catch {
204
+ // Expected
205
+ }
206
+ expect(buildArgsSpy).toHaveBeenCalledWith(opts, "review this\n\nAttached files:\n- /path/to/file.ts\n- /path/to/other.ts", expect.any(Boolean));
207
+ });
208
+ });
209
+ describe("lifecycle (kill/isAlive/killAll)", () => {
210
+ it("isAlive should return false for unknown session", () => {
211
+ expect(engine.isAlive("nonexistent")).toBe(false);
212
+ });
213
+ it("kill should not throw for unknown session", () => {
214
+ expect(() => engine.kill("nonexistent")).not.toThrow();
215
+ });
216
+ it("killAll should not throw when no processes", () => {
217
+ expect(() => engine.killAll()).not.toThrow();
218
+ });
219
+ });
220
+ describe("run() with mocked spawn", () => {
221
+ afterEach(() => {
222
+ vi.restoreAllMocks();
223
+ });
224
+ it("should resolve with result on successful non-streaming run", async () => {
225
+ const proc = createMockProcess();
226
+ mockSpawn.mockReturnValue(proc);
227
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
228
+ // Simulate JSON output from gemini CLI
229
+ const output = JSON.stringify({ type: "result", result: "Hello! How can I help?", session_id: "gem-s1" });
230
+ proc.stdout.emit("data", Buffer.from(output));
231
+ proc.exitCode = 0;
232
+ proc.emit("close", 0);
233
+ const result = await resultPromise;
234
+ expect(result.result).toBe("Hello! How can I help?");
235
+ expect(result.sessionId).toBe("gem-s1");
236
+ expect(result.error).toBeUndefined();
237
+ });
238
+ it("should resolve with streamed text on streaming run", async () => {
239
+ const proc = createMockProcess();
240
+ mockSpawn.mockReturnValue(proc);
241
+ const deltas = [];
242
+ const resultPromise = engine.run({
243
+ prompt: "hello",
244
+ cwd: "/tmp",
245
+ sessionId: "test-sess",
246
+ onStream: (d) => deltas.push(d),
247
+ });
248
+ // Simulate streaming events
249
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "session.start", session_id: "gem-s2" }) + "\n" +
250
+ JSON.stringify({ type: "text", text: "Hello " }) + "\n" +
251
+ JSON.stringify({ type: "text", text: "world!" }) + "\n" +
252
+ JSON.stringify({ type: "turn.complete" }) + "\n"));
253
+ proc.exitCode = 0;
254
+ proc.emit("close", 0);
255
+ const result = await resultPromise;
256
+ expect(result.sessionId).toBe("gem-s2");
257
+ expect(result.result).toBe("Hello world!");
258
+ expect(result.numTurns).toBe(1);
259
+ expect(result.error).toBeUndefined();
260
+ expect(deltas).toHaveLength(2);
261
+ expect(deltas[0]).toEqual({ type: "text", content: "Hello " });
262
+ expect(deltas[1]).toEqual({ type: "text", content: "world!" });
263
+ });
264
+ it("should handle non-zero exit code as error", async () => {
265
+ const proc = createMockProcess();
266
+ mockSpawn.mockReturnValue(proc);
267
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
268
+ proc.stderr.emit("data", Buffer.from("gemini: command not found"));
269
+ proc.exitCode = 127;
270
+ proc.emit("close", 127);
271
+ const result = await resultPromise;
272
+ expect(result.error).toContain("Gemini exited with code 127");
273
+ expect(result.error).toContain("command not found");
274
+ });
275
+ it("should reject on spawn error", async () => {
276
+ const proc = createMockProcess();
277
+ mockSpawn.mockReturnValue(proc);
278
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
279
+ proc.emit("error", new Error("ENOENT: gemini not found"));
280
+ await expect(resultPromise).rejects.toThrow("Failed to spawn Gemini CLI");
281
+ });
282
+ it("should handle termination reason from kill()", async () => {
283
+ const proc = createMockProcess();
284
+ mockSpawn.mockReturnValue(proc);
285
+ const resultPromise = engine.run({
286
+ prompt: "long task",
287
+ cwd: "/tmp",
288
+ sessionId: "kill-test",
289
+ });
290
+ // Simulate kill during execution
291
+ engine.kill("kill-test", "User cancelled");
292
+ proc.exitCode = null;
293
+ proc.emit("close", null);
294
+ const result = await resultPromise;
295
+ expect(result.error).toBe("User cancelled");
296
+ });
297
+ it("should track live processes and report isAlive correctly", async () => {
298
+ const proc = createMockProcess();
299
+ mockSpawn.mockReturnValue(proc);
300
+ const resultPromise = engine.run({
301
+ prompt: "hello",
302
+ cwd: "/tmp",
303
+ sessionId: "alive-test",
304
+ });
305
+ // Process is running
306
+ expect(engine.isAlive("alive-test")).toBe(true);
307
+ proc.exitCode = 0;
308
+ proc.emit("close", 0);
309
+ await resultPromise;
310
+ // Process has exited
311
+ expect(engine.isAlive("alive-test")).toBe(false);
312
+ });
313
+ it("should stream tool use events", async () => {
314
+ const proc = createMockProcess();
315
+ mockSpawn.mockReturnValue(proc);
316
+ const deltas = [];
317
+ const resultPromise = engine.run({
318
+ prompt: "read file",
319
+ cwd: "/tmp",
320
+ sessionId: "tool-test",
321
+ onStream: (d) => deltas.push(d),
322
+ });
323
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "tool.start", name: "read_file", id: "t-1" }) + "\n" +
324
+ JSON.stringify({ type: "tool.end", output: "file contents" }) + "\n" +
325
+ JSON.stringify({ type: "text", text: "I read the file." }) + "\n"));
326
+ proc.exitCode = 0;
327
+ proc.emit("close", 0);
328
+ const result = await resultPromise;
329
+ expect(result.result).toBe("I read the file.");
330
+ expect(deltas).toHaveLength(3);
331
+ expect(deltas[0].type).toBe("tool_use");
332
+ expect(deltas[0].toolName).toBe("read_file");
333
+ expect(deltas[1].type).toBe("tool_result");
334
+ expect(deltas[2].type).toBe("text");
335
+ });
336
+ it("should use custom bin from opts", async () => {
337
+ const proc = createMockProcess();
338
+ mockSpawn.mockReturnValue(proc);
339
+ const resultPromise = engine.run({
340
+ prompt: "hello",
341
+ cwd: "/tmp",
342
+ bin: "/usr/local/bin/gemini",
343
+ });
344
+ proc.exitCode = 0;
345
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "result", result: "ok" })));
346
+ proc.emit("close", 0);
347
+ await resultPromise;
348
+ expect(mockSpawn).toHaveBeenCalledWith("/usr/local/bin/gemini", expect.any(Array), expect.any(Object));
349
+ });
350
+ it("should default bin to 'gemini'", async () => {
351
+ const proc = createMockProcess();
352
+ mockSpawn.mockReturnValue(proc);
353
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
354
+ proc.exitCode = 0;
355
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "result", result: "ok" })));
356
+ proc.emit("close", 0);
357
+ await resultPromise;
358
+ expect(mockSpawn).toHaveBeenCalledWith("gemini", expect.any(Array), expect.any(Object));
359
+ });
360
+ it("should preserve GEMINI_API_KEY in child env", async () => {
361
+ const proc = createMockProcess();
362
+ mockSpawn.mockReturnValue(proc);
363
+ const origKey = process.env.GEMINI_API_KEY;
364
+ process.env.GEMINI_API_KEY = "test-gemini-key";
365
+ try {
366
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
367
+ proc.exitCode = 0;
368
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "result", result: "ok" })));
369
+ proc.emit("close", 0);
370
+ await resultPromise;
371
+ const spawnEnv = mockSpawn.mock.lastCall?.[2]?.env;
372
+ expect(spawnEnv.GEMINI_API_KEY).toBe("test-gemini-key");
373
+ }
374
+ finally {
375
+ if (origKey !== undefined)
376
+ process.env.GEMINI_API_KEY = origKey;
377
+ else
378
+ delete process.env.GEMINI_API_KEY;
379
+ }
380
+ });
381
+ it("should strip CLAUDE_CODE_ vars from child env", async () => {
382
+ const proc = createMockProcess();
383
+ mockSpawn.mockReturnValue(proc);
384
+ const origVar = process.env.CLAUDE_CODE_SOMETHING;
385
+ process.env.CLAUDE_CODE_SOMETHING = "should-be-stripped";
386
+ try {
387
+ const resultPromise = engine.run({ prompt: "hello", cwd: "/tmp" });
388
+ proc.exitCode = 0;
389
+ proc.stdout.emit("data", Buffer.from(JSON.stringify({ type: "result", result: "ok" })));
390
+ proc.emit("close", 0);
391
+ await resultPromise;
392
+ const spawnEnv = mockSpawn.mock.lastCall?.[2]?.env;
393
+ expect(spawnEnv.CLAUDE_CODE_SOMETHING).toBeUndefined();
394
+ }
395
+ finally {
396
+ if (origVar !== undefined)
397
+ process.env.CLAUDE_CODE_SOMETHING = origVar;
398
+ else
399
+ delete process.env.CLAUDE_CODE_SOMETHING;
400
+ }
401
+ });
402
+ });
403
+ });
404
+ //# sourceMappingURL=gemini.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.test.js","sourceRoot":"","sources":["../../../../src/engines/__tests__/gemini.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { InterruptibleEngine, EngineRunOpts, EngineResult, StreamDelta } from "../shared/types.js";
2
+ export declare class GeminiEngine implements InterruptibleEngine {
3
+ name: "gemini";
4
+ private liveProcesses;
5
+ kill(sessionId: string, reason?: string): void;
6
+ killAll(): void;
7
+ isAlive(sessionId: string): boolean;
8
+ run(opts: EngineRunOpts): Promise<EngineResult>;
9
+ buildArgs(opts: EngineRunOpts, prompt: string, streaming: boolean): string[];
10
+ processStreamLine(line: string): {
11
+ type: "session_id";
12
+ sessionId: string;
13
+ } | {
14
+ type: "text";
15
+ delta: StreamDelta;
16
+ } | {
17
+ type: "tool_start";
18
+ delta: StreamDelta;
19
+ } | {
20
+ type: "tool_end";
21
+ delta: StreamDelta;
22
+ } | {
23
+ type: "error";
24
+ message: string;
25
+ } | {
26
+ type: "turn_complete";
27
+ } | null;
28
+ private parseJsonOutput;
29
+ private buildCleanEnv;
30
+ private signalProcess;
31
+ }
32
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/engines/gemini.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQxG,qBAAa,YAAa,YAAW,mBAAmB;IACtD,IAAI,EAAG,QAAQ,CAAU;IACzB,OAAO,CAAC,aAAa,CAAkC;IAEvD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAgB,GAAG,IAAI;IAcrD,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK7B,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAoLrD,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE;IAW5E,iBAAiB,CACf,IAAI,EAAE,MAAM,GAEV;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACzC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,GACpC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,GAC1C;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,GACxC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAClC;QAAE,IAAI,EAAE,eAAe,CAAA;KAAE,GACzB,IAAI;IAiER,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;CAYtB"}