context-lens 0.7.2 → 0.8.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 (60) hide show
  1. package/dist/cli-utils.d.ts +6 -5
  2. package/dist/cli-utils.d.ts.map +1 -1
  3. package/dist/cli-utils.js +25 -22
  4. package/dist/cli-utils.js.map +1 -1
  5. package/dist/cli.js +133 -50
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config.d.ts +6 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +28 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/core/conversation.d.ts +3 -2
  12. package/dist/core/conversation.d.ts.map +1 -1
  13. package/dist/core/conversation.js +9 -3
  14. package/dist/core/conversation.js.map +1 -1
  15. package/dist/core/parse.d.ts.map +1 -1
  16. package/dist/core/parse.js +57 -5
  17. package/dist/core/parse.js.map +1 -1
  18. package/dist/core/security.d.ts.map +1 -1
  19. package/dist/core/security.js +15 -1
  20. package/dist/core/security.js.map +1 -1
  21. package/dist/importers/claude-code.d.ts +19 -0
  22. package/dist/importers/claude-code.d.ts.map +1 -0
  23. package/dist/importers/claude-code.js +166 -0
  24. package/dist/importers/claude-code.js.map +1 -0
  25. package/dist/importers/codex.d.ts +22 -0
  26. package/dist/importers/codex.d.ts.map +1 -0
  27. package/dist/importers/codex.js +172 -0
  28. package/dist/importers/codex.js.map +1 -0
  29. package/dist/importers/index.d.ts +12 -0
  30. package/dist/importers/index.d.ts.map +1 -0
  31. package/dist/importers/index.js +153 -0
  32. package/dist/importers/index.js.map +1 -0
  33. package/dist/importers/types.d.ts +51 -0
  34. package/dist/importers/types.d.ts.map +1 -0
  35. package/dist/importers/types.js +8 -0
  36. package/dist/importers/types.js.map +1 -0
  37. package/dist/lhar/composition.d.ts.map +1 -1
  38. package/dist/lhar/composition.js +13 -0
  39. package/dist/lhar/composition.js.map +1 -1
  40. package/dist/lhar/response.d.ts.map +1 -1
  41. package/dist/lhar/response.js +17 -1
  42. package/dist/lhar/response.js.map +1 -1
  43. package/dist/server/api.d.ts.map +1 -1
  44. package/dist/server/api.js +72 -0
  45. package/dist/server/api.js.map +1 -1
  46. package/dist/server/store.d.ts +3 -0
  47. package/dist/server/store.d.ts.map +1 -1
  48. package/dist/server/store.js +12 -2
  49. package/dist/server/store.js.map +1 -1
  50. package/dist/types.d.ts +16 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/version.generated.d.ts +1 -1
  53. package/dist/version.generated.js +1 -1
  54. package/mitm_addon.py +107 -4
  55. package/package.json +4 -4
  56. package/ui/dist/assets/index-BlAdJWw0.css +1 -0
  57. package/ui/dist/assets/index-DO3TMDY3.js +58 -0
  58. package/ui/dist/index.html +2 -2
  59. package/ui/dist/assets/index-CZq91bC_.js +0 -52
  60. package/ui/dist/assets/index-DSyD9xgM.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Importer for Claude Code (claude CLI) session files.
