@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,2 @@
1
+ export declare function printGeminiStreamEvent(raw: string, _debug: boolean): void;
2
+ //# sourceMappingURL=format-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AA4GA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAwHzE"}
@@ -0,0 +1,218 @@
1
+ import pc from "picocolors";
2
+ function asRecord(value) {
3
+ if (typeof value !== "object" || value === null || Array.isArray(value))
4
+ return null;
5
+ return value;
6
+ }
7
+ function asString(value, fallback = "") {
8
+ return typeof value === "string" ? value : fallback;
9
+ }
10
+ function asNumber(value, fallback = 0) {
11
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
12
+ }
13
+ function stringifyUnknown(value) {
14
+ if (typeof value === "string")
15
+ return value;
16
+ if (value === null || value === undefined)
17
+ return "";
18
+ try {
19
+ return JSON.stringify(value, null, 2);
20
+ }
21
+ catch {
22
+ return String(value);
23
+ }
24
+ }
25
+ function errorText(value) {
26
+ if (typeof value === "string")
27
+ return value;
28
+ const rec = asRecord(value);
29
+ if (!rec)
30
+ return "";
31
+ const msg = (typeof rec.message === "string" && rec.message) ||
32
+ (typeof rec.error === "string" && rec.error) ||
33
+ (typeof rec.code === "string" && rec.code) ||
34
+ "";
35
+ if (msg)
36
+ return msg;
37
+ try {
38
+ return JSON.stringify(rec);
39
+ }
40
+ catch {
41
+ return "";
42
+ }
43
+ }
44
+ function printTextMessage(prefix, colorize, messageRaw) {
45
+ if (typeof messageRaw === "string") {
46
+ const text = messageRaw.trim();
47
+ if (text)
48
+ console.log(colorize(`${prefix}: ${text}`));
49
+ return;
50
+ }
51
+ const message = asRecord(messageRaw);
52
+ if (!message)
53
+ return;
54
+ const directText = asString(message.text).trim();
55
+ if (directText)
56
+ console.log(colorize(`${prefix}: ${directText}`));
57
+ const content = Array.isArray(message.content) ? message.content : [];
58
+ for (const partRaw of content) {
59
+ const part = asRecord(partRaw);
60
+ if (!part)
61
+ continue;
62
+ const type = asString(part.type).trim();
63
+ if (type === "output_text" || type === "text" || type === "content") {
64
+ const text = asString(part.text).trim() || asString(part.content).trim();
65
+ if (text)
66
+ console.log(colorize(`${prefix}: ${text}`));
67
+ continue;
68
+ }
69
+ if (type === "thinking") {
70
+ const text = asString(part.text).trim();
71
+ if (text)
72
+ console.log(pc.gray(`thinking: ${text}`));
73
+ continue;
74
+ }
75
+ if (type === "tool_call") {
76
+ const name = asString(part.name, asString(part.tool, "tool"));
77
+ console.log(pc.yellow(`tool_call: ${name}`));
78
+ const input = part.input ?? part.arguments ?? part.args;
79
+ if (input !== undefined)
80
+ console.log(pc.gray(stringifyUnknown(input)));
81
+ continue;
82
+ }
83
+ if (type === "tool_result" || type === "tool_response") {
84
+ const isError = part.is_error === true || asString(part.status).toLowerCase() === "error";
85
+ const contentText = asString(part.output) ||
86
+ asString(part.text) ||
87
+ asString(part.result) ||
88
+ stringifyUnknown(part.output ?? part.result ?? part.text ?? part.response);
89
+ console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
90
+ if (contentText)
91
+ console.log((isError ? pc.red : pc.gray)(contentText));
92
+ }
93
+ }
94
+ }
95
+ function printUsage(parsed) {
96
+ const usage = asRecord(parsed.usage) ?? asRecord(parsed.usageMetadata) ?? asRecord(parsed.stats);
97
+ const usageMetadata = asRecord(usage?.usageMetadata);
98
+ const source = usageMetadata ?? usage ?? {};
99
+ const input = asNumber(source.input_tokens, asNumber(source.inputTokens, asNumber(source.promptTokenCount)));
100
+ const output = asNumber(source.output_tokens, asNumber(source.outputTokens, asNumber(source.candidatesTokenCount)));
101
+ const cached = asNumber(source.cached_input_tokens, asNumber(source.cachedInputTokens, asNumber(source.cachedContentTokenCount, asNumber(source.cached))));
102
+ const cost = asNumber(parsed.total_cost_usd, asNumber(parsed.cost_usd, asNumber(parsed.cost)));
103
+ console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`));
104
+ }
105
+ export function printGeminiStreamEvent(raw, _debug) {
106
+ const line = raw.trim();
107
+ if (!line)
108
+ return;
109
+ let parsed = null;
110
+ try {
111
+ parsed = JSON.parse(line);
112
+ }
113
+ catch {
114
+ console.log(line);
115
+ return;
116
+ }
117
+ const type = asString(parsed.type);
118
+ if (type === "system") {
119
+ const subtype = asString(parsed.subtype);
120
+ if (subtype === "init") {
121
+ const sessionId = asString(parsed.session_id) ||
122
+ asString(parsed.sessionId) ||
123
+ asString(parsed.sessionID) ||
124
+ asString(parsed.checkpoint_id);
125
+ const model = asString(parsed.model);
126
+ const details = [sessionId ? `session: ${sessionId}` : "", model ? `model: ${model}` : ""]
127
+ .filter(Boolean)
128
+ .join(", ");
129
+ console.log(pc.blue(`Gemini init${details ? ` (${details})` : ""}`));
130
+ return;
131
+ }
132
+ if (subtype === "error") {
133
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
134
+ if (text)
135
+ console.log(pc.red(`error: ${text}`));
136
+ return;
137
+ }
138
+ console.log(pc.blue(`system: ${subtype || "event"}`));
139
+ return;
140
+ }
141
+ if (type === "assistant") {
142
+ printTextMessage("assistant", pc.green, parsed.message);
143
+ return;
144
+ }
145
+ if (type === "user") {
146
+ printTextMessage("user", pc.gray, parsed.message);
147
+ return;
148
+ }
149
+ // Gemini CLI v0.38+ stream-json schema:
150
+ // {"type":"message","role":"assistant"|"user","content":"...","delta":?true}
151
+ if (type === "message") {
152
+ const role = asString(parsed.role).trim().toLowerCase();
153
+ if (role === "assistant") {
154
+ printTextMessage("assistant", pc.green, parsed.content);
155
+ return;
156
+ }
157
+ if (role === "user") {
158
+ printTextMessage("user", pc.gray, parsed.content);
159
+ return;
160
+ }
161
+ return;
162
+ }
163
+ if (type === "thinking") {
164
+ const text = asString(parsed.text).trim() || asString(asRecord(parsed.delta)?.text).trim();
165
+ if (text)
166
+ console.log(pc.gray(`thinking: ${text}`));
167
+ return;
168
+ }
169
+ if (type === "tool_call") {
170
+ const subtype = asString(parsed.subtype).trim().toLowerCase();
171
+ const toolCall = asRecord(parsed.tool_call ?? parsed.toolCall);
172
+ const [toolName] = toolCall ? Object.keys(toolCall) : [];
173
+ if (!toolCall || !toolName) {
174
+ console.log(pc.yellow(`tool_call${subtype ? `: ${subtype}` : ""}`));
175
+ return;
176
+ }
177
+ const payload = asRecord(toolCall[toolName]) ?? {};
178
+ if (subtype === "started" || subtype === "start") {
179
+ console.log(pc.yellow(`tool_call: ${toolName}`));
180
+ console.log(pc.gray(stringifyUnknown(payload.args ?? payload.input ?? payload.arguments ?? payload)));
181
+ return;
182
+ }
183
+ if (subtype === "completed" || subtype === "complete" || subtype === "finished") {
184
+ const isError = parsed.is_error === true ||
185
+ payload.is_error === true ||
186
+ payload.error !== undefined ||
187
+ asString(payload.status).toLowerCase() === "error";
188
+ console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
189
+ console.log((isError ? pc.red : pc.gray)(stringifyUnknown(payload.result ?? payload.output ?? payload.error)));
190
+ return;
191
+ }
192
+ console.log(pc.yellow(`tool_call: ${toolName}${subtype ? ` (${subtype})` : ""}`));
193
+ return;
194
+ }
195
+ if (type === "result") {
196
+ printUsage(parsed);
197
+ const status = asString(parsed.status).toLowerCase();
198
+ const isError = parsed.is_error === true || status === "error" || status === "failed";
199
+ const subtype = asString(parsed.subtype, status || "result");
200
+ if (subtype || isError) {
201
+ console.log((isError ? pc.red : pc.blue)(`result: subtype=${subtype} is_error=${isError ? "true" : "false"}`));
202
+ }
203
+ if (isError) {
204
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.result);
205
+ if (text)
206
+ console.log(pc.red(`error: ${text}`));
207
+ }
208
+ return;
209
+ }
210
+ if (type === "error") {
211
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
212
+ if (text)
213
+ console.log(pc.red(`error: ${text}`));
214
+ return;
215
+ }
216
+ console.log(line);
217
+ }
218
+ //# sourceMappingURL=format-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { printGeminiStreamEvent } from "./format-event.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { printGeminiStreamEvent } from "./format-event.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AdapterModelProfileDefinition } from "@evermore.work/adapter-utils";
2
+ export declare const type = "gemini_local";
3
+ export declare const label = "Gemini CLI (local)";
4
+ export declare const SANDBOX_INSTALL_COMMAND = "npm install -g @google/gemini-cli";
5
+ export declare const DEFAULT_GEMINI_LOCAL_MODEL = "auto";
6
+ export declare const models: {
7
+ id: string;
8
+ label: string;
9
+ }[];
10
+ export declare const modelProfiles: AdapterModelProfileDefinition[];
11
+ export declare const agentConfigurationDoc = "# gemini_local agent configuration\n\nAdapter: gemini_local\n\nUse when:\n- You want Evermore to run the Gemini CLI locally on the host machine\n- You want Gemini chat sessions resumed across heartbeats with --resume\n- You want Evermore skills injected locally without polluting the global environment\n\nDon't use when:\n- You need webhook-style external invocation (use http or openclaw_gateway)\n- You only need a one-shot script without an AI coding agent loop (use process)\n- Gemini CLI is not installed on the machine that runs Evermore\n\nCore fields:\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to the run prompt\n- promptTemplate (string, optional): run prompt template\n- model (string, optional): Gemini model id. Defaults to auto.\n- sandbox (boolean, optional): run in sandbox mode (default: false, passes --sandbox=none)\n- command (string, optional): defaults to \"gemini\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- Runs use positional prompt arguments, not stdin.\n- Sessions resume with --resume when stored session cwd matches the current cwd.\n- Evermore auto-injects local skills into `~/.gemini/skills/` via symlinks, so the CLI can discover both credentials and skills in their natural location.\n- Authentication can use GEMINI_API_KEY / GOOGLE_API_KEY or local Gemini CLI login.\n";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAElF,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAE1C,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAE3E,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAEjD,eAAO,MAAM,MAAM;;;GAOlB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,6BAA6B,EAUxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,4rDAiCjC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,58 @@
1
+ export const type = "gemini_local";
2
+ export const label = "Gemini CLI (local)";
3
+ export const SANDBOX_INSTALL_COMMAND = "npm install -g @google/gemini-cli";
4
+ export const DEFAULT_GEMINI_LOCAL_MODEL = "auto";
5
+ export const models = [
6
+ { id: DEFAULT_GEMINI_LOCAL_MODEL, label: "Auto" },
7
+ { id: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
8
+ { id: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
9
+ { id: "gemini-2.5-flash-lite", label: "Gemini 2.5 Flash Lite" },
10
+ { id: "gemini-2.0-flash", label: "Gemini 2.0 Flash" },
11
+ { id: "gemini-2.0-flash-lite", label: "Gemini 2.0 Flash Lite" },
12
+ ];
13
+ export const modelProfiles = [
14
+ {
15
+ key: "cheap",
16
+ label: "Cheap",
17
+ description: "Use Gemini Flash Lite as the budget Gemini CLI lane while preserving the primary model.",
18
+ adapterConfig: {
19
+ model: "gemini-2.5-flash-lite",
20
+ },
21
+ source: "adapter_default",
22
+ },
23
+ ];
24
+ export const agentConfigurationDoc = `# gemini_local agent configuration
25
+
26
+ Adapter: gemini_local
27
+
28
+ Use when:
29
+ - You want Evermore to run the Gemini CLI locally on the host machine
30
+ - You want Gemini chat sessions resumed across heartbeats with --resume
31
+ - You want Evermore skills injected locally without polluting the global environment
32
+
33
+ Don't use when:
34
+ - You need webhook-style external invocation (use http or openclaw_gateway)
35
+ - You only need a one-shot script without an AI coding agent loop (use process)
36
+ - Gemini CLI is not installed on the machine that runs Evermore
37
+
38
+ Core fields:
39
+ - cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
40
+ - instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to the run prompt
41
+ - promptTemplate (string, optional): run prompt template
42
+ - model (string, optional): Gemini model id. Defaults to auto.
43
+ - sandbox (boolean, optional): run in sandbox mode (default: false, passes --sandbox=none)
44
+ - command (string, optional): defaults to "gemini"
45
+ - extraArgs (string[], optional): additional CLI args
46
+ - env (object, optional): KEY=VALUE environment variables
47
+
48
+ Operational fields:
49
+ - timeoutSec (number, optional): run timeout in seconds
50
+ - graceSec (number, optional): SIGTERM grace period in seconds
51
+
52
+ Notes:
53
+ - Runs use positional prompt arguments, not stdin.
54
+ - Sessions resume with --resume when stored session cwd matches the current cwd.
55
+ - Evermore auto-injects local skills into \`~/.gemini/skills/\` via symlinks, so the CLI can discover both credentials and skills in their natural location.
56
+ - Authentication can use GEMINI_API_KEY / GOOGLE_API_KEY or local Gemini CLI login.
57
+ `;
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;AAE1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE3E,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE;IACjD,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACjD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC/D,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAoC;IAC5D;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yFAAyF;QACtG,aAAa,EAAE;YACb,KAAK,EAAE,uBAAuB;SAC/B;QACD,MAAM,EAAE,iBAAiB;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AdapterExecutionContext, AdapterExecutionResult } from "@evermore.work/adapter-utils";
2
+ export declare function execute(ctx: AdapterExecutionContext): Promise<AdapterExecutionResult>;
3
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAuKpG,wBAAsB,OAAO,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA+d3F"}