@agentex/agent 0.0.17 → 0.0.20

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 (171) hide show
  1. package/README.md +140 -22
  2. package/dist/derived.d.ts +69 -0
  3. package/dist/derived.d.ts.map +1 -0
  4. package/dist/derived.js +218 -0
  5. package/dist/derived.js.map +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/providers/_shared/http-agent.d.ts +39 -0
  11. package/dist/providers/_shared/http-agent.d.ts.map +1 -0
  12. package/dist/providers/_shared/http-agent.js +265 -0
  13. package/dist/providers/_shared/http-agent.js.map +1 -0
  14. package/dist/providers/acp/index.d.ts +29 -0
  15. package/dist/providers/acp/index.d.ts.map +1 -0
  16. package/dist/providers/acp/index.js +153 -0
  17. package/dist/providers/acp/index.js.map +1 -0
  18. package/dist/providers/acp/parse.d.ts +22 -0
  19. package/dist/providers/acp/parse.d.ts.map +1 -0
  20. package/dist/providers/acp/parse.js +122 -0
  21. package/dist/providers/acp/parse.js.map +1 -0
  22. package/dist/providers/acp/session.d.ts +36 -0
  23. package/dist/providers/acp/session.d.ts.map +1 -0
  24. package/dist/providers/acp/session.js +487 -0
  25. package/dist/providers/acp/session.js.map +1 -0
  26. package/dist/providers/claude/execute.d.ts.map +1 -1
  27. package/dist/providers/claude/execute.js +22 -9
  28. package/dist/providers/claude/execute.js.map +1 -1
  29. package/dist/providers/claude/index.d.ts.map +1 -1
  30. package/dist/providers/claude/index.js +1 -0
  31. package/dist/providers/claude/index.js.map +1 -1
  32. package/dist/providers/claude/mcp.d.ts +28 -0
  33. package/dist/providers/claude/mcp.d.ts.map +1 -0
  34. package/dist/providers/claude/mcp.js +82 -0
  35. package/dist/providers/claude/mcp.js.map +1 -0
  36. package/dist/providers/claude/parse.d.ts +12 -1
  37. package/dist/providers/claude/parse.d.ts.map +1 -1
  38. package/dist/providers/claude/parse.js +84 -2
  39. package/dist/providers/claude/parse.js.map +1 -1
  40. package/dist/providers/claude/session.d.ts +29 -3
  41. package/dist/providers/claude/session.d.ts.map +1 -1
  42. package/dist/providers/claude/session.js +144 -16
  43. package/dist/providers/claude/session.js.map +1 -1
  44. package/dist/providers/codex/execute.d.ts.map +1 -1
  45. package/dist/providers/codex/execute.js +5 -1
  46. package/dist/providers/codex/execute.js.map +1 -1
  47. package/dist/providers/codex/index.d.ts.map +1 -1
  48. package/dist/providers/codex/index.js +3 -0
  49. package/dist/providers/codex/index.js.map +1 -1
  50. package/dist/providers/codex/modes.d.ts +35 -0
  51. package/dist/providers/codex/modes.d.ts.map +1 -0
  52. package/dist/providers/codex/modes.js +148 -0
  53. package/dist/providers/codex/modes.js.map +1 -0
  54. package/dist/providers/codex/parse.d.ts.map +1 -1
  55. package/dist/providers/codex/parse.js +4 -0
  56. package/dist/providers/codex/parse.js.map +1 -1
  57. package/dist/providers/codex/session.d.ts +41 -2
  58. package/dist/providers/codex/session.d.ts.map +1 -1
  59. package/dist/providers/codex/session.js +331 -16
  60. package/dist/providers/codex/session.js.map +1 -1
  61. package/dist/providers/codex/transcript.d.ts +14 -0
  62. package/dist/providers/codex/transcript.d.ts.map +1 -1
  63. package/dist/providers/codex/transcript.js +15 -1
  64. package/dist/providers/codex/transcript.js.map +1 -1
  65. package/dist/providers/copilot/index.d.ts +15 -0
  66. package/dist/providers/copilot/index.d.ts.map +1 -0
  67. package/dist/providers/copilot/index.js +19 -0
  68. package/dist/providers/copilot/index.js.map +1 -0
  69. package/dist/providers/cursor/index.d.ts.map +1 -1
  70. package/dist/providers/cursor/index.js +1 -0
  71. package/dist/providers/cursor/index.js.map +1 -1
  72. package/dist/providers/cursor/parse.d.ts.map +1 -1
  73. package/dist/providers/cursor/parse.js +1 -0
  74. package/dist/providers/cursor/parse.js.map +1 -1
  75. package/dist/providers/gemini/index.d.ts.map +1 -1
  76. package/dist/providers/gemini/index.js +16 -20
  77. package/dist/providers/gemini/index.js.map +1 -1
  78. package/dist/providers/openclaw/execute.d.ts +5 -0
  79. package/dist/providers/openclaw/execute.d.ts.map +1 -1
  80. package/dist/providers/openclaw/execute.js +13 -173
  81. package/dist/providers/openclaw/execute.js.map +1 -1
  82. package/dist/providers/openclaw/index.d.ts.map +1 -1
  83. package/dist/providers/openclaw/index.js +1 -0
  84. package/dist/providers/openclaw/index.js.map +1 -1
  85. package/dist/providers/opencode/event-parse.d.ts +23 -0
  86. package/dist/providers/opencode/event-parse.d.ts.map +1 -0
  87. package/dist/providers/opencode/event-parse.js +128 -0
  88. package/dist/providers/opencode/event-parse.js.map +1 -0
  89. package/dist/providers/opencode/http-session.d.ts +4 -0
  90. package/dist/providers/opencode/http-session.d.ts.map +1 -0
  91. package/dist/providers/opencode/http-session.js +376 -0
  92. package/dist/providers/opencode/http-session.js.map +1 -0
  93. package/dist/providers/opencode/index.d.ts.map +1 -1
  94. package/dist/providers/opencode/index.js +6 -1
  95. package/dist/providers/opencode/index.js.map +1 -1
  96. package/dist/providers/opencode/parse.d.ts.map +1 -1
  97. package/dist/providers/opencode/parse.js +1 -0
  98. package/dist/providers/opencode/parse.js.map +1 -1
  99. package/dist/providers/opencode/server.d.ts +8 -0
  100. package/dist/providers/opencode/server.d.ts.map +1 -0
  101. package/dist/providers/opencode/server.js +0 -0
  102. package/dist/providers/opencode/server.js.map +1 -0
  103. package/dist/providers/pi/index.d.ts.map +1 -1
  104. package/dist/providers/pi/index.js +6 -1
  105. package/dist/providers/pi/index.js.map +1 -1
  106. package/dist/providers/pi/parse.d.ts.map +1 -1
  107. package/dist/providers/pi/parse.js +1 -0
  108. package/dist/providers/pi/parse.js.map +1 -1
  109. package/dist/providers/pi/session.d.ts +40 -0
  110. package/dist/providers/pi/session.d.ts.map +1 -0
  111. package/dist/providers/pi/session.js +328 -0
  112. package/dist/providers/pi/session.js.map +1 -0
  113. package/dist/providers/process/index.d.ts.map +1 -1
  114. package/dist/providers/process/index.js +1 -0
  115. package/dist/providers/process/index.js.map +1 -1
  116. package/dist/registry.d.ts +1 -0
  117. package/dist/registry.d.ts.map +1 -1
  118. package/dist/registry.js +6 -0
  119. package/dist/registry.js.map +1 -1
  120. package/dist/types.d.ts +185 -4
  121. package/dist/types.d.ts.map +1 -1
  122. package/dist/types.js.map +1 -1
  123. package/dist/utils/tool-names.d.ts +24 -0
  124. package/dist/utils/tool-names.d.ts.map +1 -0
  125. package/dist/utils/tool-names.js +50 -0
  126. package/dist/utils/tool-names.js.map +1 -0
  127. package/package.json +22 -13
  128. package/dist/providers/claude/test.d.ts +0 -3
  129. package/dist/providers/claude/test.d.ts.map +0 -1
  130. package/dist/providers/claude/test.js +0 -167
  131. package/dist/providers/claude/test.js.map +0 -1
  132. package/dist/providers/codex/test.d.ts +0 -3
  133. package/dist/providers/codex/test.d.ts.map +0 -1
  134. package/dist/providers/codex/test.js +0 -74
  135. package/dist/providers/codex/test.js.map +0 -1
  136. package/dist/providers/cursor/test.d.ts +0 -3
  137. package/dist/providers/cursor/test.d.ts.map +0 -1
  138. package/dist/providers/cursor/test.js +0 -58
  139. package/dist/providers/cursor/test.js.map +0 -1
  140. package/dist/providers/gemini/codec.d.ts +0 -3
  141. package/dist/providers/gemini/codec.d.ts.map +0 -1
  142. package/dist/providers/gemini/codec.js +0 -47
  143. package/dist/providers/gemini/codec.js.map +0 -1
  144. package/dist/providers/gemini/execute.d.ts +0 -3
  145. package/dist/providers/gemini/execute.d.ts.map +0 -1
  146. package/dist/providers/gemini/execute.js +0 -256
  147. package/dist/providers/gemini/execute.js.map +0 -1
  148. package/dist/providers/gemini/parse.d.ts +0 -20
  149. package/dist/providers/gemini/parse.d.ts.map +0 -1
  150. package/dist/providers/gemini/parse.js +0 -235
  151. package/dist/providers/gemini/parse.js.map +0 -1
  152. package/dist/providers/gemini/test.d.ts +0 -3
  153. package/dist/providers/gemini/test.d.ts.map +0 -1
  154. package/dist/providers/gemini/test.js +0 -67
  155. package/dist/providers/gemini/test.js.map +0 -1
  156. package/dist/providers/openclaw/test.d.ts +0 -3
  157. package/dist/providers/openclaw/test.d.ts.map +0 -1
  158. package/dist/providers/openclaw/test.js +0 -54
  159. package/dist/providers/openclaw/test.js.map +0 -1
  160. package/dist/providers/opencode/test.d.ts +0 -3
  161. package/dist/providers/opencode/test.d.ts.map +0 -1
  162. package/dist/providers/opencode/test.js +0 -60
  163. package/dist/providers/opencode/test.js.map +0 -1
  164. package/dist/providers/pi/test.d.ts +0 -3
  165. package/dist/providers/pi/test.d.ts.map +0 -1
  166. package/dist/providers/pi/test.js +0 -60
  167. package/dist/providers/pi/test.js.map +0 -1
  168. package/dist/utils/model-cache.d.ts +0 -11
  169. package/dist/utils/model-cache.d.ts.map +0 -1
  170. package/dist/utils/model-cache.js +0 -17
  171. package/dist/utils/model-cache.js.map +0 -1
