@code-insights/cli 1.2.0 → 2.0.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 (159) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +101 -9
  3. package/dist/commands/config.d.ts +3 -0
  4. package/dist/commands/config.d.ts.map +1 -0
  5. package/dist/commands/config.js +130 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/connect.d.ts.map +1 -1
  8. package/dist/commands/connect.js +7 -1
  9. package/dist/commands/connect.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +52 -0
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/install-hook.d.ts.map +1 -1
  14. package/dist/commands/install-hook.js +16 -3
  15. package/dist/commands/install-hook.js.map +1 -1
  16. package/dist/commands/open.d.ts +9 -0
  17. package/dist/commands/open.d.ts.map +1 -0
  18. package/dist/commands/open.js +59 -0
  19. package/dist/commands/open.js.map +1 -0
  20. package/dist/commands/reset.d.ts.map +1 -1
  21. package/dist/commands/reset.js +14 -1
  22. package/dist/commands/reset.js.map +1 -1
  23. package/dist/commands/stats/actions/cost.d.ts +3 -0
  24. package/dist/commands/stats/actions/cost.d.ts.map +1 -0
  25. package/dist/commands/stats/actions/cost.js +139 -0
  26. package/dist/commands/stats/actions/cost.js.map +1 -0
  27. package/dist/commands/stats/actions/error-handler.d.ts +6 -0
  28. package/dist/commands/stats/actions/error-handler.d.ts.map +1 -0
  29. package/dist/commands/stats/actions/error-handler.js +42 -0
  30. package/dist/commands/stats/actions/error-handler.js.map +1 -0
  31. package/dist/commands/stats/actions/models.d.ts +3 -0
  32. package/dist/commands/stats/actions/models.d.ts.map +1 -0
  33. package/dist/commands/stats/actions/models.js +101 -0
  34. package/dist/commands/stats/actions/models.js.map +1 -0
  35. package/dist/commands/stats/actions/overview.d.ts +3 -0
  36. package/dist/commands/stats/actions/overview.d.ts.map +1 -0
  37. package/dist/commands/stats/actions/overview.js +147 -0
  38. package/dist/commands/stats/actions/overview.js.map +1 -0
  39. package/dist/commands/stats/actions/projects.d.ts +3 -0
  40. package/dist/commands/stats/actions/projects.d.ts.map +1 -0
  41. package/dist/commands/stats/actions/projects.js +90 -0
  42. package/dist/commands/stats/actions/projects.js.map +1 -0
  43. package/dist/commands/stats/actions/today.d.ts +3 -0
  44. package/dist/commands/stats/actions/today.d.ts.map +1 -0
  45. package/dist/commands/stats/actions/today.js +118 -0
  46. package/dist/commands/stats/actions/today.js.map +1 -0
  47. package/dist/commands/stats/data/aggregation.d.ts +60 -0
  48. package/dist/commands/stats/data/aggregation.d.ts.map +1 -0
  49. package/dist/commands/stats/data/aggregation.js +614 -0
  50. package/dist/commands/stats/data/aggregation.js.map +1 -0
  51. package/dist/commands/stats/data/cache.d.ts +29 -0
  52. package/dist/commands/stats/data/cache.d.ts.map +1 -0
  53. package/dist/commands/stats/data/cache.js +197 -0
  54. package/dist/commands/stats/data/cache.js.map +1 -0
  55. package/dist/commands/stats/data/firestore.d.ts +13 -0
  56. package/dist/commands/stats/data/firestore.d.ts.map +1 -0
  57. package/dist/commands/stats/data/firestore.js +155 -0
  58. package/dist/commands/stats/data/firestore.js.map +1 -0
  59. package/dist/commands/stats/data/fuzzy-match.d.ts +5 -0
  60. package/dist/commands/stats/data/fuzzy-match.d.ts.map +1 -0
  61. package/dist/commands/stats/data/fuzzy-match.js +36 -0
  62. package/dist/commands/stats/data/fuzzy-match.js.map +1 -0
  63. package/dist/commands/stats/data/local.d.ts +12 -0
  64. package/dist/commands/stats/data/local.d.ts.map +1 -0
  65. package/dist/commands/stats/data/local.js +77 -0
  66. package/dist/commands/stats/data/local.js.map +1 -0
  67. package/dist/commands/stats/data/source.d.ts +13 -0
  68. package/dist/commands/stats/data/source.d.ts.map +1 -0
  69. package/dist/commands/stats/data/source.js +41 -0
  70. package/dist/commands/stats/data/source.js.map +1 -0
  71. package/dist/commands/stats/data/types.d.ts +229 -0
  72. package/dist/commands/stats/data/types.d.ts.map +1 -0
  73. package/dist/commands/stats/data/types.js +50 -0
  74. package/dist/commands/stats/data/types.js.map +1 -0
  75. package/dist/commands/stats/index.d.ts +3 -0
  76. package/dist/commands/stats/index.d.ts.map +1 -0
  77. package/dist/commands/stats/index.js +41 -0
  78. package/dist/commands/stats/index.js.map +1 -0
  79. package/dist/commands/stats/render/charts.d.ts +9 -0
  80. package/dist/commands/stats/render/charts.d.ts.map +1 -0
  81. package/dist/commands/stats/render/charts.js +45 -0
  82. package/dist/commands/stats/render/charts.js.map +1 -0
  83. package/dist/commands/stats/render/colors.d.ts +21 -0
  84. package/dist/commands/stats/render/colors.d.ts.map +1 -0
  85. package/dist/commands/stats/render/colors.js +47 -0
  86. package/dist/commands/stats/render/colors.js.map +1 -0
  87. package/dist/commands/stats/render/format.d.ts +10 -0
  88. package/dist/commands/stats/render/format.d.ts.map +1 -0
  89. package/dist/commands/stats/render/format.js +57 -0
  90. package/dist/commands/stats/render/format.js.map +1 -0
  91. package/dist/commands/stats/render/layout.d.ts +10 -0
  92. package/dist/commands/stats/render/layout.d.ts.map +1 -0
  93. package/dist/commands/stats/render/layout.js +48 -0
  94. package/dist/commands/stats/render/layout.js.map +1 -0
  95. package/dist/commands/stats/shared.d.ts +6 -0
  96. package/dist/commands/stats/shared.d.ts.map +1 -0
  97. package/dist/commands/stats/shared.js +26 -0
  98. package/dist/commands/stats/shared.js.map +1 -0
  99. package/dist/commands/status.d.ts.map +1 -1
  100. package/dist/commands/status.js +50 -37
  101. package/dist/commands/status.js.map +1 -1
  102. package/dist/commands/sync.d.ts +16 -1
  103. package/dist/commands/sync.d.ts.map +1 -1
  104. package/dist/commands/sync.js +173 -80
  105. package/dist/commands/sync.js.map +1 -1
  106. package/dist/commands/telemetry.d.ts +3 -0
  107. package/dist/commands/telemetry.d.ts.map +1 -0
  108. package/dist/commands/telemetry.js +106 -0
  109. package/dist/commands/telemetry.js.map +1 -0
  110. package/dist/firebase/client.d.ts +5 -0
  111. package/dist/firebase/client.d.ts.map +1 -1
  112. package/dist/firebase/client.js +5 -2
  113. package/dist/firebase/client.js.map +1 -1
  114. package/dist/index.js +21 -4
  115. package/dist/index.js.map +1 -1
  116. package/dist/parser/jsonl.js +3 -2
  117. package/dist/parser/jsonl.js.map +1 -1
  118. package/dist/providers/claude-code.d.ts.map +1 -1
  119. package/dist/providers/claude-code.js +5 -1
  120. package/dist/providers/claude-code.js.map +1 -1
  121. package/dist/providers/codex.d.ts +14 -0
  122. package/dist/providers/codex.d.ts.map +1 -0
  123. package/dist/providers/codex.js +364 -0
  124. package/dist/providers/codex.js.map +1 -0
  125. package/dist/providers/copilot-cli.d.ts +14 -0
  126. package/dist/providers/copilot-cli.d.ts.map +1 -0
  127. package/dist/providers/copilot-cli.js +363 -0
  128. package/dist/providers/copilot-cli.js.map +1 -0
  129. package/dist/providers/cursor.d.ts +27 -0
  130. package/dist/providers/cursor.d.ts.map +1 -0
  131. package/dist/providers/cursor.js +356 -0
  132. package/dist/providers/cursor.js.map +1 -0
  133. package/dist/providers/registry.d.ts +0 -4
  134. package/dist/providers/registry.d.ts.map +1 -1
  135. package/dist/providers/registry.js +9 -6
  136. package/dist/providers/registry.js.map +1 -1
  137. package/dist/types.d.ts +5 -1
  138. package/dist/types.d.ts.map +1 -1
  139. package/dist/utils/config.d.ts +10 -1
  140. package/dist/utils/config.d.ts.map +1 -1
  141. package/dist/utils/config.js +21 -0
  142. package/dist/utils/config.js.map +1 -1
  143. package/dist/utils/paths.d.ts +10 -0
  144. package/dist/utils/paths.d.ts.map +1 -0
  145. package/dist/utils/paths.js +16 -0
  146. package/dist/utils/paths.js.map +1 -0
  147. package/dist/utils/telemetry.d.ts +52 -0
  148. package/dist/utils/telemetry.d.ts.map +1 -0
  149. package/dist/utils/telemetry.js +304 -0
  150. package/dist/utils/telemetry.js.map +1 -0
  151. package/dist/utils/tips.d.ts +11 -0
  152. package/dist/utils/tips.d.ts.map +1 -0
  153. package/dist/utils/tips.js +106 -0
  154. package/dist/utils/tips.js.map +1 -0
  155. package/dist/utils/welcome.d.ts +11 -0
  156. package/dist/utils/welcome.d.ts.map +1 -0
  157. package/dist/utils/welcome.js +101 -0
  158. package/dist/utils/welcome.js.map +1 -0
  159. package/package.json +9 -2
