@logsesh/core 0.1.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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/dist/adapters/claude-code.d.ts +3 -0
  4. package/dist/adapters/claude-code.d.ts.map +1 -0
  5. package/dist/adapters/claude-code.js +307 -0
  6. package/dist/adapters/claude-code.js.map +1 -0
  7. package/dist/adapters/codex-schemas.d.ts +59 -0
  8. package/dist/adapters/codex-schemas.d.ts.map +1 -0
  9. package/dist/adapters/codex-schemas.js +70 -0
  10. package/dist/adapters/codex-schemas.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +3 -0
  12. package/dist/adapters/codex.d.ts.map +1 -0
  13. package/dist/adapters/codex.js +293 -0
  14. package/dist/adapters/codex.js.map +1 -0
  15. package/dist/adapters/gemini.d.ts +3 -0
  16. package/dist/adapters/gemini.d.ts.map +1 -0
  17. package/dist/adapters/gemini.js +193 -0
  18. package/dist/adapters/gemini.js.map +1 -0
  19. package/dist/adapters/index.d.ts +14 -0
  20. package/dist/adapters/index.d.ts.map +1 -0
  21. package/dist/adapters/index.js +64 -0
  22. package/dist/adapters/index.js.map +1 -0
  23. package/dist/discovery.d.ts +20 -0
  24. package/dist/discovery.d.ts.map +1 -0
  25. package/dist/discovery.js +115 -0
  26. package/dist/discovery.js.map +1 -0
  27. package/dist/doctor.d.ts +32 -0
  28. package/dist/doctor.d.ts.map +1 -0
  29. package/dist/doctor.js +68 -0
  30. package/dist/doctor.js.map +1 -0
  31. package/dist/export-safety.d.ts +6 -0
  32. package/dist/export-safety.d.ts.map +1 -0
  33. package/dist/export-safety.js +36 -0
  34. package/dist/export-safety.js.map +1 -0
  35. package/dist/exporters/csv.d.ts +4 -0
  36. package/dist/exporters/csv.d.ts.map +1 -0
  37. package/dist/exporters/csv.js +38 -0
  38. package/dist/exporters/csv.js.map +1 -0
  39. package/dist/exporters/json.d.ts +4 -0
  40. package/dist/exporters/json.d.ts.map +1 -0
  41. package/dist/exporters/json.js +14 -0
  42. package/dist/exporters/json.js.map +1 -0
  43. package/dist/exporters/jsonl.d.ts +4 -0
  44. package/dist/exporters/jsonl.d.ts.map +1 -0
  45. package/dist/exporters/jsonl.js +13 -0
  46. package/dist/exporters/jsonl.js.map +1 -0
  47. package/dist/exporters/markdown.d.ts +4 -0
  48. package/dist/exporters/markdown.d.ts.map +1 -0
  49. package/dist/exporters/markdown.js +29 -0
  50. package/dist/exporters/markdown.js.map +1 -0
  51. package/dist/exporters/stream.d.ts +13 -0
  52. package/dist/exporters/stream.d.ts.map +1 -0
  53. package/dist/exporters/stream.js +33 -0
  54. package/dist/exporters/stream.js.map +1 -0
  55. package/dist/filters.d.ts +3 -0
  56. package/dist/filters.d.ts.map +1 -0
  57. package/dist/filters.js +38 -0
  58. package/dist/filters.js.map +1 -0
  59. package/dist/fs-walk.d.ts +7 -0
  60. package/dist/fs-walk.d.ts.map +1 -0
  61. package/dist/fs-walk.js +64 -0
  62. package/dist/fs-walk.js.map +1 -0
  63. package/dist/index.d.ts +27 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +23 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/infer-tool.d.ts +8 -0
  68. package/dist/infer-tool.d.ts.map +1 -0
  69. package/dist/infer-tool.js +85 -0
  70. package/dist/infer-tool.js.map +1 -0
  71. package/dist/model-resolution.d.ts +13 -0
  72. package/dist/model-resolution.d.ts.map +1 -0
  73. package/dist/model-resolution.js +57 -0
  74. package/dist/model-resolution.js.map +1 -0
  75. package/dist/pipeline.d.ts +9 -0
  76. package/dist/pipeline.d.ts.map +1 -0
  77. package/dist/pipeline.js +152 -0
  78. package/dist/pipeline.js.map +1 -0
  79. package/dist/pricing.d.ts +8 -0
  80. package/dist/pricing.d.ts.map +1 -0
  81. package/dist/pricing.js +139 -0
  82. package/dist/pricing.js.map +1 -0
  83. package/dist/query.d.ts +15 -0
  84. package/dist/query.d.ts.map +1 -0
  85. package/dist/query.js +63 -0
  86. package/dist/query.js.map +1 -0
  87. package/dist/redact.d.ts +9 -0
  88. package/dist/redact.d.ts.map +1 -0
  89. package/dist/redact.js +57 -0
  90. package/dist/redact.js.map +1 -0
  91. package/dist/sanitize.d.ts +15 -0
  92. package/dist/sanitize.d.ts.map +1 -0
  93. package/dist/sanitize.js +72 -0
  94. package/dist/sanitize.js.map +1 -0
  95. package/dist/schemas.d.ts +701 -0
  96. package/dist/schemas.d.ts.map +1 -0
  97. package/dist/schemas.js +266 -0
  98. package/dist/schemas.js.map +1 -0
  99. package/dist/search.d.ts +11 -0
  100. package/dist/search.d.ts.map +1 -0
  101. package/dist/search.js +87 -0
  102. package/dist/search.js.map +1 -0
  103. package/dist/session-builder.d.ts +23 -0
  104. package/dist/session-builder.d.ts.map +1 -0
  105. package/dist/session-builder.js +296 -0
  106. package/dist/session-builder.js.map +1 -0
  107. package/dist/stats.d.ts +22 -0
  108. package/dist/stats.d.ts.map +1 -0
  109. package/dist/stats.js +82 -0
  110. package/dist/stats.js.map +1 -0
  111. package/dist/types.d.ts +292 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +2 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/util.d.ts +26 -0
  116. package/dist/util.d.ts.map +1 -0
  117. package/dist/util.js +70 -0
  118. package/dist/util.js.map +1 -0
  119. package/dist/warnings.d.ts +13 -0
  120. package/dist/warnings.d.ts.map +1 -0
  121. package/dist/warnings.js +38 -0
  122. package/dist/warnings.js.map +1 -0
  123. package/package.json +62 -0
  124. package/pricing/models.json +600 -0
  125. package/schemas/debug-envelope.json +494 -0
  126. package/schemas/doctor-envelope.json +234 -0
  127. package/schemas/json-export-envelope.json +79 -0
  128. package/schemas/jsonl-record.json +68 -0
  129. package/schemas/list-envelope.json +217 -0
  130. package/schemas/public-session.json +404 -0
  131. package/schemas/search-envelope.json +108 -0
  132. package/schemas/session.json +428 -0
  133. package/schemas/stats-envelope.json +203 -0
