@vortex-os/memory-extended 0.5.1

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 (181) hide show
  1. package/README.md +244 -0
  2. package/dist/consolidate/index.d.ts +7 -0
  3. package/dist/consolidate/index.d.ts.map +1 -0
  4. package/dist/consolidate/index.js +4 -0
  5. package/dist/consolidate/index.js.map +1 -0
  6. package/dist/consolidate/proposer.d.ts +43 -0
  7. package/dist/consolidate/proposer.d.ts.map +1 -0
  8. package/dist/consolidate/proposer.js +276 -0
  9. package/dist/consolidate/proposer.js.map +1 -0
  10. package/dist/consolidate/query.d.ts +32 -0
  11. package/dist/consolidate/query.d.ts.map +1 -0
  12. package/dist/consolidate/query.js +40 -0
  13. package/dist/consolidate/query.js.map +1 -0
  14. package/dist/consolidate/store.d.ts +21 -0
  15. package/dist/consolidate/store.d.ts.map +1 -0
  16. package/dist/consolidate/store.js +91 -0
  17. package/dist/consolidate/store.js.map +1 -0
  18. package/dist/consolidate/types.d.ts +68 -0
  19. package/dist/consolidate/types.d.ts.map +1 -0
  20. package/dist/consolidate/types.js +2 -0
  21. package/dist/consolidate/types.js.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +7 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/internal/frontmatter.d.ts +6 -0
  27. package/dist/internal/frontmatter.d.ts.map +1 -0
  28. package/dist/internal/frontmatter.js +38 -0
  29. package/dist/internal/frontmatter.js.map +1 -0
  30. package/dist/internal/proactive-curator-helpers.d.ts +171 -0
  31. package/dist/internal/proactive-curator-helpers.d.ts.map +1 -0
  32. package/dist/internal/proactive-curator-helpers.js +162 -0
  33. package/dist/internal/proactive-curator-helpers.js.map +1 -0
  34. package/dist/mcp/document-tools.d.ts +144 -0
  35. package/dist/mcp/document-tools.d.ts.map +1 -0
  36. package/dist/mcp/document-tools.js +319 -0
  37. package/dist/mcp/document-tools.js.map +1 -0
  38. package/dist/mcp/index.d.ts +34 -0
  39. package/dist/mcp/index.d.ts.map +1 -0
  40. package/dist/mcp/index.js +29 -0
  41. package/dist/mcp/index.js.map +1 -0
  42. package/dist/mcp/install.d.ts +72 -0
  43. package/dist/mcp/install.d.ts.map +1 -0
  44. package/dist/mcp/install.js +92 -0
  45. package/dist/mcp/install.js.map +1 -0
  46. package/dist/mcp/memory-tools.d.ts +101 -0
  47. package/dist/mcp/memory-tools.d.ts.map +1 -0
  48. package/dist/mcp/memory-tools.js +105 -0
  49. package/dist/mcp/memory-tools.js.map +1 -0
  50. package/dist/mcp/recall-tool.d.ts +52 -0
  51. package/dist/mcp/recall-tool.d.ts.map +1 -0
  52. package/dist/mcp/recall-tool.js +60 -0
  53. package/dist/mcp/recall-tool.js.map +1 -0
  54. package/dist/mcp/server.d.ts +32 -0
  55. package/dist/mcp/server.d.ts.map +1 -0
  56. package/dist/mcp/server.js +113 -0
  57. package/dist/mcp/server.js.map +1 -0
  58. package/dist/recall/engine.d.ts +38 -0
  59. package/dist/recall/engine.d.ts.map +1 -0
  60. package/dist/recall/engine.js +113 -0
  61. package/dist/recall/engine.js.map +1 -0
  62. package/dist/recall/index.d.ts +22 -0
  63. package/dist/recall/index.d.ts.map +1 -0
  64. package/dist/recall/index.js +20 -0
  65. package/dist/recall/index.js.map +1 -0
  66. package/dist/recall/intent.d.ts +24 -0
  67. package/dist/recall/intent.d.ts.map +1 -0
  68. package/dist/recall/intent.js +95 -0
  69. package/dist/recall/intent.js.map +1 -0
  70. package/dist/recall/render.d.ts +11 -0
  71. package/dist/recall/render.d.ts.map +1 -0
  72. package/dist/recall/render.js +23 -0
  73. package/dist/recall/render.js.map +1 -0
  74. package/dist/recall/types.d.ts +72 -0
  75. package/dist/recall/types.d.ts.map +1 -0
  76. package/dist/recall/types.js +2 -0
  77. package/dist/recall/types.js.map +1 -0
  78. package/dist/sessionArchive/adapters/claude-code.d.ts +3 -0
  79. package/dist/sessionArchive/adapters/claude-code.d.ts.map +1 -0
  80. package/dist/sessionArchive/adapters/claude-code.js +276 -0
  81. package/dist/sessionArchive/adapters/claude-code.js.map +1 -0
  82. package/dist/sessionArchive/adapters/claude-desktop.d.ts +3 -0
  83. package/dist/sessionArchive/adapters/claude-desktop.d.ts.map +1 -0
  84. package/dist/sessionArchive/adapters/claude-desktop.js +234 -0
  85. package/dist/sessionArchive/adapters/claude-desktop.js.map +1 -0
  86. package/dist/sessionArchive/adapters/codex.d.ts +3 -0
  87. package/dist/sessionArchive/adapters/codex.d.ts.map +1 -0
  88. package/dist/sessionArchive/adapters/codex.js +322 -0
  89. package/dist/sessionArchive/adapters/codex.js.map +1 -0
  90. package/dist/sessionArchive/adapters/gemini.d.ts +3 -0
  91. package/dist/sessionArchive/adapters/gemini.d.ts.map +1 -0
  92. package/dist/sessionArchive/adapters/gemini.js +248 -0
  93. package/dist/sessionArchive/adapters/gemini.js.map +1 -0
  94. package/dist/sessionArchive/adapters/index.d.ts +5 -0
  95. package/dist/sessionArchive/adapters/index.d.ts.map +1 -0
  96. package/dist/sessionArchive/adapters/index.js +5 -0
  97. package/dist/sessionArchive/adapters/index.js.map +1 -0
  98. package/dist/sessionArchive/index.d.ts +9 -0
  99. package/dist/sessionArchive/index.d.ts.map +1 -0
  100. package/dist/sessionArchive/index.js +6 -0
  101. package/dist/sessionArchive/index.js.map +1 -0
  102. package/dist/sessionArchive/ingest.d.ts +68 -0
  103. package/dist/sessionArchive/ingest.d.ts.map +1 -0
  104. package/dist/sessionArchive/ingest.js +134 -0
  105. package/dist/sessionArchive/ingest.js.map +1 -0
  106. package/dist/sessionArchive/normalize.d.ts +15 -0
  107. package/dist/sessionArchive/normalize.d.ts.map +1 -0
  108. package/dist/sessionArchive/normalize.js +40 -0
  109. package/dist/sessionArchive/normalize.js.map +1 -0
  110. package/dist/sessionArchive/store.d.ts +118 -0
  111. package/dist/sessionArchive/store.d.ts.map +1 -0
  112. package/dist/sessionArchive/store.js +491 -0
  113. package/dist/sessionArchive/store.js.map +1 -0
  114. package/dist/sessionArchive/types.d.ts +124 -0
  115. package/dist/sessionArchive/types.d.ts.map +1 -0
  116. package/dist/sessionArchive/types.js +24 -0
  117. package/dist/sessionArchive/types.js.map +1 -0
  118. package/dist/sqlite/drift.d.ts +22 -0
  119. package/dist/sqlite/drift.d.ts.map +1 -0
  120. package/dist/sqlite/drift.js +69 -0
  121. package/dist/sqlite/drift.js.map +1 -0
  122. package/dist/sqlite/index.d.ts +22 -0
  123. package/dist/sqlite/index.d.ts.map +1 -0
  124. package/dist/sqlite/index.js +4 -0
  125. package/dist/sqlite/index.js.map +1 -0
  126. package/dist/sqlite/rebuild.d.ts +32 -0
  127. package/dist/sqlite/rebuild.d.ts.map +1 -0
  128. package/dist/sqlite/rebuild.js +80 -0
  129. package/dist/sqlite/rebuild.js.map +1 -0
  130. package/dist/sqlite/schema.d.ts +15 -0
  131. package/dist/sqlite/schema.d.ts.map +1 -0
  132. package/dist/sqlite/schema.js +41 -0
  133. package/dist/sqlite/schema.js.map +1 -0
  134. package/dist/sqlite/store.d.ts +49 -0
  135. package/dist/sqlite/store.d.ts.map +1 -0
  136. package/dist/sqlite/store.js +179 -0
  137. package/dist/sqlite/store.js.map +1 -0
  138. package/dist/sqlite/types.d.ts +57 -0
  139. package/dist/sqlite/types.d.ts.map +1 -0
  140. package/dist/sqlite/types.js +2 -0
  141. package/dist/sqlite/types.js.map +1 -0
  142. package/dist/vector/backend-brute.d.ts +38 -0
  143. package/dist/vector/backend-brute.d.ts.map +1 -0
  144. package/dist/vector/backend-brute.js +112 -0
  145. package/dist/vector/backend-brute.js.map +1 -0
  146. package/dist/vector/embedder.d.ts +59 -0
  147. package/dist/vector/embedder.d.ts.map +1 -0
  148. package/dist/vector/embedder.js +47 -0
  149. package/dist/vector/embedder.js.map +1 -0
  150. package/dist/vector/index.d.ts +24 -0
  151. package/dist/vector/index.d.ts.map +1 -0
  152. package/dist/vector/index.js +7 -0
  153. package/dist/vector/index.js.map +1 -0
  154. package/dist/vector/math.d.ts +21 -0
  155. package/dist/vector/math.d.ts.map +1 -0
  156. package/dist/vector/math.js +34 -0
  157. package/dist/vector/math.js.map +1 -0
  158. package/dist/vector/schema.d.ts +14 -0
  159. package/dist/vector/schema.d.ts.map +1 -0
  160. package/dist/vector/schema.js +24 -0
  161. package/dist/vector/schema.js.map +1 -0
  162. package/dist/vector/segment.d.ts +65 -0
  163. package/dist/vector/segment.d.ts.map +1 -0
  164. package/dist/vector/segment.js +72 -0
  165. package/dist/vector/segment.js.map +1 -0
  166. package/dist/vector/session.d.ts +90 -0
  167. package/dist/vector/session.d.ts.map +1 -0
  168. package/dist/vector/session.js +242 -0
  169. package/dist/vector/session.js.map +1 -0
  170. package/dist/vector/store.d.ts +69 -0
  171. package/dist/vector/store.d.ts.map +1 -0
  172. package/dist/vector/store.js +131 -0
  173. package/dist/vector/store.js.map +1 -0
  174. package/dist/vector/types.d.ts +109 -0
  175. package/dist/vector/types.d.ts.map +1 -0
  176. package/dist/vector/types.js +24 -0
  177. package/dist/vector/types.js.map +1 -0
  178. package/package.json +96 -0
  179. package/scripts/mcp-stdio.mjs +143 -0
  180. package/scripts/rebuild-memory-sqlite.mjs +39 -0
  181. package/scripts/rebuild-memory-vector.mjs +64 -0