@@ -0,0 +1,364 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import { generateTitle, detectSessionCharacter } from '../parser/titles.js';
5
+ /**
6
+ * OpenAI Codex CLI session provider.
7
+ * Discovers and parses rollout JSONL files from ~/.codex/sessions/
8
+ */
9
+ export class CodexProvider {
10
+ getProviderName() {
11
+ return 'codex-cli';
12
+ }
13
+ async discover(options) {
14
+ const codexHome = getCodexHome();
15
+ if (!codexHome)
16
+ return [];
17
+ const files = [];
18
+ // Walk sessions/ and archived_sessions/ directories
19
+ for (const subdir of ['sessions', 'archived_sessions']) {
20
+ const sessionsDir = path.join(codexHome, subdir);
21
+ if (!fs.existsSync(sessionsDir))
22
+ continue;
23
+ collectRolloutFiles(sessionsDir, files);
24
+ }
25
+ // Apply project filter if specified (filter by cwd from session_meta)
26
+ if (options?.projectFilter) {
27
+ return filterByProject(files, options.projectFilter);
28
+ }
29
+ return files;
30
+ }
31
+ async parse(filePath) {
32
+ return parseCodexSession(filePath);
33
+ }
34
+ }
35
+ // ---------------------------------------------------------------------------
36
+ // Discovery helpers
37
+ // ---------------------------------------------------------------------------
38
+ function getCodexHome() {
39
+ const envHome = process.env.CODEX_HOME;
40
+ if (envHome && fs.existsSync(envHome))
41
+ return envHome;
42
+ const home = os.homedir();
43
+ const defaultDir = path.join(home, '.codex');
44
+ return fs.existsSync(defaultDir) ? defaultDir : null;
45
+ }
46
+ /**
47
+ * Recursively collect rollout-*.jsonl files from date-organized directories.
48
+ * Structure: sessions/YYYY/MM/DD/rollout-<timestamp>-<uuid>.jsonl
49
+ */
50
+ function collectRolloutFiles(dir, files) {
51
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
52
+ for (const entry of entries) {
53
+ const fullPath = path.join(dir, entry.name);
54
+ if (entry.isDirectory()) {
55
+ collectRolloutFiles(fullPath, files);
56
+ }
57
+ else if (entry.name.startsWith('rollout-') && entry.name.endsWith('.jsonl')) {
58
+ files.push(fullPath);
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Quick-filter by project: read only the first line (session_meta) to get cwd.
64
+ */
65
+ function filterByProject(files, projectFilter) {
66
+ const filtered = [];
67
+ const lowerFilter = projectFilter.toLowerCase();
68
+ for (const filePath of files) {
69
+ try {
70
+ const fd = fs.openSync(filePath, 'r');
71
+ const buf = Buffer.alloc(2048);
72
+ const bytesRead = fs.readSync(fd, buf, 0, 2048, 0);
73
+ fs.closeSync(fd);
74
+ const firstLine = buf.toString('utf-8', 0, bytesRead).split('\n')[0];
75
+ const meta = JSON.parse(firstLine);
76
+ // session_meta has cwd field
77
+ const cwd = meta.cwd || meta.payload?.cwd || '';
78
+ if (cwd.toLowerCase().includes(lowerFilter)) {
79
+ filtered.push(filePath);
80
+ }
81
+ }
82
+ catch {
83
+ // Include files we can't quick-check
84
+ filtered.push(filePath);
85
+ }
86
+ }
87
+ return filtered;
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Parser
91
+ // ---------------------------------------------------------------------------
92
+ function parseCodexSession(filePath) {
93
+ try {
94
+ const content = fs.readFileSync(filePath, 'utf-8');
95
+ const lines = content.split('\n').filter(line => line.trim());
96
+ if (lines.length === 0)
97
+ return null;
98
+ // Parse first line — session metadata
99
+ const meta = parseSessionMeta(lines[0]);
100
+ if (!meta)
101
+ return null;
102
+ const sessionId = `codex:${meta.id}`;
103
+ // Parse remaining lines — events
104
+ const messages = [];
105
+ const usageEntries = [];
106
+ let model = meta.model || '';
107
+ let lastTimestamp = new Date(meta.timestamp);
108
+ // Accumulator for current assistant turn
109
+ let currentAssistantText = '';
110
+ let currentToolCalls = [];
111
+ let currentToolResults = [];
112
+ let currentThinking = null;
113
+ let turnUsage = null;
114
+ let toolCounter = 0;
115
+ function flushAssistantTurn() {
116
+ const text = currentAssistantText.trim();
117
+ if (!text && currentToolCalls.length === 0)
118
+ return;
119
+ const msgUsage = turnUsage ? {
120
+ inputTokens: turnUsage.input_tokens || 0,
121
+ outputTokens: turnUsage.output_tokens || 0,
122
+ cacheCreationTokens: 0,
123
+ cacheReadTokens: turnUsage.cached_input_tokens || 0,
124
+ model: model || 'unknown',
125
+ estimatedCostUsd: 0,
126
+ } : null;
127
+ messages.push({
128
+ id: `codex-assistant-${messages.length}`,
129
+ sessionId: sessionId,
130
+ type: 'assistant',
131
+ content: text.slice(0, 10000),
132
+ thinking: currentThinking,
133
+ toolCalls: [...currentToolCalls],
134
+ toolResults: [...currentToolResults],
135
+ usage: msgUsage,
136
+ timestamp: lastTimestamp,
137
+ parentId: null,
138
+ });
139
+ // Reset accumulators
140
+ currentAssistantText = '';
141
+ currentToolCalls = [];
142
+ currentToolResults = [];
143
+ currentThinking = null;
144
+ turnUsage = null;
145
+ }
146
+ for (let i = 1; i < lines.length; i++) {
147
+ const line = lines[i];
148
+ let event;
149
+ try {
150
+ event = JSON.parse(line);
151
+ }
152
+ catch {
153
+ continue;
154
+ }
155
+ // Unwrap RolloutLine envelope if present
156
+ const eventType = event.type;
157
+ const payload = (event.payload || event);
158
+ // Handle different event types
159
+ const innerType = payload.type || eventType;
160
+ switch (innerType) {
161
+ case 'user_message':
162
+ case 'userMessage': {
163
+ // Flush any pending assistant turn
164
+ flushAssistantTurn();
165
+ const userContent = extractUserContent(payload);
166
+ if (userContent) {
167
+ messages.push({
168
+ id: payload.id || `codex-user-${messages.length}`,
169
+ sessionId: sessionId,
170
+ type: 'user',
171
+ content: userContent.slice(0, 10000),
172
+ thinking: null,
173
+ toolCalls: [],
174
+ toolResults: [],
175
+ usage: null,
176
+ timestamp: parseTimestamp(payload) || lastTimestamp,
177
+ parentId: null,
178
+ });
179
+ lastTimestamp = messages[messages.length - 1].timestamp;
180
+ }
181
+ break;
182
+ }
183
+ case 'agent_message':
184
+ case 'agentMessage':
185
+ case 'item.completed': {
186
+ const item = (payload.item || payload);
187
+ const itemType = item.type || innerType;
188
+ if (itemType === 'agent_message' || itemType === 'agentMessage') {
189
+ currentAssistantText += (item.text || payload.text || '') + '\n';
190
+ }
191
+ else if (itemType === 'command_execution' || itemType === 'commandExecution') {
192
+ toolCounter++;
193
+ currentToolCalls.push({
194
+ id: item.id || `codex-tool-${toolCounter}`,
195
+ name: 'shell',
196
+ input: { command: item.command || '', cwd: item.cwd || '' },
197
+ });
198
+ if (item.aggregatedOutput) {
199
+ currentToolResults.push({
200
+ toolUseId: item.id || `codex-tool-${toolCounter}`,
201
+ output: (item.aggregatedOutput || '').slice(0, 1000),
202
+ });
203
+ }
204
+ }
205
+ else if (itemType === 'file_change' || itemType === 'fileChange') {
206
+ if (item.changes) {
207
+ for (const change of item.changes) {
208
+ toolCounter++;
209
+ currentToolCalls.push({
210
+ id: `codex-file-${toolCounter}`,
211
+ name: 'apply_patch',
212
+ input: { path: change.path, kind: change.kind },
213
+ });
214
+ if (change.diff) {
215
+ currentToolResults.push({
216
+ toolUseId: `codex-file-${toolCounter}`,
217
+ output: change.diff.slice(0, 1000),
218
+ });
219
+ }
220
+ }
221
+ }
222
+ }
223
+ else if (itemType === 'mcp_tool_call' || itemType === 'mcpToolCall') {
224
+ toolCounter++;
225
+ currentToolCalls.push({
226
+ id: item.id || `codex-mcp-${toolCounter}`,
227
+ name: item.tool || 'mcp_tool',
228
+ input: item.arguments || {},
229
+ });
230
+ if (item.result) {
231
+ currentToolResults.push({
232
+ toolUseId: item.id || `codex-mcp-${toolCounter}`,
233
+ output: (item.result || '').slice(0, 1000),
234
+ });
235
+ }
236
+ }
237
+ else if (itemType === 'reasoning') {
238
+ currentThinking = item.summary || item.text || null;
239
+ }
240
+ break;
241
+ }
242
+ case 'turn.completed': {
243
+ const usage = (payload.usage || payload);
244
+ if (usage.input_tokens) {
245
+ turnUsage = usage;
246
+ usageEntries.push(usage);
247
+ }
248
+ if (payload.model) {
249
+ model = payload.model;
250
+ }
251
+ // Flush assistant turn at turn boundary
252
+ flushAssistantTurn();
253
+ break;
254
+ }
255
+ case 'turn.started':
256
+ case 'thread.started':
257
+ case 'session_meta':
258
+ // Lifecycle events — skip
259
+ break;
260
+ }
261
+ }
262
+ // Flush any remaining assistant content
263
+ flushAssistantTurn();
264
+ if (messages.length === 0)
265
+ return null;
266
+ // Build session
267
+ const userMessages = messages.filter(m => m.type === 'user');
268
+ const assistantMessages = messages.filter(m => m.type === 'assistant');
269
+ const toolCallCount = messages.reduce((sum, m) => sum + m.toolCalls.length, 0);
270
+ const timestamps = messages.map(m => m.timestamp.getTime()).filter(t => t > 0);
271
+ const startedAt = timestamps.length > 0 ? new Date(Math.min(...timestamps)) : new Date(meta.timestamp);
272
+ const endedAt = timestamps.length > 0 ? new Date(Math.max(...timestamps)) : lastTimestamp;
273
+ // Build session usage from accumulated turn usage
274
+ const totalInput = usageEntries.reduce((s, u) => s + (u.input_tokens || 0), 0);
275
+ const totalOutput = usageEntries.reduce((s, u) => s + (u.output_tokens || 0), 0);
276
+ const totalCached = usageEntries.reduce((s, u) => s + (u.cached_input_tokens || 0), 0);
277
+ const usage = totalInput > 0 ? {
278
+ totalInputTokens: totalInput,
279
+ totalOutputTokens: totalOutput,
280
+ cacheCreationTokens: 0,
281
+ cacheReadTokens: totalCached,
282
+ estimatedCostUsd: 0, // TODO: Codex pricing not public
283
+ modelsUsed: model ? [model] : [],
284
+ primaryModel: model || 'unknown',
285
+ usageSource: 'jsonl',
286
+ } : undefined;
287
+ const projectPath = meta.cwd || 'codex://unknown';
288
+ const projectName = path.basename(projectPath);
289
+ const session = {
290
+ id: sessionId,
291
+ projectPath,
292
+ projectName,
293
+ summary: null,
294
+ generatedTitle: null,
295
+ titleSource: null,
296
+ sessionCharacter: null,
297
+ startedAt,
298
+ endedAt,
299
+ messageCount: messages.length,
300
+ userMessageCount: userMessages.length,
301
+ assistantMessageCount: assistantMessages.length,
302
+ toolCallCount,
303
+ gitBranch: null,
304
+ claudeVersion: meta.cli_version || null,
305
+ sourceTool: 'codex-cli',
306
+ usage,
307
+ messages,
308
+ };
309
+ // Generate title and character
310
+ const titleResult = generateTitle(session);
311
+ session.generatedTitle = titleResult.title;
312
+ session.titleSource = titleResult.source;
313
+ session.sessionCharacter = titleResult.character || detectSessionCharacter(session);
314
+ return session;
315
+ }
316
+ catch {
317
+ return null;
318
+ }
319
+ }
320
+ // ---------------------------------------------------------------------------
321
+ // Parsing helpers
322
+ // ---------------------------------------------------------------------------
323
+ function parseSessionMeta(line) {
324
+ try {
325
+ const parsed = JSON.parse(line);
326
+ // Handle RolloutLine envelope
327
+ if (parsed.payload && parsed.type === 'session_meta') {
328
+ return parsed.payload;
329
+ }
330
+ // Handle bare session_meta (legacy or direct)
331
+ if (parsed.type === 'session_meta' || parsed.id) {
332
+ return parsed;
333
+ }
334
+ return null;
335
+ }
336
+ catch {
337
+ return null;
338
+ }
339
+ }
340
+ function extractUserContent(payload) {
341
+ if (typeof payload.text === 'string')
342
+ return payload.text;
343
+ if (typeof payload.content === 'string')
344
+ return payload.content;
345
+ if (Array.isArray(payload.content)) {
346
+ return payload.content
347
+ .filter(c => c.type === 'text')
348
+ .map(c => c.text)
349
+ .join('\n');
350
+ }
351
+ // Nested in item
352
+ const item = payload.item;
353
+ if (item)
354
+ return extractUserContent(item);
355
+ return null;
356
+ }
357
+ function parseTimestamp(payload) {
358
+ const ts = payload.timestamp || payload.createdAt;
359
+ if (!ts)
360
+ return null;
361
+ const d = new Date(ts);
362
+ return isNaN(d.getTime()) ? null : d;
363
+ }
364
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SessionProvider } from './types.js';
2
+ import type { ParsedSession } from '../types.js';
3
+ /**
4
+ * GitHub Copilot CLI session provider.
5
+ * Discovers and parses events.jsonl files from ~/.copilot/session-state/
6
+ */
7
+ export declare class CopilotCliProvider implements SessionProvider {
8
+ getProviderName(): string;
9
+ discover(options?: {
10
+ projectFilter?: string;
11
+ }): Promise<string[]>;
12
+ parse(filePath: string): Promise<ParsedSession | null>;
13
+ }
14
+ //# sourceMappingURL=copilot-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-cli.d.ts","sourceRoot":"","sources":["../../src/providers/copilot-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAuC,MAAM,aAAa,CAAC;AAGtF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,eAAe,IAAI,MAAM;IAInB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBjE,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAG7D"}