@swarmify/agents-cli 1.7.1 → 1.8.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.
@@ -0,0 +1,479 @@
1
+ import * as fs from 'fs';
2
+ /**
3
+ * Auto-detect agent type from file path and parse the session.
4
+ */
5
+ export function parseSession(filePath, agent) {
6
+ const detected = agent || detectAgent(filePath);
7
+ if (!detected) {
8
+ throw new Error(`Cannot detect agent type from path: ${filePath}`);
9
+ }
10
+ switch (detected) {
11
+ case 'claude': return parseClaude(filePath);
12
+ case 'codex': return parseCodex(filePath);
13
+ case 'gemini': return parseGemini(filePath);
14
+ }
15
+ }
16
+ export function detectAgent(filePath) {
17
+ if (filePath.includes('/.claude/') || filePath.includes('\\.claude\\'))
18
+ return 'claude';
19
+ if (filePath.includes('/.codex/') || filePath.includes('\\.codex\\'))
20
+ return 'codex';
21
+ if (filePath.includes('/.gemini/') || filePath.includes('\\.gemini\\'))
22
+ return 'gemini';
23
+ // Try file extension + content heuristic
24
+ if (filePath.endsWith('.json'))
25
+ return 'gemini';
26
+ return null;
27
+ }
28
+ /**
29
+ * Summarize a tool_use into a one-liner string.
30
+ */
31
+ export function summarizeToolUse(tool, args) {
32
+ if (!args)
33
+ return tool;
34
+ switch (tool) {
35
+ case 'Bash':
36
+ return `Bash: ${truncate(String(args.command || '').replace(/\n/g, ' ').trim(), 120)}`;
37
+ case 'Read':
38
+ return `Read ${shortenPath(args.file_path || '')}`;
39
+ case 'Write':
40
+ return `Write ${shortenPath(args.file_path || '')}`;
41
+ case 'Edit':
42
+ return `Edit ${shortenPath(args.file_path || '')}`;
43
+ case 'Glob':
44
+ return `Glob ${args.pattern || ''}`;
45
+ case 'Grep':
46
+ return `Grep ${args.pattern || ''} ${args.path || ''}`.trim();
47
+ case 'Agent':
48
+ return `Agent: ${truncate(args.description || args.prompt || '', 80)}`;
49
+ case 'WebSearch':
50
+ case 'WebFetch':
51
+ return `${tool}: ${truncate(args.query || args.url || '', 80)}`;
52
+ // Codex tools
53
+ case 'exec_command':
54
+ return `Bash: ${truncate(String(args.command || args.cmd || '').replace(/\n/g, ' ').trim(), 120)}`;
55
+ case 'read_file':
56
+ return `Read ${shortenPath(args.file_path || args.path || '')}`;
57
+ case 'write_file':
58
+ case 'create_file':
59
+ return `Write ${shortenPath(args.file_path || args.path || '')}`;
60
+ case 'edit_file':
61
+ return `Edit ${shortenPath(args.file_path || args.path || '')}`;
62
+ // Gemini tools
63
+ case 'run_shell_command':
64
+ return `Bash: ${truncate(String(args.command || '').replace(/\n/g, ' ').trim(), 120)}`;
65
+ case 'search_file_content':
66
+ return `Search ${args.pattern || ''}`;
67
+ default: {
68
+ // Generic: show first meaningful arg
69
+ for (const key of ['file_path', 'path', 'pattern', 'command', 'prompt', 'query', 'url']) {
70
+ if (args[key])
71
+ return `${tool}: ${truncate(String(args[key]), 80)}`;
72
+ }
73
+ return tool;
74
+ }
75
+ }
76
+ }
77
+ function truncate(s, n) {
78
+ return s.length <= n ? s : s.slice(0, n - 3) + '...';
79
+ }
80
+ function shortenPath(p) {
81
+ const home = process.env.HOME || '';
82
+ if (home && p.startsWith(home))
83
+ return '~' + p.slice(home.length);
84
+ return p;
85
+ }
86
+ // ---------------------------------------------------------------------------
87
+ // Claude parser
88
+ // ---------------------------------------------------------------------------
89
+ export function parseClaude(filePath) {
90
+ const content = fs.readFileSync(filePath, 'utf-8');
91
+ const lines = content.split('\n').filter(l => l.trim());
92
+ const events = [];
93
+ // Map tool_use id -> {tool, args} for correlating with tool_result
94
+ const toolUseMap = new Map();
95
+ for (const line of lines) {
96
+ let raw;
97
+ try {
98
+ raw = JSON.parse(line);
99
+ }
100
+ catch {
101
+ continue;
102
+ }
103
+ const type = raw.type;
104
+ const timestamp = raw.timestamp || new Date().toISOString();
105
+ if (type === 'assistant') {
106
+ const contentBlocks = raw.message?.content || [];
107
+ for (const block of contentBlocks) {
108
+ if (block.type === 'thinking') {
109
+ // Thinking content -- may be encrypted (has .signature field)
110
+ const thinkingText = block.thinking || '';
111
+ if (thinkingText) {
112
+ events.push({
113
+ type: 'thinking',
114
+ agent: 'claude',
115
+ timestamp,
116
+ content: thinkingText,
117
+ });
118
+ }
119
+ }
120
+ else if (block.type === 'text') {
121
+ const text = (block.text || '').trim();
122
+ if (text) {
123
+ events.push({
124
+ type: 'message',
125
+ agent: 'claude',
126
+ timestamp,
127
+ role: 'assistant',
128
+ content: text,
129
+ });
130
+ }
131
+ }
132
+ else if (block.type === 'tool_use') {
133
+ const toolName = block.name || 'unknown';
134
+ const toolInput = block.input || {};
135
+ const toolId = block.id;
136
+ if (toolId) {
137
+ toolUseMap.set(toolId, { tool: toolName, args: toolInput });
138
+ }
139
+ events.push({
140
+ type: 'tool_use',
141
+ agent: 'claude',
142
+ timestamp,
143
+ tool: toolName,
144
+ args: toolInput,
145
+ path: toolInput.file_path || undefined,
146
+ command: toolName === 'Bash' ? toolInput.command : undefined,
147
+ });
148
+ }
149
+ }
150
+ }
151
+ else if (type === 'user') {
152
+ const contentBlocks = raw.message?.content;
153
+ if (typeof contentBlocks === 'string') {
154
+ // Simple user text
155
+ const text = contentBlocks.trim();
156
+ if (text) {
157
+ events.push({
158
+ type: 'message',
159
+ agent: 'claude',
160
+ timestamp,
161
+ role: 'user',
162
+ content: text,
163
+ });
164
+ }
165
+ }
166
+ else if (Array.isArray(contentBlocks)) {
167
+ for (const block of contentBlocks) {
168
+ if (block.type === 'text') {
169
+ const text = (block.text || '').trim();
170
+ if (text && !text.startsWith('[Request interrupted')) {
171
+ events.push({
172
+ type: 'message',
173
+ agent: 'claude',
174
+ timestamp,
175
+ role: 'user',
176
+ content: text,
177
+ });
178
+ }
179
+ }
180
+ else if (block.type === 'tool_result') {
181
+ const toolId = block.tool_use_id;
182
+ const toolInfo = toolId ? toolUseMap.get(toolId) : undefined;
183
+ const isError = block.is_error === true;
184
+ // Extract output text from tool result
185
+ let output = '';
186
+ if (typeof block.content === 'string') {
187
+ output = block.content;
188
+ }
189
+ else if (Array.isArray(block.content)) {
190
+ output = block.content
191
+ .filter((c) => c.type === 'text')
192
+ .map((c) => c.text || '')
193
+ .join('\n');
194
+ }
195
+ if (isError) {
196
+ events.push({
197
+ type: 'error',
198
+ agent: 'claude',
199
+ timestamp,
200
+ tool: toolInfo?.tool,
201
+ content: output || 'Tool execution failed',
202
+ });
203
+ }
204
+ else {
205
+ events.push({
206
+ type: 'tool_result',
207
+ agent: 'claude',
208
+ timestamp,
209
+ tool: toolInfo?.tool,
210
+ success: true,
211
+ output: output.length > 500 ? output.slice(0, 497) + '...' : output,
212
+ });
213
+ }
214
+ if (toolId)
215
+ toolUseMap.delete(toolId);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ else if (type === 'result') {
221
+ events.push({
222
+ type: 'result',
223
+ agent: 'claude',
224
+ timestamp,
225
+ content: raw.subtype || 'success',
226
+ });
227
+ }
228
+ // Skip: permission-mode, attachment, and other line types
229
+ }
230
+ return events;
231
+ }
232
+ // ---------------------------------------------------------------------------
233
+ // Codex parser
234
+ // ---------------------------------------------------------------------------
235
+ export function parseCodex(filePath) {
236
+ const content = fs.readFileSync(filePath, 'utf-8');
237
+ const lines = content.split('\n').filter(l => l.trim());
238
+ const events = [];
239
+ // Track function_call id -> name for correlating with function_call_output
240
+ const callMap = new Map();
241
+ for (const line of lines) {
242
+ let raw;
243
+ try {
244
+ raw = JSON.parse(line);
245
+ }
246
+ catch {
247
+ continue;
248
+ }
249
+ const lineType = raw.type;
250
+ const timestamp = raw.timestamp || new Date().toISOString();
251
+ const payload = raw.payload || {};
252
+ if (lineType === 'session_meta') {
253
+ events.push({
254
+ type: 'init',
255
+ agent: 'codex',
256
+ timestamp,
257
+ content: `Codex ${payload.cli_version || ''} session in ${payload.cwd || ''}`.trim(),
258
+ });
259
+ continue;
260
+ }
261
+ if (lineType === 'response_item') {
262
+ const ptype = payload.type;
263
+ if (ptype === 'message') {
264
+ const contentBlocks = payload.content || [];
265
+ const role = payload.role === 'user' || payload.role === 'developer' ? 'user' : 'assistant';
266
+ for (const block of contentBlocks) {
267
+ if (block.type === 'output_text') {
268
+ const text = (block.text || '').trim();
269
+ if (text) {
270
+ events.push({
271
+ type: 'message',
272
+ agent: 'codex',
273
+ timestamp,
274
+ role: 'assistant',
275
+ content: text,
276
+ });
277
+ }
278
+ }
279
+ else if (block.type === 'input_text') {
280
+ // Developer/user input messages -- only include actual prompts, not system instructions
281
+ const text = (block.text || '').trim();
282
+ if (text && text.length < 2000 && !text.includes('<permissions instructions>')) {
283
+ events.push({
284
+ type: 'message',
285
+ agent: 'codex',
286
+ timestamp,
287
+ role: 'user',
288
+ content: text,
289
+ });
290
+ }
291
+ }
292
+ }
293
+ }
294
+ else if (ptype === 'function_call') {
295
+ const name = payload.name || 'unknown';
296
+ let args = {};
297
+ try {
298
+ args = typeof payload.arguments === 'string'
299
+ ? JSON.parse(payload.arguments)
300
+ : (payload.arguments || {});
301
+ }
302
+ catch {
303
+ args = { raw: payload.arguments };
304
+ }
305
+ const callId = payload.call_id || payload.id;
306
+ if (callId) {
307
+ callMap.set(callId, { name, args });
308
+ }
309
+ events.push({
310
+ type: 'tool_use',
311
+ agent: 'codex',
312
+ timestamp,
313
+ tool: name,
314
+ args,
315
+ command: name === 'exec_command' ? (args.command || args.cmd) : undefined,
316
+ path: args.file_path || args.path || undefined,
317
+ });
318
+ }
319
+ else if (ptype === 'function_call_output') {
320
+ const callId = payload.call_id || payload.id;
321
+ const callInfo = callId ? callMap.get(callId) : undefined;
322
+ const output = String(payload.output || '');
323
+ events.push({
324
+ type: 'tool_result',
325
+ agent: 'codex',
326
+ timestamp,
327
+ tool: callInfo?.name,
328
+ success: true,
329
+ output: output.length > 500 ? output.slice(0, 497) + '...' : output,
330
+ });
331
+ if (callId)
332
+ callMap.delete(callId);
333
+ }
334
+ else if (ptype === 'reasoning') {
335
+ // Codex reasoning -- try to get the readable summary
336
+ const summaries = payload.summary || [];
337
+ const text = summaries.length > 0
338
+ ? summaries.map((s) => s.text || '').join('\n')
339
+ : (payload.text || '');
340
+ if (text.trim()) {
341
+ events.push({
342
+ type: 'thinking',
343
+ agent: 'codex',
344
+ timestamp,
345
+ content: text.trim(),
346
+ });
347
+ }
348
+ }
349
+ }
350
+ // Skip: event_msg (token_count, etc.), turn_context
351
+ }
352
+ return events;
353
+ }
354
+ // ---------------------------------------------------------------------------
355
+ // Gemini parser
356
+ // ---------------------------------------------------------------------------
357
+ export function parseGemini(filePath) {
358
+ const content = fs.readFileSync(filePath, 'utf-8');
359
+ let session;
360
+ try {
361
+ session = JSON.parse(content);
362
+ }
363
+ catch {
364
+ throw new Error(`Failed to parse Gemini session: ${filePath}`);
365
+ }
366
+ const messages = session.messages || [];
367
+ const events = [];
368
+ events.push({
369
+ type: 'init',
370
+ agent: 'gemini',
371
+ timestamp: session.startTime || new Date().toISOString(),
372
+ content: `Gemini session ${session.sessionId || ''}`.trim(),
373
+ });
374
+ for (const msg of messages) {
375
+ const timestamp = msg.timestamp || session.startTime || new Date().toISOString();
376
+ if (msg.type === 'user') {
377
+ const text = extractGeminiContent(msg.content);
378
+ if (text) {
379
+ events.push({
380
+ type: 'message',
381
+ agent: 'gemini',
382
+ timestamp,
383
+ role: 'user',
384
+ content: text,
385
+ });
386
+ }
387
+ }
388
+ else if (msg.type === 'gemini') {
389
+ // Reasoning thoughts
390
+ if (Array.isArray(msg.thoughts)) {
391
+ for (const thought of msg.thoughts) {
392
+ const text = thought.description || thought.subject || '';
393
+ if (text.trim()) {
394
+ const subject = thought.subject ? `**${thought.subject}**: ` : '';
395
+ events.push({
396
+ type: 'thinking',
397
+ agent: 'gemini',
398
+ timestamp: thought.timestamp || timestamp,
399
+ content: `${subject}${thought.description || ''}`.trim(),
400
+ });
401
+ }
402
+ }
403
+ }
404
+ // Assistant text
405
+ const text = extractGeminiContent(msg.content);
406
+ if (text) {
407
+ events.push({
408
+ type: 'message',
409
+ agent: 'gemini',
410
+ timestamp,
411
+ role: 'assistant',
412
+ content: text,
413
+ });
414
+ }
415
+ // Tool calls (Gemini inlines call + result on the same message)
416
+ if (Array.isArray(msg.toolCalls)) {
417
+ for (const tc of msg.toolCalls) {
418
+ const toolName = tc.name || 'unknown';
419
+ const args = tc.args || {};
420
+ events.push({
421
+ type: 'tool_use',
422
+ agent: 'gemini',
423
+ timestamp: tc.timestamp || timestamp,
424
+ tool: toolName,
425
+ args,
426
+ command: ['run_shell_command', 'shell', 'bash'].includes(toolName) ? args.command : undefined,
427
+ path: args.file_path || args.path || undefined,
428
+ });
429
+ // Inline result
430
+ if (tc.result || tc.status) {
431
+ let output = '';
432
+ if (Array.isArray(tc.result)) {
433
+ for (const r of tc.result) {
434
+ const resp = r?.functionResponse?.response;
435
+ if (resp?.output) {
436
+ output += String(resp.output);
437
+ }
438
+ }
439
+ }
440
+ else if (typeof tc.result === 'string') {
441
+ output = tc.result;
442
+ }
443
+ events.push({
444
+ type: 'tool_result',
445
+ agent: 'gemini',
446
+ timestamp: tc.timestamp || timestamp,
447
+ tool: toolName,
448
+ success: tc.status === 'success',
449
+ output: output.length > 500 ? output.slice(0, 497) + '...' : output,
450
+ });
451
+ }
452
+ }
453
+ }
454
+ }
455
+ }
456
+ return events;
457
+ }
458
+ /**
459
+ * Extract text content from Gemini's content field,
460
+ * which can be a string or an array of {text: string} parts.
461
+ */
462
+ function extractGeminiContent(content) {
463
+ if (typeof content === 'string')
464
+ return content.trim();
465
+ if (Array.isArray(content)) {
466
+ return content
467
+ .map((part) => {
468
+ if (typeof part === 'string')
469
+ return part;
470
+ if (typeof part?.text === 'string')
471
+ return part.text;
472
+ return '';
473
+ })
474
+ .join('\n')
475
+ .trim();
476
+ }
477
+ return '';
478
+ }
479
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/lib/session/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { SessionEvent } from './types.js';
2
+ /**
3
+ * Render session as a conversation transcript.
4
+ * Shows user messages, assistant text, and tool calls as one-liners.
5
+ */
6
+ export declare function renderTranscript(events: SessionEvent[]): string;
7
+ /**
8
+ * Render session as an activity summary (fingerprint).
9
+ * Shows files touched, commands run, and the final message.
10
+ */
11
+ export declare function renderSummary(events: SessionEvent[]): string;
12
+ /**
13
+ * Render session as a markdown trace (for GitHub gist uploads).
14
+ * Structure: Agent Reasoning section + Full Conversation section.
15
+ */
16
+ export declare function renderTrace(events: SessionEvent[]): string;
17
+ /**
18
+ * Render session as JSON (normalized events).
19
+ */
20
+ export declare function renderJson(events: SessionEvent[]): string;
21
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/lib/session/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CA8B/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CA4E5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAyC1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAEzD"}