@@ -0,0 +1,322 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { stripAnsi } from "../normalize.js";
4
+ const HOST = "codex";
5
+ function sessionsRoot(env) {
6
+ return join(env.home, ".codex", "sessions");
7
+ }
8
+ async function dirExists(path) {
9
+ try {
10
+ const s = await fs.stat(path);
11
+ return s.isDirectory();
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ async function readJsonl(path) {
18
+ const text = await fs.readFile(path, "utf8");
19
+ const out = [];
20
+ for (const line of text.split(/\r?\n/)) {
21
+ if (line.trim() === "")
22
+ continue;
23
+ try {
24
+ out.push(JSON.parse(line));
25
+ }
26
+ catch { }
27
+ }
28
+ return out;
29
+ }
30
+ export const codexAdapter = {
31
+ host: HOST,
32
+ async detect(env) {
33
+ return dirExists(sessionsRoot(env));
34
+ },
35
+ async list(query, env) {
36
+ const root = sessionsRoot(env);
37
+ if (!(await dirExists(root)))
38
+ return [];
39
+ const sinceMs = query.since ? Date.parse(query.since) : Number.NaN;
40
+ const cwdFilter = query.cwd && !query.cwdAnywhere ? normalizeCwd(query.cwd, env) : null;
41
+ const out = [];
42
+ // YYYY/MM/DD/*.jsonl walk
43
+ for (const yr of await readSubdirs(root)) {
44
+ const yrDir = join(root, yr);
45
+ for (const mo of await readSubdirs(yrDir)) {
46
+ const moDir = join(yrDir, mo);
47
+ for (const dy of await readSubdirs(moDir)) {
48
+ const dyDir = join(moDir, dy);
49
+ // day-level since skip
50
+ if (Number.isFinite(sinceMs)) {
51
+ const dayUpperMs = Date.parse(`${yr}-${mo}-${dy}T23:59:59Z`);
52
+ if (Number.isFinite(dayUpperMs) && dayUpperMs < sinceMs)
53
+ continue;
54
+ }
55
+ for (const f of await fs.readdir(dyDir, { withFileTypes: true })) {
56
+ if (!f.isFile() || !f.name.endsWith(".jsonl"))
57
+ continue;
58
+ const path = join(dyDir, f.name);
59
+ const stat = await fs.stat(path);
60
+ if (Number.isFinite(sinceMs) && stat.mtimeMs < sinceMs)
61
+ continue;
62
+ let descCwd = "";
63
+ if (cwdFilter) {
64
+ const firstLineCwd = await peekFirstLineCwd(path);
65
+ if (firstLineCwd)
66
+ descCwd = firstLineCwd;
67
+ if (descCwd && normalizeCwd(descCwd, env) !== cwdFilter)
68
+ continue;
69
+ if (!descCwd)
70
+ continue; // cwd filter required but unknown — skip
71
+ }
72
+ out.push({
73
+ host: HOST,
74
+ sessionId: extractSessionId(f.name),
75
+ cwd: descCwd,
76
+ path,
77
+ mtimeMs: stat.mtimeMs,
78
+ bytes: stat.size, // feeds the ingest-time MAX_TRANSCRIPT_BYTES size cap
79
+ });
80
+ }
81
+ }
82
+ }
83
+ }
84
+ return out;
85
+ },
86
+ async read(descriptor) {
87
+ const rows = await readJsonl(descriptor.path);
88
+ return parseSession(descriptor, rows);
89
+ },
90
+ };
91
+ async function readSubdirs(dir) {
92
+ try {
93
+ const ents = await fs.readdir(dir, { withFileTypes: true });
94
+ return ents.filter((d) => d.isDirectory()).map((d) => d.name);
95
+ }
96
+ catch {
97
+ return [];
98
+ }
99
+ }
100
+ function extractSessionId(filename) {
101
+ // rollout-<ts>-<uuid>.jsonl → trailing uuid; fallback to stem
102
+ const stem = filename.replace(/\.jsonl$/, "");
103
+ const m = stem.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/i);
104
+ return m ? m[1] : stem;
105
+ }
106
+ // Cap on how far we read while hunting for the first newline. The cwd lives in
107
+ // the session_meta header (line 1); a sane header is well under this. Bounding
108
+ // the read keeps a pathological single-line file from being slurped whole just
109
+ // to peek at its cwd.
110
+ const PEEK_FIRST_LINE_MAX_BYTES = 64 * 1024;
111
+ async function peekFirstLineCwd(path) {
112
+ let handle;
113
+ try {
114
+ handle = await fs.open(path, "r");
115
+ const buf = Buffer.alloc(PEEK_FIRST_LINE_MAX_BYTES);
116
+ let used = 0;
117
+ let newlineAt = -1;
118
+ while (used < buf.length) {
119
+ const { bytesRead } = await handle.read(buf, used, buf.length - used, used);
120
+ if (bytesRead === 0)
121
+ break; // EOF before a newline
122
+ const nl = buf.indexOf(0x0a, used); // '\n'
123
+ if (nl >= 0 && nl < used + bytesRead) {
124
+ newlineAt = nl;
125
+ used += bytesRead;
126
+ break;
127
+ }
128
+ used += bytesRead;
129
+ }
130
+ const end = newlineAt >= 0 ? newlineAt : used;
131
+ const first = buf.toString("utf8", 0, end);
132
+ const obj = JSON.parse(first);
133
+ return pickString(obj, "payload", "cwd") ?? pickString(obj, "cwd") ?? null;
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ finally {
139
+ await handle?.close();
140
+ }
141
+ }
142
+ function normalizeCwd(cwd, env) {
143
+ const trimmed = cwd.replace(/[\\/]+$/, "");
144
+ return env.platform === "win32" ? trimmed.toLowerCase() : trimmed;
145
+ }
146
+ function parseSession(descriptor, rows) {
147
+ let cwd = descriptor.cwd;
148
+ let startedAt;
149
+ let endedAt;
150
+ let model;
151
+ let cliVersion;
152
+ const events = [];
153
+ let currentTurnId = "turn-0";
154
+ for (const raw of rows) {
155
+ if (!isObject(raw))
156
+ continue;
157
+ const type = raw["type"];
158
+ const payload = isObject(raw["payload"]) ? raw["payload"] : null;
159
+ const ts = pickString(raw, "timestamp") ?? pickString(raw, "ts") ?? "";
160
+ if (!startedAt && ts)
161
+ startedAt = ts;
162
+ if (ts)
163
+ endedAt = ts;
164
+ if (type === "session_meta" && payload) {
165
+ cwd ||= pickString(payload, "cwd") ?? cwd;
166
+ model ||= pickString(payload, "model") ?? model;
167
+ cliVersion ||= pickString(payload, "cliVersion") ?? pickString(payload, "version") ?? cliVersion;
168
+ events.push({ kind: "meta", at: ts, payload: raw });
169
+ continue;
170
+ }
171
+ if (type === "turn_context") {
172
+ events.push({ kind: "meta", at: ts, payload: raw });
173
+ continue;
174
+ }
175
+ if (type === "event_msg" && payload) {
176
+ const pType = payload["type"];
177
+ if (pType === "task_started") {
178
+ const tid = pickString(payload, "turn_id");
179
+ if (tid)
180
+ currentTurnId = tid;
181
+ events.push({ kind: "meta", at: ts, payload: raw });
182
+ continue;
183
+ }
184
+ if (pType === "task_complete") {
185
+ events.push({ kind: "meta", at: ts, payload: raw });
186
+ continue;
187
+ }
188
+ if (pType === "token_count") {
189
+ const tokensObj = pickObject(payload, ["tokens"]);
190
+ events.push({
191
+ kind: "usage",
192
+ turnId: currentTurnId,
193
+ at: ts,
194
+ inputTokens: numOrUndef(payload["input_tokens"] ?? tokensObj?.["input"]),
195
+ outputTokens: numOrUndef(payload["output_tokens"] ?? tokensObj?.["output"]),
196
+ hostRaw: raw,
197
+ });
198
+ continue;
199
+ }
200
+ // event_msg user_message / agent_message — emit as meta; the richer copy lives in response_item
201
+ events.push({ kind: "meta", at: ts, payload: raw });
202
+ continue;
203
+ }
204
+ if (type === "response_item" && payload) {
205
+ const pType = payload["type"];
206
+ if (pType === "message") {
207
+ const role = payload["role"];
208
+ const text = extractMessageText(payload["content"]);
209
+ if (role === "user") {
210
+ events.push({
211
+ kind: "user_message",
212
+ turnId: currentTurnId,
213
+ at: ts,
214
+ text: stripAnsi(text),
215
+ hostRaw: raw,
216
+ });
217
+ }
218
+ else if (role === "assistant") {
219
+ events.push({
220
+ kind: "assistant_message",
221
+ turnId: currentTurnId,
222
+ at: ts,
223
+ text: stripAnsi(text),
224
+ hostRaw: raw,
225
+ });
226
+ }
227
+ continue;
228
+ }
229
+ if (pType === "function_call") {
230
+ const name = pickString(payload, "name") ?? "function";
231
+ const callId = pickString(payload, "call_id") ?? pickString(payload, "id") ?? "";
232
+ const argsRaw = payload["arguments"];
233
+ const input = typeof argsRaw === "string" ? safeJsonParse(argsRaw) : argsRaw;
234
+ events.push({
235
+ kind: "tool_call",
236
+ turnId: currentTurnId,
237
+ at: ts,
238
+ name,
239
+ input,
240
+ toolUseId: callId,
241
+ hostRaw: raw,
242
+ });
243
+ continue;
244
+ }
245
+ if (pType === "function_call_output") {
246
+ const callId = pickString(payload, "call_id") ?? "";
247
+ const output = payload["output"];
248
+ const text = typeof output === "string" ? output : JSON.stringify(output ?? "");
249
+ events.push({
250
+ kind: "tool_result",
251
+ turnId: currentTurnId,
252
+ at: ts,
253
+ toolUseId: callId,
254
+ content: stripAnsi(text),
255
+ hostRaw: raw,
256
+ });
257
+ continue;
258
+ }
259
+ events.push({ kind: "meta", at: ts, payload: raw });
260
+ continue;
261
+ }
262
+ events.push({ kind: "meta", at: ts, payload: raw });
263
+ }
264
+ return {
265
+ host: HOST,
266
+ sessionId: descriptor.sessionId,
267
+ cwd: cwd ?? "",
268
+ startedAt: startedAt ?? new Date(descriptor.mtimeMs).toISOString(),
269
+ endedAt,
270
+ model,
271
+ cliVersion,
272
+ events,
273
+ };
274
+ }
275
+ function extractMessageText(content) {
276
+ if (typeof content === "string")
277
+ return content;
278
+ if (!Array.isArray(content))
279
+ return "";
280
+ return content
281
+ .map((b) => {
282
+ if (typeof b === "string")
283
+ return b;
284
+ if (isObject(b) && typeof b["text"] === "string")
285
+ return b["text"];
286
+ return "";
287
+ })
288
+ .join("");
289
+ }
290
+ function safeJsonParse(s) {
291
+ try {
292
+ return JSON.parse(s);
293
+ }
294
+ catch {
295
+ return s;
296
+ }
297
+ }
298
+ function isObject(x) {
299
+ return typeof x === "object" && x !== null && !Array.isArray(x);
300
+ }
301
+ function pickString(x, ...keys) {
302
+ let cur = x;
303
+ for (const k of keys) {
304
+ if (!isObject(cur))
305
+ return undefined;
306
+ cur = cur[k];
307
+ }
308
+ return typeof cur === "string" ? cur : undefined;
309
+ }
310
+ function pickObject(x, path) {
311
+ let cur = x;
312
+ for (const k of path) {
313
+ if (!isObject(cur))
314
+ return undefined;
315
+ cur = cur[k];
316
+ }
317
+ return isObject(cur) ? cur : undefined;
318
+ }
319
+ function numOrUndef(x) {
320
+ return typeof x === "number" ? x : undefined;
321
+ }
322
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/sessionArchive/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { TranscriptAdapter } from "../types.js";
2
+ export declare const geminiAdapter: TranscriptAdapter;
3
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/sessionArchive/adapters/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAuDrB,eAAO,MAAM,aAAa,EAAE,iBAuD3B,CAAC"}
@@ -0,0 +1,248 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { stripAnsi } from "../normalize.js";
4
+ const HOST = "gemini";
5
+ function geminiRoot(env) {
6
+ return join(env.home, ".gemini");
7
+ }
8
+ async function fileExists(path) {
9
+ try {
10
+ const s = await fs.stat(path);
11
+ return s.isFile();
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ async function readJson(path) {
18
+ const text = await fs.readFile(path, "utf8");
19
+ return JSON.parse(text);
20
+ }
21
+ async function readJsonl(path) {
22
+ const text = await fs.readFile(path, "utf8");
23
+ const out = [];
24
+ for (const line of text.split(/\r?\n/)) {
25
+ if (line.trim() === "")
26
+ continue;
27
+ try {
28
+ out.push(JSON.parse(line));
29
+ }
30
+ catch { }
31
+ }
32
+ return out;
33
+ }
34
+ async function loadProjectsMap(env) {
35
+ const path = join(geminiRoot(env), "projects.json");
36
+ if (!(await fileExists(path)))
37
+ return null;
38
+ try {
39
+ const parsed = await readJson(path);
40
+ if (!isObject(parsed))
41
+ return null;
42
+ const out = {};
43
+ for (const [k, v] of Object.entries(parsed)) {
44
+ if (typeof v === "string")
45
+ out[k.toLowerCase()] = v;
46
+ else if (isObject(v) && typeof v["name"] === "string")
47
+ out[k.toLowerCase()] = v["name"];
48
+ }
49
+ return out;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ export const geminiAdapter = {
56
+ host: HOST,
57
+ async detect(env) {
58
+ return fileExists(join(geminiRoot(env), "projects.json"));
59
+ },
60
+ async list(query, env) {
61
+ const map = await loadProjectsMap(env);
62
+ if (!map)
63
+ return [];
64
+ const sinceMs = query.since ? Date.parse(query.since) : Number.NaN;
65
+ const cwdKey = query.cwd && !query.cwdAnywhere ? normalizeCwd(query.cwd, env) : null;
66
+ let projects;
67
+ if (cwdKey) {
68
+ const name = map[cwdKey];
69
+ if (!name)
70
+ return [];
71
+ projects = [{ cwdLower: cwdKey, name }];
72
+ }
73
+ else {
74
+ projects = Object.entries(map).map(([cwdLower, name]) => ({ cwdLower, name }));
75
+ }
76
+ const out = [];
77
+ for (const proj of projects) {
78
+ const chatsDir = join(geminiRoot(env), "tmp", proj.name, "chats");
79
+ let files = [];
80
+ try {
81
+ files = await fs.readdir(chatsDir, { withFileTypes: true });
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ for (const f of files) {
87
+ if (!f.isFile() || !f.name.endsWith(".jsonl"))
88
+ continue;
89
+ const path = join(chatsDir, f.name);
90
+ const stat = await fs.stat(path);
91
+ if (Number.isFinite(sinceMs) && stat.mtimeMs < sinceMs)
92
+ continue;
93
+ out.push({
94
+ host: HOST,
95
+ sessionId: extractSessionId(f.name),
96
+ cwd: proj.cwdLower,
97
+ path,
98
+ mtimeMs: stat.mtimeMs,
99
+ bytes: stat.size, // feeds the ingest-time MAX_TRANSCRIPT_BYTES size cap
100
+ });
101
+ }
102
+ }
103
+ return out;
104
+ },
105
+ async read(descriptor) {
106
+ const rows = await readJsonl(descriptor.path);
107
+ return parseSession(descriptor, rows);
108
+ },
109
+ };
110
+ function extractSessionId(filename) {
111
+ // session-<ts>-<short-id>.jsonl → use whole stem; the file is the session identity
112
+ return filename.replace(/\.jsonl$/, "");
113
+ }
114
+ function normalizeCwd(cwd, env) {
115
+ const trimmed = cwd.replace(/[\\/]+$/, "");
116
+ return env.platform === "win32" ? trimmed.toLowerCase() : trimmed;
117
+ }
118
+ function parseSession(descriptor, rows) {
119
+ let cwd = descriptor.cwd;
120
+ let startedAt;
121
+ let endedAt;
122
+ let model;
123
+ let cliVersion;
124
+ const events = [];
125
+ let currentTurnId = "turn-0";
126
+ let turnCounter = 0;
127
+ let isFirstRow = true;
128
+ for (const raw of rows) {
129
+ if (!isObject(raw))
130
+ continue;
131
+ const type = raw["type"];
132
+ // First row is the session header {sessionId, projectHash, startTime, kind:"main"}
133
+ if (isFirstRow) {
134
+ isFirstRow = false;
135
+ const startTime = pickString(raw, "startTime") ?? pickString(raw, "started_at");
136
+ if (startTime) {
137
+ startedAt = startTime;
138
+ }
139
+ if (type === undefined && (pickString(raw, "sessionId") || pickString(raw, "projectHash"))) {
140
+ events.push({ kind: "meta", at: startedAt ?? "", payload: raw });
141
+ continue;
142
+ }
143
+ // not a header — fall through and process normally
144
+ }
145
+ const ts = pickString(raw, "ts") ?? pickString(raw, "timestamp") ?? pickString(raw, "time") ?? "";
146
+ if (!startedAt && ts)
147
+ startedAt = ts;
148
+ if (ts)
149
+ endedAt = ts;
150
+ // Drop pure-state mutation markers (Gemini emits these for in-memory state sync)
151
+ if ("$set" in raw && Object.keys(raw).length === 1)
152
+ continue;
153
+ if (type === undefined && "$set" in raw)
154
+ continue;
155
+ if (type === "gemini.model") {
156
+ model ||= pickString(raw, "model") ?? pickString(raw, "name") ?? model;
157
+ events.push({ kind: "meta", at: ts, payload: raw });
158
+ continue;
159
+ }
160
+ if (type === "gemini.tokens" || type === "tokens") {
161
+ events.push({
162
+ kind: "usage",
163
+ turnId: currentTurnId,
164
+ at: ts,
165
+ inputTokens: numOrUndef(raw["input"] ?? raw["inputTokens"]),
166
+ outputTokens: numOrUndef(raw["output"] ?? raw["outputTokens"]),
167
+ cachedTokens: numOrUndef(raw["cached"] ?? raw["cachedTokens"]),
168
+ hostRaw: raw,
169
+ });
170
+ continue;
171
+ }
172
+ if (type === "user") {
173
+ currentTurnId = `turn-${turnCounter++}`;
174
+ const text = extractContentText(raw["content"]);
175
+ events.push({
176
+ kind: "user_message",
177
+ turnId: currentTurnId,
178
+ at: ts,
179
+ text: stripAnsi(text),
180
+ hostRaw: raw,
181
+ });
182
+ continue;
183
+ }
184
+ if (type === "gemini") {
185
+ const text = extractContentText(raw["content"]);
186
+ const thoughts = raw["thoughts"];
187
+ let thinking;
188
+ if (typeof thoughts === "string")
189
+ thinking = thoughts;
190
+ else if (Array.isArray(thoughts)) {
191
+ thinking = thoughts
192
+ .map((t) => (typeof t === "string" ? t : isObject(t) && typeof t["text"] === "string" ? t["text"] : ""))
193
+ .join("");
194
+ }
195
+ events.push({
196
+ kind: "assistant_message",
197
+ turnId: currentTurnId,
198
+ at: ts,
199
+ text: stripAnsi(text),
200
+ thinking: thinking || undefined,
201
+ hostRaw: raw,
202
+ });
203
+ continue;
204
+ }
205
+ events.push({ kind: "meta", at: ts, payload: raw });
206
+ }
207
+ return {
208
+ host: HOST,
209
+ sessionId: descriptor.sessionId,
210
+ cwd: cwd ?? "",
211
+ startedAt: startedAt ?? new Date(descriptor.mtimeMs).toISOString(),
212
+ endedAt,
213
+ model,
214
+ cliVersion,
215
+ events,
216
+ };
217
+ }
218
+ function extractContentText(content) {
219
+ if (typeof content === "string")
220
+ return content;
221
+ if (!Array.isArray(content))
222
+ return "";
223
+ return content
224
+ .map((b) => {
225
+ if (typeof b === "string")
226
+ return b;
227
+ if (isObject(b) && typeof b["text"] === "string")
228
+ return b["text"];
229
+ return "";
230
+ })
231
+ .join("");
232
+ }
233
+ function isObject(x) {
234
+ return typeof x === "object" && x !== null && !Array.isArray(x);
235
+ }
236
+ function pickString(x, ...keys) {
237
+ let cur = x;
238
+ for (const k of keys) {
239
+ if (!isObject(cur))
240
+ return undefined;
241
+ cur = cur[k];
242
+ }
243
+ return typeof cur === "string" ? cur : undefined;
244
+ }
245
+ function numOrUndef(x) {
246
+ return typeof x === "number" ? x : undefined;
247
+ }
248
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/sessionArchive/adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { claudeCodeAdapter } from "./claude-code.js";
2
+ export { codexAdapter } from "./codex.js";
3
+ export { geminiAdapter } from "./gemini.js";
4
+ export { claudeDesktopAdapter } from "./claude-desktop.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sessionArchive/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { claudeCodeAdapter } from "./claude-code.js";
2
+ export { codexAdapter } from "./codex.js";
3
+ export { geminiAdapter } from "./gemini.js";
4
+ export { claudeDesktopAdapter } from "./claude-desktop.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sessionArchive/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type { HostId, VortexTranscriptSession, VortexTranscriptEvent, UserMessageEvent, AssistantMessageEvent, ToolCallEvent, ToolResultEvent, AttachmentEvent, UsageEvent, MetaEvent, SessionDescriptor, AdapterEnv, ListQuery, TranscriptAdapter, AdapterOptions, } from "./types.js";
2
+ export { ClaudeDesktopRunningError, MAX_TRANSCRIPT_BYTES } from "./types.js";
3
+ export { SessionArchiveStore } from "./store.js";
4
+ export type { EventRow, IngestedRow, ListSessionsOptions, SessionMetadataRow, } from "./store.js";
5
+ export { ingest } from "./ingest.js";
6
+ export type { IngestParams, IngestResult, ProgressEvent } from "./ingest.js";
7
+ export { stripAnsi, applyRedact, deriveTurnIdsByUserBoundary } from "./normalize.js";
8
+ export { claudeCodeAdapter, codexAdapter, geminiAdapter, claudeDesktopAdapter, } from "./adapters/index.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessionArchive/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { ClaudeDesktopRunningError, MAX_TRANSCRIPT_BYTES } from "./types.js";
2
+ export { SessionArchiveStore } from "./store.js";
3
+ export { ingest } from "./ingest.js";
4
+ export { stripAnsi, applyRedact, deriveTurnIdsByUserBoundary } from "./normalize.js";
5
+ export { claudeCodeAdapter, codexAdapter, geminiAdapter, claudeDesktopAdapter, } from "./adapters/index.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sessionArchive/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}