3
+ *
4
+ * Session files live at:
5
+ * ~/.claude/projects/<encoded-dir>/<sessionId>.jsonl
6
+ *
7
+ * Each line is a JSON object with type "user" | "assistant" | "system" |
8
+ * "progress" | "queue-operation" | "file-history-snapshot".
9
+ *
10
+ * Only "user" and "assistant" lines carry message content.
11
+ * "assistant" lines carry exact usage in message.usage.
12
+ *
13
+ * The turns form a tree via parentUuid. We walk the longest chain
14
+ * (most assistant turns) to get the main conversation thread.
15
+ */
16
+ import type { ImportedSession } from "./types.js";
17
+ export declare function discoverClaudeCodeSessions(baseDir?: string): string[];
18
+ export declare function parseClaudeCodeSession(filePath: string): ImportedSession | null;
19
+ //# sourceMappingURL=claude-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/importers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,YAAY,CAAC;AA+GpB,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,MAA2B,GACnC,MAAM,EAAE,CAaV;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GACf,eAAe,GAAG,IAAI,CAiDxB"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Importer for Claude Code (claude CLI) session files.
3
+ *
4
+ * Session files live at:
5
+ * ~/.claude/projects/<encoded-dir>/<sessionId>.jsonl
6
+ *
7
+ * Each line is a JSON object with type "user" | "assistant" | "system" |
8
+ * "progress" | "queue-operation" | "file-history-snapshot".
9
+ *
10
+ * Only "user" and "assistant" lines carry message content.
11
+ * "assistant" lines carry exact usage in message.usage.
12
+ *
13
+ * The turns form a tree via parentUuid. We walk the longest chain
14
+ * (most assistant turns) to get the main conversation thread.
15
+ */
16
+ import fs from "node:fs";
17
+ import os from "node:os";
18
+ import path from "node:path";
19
+ function defaultClaudeDir() {
20
+ return path.join(os.homedir(), ".claude", "projects");
21
+ }
22
+ /**
23
+ * Walk the tree formed by parentUuid links and return the longest
24
+ * linear chain of uuids ending at a leaf (no children).
25
+ */
26
+ function longestChain(lines) {
27
+ const byUuid = new Map();
28
+ const children = new Map();
29
+ for (const line of lines) {
30
+ byUuid.set(line.uuid, line);
31
+ if (line.parentUuid) {
32
+ const kids = children.get(line.parentUuid) ?? [];
33
+ kids.push(line.uuid);
34
+ children.set(line.parentUuid, kids);
35
+ }
36
+ }
37
+ // Find roots (no parent, or parent not in set)
38
+ const roots = lines.filter((l) => !l.parentUuid || !byUuid.has(l.parentUuid));
39
+ // DFS to find longest path (by assistant-turn count)
40
+ let best = [];
41
+ function dfs(uuid, current) {
42
+ const node = byUuid.get(uuid);
43
+ if (!node)
44
+ return;
45
+ const next = [...current, node];
46
+ const kids = children.get(uuid) ?? [];
47
+ if (kids.length === 0) {
48
+ const assistantCount = next.filter((n) => n.type === "assistant").length;
49
+ const bestCount = best.filter((n) => n.type === "assistant").length;
50
+ if (assistantCount > bestCount)
51
+ best = next;
52
+ }
53
+ else {
54
+ for (const kid of kids)
55
+ dfs(kid, next);
56
+ }
57
+ }
58
+ for (const root of roots)
59
+ dfs(root.uuid, []);
60
+ return best;
61
+ }
62
+ /**
63
+ * Convert a chain of Claude Code lines into ImportedTurns.
64
+ *
65
+ * Each turn corresponds to one assistant response. The messages array
66
+ * for that turn contains all user+assistant messages up to that point,
67
+ * which is what the analysis pipeline expects (full context window snapshot).
68
+ */
69
+ function chainToTurns(chain) {
70
+ const turns = [];
71
+ const accumulated = [];
72
+ for (const line of chain) {
73
+ if (line.type !== "user" && line.type !== "assistant")
74
+ continue;
75
+ if (!line.message)
76
+ continue;
77
+ // Skip injected skill/system content (isMeta lines)
78
+ if (line.isMeta)
79
+ continue;
80
+ const role = line.message.role;
81
+ accumulated.push({ role, content: line.message.content });
82
+ if (line.type === "assistant") {
83
+ const usage = line.message.usage;
84
+ turns.push({
85
+ timestamp: line.timestamp,
86
+ messages: [...accumulated],
87
+ inputTokens: usage?.input_tokens ?? null,
88
+ outputTokens: usage?.output_tokens ?? null,
89
+ cacheReadTokens: usage?.cache_read_input_tokens ?? null,
90
+ cacheWriteTokens: usage?.cache_creation_input_tokens ?? null,
91
+ });
92
+ }
93
+ }
94
+ return turns;
95
+ }
96
+ export function discoverClaudeCodeSessions(baseDir = defaultClaudeDir()) {
97
+ if (!fs.existsSync(baseDir))
98
+ return [];
99
+ const files = [];
100
+ for (const project of fs.readdirSync(baseDir)) {
101
+ const projectDir = path.join(baseDir, project);
102
+ if (!fs.statSync(projectDir).isDirectory())
103
+ continue;
104
+ for (const file of fs.readdirSync(projectDir)) {
105
+ if (file.endsWith(".jsonl")) {
106
+ files.push(path.join(projectDir, file));
107
+ }
108
+ }
109
+ }
110
+ return files;
111
+ }
112
+ export function parseClaudeCodeSession(filePath) {
113
+ let raw;
114
+ try {
115
+ raw = fs.readFileSync(filePath, "utf8");
116
+ }
117
+ catch {
118
+ return null;
119
+ }
120
+ const lines = [];
121
+ let sessionId = null;
122
+ let cwd = null;
123
+ let gitBranch = null;
124
+ let model = "claude";
125
+ for (const line of raw.split("\n")) {
126
+ if (!line.trim())
127
+ continue;
128
+ try {
129
+ const parsed = JSON.parse(line);
130
+ if (!parsed.type || !parsed.uuid)
131
+ continue;
132
+ if (parsed.type === "user" || parsed.type === "assistant") {
133
+ lines.push(parsed);
134
+ if (!sessionId && parsed.sessionId)
135
+ sessionId = parsed.sessionId;
136
+ if (!cwd && parsed.cwd)
137
+ cwd = parsed.cwd;
138
+ if (!gitBranch && parsed.gitBranch)
139
+ gitBranch = parsed.gitBranch;
140
+ if (parsed.type === "assistant" && parsed.message?.model) {
141
+ model = parsed.message.model;
142
+ }
143
+ }
144
+ }
145
+ catch {
146
+ // skip malformed lines
147
+ }
148
+ }
149
+ if (lines.length === 0 || !sessionId)
150
+ return null;
151
+ const chain = longestChain(lines);
152
+ const turns = chainToTurns(chain);
153
+ if (turns.length === 0)
154
+ return null;
155
+ return {
156
+ sessionId,
157
+ source: "claude-code",
158
+ model,
159
+ provider: "anthropic",
160
+ apiFormat: "anthropic-messages",
161
+ cwd,
162
+ gitBranch,
163
+ turns,
164
+ };
165
+ }
166
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/importers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Importer for OpenAI Codex CLI session files.
3
+ *
4
+ * Session files live at:
5
+ * ~/.codex/sessions/<year>/<month>/<day>/<id>.jsonl
6
+ *
7
+ * Each line has a "type" field:
8
+ * - "session_meta" — session metadata (id, cwd, model, git)
9
+ * - "response_item" — individual items in the Responses API input/output
10
+ * (message, function_call, function_call_output,
11
+ * reasoning, custom_tool_call, ghost_snapshot, ...)
12
+ * - "event_msg" — events including "token_count" with per-turn usage
13
+ * - "turn_context" — model + cwd snapshot at start of each turn
14
+ *
15
+ * Strategy: collect all response_items in order, then group them into turns
16
+ * by splitting on each assistant "message" item. Per-turn usage comes from
17
+ * the "token_count" event_msg that follows each turn (last_token_usage).
18
+ */
19
+ import type { ImportedSession } from "./types.js";
20
+ export declare function discoverCodexSessions(baseDir?: string): string[];
21
+ export declare function parseCodexSession(filePath: string): ImportedSession | null;
22
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/importers/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,YAAY,CAAC;AAkBpB,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,MAA0B,GAClC,MAAM,EAAE,CAkBV;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA2I1E"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Importer for OpenAI Codex CLI session files.
3
+ *
4
+ * Session files live at:
5
+ * ~/.codex/sessions/<year>/<month>/<day>/<id>.jsonl
6
+ *
7
+ * Each line has a "type" field:
8
+ * - "session_meta" — session metadata (id, cwd, model, git)
9
+ * - "response_item" — individual items in the Responses API input/output
10
+ * (message, function_call, function_call_output,
11
+ * reasoning, custom_tool_call, ghost_snapshot, ...)
12
+ * - "event_msg" — events including "token_count" with per-turn usage
13
+ * - "turn_context" — model + cwd snapshot at start of each turn
14
+ *
15
+ * Strategy: collect all response_items in order, then group them into turns
16
+ * by splitting on each assistant "message" item. Per-turn usage comes from
17
+ * the "token_count" event_msg that follows each turn (last_token_usage).
18
+ */
19
+ import fs from "node:fs";
20
+ import os from "node:os";
21
+ import path from "node:path";
22
+ function defaultCodexDir() {
23
+ return path.join(os.homedir(), ".codex", "sessions");
24
+ }
25
+ export function discoverCodexSessions(baseDir = defaultCodexDir()) {
26
+ if (!fs.existsSync(baseDir))
27
+ return [];
28
+ const files = [];
29
+ function walk(dir) {
30
+ for (const entry of fs.readdirSync(dir)) {
31
+ const full = path.join(dir, entry);
32
+ const stat = fs.statSync(full);
33
+ if (stat.isDirectory()) {
34
+ walk(full);
35
+ }
36
+ else if (entry.endsWith(".jsonl")) {
37
+ files.push(full);
38
+ }
39
+ }
40
+ }
41
+ walk(baseDir);
42
+ return files;
43
+ }
44
+ export function parseCodexSession(filePath) {
45
+ let raw;
46
+ try {
47
+ raw = fs.readFileSync(filePath, "utf8");
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ const lines = [];
53
+ for (const line of raw.split("\n")) {
54
+ if (!line.trim())
55
+ continue;
56
+ try {
57
+ const parsed = JSON.parse(line);
58
+ if (parsed.type && parsed.payload)
59
+ lines.push(parsed);
60
+ }
61
+ catch {
62
+ // skip malformed lines
63
+ }
64
+ }
65
+ if (lines.length === 0)
66
+ return null;
67
+ // Extract session metadata
68
+ const metaLine = lines.find((l) => l.type === "session_meta");
69
+ if (!metaLine)
70
+ return null;
71
+ const meta = metaLine.payload;
72
+ const sessionId = meta.id;
73
+ if (!sessionId)
74
+ return null;
75
+ const cwd = meta.cwd ?? null;
76
+ const gitBranch = meta.git?.branch ??
77
+ null;
78
+ // Find model from turn_context lines
79
+ let model = "gpt-4o";
80
+ for (const line of lines) {
81
+ if (line.type === "turn_context" && line.payload.model) {
82
+ model = line.payload.model;
83
+ break;
84
+ }
85
+ }
86
+ // Collect response_items and token_count events in order
87
+ const responseItems = [];
88
+ const tokenCounts = [];
89
+ for (const line of lines) {
90
+ if (line.type === "response_item") {
91
+ responseItems.push({ timestamp: line.timestamp, payload: line.payload });
92
+ }
93
+ else if (line.type === "event_msg") {
94
+ const p = line.payload;
95
+ if (p.type === "token_count" &&
96
+ p.info &&
97
+ typeof p.info === "object" &&
98
+ p.info.last_token_usage) {
99
+ const info = p.info;
100
+ tokenCounts.push({
101
+ timestamp: line.timestamp,
102
+ last: info.last_token_usage,
103
+ });
104
+ }
105
+ }
106
+ }
107
+ if (responseItems.length === 0)
108
+ return null;
109
+ // Group response_items into turns.
110
+ // A new turn starts when we see an assistant "message" item.
111
+ // Everything before the first assistant message is the initial user context.
112
+ const turns = [];
113
+ let currentItems = [];
114
+ let currentTimestamp = responseItems[0]?.timestamp ?? new Date().toISOString();
115
+ let tokenCountIndex = 0;
116
+ // Accumulated messages across all turns (context window snapshot per turn)
117
+ const accumulated = [];
118
+ for (const item of responseItems) {
119
+ const p = item.payload;
120
+ const pType = p.type;
121
+ const pRole = p.role;
122
+ if (pRole === "assistant" && pType === "message") {
123
+ // End of a turn — flush accumulated + current assistant message
124
+ accumulated.push({ role: "assistant", content: p.content });
125
+ currentItems.push(p);
126
+ // Find the next token_count event after this timestamp
127
+ let usage = null;
128
+ while (tokenCountIndex < tokenCounts.length) {
129
+ const tc = tokenCounts[tokenCountIndex];
130
+ if (tc.timestamp >= item.timestamp) {
131
+ usage = tc.last;
132
+ tokenCountIndex++;
133
+ break;
134
+ }
135
+ tokenCountIndex++;
136
+ }
137
+ turns.push({
138
+ timestamp: item.timestamp,
139
+ messages: [...accumulated],
140
+ inputTokens: usage?.input_tokens ?? null,
141
+ outputTokens: usage?.output_tokens ?? null,
142
+ cacheReadTokens: usage?.cached_input_tokens ?? null,
143
+ cacheWriteTokens: null,
144
+ });
145
+ currentItems = [];
146
+ currentTimestamp = item.timestamp;
147
+ }
148
+ else if (pRole === "user" && pType === "message") {
149
+ accumulated.push({ role: "user", content: p.content });
150
+ currentItems.push(p);
151
+ }
152
+ else {
153
+ // function_call, function_call_output, reasoning, custom_tool_call, etc.
154
+ // These are assistant-side items — add to accumulated as assistant content
155
+ // so tool calls are visible in the analysis
156
+ currentItems.push(p);
157
+ }
158
+ }
159
+ if (turns.length === 0)
160
+ return null;
161
+ return {
162
+ sessionId,
163
+ source: "codex",
164
+ model,
165
+ provider: "openai",
166
+ apiFormat: "responses",
167
+ cwd,
168
+ gitBranch,
169
+ turns,
170
+ };
171
+ }
172
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/importers/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * CLI session importer — entry point.
3
+ *
4
+ * Discovers and imports sessions from all supported tools into
5
+ * the context-lens store. Tracks which sessions have already been
6
+ * imported via a Set of sessionIds stored on the Store itself to
7
+ * avoid duplicating entries on repeated scans.
8
+ */
9
+ import type { Store } from "../server/store.js";
10
+ import type { ImportSummary } from "./types.js";
11
+ export declare function importSessions(store: Store): ImportSummary[];
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/importers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,KAAK,EAAiC,aAAa,EAAE,MAAM,YAAY,CAAC;AA8F/E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,EAAE,CA2E5D"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * CLI session importer — entry point.
3
+ *
4
+ * Discovers and imports sessions from all supported tools into
5
+ * the context-lens store. Tracks which sessions have already been
6
+ * imported via a Set of sessionIds stored on the Store itself to
7
+ * avoid duplicating entries on repeated scans.
8
+ */
9
+ import { ingestCapture } from "../analysis/ingest.js";
10
+ import { discoverClaudeCodeSessions, parseClaudeCodeSession, } from "./claude-code.js";
11
+ import { discoverCodexSessions, parseCodexSession } from "./codex.js";
12
+ /**
13
+ * Convert one ImportedTurn into a CaptureData-like object and ingest it.
14
+ *
15
+ * We reconstruct a synthetic Anthropic/OpenAI request body from the
16
+ * messages accumulated up to that turn, then feed it through the
17
+ * existing ingestCapture pipeline.
18
+ */
19
+ function ingestTurn(store, session, turn) {
20
+ // Build a synthetic request body that parseContextInfo can handle.
21
+ // For Anthropic format: { model, messages, system? }
22
+ // For OpenAI Responses format: { model, input: [...] }
23
+ let requestBody;
24
+ if (session.apiFormat === "anthropic-messages") {
25
+ const systemMessages = turn.messages.filter((m) => m.role === "system");
26
+ const nonSystem = turn.messages.filter((m) => m.role !== "system");
27
+ requestBody = {
28
+ model: session.model,
29
+ messages: nonSystem,
30
+ ...(systemMessages.length > 0
31
+ ? { system: systemMessages.map((m) => m.content).join("\n") }
32
+ : {}),
33
+ };
34
+ }
35
+ else {
36
+ // Responses API format (codex)
37
+ requestBody = {
38
+ model: session.model,
39
+ input: turn.messages.map((m) => ({
40
+ type: "message",
41
+ role: m.role,
42
+ content: m.content,
43
+ })),
44
+ };
45
+ }
46
+ // Build a synthetic response body with token usage so the store
47
+ // can record accurate cost without needing to re-estimate.
48
+ const responseBody = session.provider === "anthropic"
49
+ ? {
50
+ type: "message",
51
+ role: "assistant",
52
+ model: session.model,
53
+ usage: {
54
+ input_tokens: turn.inputTokens ?? 0,
55
+ output_tokens: turn.outputTokens ?? 0,
56
+ cache_read_input_tokens: turn.cacheReadTokens ?? 0,
57
+ cache_creation_input_tokens: turn.cacheWriteTokens ?? 0,
58
+ },
59
+ content: [],
60
+ stop_reason: "end_turn",
61
+ }
62
+ : {
63
+ object: "response",
64
+ model: session.model,
65
+ usage: {
66
+ input_tokens: turn.inputTokens ?? 0,
67
+ output_tokens: turn.outputTokens ?? 0,
68
+ total_tokens: (turn.inputTokens ?? 0) + (turn.outputTokens ?? 0),
69
+ },
70
+ output: [],
71
+ status: "completed",
72
+ };
73
+ ingestCapture(store, {
74
+ provider: session.provider,
75
+ apiFormat: session.apiFormat,
76
+ source: session.source,
77
+ path: session.apiFormat === "anthropic-messages"
78
+ ? "/v1/messages"
79
+ : "/responses",
80
+ method: "POST",
81
+ timestamp: turn.timestamp,
82
+ requestBody: requestBody,
83
+ responseBody: JSON.stringify(responseBody),
84
+ responseStatus: 200,
85
+ responseIsStreaming: false,
86
+ targetUrl: "",
87
+ requestHeaders: {},
88
+ responseHeaders: {},
89
+ timings: { send_ms: 0, wait_ms: 0, receive_ms: 0, total_ms: 0 },
90
+ requestBytes: 0,
91
+ responseBytes: 0,
92
+ sessionId: session.sessionId,
93
+ });
94
+ }
95
+ export function importSessions(store) {
96
+ const summaries = [];
97
+ const importers = [
98
+ {
99
+ source: "claude-code",
100
+ discover: discoverClaudeCodeSessions,
101
+ parse: parseClaudeCodeSession,
102
+ },
103
+ {
104
+ source: "codex",
105
+ discover: discoverCodexSessions,
106
+ parse: parseCodexSession,
107
+ },
108
+ ];
109
+ for (const importer of importers) {
110
+ const summary = {
111
+ source: importer.source,
112
+ found: 0,
113
+ imported: 0,
114
+ skipped: 0,
115
+ errors: 0,
116
+ };
117
+ let files;
118
+ try {
119
+ files = importer.discover();
120
+ }
121
+ catch {
122
+ summaries.push(summary);
123
+ continue;
124
+ }
125
+ summary.found = files.length;
126
+ for (const file of files) {
127
+ try {
128
+ const session = importer.parse(file);
129
+ if (!session || session.turns.length === 0) {
130
+ summary.skipped++;
131
+ continue;
132
+ }
133
+ if (store.hasImportedSession(session.sessionId)) {
134
+ summary.skipped++;
135
+ continue;
136
+ }
137
+ for (const turn of session.turns) {
138
+ ingestTurn(store, session, turn);
139
+ }
140
+ store.markSessionImported(session.sessionId);
141
+ summary.imported++;
142
+ console.log(` 📂 Imported [${session.source}] ${session.sessionId.slice(0, 8)}… (${session.turns.length} turns) from ${session.cwd ?? "unknown"}`);
143
+ }
144
+ catch (err) {
145
+ summary.errors++;
146
+ console.error(` ⚠️ Import error [${importer.source}] ${file}:`, err instanceof Error ? err.message : String(err));
147
+ }
148
+ }
149
+ summaries.push(summary);
150
+ }
151
+ return summaries;
152
+ }
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/importers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,KAAY,EACZ,OAAwB,EACxB,IAAkB;IAElB,mEAAmE;IACnE,qDAAqD;IACrD,uDAAuD;IACvD,IAAI,WAAoC,CAAC;IAEzC,IAAI,OAAO,CAAC,SAAS,KAAK,oBAAoB,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnE,WAAW,GAAG;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,SAAS;YACnB,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,+BAA+B;QAC/B,WAAW,GAAG;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,2DAA2D;IAC3D,MAAM,YAAY,GAChB,OAAO,CAAC,QAAQ,KAAK,WAAW;QAC9B,CAAC,CAAC;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;gBACnC,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBACrC,uBAAuB,EAAE,IAAI,CAAC,eAAe,IAAI,CAAC;gBAClD,2BAA2B,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC;aACxD;YACD,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,UAAU;SACxB;QACH,CAAC,CAAC;YACE,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;gBACnC,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBACrC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;aACjE;YACD,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,WAAW;SACpB,CAAC;IAER,aAAa,CAAC,KAAK,EAAE;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EACF,OAAO,CAAC,SAAS,KAAK,oBAAoB;YACxC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,YAAY;QAClB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,WAAwB;QACrC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC1C,cAAc,EAAE,GAAG;QACnB,mBAAmB,EAAE,KAAK;QAC1B,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;QACnB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC/D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,SAAS,GAAoB,EAAE,CAAC;IAEtC,MAAM,SAAS,GAIV;QACH;YACE,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,0BAA0B;YACpC,KAAK,EAAE,sBAAsB;SAC9B;QACD;YACE,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,qBAAqB;YAC/B,KAAK,EAAE,iBAAiB;SACzB;KACF,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAkB;YAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;SACV,CAAC;QAEF,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QAED,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC;gBAED,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAEnB,OAAO,CAAC,GAAG,CACT,kBAAkB,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,gBAAgB,OAAO,CAAC,GAAG,IAAI,SAAS,EAAE,CACvI,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CACX,uBAAuB,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,EAClD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}