@tickernelz/paperclip-pro-adapter-gemini-local 2026.925.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 (86) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +223 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +63 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/server/acp.d.ts +19 -0
  15. package/dist/server/acp.d.ts.map +1 -0
  16. package/dist/server/acp.js +404 -0
  17. package/dist/server/acp.js.map +1 -0
  18. package/dist/server/acp.test.d.ts +2 -0
  19. package/dist/server/acp.test.d.ts.map +1 -0
  20. package/dist/server/acp.test.js +662 -0
  21. package/dist/server/acp.test.js.map +1 -0
  22. package/dist/server/config-schema.d.ts +3 -0
  23. package/dist/server/config-schema.d.ts.map +1 -0
  24. package/dist/server/config-schema.js +67 -0
  25. package/dist/server/config-schema.js.map +1 -0
  26. package/dist/server/engine-availability.test.d.ts +2 -0
  27. package/dist/server/engine-availability.test.d.ts.map +1 -0
  28. package/dist/server/engine-availability.test.js +41 -0
  29. package/dist/server/engine-availability.test.js.map +1 -0
  30. package/dist/server/execute.acp-fallback.test.d.ts +2 -0
  31. package/dist/server/execute.acp-fallback.test.d.ts.map +1 -0
  32. package/dist/server/execute.acp-fallback.test.js +130 -0
  33. package/dist/server/execute.acp-fallback.test.js.map +1 -0
  34. package/dist/server/execute.d.ts +3 -0
  35. package/dist/server/execute.d.ts.map +1 -0
  36. package/dist/server/execute.js +625 -0
  37. package/dist/server/execute.js.map +1 -0
  38. package/dist/server/execute.remote.test.d.ts +2 -0
  39. package/dist/server/execute.remote.test.d.ts.map +1 -0
  40. package/dist/server/execute.remote.test.js +377 -0
  41. package/dist/server/execute.remote.test.js.map +1 -0
  42. package/dist/server/index.d.ts +9 -0
  43. package/dist/server/index.d.ts.map +1 -0
  44. package/dist/server/index.js +67 -0
  45. package/dist/server/index.js.map +1 -0
  46. package/dist/server/parse.d.ts +39 -0
  47. package/dist/server/parse.d.ts.map +1 -0
  48. package/dist/server/parse.js +268 -0
  49. package/dist/server/parse.js.map +1 -0
  50. package/dist/server/parse.test.d.ts +2 -0
  51. package/dist/server/parse.test.d.ts.map +1 -0
  52. package/dist/server/parse.test.js +166 -0
  53. package/dist/server/parse.test.js.map +1 -0
  54. package/dist/server/skills.d.ts +8 -0
  55. package/dist/server/skills.d.ts.map +1 -0
  56. package/dist/server/skills.js +69 -0
  57. package/dist/server/skills.js.map +1 -0
  58. package/dist/server/test.d.ts +3 -0
  59. package/dist/server/test.d.ts.map +1 -0
  60. package/dist/server/test.js +270 -0
  61. package/dist/server/test.js.map +1 -0
  62. package/dist/server/utils.d.ts +2 -0
  63. package/dist/server/utils.d.ts.map +1 -0
  64. package/dist/server/utils.js +7 -0
  65. package/dist/server/utils.js.map +1 -0
  66. package/dist/ui/build-config.d.ts +3 -0
  67. package/dist/ui/build-config.d.ts.map +1 -0
  68. package/dist/ui/build-config.js +39 -0
  69. package/dist/ui/build-config.js.map +1 -0
  70. package/dist/ui/build-config.test.d.ts +2 -0
  71. package/dist/ui/build-config.test.d.ts.map +1 -0
  72. package/dist/ui/build-config.test.js +63 -0
  73. package/dist/ui/build-config.test.js.map +1 -0
  74. package/dist/ui/index.d.ts +3 -0
  75. package/dist/ui/index.d.ts.map +1 -0
  76. package/dist/ui/index.js +3 -0
  77. package/dist/ui/index.js.map +1 -0
  78. package/dist/ui/parse-stdout.d.ts +3 -0
  79. package/dist/ui/parse-stdout.d.ts.map +1 -0
  80. package/dist/ui/parse-stdout.js +265 -0
  81. package/dist/ui/parse-stdout.js.map +1 -0
  82. package/dist/ui/parse-stdout.test.d.ts +2 -0
  83. package/dist/ui/parse-stdout.test.d.ts.map +1 -0
  84. package/dist/ui/parse-stdout.test.js +73 -0
  85. package/dist/ui/parse-stdout.test.js.map +1 -0
  86. package/package.json +58 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Paperclip AI