@@ -0,0 +1,293 @@
1
+ import { CodexModelTracker, looksLikeModelId } from "../model-resolution.js";
2
+ import { SessionBuilder } from "../session-builder.js";
3
+ import { detectRootAccess, walkFiles } from "../fs-walk.js";
4
+ import { parseJsonLine, readJsonlLines, sessionFileNameId } from "../util.js";
5
+ import { homedir } from "node:os";
6
+ import { join } from "node:path";
7
+ import { codexFunctionCallOutputPayloadSchema, codexFunctionCallPayloadSchema, codexLineSchema, codexMessagePayloadSchema, codexSessionMetaPayloadSchema, codexTokenCountPayloadSchema, codexTurnContextPayloadSchema, codexWebSearchPayloadSchema, parseCodexPayload, requireCallId, } from "./codex-schemas.js";
8
+ const ADAPTER_VERSION = "0.1.1";
9
+ function codexRoot(opts) {
10
+ return opts.roots?.codex ?? join(homedir(), ".codex", "sessions");
11
+ }
12
+ function mapCodexUsage(u) {
13
+ return {
14
+ inputTokens: u.input_tokens,
15
+ outputTokens: u.output_tokens,
16
+ cacheReadTokens: u.cached_input_tokens,
17
+ reasoningTokens: u.reasoning_output_tokens,
18
+ totalTokens: u.total_tokens,
19
+ };
20
+ }
21
+ function codexModelFromMeta(meta) {
22
+ if (meta.model && looksLikeModelId(meta.model))
23
+ return meta.model;
24
+ if (meta.model_provider && looksLikeModelId(meta.model_provider))
25
+ return meta.model_provider;
26
+ return undefined;
27
+ }
28
+ function messageText(content) {
29
+ if (!Array.isArray(content))
30
+ return "";
31
+ return content
32
+ .map((part) => {
33
+ if (!part || typeof part !== "object")
34
+ return "";
35
+ const text = part.text;
36
+ return typeof text === "string" ? text : "";
37
+ })
38
+ .filter(Boolean)
39
+ .join("\n");
40
+ }
41
+ export const codexAdapter = {
42
+ tool: "codex",
43
+ adapterVersion: ADAPTER_VERSION,
44
+ capabilities: {
45
+ discovery: "full",
46
+ transcript: "partial",
47
+ toolCalls: "full",
48
+ usage: "full",
49
+ model: "partial",
50
+ reasoning: "partial",
51
+ notes: [
52
+ "Developer and system messages are skipped.",
53
+ "Encrypted reasoning blobs are not exported; summaries are captured when present.",
54
+ "Model is resolved from session_meta and turn_context; bare provider names are ignored.",
55
+ ],
56
+ },
57
+ async detect() {
58
+ const { accessible } = await detectRootAccess(codexRoot({}), "codex");
59
+ return accessible;
60
+ },
61
+ async *discover(opts) {
62
+ const root = codexRoot(opts);
63
+ for await (const path of walkFiles(root, (_full, name, isDirectory) => isDirectory ? true : name.startsWith("rollout-") && name.endsWith(".jsonl"))) {
64
+ if (opts.since || opts.until) {
65
+ const match = path.match(/\/sessions\/(\d{4})\/(\d{2})\/(\d{2})\//);
66
+ if (match) {
67
+ const fileDate = new Date(`${match[1]}-${match[2]}-${match[3]}T00:00:00Z`);
68
+ if (opts.since && fileDate < opts.since)
69
+ continue;
70
+ if (opts.until && fileDate > opts.until)
71
+ continue;
72
+ }
73
+ }
74
+ yield { path, tool: "codex" };
75
+ }
76
+ },
77
+ async *parse(file, opts) {
78
+ let sessionId = sessionFileNameId(file.path);
79
+ let projectPath;
80
+ const modelTracker = new CodexModelTracker();
81
+ let lastTokenUsage;
82
+ let sawTokenCount = false;
83
+ let sawUsableTokenCount = false;
84
+ let stepCounter = 0;
85
+ const builder = new SessionBuilder({
86
+ tool: "codex",
87
+ adapterVersion: ADAPTER_VERSION,
88
+ sourcePath: file.path,
89
+ sessionId,
90
+ maxTurnChars: opts.maxTurnChars,
91
+ maxToolOutputChars: opts.maxToolOutputChars,
92
+ });
93
+ const readResult = await readJsonlLines(file.path, (line, lineNumber) => {
94
+ const parsed = parseJsonLine(line, lineNumber, file.path);
95
+ if (!parsed.ok) {
96
+ builder.addWarning({
97
+ code: "malformed_line",
98
+ message: parsed.error,
99
+ severity: "warn",
100
+ scope: "parse",
101
+ sourcePath: file.path,
102
+ sessionId,
103
+ line: lineNumber,
104
+ });
105
+ return;
106
+ }
107
+ const lineParsed = codexLineSchema.safeParse(parsed.value);
108
+ if (!lineParsed.success) {
109
+ builder.addWarning({
110
+ code: "invalid_line_shape",
111
+ message: `Line ${lineNumber}: invalid Codex record shape`,
112
+ severity: "warn",
113
+ scope: "parse",
114
+ sourcePath: file.path,
115
+ sessionId,
116
+ line: lineNumber,
117
+ });
118
+ return;
119
+ }
120
+ const record = lineParsed.data;
121
+ const lineType = record.type;
122
+ const payload = record.payload;
123
+ if (!payload)
124
+ return;
125
+ if (lineType === "session_meta") {
126
+ const meta = parseCodexPayload(codexSessionMetaPayloadSchema, payload);
127
+ if (!meta)
128
+ return;
129
+ if (meta.id)
130
+ sessionId = meta.id;
131
+ if (meta.cwd)
132
+ projectPath = meta.cwd;
133
+ modelTracker.observe(codexModelFromMeta(meta));
134
+ return;
135
+ }
136
+ if (lineType === "turn_context") {
137
+ const ctx = parseCodexPayload(codexTurnContextPayloadSchema, payload);
138
+ if (ctx?.model)
139
+ modelTracker.observe(ctx.model);
140
+ return;
141
+ }
142
+ if (lineType === "event_msg") {
143
+ const tokenEvent = parseCodexPayload(codexTokenCountPayloadSchema, payload);
144
+ if (!tokenEvent)
145
+ return;
146
+ sawTokenCount = true;
147
+ const total = tokenEvent.info?.total_token_usage;
148
+ if (total) {
149
+ sawUsableTokenCount = true;
150
+ lastTokenUsage = mapCodexUsage(total);
151
+ }
152
+ return;
153
+ }
154
+ if (lineType !== "response_item")
155
+ return;
156
+ const message = parseCodexPayload(codexMessagePayloadSchema, payload);
157
+ if (message) {
158
+ if (message.role === "developer" || message.role === "system") {
159
+ builder.addWarning({
160
+ code: "skipped_role",
161
+ message: `Skipped ${message.role} message`,
162
+ severity: "info",
163
+ scope: "parse",
164
+ sourcePath: file.path,
165
+ sessionId,
166
+ line: lineNumber,
167
+ });
168
+ return;
169
+ }
170
+ if (message.role !== "user" && message.role !== "assistant")
171
+ return;
172
+ const text = messageText(message.content);
173
+ if (!text)
174
+ return;
175
+ stepCounter++;
176
+ builder.addRecord({
177
+ role: message.role,
178
+ fragmentGroupId: `${message.role}-step-${stepCounter}`,
179
+ sourceLine: lineNumber,
180
+ blocks: [{ kind: "text", text }],
181
+ timestamp: record.timestamp,
182
+ });
183
+ return;
184
+ }
185
+ if (payload.type === "reasoning") {
186
+ if (payload.encrypted_content) {
187
+ builder.addWarning({
188
+ code: "dropped_encrypted_reasoning",
189
+ message: "Dropped encrypted reasoning blob",
190
+ severity: "info",
191
+ scope: "parse",
192
+ sourcePath: file.path,
193
+ sessionId,
194
+ line: lineNumber,
195
+ });
196
+ }
197
+ const summary = typeof payload.summary === "string" ? payload.summary : messageText(payload.content);
198
+ if (summary) {
199
+ stepCounter++;
200
+ builder.addRecord({
201
+ role: "assistant",
202
+ fragmentGroupId: `reasoning-${stepCounter}`,
203
+ sourceLine: lineNumber,
204
+ blocks: [{ kind: "thinking", text: summary }],
205
+ timestamp: record.timestamp,
206
+ });
207
+ }
208
+ return;
209
+ }
210
+ const functionCall = parseCodexPayload(codexFunctionCallPayloadSchema, payload);
211
+ if (functionCall) {
212
+ const callId = requireCallId(functionCall.call_id ?? functionCall.id);
213
+ if (!callId)
214
+ return;
215
+ stepCounter++;
216
+ builder.addRecord({
217
+ role: "assistant",
218
+ fragmentGroupId: `call-${callId}`,
219
+ sourceLine: lineNumber,
220
+ blocks: [
221
+ {
222
+ kind: "tool_use",
223
+ id: callId,
224
+ name: typeof functionCall.name === "string" ? functionCall.name : "unknown",
225
+ input: functionCall.arguments ?? functionCall.input,
226
+ },
227
+ ],
228
+ timestamp: record.timestamp,
229
+ });
230
+ return;
231
+ }
232
+ const functionOutput = parseCodexPayload(codexFunctionCallOutputPayloadSchema, payload);
233
+ if (functionOutput) {
234
+ builder.addToolResult({
235
+ toolUseId: functionOutput.call_id,
236
+ sourceLine: lineNumber,
237
+ output: functionOutput.output,
238
+ status: functionOutput.is_error ? "error" : "success",
239
+ });
240
+ return;
241
+ }
242
+ const webSearch = parseCodexPayload(codexWebSearchPayloadSchema, payload);
243
+ if (webSearch) {
244
+ const callId = requireCallId(webSearch.call_id, `web-${lineNumber}`);
245
+ if (!callId)
246
+ return;
247
+ stepCounter++;
248
+ builder.addRecord({
249
+ role: "assistant",
250
+ fragmentGroupId: `call-${callId}`,
251
+ sourceLine: lineNumber,
252
+ blocks: [
253
+ {
254
+ kind: "tool_use",
255
+ id: callId,
256
+ name: "web_search",
257
+ input: payload,
258
+ },
259
+ ],
260
+ timestamp: record.timestamp,
261
+ });
262
+ }
263
+ }, { maxFileBytes: opts.maxFileBytes });
264
+ if (readResult.skipped) {
265
+ builder.addWarning({
266
+ code: "file_too_large",
267
+ message: `File exceeds max size (${readResult.size} bytes), skipped`,
268
+ severity: "warn",
269
+ scope: "parse",
270
+ sourcePath: file.path,
271
+ sessionId,
272
+ });
273
+ }
274
+ if (sawTokenCount && !sawUsableTokenCount) {
275
+ builder.addWarning({
276
+ code: "missing_token_usage",
277
+ message: "No usable token_count events found",
278
+ severity: "warn",
279
+ scope: "parse",
280
+ sourcePath: file.path,
281
+ sessionId,
282
+ });
283
+ }
284
+ const session = builder.finalize();
285
+ session.id = sessionId;
286
+ session.projectPath = projectPath;
287
+ session.model = modelTracker.resolve();
288
+ if (lastTokenUsage)
289
+ session.usage = lastTokenUsage;
290
+ yield session;
291
+ },
292
+ };
293
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Adapter } from "../types.js";
2
+ export declare const geminiAdapter: Adapter;
3
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAMR,MAAM,aAAa,CAAC;AAqDrB,eAAO,MAAM,aAAa,EAAE,OAgK3B,CAAC"}
@@ -0,0 +1,193 @@
1
+ import { SessionBuilder } from "../session-builder.js";
2
+ import { parseJsonLine, readJsonlLines, sessionFileNameId } from "../util.js";
3
+ import { detectRootAccess } from "../fs-walk.js";
4
+ import { readdir, stat } from "node:fs/promises";
5
+ import { homedir } from "node:os";
6
+ import { join } from "node:path";
7
+ import { z } from "zod";
8
+ const ADAPTER_VERSION = "0.1.1-experimental";
9
+ const geminiLineSchema = z.object({
10
+ role: z.string().optional(),
11
+ timestamp: z.string().optional(),
12
+ model: z.string().optional(),
13
+ modelVersion: z.string().optional(),
14
+ parts: z
15
+ .array(z.union([
16
+ z.object({ text: z.string().optional() }),
17
+ z.object({
18
+ functionCall: z
19
+ .object({
20
+ id: z.string().optional(),
21
+ name: z.string().optional(),
22
+ args: z.unknown().optional(),
23
+ })
24
+ .optional(),
25
+ }),
26
+ z.object({
27
+ functionResponse: z
28
+ .object({
29
+ id: z.string().optional(),
30
+ name: z.string().optional(),
31
+ response: z.unknown().optional(),
32
+ })
33
+ .optional(),
34
+ }),
35
+ ]))
36
+ .optional(),
37
+ usageMetadata: z
38
+ .object({
39
+ promptTokenCount: z.number().optional(),
40
+ candidatesTokenCount: z.number().optional(),
41
+ totalTokenCount: z.number().optional(),
42
+ })
43
+ .optional(),
44
+ });
45
+ function geminiRoot(opts) {
46
+ return opts.roots?.gemini ?? join(homedir(), ".gemini", "tmp");
47
+ }
48
+ export const geminiAdapter = {
49
+ tool: "gemini",
50
+ adapterVersion: ADAPTER_VERSION,
51
+ capabilities: {
52
+ discovery: "experimental",
53
+ transcript: "partial",
54
+ toolCalls: "partial",
55
+ usage: "partial",
56
+ model: "partial",
57
+ reasoning: "none",
58
+ notes: [
59
+ "Gemini CLI log format is experimental and may change.",
60
+ "Usage metadata is captured when present; token totals may be incomplete.",
61
+ ],
62
+ },
63
+ async detect() {
64
+ const { accessible } = await detectRootAccess(geminiRoot({}), "gemini");
65
+ return accessible;
66
+ },
67
+ async *discover(opts) {
68
+ const root = geminiRoot(opts);
69
+ let projects;
70
+ try {
71
+ projects = await readdir(root);
72
+ }
73
+ catch {
74
+ return;
75
+ }
76
+ for (const project of projects) {
77
+ const chatDir = join(root, project, "chats");
78
+ try {
79
+ const s = await stat(chatDir);
80
+ if (!s.isDirectory())
81
+ continue;
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ const files = await readdir(chatDir);
87
+ for (const file of files) {
88
+ if (file.startsWith("session-") && file.endsWith(".jsonl")) {
89
+ yield { path: join(chatDir, file), tool: "gemini" };
90
+ }
91
+ }
92
+ }
93
+ },
94
+ async *parse(file, opts) {
95
+ const sessionId = sessionFileNameId(file.path);
96
+ let stepCounter = 0;
97
+ let model;
98
+ const builder = new SessionBuilder({
99
+ tool: "gemini",
100
+ adapterVersion: ADAPTER_VERSION,
101
+ sourcePath: file.path,
102
+ sessionId,
103
+ logFormatVersion: "experimental",
104
+ maxTurnChars: opts.maxTurnChars,
105
+ maxToolOutputChars: opts.maxToolOutputChars,
106
+ });
107
+ const readResult = await readJsonlLines(file.path, (line, lineNumber) => {
108
+ const parsed = parseJsonLine(line, lineNumber, file.path);
109
+ if (!parsed.ok) {
110
+ builder.addWarning({
111
+ code: "malformed_line",
112
+ message: parsed.error,
113
+ severity: "warn",
114
+ scope: "parse",
115
+ sourcePath: file.path,
116
+ sessionId,
117
+ line: lineNumber,
118
+ });
119
+ return;
120
+ }
121
+ const lineParsed = geminiLineSchema.safeParse(parsed.value);
122
+ if (!lineParsed.success) {
123
+ builder.addWarning({
124
+ code: "invalid_line_shape",
125
+ message: `Line ${lineNumber}: invalid Gemini record shape`,
126
+ severity: "warn",
127
+ scope: "parse",
128
+ sourcePath: file.path,
129
+ sessionId,
130
+ line: lineNumber,
131
+ });
132
+ return;
133
+ }
134
+ const record = lineParsed.data;
135
+ model = record.model ?? record.modelVersion ?? model;
136
+ const role = record.role;
137
+ if (role !== "user" && role !== "model")
138
+ return;
139
+ const blocks = [];
140
+ for (const part of record.parts ?? []) {
141
+ if ("text" in part && part.text) {
142
+ blocks.push({ kind: "text", text: part.text });
143
+ }
144
+ if ("functionCall" in part && part.functionCall) {
145
+ const fc = part.functionCall;
146
+ const id = fc.id ?? `call-${lineNumber}`;
147
+ blocks.push({ kind: "tool_use", id, name: fc.name ?? "unknown", input: fc.args });
148
+ stepCounter++;
149
+ }
150
+ if ("functionResponse" in part && part.functionResponse) {
151
+ const fr = part.functionResponse;
152
+ builder.addToolResult({
153
+ toolUseId: fr.id ?? `call-${lineNumber}`,
154
+ sourceLine: lineNumber,
155
+ output: fr.response,
156
+ status: "success",
157
+ });
158
+ }
159
+ }
160
+ if (blocks.length > 0) {
161
+ stepCounter++;
162
+ builder.addRecord({
163
+ role: role === "model" ? "assistant" : "user",
164
+ fragmentGroupId: `${role}-${stepCounter}`,
165
+ sourceLine: lineNumber,
166
+ blocks,
167
+ timestamp: record.timestamp,
168
+ usage: record.usageMetadata
169
+ ? {
170
+ inputTokens: record.usageMetadata.promptTokenCount,
171
+ outputTokens: record.usageMetadata.candidatesTokenCount,
172
+ totalTokens: record.usageMetadata.totalTokenCount,
173
+ }
174
+ : undefined,
175
+ });
176
+ }
177
+ }, { maxFileBytes: opts.maxFileBytes });
178
+ if (readResult.skipped) {
179
+ builder.addWarning({
180
+ code: "file_too_large",
181
+ message: `File exceeds max size (${readResult.size} bytes), skipped`,
182
+ severity: "warn",
183
+ scope: "parse",
184
+ sourcePath: file.path,
185
+ sessionId,
186
+ });
187
+ }
188
+ const session = builder.finalize();
189
+ session.model = model;
190
+ yield session;
191
+ },
192
+ };
193
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Adapter, DiscoverOptions, ToolName, Warning } from "../types.js";
2
+ import { claudeCodeAdapter } from "./claude-code.js";
3
+ import { codexAdapter } from "./codex.js";
4
+ import { geminiAdapter } from "./gemini.js";
5
+ export declare function getAdapterRoot(tool: ToolName, opts?: DiscoverOptions): string;
6
+ export declare function getAllAdapters(): Adapter[];
7
+ export declare function getEnabledAdapters(toolFilter?: ToolName[], detectWarnings?: Warning[], opts?: DiscoverOptions): Promise<Adapter[]>;
8
+ export { claudeCodeAdapter, codexAdapter, geminiAdapter };
9
+ export interface ParseRootsResult {
10
+ roots: Partial<Record<ToolName, string>>;
11
+ errors: string[];
12
+ }
13
+ export declare function parseRootsOverride(specs: string[]): ParseRootsResult;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAa5C,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAEjF;AAED,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAE1C;AAED,wBAAsB,kBAAkB,CACtC,UAAU,CAAC,EAAE,QAAQ,EAAE,EACvB,cAAc,CAAC,EAAE,OAAO,EAAE,EAC1B,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CAapB;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAI1D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA6BpE"}
@@ -0,0 +1,64 @@
1
+ import { claudeCodeAdapter } from "./claude-code.js";
2
+ import { codexAdapter } from "./codex.js";
3
+ import { geminiAdapter } from "./gemini.js";
4
+ import { detectRootAccess } from "../fs-walk.js";
5
+ import { homedir } from "node:os";
6
+ import { join } from "node:path";
7
+ const ALL_ADAPTERS = [claudeCodeAdapter, codexAdapter, geminiAdapter];
8
+ const ROOTS = {
9
+ "claude-code": (opts) => opts.roots?.["claude-code"] ?? join(homedir(), ".claude", "projects"),
10
+ codex: (opts) => opts.roots?.codex ?? join(homedir(), ".codex", "sessions"),
11
+ gemini: (opts) => opts.roots?.gemini ?? join(homedir(), ".gemini", "tmp"),
12
+ };
13
+ export function getAdapterRoot(tool, opts = {}) {
14
+ return ROOTS[tool](opts);
15
+ }
16
+ export function getAllAdapters() {
17
+ return ALL_ADAPTERS;
18
+ }
19
+ export async function getEnabledAdapters(toolFilter, detectWarnings, opts) {
20
+ const adapters = toolFilter
21
+ ? ALL_ADAPTERS.filter((a) => toolFilter.includes(a.tool))
22
+ : ALL_ADAPTERS;
23
+ const enabled = [];
24
+ for (const adapter of adapters) {
25
+ const root = ROOTS[adapter.tool](opts ?? {});
26
+ const { accessible, warning } = await detectRootAccess(root, adapter.tool);
27
+ if (warning && detectWarnings)
28
+ detectWarnings.push(warning);
29
+ if (accessible)
30
+ enabled.push(adapter);
31
+ }
32
+ return enabled;
33
+ }
34
+ export { claudeCodeAdapter, codexAdapter, geminiAdapter };
35
+ const VALID_TOOLS = new Set(["claude-code", "codex", "gemini"]);
36
+ export function parseRootsOverride(specs) {
37
+ const roots = {};
38
+ const errors = [];
39
+ for (const spec of specs) {
40
+ const idx = spec.indexOf(":");
41
+ if (idx <= 0) {
42
+ errors.push(`Invalid --roots spec "${spec}". Expected tool:path (e.g. codex:/tmp/logs)`);
43
+ continue;
44
+ }
45
+ const tool = spec.slice(0, idx);
46
+ const path = spec.slice(idx + 1);
47
+ if (!path) {
48
+ errors.push(`Invalid --roots spec "${spec}". Path must not be empty`);
49
+ continue;
50
+ }
51
+ if (!VALID_TOOLS.has(tool)) {
52
+ errors.push(`Invalid --roots tool "${tool}". Expected: claude-code, codex, gemini`);
53
+ continue;
54
+ }
55
+ const key = tool;
56
+ if (roots[key]) {
57
+ errors.push(`Duplicate --roots entry for tool "${tool}"`);
58
+ continue;
59
+ }
60
+ roots[key] = path;
61
+ }
62
+ return { roots, errors };
63
+ }
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Adapter, DiscoverOptions, Session, SessionFile, ToolName, Warning } from "./types.js";
2
+ import { type ParsedQuery } from "./query.js";
3
+ export declare function discoverFiles(opts: DiscoverOptions, adapters: Adapter[], onError?: (tool: ToolName, cause: unknown) => void): AsyncIterable<SessionFile>;
4
+ export declare class DiscoveryError extends Error {
5
+ readonly tool: ToolName;
6
+ readonly causeMessage: string;
7
+ constructor(tool: ToolName, cause: unknown);
8
+ }
9
+ export declare function discover(opts?: DiscoverOptions, adapters?: Adapter[]): AsyncIterable<{
10
+ file: SessionFile;
11
+ warnings: Warning[];
12
+ }>;
13
+ export declare function parseDateFilter(value: string | undefined): Date | undefined;
14
+ export declare function matchesProject(sessionPath: string | undefined, filter: string | undefined): boolean;
15
+ export declare function matchesTool(tool: ToolName, filter: ToolName[] | undefined): boolean;
16
+ export declare function matchesDateRange(startedAt: string | undefined, endedAt: string | undefined, since?: Date, until?: Date): boolean;
17
+ export declare function matchesSessionFilters(session: Session, parsed: ParsedQuery, projectFilter?: string): boolean;
18
+ export declare function matchesSessionTextQuery(session: Session, parsed: ParsedQuery): boolean;
19
+ export declare function matchesSessionQuery(session: Session, query?: string, projectFilter?: string): boolean;
20
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAA0C,MAAM,YAAY,CAAC;AAEtF,wBAAuB,aAAa,CAClC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GACjD,aAAa,CAAC,WAAW,CAAC,CAc5B;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,YAAY,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAMzC;CACF;AAED,wBAAuB,QAAQ,CAC7B,IAAI,GAAE,eAAoB,EAC1B,QAAQ,CAAC,EAAE,OAAO,EAAE,GACnB,aAAa,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAO3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAW3E;AAMD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAiBT;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,OAAO,CAGnF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,CAAC,EAAE,IAAI,EACZ,KAAK,CAAC,EAAE,IAAI,GACX,OAAO,CAOT;AAWD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAST;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAGtF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAIT"}