@samjurnio_/memento 0.2.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.
- package/LICENSE +202 -0
- package/README.md +144 -0
- package/dist/adapters/antigravity.d.ts +19 -0
- package/dist/adapters/antigravity.js +463 -0
- package/dist/adapters/antigravity.js.map +1 -0
- package/dist/adapters/claude-code.d.ts +14 -0
- package/dist/adapters/claude-code.js +213 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/codex.d.ts +12 -0
- package/dist/adapters/codex.js +247 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/gemini.d.ts +10 -0
- package/dist/adapters/gemini.js +171 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/opencode.d.ts +3 -0
- package/dist/adapters/opencode.js +137 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/pi.d.ts +6 -0
- package/dist/adapters/pi.js +172 -0
- package/dist/adapters/pi.js.map +1 -0
- package/dist/artifacts.d.ts +25 -0
- package/dist/artifacts.js +50 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/bench-live.d.ts +28 -0
- package/dist/bench-live.js +187 -0
- package/dist/bench-live.js.map +1 -0
- package/dist/bench.d.ts +33 -0
- package/dist/bench.js +213 -0
- package/dist/bench.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +338 -0
- package/dist/cli.js.map +1 -0
- package/dist/compile.d.ts +27 -0
- package/dist/compile.js +193 -0
- package/dist/compile.js.map +1 -0
- package/dist/git.d.ts +45 -0
- package/dist/git.js +172 -0
- package/dist/git.js.map +1 -0
- package/dist/handoff.d.ts +26 -0
- package/dist/handoff.js +80 -0
- package/dist/handoff.js.map +1 -0
- package/dist/hooks.d.ts +25 -0
- package/dist/hooks.js +114 -0
- package/dist/hooks.js.map +1 -0
- package/dist/ids.d.ts +10 -0
- package/dist/ids.js +32 -0
- package/dist/ids.js.map +1 -0
- package/dist/inject/antigravity.d.ts +7 -0
- package/dist/inject/antigravity.js +391 -0
- package/dist/inject/antigravity.js.map +1 -0
- package/dist/inject/claude-code.d.ts +15 -0
- package/dist/inject/claude-code.js +53 -0
- package/dist/inject/claude-code.js.map +1 -0
- package/dist/inject/codex.d.ts +7 -0
- package/dist/inject/codex.js +307 -0
- package/dist/inject/codex.js.map +1 -0
- package/dist/inject/dispatch.d.ts +11 -0
- package/dist/inject/dispatch.js +42 -0
- package/dist/inject/dispatch.js.map +1 -0
- package/dist/inject.d.ts +22 -0
- package/dist/inject.js +47 -0
- package/dist/inject.js.map +1 -0
- package/dist/ledger.d.ts +45 -0
- package/dist/ledger.js +50 -0
- package/dist/ledger.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.js +197 -0
- package/dist/mcp.js.map +1 -0
- package/dist/packet.d.ts +185 -0
- package/dist/packet.js +154 -0
- package/dist/packet.js.map +1 -0
- package/dist/redact.d.ts +19 -0
- package/dist/redact.js +86 -0
- package/dist/redact.js.map +1 -0
- package/dist/render.d.ts +11 -0
- package/dist/render.js +145 -0
- package/dist/render.js.map +1 -0
- package/dist/summarize.d.ts +35 -0
- package/dist/summarize.js +166 -0
- package/dist/summarize.js.map +1 -0
- package/package.json +61 -0
- package/schemas/packet.v1.schema.json +510 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import { readdirSync, statSync, readFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
import { truncate, cleanUserMessage } from "../ledger.js";
|
|
6
|
+
import { extractTarget } from "./claude-code.js";
|
|
7
|
+
/**
|
|
8
|
+
* Google Antigravity adapter: normalizes an agent conversation
|
|
9
|
+
* (~/.gemini/antigravity/conversations/<uuid>.db, SQLite) into a ledger.
|
|
10
|
+
*
|
|
11
|
+
* The step payloads are protobuf blobs with NO published schema, so this
|
|
12
|
+
* adapter is best-effort by construction: a generic wire-format walker
|
|
13
|
+
* extracts leaf strings, and the `steps.step_type` COLUMN (not the blob)
|
|
14
|
+
* classifies each step. The step_type map below was derived empirically
|
|
15
|
+
* from real local conversations (Antigravity 2026.x):
|
|
16
|
+
*
|
|
17
|
+
* 14 user message 15 model/assistant step
|
|
18
|
+
* 5 file write/replace 7 grep_search 8 view file
|
|
19
|
+
* 9 list_dir 21 run_command (args carry Cwd!)
|
|
20
|
+
* 31 read_url_content 33 search_web 132 manage_task
|
|
21
|
+
* 17 model error 98 injected conversation history
|
|
22
|
+
* 101 inter-agent messages 138 ask_question
|
|
23
|
+
*
|
|
24
|
+
* Tool steps embed a JSON args object (toolAction/toolSummary keys) followed
|
|
25
|
+
* by output text — one step carries BOTH call and result. Legacy `.pb`
|
|
26
|
+
* conversation files (pre-SQLite) are not supported.
|
|
27
|
+
*
|
|
28
|
+
* Requires node:sqlite (Node >= 22.5).
|
|
29
|
+
*/
|
|
30
|
+
const OUTCOME_MAX = 400;
|
|
31
|
+
const MESSAGE_MAX = 2000;
|
|
32
|
+
const TOOL_STEP_NAMES = {
|
|
33
|
+
5: "write_file",
|
|
34
|
+
7: "grep_search",
|
|
35
|
+
8: "view_file",
|
|
36
|
+
9: "list_dir",
|
|
37
|
+
21: "run_command",
|
|
38
|
+
31: "read_url_content",
|
|
39
|
+
33: "search_web",
|
|
40
|
+
132: "manage_task",
|
|
41
|
+
};
|
|
42
|
+
const UUID_LIKE = /^[0-9a-f-]{32,40}$/i;
|
|
43
|
+
/** Walk protobuf wire format without a schema, collecting leaf strings. */
|
|
44
|
+
export function extractProtoStrings(buffer, depth = 0) {
|
|
45
|
+
const out = [];
|
|
46
|
+
if (depth > 6) {
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
let offset = 0;
|
|
50
|
+
while (offset < buffer.length) {
|
|
51
|
+
const key = readVarint(buffer, offset);
|
|
52
|
+
if (!key) {
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
offset = key.next;
|
|
56
|
+
const wire = Number(key.value & 7n);
|
|
57
|
+
if (wire === 0) {
|
|
58
|
+
const v = readVarint(buffer, offset);
|
|
59
|
+
if (!v) {
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
offset = v.next;
|
|
63
|
+
}
|
|
64
|
+
else if (wire === 1) {
|
|
65
|
+
offset += 8;
|
|
66
|
+
}
|
|
67
|
+
else if (wire === 5) {
|
|
68
|
+
offset += 4;
|
|
69
|
+
}
|
|
70
|
+
else if (wire === 2) {
|
|
71
|
+
const len = readVarint(buffer, offset);
|
|
72
|
+
if (!len || Number(len.value) < 0) {
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
const start = len.next;
|
|
76
|
+
const end = start + Number(len.value);
|
|
77
|
+
if (end > buffer.length) {
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
const slice = buffer.subarray(start, end);
|
|
81
|
+
// Length-delimited = string OR submessage; recurse first, and if
|
|
82
|
+
// the slice is not valid wire format, treat it as a string.
|
|
83
|
+
const nested = slice.length > 1 ? extractProtoStrings(slice, depth + 1) : [];
|
|
84
|
+
if (nested.length > 0) {
|
|
85
|
+
out.push(...nested);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const text = decodePrintable(slice);
|
|
89
|
+
if (text) {
|
|
90
|
+
out.push(text);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
offset = end;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return out; // invalid wire type → not a message
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
function readVarint(buffer, offset) {
|
|
102
|
+
let value = 0n;
|
|
103
|
+
let shift = 0n;
|
|
104
|
+
let pos = offset;
|
|
105
|
+
while (pos < buffer.length && shift < 64n) {
|
|
106
|
+
const byte = buffer[pos] ?? 0;
|
|
107
|
+
value |= BigInt(byte & 0x7f) << shift;
|
|
108
|
+
pos += 1;
|
|
109
|
+
if ((byte & 0x80) === 0) {
|
|
110
|
+
return { value, next: pos };
|
|
111
|
+
}
|
|
112
|
+
shift += 7n;
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
function decodePrintable(slice) {
|
|
117
|
+
const text = slice.toString("utf8");
|
|
118
|
+
if (text.length < 3 || text.includes("ďż˝")) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
let printable = 0;
|
|
122
|
+
for (const ch of text) {
|
|
123
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
124
|
+
if (code >= 0x20 || code === 10 || code === 9) {
|
|
125
|
+
printable += 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return printable / text.length > 0.95 ? text : undefined;
|
|
129
|
+
}
|
|
130
|
+
function readSteps(dbPath) {
|
|
131
|
+
// Lazy require: node:sqlite needs Node >= 22.5; fail with guidance, not
|
|
132
|
+
// a module-load crash, and only when this adapter is actually used.
|
|
133
|
+
let DatabaseSync;
|
|
134
|
+
try {
|
|
135
|
+
({ DatabaseSync } = createRequire(import.meta.url)("node:sqlite"));
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
throw new Error("The antigravity adapter needs node:sqlite (Node >= 22.5).");
|
|
139
|
+
}
|
|
140
|
+
const db = new DatabaseSync(dbPath, { readOnly: true });
|
|
141
|
+
try {
|
|
142
|
+
return db
|
|
143
|
+
.prepare("SELECT idx, step_type, status, step_payload, error_details FROM steps ORDER BY idx")
|
|
144
|
+
.all();
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
db.close();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export function parseAntigravitySteps(steps, sourcePath) {
|
|
151
|
+
const events = [];
|
|
152
|
+
let seq = 0;
|
|
153
|
+
let sawUserMessage = false;
|
|
154
|
+
let callCounter = 0;
|
|
155
|
+
let cwd;
|
|
156
|
+
const push = (event) => {
|
|
157
|
+
events.push({ ...event, seq: seq++ });
|
|
158
|
+
};
|
|
159
|
+
for (const step of steps) {
|
|
160
|
+
const toolName = TOOL_STEP_NAMES[step.stepType];
|
|
161
|
+
if (toolName) {
|
|
162
|
+
const argsJson = step.strings.find((s) => s.startsWith("{") && safeJson(s));
|
|
163
|
+
const args = argsJson ? safeJson(argsJson) : undefined;
|
|
164
|
+
if (typeof args?.Cwd === "string") {
|
|
165
|
+
cwd = cwd ?? args.Cwd;
|
|
166
|
+
}
|
|
167
|
+
const callId = `agy_${callCounter++}`;
|
|
168
|
+
const tool = {
|
|
169
|
+
name: toolName,
|
|
170
|
+
callId,
|
|
171
|
+
...(args ? { input: args } : {}),
|
|
172
|
+
...(antigravityTarget(args) ? { target: antigravityTarget(args) } : {}),
|
|
173
|
+
};
|
|
174
|
+
push({ type: "tool.called", tool });
|
|
175
|
+
// One step holds call AND result: the output is the longest
|
|
176
|
+
// non-args, non-id string in the payload.
|
|
177
|
+
const outcome = step.strings
|
|
178
|
+
.filter((s) => s !== argsJson && !UUID_LIKE.test(s) && s.length > 8)
|
|
179
|
+
.sort((a, b) => b.length - a.length)[0];
|
|
180
|
+
push({
|
|
181
|
+
type: step.hasError ? "tool.failed" : "tool.completed",
|
|
182
|
+
tool: {
|
|
183
|
+
name: toolName,
|
|
184
|
+
callId,
|
|
185
|
+
outcome: truncate(outcome ?? "(no output captured)", OUTCOME_MAX),
|
|
186
|
+
isError: step.hasError,
|
|
187
|
+
...(tool.target ? { target: tool.target } : {}),
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (step.stepType === 14 || step.stepType === 15 || step.stepType === 17) {
|
|
193
|
+
// Longest plausible prose string — excluding ids, JSON args, and
|
|
194
|
+
// attachment URIs (a file:// mention must not displace the prose).
|
|
195
|
+
const text = step.strings
|
|
196
|
+
.filter((s) => !UUID_LIKE.test(s) && !s.startsWith("{")
|
|
197
|
+
&& !s.startsWith("file://") && !/^[a-z]+:\/\/\S+$/.test(s)
|
|
198
|
+
&& s.length >= 8)
|
|
199
|
+
.sort((a, b) => b.length - a.length)[0];
|
|
200
|
+
if (!text) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (step.stepType === 14) {
|
|
204
|
+
const cleanedText = cleanAntigravityContent(text);
|
|
205
|
+
if (!sawUserMessage) {
|
|
206
|
+
sawUserMessage = true;
|
|
207
|
+
push({ type: "task.started", content: truncate(cleanedText, MESSAGE_MAX) });
|
|
208
|
+
}
|
|
209
|
+
push({ type: "message.user", content: truncate(cleanedText, MESSAGE_MAX) });
|
|
210
|
+
}
|
|
211
|
+
else if (step.stepType === 15) {
|
|
212
|
+
push({ type: "message.assistant", content: truncate(text, MESSAGE_MAX) });
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
push({
|
|
216
|
+
type: "tool.failed",
|
|
217
|
+
tool: { name: "model", outcome: truncate(text, OUTCOME_MAX), isError: true },
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// 98 (history injection), 101 (inter-agent), 23, etc.: skipped.
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
sessionId: sourcePath ? (sourcePath.split("/").pop() ?? "unknown").replace(/\.db$/, "") : "unknown",
|
|
225
|
+
agent: "antigravity",
|
|
226
|
+
...(sourcePath ? { sourcePath } : {}),
|
|
227
|
+
...(cwd ? { cwd } : {}),
|
|
228
|
+
events,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function antigravityTarget(args) {
|
|
232
|
+
if (!args) {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
for (const key of ["CommandLine", "AbsolutePath", "DirectoryPath", "SearchPath", "Url", "Query", "query", "TargetFile"]) {
|
|
236
|
+
const value = args[key];
|
|
237
|
+
if (typeof value === "string" && value.trim()) {
|
|
238
|
+
return truncate(value, 160);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return extractTarget(args);
|
|
242
|
+
}
|
|
243
|
+
function safeJson(text) {
|
|
244
|
+
try {
|
|
245
|
+
return JSON.parse(text);
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export function loadAntigravityLedger(dbPath) {
|
|
252
|
+
if (dbPath.endsWith(".jsonl")) {
|
|
253
|
+
return loadAntigravityJsonlLedger(dbPath);
|
|
254
|
+
}
|
|
255
|
+
const rows = readSteps(dbPath);
|
|
256
|
+
return parseAntigravitySteps(rows.map((row) => ({
|
|
257
|
+
stepType: row.step_type,
|
|
258
|
+
status: row.status,
|
|
259
|
+
strings: row.step_payload ? extractProtoStrings(Buffer.from(row.step_payload)) : [],
|
|
260
|
+
hasError: row.error_details !== null && row.error_details !== undefined
|
|
261
|
+
&& row.error_details.length > 0,
|
|
262
|
+
})), dbPath);
|
|
263
|
+
}
|
|
264
|
+
function cleanValue(val) {
|
|
265
|
+
if (typeof val === "string") {
|
|
266
|
+
const s = val.trim();
|
|
267
|
+
if (s.startsWith('"') && s.endsWith('"')) {
|
|
268
|
+
try {
|
|
269
|
+
return JSON.parse(s);
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
return s.slice(1, -1);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return s;
|
|
276
|
+
}
|
|
277
|
+
return val;
|
|
278
|
+
}
|
|
279
|
+
function mapJsonlTypeToToolName(type) {
|
|
280
|
+
switch (type) {
|
|
281
|
+
case "RUN_COMMAND": return "run_command";
|
|
282
|
+
case "LIST_DIRECTORY": return "list_dir";
|
|
283
|
+
case "VIEW_FILE": return "view_file";
|
|
284
|
+
case "GREP_SEARCH": return "grep_search";
|
|
285
|
+
case "CODE_ACTION": return "write_file";
|
|
286
|
+
case "ASK_QUESTION": return "ask_question";
|
|
287
|
+
default: return "unknown";
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export function cleanAntigravityContent(content) {
|
|
291
|
+
return cleanUserMessage(content);
|
|
292
|
+
}
|
|
293
|
+
export function loadAntigravityJsonlLedger(filePath) {
|
|
294
|
+
const content = readFileSync(filePath, "utf8");
|
|
295
|
+
const lines = content.split("\n").filter((line) => line.trim().length > 0);
|
|
296
|
+
const events = [];
|
|
297
|
+
let seq = 0;
|
|
298
|
+
let sawUserMessage = false;
|
|
299
|
+
let callCounter = 0;
|
|
300
|
+
let cwd;
|
|
301
|
+
const push = (event) => {
|
|
302
|
+
events.push({ ...event, seq: seq++ });
|
|
303
|
+
};
|
|
304
|
+
const pendingToolCalls = [];
|
|
305
|
+
for (const line of lines) {
|
|
306
|
+
let step;
|
|
307
|
+
try {
|
|
308
|
+
step = JSON.parse(line);
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
const type = step.type;
|
|
314
|
+
const status = step.status;
|
|
315
|
+
if (type === "CONVERSATION_HISTORY" || type === "KNOWLEDGE_ARTIFACTS" || type === "SYSTEM_MESSAGE") {
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
if (type === "USER_INPUT") {
|
|
319
|
+
const text = step.content || "";
|
|
320
|
+
if (text) {
|
|
321
|
+
const cleanedText = cleanAntigravityContent(text);
|
|
322
|
+
if (!sawUserMessage) {
|
|
323
|
+
sawUserMessage = true;
|
|
324
|
+
push({ type: "task.started", content: truncate(cleanedText, MESSAGE_MAX) });
|
|
325
|
+
}
|
|
326
|
+
push({ type: "message.user", content: truncate(cleanedText, MESSAGE_MAX) });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else if (type === "PLANNER_RESPONSE") {
|
|
330
|
+
const text = step.content || "";
|
|
331
|
+
if (text) {
|
|
332
|
+
push({ type: "message.assistant", content: truncate(text, MESSAGE_MAX) });
|
|
333
|
+
}
|
|
334
|
+
if (Array.isArray(step.tool_calls)) {
|
|
335
|
+
for (const tc of step.tool_calls) {
|
|
336
|
+
const toolName = tc.name;
|
|
337
|
+
const rawArgs = tc.args;
|
|
338
|
+
const cleanArgs = {};
|
|
339
|
+
if (rawArgs && typeof rawArgs === "object") {
|
|
340
|
+
for (const [k, v] of Object.entries(rawArgs)) {
|
|
341
|
+
cleanArgs[k] = cleanValue(v);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (typeof cleanArgs.Cwd === "string") {
|
|
345
|
+
cwd = cwd ?? cleanArgs.Cwd;
|
|
346
|
+
}
|
|
347
|
+
const callId = `agy_${callCounter++}`;
|
|
348
|
+
const tool = {
|
|
349
|
+
name: toolName,
|
|
350
|
+
callId,
|
|
351
|
+
...(rawArgs ? { input: cleanArgs } : {}),
|
|
352
|
+
...(antigravityTarget(cleanArgs) ? { target: antigravityTarget(cleanArgs) } : {}),
|
|
353
|
+
};
|
|
354
|
+
push({ type: "tool.called", tool });
|
|
355
|
+
pendingToolCalls.push({ name: toolName, args: cleanArgs, callId });
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
else if (["RUN_COMMAND", "LIST_DIRECTORY", "VIEW_FILE", "GREP_SEARCH", "CODE_ACTION", "ASK_QUESTION", "ERROR_MESSAGE", "GENERIC"].includes(type)) {
|
|
360
|
+
const pending = pendingToolCalls.shift();
|
|
361
|
+
const toolName = pending?.name ?? mapJsonlTypeToToolName(type);
|
|
362
|
+
const callId = pending?.callId ?? `agy_${callCounter++}`;
|
|
363
|
+
const target = pending ? antigravityTarget(pending.args) : undefined;
|
|
364
|
+
const outcome = step.content || "";
|
|
365
|
+
const isError = status === "ERROR" || type === "ERROR_MESSAGE";
|
|
366
|
+
push({
|
|
367
|
+
type: isError ? "tool.failed" : "tool.completed",
|
|
368
|
+
tool: {
|
|
369
|
+
name: toolName,
|
|
370
|
+
callId,
|
|
371
|
+
outcome: truncate(outcome ?? "(no output captured)", OUTCOME_MAX),
|
|
372
|
+
isError,
|
|
373
|
+
...(target ? { target } : {}),
|
|
374
|
+
},
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const parts = filePath.split("/").filter(Boolean);
|
|
379
|
+
const sessionId = parts[parts.length - 4] ?? "unknown";
|
|
380
|
+
return {
|
|
381
|
+
sessionId,
|
|
382
|
+
agent: "antigravity",
|
|
383
|
+
sourcePath: filePath,
|
|
384
|
+
...(cwd ? { cwd } : {}),
|
|
385
|
+
events,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
const DISCOVERY_SCAN_LIMIT = 25;
|
|
389
|
+
/**
|
|
390
|
+
* Newest Antigravity conversation whose tool steps reference the workspace
|
|
391
|
+
* (via run_command Cwd or file-path args). Checks both the main install and
|
|
392
|
+
* the IDE-profile location. Legacy .pb conversations are skipped, but
|
|
393
|
+
* active .jsonl transcripts are supported.
|
|
394
|
+
*/
|
|
395
|
+
export function latestAntigravityConversation(workspaceDir, home = homedir()) {
|
|
396
|
+
const target = resolve(workspaceDir);
|
|
397
|
+
const candidates = [];
|
|
398
|
+
// 1. Scan SQLite DB files
|
|
399
|
+
for (const root of [
|
|
400
|
+
join(home, ".gemini", "antigravity", "conversations"),
|
|
401
|
+
join(home, ".gemini", "antigravity-ide", "conversations"),
|
|
402
|
+
]) {
|
|
403
|
+
let entries;
|
|
404
|
+
try {
|
|
405
|
+
entries = readdirSync(root);
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
for (const name of entries) {
|
|
411
|
+
if (!name.endsWith(".db")) {
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
const full = join(root, name);
|
|
415
|
+
try {
|
|
416
|
+
candidates.push({ path: full, mtime: statSync(full).mtimeMs });
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// 2. Scan active JSONL brain logs
|
|
424
|
+
for (const root of [
|
|
425
|
+
join(home, ".gemini", "antigravity", "brain"),
|
|
426
|
+
join(home, ".gemini", "antigravity-ide", "brain"),
|
|
427
|
+
]) {
|
|
428
|
+
let entries;
|
|
429
|
+
try {
|
|
430
|
+
entries = readdirSync(root);
|
|
431
|
+
}
|
|
432
|
+
catch {
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
for (const name of entries) {
|
|
436
|
+
const transcriptPath = join(root, name, ".system_generated", "logs", "transcript.jsonl");
|
|
437
|
+
try {
|
|
438
|
+
candidates.push({ path: transcriptPath, mtime: statSync(transcriptPath).mtimeMs });
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
candidates.sort((a, b) => b.mtime - a.mtime);
|
|
446
|
+
for (const candidate of candidates.slice(0, DISCOVERY_SCAN_LIMIT)) {
|
|
447
|
+
try {
|
|
448
|
+
const ledger = loadAntigravityLedger(candidate.path);
|
|
449
|
+
const touchesWorkspace = ledger.cwd === target
|
|
450
|
+
|| ledger.events.some((event) => event.tool?.target?.startsWith(target)
|
|
451
|
+
|| (typeof event.tool?.input?.Cwd === "string"
|
|
452
|
+
&& (event.tool?.input).Cwd === target));
|
|
453
|
+
if (touchesWorkspace) {
|
|
454
|
+
return candidate.path;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
return undefined;
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=antigravity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Ledger } from "../ledger.js";
|
|
2
|
+
export declare function parseClaudeTranscript(jsonl: string, sourcePath?: string): Ledger;
|
|
3
|
+
/** The one human-meaningful argument: path, command, url, pattern… (shared across adapters) */
|
|
4
|
+
export declare function extractTarget(input: unknown): string | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the matching tool name onto tool.completed/failed events by callId.
|
|
7
|
+
* Transcripts carry the name only on tool_use; results reference the id.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveToolNames(ledger: Ledger): Ledger;
|
|
10
|
+
/** ~/.claude/projects/<encoded-cwd>: every non [a-zA-Z0-9-] char becomes "-". */
|
|
11
|
+
export declare function claudeProjectDir(workspaceDir: string, home?: string): string;
|
|
12
|
+
/** Newest transcript JSONL for a workspace, or undefined when none exists. */
|
|
13
|
+
export declare function latestClaudeTranscript(workspaceDir: string, home?: string): string | undefined;
|
|
14
|
+
export declare function loadClaudeLedger(transcriptPath: string): Ledger;
|