@@ -1,256 +0,0 @@
1
- import * as path from "node:path";
2
- import { findBinary } from "../../utils/binary.js";
3
- import { buildEnv, ensurePathInEnv } from "../../utils/env.js";
4
- import { runChildProcess, deriveErrorCode } from "../../utils/process.js";
5
- import { detectAuth } from "../../utils/auth.js";
6
- import { injectHomeSkills } from "../../utils/skills.js";
7
- import { resolveInstructions } from "../../utils/instructions.js";
8
- import { prepareWorkspace } from "../../utils/workspace.js";
9
- import { uuidv7 } from "../../utils/uuid.js";
10
- import { parseGeminiJsonl, parseGeminiStreamLine, isGeminiUnknownSessionError, isGeminiAuthRequired, isGeminiTurnLimit, } from "./parse.js";
11
- export async function executeGeminiProvider(ctx) {
12
- const runId = ctx.runId ?? uuidv7();
13
- let cwd = ctx.cwd ?? process.cwd();
14
- const model = ctx.model ?? ctx.config?.model;
15
- const config = ctx.config ?? {};
16
- const startedAt = new Date().toISOString();
17
- // 1. Resolve binary
18
- ctx.onLifecycle?.({ phase: "preparing", step: "binary" });
19
- let resolvedBinary;
20
- try {
21
- resolvedBinary = await findBinary("gemini", config.command);
22
- }
23
- catch (err) {
24
- const errorMessage = err instanceof Error ? err.message : "Binary not found";
25
- ctx.onLifecycle?.({ phase: "error", message: errorMessage });
26
- return {
27
- runId,
28
- exitCode: null,
29
- signal: null,
30
- status: "failed",
31
- startedAt,
32
- completedAt: new Date().toISOString(),
33
- durationMs: Date.now() - new Date(startedAt).getTime(),
34
- errorMessage,
35
- errorCode: "binary_not_found",
36
- costUsd: null,
37
- model: null,
38
- summary: null,
39
- sessionParams: null,
40
- sessionDisplayId: null,
41
- clearSession: false,
42
- billingType: null,
43
- };
44
- }
45
- // 2. Workspace isolation
46
- let workspace;
47
- if (config.workspace) {
48
- ctx.onLifecycle?.({ phase: "preparing", step: "workspace" });
49
- workspace = await prepareWorkspace(cwd, config.workspace);
50
- cwd = workspace.cwd;
51
- }
52
- // 3. Build env & detect auth/billing
53
- ctx.onLifecycle?.({ phase: "preparing", step: "auth" });
54
- const env = buildEnv(ctx.env);
55
- ensurePathInEnv(env);
56
- const billingType = detectAuth("gemini", env).billingType;
57
- // 3. Resolve instructions
58
- ctx.onLifecycle?.({ phase: "preparing", step: "instructions" });
59
- const instructions = await resolveInstructions(config.instructionsFile);
60
- const fullPrompt = instructions ? `${instructions}\n\n${ctx.prompt}` : ctx.prompt;
61
- // 4. Inject skills into ~/.gemini/skills/
62
- ctx.onLifecycle?.({ phase: "preparing", step: "skills" });
63
- if (config.skillDirs && config.skillDirs.length > 0) {
64
- try {
65
- await injectHomeSkills(config.skillDirs, "gemini");
66
- }
67
- catch {
68
- // Non-fatal
69
- }
70
- }
71
- // 4. Determine session resume
72
- const sessionParams = ctx.sessionParams ?? null;
73
- const sessionId = (() => {
74
- if (!sessionParams)
75
- return null;
76
- const id = sessionParams["sessionId"] ??
77
- sessionParams["session_id"] ??
78
- sessionParams["checkpoint_id"];
79
- if (!id || typeof id !== "string")
80
- return null;
81
- const sessionCwd = sessionParams["cwd"];
82
- if (sessionCwd && path.resolve(sessionCwd) !== path.resolve(cwd))
83
- return null;
84
- return id;
85
- })();
86
- // 5. Build args
87
- const buildArgs = (resumeSessionId) => {
88
- const args = [...resolvedBinary.prefixArgs, "--output-format", "stream-json"];
89
- if (resumeSessionId)
90
- args.push("--resume", resumeSessionId);
91
- if (model)
92
- args.push("--model", model);
93
- if (config.skipPermissions !== false) {
94
- args.push("--approval-mode", "yolo");
95
- }
96
- if (config.sandbox) {
97
- args.push("--sandbox");
98
- }
99
- else {
100
- args.push("--sandbox=none");
101
- }
102
- if (config.extraArgs)
103
- args.push(...config.extraArgs);
104
- args.push("--prompt", fullPrompt);
105
- return args;
106
- };
107
- // 6. Run attempt
108
- const runAttempt = async (resumeSessionId) => {
109
- const args = buildArgs(resumeSessionId);
110
- let lineBuffer = "";
111
- ctx.onLifecycle?.({ phase: "spawning" });
112
- const proc = await runChildProcess({
113
- runId,
114
- command: resolvedBinary.bin,
115
- args,
116
- cwd,
117
- env,
118
- timeoutSec: config.timeoutSec,
119
- graceSec: config.graceSec,
120
- onStart: (pid) => {
121
- ctx.onLifecycle?.({ phase: "running", pid });
122
- ctx.onStart?.(pid);
123
- },
124
- signal: ctx.signal,
125
- onOutput: async (stream, chunk) => {
126
- if (ctx.onOutput) {
127
- try {
128
- await ctx.onOutput(stream, chunk);
129
- }
130
- catch { /* swallow */ }
131
- }
132
- if (stream === "stdout" && ctx.onEvent) {
133
- lineBuffer += chunk;
134
- const lines = lineBuffer.split("\n");
135
- lineBuffer = lines.pop() ?? "";
136
- for (const line of lines) {
137
- const trimmed = line.trim();
138
- if (!trimmed)
139
- continue;
140
- for (const event of parseGeminiStreamLine(trimmed)) {
141
- try {
142
- await ctx.onEvent(event);
143
- }
144
- catch { /* swallow */ }
145
- }
146
- }
147
- }
148
- },
149
- });
150
- if (lineBuffer.trim() && ctx.onEvent) {
151
- for (const event of parseGeminiStreamLine(lineBuffer.trim())) {
152
- try {
153
- await ctx.onEvent(event);
154
- }
155
- catch { /* swallow */ }
156
- }
157
- }
158
- return proc;
159
- };
160
- // 7. Initial attempt
161
- let proc = await runAttempt(sessionId);
162
- let clearSession = false;
163
- // 8. Check for unknown session — retry once
164
- if (sessionId &&
165
- !proc.timedOut &&
166
- (proc.exitCode ?? 0) !== 0 &&
167
- isGeminiUnknownSessionError(proc.stdout, proc.stderr)) {
168
- proc = await runAttempt(null);
169
- clearSession = true;
170
- }
171
- // 9. Parse result
172
- const parsed = parseGeminiJsonl(proc.stdout);
173
- const processErrorCode = deriveErrorCode(proc);
174
- let errorCode = processErrorCode;
175
- if (!errorCode && isGeminiAuthRequired(proc.stdout, proc.stderr)) {
176
- errorCode = "auth_required";
177
- if (ctx.onEvent) {
178
- try {
179
- await ctx.onEvent({
180
- type: "auth_required",
181
- httpStatus: null,
182
- reason: "missing",
183
- loginCommand: "gemini",
184
- message: parsed.errorMessage,
185
- timestamp: new Date().toISOString(),
186
- providerType: "gemini",
187
- sessionId: parsed.sessionId,
188
- messageId: null,
189
- eventId: null,
190
- turnId: null,
191
- parentToolCallId: null,
192
- raw: {},
193
- });
194
- }
195
- catch { /* swallow */ }
196
- }
197
- }
198
- if (!errorCode && isGeminiTurnLimit(proc.exitCode)) {
199
- errorCode = "max_turns";
200
- clearSession = true;
201
- }
202
- const errorMessage = (() => {
203
- if (proc.timedOut)
204
- return `Timed out after ${config.timeoutSec ?? 0}s`;
205
- if (errorCode === "auth_required")
206
- return "Gemini requires authentication. Run `gemini auth login`.";
207
- if (parsed.errorMessage)
208
- return parsed.errorMessage;
209
- if ((proc.exitCode ?? 0) !== 0 && !parsed.summary) {
210
- const stderrLine = proc.stderr.split(/\r?\n/).map((l) => l.trim()).find(Boolean);
211
- return stderrLine ?? `Gemini exited with code ${proc.exitCode ?? -1}`;
212
- }
213
- return null;
214
- })();
215
- const resolvedSessionId = parsed.sessionId;
216
- const resultSessionParams = resolvedSessionId ? { sessionId: resolvedSessionId, cwd } : null;
217
- const completedAt = new Date().toISOString();
218
- const resolvedModel = parsed.model ?? model ?? null;
219
- const status = proc.aborted ? "aborted"
220
- : proc.timedOut ? "timeout"
221
- : (errorCode || errorMessage) ? "failed"
222
- : "completed";
223
- if (status === "completed") {
224
- ctx.onLifecycle?.({ phase: "completed" });
225
- }
226
- else if (status === "aborted") {
227
- ctx.onLifecycle?.({ phase: "cancelled" });
228
- }
229
- else {
230
- ctx.onLifecycle?.({ phase: "error", message: errorMessage ?? "Unknown error" });
231
- }
232
- return {
233
- runId,
234
- exitCode: proc.exitCode,
235
- signal: proc.signal ?? null,
236
- status,
237
- startedAt,
238
- completedAt,
239
- durationMs: new Date(completedAt).getTime() - new Date(startedAt).getTime(),
240
- errorMessage,
241
- errorCode,
242
- usage: parsed.usage && resolvedModel
243
- ? { [resolvedModel]: { inputTokens: parsed.usage.inputTokens, outputTokens: parsed.usage.outputTokens, cachedInputTokens: parsed.usage.cachedInputTokens } }
244
- : undefined,
245
- costUsd: parsed.costUsd,
246
- model: resolvedModel,
247
- summary: parsed.summary,
248
- sessionParams: resultSessionParams,
249
- sessionDisplayId: resolvedSessionId,
250
- clearSession,
251
- billingType,
252
- raw: null,
253
- workspace,
254
- };
255
- }
256
- //# sourceMappingURL=execute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/providers/gemini/execute.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { StreamEvent } from "../../types.js";
2
- export interface GeminiParsedResult {
3
- sessionId: string | null;
4
- model: string | null;
5
- usage: {
6
- inputTokens: number;
7
- outputTokens: number;
8
- cachedInputTokens: number;
9
- } | null;
10
- costUsd: number | null;
11
- summary: string | null;
12
- isError: boolean;
13
- errorMessage: string | null;
14
- }
15
- export declare function parseGeminiJsonl(stdout: string): GeminiParsedResult;
16
- export declare function parseGeminiStreamLine(line: string): StreamEvent[];
17
- export declare function isGeminiUnknownSessionError(stdout: string, stderr: string): boolean;
18
- export declare function isGeminiAuthRequired(stdout: string, stderr: string): boolean;
19
- export declare function isGeminiTurnLimit(exitCode: number | null): boolean;
20
- //# sourceMappingURL=parse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiBzE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAqFD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAqFnE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAoEjE;AAKD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAElE"}
@@ -1,235 +0,0 @@
1
- const PROVIDER_TYPE = "gemini";
2
- function stubBase(event, sessionId = null) {
3
- return {
4
- timestamp: new Date().toISOString(),
5
- providerType: PROVIDER_TYPE,
6
- sessionId,
7
- messageId: null,
8
- eventId: null,
9
- turnId: null,
10
- parentToolCallId: null,
11
- raw: event,
12
- };
13
- }
14
- function parseJson(line) {
15
- try {
16
- const parsed = JSON.parse(line);
17
- if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
18
- return parsed;
19
- }
20
- }
21
- catch {
22
- // Skip malformed lines
23
- }
24
- return null;
25
- }
26
- function asString(value, fallback) {
27
- return typeof value === "string" ? value : fallback;
28
- }
29
- function asNumber(value, fallback) {
30
- return typeof value === "number" && Number.isFinite(value) ? value : fallback;
31
- }
32
- function parseObject(value) {
33
- if (typeof value === "object" && value !== null && !Array.isArray(value)) {
34
- return value;
35
- }
36
- return {};
37
- }
38
- function readSessionId(event) {
39
- return (asString(event["session_id"], "").trim() ||
40
- asString(event["sessionId"], "").trim() ||
41
- asString(event["sessionID"], "").trim() ||
42
- asString(event["checkpoint_id"], "").trim() ||
43
- asString(event["thread_id"], "").trim() ||
44
- null);
45
- }
46
- function collectMessageText(message) {
47
- if (typeof message === "string") {
48
- const trimmed = message.trim();
49
- return trimmed ? [trimmed] : [];
50
- }
51
- const record = parseObject(message);
52
- const direct = asString(record["text"], "").trim();
53
- const lines = direct ? [direct] : [];
54
- const content = Array.isArray(record["content"]) ? record["content"] : [];
55
- for (const partRaw of content) {
56
- const part = parseObject(partRaw);
57
- const type = asString(part["type"], "").trim();
58
- if (type === "output_text" || type === "text" || type === "content") {
59
- const text = asString(part["text"], "").trim() || asString(part["content"], "").trim();
60
- if (text)
61
- lines.push(text);
62
- }
63
- }
64
- return lines;
65
- }
66
- function accumulateUsage(target, usageRaw) {
67
- const usage = parseObject(usageRaw);
68
- const usageMetadata = parseObject(usage["usageMetadata"]);
69
- const source = Object.keys(usageMetadata).length > 0 ? usageMetadata : usage;
70
- target.inputTokens += asNumber(source["input_tokens"], asNumber(source["inputTokens"], asNumber(source["promptTokenCount"], 0)));
71
- target.cachedInputTokens += asNumber(source["cached_input_tokens"], asNumber(source["cachedInputTokens"], asNumber(source["cachedContentTokenCount"], 0)));
72
- target.outputTokens += asNumber(source["output_tokens"], asNumber(source["outputTokens"], asNumber(source["candidatesTokenCount"], 0)));
73
- }
74
- export function parseGeminiJsonl(stdout) {
75
- let sessionId = null;
76
- let model = null;
77
- const messages = [];
78
- let errorMessage = null;
79
- let costUsd = null;
80
- const usage = { inputTokens: 0, cachedInputTokens: 0, outputTokens: 0 };
81
- let hasUsage = false;
82
- for (const rawLine of stdout.split(/\r?\n/)) {
83
- const line = rawLine.trim();
84
- if (!line)
85
- continue;
86
- const event = parseJson(line);
87
- if (!event)
88
- continue;
89
- const foundSessionId = readSessionId(event);
90
- if (foundSessionId)
91
- sessionId = foundSessionId;
92
- const type = asString(event["type"], "").trim();
93
- if (type === "system" && asString(event["subtype"], "").trim() === "init") {
94
- model = asString(event["model"], "").trim() || model;
95
- continue;
96
- }
97
- if (type === "assistant") {
98
- messages.push(...collectMessageText(event["message"]));
99
- continue;
100
- }
101
- if (type === "result") {
102
- accumulateUsage(usage, event["usage"] ?? event["usageMetadata"]);
103
- hasUsage = true;
104
- const resultText = asString(event["result"], "").trim() || asString(event["text"], "").trim();
105
- if (resultText && messages.length === 0)
106
- messages.push(resultText);
107
- costUsd = asNumber(event["total_cost_usd"], asNumber(event["cost_usd"], asNumber(event["cost"], costUsd ?? 0))) || costUsd;
108
- model = asString(event["model"], "").trim() || model;
109
- const isError = event["is_error"] === true || asString(event["subtype"], "").toLowerCase() === "error";
110
- if (isError) {
111
- const text = asString(event["error"] ?? event["message"] ?? event["result"], "").trim();
112
- if (text)
113
- errorMessage = text;
114
- }
115
- continue;
116
- }
117
- if (type === "error") {
118
- const text = asString(event["message"] ?? event["error"], "").trim();
119
- if (text)
120
- errorMessage = text;
121
- continue;
122
- }
123
- if (type === "system") {
124
- const subtype = asString(event["subtype"], "").trim().toLowerCase();
125
- if (subtype === "error") {
126
- const text = asString(event["message"] ?? event["error"], "").trim();
127
- if (text)
128
- errorMessage = text;
129
- }
130
- continue;
131
- }
132
- if (type === "text") {
133
- const part = parseObject(event["part"]);
134
- const text = asString(part["text"], "").trim();
135
- if (text)
136
- messages.push(text);
137
- continue;
138
- }
139
- if (type === "step_finish" || event["usage"] || event["usageMetadata"]) {
140
- accumulateUsage(usage, event["usage"] ?? event["usageMetadata"]);
141
- hasUsage = true;
142
- costUsd = asNumber(event["total_cost_usd"], asNumber(event["cost_usd"], asNumber(event["cost"], costUsd ?? 0))) || costUsd;
143
- continue;
144
- }
145
- }
146
- return {
147
- sessionId,
148
- model,
149
- costUsd,
150
- usage: hasUsage ? usage : null,
151
- summary: messages.join("\n\n").trim() || null,
152
- isError: errorMessage !== null,
153
- errorMessage,
154
- };
155
- }
156
- export function parseGeminiStreamLine(line) {
157
- const event = parseJson(line);
158
- if (!event)
159
- return [];
160
- const type = asString(event["type"], "").trim();
161
- const sessionId = readSessionId(event);
162
- const base = stubBase(event, sessionId);
163
- if (type === "system" && asString(event["subtype"], "").trim() === "init") {
164
- return [{
165
- type: "system",
166
- subtype: "init",
167
- model: asString(event["model"], "") || null,
168
- cwd: null,
169
- tools: null,
170
- permissionMode: null,
171
- ...base,
172
- }];
173
- }
174
- if (type === "assistant") {
175
- const events = [];
176
- const message = parseObject(event["message"]);
177
- const content = Array.isArray(message["content"]) ? message["content"] : [];
178
- for (const entry of content) {
179
- if (typeof entry !== "object" || entry === null || Array.isArray(entry))
180
- continue;
181
- const block = entry;
182
- const blockType = asString(block["type"], "");
183
- if (blockType === "text") {
184
- events.push({ type: "assistant", text: asString(block["text"], ""), ...base });
185
- }
186
- else if (blockType === "tool_use") {
187
- events.push({
188
- type: "tool_call",
189
- toolCallId: asString(block["id"], "") || asString(block["tool_use_id"], "") || null,
190
- name: asString(block["name"], ""),
191
- input: block["input"],
192
- ...base,
193
- });
194
- }
195
- else if (blockType === "tool_result") {
196
- events.push({
197
- type: "tool_result",
198
- toolCallId: asString(block["tool_use_id"], "") || null,
199
- content: asString(block["content"], ""),
200
- isError: block["is_error"] === true,
201
- exitCode: null,
202
- ...base,
203
- });
204
- }
205
- }
206
- return events;
207
- }
208
- if (type === "result") {
209
- return [{
210
- type: "result",
211
- text: asString(event["result"], ""),
212
- costUsd: typeof event["total_cost_usd"] === "number" ? event["total_cost_usd"] : null,
213
- isError: event["is_error"] === true,
214
- stopReason: null,
215
- terminalReason: null,
216
- numTurns: null,
217
- durationMs: null,
218
- ...base,
219
- }];
220
- }
221
- // Forward-compat: surface unknown wire events rather than dropping them.
222
- return [{ type: "unknown", subtype: type, ...base }];
223
- }
224
- const GEMINI_AUTH_RE = /(?:not\s+authenticated|api[_ ]?key\s+(?:required|missing|invalid)|authentication\s+required|unauthorized|not\s+logged\s+in|run\s+`?gemini\s+auth)/i;
225
- const GEMINI_UNKNOWN_SESSION_RE = /unknown\s+session|session\s+.*\s+not\s+found|resume\s+.*\s+not\s+found|checkpoint\s+.*\s+not\s+found|cannot\s+resume|failed\s+to\s+resume/i;
226
- export function isGeminiUnknownSessionError(stdout, stderr) {
227
- return GEMINI_UNKNOWN_SESSION_RE.test(stdout) || GEMINI_UNKNOWN_SESSION_RE.test(stderr);
228
- }
229
- export function isGeminiAuthRequired(stdout, stderr) {
230
- return GEMINI_AUTH_RE.test(stdout) || GEMINI_AUTH_RE.test(stderr);
231
- }
232
- export function isGeminiTurnLimit(exitCode) {
233
- return exitCode === 53;
234
- }
235
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/providers/gemini/parse.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { EnvironmentTestContext, EnvironmentTestResult } from "../../types.js";
2
- export declare function testGeminiEnvironment(ctx: EnvironmentTestContext): Promise<EnvironmentTestResult>;
3
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAoB,MAAM,gBAAgB,CAAC;AAUtG,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAiEhC"}
@@ -1,67 +0,0 @@
1
- import { findBinary } from "../../utils/binary.js";
2
- import { resolveAuthForProvider } from "../../utils/auth.js";
3
- function summarizeStatus(checks) {
4
- if (checks.some((c) => c.level === "error"))
5
- return "fail";
6
- if (checks.some((c) => c.level === "warn"))
7
- return "warn";
8
- return "pass";
9
- }
10
- export async function testGeminiEnvironment(ctx) {
11
- const checks = [];
12
- const config = (ctx.config ?? {});
13
- const command = typeof config["command"] === "string" ? config["command"] : undefined;
14
- try {
15
- await findBinary("gemini", command);
16
- checks.push({
17
- code: "gemini_command_resolvable",
18
- level: "info",
19
- message: "Gemini binary is resolvable",
20
- });
21
- }
22
- catch (err) {
23
- checks.push({
24
- code: "gemini_command_unresolvable",
25
- level: "error",
26
- message: err instanceof Error ? err.message : "Gemini binary not found",
27
- hint: "Install the Gemini CLI and ensure it's on your PATH.",
28
- });
29
- }
30
- const callerEnv = typeof config["env"] === "object" && config["env"] !== null
31
- ? config["env"]
32
- : undefined;
33
- const auth = await resolveAuthForProvider("gemini", { env: callerEnv });
34
- const apiKey = auth.options.find((o) => o.method === "api_key" && o.present === true);
35
- const subscription = auth.options.find((o) => o.method === "subscription");
36
- if (apiKey) {
37
- const varName = apiKey.source.kind === "env" ? apiKey.source.var : "an API key";
38
- checks.push({
39
- code: "gemini_api_key_present",
40
- level: "info",
41
- message: `${varName} is set; Gemini will use API-key billing.`,
42
- });
43
- }
44
- if (subscription?.present === true) {
45
- checks.push({
46
- code: "gemini_subscription_credentials_present",
47
- level: "info",
48
- message: "Gemini login credentials detected on disk.",
49
- });
50
- }
51
- if (!apiKey && subscription?.present !== true) {
52
- checks.push({
53
- code: "gemini_no_auth_detected",
54
- level: "warn",
55
- message: "No Gemini authentication detected.",
56
- hint: "Run `gemini auth login` or set GEMINI_API_KEY / GOOGLE_API_KEY.",
57
- });
58
- }
59
- return {
60
- providerType: ctx.providerType,
61
- status: summarizeStatus(checks),
62
- auth,
63
- checks,
64
- testedAt: new Date().toISOString(),
65
- };
66
- }
67
- //# sourceMappingURL=test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/providers/gemini/test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { EnvironmentTestContext, EnvironmentTestResult } from "../../types.js";
2
- export declare function testOpenclawEnvironment(ctx: EnvironmentTestContext): Promise<EnvironmentTestResult>;
3
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/providers/openclaw/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIhG,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAqDhC"}