@ai-devkit/agent-manager 0.9.0 → 0.11.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.
- package/dist/AgentManager.d.ts +21 -1
- package/dist/AgentManager.d.ts.map +1 -1
- package/dist/AgentManager.js +47 -0
- package/dist/AgentManager.js.map +1 -1
- package/dist/adapters/AgentAdapter.d.ts +66 -0
- package/dist/adapters/AgentAdapter.d.ts.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.d.ts +14 -43
- package/dist/adapters/ClaudeCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.js +60 -275
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/CodexAdapter.d.ts +14 -1
- package/dist/adapters/CodexAdapter.d.ts.map +1 -1
- package/dist/adapters/CodexAdapter.js +105 -6
- package/dist/adapters/CodexAdapter.js.map +1 -1
- package/dist/adapters/GeminiCliAdapter.d.ts +9 -1
- package/dist/adapters/GeminiCliAdapter.d.ts.map +1 -1
- package/dist/adapters/GeminiCliAdapter.js +77 -6
- package/dist/adapters/GeminiCliAdapter.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/terminal/TerminalFocusManager.d.ts.map +1 -1
- package/dist/terminal/TerminalFocusManager.js +36 -27
- package/dist/terminal/TerminalFocusManager.js.map +1 -1
- package/dist/terminal/TtyWriter.d.ts.map +1 -1
- package/dist/terminal/TtyWriter.js +3 -12
- package/dist/terminal/TtyWriter.js.map +1 -1
- package/dist/utils/ClaudeSessionParser.d.ts +114 -0
- package/dist/utils/ClaudeSessionParser.d.ts.map +1 -0
- package/dist/utils/ClaudeSessionParser.js +377 -0
- package/dist/utils/ClaudeSessionParser.js.map +1 -0
- package/dist/utils/applescript.d.ts +6 -0
- package/dist/utils/applescript.d.ts.map +1 -0
- package/dist/utils/applescript.js +14 -0
- package/dist/utils/applescript.js.map +1 -0
- package/dist/utils/process.d.ts +3 -4
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +11 -15
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/session.d.ts +34 -5
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +90 -44
- package/dist/utils/session.js.map +1 -1
- package/package.json +1 -1
- package/src/AgentManager.ts +66 -4
- package/src/__tests__/AgentManager.test.ts +134 -2
- package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +188 -32
- package/src/__tests__/adapters/CodexAdapter.test.ts +123 -3
- package/src/__tests__/adapters/GeminiCliAdapter.test.ts +133 -0
- package/src/__tests__/utils/ClaudeSessionParser.test.ts +195 -0
- package/src/__tests__/utils/process.test.ts +27 -27
- package/src/__tests__/utils/session.test.ts +79 -43
- package/src/adapters/AgentAdapter.ts +76 -0
- package/src/adapters/ClaudeCodeAdapter.ts +82 -356
- package/src/adapters/CodexAdapter.ts +126 -8
- package/src/adapters/GeminiCliAdapter.ts +102 -7
- package/src/index.ts +9 -1
- package/src/terminal/TerminalFocusManager.ts +35 -26
- package/src/terminal/TtyWriter.ts +1 -11
- package/src/utils/ClaudeSessionParser.ts +437 -0
- package/src/utils/applescript.ts +10 -0
- package/src/utils/process.ts +21 -24
- package/src/utils/session.ts +86 -45
|
@@ -40,6 +40,9 @@ const AgentAdapter_1 = require("./AgentAdapter");
|
|
|
40
40
|
const process_1 = require("../utils/process");
|
|
41
41
|
const session_1 = require("../utils/session");
|
|
42
42
|
const matching_1 = require("../utils/matching");
|
|
43
|
+
const ClaudeSessionParser_1 = require("../utils/ClaudeSessionParser");
|
|
44
|
+
/** Maximum allowed delta (ms) between process start time and PID file startedAt. */
|
|
45
|
+
const PID_FILE_STALENESS_MS = 60000;
|
|
43
46
|
/**
|
|
44
47
|
* Claude Code Adapter
|
|
45
48
|
*
|
|
@@ -56,10 +59,8 @@ class ClaudeCodeAdapter {
|
|
|
56
59
|
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
57
60
|
this.projectsDir = path.join(homeDir, '.claude', 'projects');
|
|
58
61
|
this.sessionsDir = path.join(homeDir, '.claude', 'sessions');
|
|
62
|
+
this.parser = new ClaudeSessionParser_1.ClaudeSessionParser();
|
|
59
63
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Check if this adapter can handle a given process
|
|
62
|
-
*/
|
|
63
64
|
canHandle(processInfo) {
|
|
64
65
|
return this.isClaudeExecutable(processInfo.command);
|
|
65
66
|
}
|
|
@@ -68,9 +69,6 @@ class ClaudeCodeAdapter {
|
|
|
68
69
|
const base = path.basename(executable).toLowerCase();
|
|
69
70
|
return base === 'claude' || base === 'claude.exe';
|
|
70
71
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Detect running Claude Code agents
|
|
73
|
-
*/
|
|
74
72
|
async detectAgents() {
|
|
75
73
|
const processes = (0, process_1.enrichProcesses)((0, process_1.listAgentProcesses)('claude'));
|
|
76
74
|
if (processes.length === 0) {
|
|
@@ -90,7 +88,7 @@ class ClaudeCodeAdapter {
|
|
|
90
88
|
const agents = [];
|
|
91
89
|
// Build agents from direct (PID-file) matches
|
|
92
90
|
for (const { process: proc, sessionFile } of direct) {
|
|
93
|
-
const sessionData = this.readSession(sessionFile.filePath, sessionFile.resolvedCwd);
|
|
91
|
+
const sessionData = this.parser.readSession(sessionFile.filePath, sessionFile.resolvedCwd);
|
|
94
92
|
if (sessionData) {
|
|
95
93
|
agents.push(this.mapSessionToAgent(sessionData, proc, sessionFile));
|
|
96
94
|
}
|
|
@@ -100,7 +98,7 @@ class ClaudeCodeAdapter {
|
|
|
100
98
|
}
|
|
101
99
|
// Build agents from legacy matches
|
|
102
100
|
for (const match of legacyMatches) {
|
|
103
|
-
const sessionData = this.readSession(match.session.filePath, match.session.resolvedCwd);
|
|
101
|
+
const sessionData = this.parser.readSession(match.session.filePath, match.session.resolvedCwd);
|
|
104
102
|
if (sessionData) {
|
|
105
103
|
agents.push(this.mapSessionToAgent(sessionData, match.process, match.session));
|
|
106
104
|
}
|
|
@@ -124,7 +122,6 @@ class ClaudeCodeAdapter {
|
|
|
124
122
|
* via a single batched stat call across all directories.
|
|
125
123
|
*/
|
|
126
124
|
discoverSessions(processes) {
|
|
127
|
-
// Collect valid project dirs and map them back to their CWD
|
|
128
125
|
const dirToCwd = new Map();
|
|
129
126
|
for (const proc of processes) {
|
|
130
127
|
if (!proc.cwd)
|
|
@@ -143,9 +140,7 @@ class ClaudeCodeAdapter {
|
|
|
143
140
|
}
|
|
144
141
|
if (dirToCwd.size === 0)
|
|
145
142
|
return [];
|
|
146
|
-
// Single batched stat call across all directories
|
|
147
143
|
const files = (0, session_1.batchGetSessionFileBirthtimes)([...dirToCwd.keys()]);
|
|
148
|
-
// Set resolvedCwd based on which project dir the file belongs to
|
|
149
144
|
for (const file of files) {
|
|
150
145
|
file.resolvedCwd = dirToCwd.get(file.projectDir) || '';
|
|
151
146
|
}
|
|
@@ -159,7 +154,7 @@ class ClaudeCodeAdapter {
|
|
|
159
154
|
* fallback — processes with no valid PID file (sent to legacy matching)
|
|
160
155
|
*
|
|
161
156
|
* Per-process fallback triggers on: file absent, malformed JSON,
|
|
162
|
-
* stale startedAt (>
|
|
157
|
+
* stale startedAt (>60s from proc.startTime), or missing JSONL.
|
|
163
158
|
*/
|
|
164
159
|
tryPidFileMatching(processes) {
|
|
165
160
|
const direct = [];
|
|
@@ -171,7 +166,7 @@ class ClaudeCodeAdapter {
|
|
|
171
166
|
// Stale-file guard: reject PID files from a previous process with the same PID
|
|
172
167
|
if (proc.startTime) {
|
|
173
168
|
const deltaMs = Math.abs(proc.startTime.getTime() - entry.startedAt);
|
|
174
|
-
if (deltaMs >
|
|
169
|
+
if (deltaMs > PID_FILE_STALENESS_MS) {
|
|
175
170
|
fallback.push(proc);
|
|
176
171
|
continue;
|
|
177
172
|
}
|
|
@@ -214,7 +209,7 @@ class ClaudeCodeAdapter {
|
|
|
214
209
|
return {
|
|
215
210
|
name: (0, matching_1.generateAgentName)(processInfo.cwd, processInfo.pid),
|
|
216
211
|
type: this.type,
|
|
217
|
-
status: this.determineStatus(session),
|
|
212
|
+
status: this.parser.determineStatus(session),
|
|
218
213
|
summary: session.lastUserMessage || 'Session started',
|
|
219
214
|
pid: processInfo.pid,
|
|
220
215
|
projectPath: sessionFile.resolvedCwd || processInfo.cwd || '',
|
|
@@ -235,278 +230,68 @@ class ClaudeCodeAdapter {
|
|
|
235
230
|
lastActive: new Date(),
|
|
236
231
|
};
|
|
237
232
|
}
|
|
238
|
-
/**
|
|
239
|
-
* Parse a single session file into ClaudeSession
|
|
240
|
-
*/
|
|
241
|
-
readSession(filePath, projectPath) {
|
|
242
|
-
const sessionId = path.basename(filePath, '.jsonl');
|
|
243
|
-
let content;
|
|
244
|
-
try {
|
|
245
|
-
content = fs.readFileSync(filePath, 'utf-8');
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
return null;
|
|
249
|
-
}
|
|
250
|
-
const allLines = content.trim().split('\n');
|
|
251
|
-
if (allLines.length === 0) {
|
|
252
|
-
return null;
|
|
253
|
-
}
|
|
254
|
-
// Parse first line for sessionStart.
|
|
255
|
-
// Claude Code may emit a "file-history-snapshot" as the first entry, which
|
|
256
|
-
// stores its timestamp inside "snapshot.timestamp" rather than at the root.
|
|
257
|
-
let sessionStart = null;
|
|
258
|
-
try {
|
|
259
|
-
const firstEntry = JSON.parse(allLines[0]);
|
|
260
|
-
const rawTs = firstEntry.timestamp || firstEntry.snapshot?.timestamp;
|
|
261
|
-
if (rawTs) {
|
|
262
|
-
const ts = new Date(rawTs);
|
|
263
|
-
if (!Number.isNaN(ts.getTime())) {
|
|
264
|
-
sessionStart = ts;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
/* skip */
|
|
270
|
-
}
|
|
271
|
-
// Parse all lines for session state (file already in memory)
|
|
272
|
-
let lastEntryType;
|
|
273
|
-
let lastActive;
|
|
274
|
-
let lastCwd;
|
|
275
|
-
let isInterrupted = false;
|
|
276
|
-
let lastUserMessage;
|
|
277
|
-
for (const line of allLines) {
|
|
278
|
-
try {
|
|
279
|
-
const entry = JSON.parse(line);
|
|
280
|
-
if (entry.timestamp) {
|
|
281
|
-
const ts = new Date(entry.timestamp);
|
|
282
|
-
if (!Number.isNaN(ts.getTime())) {
|
|
283
|
-
lastActive = ts;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (typeof entry.cwd === 'string' && entry.cwd.trim().length > 0) {
|
|
287
|
-
lastCwd = entry.cwd;
|
|
288
|
-
}
|
|
289
|
-
if (entry.type && !this.isMetadataEntryType(entry.type)) {
|
|
290
|
-
lastEntryType = entry.type;
|
|
291
|
-
if (entry.type === 'user') {
|
|
292
|
-
const msgContent = entry.message?.content;
|
|
293
|
-
isInterrupted =
|
|
294
|
-
Array.isArray(msgContent) &&
|
|
295
|
-
msgContent.some((c) => (c.type === 'text' &&
|
|
296
|
-
c.text?.includes('[Request interrupted')) ||
|
|
297
|
-
(c.type === 'tool_result' &&
|
|
298
|
-
c.content?.includes('[Request interrupted')));
|
|
299
|
-
// Extract user message text for summary fallback
|
|
300
|
-
const text = this.extractUserMessageText(msgContent);
|
|
301
|
-
if (text) {
|
|
302
|
-
lastUserMessage = text;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
isInterrupted = false;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch {
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return {
|
|
315
|
-
sessionId,
|
|
316
|
-
projectPath: projectPath || lastCwd || '',
|
|
317
|
-
lastCwd,
|
|
318
|
-
sessionStart: sessionStart || lastActive || new Date(),
|
|
319
|
-
lastActive: lastActive || new Date(),
|
|
320
|
-
lastEntryType,
|
|
321
|
-
isInterrupted,
|
|
322
|
-
lastUserMessage,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Determine agent status from session state
|
|
327
|
-
*/
|
|
328
|
-
determineStatus(session) {
|
|
329
|
-
if (!session.lastEntryType) {
|
|
330
|
-
return AgentAdapter_1.AgentStatus.UNKNOWN;
|
|
331
|
-
}
|
|
332
|
-
// No age-based IDLE override: every agent in the list is backed by
|
|
333
|
-
// a running process (found via ps), so the entry type is the best
|
|
334
|
-
// indicator of actual state.
|
|
335
|
-
if (session.lastEntryType === 'user') {
|
|
336
|
-
return session.isInterrupted
|
|
337
|
-
? AgentAdapter_1.AgentStatus.WAITING
|
|
338
|
-
: AgentAdapter_1.AgentStatus.RUNNING;
|
|
339
|
-
}
|
|
340
|
-
if (session.lastEntryType === 'progress' ||
|
|
341
|
-
session.lastEntryType === 'thinking') {
|
|
342
|
-
return AgentAdapter_1.AgentStatus.RUNNING;
|
|
343
|
-
}
|
|
344
|
-
if (session.lastEntryType === 'assistant') {
|
|
345
|
-
return AgentAdapter_1.AgentStatus.WAITING;
|
|
346
|
-
}
|
|
347
|
-
if (session.lastEntryType === 'system') {
|
|
348
|
-
return AgentAdapter_1.AgentStatus.IDLE;
|
|
349
|
-
}
|
|
350
|
-
return AgentAdapter_1.AgentStatus.UNKNOWN;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Extract meaningful text from a user message content.
|
|
354
|
-
* Handles string and array formats, skill command expansion, and noise filtering.
|
|
355
|
-
*/
|
|
356
|
-
extractUserMessageText(content) {
|
|
357
|
-
if (!content) {
|
|
358
|
-
return undefined;
|
|
359
|
-
}
|
|
360
|
-
let raw;
|
|
361
|
-
if (typeof content === 'string') {
|
|
362
|
-
raw = content.trim();
|
|
363
|
-
}
|
|
364
|
-
else if (Array.isArray(content)) {
|
|
365
|
-
for (const block of content) {
|
|
366
|
-
if (block.type === 'text' && block.text?.trim()) {
|
|
367
|
-
raw = block.text.trim();
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
if (!raw) {
|
|
373
|
-
return undefined;
|
|
374
|
-
}
|
|
375
|
-
// Skill slash-command: extract /command-name and args
|
|
376
|
-
if (raw.startsWith('<command-message>')) {
|
|
377
|
-
return this.parseCommandMessage(raw);
|
|
378
|
-
}
|
|
379
|
-
// Expanded skill content: extract ARGUMENTS line if present, skip otherwise
|
|
380
|
-
if (raw.startsWith('Base directory for this skill:')) {
|
|
381
|
-
const argsMatch = raw.match(/\nARGUMENTS:\s*(.+)/);
|
|
382
|
-
return argsMatch?.[1]?.trim() || undefined;
|
|
383
|
-
}
|
|
384
|
-
// Filter noise
|
|
385
|
-
if (this.isNoiseMessage(raw)) {
|
|
386
|
-
return undefined;
|
|
387
|
-
}
|
|
388
|
-
return raw;
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Parse a <command-message> string into "/command args" format.
|
|
392
|
-
*/
|
|
393
|
-
parseCommandMessage(raw) {
|
|
394
|
-
const nameMatch = raw.match(/<command-name>([^<]+)<\/command-name>/);
|
|
395
|
-
const argsMatch = raw.match(/<command-args>([^<]+)<\/command-args>/);
|
|
396
|
-
const name = nameMatch?.[1]?.trim();
|
|
397
|
-
if (!name) {
|
|
398
|
-
return undefined;
|
|
399
|
-
}
|
|
400
|
-
const args = argsMatch?.[1]?.trim();
|
|
401
|
-
return args ? `${name} ${args}` : name;
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* Check if a message is noise (not a meaningful user intent).
|
|
405
|
-
*/
|
|
406
|
-
isNoiseMessage(text) {
|
|
407
|
-
return (text.startsWith('[Request interrupted') ||
|
|
408
|
-
text === 'Tool loaded.' ||
|
|
409
|
-
text.startsWith('This session is being continued'));
|
|
410
|
-
}
|
|
411
|
-
/**
|
|
412
|
-
* Check if an entry type is metadata (not conversation state).
|
|
413
|
-
* These should not overwrite lastEntryType used for status determination.
|
|
414
|
-
*/
|
|
415
|
-
isMetadataEntryType(type) {
|
|
416
|
-
return type === 'last-prompt' || type === 'file-history-snapshot';
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Read the full conversation from a Claude Code session JSONL file.
|
|
420
|
-
*
|
|
421
|
-
* Default mode returns only text content from user/assistant/system messages.
|
|
422
|
-
* Verbose mode also includes tool_use and tool_result blocks.
|
|
423
|
-
*/
|
|
424
233
|
getConversation(sessionFilePath, options) {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
const messages = [];
|
|
435
|
-
for (const line of lines) {
|
|
436
|
-
let entry;
|
|
437
|
-
try {
|
|
438
|
-
entry = JSON.parse(line);
|
|
439
|
-
}
|
|
440
|
-
catch {
|
|
441
|
-
continue;
|
|
442
|
-
}
|
|
443
|
-
const entryType = entry.type;
|
|
444
|
-
if (!entryType || this.isMetadataEntryType(entryType))
|
|
445
|
-
continue;
|
|
446
|
-
if (entryType === 'progress' || entryType === 'thinking')
|
|
234
|
+
return this.parser.getConversation(sessionFilePath, options);
|
|
235
|
+
}
|
|
236
|
+
async listSessions(opts) {
|
|
237
|
+
const filterCwd = opts?.cwd;
|
|
238
|
+
const candidates = this.discoverSessionFiles();
|
|
239
|
+
const summaries = [];
|
|
240
|
+
for (const { filePath, defaultCwd } of candidates) {
|
|
241
|
+
const session = this.parser.readSession(filePath, defaultCwd);
|
|
242
|
+
if (!session)
|
|
447
243
|
continue;
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
role = 'assistant';
|
|
454
|
-
}
|
|
455
|
-
else if (entryType === 'system') {
|
|
456
|
-
role = 'system';
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
244
|
+
// Drop sessions whose JSONL had no parseable conversation entries.
|
|
245
|
+
// readSession is permissive (returns a shell record even when every
|
|
246
|
+
// line fails to parse); listSessions needs at least one real entry
|
|
247
|
+
// so we don't surface garbage files.
|
|
248
|
+
if (!session.lastEntryType)
|
|
459
249
|
continue;
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
if (!text)
|
|
250
|
+
const recordedCwd = session.lastCwd || defaultCwd;
|
|
251
|
+
if (filterCwd !== undefined && recordedCwd !== filterCwd)
|
|
463
252
|
continue;
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
253
|
+
const stat = (0, session_1.safeStat)(filePath);
|
|
254
|
+
summaries.push({
|
|
255
|
+
type: 'claude',
|
|
256
|
+
sessionId: session.sessionId,
|
|
257
|
+
cwd: recordedCwd,
|
|
258
|
+
firstUserMessage: session.firstUserMessage || '',
|
|
259
|
+
lastActive: session.lastActive ?? stat?.mtime ?? new Date(),
|
|
260
|
+
startedAt: session.sessionStart ?? stat?.birthtime ?? stat?.mtime ?? new Date(),
|
|
261
|
+
sessionFilePath: filePath,
|
|
468
262
|
});
|
|
469
263
|
}
|
|
470
|
-
return
|
|
264
|
+
return summaries;
|
|
471
265
|
}
|
|
472
266
|
/**
|
|
473
|
-
*
|
|
267
|
+
* Discover candidate session files for {@link listSessions}.
|
|
268
|
+
*
|
|
269
|
+
* Always walks every subdirectory of `projectsDir`. We can't use the
|
|
270
|
+
* encoded-dir shortcut for the cwd-scoped path because Claude Code
|
|
271
|
+
* indexes session files by where the *process was launched*, not by
|
|
272
|
+
* the recorded `cwd` field inside the session — these diverge in
|
|
273
|
+
* worktrees and similar setups. The cwd filter is applied later
|
|
274
|
+
* against `session.lastCwd` so callers see exactly the sessions whose
|
|
275
|
+
* recorded cwd matches.
|
|
474
276
|
*/
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
continue;
|
|
491
|
-
parts.push(block.text.trim());
|
|
492
|
-
}
|
|
493
|
-
else if (block.type === 'tool_use' && verbose) {
|
|
494
|
-
const inputSummary = block.input?.file_path || block.input?.pattern || block.input?.command || '';
|
|
495
|
-
parts.push(`[Tool: ${block.name}]${inputSummary ? ' ' + inputSummary : ''}`);
|
|
496
|
-
}
|
|
497
|
-
else if (block.type === 'tool_result' && verbose) {
|
|
498
|
-
const truncated = this.truncateToolResult(block.content || '');
|
|
499
|
-
const prefix = block.is_error ? '[Tool Error]' : '[Tool Result]';
|
|
500
|
-
parts.push(`${prefix} ${truncated}`);
|
|
277
|
+
discoverSessionFiles() {
|
|
278
|
+
const out = [];
|
|
279
|
+
if (!(0, session_1.isDirectory)(this.projectsDir))
|
|
280
|
+
return out;
|
|
281
|
+
for (const dirName of (0, session_1.safeReaddir)(this.projectsDir)) {
|
|
282
|
+
const projectDir = path.join(this.projectsDir, dirName);
|
|
283
|
+
if (!(0, session_1.isDirectory)(projectDir))
|
|
284
|
+
continue;
|
|
285
|
+
// Best-effort decode for the rare case session content has no
|
|
286
|
+
// recorded cwd: '-Users-foo-bar' → '/Users/foo/bar'. Lossy for
|
|
287
|
+
// paths containing '-'; session content's lastCwd overrides
|
|
288
|
+
// this when available.
|
|
289
|
+
const decoded = dirName.replace(/-/g, '/');
|
|
290
|
+
for (const name of (0, session_1.listJsonl)(projectDir)) {
|
|
291
|
+
out.push({ filePath: path.join(projectDir, name), defaultCwd: decoded });
|
|
501
292
|
}
|
|
502
293
|
}
|
|
503
|
-
return
|
|
504
|
-
}
|
|
505
|
-
truncateToolResult(content, maxLength = 200) {
|
|
506
|
-
const firstLine = content.split('\n')[0] || '';
|
|
507
|
-
if (firstLine.length <= maxLength)
|
|
508
|
-
return firstLine;
|
|
509
|
-
return firstLine.slice(0, maxLength - 3) + '...';
|
|
294
|
+
return out;
|
|
510
295
|
}
|
|
511
296
|
}
|
|
512
297
|
exports.ClaudeCodeAdapter = ClaudeCodeAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,iDAA6C;AAC7C,8CAAuE;AACvE,8CAAiE;AAEjE,gDAAgF;AAyDhF;;;;;;;;;GASG;AACH,MAAa,iBAAiB;IAM1B;QALS,SAAI,GAAG,QAAiB,CAAC;QAM9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,WAAwB;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,YAAY,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACd,MAAM,SAAS,GAAG,IAAA,yBAAe,EAAC,IAAA,4BAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,gEAAgE;QAChE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEhE,kFAAkF;QAClF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,aAAa,GACf,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,IAAA,mCAAwB,EAAC,QAAQ,EAAE,cAAc,CAAC;YACpD,CAAC,CAAC,EAAE,CAAC;QAEb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;YACxB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YACnC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,8CAA8C;QAC9C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YACpF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAChC,KAAK,CAAC,OAAO,CAAC,QAAQ,EACtB,KAAK,CAAC,OAAO,CAAC,WAAW,CAC5B,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CAAC,SAAwB;QAC7C,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,SAAS;YAExB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEvC,IAAI,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;oBAAE,SAAS;YACzD,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,kDAAkD;QAClD,MAAM,KAAK,GAAG,IAAA,uCAA6B,EAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAElE,iEAAiE;QACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CAAC,SAAwB;QAI/C,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CACxB,CAAC;gBAElB,+EAA+E;gBAC/E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;oBACrE,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;wBAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACpB,SAAS;oBACb,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;gBAEpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,SAAS;gBACb,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE;wBACT,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,QAAQ,EAAE,SAAS;wBACnB,UAAU;wBACV,WAAW,EAAE,KAAK,CAAC,SAAS;wBAC5B,WAAW,EAAE,KAAK,CAAC,GAAG;qBACzB;iBACJ,CAAC,CAAC;YACP,CAAC;YAAC,MAAM,CAAC;gBACL,oEAAoE;gBACpE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,GAAW;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,iBAAiB,CACrB,OAAsB,EACtB,WAAwB,EACxB,WAAwB;QAExB,OAAO;YACH,IAAI,EAAE,IAAA,4BAAiB,EAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE,OAAO,CAAC,eAAe,IAAI,iBAAiB;YACrD,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;YAC7D,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,eAAe,EAAE,WAAW,CAAC,QAAQ;SACxC,CAAC;IACN,CAAC;IAEO,mBAAmB,CAAC,WAAwB;QAChD,OAAO;YACH,IAAI,EAAE,IAAA,4BAAiB,EAAC,WAAW,CAAC,GAAG,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;YAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,0BAAW,CAAC,IAAI;YACxB,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,EAAE;YAClC,SAAS,EAAE,OAAO,WAAW,CAAC,GAAG,EAAE;YACnC,UAAU,EAAE,IAAI,IAAI,EAAE;SACzB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,WAAW,CACf,QAAgB,EAChB,WAAmB;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,qCAAqC;QACrC,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,YAAY,GAAgB,IAAI,CAAC;QACrC,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GACP,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC9B,YAAY,GAAG,EAAE,CAAC;gBACtB,CAAC;YACL,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,UAAU;QACd,CAAC;QAED,6DAA6D;QAC7D,IAAI,aAAiC,CAAC;QACtC,IAAI,UAA4B,CAAC;QACjC,IAAI,OAA2B,CAAC;QAChC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,eAAmC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,MAAM,KAAK,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE7C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC9B,UAAU,GAAG,EAAE,CAAC;oBACpB,CAAC;gBACL,CAAC;gBAED,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/D,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;gBACxB,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtD,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;oBAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACxB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;wBAC1C,aAAa;4BACT,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;gCACzB,UAAU,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;oCACd,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;oCAC7C,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa;wCACrB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CACvD,CAAC;wBAEN,iDAAiD;wBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;wBACrD,IAAI,IAAI,EAAE,CAAC;4BACP,eAAe,GAAG,IAAI,CAAC;wBAC3B,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,aAAa,GAAG,KAAK,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;QAED,OAAO;YACH,SAAS;YACT,WAAW,EAAE,WAAW,IAAI,OAAO,IAAI,EAAE;YACzC,OAAO;YACP,YAAY,EAAE,YAAY,IAAI,UAAU,IAAI,IAAI,IAAI,EAAE;YACtD,UAAU,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE;YACpC,aAAa;YACb,aAAa;YACb,eAAe;SAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAsB;QAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,0BAAW,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,6BAA6B;QAE7B,IAAI,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,aAAa;gBACxB,CAAC,CAAC,0BAAW,CAAC,OAAO;gBACrB,CAAC,CAAC,0BAAW,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,IACI,OAAO,CAAC,aAAa,KAAK,UAAU;YACpC,OAAO,CAAC,aAAa,KAAK,UAAU,EACtC,CAAC;YACC,OAAO,0BAAW,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO,0BAAW,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,0BAAW,CAAC,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,0BAAW,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAC1B,OAAqE;QAErE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,GAAuB,CAAC;QAE5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;oBAC9C,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACxB,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,sDAAsD;QACtD,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,4EAA4E;QAC5E,IAAI,GAAG,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACnD,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC/C,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,GAAW;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY;QAC/B,OAAO,CACH,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACvC,IAAI,KAAK,cAAc;YACvB,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC,CACrD,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,IAAY;QACpC,OAAO,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,uBAAuB,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,eAAuB,EAAE,OAA+B;QACpE,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QAE1C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,KAAmB,CAAC;YACxB,IAAI,CAAC;gBACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;gBAAE,SAAS;YAChE,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU;gBAAE,SAAS;YAEnE,IAAI,IAAiC,CAAC;YACtC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACvB,IAAI,GAAG,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBACnC,IAAI,GAAG,WAAW,CAAC;YACvB,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,GAAG,QAAQ,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACJ,SAAS;YACb,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpF,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,QAAQ,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,0BAA0B,CAC9B,OAA4C,EAC5C,IAAiC,EACjC,OAAgB;QAEhB,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAC;YACtE,OAAO,OAAO,IAAI,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC9C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,SAAS;gBACxE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC;gBAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;gBAClG,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAEO,kBAAkB,CAAC,OAAe,EAAE,SAAS,GAAG,GAAG;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QACpD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;CAEJ;AA7hBD,8CA6hBC"}
|
|
1
|
+
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 5. Matching sessions to processes via shared matchProcessesToSessions()
|
|
10
10
|
* 6. Extracting summary from last event entry in session JSONL
|
|
11
11
|
*/
|
|
12
|
-
import type { AgentAdapter, AgentInfo, ProcessInfo, ConversationMessage } from './AgentAdapter';
|
|
12
|
+
import type { AgentAdapter, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions } from './AgentAdapter';
|
|
13
13
|
export declare class CodexAdapter implements AgentAdapter {
|
|
14
14
|
readonly type: "codex";
|
|
15
15
|
private static readonly IDLE_THRESHOLD_MINUTES;
|
|
@@ -58,5 +58,18 @@ export declare class CodexAdapter implements AgentAdapter {
|
|
|
58
58
|
getConversation(sessionFilePath: string, options?: {
|
|
59
59
|
verbose?: boolean;
|
|
60
60
|
}): ConversationMessage[];
|
|
61
|
+
listSessions(opts?: ListSessionsOptions): Promise<SessionSummary[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Walk every YYYY/MM/DD directory under `codexSessionsDir` and return
|
|
64
|
+
* absolute paths of `.jsonl` files. Tolerates malformed layouts
|
|
65
|
+
* (skips entries that aren't directories at the expected depth).
|
|
66
|
+
*/
|
|
67
|
+
private collectAllSessionFiles;
|
|
68
|
+
/**
|
|
69
|
+
* Read a Codex session JSONL file and produce a {@link SessionSummary}.
|
|
70
|
+
* Returns null when the file is unreadable, has no `session_meta`, or
|
|
71
|
+
* lacks a session id.
|
|
72
|
+
*/
|
|
73
|
+
private fileToSessionSummary;
|
|
61
74
|
}
|
|
62
75
|
//# sourceMappingURL=CodexAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/CodexAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"CodexAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/CodexAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AA4BxB,qBAAa,YAAa,YAAW,YAAY;IAC7C,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IACnD,sFAAsF;IACtF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAK;IAE1D,OAAO,CAAC,gBAAgB,CAAS;;IAOjC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI5C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAgC1C;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;OAGG;IACH,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,eAAe;IAOvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwDpB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,iBAAiB;IAMzB;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB,EAAE;IA8C1F,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBzE;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CA8D/B"}
|
|
@@ -296,13 +296,9 @@ class CodexAdapter {
|
|
|
296
296
|
*/
|
|
297
297
|
getConversation(sessionFilePath, options) {
|
|
298
298
|
const verbose = options?.verbose ?? false;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
content = fs.readFileSync(sessionFilePath, 'utf-8');
|
|
302
|
-
}
|
|
303
|
-
catch {
|
|
299
|
+
const content = (0, session_1.safeReadFile)(sessionFilePath);
|
|
300
|
+
if (content === undefined)
|
|
304
301
|
return [];
|
|
305
|
-
}
|
|
306
302
|
const lines = content.trim().split('\n');
|
|
307
303
|
const messages = [];
|
|
308
304
|
for (const line of lines) {
|
|
@@ -342,6 +338,109 @@ class CodexAdapter {
|
|
|
342
338
|
}
|
|
343
339
|
return messages;
|
|
344
340
|
}
|
|
341
|
+
async listSessions(opts) {
|
|
342
|
+
if (!(0, session_1.isDirectory)(this.codexSessionsDir))
|
|
343
|
+
return [];
|
|
344
|
+
const files = this.collectAllSessionFiles();
|
|
345
|
+
const summaries = [];
|
|
346
|
+
for (const filePath of files) {
|
|
347
|
+
const summary = this.fileToSessionSummary(filePath);
|
|
348
|
+
if (!summary)
|
|
349
|
+
continue;
|
|
350
|
+
if (opts?.cwd !== undefined && summary.cwd !== opts.cwd)
|
|
351
|
+
continue;
|
|
352
|
+
summaries.push(summary);
|
|
353
|
+
}
|
|
354
|
+
return summaries;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Walk every YYYY/MM/DD directory under `codexSessionsDir` and return
|
|
358
|
+
* absolute paths of `.jsonl` files. Tolerates malformed layouts
|
|
359
|
+
* (skips entries that aren't directories at the expected depth).
|
|
360
|
+
*/
|
|
361
|
+
collectAllSessionFiles() {
|
|
362
|
+
const out = [];
|
|
363
|
+
for (const yearEntry of (0, session_1.safeReaddir)(this.codexSessionsDir)) {
|
|
364
|
+
const yearDir = path.join(this.codexSessionsDir, yearEntry);
|
|
365
|
+
if (!(0, session_1.isDirectory)(yearDir))
|
|
366
|
+
continue;
|
|
367
|
+
for (const monthEntry of (0, session_1.safeReaddir)(yearDir)) {
|
|
368
|
+
const monthDir = path.join(yearDir, monthEntry);
|
|
369
|
+
if (!(0, session_1.isDirectory)(monthDir))
|
|
370
|
+
continue;
|
|
371
|
+
for (const dayEntry of (0, session_1.safeReaddir)(monthDir)) {
|
|
372
|
+
const dayDir = path.join(monthDir, dayEntry);
|
|
373
|
+
if (!(0, session_1.isDirectory)(dayDir))
|
|
374
|
+
continue;
|
|
375
|
+
for (const fileEntry of (0, session_1.safeReaddir)(dayDir)) {
|
|
376
|
+
if (!fileEntry.endsWith('.jsonl'))
|
|
377
|
+
continue;
|
|
378
|
+
out.push(path.join(dayDir, fileEntry));
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return out;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Read a Codex session JSONL file and produce a {@link SessionSummary}.
|
|
387
|
+
* Returns null when the file is unreadable, has no `session_meta`, or
|
|
388
|
+
* lacks a session id.
|
|
389
|
+
*/
|
|
390
|
+
fileToSessionSummary(filePath) {
|
|
391
|
+
const content = (0, session_1.safeReadFile)(filePath);
|
|
392
|
+
if (content === undefined)
|
|
393
|
+
return null;
|
|
394
|
+
const allLines = content.trim().split('\n');
|
|
395
|
+
if (!allLines[0])
|
|
396
|
+
return null;
|
|
397
|
+
let metaEntry;
|
|
398
|
+
try {
|
|
399
|
+
metaEntry = JSON.parse(allLines[0]);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return null;
|
|
403
|
+
}
|
|
404
|
+
if (metaEntry.type !== 'session_meta' || !metaEntry.payload?.id) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
let firstUserMessage = '';
|
|
408
|
+
let lastTimestamp = null;
|
|
409
|
+
for (let i = 1; i < allLines.length; i++) {
|
|
410
|
+
let entry;
|
|
411
|
+
try {
|
|
412
|
+
entry = JSON.parse(allLines[i]);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
const ts = this.parseTimestamp(entry.timestamp);
|
|
418
|
+
if (ts)
|
|
419
|
+
lastTimestamp = ts;
|
|
420
|
+
if (!firstUserMessage &&
|
|
421
|
+
entry.payload?.type === 'user_message' &&
|
|
422
|
+
typeof entry.payload.message === 'string' &&
|
|
423
|
+
entry.payload.message.trim().length > 0) {
|
|
424
|
+
firstUserMessage = entry.payload.message.trim();
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const stat = (0, session_1.safeStat)(filePath);
|
|
428
|
+
const startedAt = this.parseTimestamp(metaEntry.payload.timestamp) ||
|
|
429
|
+
lastTimestamp ||
|
|
430
|
+
stat?.birthtime ||
|
|
431
|
+
stat?.mtime ||
|
|
432
|
+
new Date();
|
|
433
|
+
const lastActive = lastTimestamp || startedAt;
|
|
434
|
+
return {
|
|
435
|
+
type: 'codex',
|
|
436
|
+
sessionId: metaEntry.payload.id,
|
|
437
|
+
cwd: metaEntry.payload.cwd || '',
|
|
438
|
+
firstUserMessage,
|
|
439
|
+
lastActive,
|
|
440
|
+
startedAt,
|
|
441
|
+
sessionFilePath: filePath,
|
|
442
|
+
};
|
|
443
|
+
}
|
|
345
444
|
}
|
|
346
445
|
exports.CodexAdapter = CodexAdapter;
|
|
347
446
|
CodexAdapter.IDLE_THRESHOLD_MINUTES = 5;
|