@evermore.work/adapter-gemini-local 2026.509.0-canary.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 (61) hide show
  1. package/dist/cli/format-event.d.ts +2 -0
  2. package/dist/cli/format-event.d.ts.map +1 -0
  3. package/dist/cli/format-event.js +218 -0
  4. package/dist/cli/format-event.js.map +1 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +2 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/index.d.ts +12 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +58 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/server/execute.d.ts +3 -0
  14. package/dist/server/execute.d.ts.map +1 -0
  15. package/dist/server/execute.js +513 -0
  16. package/dist/server/execute.js.map +1 -0
  17. package/dist/server/execute.remote.test.d.ts +2 -0
  18. package/dist/server/execute.remote.test.d.ts.map +1 -0
  19. package/dist/server/execute.remote.test.js +285 -0
  20. package/dist/server/execute.remote.test.js.map +1 -0
  21. package/dist/server/index.d.ts +7 -0
  22. package/dist/server/index.d.ts.map +1 -0
  23. package/dist/server/index.js +62 -0
  24. package/dist/server/index.js.map +1 -0
  25. package/dist/server/parse.d.ts +38 -0
  26. package/dist/server/parse.d.ts.map +1 -0
  27. package/dist/server/parse.js +260 -0
  28. package/dist/server/parse.js.map +1 -0
  29. package/dist/server/parse.test.d.ts +2 -0
  30. package/dist/server/parse.test.d.ts.map +1 -0
  31. package/dist/server/parse.test.js +117 -0
  32. package/dist/server/parse.test.js.map +1 -0
  33. package/dist/server/skills.d.ts +8 -0
  34. package/dist/server/skills.d.ts.map +1 -0
  35. package/dist/server/skills.js +69 -0
  36. package/dist/server/skills.js.map +1 -0
  37. package/dist/server/test.d.ts +3 -0
  38. package/dist/server/test.d.ts.map +1 -0
  39. package/dist/server/test.js +247 -0
  40. package/dist/server/test.js.map +1 -0
  41. package/dist/server/utils.d.ts +2 -0
  42. package/dist/server/utils.d.ts.map +1 -0
  43. package/dist/server/utils.js +7 -0
  44. package/dist/server/utils.js.map +1 -0
  45. package/dist/ui/build-config.d.ts +3 -0
  46. package/dist/ui/build-config.d.ts.map +1 -0
  47. package/dist/ui/build-config.js +80 -0
  48. package/dist/ui/build-config.js.map +1 -0
  49. package/dist/ui/index.d.ts +3 -0
  50. package/dist/ui/index.d.ts.map +1 -0
  51. package/dist/ui/index.js +3 -0
  52. package/dist/ui/index.js.map +1 -0
  53. package/dist/ui/parse-stdout.d.ts +3 -0
  54. package/dist/ui/parse-stdout.d.ts.map +1 -0
  55. package/dist/ui/parse-stdout.js +261 -0
  56. package/dist/ui/parse-stdout.js.map +1 -0
  57. package/dist/ui/parse-stdout.test.d.ts +2 -0
  58. package/dist/ui/parse-stdout.test.d.ts.map +1 -0
  59. package/dist/ui/parse-stdout.test.js +67 -0
  60. package/dist/ui/parse-stdout.test.js.map +1 -0
  61. package/package.json +54 -0
