@fonz/tgcc 0.6.14 → 0.6.15

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/session.js CHANGED
@@ -14,7 +14,17 @@ export class SessionStore {
14
14
  load() {
15
15
  try {
16
16
  if (existsSync(this.filePath)) {
17
- return JSON.parse(readFileSync(this.filePath, 'utf-8'));
17
+ const raw = JSON.parse(readFileSync(this.filePath, 'utf-8'));
18
+ // Migrate: strip removed fields from persisted state
19
+ for (const agentId of Object.keys(raw.agents ?? {})) {
20
+ for (const userId of Object.keys(raw.agents[agentId]?.users ?? {})) {
21
+ const u = raw.agents[agentId].users[userId];
22
+ delete u.sessions;
23
+ delete u.knownSessionIds;
24
+ delete u.jsonlTracking;
25
+ }
26
+ }
27
+ return raw;
18
28
  }
19
29
  }
20
30
  catch (err) {
@@ -44,8 +54,6 @@ export class SessionStore {
44
54
  model: '',
45
55
  repo: '',
46
56
  permissionMode: '',
47
- sessions: [],
48
- knownSessionIds: [],
49
57
  };
50
58
  }
51
59
  return this.state.agents[agentId].users[userId];
@@ -57,32 +65,6 @@ export class SessionStore {
57
65
  const user = this.ensureUser(agentId, userId);
58
66
  user.currentSessionId = sessionId;
59
67
  user.lastActivity = new Date().toISOString();
60
- // Track as known TGCC session
61
- if (!user.knownSessionIds.includes(sessionId)) {
62
- user.knownSessionIds.push(sessionId);
63
- }
64
- // Add to session list if not already there
65
- if (!user.sessions.find(s => s.id === sessionId)) {
66
- user.sessions.push({
67
- id: sessionId,
68
- startedAt: new Date().toISOString(),
69
- lastActivity: new Date().toISOString(),
70
- messageCount: 0,
71
- totalCostUsd: 0,
72
- });
73
- }
74
- this.save();
75
- }
76
- updateSessionActivity(agentId, userId, cost) {
77
- const user = this.ensureUser(agentId, userId);
78
- user.lastActivity = new Date().toISOString();
79
- const session = user.sessions.find(s => s.id === user.currentSessionId);
80
- if (session) {
81
- session.lastActivity = new Date().toISOString();
82
- session.messageCount++;
83
- if (cost !== undefined)
84
- session.totalCostUsd = cost;
85
- }
86
68
  this.save();
87
69
  }
88
70
  setModel(agentId, userId, model) {
@@ -100,50 +82,10 @@ export class SessionStore {
100
82
  user.permissionMode = mode;
101
83
  this.save();
102
84
  }
103
- setSessionTitle(agentId, userId, sessionId, title) {
104
- const user = this.ensureUser(agentId, userId);
105
- const session = user.sessions.find(s => s.id === sessionId);
106
- if (session && !session.title) {
107
- session.title = title.slice(0, 40);
108
- this.save();
109
- }
110
- }
111
- updateJsonlTracking(agentId, userId, size, mtimeMs) {
112
- const user = this.ensureUser(agentId, userId);
113
- user.jsonlTracking = { size, mtimeMs };
114
- this.save();
115
- }
116
- getJsonlTracking(agentId, userId) {
117
- const user = this.ensureUser(agentId, userId);
118
- return user.jsonlTracking;
119
- }
120
- clearJsonlTracking(agentId, userId) {
121
- const user = this.ensureUser(agentId, userId);
122
- delete user.jsonlTracking;
123
- this.save();
124
- }
125
85
  clearSession(agentId, userId) {
126
86
  const user = this.ensureUser(agentId, userId);
127
87
  user.currentSessionId = null;
128
- delete user.jsonlTracking;
129
- this.save();
130
- }
131
- deleteSession(agentId, userId, sessionId) {
132
- const user = this.ensureUser(agentId, userId);
133
- const idx = user.sessions.findIndex(s => s.id === sessionId);
134
- if (idx === -1)
135
- return false;
136
- user.sessions.splice(idx, 1);
137
- user.knownSessionIds = user.knownSessionIds.filter(id => id !== sessionId);
138
- if (user.currentSessionId === sessionId) {
139
- user.currentSessionId = null;
140
- }
141
88
  this.save();
142
- return true;
143
- }
144
- getRecentSessions(agentId, userId, limit = 10) {
145
- const user = this.ensureUser(agentId, userId);
146
- return user.sessions.slice(-limit).reverse();
147
89
  }
148
90
  getFullState() {
149
91
  return this.state;
@@ -158,281 +100,215 @@ export function getSessionJsonlPath(sessionId, repo) {
158
100
  const slug = computeProjectSlug(repo);
159
101
  return join(homedir(), '.claude', 'projects', slug, `${sessionId}.jsonl`);
160
102
  }
103
+ export function computeProjectSlug(repoPath) {
104
+ // CC stores at ~/.claude/projects/<slug>/sessions/
105
+ // Slug is the path with / replaced by - and leading -
106
+ return repoPath.replace(/\//g, '-');
107
+ }
161
108
  /**
162
- * Read new JSONL entries from a byte offset and summarize the turns.
163
- * Returns a formatted catch-up message or null if nothing meaningful was found.
109
+ * Discover CC sessions from ~/.claude/projects/<slug>/*.jsonl
110
+ * Returns the most recent sessions sorted by modification time.
164
111
  */
165
- export function summarizeJsonlDelta(jsonlPath, fromByteOffset, maxChars = 2000) {
166
- let rawBytes;
112
+ export function discoverCCSessions(repo, limit = 10) {
113
+ const slug = computeProjectSlug(repo);
114
+ const projectDir = join(homedir(), '.claude', 'projects', slug);
115
+ if (!existsSync(projectDir))
116
+ return [];
117
+ const results = [];
118
+ let entries;
167
119
  try {
168
- const stat = statSync(jsonlPath);
169
- if (stat.size <= fromByteOffset)
170
- return null;
171
- const bytesToRead = stat.size - fromByteOffset;
172
- rawBytes = Buffer.alloc(bytesToRead);
173
- const fd = openSync(jsonlPath, 'r');
174
- try {
175
- readSync(fd, rawBytes, 0, bytesToRead, fromByteOffset);
176
- }
177
- finally {
178
- closeSync(fd);
179
- }
120
+ entries = readdirSync(projectDir);
180
121
  }
181
122
  catch {
182
- return null;
123
+ return [];
183
124
  }
184
- const lines = rawBytes.toString('utf-8').split('\n').filter(Boolean);
185
- const turns = [];
186
- // Track seen assistant message UUIDs to deduplicate partial updates
187
- const seenAssistantUuids = new Map(); // uuid → index in turns
188
- for (const line of lines) {
189
- let entry;
125
+ const now = Date.now();
126
+ const maxAgeMs = 30 * 24 * 60 * 60 * 1000; // 30 days
127
+ for (const entry of entries) {
128
+ if (!entry.endsWith('.jsonl'))
129
+ continue;
130
+ // Skip agent-* sessions (sub-agents)
131
+ if (entry.startsWith('agent-'))
132
+ continue;
133
+ const fullPath = join(projectDir, entry);
190
134
  try {
191
- entry = JSON.parse(line);
135
+ const st = statSync(fullPath);
136
+ // Skip too old
137
+ if (now - st.mtimeMs > maxAgeMs)
138
+ continue;
139
+ const id = entry.replace('.jsonl', '');
140
+ const { title, model } = extractSessionMeta(fullPath, st.size);
141
+ // Skip sessions with no real user messages
142
+ if (title === 'untitled')
143
+ continue;
144
+ const contextPct = extractContextPct(fullPath, st.size);
145
+ results.push({
146
+ id,
147
+ title,
148
+ model,
149
+ mtime: st.mtime,
150
+ lineCount: countLines(fullPath),
151
+ contextPct,
152
+ });
192
153
  }
193
154
  catch {
194
155
  continue;
195
156
  }
196
- const entryType = entry.type;
197
- const msg = entry.message;
198
- if (!msg)
199
- continue;
200
- if (entryType === 'user' && msg.role === 'user') {
201
- const content = msg.content;
202
- let text;
203
- if (typeof content === 'string') {
204
- text = content;
205
- }
206
- else if (Array.isArray(content)) {
207
- const textBlock = content.find((b) => b.type === 'text');
208
- if (textBlock)
209
- text = textBlock.text;
157
+ }
158
+ // Sort by most recent first, take top N
159
+ return results
160
+ .sort((a, b) => b.mtime.getTime() - a.mtime.getTime())
161
+ .slice(0, limit);
162
+ }
163
+ function extractSessionMeta(jsonlPath, fileSize) {
164
+ let title = 'untitled';
165
+ let model = null;
166
+ // Read last ~4KB for model FIRST (from last assistant message)
167
+ try {
168
+ const fd = openSync(jsonlPath, 'r');
169
+ const readSize = Math.min(4096, fileSize);
170
+ const buf = Buffer.alloc(readSize);
171
+ readSync(fd, buf, 0, readSize, Math.max(0, fileSize - readSize));
172
+ closeSync(fd);
173
+ const text = buf.toString('utf-8');
174
+ const lines = text.split('\n').filter(l => l.includes('"model"')).reverse();
175
+ for (const line of lines) {
176
+ try {
177
+ const start = line.indexOf('{');
178
+ if (start < 0)
179
+ continue;
180
+ const parsed = JSON.parse(line.slice(start));
181
+ const m = parsed?.message?.model;
182
+ if (m) {
183
+ model = m;
184
+ break;
185
+ }
210
186
  }
211
- if (text) {
212
- turns.push({ role: 'user', text: text.slice(0, 200) });
187
+ catch {
188
+ continue;
213
189
  }
214
190
  }
215
- else if (entryType === 'assistant' && msg.role === 'assistant') {
216
- const uuid = entry.uuid;
217
- const content = msg.content;
218
- if (!content || !Array.isArray(content))
219
- continue;
220
- // Extract text and tools from this assistant message
221
- const texts = [];
222
- const tools = [];
223
- for (const block of content) {
224
- if (block.type === 'text' && typeof block.text === 'string') {
225
- const trimmed = block.text.trim();
226
- if (trimmed)
227
- texts.push(trimmed);
191
+ }
192
+ catch { }
193
+ // Read in growing chunks to find title (first real user message)
194
+ // Some lines (file-history-snapshot, user with images) are >1MB, so 16KB buffer isn't enough
195
+ try {
196
+ const fd = openSync(jsonlPath, 'r');
197
+ let offset = 0;
198
+ const chunkSize = 65536; // 64KB chunks
199
+ const maxRead = 2 * 1024 * 1024; // Stop after 2MB
200
+ let accumulated = '';
201
+ while (offset < maxRead) {
202
+ const buf = Buffer.alloc(Math.min(chunkSize, maxRead - offset));
203
+ const bytesRead = readSync(fd, buf, 0, buf.length, offset);
204
+ if (bytesRead === 0)
205
+ break;
206
+ offset += bytesRead;
207
+ accumulated += buf.subarray(0, bytesRead).toString('utf-8');
208
+ // Process complete lines
209
+ const lines = accumulated.split('\n');
210
+ // Keep last incomplete line for next iteration
211
+ accumulated = lines.pop() ?? '';
212
+ for (const line of lines) {
213
+ if (!line.trim())
214
+ continue;
215
+ // Quick skip for huge non-user lines
216
+ if (line.startsWith('{"type":"file-history-snapshot"'))
217
+ continue;
218
+ try {
219
+ const parsed = JSON.parse(line);
220
+ let candidate = '';
221
+ if (parsed.type === 'queue-operation' && parsed.operation === 'enqueue' && parsed.content) {
222
+ candidate = truncTitle(String(parsed.content));
223
+ }
224
+ if (!candidate && parsed.type === 'user' && parsed.message) {
225
+ candidate = extractTitleFromContent(parsed.message.content);
226
+ }
227
+ if (!candidate && parsed.role === 'user' && parsed.content) {
228
+ candidate = extractTitleFromContent(parsed.content);
229
+ }
230
+ if (candidate) {
231
+ title = candidate;
232
+ closeSync(fd);
233
+ return { title, model };
234
+ }
228
235
  }
229
- else if (block.type === 'tool_use') {
230
- tools.push(block.name);
236
+ catch {
237
+ continue;
231
238
  }
232
239
  }
233
- // Deduplicate: CC emits partial assistant messages with the same UUID
234
- // as it streams. Keep updating the same turn entry.
235
- if (uuid && seenAssistantUuids.has(uuid)) {
236
- const idx = seenAssistantUuids.get(uuid);
237
- const existing = turns[idx];
238
- if (texts.length > 0)
239
- existing.text = texts.join(' ').slice(0, 200);
240
- if (tools.length > 0)
241
- existing.tools = [...new Set([...(existing.tools ?? []), ...tools])];
242
- }
243
- else {
244
- const turn = { role: 'assistant' };
245
- if (texts.length > 0)
246
- turn.text = texts.join(' ').slice(0, 200);
247
- if (tools.length > 0)
248
- turn.tools = tools;
249
- if (uuid)
250
- seenAssistantUuids.set(uuid, turns.length);
251
- turns.push(turn);
252
- }
253
240
  }
241
+ closeSync(fd);
254
242
  }
255
- // Filter out empty assistant turns (only had thinking blocks, etc.)
256
- const meaningful = turns.filter(t => t.text || (t.tools && t.tools.length > 0));
257
- if (meaningful.length === 0)
258
- return null;
259
- return formatStaleSummary(meaningful, maxChars);
260
- }
261
- function escapeHtmlBasic(text) {
262
- return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
243
+ catch { }
244
+ return { title, model };
263
245
  }
264
- function formatStaleSummary(turns, maxChars) {
265
- const turnCount = turns.filter(t => t.role === 'assistant').length;
266
- const header = `ℹ️ <b>Session was updated from another client</b> (${turnCount} CC turn${turnCount !== 1 ? 's' : ''} since your last message here):\n\n`;
267
- const lines = [];
268
- // Build from newest to oldest so we can truncate old ones
269
- for (const turn of turns) {
270
- if (turn.role === 'user') {
271
- const preview = escapeHtmlBasic(truncateText(turn.text ?? '', 80));
272
- lines.push(`• <b>You:</b> "${preview}"`);
273
- }
274
- else {
275
- const parts = [];
276
- if (turn.tools && turn.tools.length > 0) {
277
- parts.push(`Used ${turn.tools.map(t => escapeHtmlBasic(t)).join(', ')}`);
278
- }
279
- if (turn.text) {
280
- const preview = escapeHtmlBasic(truncateText(turn.text, 120));
281
- parts.push(`"${preview}"`);
246
+ function extractTitleFromContent(content) {
247
+ if (typeof content === 'string')
248
+ return truncTitle(content);
249
+ if (Array.isArray(content)) {
250
+ // Try each text block skip IDE/system injected ones
251
+ for (const block of content) {
252
+ if (block?.type === 'text' && block.text) {
253
+ const title = truncTitle(block.text);
254
+ if (title)
255
+ return title;
282
256
  }
283
- lines.push(`• <b>CC:</b> ${parts.join(' — ') || '(no text)'}`);
284
257
  }
285
258
  }
286
- // Truncate from the front (oldest) if too long
287
- let body = lines.join('\n');
288
- while (body.length + header.length + 20 > maxChars && lines.length > 2) {
289
- lines.shift();
290
- body = `…\n${lines.join('\n')}`;
291
- }
292
- return header + body + '\n\n_Reconnecting..._';
293
- }
294
- function truncateText(text, maxLen) {
295
- // Collapse whitespace
296
- const clean = text.replace(/\s+/g, ' ').trim();
297
- if (clean.length <= maxLen)
298
- return clean;
299
- return clean.slice(0, maxLen - 1) + '…';
259
+ return '';
300
260
  }
301
- export function computeProjectSlug(repoPath) {
302
- // CC stores at ~/.claude/projects/<slug>/sessions/
303
- // Slug is the path with / replaced by - and leading -
304
- return repoPath.replace(/\//g, '-');
305
- }
306
- export function findMissedSessions(repo, knownSessionIds, lastActivity) {
307
- const slug = computeProjectSlug(repo);
308
- const sessionsDir = join(homedir(), '.claude', 'projects', slug, 'sessions');
309
- if (!existsSync(sessionsDir))
310
- return [];
311
- const knownSet = new Set(knownSessionIds);
312
- const entries = readdirSync(sessionsDir);
313
- const missed = [];
314
- for (const entry of entries) {
315
- const entryPath = join(sessionsDir, entry);
316
- try {
317
- const stat = statSync(entryPath);
318
- if (!stat.isDirectory())
319
- continue;
320
- if (stat.mtime <= lastActivity)
321
- continue;
322
- if (knownSet.has(entry))
323
- continue;
324
- // List files in this session dir
325
- const files = readdirSync(entryPath);
326
- missed.push({ id: entry, mtime: stat.mtime, files });
327
- }
328
- catch {
329
- continue;
330
- }
331
- }
332
- return missed.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
261
+ function truncTitle(text) {
262
+ // Take first line, strip leading whitespace
263
+ const first = text.split('\n')[0].trim();
264
+ if (!first)
265
+ return '';
266
+ // Skip system/IDE injected messages
267
+ if (/^<(ide_|system|context|environment_details)/.test(first))
268
+ return '';
269
+ return first.length > 60 ? first.slice(0, 57) + '…' : first;
333
270
  }
334
- export function parseSessionSummary(sessionDir) {
335
- // Read session conversation data and produce a summary
271
+ function extractContextPct(jsonlPath, fileSize) {
336
272
  try {
337
- const files = readdirSync(sessionDir);
338
- const jsonFiles = files.filter(f => f.endsWith('.json'));
339
- if (jsonFiles.length === 0)
340
- return 'Empty session';
341
- // Read the conversation file
342
- for (const f of jsonFiles) {
273
+ // Read last ~4KB to find the last usage entry
274
+ const fd = openSync(jsonlPath, 'r');
275
+ const readSize = Math.min(4096, fileSize);
276
+ const buf = Buffer.alloc(readSize);
277
+ readSync(fd, buf, 0, readSize, Math.max(0, fileSize - readSize));
278
+ closeSync(fd);
279
+ const text = buf.toString('utf-8');
280
+ const lines = text.split('\n').filter(l => l.includes('"usage"')).reverse();
281
+ for (const line of lines) {
343
282
  try {
344
- const content = JSON.parse(readFileSync(join(sessionDir, f), 'utf-8'));
345
- return extractSessionHighlights(content);
283
+ // Find the start of the JSON object (buffer may have partial first line)
284
+ const start = line.indexOf('{');
285
+ if (start < 0)
286
+ continue;
287
+ const parsed = JSON.parse(line.slice(start));
288
+ const usage = parsed?.message?.usage;
289
+ if (!usage)
290
+ continue;
291
+ const input = (usage.input_tokens || 0) + (usage.cache_creation_input_tokens || 0) + (usage.cache_read_input_tokens || 0);
292
+ if (input > 0)
293
+ return Math.round(input / 200000 * 100);
346
294
  }
347
295
  catch {
348
296
  continue;
349
297
  }
350
298
  }
351
- return `Session with ${files.length} file(s)`;
352
- }
353
- catch {
354
- return 'Could not read session';
355
- }
356
- }
357
- function extractSessionHighlights(data) {
358
- if (!data || typeof data !== 'object')
359
- return 'Unknown session format';
360
- const highlights = [];
361
- const toolsUsed = new Set();
362
- const filesEdited = new Set();
363
- let turnCount = 0;
364
- // Try to parse as array of messages or as an object with messages
365
- const messages = Array.isArray(data)
366
- ? data
367
- : data.messages ?? [];
368
- for (const msg of messages) {
369
- if (!msg || typeof msg !== 'object')
370
- continue;
371
- const m = msg;
372
- if (m.role === 'assistant') {
373
- turnCount++;
374
- const content = m.content;
375
- if (Array.isArray(content)) {
376
- for (const block of content) {
377
- if (!block || typeof block !== 'object')
378
- continue;
379
- const b = block;
380
- if (b.type === 'tool_use') {
381
- toolsUsed.add(b.name);
382
- // Extract file paths from tool inputs
383
- const input = b.input;
384
- if (input?.file_path)
385
- filesEdited.add(input.file_path);
386
- if (input?.path)
387
- filesEdited.add(input.path);
388
- }
389
- if (b.type === 'text' && typeof b.text === 'string' && highlights.length < 3) {
390
- const text = b.text.slice(0, 100);
391
- if (text.trim())
392
- highlights.push(text);
393
- }
394
- }
395
- }
396
- }
397
299
  }
398
- const parts = [];
399
- parts.push(`${turnCount} turn(s)`);
400
- if (toolsUsed.size > 0)
401
- parts.push(`Tools: ${[...toolsUsed].join(', ')}`);
402
- if (filesEdited.size > 0)
403
- parts.push(`Files: ${[...filesEdited].slice(0, 5).join(', ')}`);
404
- if (highlights.length > 0)
405
- parts.push(`Topic: ${highlights[0]}`);
406
- return parts.join(' | ');
300
+ catch { }
301
+ return null;
407
302
  }
408
- export function formatCatchupMessage(repo, missed) {
409
- if (missed.length === 0) {
410
- return "You're up to date — no external CC activity since your last message.";
411
- }
412
- const slug = computeProjectSlug(repo);
413
- const sessionsDir = join(homedir(), '.claude', 'projects', slug, 'sessions');
414
- const lines = [`<b>External CC activity</b> (${missed.length} session(s)):\n`];
415
- for (const session of missed.slice(0, 5)) {
416
- const age = formatAge(session.mtime);
417
- const summary = parseSessionSummary(join(sessionsDir, session.id));
418
- lines.push(`<code>${session.id.slice(0, 8)}</code> (${age})`);
419
- lines.push(` ${summary}\n`);
303
+ function countLines(filePath) {
304
+ try {
305
+ const st = statSync(filePath);
306
+ // Estimate: ~500 bytes per line for JSONL
307
+ // For accuracy would need to read the file, but this is fast
308
+ return Math.max(1, Math.round(st.size / 500));
420
309
  }
421
- if (missed.length > 5) {
422
- lines.push(`...and ${missed.length - 5} more session(s).`);
310
+ catch {
311
+ return 0;
423
312
  }
424
- lines.push(`\nUse /resume <id> to continue any of these sessions.`);
425
- return lines.join('\n');
426
- }
427
- function formatAge(date) {
428
- const diffMs = Date.now() - date.getTime();
429
- const mins = Math.floor(diffMs / 60000);
430
- if (mins < 60)
431
- return `${mins}m ago`;
432
- const hours = Math.floor(mins / 60);
433
- if (hours < 24)
434
- return `${hours}h ago`;
435
- const days = Math.floor(hours / 24);
436
- return `${days}d ago`;
437
313
  }
438
314
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ export declare class StreamAccumulator {
78
78
  private toolIndicatorLastSummary;
79
79
  private updateToolIndicatorWithInput;
80
80
  /** Resolve a tool indicator with success/failure status. Edits to a compact summary with input detail. */
81
- resolveToolMessage(blockId: string, isError: boolean, errorMessage?: string, resultContent?: string): Promise<void>;
81
+ resolveToolMessage(blockId: string, isError: boolean, errorMessage?: string, resultContent?: string, toolUseResult?: Record<string, unknown>): Promise<void>;
82
82
  /** Edit a specific tool indicator message by block ID. */
83
83
  editToolMessage(blockId: string, html: string): Promise<void>;
84
84
  /** Delete a specific tool indicator message by block ID. */