4
+ Copyright (c) 2026 Zhafron Adani Kautsar (paperclip-pro fork modifications)
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -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":"AA6GA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CA6HzE"}
@@ -0,0 +1,223 @@
1
+ import pc from "picocolors";
2
+ import { printAcpxStreamEvent } from "@tickernelz/paperclip-pro-adapter-utils/acpx-engine/cli";
3
+ function asRecord(value) {
4
+ if (typeof value !== "object" || value === null || Array.isArray(value))
5
+ return null;
6
+ return value;
7
+ }
8
+ function asString(value, fallback = "") {
9
+ return typeof value === "string" ? value : fallback;
10
+ }
11
+ function asNumber(value, fallback = 0) {
12
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
13
+ }
14
+ function stringifyUnknown(value) {
15
+ if (typeof value === "string")
16
+ return value;
17
+ if (value === null || value === undefined)
18
+ return "";
19
+ try {
20
+ return JSON.stringify(value, null, 2);
21
+ }
22
+ catch {
23
+ return String(value);
24
+ }
25
+ }
26
+ function errorText(value) {
27
+ if (typeof value === "string")
28
+ return value;
29
+ const rec = asRecord(value);
30
+ if (!rec)
31
+ return "";
32
+ const msg = (typeof rec.message === "string" && rec.message) ||
33
+ (typeof rec.error === "string" && rec.error) ||
34
+ (typeof rec.code === "string" && rec.code) ||
35
+ "";
36
+ if (msg)
37
+ return msg;
38
+ try {
39
+ return JSON.stringify(rec);
40
+ }
41
+ catch {
42
+ return "";
43
+ }
44
+ }
45
+ function printTextMessage(prefix, colorize, messageRaw) {
46
+ if (typeof messageRaw === "string") {
47
+ const text = messageRaw.trim();
48
+ if (text)
49
+ console.log(colorize(`${prefix}: ${text}`));
50
+ return;
51
+ }
52
+ const message = asRecord(messageRaw);
53
+ if (!message)
54
+ return;
55
+ const directText = asString(message.text).trim();
56
+ if (directText)
57
+ console.log(colorize(`${prefix}: ${directText}`));
58
+ const content = Array.isArray(message.content) ? message.content : [];
59
+ for (const partRaw of content) {
60
+ const part = asRecord(partRaw);
61
+ if (!part)
62
+ continue;
63
+ const type = asString(part.type).trim();
64
+ if (type === "output_text" || type === "text" || type === "content") {
65
+ const text = asString(part.text).trim() || asString(part.content).trim();
66
+ if (text)
67
+ console.log(colorize(`${prefix}: ${text}`));
68
+ continue;
69
+ }
70
+ if (type === "thinking") {
71
+ const text = asString(part.text).trim();
72
+ if (text)
73
+ console.log(pc.gray(`thinking: ${text}`));
74
+ continue;
75
+ }
76
+ if (type === "tool_call") {
77
+ const name = asString(part.name, asString(part.tool, "tool"));
78
+ console.log(pc.yellow(`tool_call: ${name}`));
79
+ const input = part.input ?? part.arguments ?? part.args;
80
+ if (input !== undefined)
81
+ console.log(pc.gray(stringifyUnknown(input)));
82
+ continue;
83
+ }
84
+ if (type === "tool_result" || type === "tool_response") {
85
+ const isError = part.is_error === true || asString(part.status).toLowerCase() === "error";
86
+ const contentText = asString(part.output) ||
87
+ asString(part.text) ||
88
+ asString(part.result) ||
89
+ stringifyUnknown(part.output ?? part.result ?? part.text ?? part.response);
90
+ console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
91
+ if (contentText)
92
+ console.log((isError ? pc.red : pc.gray)(contentText));
93
+ }
94
+ }
95
+ }
96
+ function printUsage(parsed) {
97
+ const usage = asRecord(parsed.usage) ?? asRecord(parsed.usageMetadata) ?? asRecord(parsed.stats);
98
+ const usageMetadata = asRecord(usage?.usageMetadata);
99
+ const source = usageMetadata ?? usage ?? {};
100
+ const input = asNumber(source.input_tokens, asNumber(source.inputTokens, asNumber(source.promptTokenCount)));
101
+ const output = asNumber(source.output_tokens, asNumber(source.outputTokens, asNumber(source.candidatesTokenCount)));
102
+ const cached = asNumber(source.cached_input_tokens, asNumber(source.cachedInputTokens, asNumber(source.cachedContentTokenCount, asNumber(source.cached))));
103
+ const cost = asNumber(parsed.total_cost_usd, asNumber(parsed.cost_usd, asNumber(parsed.cost)));
104
+ console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`));
105
+ }
106
+ export function printGeminiStreamEvent(raw, _debug) {
107
+ const line = raw.trim();
108
+ if (!line)
109
+ return;
110
+ let parsed = null;
111
+ try {
112
+ parsed = JSON.parse(line);
113
+ }
114
+ catch {
115
+ console.log(line);
116
+ return;
117
+ }
118
+ const type = asString(parsed.type);
119
+ if (type.startsWith("acpx.")) {
120
+ printAcpxStreamEvent(line, _debug);
121
+ return;
122
+ }
123
+ if (type === "system") {
124
+ const subtype = asString(parsed.subtype);
125
+ if (subtype === "init") {
126
+ const sessionId = asString(parsed.session_id) ||
127
+ asString(parsed.sessionId) ||
128
+ asString(parsed.sessionID) ||
129
+ asString(parsed.checkpoint_id);
130
+ const model = asString(parsed.model);
131
+ const details = [sessionId ? `session: ${sessionId}` : "", model ? `model: ${model}` : ""]
132
+ .filter(Boolean)
133
+ .join(", ");
134
+ console.log(pc.blue(`Gemini init${details ? ` (${details})` : ""}`));
135
+ return;
136
+ }
137
+ if (subtype === "error") {
138
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
139
+ if (text)
140
+ console.log(pc.red(`error: ${text}`));
141
+ return;
142
+ }
143
+ console.log(pc.blue(`system: ${subtype || "event"}`));
144
+ return;
145
+ }
146
+ if (type === "assistant") {
147
+ printTextMessage("assistant", pc.green, parsed.message);
148
+ return;
149
+ }
150
+ if (type === "user") {
151
+ printTextMessage("user", pc.gray, parsed.message);
152
+ return;
153
+ }
154
+ // Gemini CLI v0.38+ stream-json schema:
155
+ // {"type":"message","role":"assistant"|"user","content":"...","delta":?true}
156
+ if (type === "message") {
157
+ const role = asString(parsed.role).trim().toLowerCase();
158
+ if (role === "assistant") {
159
+ printTextMessage("assistant", pc.green, parsed.content);
160
+ return;
161
+ }
162
+ if (role === "user") {
163
+ printTextMessage("user", pc.gray, parsed.content);
164
+ return;
165
+ }
166
+ return;
167
+ }
168
+ if (type === "thinking") {
169
+ const text = asString(parsed.text).trim() || asString(asRecord(parsed.delta)?.text).trim();
170
+ if (text)
171
+ console.log(pc.gray(`thinking: ${text}`));
172
+ return;
173
+ }
174
+ if (type === "tool_call") {
175
+ const subtype = asString(parsed.subtype).trim().toLowerCase();
176
+ const toolCall = asRecord(parsed.tool_call ?? parsed.toolCall);
177
+ const [toolName] = toolCall ? Object.keys(toolCall) : [];
178
+ if (!toolCall || !toolName) {
179
+ console.log(pc.yellow(`tool_call${subtype ? `: ${subtype}` : ""}`));
180
+ return;
181
+ }
182
+ const payload = asRecord(toolCall[toolName]) ?? {};
183
+ if (subtype === "started" || subtype === "start") {
184
+ console.log(pc.yellow(`tool_call: ${toolName}`));
185
+ console.log(pc.gray(stringifyUnknown(payload.args ?? payload.input ?? payload.arguments ?? payload)));
186
+ return;
187
+ }
188
+ if (subtype === "completed" || subtype === "complete" || subtype === "finished") {
189
+ const isError = parsed.is_error === true ||
190
+ payload.is_error === true ||
191
+ payload.error !== undefined ||
192
+ asString(payload.status).toLowerCase() === "error";
193
+ console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
194
+ console.log((isError ? pc.red : pc.gray)(stringifyUnknown(payload.result ?? payload.output ?? payload.error)));
195
+ return;
196
+ }
197
+ console.log(pc.yellow(`tool_call: ${toolName}${subtype ? ` (${subtype})` : ""}`));
198
+ return;
199
+ }
200
+ if (type === "result") {
201
+ printUsage(parsed);
202
+ const status = asString(parsed.status).toLowerCase();
203
+ const isError = parsed.is_error === true || status === "error" || status === "failed";
204
+ const subtype = asString(parsed.subtype, status || "result");
205
+ if (subtype || isError) {
206
+ console.log((isError ? pc.red : pc.blue)(`result: subtype=${subtype} is_error=${isError ? "true" : "false"}`));
207
+ }
208
+ if (isError) {
209
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.result);
210
+ if (text)
211
+ console.log(pc.red(`error: ${text}`));
212
+ }
213
+ return;
214
+ }
215
+ if (type === "error") {
216
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
217
+ if (text)
218
+ console.log(pc.red(`error: ${text}`));
219
+ return;
220
+ }
221
+ console.log(line);
222
+ }
223
+ //# 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,10 @@
1
+ export declare const type = "gemini_local";
2
+ export declare const label = "Gemini CLI";
3
+ export declare const SANDBOX_INSTALL_COMMAND: string;
4
+ export declare const DEFAULT_GEMINI_LOCAL_MODEL = "auto";
5
+ export declare const models: {
6
+ id: string;
7
+ label: string;
8
+ }[];
9
+ export declare const agentConfigurationDoc = "# gemini_local agent configuration\n\nAdapter: gemini_local\n\nUse when:\n- You want Paperclip to run the Gemini CLI locally on the host machine\n- You want Gemini chat sessions resumed across heartbeats with --resume\n- You want Paperclip 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 Paperclip\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- engine (string, optional): defaults to ACP, including legacy unset/\"auto\" values. Missing prerequisites and execution failures fail the run without changing engines. Set \"cli\" to explicitly select the CLI engine.\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- agentCommand (string, optional): ACP server command override used only when engine=\"acp\"; defaults to gemini --acp\n- mode (string, optional): ACP session mode when engine=\"acp\"; persistent or oneshot\n- nonInteractivePermissions (string, optional): ACP non-interactive permission fallback when engine=\"acp\"; deny or fail\n- stateDir (string, optional): ACP state directory override when engine=\"acp\"\n- warmHandleIdleMs (number, optional): warm ACP process idle timeout when engine=\"acp\"; defaults to 0\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- Gemini ACP is the preferred auto lane when Node >=24.11.0 and the local Gemini CLI command is available. It runs Gemini CLI's native `gemini --acp` server through Paperclip's shared ACP engine, including selected skill links, Paperclip runtime prompt/env guidance, model config, and persistent ACP session state. Missing prerequisites fail both default and explicit ACP runs with an actionable setup error; the adapter never switches engines automatically.\n- Runs use --prompt for non-interactive execution, not stdin.\n- The adapter sets a headless-safe terminal/browser environment for Gemini CLI child processes so unattended runs do not wait on browser auth or 256-color terminal prompts.\n- Sessions resume with --resume when stored session cwd matches the current cwd.\n- Paperclip 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";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,KAAK,eAAe,CAAC;AAElC,eAAO,MAAM,uBAAuB,QAAsD,CAAC;AAE3F,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAEjD,eAAO,MAAM,MAAM;;;GAclB,CAAC;AAEF,eAAO,MAAM,qBAAqB,siGAyCjC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,63 @@
1
+ import { buildSandboxNpmInstallCommand, } from "@tickernelz/paperclip-pro-adapter-utils";
2
+ export const type = "gemini_local";
3
+ export const label = "Gemini CLI";
4
+ export const SANDBOX_INSTALL_COMMAND = buildSandboxNpmInstallCommand("@google/gemini-cli");
5
+ export const DEFAULT_GEMINI_LOCAL_MODEL = "auto";
6
+ export const models = [
7
+ { id: DEFAULT_GEMINI_LOCAL_MODEL, label: "Auto" },
8
+ { id: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
9
+ { id: "gemini-3.1-pro-preview-customtools", label: "Gemini 3.1 Pro Preview (Custom Tools)" },
10
+ { id: "gemini-3.8-flash", label: "Gemini 3.8 Flash" },
11
+ { id: "gemini-3.7-flash", label: "Gemini 3.7 Flash" },
12
+ { id: "gemini-3.6-flash", label: "Gemini 3.6 Flash" },
13
+ { id: "gemini-3.5-flash", label: "Gemini 3.5 Flash" },
14
+ { id: "gemini-3.5-flash-lite", label: "Gemini 3.5 Flash Lite" },
15
+ { id: "gemini-3.1-flash-lite", label: "Gemini 3.1 Flash Lite" },
16
+ { id: "gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
17
+ { id: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
18
+ { id: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
19
+ { id: "gemini-2.5-flash-lite", label: "Gemini 2.5 Flash Lite" },
20
+ ];
21
+ export const agentConfigurationDoc = `# gemini_local agent configuration
22
+
23
+ Adapter: gemini_local
24
+
25
+ Use when:
26
+ - You want Paperclip to run the Gemini CLI locally on the host machine
27
+ - You want Gemini chat sessions resumed across heartbeats with --resume
28
+ - You want Paperclip skills injected locally without polluting the global environment
29
+
30
+ Don't use when:
31
+ - You need webhook-style external invocation (use http or openclaw_gateway)
32
+ - You only need a one-shot script without an AI coding agent loop (use process)
33
+ - Gemini CLI is not installed on the machine that runs Paperclip
34
+
35
+ Core fields:
36
+ - cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
37
+ - instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to the run prompt
38
+ - promptTemplate (string, optional): run prompt template
39
+ - model (string, optional): Gemini model id. Defaults to auto.
40
+ - engine (string, optional): defaults to ACP, including legacy unset/"auto" values. Missing prerequisites and execution failures fail the run without changing engines. Set "cli" to explicitly select the CLI engine.
41
+ - sandbox (boolean, optional): run in sandbox mode (default: false, passes --sandbox=none)
42
+ - command (string, optional): defaults to "gemini"
43
+ - extraArgs (string[], optional): additional CLI args
44
+ - env (object, optional): KEY=VALUE environment variables
45
+ - agentCommand (string, optional): ACP server command override used only when engine="acp"; defaults to gemini --acp
46
+ - mode (string, optional): ACP session mode when engine="acp"; persistent or oneshot
47
+ - nonInteractivePermissions (string, optional): ACP non-interactive permission fallback when engine="acp"; deny or fail
48
+ - stateDir (string, optional): ACP state directory override when engine="acp"
49
+ - warmHandleIdleMs (number, optional): warm ACP process idle timeout when engine="acp"; defaults to 0
50
+
51
+ Operational fields:
52
+ - timeoutSec (number, optional): run timeout in seconds
53
+ - graceSec (number, optional): SIGTERM grace period in seconds
54
+
55
+ Notes:
56
+ - Gemini ACP is the preferred auto lane when Node >=24.11.0 and the local Gemini CLI command is available. It runs Gemini CLI's native \`gemini --acp\` server through Paperclip's shared ACP engine, including selected skill links, Paperclip runtime prompt/env guidance, model config, and persistent ACP session state. Missing prerequisites fail both default and explicit ACP runs with an actionable setup error; the adapter never switches engines automatically.
57
+ - Runs use --prompt for non-interactive execution, not stdin.
58
+ - The adapter sets a headless-safe terminal/browser environment for Gemini CLI child processes so unattended runs do not wait on browser auth or 256-color terminal prompts.
59
+ - Sessions resume with --resume when stored session cwd matches the current cwd.
60
+ - Paperclip auto-injects local skills into \`~/.gemini/skills/\` via symlinks, so the CLI can discover both credentials and skills in their natural location.
61
+ - Authentication can use GEMINI_API_KEY / GOOGLE_API_KEY or local Gemini CLI login.
62
+ `;
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAC9B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,oBAAoB,CAAC,CAAC;AAE3F,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,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACjE,EAAE,EAAE,EAAE,oCAAoC,EAAE,KAAK,EAAE,uCAAuC,EAAE;IAC5F,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC/D,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC/D,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACjE,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;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { AdapterEnvironmentTestContext, AdapterEnvironmentTestResult, AdapterExecutionContext, AdapterExecutionResult } from "@tickernelz/paperclip-pro-adapter-utils";
2
+ import type { AcpxEngineExecutorOptions } from "@tickernelz/paperclip-pro-adapter-utils/acpx-engine/execute";
3
+ export type GeminiExecutionEngine = "cli" | "acp";
4
+ export interface GeminiEngineSelection {
5
+ engine: GeminiExecutionEngine;
6
+ explicit: boolean;
7
+ unavailableReason?: string;
8
+ }
9
+ type GeminiEngineResolutionInput = Pick<AdapterExecutionContext, "config"> & Partial<Pick<AdapterExecutionContext, "executionTarget" | "executionTransport">>;
10
+ type GeminiAcpExecutorOptions = Omit<AcpxEngineExecutorOptions, "adapterType" | "moduleDir" | "packageRootDir">;
11
+ type GeminiAcpExecutor = (ctx: AdapterExecutionContext) => Promise<AdapterExecutionResult>;
12
+ export declare function resolveGeminiExecutionEngine(config: Record<string, unknown>): GeminiEngineSelection;
13
+ export declare function resolveGeminiExecutionEngineForRun(input: GeminiEngineResolutionInput): Promise<GeminiEngineSelection>;
14
+ export declare function buildGeminiAcpConfig(config: Record<string, unknown>): Record<string, unknown>;
15
+ export declare function createGeminiAcpExecutor(options?: GeminiAcpExecutorOptions): GeminiAcpExecutor;
16
+ export declare function nodeVersionMeetsGeminiAcpMinimum(version?: string): boolean;
17
+ export declare function testGeminiAcpEnvironment(ctx: AdapterEnvironmentTestContext): Promise<AdapterEnvironmentTestResult>;
18
+ export {};
19
+ //# sourceMappingURL=acp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAajD,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,6DAA6D,CAAC;AAarE,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,KAAK,2BAA2B,GAC9B,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAEnF,KAAK,wBAAwB,GAAG,IAAI,CAClC,yBAAyB,EACzB,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAC/C,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAS3F,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB,CAEnG;AAED,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAWhC;AAWD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8B7F;AAiID,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,iBAAiB,CAcjG;AAQD,wBAAgB,gCAAgC,CAAC,OAAO,SAAkB,GAAG,OAAO,CAMnF;AA2GD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAsHvC"}