@@ -0,0 +1,247 @@
1
+ import path from "node:path";
2
+ import { asBoolean, asNumber, asString, asStringArray, ensurePathInEnv, parseObject, } from "@evermore.work/adapter-utils/server-utils";
3
+ import { ensureAdapterExecutionTargetCommandResolvable, maybeRunSandboxInstallCommand, ensureAdapterExecutionTargetDirectory, runAdapterExecutionTargetProcess, describeAdapterExecutionTarget, resolveAdapterExecutionTargetCwd, } from "@evermore.work/adapter-utils/execution-target";
4
+ import { DEFAULT_GEMINI_LOCAL_MODEL, SANDBOX_INSTALL_COMMAND } from "../index.js";
5
+ import { detectGeminiAuthRequired, detectGeminiQuotaExhausted, parseGeminiJsonl } from "./parse.js";
6
+ import { firstNonEmptyLine } from "./utils.js";
7
+ function summarizeStatus(checks) {
8
+ if (checks.some((check) => check.level === "error"))
9
+ return "fail";
10
+ if (checks.some((check) => check.level === "warn"))
11
+ return "warn";
12
+ return "pass";
13
+ }
14
+ function isNonEmpty(value) {
15
+ return typeof value === "string" && value.trim().length > 0;
16
+ }
17
+ function commandLooksLike(command, expected) {
18
+ const base = path.basename(command).toLowerCase();
19
+ return base === expected || base === `${expected}.cmd` || base === `${expected}.exe`;
20
+ }
21
+ function summarizeProbeDetail(stdout, stderr, parsedError) {
22
+ const raw = parsedError?.trim() || firstNonEmptyLine(stderr) || firstNonEmptyLine(stdout);
23
+ if (!raw)
24
+ return null;
25
+ const clean = raw.replace(/\s+/g, " ").trim();
26
+ const max = 240;
27
+ return clean.length > max ? `${clean.slice(0, max - 1)}…` : clean;
28
+ }
29
+ export async function testEnvironment(ctx) {
30
+ const checks = [];
31
+ const config = parseObject(ctx.config);
32
+ const command = asString(config.command, "gemini");
33
+ const target = ctx.executionTarget ?? null;
34
+ const targetIsRemote = target?.kind === "remote";
35
+ const cwd = resolveAdapterExecutionTargetCwd(target, asString(config.cwd, ""), process.cwd());
36
+ const targetLabel = targetIsRemote
37
+ ? ctx.environmentName ?? describeAdapterExecutionTarget(target)
38
+ : null;
39
+ const runId = `gemini-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`;
40
+ if (targetLabel) {
41
+ checks.push({
42
+ code: "gemini_environment_target",
43
+ level: "info",
44
+ message: `Probing inside environment: ${targetLabel}`,
45
+ });
46
+ }
47
+ try {
48
+ await ensureAdapterExecutionTargetDirectory(runId, target, cwd, {
49
+ cwd,
50
+ env: {},
51
+ createIfMissing: true,
52
+ });
53
+ checks.push({
54
+ code: "gemini_cwd_valid",
55
+ level: "info",
56
+ message: `Working directory is valid: ${cwd}`,
57
+ });
58
+ }
59
+ catch (err) {
60
+ checks.push({
61
+ code: "gemini_cwd_invalid",
62
+ level: "error",
63
+ message: err instanceof Error ? err.message : "Invalid working directory",
64
+ detail: cwd,
65
+ });
66
+ }
67
+ const envConfig = parseObject(config.env);
68
+ const env = {};
69
+ for (const [key, value] of Object.entries(envConfig)) {
70
+ if (typeof value === "string")
71
+ env[key] = value;
72
+ }
73
+ const runtimeEnv = ensurePathInEnv({ ...process.env, ...env });
74
+ const installCheck = await maybeRunSandboxInstallCommand({
75
+ runId,
76
+ target,
77
+ adapterKey: "gemini",
78
+ installCommand: SANDBOX_INSTALL_COMMAND,
79
+ detectCommand: command,
80
+ env,
81
+ });
82
+ if (installCheck)
83
+ checks.push(installCheck);
84
+ try {
85
+ await ensureAdapterExecutionTargetCommandResolvable(command, target, cwd, runtimeEnv);
86
+ checks.push({
87
+ code: "gemini_command_resolvable",
88
+ level: "info",
89
+ message: `Command is executable: ${command}`,
90
+ });
91
+ }
92
+ catch (err) {
93
+ checks.push({
94
+ code: "gemini_command_unresolvable",
95
+ level: "error",
96
+ message: err instanceof Error ? err.message : "Command is not executable",
97
+ detail: command,
98
+ });
99
+ }
100
+ const configGeminiApiKey = env.GEMINI_API_KEY;
101
+ const hostGeminiApiKey = targetIsRemote ? undefined : process.env.GEMINI_API_KEY;
102
+ const configGoogleApiKey = env.GOOGLE_API_KEY;
103
+ const hostGoogleApiKey = targetIsRemote ? undefined : process.env.GOOGLE_API_KEY;
104
+ const hasGca = env.GOOGLE_GENAI_USE_GCA === "true" || (!targetIsRemote && process.env.GOOGLE_GENAI_USE_GCA === "true");
105
+ if (isNonEmpty(configGeminiApiKey) ||
106
+ isNonEmpty(hostGeminiApiKey) ||
107
+ isNonEmpty(configGoogleApiKey) ||
108
+ isNonEmpty(hostGoogleApiKey) ||
109
+ hasGca) {
110
+ const source = hasGca
111
+ ? "Google account login (GCA)"
112
+ : isNonEmpty(configGeminiApiKey) || isNonEmpty(configGoogleApiKey)
113
+ ? "adapter config env"
114
+ : "server environment";
115
+ checks.push({
116
+ code: "gemini_api_key_present",
117
+ level: "info",
118
+ message: "Gemini API credentials are set for CLI authentication.",
119
+ detail: `Detected in ${source}.`,
120
+ });
121
+ }
122
+ else {
123
+ checks.push({
124
+ code: "gemini_api_key_missing",
125
+ level: "info",
126
+ message: "No explicit API key detected. Gemini CLI may still authenticate via `gemini auth login` (OAuth).",
127
+ hint: "If the hello probe fails with an auth error, set GEMINI_API_KEY or GOOGLE_API_KEY in adapter env, or run `gemini auth login`.",
128
+ });
129
+ }
130
+ const canRunProbe = checks.every((check) => check.code !== "gemini_cwd_invalid" && check.code !== "gemini_command_unresolvable");
131
+ if (canRunProbe) {
132
+ if (!commandLooksLike(command, "gemini")) {
133
+ checks.push({
134
+ code: "gemini_hello_probe_skipped_custom_command",
135
+ level: "info",
136
+ message: "Skipped hello probe because command is not `gemini`.",
137
+ detail: command,
138
+ hint: "Use the `gemini` CLI command to run the automatic installation and auth probe.",
139
+ });
140
+ }
141
+ else {
142
+ const model = asString(config.model, DEFAULT_GEMINI_LOCAL_MODEL).trim();
143
+ const approvalMode = asString(config.approvalMode, asBoolean(config.yolo, false) ? "yolo" : "default");
144
+ const sandbox = asBoolean(config.sandbox, false);
145
+ const helloProbeTimeoutSec = Math.max(1, asNumber(config.helloProbeTimeoutSec, 60));
146
+ const extraArgs = (() => {
147
+ const fromExtraArgs = asStringArray(config.extraArgs);
148
+ if (fromExtraArgs.length > 0)
149
+ return fromExtraArgs;
150
+ return asStringArray(config.args);
151
+ })();
152
+ const args = ["--output-format", "stream-json", "--prompt", "Respond with hello."];
153
+ if (model && model !== DEFAULT_GEMINI_LOCAL_MODEL)
154
+ args.push("--model", model);
155
+ if (approvalMode !== "default")
156
+ args.push("--approval-mode", approvalMode);
157
+ if (sandbox) {
158
+ args.push("--sandbox");
159
+ }
160
+ else {
161
+ args.push("--sandbox=none");
162
+ }
163
+ if (extraArgs.length > 0)
164
+ args.push(...extraArgs);
165
+ const probe = await runAdapterExecutionTargetProcess(runId, target, command, args, {
166
+ cwd,
167
+ env,
168
+ timeoutSec: helloProbeTimeoutSec,
169
+ graceSec: 5,
170
+ onLog: async () => { },
171
+ });
172
+ const parsed = parseGeminiJsonl(probe.stdout);
173
+ const detail = summarizeProbeDetail(probe.stdout, probe.stderr, parsed.errorMessage);
174
+ const authMeta = detectGeminiAuthRequired({
175
+ parsed: parsed.resultEvent,
176
+ stdout: probe.stdout,
177
+ stderr: probe.stderr,
178
+ });
179
+ const quotaMeta = detectGeminiQuotaExhausted({
180
+ parsed: parsed.resultEvent,
181
+ stdout: probe.stdout,
182
+ stderr: probe.stderr,
183
+ });
184
+ if (quotaMeta.exhausted) {
185
+ checks.push({
186
+ code: "gemini_hello_probe_quota_exhausted",
187
+ level: "warn",
188
+ message: probe.timedOut
189
+ ? "Gemini CLI is retrying after quota exhaustion."
190
+ : "Gemini CLI authentication is configured, but the current account or API key is over quota.",
191
+ ...(detail ? { detail } : {}),
192
+ hint: "The configured Gemini account or API key is over quota. Check ai.google.dev usage/billing, then retry the probe.",
193
+ });
194
+ }
195
+ else if (probe.timedOut) {
196
+ checks.push({
197
+ code: "gemini_hello_probe_timed_out",
198
+ level: "warn",
199
+ message: "Gemini hello probe timed out.",
200
+ hint: "Retry the probe. If this persists, verify Gemini can run `Respond with hello.` from this directory manually.",
201
+ });
202
+ }
203
+ else if ((probe.exitCode ?? 1) === 0) {
204
+ const summary = parsed.summary.trim();
205
+ const hasHello = /\bhello\b/i.test(summary);
206
+ checks.push({
207
+ code: hasHello ? "gemini_hello_probe_passed" : "gemini_hello_probe_unexpected_output",
208
+ level: hasHello ? "info" : "warn",
209
+ message: hasHello
210
+ ? "Gemini hello probe succeeded."
211
+ : "Gemini probe ran but did not return `hello` as expected.",
212
+ ...(summary ? { detail: summary.replace(/\s+/g, " ").trim().slice(0, 240) } : {}),
213
+ ...(hasHello
214
+ ? {}
215
+ : {
216
+ hint: "Try `gemini --output-format json \"Respond with hello.\"` manually to inspect full output.",
217
+ }),
218
+ });
219
+ }
220
+ else if (authMeta.requiresAuth) {
221
+ checks.push({
222
+ code: "gemini_hello_probe_auth_required",
223
+ level: "warn",
224
+ message: "Gemini CLI is installed, but authentication is not ready.",
225
+ ...(detail ? { detail } : {}),
226
+ hint: "Run `gemini auth` or configure GEMINI_API_KEY / GOOGLE_API_KEY in adapter env/shell, then retry the probe.",
227
+ });
228
+ }
229
+ else {
230
+ checks.push({
231
+ code: "gemini_hello_probe_failed",
232
+ level: "error",
233
+ message: "Gemini hello probe failed.",
234
+ ...(detail ? { detail } : {}),
235
+ hint: "Run `gemini --output-format json \"Respond with hello.\"` manually in this working directory to debug.",
236
+ });
237
+ }
238
+ }
239
+ }
240
+ return {
241
+ adapterType: ctx.adapterType,
242
+ status: summarizeStatus(checks),
243
+ checks,
244
+ testedAt: new Date().toISOString(),
245
+ };
246
+ }
247
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function firstNonEmptyLine(text: string): string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/server/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtD"}
@@ -0,0 +1,7 @@
1
+ export function firstNonEmptyLine(text) {
2
+ return (text
3
+ .split(/\r?\n/)
4
+ .map((line) => line.trim())
5
+ .find(Boolean) ?? "");
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/server/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,OAAO,CACH,IAAI;SACC,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAC3B,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CreateConfigValues } from "@evermore.work/adapter-utils";
2
+ export declare function buildGeminiLocalConfig(v: CreateConfigValues): Record<string, unknown>;
3
+ //# sourceMappingURL=build-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAqDvE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBrF"}
@@ -0,0 +1,80 @@
1
+ import { DEFAULT_GEMINI_LOCAL_MODEL } from "../index.js";
2
+ function parseCommaArgs(value) {
3
+ return value
4
+ .split(",")
5
+ .map((item) => item.trim())
6
+ .filter(Boolean);
7
+ }
8
+ function parseEnvVars(text) {
9
+ const env = {};
10
+ for (const line of text.split(/\r?\n/)) {
11
+ const trimmed = line.trim();
12
+ if (!trimmed || trimmed.startsWith("#"))
13
+ continue;
14
+ const eq = trimmed.indexOf("=");
15
+ if (eq <= 0)
16
+ continue;
17
+ const key = trimmed.slice(0, eq).trim();
18
+ const value = trimmed.slice(eq + 1);
19
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
20
+ continue;
21
+ env[key] = value;
22
+ }
23
+ return env;
24
+ }
25
+ function parseEnvBindings(bindings) {
26
+ if (typeof bindings !== "object" || bindings === null || Array.isArray(bindings))
27
+ return {};
28
+ const env = {};
29
+ for (const [key, raw] of Object.entries(bindings)) {
30
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
31
+ continue;
32
+ if (typeof raw === "string") {
33
+ env[key] = { type: "plain", value: raw };
34
+ continue;
35
+ }
36
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
37
+ continue;
38
+ const rec = raw;
39
+ if (rec.type === "plain" && typeof rec.value === "string") {
40
+ env[key] = { type: "plain", value: rec.value };
41
+ continue;
42
+ }
43
+ if (rec.type === "secret_ref" && typeof rec.secretId === "string") {
44
+ env[key] = {
45
+ type: "secret_ref",
46
+ secretId: rec.secretId,
47
+ ...(typeof rec.version === "number" || rec.version === "latest"
48
+ ? { version: rec.version }
49
+ : {}),
50
+ };
51
+ }
52
+ }
53
+ return env;
54
+ }
55
+ export function buildGeminiLocalConfig(v) {
56
+ const ac = {};
57
+ if (v.cwd)
58
+ ac.cwd = v.cwd;
59
+ if (v.instructionsFilePath)
60
+ ac.instructionsFilePath = v.instructionsFilePath;
61
+ ac.model = v.model || DEFAULT_GEMINI_LOCAL_MODEL;
62
+ ac.timeoutSec = 0;
63
+ ac.graceSec = 15;
64
+ const env = parseEnvBindings(v.envBindings);
65
+ const legacy = parseEnvVars(v.envVars);
66
+ for (const [key, value] of Object.entries(legacy)) {
67
+ if (!Object.prototype.hasOwnProperty.call(env, key)) {
68
+ env[key] = { type: "plain", value };
69
+ }
70
+ }
71
+ if (Object.keys(env).length > 0)
72
+ ac.env = env;
73
+ ac.sandbox = !v.dangerouslyBypassSandbox;
74
+ if (v.command)
75
+ ac.command = v.command;
76
+ if (v.extraArgs)
77
+ ac.extraArgs = parseCommaArgs(v.extraArgs);
78
+ return ac;
79
+ }
80
+ //# sourceMappingURL=build-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { parseGeminiStdoutLine } from "./parse-stdout.js";
2
+ export { buildGeminiLocalConfig } from "./build-config.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { parseGeminiStdoutLine } from "./parse-stdout.js";
2
+ export { buildGeminiLocalConfig } from "./build-config.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TranscriptEntry } from "@evermore.work/adapter-utils";
2
+ export declare function parseGeminiStdoutLine(line: string, ts: string): TranscriptEntry[];
3
+ //# sourceMappingURL=parse-stdout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.d.ts","sourceRoot":"","sources":["../../src/ui/parse-stdout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAkNpE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,EAAE,CA+EjF"}