@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
@@ -0,0 +1,265 @@
1
+ import { parseAcpxStdoutLine } from "@tickernelz/paperclip-pro-adapter-utils/acpx-engine/ui";
2
+ function safeJsonParse(text) {
3
+ try {
4
+ return JSON.parse(text);
5
+ }
6
+ catch {
7
+ return null;
8
+ }
9
+ }
10
+ function asRecord(value) {
11
+ if (typeof value !== "object" || value === null || Array.isArray(value))
12
+ return null;
13
+ return value;
14
+ }
15
+ function asString(value, fallback = "") {
16
+ return typeof value === "string" ? value : fallback;
17
+ }
18
+ function asNumber(value, fallback = 0) {
19
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
20
+ }
21
+ function stringifyUnknown(value) {
22
+ if (typeof value === "string")
23
+ return value;
24
+ if (value === null || value === undefined)
25
+ return "";
26
+ try {
27
+ return JSON.stringify(value, null, 2);
28
+ }
29
+ catch {
30
+ return String(value);
31
+ }
32
+ }
33
+ function errorText(value) {
34
+ if (typeof value === "string")
35
+ return value;
36
+ const rec = asRecord(value);
37
+ if (!rec)
38
+ return "";
39
+ const msg = (typeof rec.message === "string" && rec.message) ||
40
+ (typeof rec.error === "string" && rec.error) ||
41
+ (typeof rec.code === "string" && rec.code) ||
42
+ "";
43
+ if (msg)
44
+ return msg;
45
+ try {
46
+ return JSON.stringify(rec);
47
+ }
48
+ catch {
49
+ return "";
50
+ }
51
+ }
52
+ function collectTextEntries(messageRaw, ts, kind) {
53
+ if (typeof messageRaw === "string") {
54
+ const text = messageRaw.trim();
55
+ return text ? [{ kind, ts, text }] : [];
56
+ }
57
+ const message = asRecord(messageRaw);
58
+ if (!message)
59
+ return [];
60
+ const entries = [];
61
+ const directText = asString(message.text).trim();
62
+ if (directText)
63
+ entries.push({ kind, ts, text: directText });
64
+ const content = Array.isArray(message.content) ? message.content : [];
65
+ for (const partRaw of content) {
66
+ const part = asRecord(partRaw);
67
+ if (!part)
68
+ continue;
69
+ const type = asString(part.type).trim();
70
+ if (type !== "output_text" && type !== "text" && type !== "content")
71
+ continue;
72
+ const text = asString(part.text).trim() || asString(part.content).trim();
73
+ if (text)
74
+ entries.push({ kind, ts, text });
75
+ }
76
+ return entries;
77
+ }
78
+ function parseAssistantMessage(messageRaw, ts) {
79
+ if (typeof messageRaw === "string") {
80
+ const text = messageRaw.trim();
81
+ return text ? [{ kind: "assistant", ts, text }] : [];
82
+ }
83
+ const message = asRecord(messageRaw);
84
+ if (!message)
85
+ return [];
86
+ const entries = [];
87
+ const directText = asString(message.text).trim();
88
+ if (directText)
89
+ entries.push({ kind: "assistant", ts, text: directText });
90
+ const content = Array.isArray(message.content) ? message.content : [];
91
+ for (const partRaw of content) {
92
+ const part = asRecord(partRaw);
93
+ if (!part)
94
+ continue;
95
+ const type = asString(part.type).trim();
96
+ if (type === "output_text" || type === "text" || type === "content") {
97
+ const text = asString(part.text).trim() || asString(part.content).trim();
98
+ if (text)
99
+ entries.push({ kind: "assistant", ts, text });
100
+ continue;
101
+ }
102
+ if (type === "thinking") {
103
+ const text = asString(part.text).trim();
104
+ if (text)
105
+ entries.push({ kind: "thinking", ts, text });
106
+ continue;
107
+ }
108
+ if (type === "tool_call") {
109
+ const name = asString(part.name, asString(part.tool, "tool"));
110
+ entries.push({
111
+ kind: "tool_call",
112
+ ts,
113
+ name,
114
+ input: part.input ?? part.arguments ?? part.args ?? {},
115
+ });
116
+ continue;
117
+ }
118
+ if (type === "tool_result" || type === "tool_response") {
119
+ const toolUseId = asString(part.tool_use_id) ||
120
+ asString(part.toolUseId) ||
121
+ asString(part.call_id) ||
122
+ asString(part.id) ||
123
+ "tool_result";
124
+ const contentText = asString(part.output) ||
125
+ asString(part.text) ||
126
+ asString(part.result) ||
127
+ stringifyUnknown(part.output ?? part.result ?? part.text ?? part.response);
128
+ const isError = part.is_error === true || asString(part.status).toLowerCase() === "error";
129
+ entries.push({
130
+ kind: "tool_result",
131
+ ts,
132
+ toolUseId,
133
+ content: contentText,
134
+ isError,
135
+ });
136
+ }
137
+ }
138
+ return entries;
139
+ }
140
+ function parseTopLevelToolEvent(parsed, ts) {
141
+ const subtype = asString(parsed.subtype).trim().toLowerCase();
142
+ const callId = asString(parsed.call_id, asString(parsed.callId, asString(parsed.id, "tool_call")));
143
+ const toolCall = asRecord(parsed.tool_call ?? parsed.toolCall);
144
+ if (!toolCall) {
145
+ return [{ kind: "system", ts, text: `tool_call${subtype ? ` (${subtype})` : ""}` }];
146
+ }
147
+ const [toolName] = Object.keys(toolCall);
148
+ if (!toolName) {
149
+ return [{ kind: "system", ts, text: `tool_call${subtype ? ` (${subtype})` : ""}` }];
150
+ }
151
+ const payload = asRecord(toolCall[toolName]) ?? {};
152
+ if (subtype === "started" || subtype === "start") {
153
+ return [{
154
+ kind: "tool_call",
155
+ ts,
156
+ name: toolName,
157
+ input: payload.args ?? payload.input ?? payload.arguments ?? payload,
158
+ }];
159
+ }
160
+ if (subtype === "completed" || subtype === "complete" || subtype === "finished") {
161
+ const result = payload.result ?? payload.output ?? payload.error;
162
+ const isError = parsed.is_error === true ||
163
+ payload.is_error === true ||
164
+ payload.error !== undefined ||
165
+ asString(payload.status).toLowerCase() === "error";
166
+ return [{
167
+ kind: "tool_result",
168
+ ts,
169
+ toolUseId: callId,
170
+ content: result !== undefined ? stringifyUnknown(result) : `${toolName} completed`,
171
+ isError,
172
+ }];
173
+ }
174
+ return [{ kind: "system", ts, text: `tool_call${subtype ? ` (${subtype})` : ""}: ${toolName}` }];
175
+ }
176
+ function readSessionId(parsed) {
177
+ return (asString(parsed.session_id) ||
178
+ asString(parsed.sessionId) ||
179
+ asString(parsed.sessionID) ||
180
+ asString(parsed.checkpoint_id) ||
181
+ asString(parsed.thread_id));
182
+ }
183
+ function readUsage(parsed) {
184
+ const usage = asRecord(parsed.usage) ?? asRecord(parsed.usageMetadata) ?? asRecord(parsed.stats);
185
+ const usageMetadata = asRecord(usage?.usageMetadata);
186
+ const source = usageMetadata ?? usage ?? {};
187
+ return {
188
+ inputTokens: asNumber(source.input_tokens, asNumber(source.inputTokens, asNumber(source.promptTokenCount))),
189
+ outputTokens: asNumber(source.output_tokens, asNumber(source.outputTokens, asNumber(source.candidatesTokenCount))),
190
+ cachedTokens: asNumber(source.cached_input_tokens, asNumber(source.cachedInputTokens, asNumber(source.cachedContentTokenCount, asNumber(source.cached)))),
191
+ };
192
+ }
193
+ export function parseGeminiStdoutLine(line, ts) {
194
+ const parsed = asRecord(safeJsonParse(line));
195
+ if (!parsed) {
196
+ return [{ kind: "stdout", ts, text: line }];
197
+ }
198
+ const type = asString(parsed.type);
199
+ if (type.startsWith("acpx.")) {
200
+ return parseAcpxStdoutLine(line, ts);
201
+ }
202
+ if (type === "system") {
203
+ const subtype = asString(parsed.subtype);
204
+ if (subtype === "init") {
205
+ const sessionId = readSessionId(parsed);
206
+ return [{ kind: "init", ts, model: asString(parsed.model, "gemini"), sessionId }];
207
+ }
208
+ if (subtype === "error") {
209
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
210
+ return [{ kind: "stderr", ts, text: text || "error" }];
211
+ }
212
+ return [{ kind: "system", ts, text: `system: ${subtype || "event"}` }];
213
+ }
214
+ if (type === "assistant") {
215
+ return parseAssistantMessage(parsed.message, ts);
216
+ }
217
+ if (type === "user") {
218
+ return collectTextEntries(parsed.message, ts, "user");
219
+ }
220
+ // Gemini CLI v0.38+ stream-json schema:
221
+ // {"type":"message","role":"assistant"|"user","content":"...","delta":?true}
222
+ if (type === "message") {
223
+ const role = asString(parsed.role).trim().toLowerCase();
224
+ if (role === "assistant") {
225
+ return parseAssistantMessage(parsed.content, ts);
226
+ }
227
+ if (role === "user") {
228
+ return collectTextEntries(parsed.content, ts, "user");
229
+ }
230
+ return [];
231
+ }
232
+ if (type === "thinking") {
233
+ const text = asString(parsed.text).trim() || asString(asRecord(parsed.delta)?.text).trim();
234
+ return text ? [{ kind: "thinking", ts, text }] : [];
235
+ }
236
+ if (type === "tool_call") {
237
+ return parseTopLevelToolEvent(parsed, ts);
238
+ }
239
+ if (type === "result") {
240
+ const usage = readUsage(parsed);
241
+ const status = asString(parsed.status).toLowerCase();
242
+ const isError = parsed.is_error === true || status === "error" || status === "failed";
243
+ const errors = isError
244
+ ? [errorText(parsed.error ?? parsed.message ?? parsed.result)].filter(Boolean)
245
+ : [];
246
+ return [{
247
+ kind: "result",
248
+ ts,
249
+ text: asString(parsed.result) || asString(parsed.text) || asString(parsed.response),
250
+ inputTokens: usage.inputTokens,
251
+ outputTokens: usage.outputTokens,
252
+ cachedTokens: usage.cachedTokens,
253
+ costUsd: asNumber(parsed.total_cost_usd, asNumber(parsed.cost_usd, asNumber(parsed.cost))),
254
+ subtype: asString(parsed.subtype, status || "result"),
255
+ isError,
256
+ errors,
257
+ }];
258
+ }
259
+ if (type === "error") {
260
+ const text = errorText(parsed.error ?? parsed.message ?? parsed.detail);
261
+ return [{ kind: "stderr", ts, text: text || "error" }];
262
+ }
263
+ return [{ kind: "stdout", ts, text: line }];
264
+ }
265
+ //# sourceMappingURL=parse-stdout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.js","sourceRoot":"","sources":["../../src/ui/parse-stdout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse-stdout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.test.d.ts","sourceRoot":"","sources":["../../src/ui/parse-stdout.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { parseGeminiStdoutLine } from "./parse-stdout.js";
3
+ const ts = "2026-05-04T05:43:45.198Z";
4
+ describe("parseGeminiStdoutLine", () => {
5
+ it("renders v0.38 message+role:assistant as an assistant transcript entry", () => {
6
+ const line = JSON.stringify({
7
+ type: "message",
8
+ role: "assistant",
9
+ content: "hello.",
10
+ delta: true,
11
+ });
12
+ const entries = parseGeminiStdoutLine(line, ts);
13
+ expect(entries).toEqual([{ kind: "assistant", ts, text: "hello." }]);
14
+ });
15
+ it("renders v0.38 message+role:user as a user transcript entry", () => {
16
+ const line = JSON.stringify({
17
+ type: "message",
18
+ role: "user",
19
+ content: "Respond with hello.",
20
+ });
21
+ const entries = parseGeminiStdoutLine(line, ts);
22
+ expect(entries).toEqual([{ kind: "user", ts, text: "Respond with hello." }]);
23
+ });
24
+ it("preserves the legacy claude-style assistant event handler", () => {
25
+ const line = JSON.stringify({
26
+ type: "assistant",
27
+ message: { content: [{ type: "output_text", text: "legacy hello" }] },
28
+ });
29
+ const entries = parseGeminiStdoutLine(line, ts);
30
+ expect(entries).toEqual([{ kind: "assistant", ts, text: "legacy hello" }]);
31
+ });
32
+ it("reads token usage from v0.38 result.stats", () => {
33
+ const line = JSON.stringify({
34
+ type: "result",
35
+ status: "success",
36
+ stats: {
37
+ total_tokens: 9468,
38
+ input_tokens: 9095,
39
+ output_tokens: 29,
40
+ cached: 8132,
41
+ },
42
+ });
43
+ const [entry] = parseGeminiStdoutLine(line, ts);
44
+ expect(entry).toMatchObject({
45
+ kind: "result",
46
+ inputTokens: 9095,
47
+ outputTokens: 29,
48
+ cachedTokens: 8132,
49
+ isError: false,
50
+ subtype: "success",
51
+ });
52
+ });
53
+ it("flags v0.38 result.status=error as an error", () => {
54
+ const line = JSON.stringify({
55
+ type: "result",
56
+ status: "error",
57
+ error: "boom",
58
+ });
59
+ const [entry] = parseGeminiStdoutLine(line, ts);
60
+ expect(entry).toMatchObject({ kind: "result", isError: true, errors: ["boom"] });
61
+ });
62
+ it("ignores message events without an actionable role", () => {
63
+ const line = JSON.stringify({ type: "message", role: "system", content: "ignored" });
64
+ expect(parseGeminiStdoutLine(line, ts)).toEqual([]);
65
+ });
66
+ it("delegates ACPX events to the shared ACPX transcript parser", () => {
67
+ const line = JSON.stringify({ type: "acpx.text_delta", text: "hello from acp" });
68
+ expect(parseGeminiStdoutLine(line, ts)).toEqual([
69
+ { kind: "assistant", ts, text: "hello from acp", delta: true },
70
+ ]);
71
+ });
72
+ });
73
+ //# sourceMappingURL=parse-stdout.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.test.js","sourceRoot":"","sources":["../../src/ui/parse-stdout.test.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@tickernelz/paperclip-pro-adapter-gemini-local",
3
+ "version": "2026.925.0",
4
+ "license": "MIT",
5
+ "homepage": "https://github.com/tickernelz/paperclip-pro",
6
+ "bugs": {
7
+ "url": "https://github.com/tickernelz/paperclip-pro/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/tickernelz/paperclip-pro",
12
+ "directory": "packages/adapters/gemini-local"
13
+ },
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ },
20
+ "./server": {
21
+ "types": "./dist/server/index.d.ts",
22
+ "import": "./dist/server/index.js"
23
+ },
24
+ "./ui": {
25
+ "types": "./dist/ui/index.d.ts",
26
+ "import": "./dist/ui/index.js"
27
+ },
28
+ "./cli": {
29
+ "types": "./dist/cli/index.d.ts",
30
+ "import": "./dist/cli/index.js"
31
+ }
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "skills"
39
+ ],
40
+ "dependencies": {
41
+ "@tickernelz/paperclip-pro-adapter-utils": "2026.925.0",
42
+ "picocolors": "^1.1.1"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^24.0.0",
46
+ "typescript": "^7.0.2"
47
+ },
48
+ "engines": {
49
+ "node": ">=24.11.0"
50
+ },
51
+ "scripts": {
52
+ "build": "tsc",
53
+ "clean": "rm -rf dist",
54
+ "typecheck": "tsc --noEmit"
55
+ },
56
+ "main": "./dist/index.js",
57
+ "types": "./dist/index.d.ts"
58
+ }