tracelight 0.1.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/LICENSE +21 -0
- package/README.md +102 -0
- package/dist/apiTypes.d.ts +139 -0
- package/dist/apiTypes.d.ts.map +1 -0
- package/dist/apiTypes.js +11 -0
- package/dist/apiTypes.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +73 -0
- package/dist/cli.js.map +1 -0
- package/dist/model.d.ts +133 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +20 -0
- package/dist/model.js.map +1 -0
- package/dist/parser/index.d.ts +27 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +434 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/rawTypes.d.ts +149 -0
- package/dist/parser/rawTypes.d.ts.map +1 -0
- package/dist/parser/rawTypes.js +11 -0
- package/dist/parser/rawTypes.js.map +1 -0
- package/dist/pricing.d.ts +35 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +73 -0
- package/dist/pricing.js.map +1 -0
- package/dist/projectLoader.d.ts +31 -0
- package/dist/projectLoader.d.ts.map +1 -0
- package/dist/projectLoader.js +335 -0
- package/dist/projectLoader.js.map +1 -0
- package/dist/scripts/summarize.d.ts +7 -0
- package/dist/scripts/summarize.d.ts.map +1 -0
- package/dist/scripts/summarize.js +153 -0
- package/dist/scripts/summarize.js.map +1 -0
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +100 -0
- package/dist/server/index.js.map +1 -0
- package/package.json +70 -0
- package/ui/dist/assets/index-Bnr6kWU4.js +62 -0
- package/ui/dist/assets/index-HoOM9YCS.css +1 -0
- package/ui/dist/index.html +13 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizing parser for Claude Code JSONL transcript files.
|
|
3
|
+
*
|
|
4
|
+
* Two-layer design: all knowledge of the Claude Code format lives here.
|
|
5
|
+
* The rest of the codebase imports only from src/model.ts.
|
|
6
|
+
*
|
|
7
|
+
* Parsing strategy:
|
|
8
|
+
* - Parse each line as JSON; any parse failure becomes an UnknownEvent.
|
|
9
|
+
* - Recognize known line types; unrecognized types become UnknownEvent.
|
|
10
|
+
* - Group conversation lines into Turns by promptId.
|
|
11
|
+
* - Multiple assistant lines sharing the same message.id are merged into
|
|
12
|
+
* a single Turn (Claude Code emits streaming chunks as separate lines).
|
|
13
|
+
* - Tool calls and their matching results are paired across turns.
|
|
14
|
+
*/
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Public API
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
export function parseSessionJsonl(jsonlText) {
|
|
19
|
+
const lines = jsonlText.split("\n");
|
|
20
|
+
return parseLines(lines);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parses a subagent transcript's JSONL text into Turn[].
|
|
24
|
+
*
|
|
25
|
+
* Subagent .jsonl files use the same line format as the main transcript.
|
|
26
|
+
* All their turns have isSidechain true (that flag is on the raw lines themselves).
|
|
27
|
+
* This function reuses the core turn-building logic from parseLines; it extracts
|
|
28
|
+
* just the turns from the resulting SessionSummary rather than duplicating logic.
|
|
29
|
+
*/
|
|
30
|
+
export function parseSubagentTurns(jsonlText) {
|
|
31
|
+
const lines = jsonlText.split("\n");
|
|
32
|
+
const sessionSummary = parseLines(lines);
|
|
33
|
+
return Array.from(sessionSummary.turns);
|
|
34
|
+
}
|
|
35
|
+
export function parseLines(lines) {
|
|
36
|
+
const unknownEvents = [];
|
|
37
|
+
let sessionId = "";
|
|
38
|
+
let aiTitle;
|
|
39
|
+
// Map from promptId to accumulator turn
|
|
40
|
+
const turnsByPromptId = new Map();
|
|
41
|
+
// Ordered list of turns (by first-seen order)
|
|
42
|
+
const turnOrder = [];
|
|
43
|
+
// Map from tool_use_id to MutableToolCall so we can patch results later
|
|
44
|
+
const toolCallsById = new Map();
|
|
45
|
+
// turn_duration system lines arrive after all the messages in a turn;
|
|
46
|
+
// we store them indexed by the last-seen promptId at the time
|
|
47
|
+
let lastSeenPromptId;
|
|
48
|
+
// System turn_duration events: keyed by promptId to patch durationMs
|
|
49
|
+
const durationByPromptId = new Map();
|
|
50
|
+
// Models set
|
|
51
|
+
const modelsUsed = new Set();
|
|
52
|
+
let turnIndex = 0;
|
|
53
|
+
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
54
|
+
const rawLine = lines[lineIndex].trim();
|
|
55
|
+
if (rawLine === "")
|
|
56
|
+
continue;
|
|
57
|
+
let parsed;
|
|
58
|
+
try {
|
|
59
|
+
parsed = JSON.parse(rawLine);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
unknownEvents.push({
|
|
63
|
+
kind: "unknown",
|
|
64
|
+
rawType: "<json-parse-error>",
|
|
65
|
+
rawPayload: { rawLine },
|
|
66
|
+
lineIndex,
|
|
67
|
+
});
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const lineType = typeof parsed["type"] === "string" ? parsed["type"] : "";
|
|
71
|
+
// Capture sessionId from any line that has it
|
|
72
|
+
if (typeof parsed["sessionId"] === "string" && parsed["sessionId"]) {
|
|
73
|
+
sessionId = parsed["sessionId"];
|
|
74
|
+
}
|
|
75
|
+
switch (lineType) {
|
|
76
|
+
case "ai-title": {
|
|
77
|
+
if (typeof parsed["aiTitle"] === "string") {
|
|
78
|
+
aiTitle = parsed["aiTitle"];
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case "system": {
|
|
83
|
+
const subtype = parsed["subtype"];
|
|
84
|
+
if (subtype === "turn_duration" && typeof parsed["durationMs"] === "number") {
|
|
85
|
+
if (lastSeenPromptId !== undefined) {
|
|
86
|
+
durationByPromptId.set(lastSeenPromptId, parsed["durationMs"]);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Other system subtypes (local_command, etc.) are informational — skip silently
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "user": {
|
|
93
|
+
const userLine = parsed;
|
|
94
|
+
const message = userLine.message;
|
|
95
|
+
if (!message)
|
|
96
|
+
break;
|
|
97
|
+
const promptId = userLine.promptId;
|
|
98
|
+
const isSidechain = userLine.isSidechain === true;
|
|
99
|
+
// Check if this user line contains tool_result blocks (tool result delivery)
|
|
100
|
+
const content = message.content;
|
|
101
|
+
if (Array.isArray(content)) {
|
|
102
|
+
const toolResultBlocks = content.filter((block) => typeof block === "object" &&
|
|
103
|
+
block !== null &&
|
|
104
|
+
block["type"] === "tool_result");
|
|
105
|
+
if (toolResultBlocks.length > 0) {
|
|
106
|
+
// This is a tool-result delivery line — patch the matching ToolCall
|
|
107
|
+
for (const block of toolResultBlocks) {
|
|
108
|
+
const resultBlock = block;
|
|
109
|
+
const toolUseId = resultBlock["tool_use_id"];
|
|
110
|
+
if (typeof toolUseId !== "string")
|
|
111
|
+
continue;
|
|
112
|
+
const toolCall = toolCallsById.get(toolUseId);
|
|
113
|
+
if (!toolCall)
|
|
114
|
+
continue;
|
|
115
|
+
const isError = resultBlock["is_error"] === true;
|
|
116
|
+
toolCall.isError = isError;
|
|
117
|
+
const blockContent = resultBlock["content"];
|
|
118
|
+
if (typeof blockContent === "string") {
|
|
119
|
+
toolCall.result = blockContent;
|
|
120
|
+
}
|
|
121
|
+
else if (Array.isArray(blockContent)) {
|
|
122
|
+
// Agent tool returns array of text blocks
|
|
123
|
+
const textParts = blockContent
|
|
124
|
+
.filter((b) => typeof b === "object" && b !== null && b["type"] === "text")
|
|
125
|
+
.map((b) => String(b["text"] ?? ""));
|
|
126
|
+
toolCall.result = textParts.join("\n");
|
|
127
|
+
}
|
|
128
|
+
// For Agent tool: extract subagentId from toolUseResult
|
|
129
|
+
const toolUseResult = userLine.toolUseResult;
|
|
130
|
+
if (toolUseResult && typeof toolUseResult["agentId"] === "string") {
|
|
131
|
+
toolCall.subagentId = toolUseResult["agentId"];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Don't create a new Turn for tool-result-only user lines
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Regular user message — open or update a Turn for this promptId.
|
|
139
|
+
if (promptId === undefined)
|
|
140
|
+
break;
|
|
141
|
+
lastSeenPromptId = promptId;
|
|
142
|
+
if (!turnsByPromptId.has(promptId)) {
|
|
143
|
+
const newTurn = {
|
|
144
|
+
turnIndex: turnIndex++,
|
|
145
|
+
promptId,
|
|
146
|
+
userMessageUuid: userLine.uuid,
|
|
147
|
+
timestamp: userLine.timestamp,
|
|
148
|
+
userText: extractUserText(message.content),
|
|
149
|
+
isMeta: userLine.isMeta === true,
|
|
150
|
+
assistantBlocks: [],
|
|
151
|
+
toolCallsMap: new Map(),
|
|
152
|
+
usage: undefined,
|
|
153
|
+
model: undefined,
|
|
154
|
+
durationMs: undefined,
|
|
155
|
+
isSidechain,
|
|
156
|
+
lastAssistantMessageId: undefined,
|
|
157
|
+
};
|
|
158
|
+
turnsByPromptId.set(promptId, newTurn);
|
|
159
|
+
turnOrder.push(newTurn);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// A turn for this promptId already exists (opened by a meta or assistant line).
|
|
163
|
+
// If this user line is non-meta and has real text, upgrade the turn's user fields.
|
|
164
|
+
const existingTurn = turnsByPromptId.get(promptId);
|
|
165
|
+
if (userLine.isMeta !== true) {
|
|
166
|
+
const text = extractUserText(message.content);
|
|
167
|
+
if (text !== undefined) {
|
|
168
|
+
existingTurn.userText = text;
|
|
169
|
+
existingTurn.isMeta = false;
|
|
170
|
+
existingTurn.userMessageUuid = userLine.uuid;
|
|
171
|
+
if (userLine.timestamp) {
|
|
172
|
+
existingTurn.timestamp = userLine.timestamp;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case "assistant": {
|
|
180
|
+
const assistantLine = parsed;
|
|
181
|
+
const message = assistantLine.message;
|
|
182
|
+
if (!message)
|
|
183
|
+
break;
|
|
184
|
+
// Assistant lines frequently lack promptId in real transcripts.
|
|
185
|
+
// Fall back to the most recently seen promptId from a user line.
|
|
186
|
+
const promptId = assistantLine.promptId ?? lastSeenPromptId;
|
|
187
|
+
if (promptId === undefined)
|
|
188
|
+
break;
|
|
189
|
+
// Only update lastSeenPromptId if the line has an explicit value (don't
|
|
190
|
+
// let assistant lines overwrite a user-established promptId with undefined).
|
|
191
|
+
if (assistantLine.promptId !== undefined) {
|
|
192
|
+
lastSeenPromptId = assistantLine.promptId;
|
|
193
|
+
}
|
|
194
|
+
// Get or create the Turn (assistant lines can arrive before the corresponding
|
|
195
|
+
// user line when the file records them out of strict order — be defensive)
|
|
196
|
+
if (!turnsByPromptId.has(promptId)) {
|
|
197
|
+
const newTurn = {
|
|
198
|
+
turnIndex: turnIndex++,
|
|
199
|
+
promptId,
|
|
200
|
+
userMessageUuid: undefined,
|
|
201
|
+
timestamp: assistantLine.timestamp,
|
|
202
|
+
userText: undefined,
|
|
203
|
+
isMeta: false,
|
|
204
|
+
assistantBlocks: [],
|
|
205
|
+
toolCallsMap: new Map(),
|
|
206
|
+
usage: undefined,
|
|
207
|
+
model: undefined,
|
|
208
|
+
durationMs: undefined,
|
|
209
|
+
isSidechain: assistantLine.isSidechain === true,
|
|
210
|
+
lastAssistantMessageId: undefined,
|
|
211
|
+
};
|
|
212
|
+
turnsByPromptId.set(promptId, newTurn);
|
|
213
|
+
turnOrder.push(newTurn);
|
|
214
|
+
}
|
|
215
|
+
const turn = turnsByPromptId.get(promptId);
|
|
216
|
+
// Track message id to merge streaming chunks
|
|
217
|
+
const apiMessageId = message.id;
|
|
218
|
+
const isNewApiMessage = apiMessageId !== undefined &&
|
|
219
|
+
apiMessageId !== turn.lastAssistantMessageId;
|
|
220
|
+
if (apiMessageId !== undefined) {
|
|
221
|
+
turn.lastAssistantMessageId = apiMessageId;
|
|
222
|
+
}
|
|
223
|
+
// Capture usage only from the first line per API message (they're duplicated
|
|
224
|
+
// across streaming chunk lines — all have the same usage totals)
|
|
225
|
+
if (isNewApiMessage && message.usage) {
|
|
226
|
+
turn.usage = normalizeUsage(message.usage);
|
|
227
|
+
}
|
|
228
|
+
if (message.model && typeof message.model === "string") {
|
|
229
|
+
turn.model = message.model;
|
|
230
|
+
modelsUsed.add(message.model);
|
|
231
|
+
}
|
|
232
|
+
// Parse content blocks
|
|
233
|
+
const rawContent = message.content;
|
|
234
|
+
const rawBlocks = Array.isArray(rawContent)
|
|
235
|
+
? rawContent
|
|
236
|
+
: [];
|
|
237
|
+
for (const rawBlock of rawBlocks) {
|
|
238
|
+
if (typeof rawBlock !== "object" || rawBlock === null)
|
|
239
|
+
continue;
|
|
240
|
+
const block = normalizeContentBlock(rawBlock);
|
|
241
|
+
if (block === null)
|
|
242
|
+
continue;
|
|
243
|
+
turn.assistantBlocks.push(block);
|
|
244
|
+
// Register tool_use blocks so we can match results later
|
|
245
|
+
if (block.type === "tool_use") {
|
|
246
|
+
const toolCall = {
|
|
247
|
+
id: block.id,
|
|
248
|
+
name: block.name,
|
|
249
|
+
input: block.input,
|
|
250
|
+
result: undefined,
|
|
251
|
+
isError: false,
|
|
252
|
+
subagentId: undefined,
|
|
253
|
+
};
|
|
254
|
+
turn.toolCallsMap.set(block.id, toolCall);
|
|
255
|
+
toolCallsById.set(block.id, toolCall);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
// Metadata lines — recognized and silently consumed
|
|
261
|
+
case "mode":
|
|
262
|
+
case "permission-mode":
|
|
263
|
+
case "file-history-snapshot":
|
|
264
|
+
case "last-prompt":
|
|
265
|
+
case "attachment":
|
|
266
|
+
case "queue-operation":
|
|
267
|
+
break;
|
|
268
|
+
default: {
|
|
269
|
+
unknownEvents.push({
|
|
270
|
+
kind: "unknown",
|
|
271
|
+
rawType: lineType || "<missing>",
|
|
272
|
+
rawPayload: parsed,
|
|
273
|
+
lineIndex,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Patch durationMs into turns
|
|
279
|
+
for (const [promptId, durationMs] of durationByPromptId) {
|
|
280
|
+
const turn = turnsByPromptId.get(promptId);
|
|
281
|
+
if (turn) {
|
|
282
|
+
turn.durationMs = durationMs;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Freeze turns into immutable Turn objects
|
|
286
|
+
const frozenTurns = turnOrder.map((mutableTurn) => freezeTurn(mutableTurn));
|
|
287
|
+
// Compute aggregate token usage
|
|
288
|
+
const totalUsage = aggregateUsage(frozenTurns);
|
|
289
|
+
// Derive start/end timestamps
|
|
290
|
+
const timestamps = frozenTurns
|
|
291
|
+
.map((t) => t.timestamp)
|
|
292
|
+
.filter((ts) => ts !== undefined)
|
|
293
|
+
.sort();
|
|
294
|
+
const startedAt = timestamps[0];
|
|
295
|
+
const endedAt = timestamps[timestamps.length - 1];
|
|
296
|
+
const durationMs = startedAt && endedAt
|
|
297
|
+
? new Date(endedAt).getTime() - new Date(startedAt).getTime()
|
|
298
|
+
: undefined;
|
|
299
|
+
return {
|
|
300
|
+
sessionId,
|
|
301
|
+
aiTitle,
|
|
302
|
+
startedAt,
|
|
303
|
+
endedAt,
|
|
304
|
+
durationMs,
|
|
305
|
+
turns: frozenTurns,
|
|
306
|
+
subagents: [],
|
|
307
|
+
totalUsage,
|
|
308
|
+
modelsUsed: Array.from(modelsUsed),
|
|
309
|
+
unknownEvents,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
// ---------------------------------------------------------------------------
|
|
313
|
+
// Helpers
|
|
314
|
+
// ---------------------------------------------------------------------------
|
|
315
|
+
function normalizeContentBlock(rawBlock) {
|
|
316
|
+
const blockType = rawBlock.type;
|
|
317
|
+
switch (blockType) {
|
|
318
|
+
case "text": {
|
|
319
|
+
const b = rawBlock;
|
|
320
|
+
return {
|
|
321
|
+
type: "text",
|
|
322
|
+
text: typeof b.text === "string" ? b.text : "",
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
case "thinking": {
|
|
326
|
+
const b = rawBlock;
|
|
327
|
+
return {
|
|
328
|
+
type: "thinking",
|
|
329
|
+
thinking: typeof b.thinking === "string" ? b.thinking : "",
|
|
330
|
+
signature: typeof b.signature === "string" ? b.signature : "",
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
case "tool_use": {
|
|
334
|
+
const b = rawBlock;
|
|
335
|
+
const id = typeof b.id === "string" ? b.id : "";
|
|
336
|
+
const name = typeof b.name === "string" ? b.name : "";
|
|
337
|
+
const input = b.input !== null && typeof b.input === "object" && !Array.isArray(b.input)
|
|
338
|
+
? b.input
|
|
339
|
+
: {};
|
|
340
|
+
return { type: "tool_use", id, name, input };
|
|
341
|
+
}
|
|
342
|
+
case "tool_result": {
|
|
343
|
+
const b = rawBlock;
|
|
344
|
+
const toolUseId = typeof b.tool_use_id === "string" ? b.tool_use_id : "";
|
|
345
|
+
let content;
|
|
346
|
+
if (typeof b.content === "string") {
|
|
347
|
+
content = b.content;
|
|
348
|
+
}
|
|
349
|
+
else if (Array.isArray(b.content)) {
|
|
350
|
+
content = b.content
|
|
351
|
+
.filter((item) => item["type"] === "text")
|
|
352
|
+
.map((item) => ({ type: "text", text: String(item["text"] ?? "") }));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
content = "";
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
type: "tool_result",
|
|
359
|
+
tool_use_id: toolUseId,
|
|
360
|
+
content,
|
|
361
|
+
is_error: b.is_error === true,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
default:
|
|
365
|
+
// Unknown content block type — skip rather than crash
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
function normalizeUsage(rawUsage) {
|
|
370
|
+
return {
|
|
371
|
+
inputTokens: rawUsage.input_tokens ?? 0,
|
|
372
|
+
outputTokens: rawUsage.output_tokens ?? 0,
|
|
373
|
+
cacheCreationInputTokens: rawUsage.cache_creation_input_tokens ?? 0,
|
|
374
|
+
cacheReadInputTokens: rawUsage.cache_read_input_tokens ?? 0,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
function extractUserText(content) {
|
|
378
|
+
if (typeof content === "string") {
|
|
379
|
+
// Strip known XML wrappers that Claude Code injects
|
|
380
|
+
const stripped = content
|
|
381
|
+
.replace(/<local-command-caveat>[\s\S]*?<\/local-command-caveat>/g, "")
|
|
382
|
+
.replace(/<local-command-stdout>[\s\S]*?<\/local-command-stdout>/g, "")
|
|
383
|
+
.replace(/<command-name>[\s\S]*?<\/command-name>/g, "")
|
|
384
|
+
.replace(/<command-message>[\s\S]*?<\/command-message>/g, "")
|
|
385
|
+
.replace(/<command-args>[\s\S]*?<\/command-args>/g, "")
|
|
386
|
+
.trim();
|
|
387
|
+
return stripped || undefined;
|
|
388
|
+
}
|
|
389
|
+
if (Array.isArray(content)) {
|
|
390
|
+
// List content is typically tool results — not a user text message
|
|
391
|
+
return undefined;
|
|
392
|
+
}
|
|
393
|
+
return undefined;
|
|
394
|
+
}
|
|
395
|
+
function freezeTurn(mutableTurn) {
|
|
396
|
+
const toolCalls = Array.from(mutableTurn.toolCallsMap.values()).map((tc) => ({
|
|
397
|
+
id: tc.id,
|
|
398
|
+
name: tc.name,
|
|
399
|
+
input: tc.input,
|
|
400
|
+
result: tc.result,
|
|
401
|
+
isError: tc.isError,
|
|
402
|
+
subagentId: tc.subagentId,
|
|
403
|
+
}));
|
|
404
|
+
return {
|
|
405
|
+
turnIndex: mutableTurn.turnIndex,
|
|
406
|
+
promptId: mutableTurn.promptId,
|
|
407
|
+
userMessageUuid: mutableTurn.userMessageUuid,
|
|
408
|
+
timestamp: mutableTurn.timestamp,
|
|
409
|
+
userText: mutableTurn.userText,
|
|
410
|
+
isMeta: mutableTurn.isMeta,
|
|
411
|
+
assistantBlocks: mutableTurn.assistantBlocks,
|
|
412
|
+
toolCalls,
|
|
413
|
+
usage: mutableTurn.usage,
|
|
414
|
+
model: mutableTurn.model,
|
|
415
|
+
durationMs: mutableTurn.durationMs,
|
|
416
|
+
isSidechain: mutableTurn.isSidechain,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
function aggregateUsage(turns) {
|
|
420
|
+
let inputTokens = 0;
|
|
421
|
+
let outputTokens = 0;
|
|
422
|
+
let cacheCreationInputTokens = 0;
|
|
423
|
+
let cacheReadInputTokens = 0;
|
|
424
|
+
for (const turn of turns) {
|
|
425
|
+
if (turn.usage) {
|
|
426
|
+
inputTokens += turn.usage.inputTokens;
|
|
427
|
+
outputTokens += turn.usage.outputTokens;
|
|
428
|
+
cacheCreationInputTokens += turn.usage.cacheCreationInputTokens;
|
|
429
|
+
cacheReadInputTokens += turn.usage.cacheReadInputTokens;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return { inputTokens, outputTokens, cacheCreationInputTokens, cacheReadInputTokens };
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raw JSONL line shapes as they appear in Claude Code transcript files.
|
|
3
|
+
*
|
|
4
|
+
* These types are intentionally loose (lots of `unknown` and optional fields)
|
|
5
|
+
* because the format is undocumented and changes between versions.
|
|
6
|
+
*
|
|
7
|
+
* RULE: All knowledge of the Claude Code format lives in src/parser/.
|
|
8
|
+
* The rest of the codebase imports only from src/model.ts.
|
|
9
|
+
*/
|
|
10
|
+
export interface RawBase {
|
|
11
|
+
readonly type: string;
|
|
12
|
+
readonly uuid?: string;
|
|
13
|
+
readonly parentUuid?: string | null;
|
|
14
|
+
readonly sessionId?: string;
|
|
15
|
+
readonly timestamp?: string;
|
|
16
|
+
readonly isSidechain?: boolean;
|
|
17
|
+
readonly promptId?: string;
|
|
18
|
+
readonly isMeta?: boolean;
|
|
19
|
+
readonly cwd?: string;
|
|
20
|
+
readonly version?: string;
|
|
21
|
+
readonly gitBranch?: string;
|
|
22
|
+
readonly userType?: string;
|
|
23
|
+
readonly entrypoint?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface RawTextBlock {
|
|
26
|
+
readonly type: "text";
|
|
27
|
+
readonly text: string;
|
|
28
|
+
}
|
|
29
|
+
export interface RawThinkingBlock {
|
|
30
|
+
readonly type: "thinking";
|
|
31
|
+
readonly thinking: string;
|
|
32
|
+
readonly signature: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RawToolUseBlock {
|
|
35
|
+
readonly type: "tool_use";
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly name: string;
|
|
38
|
+
readonly input: Record<string, unknown>;
|
|
39
|
+
readonly caller?: {
|
|
40
|
+
type: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface RawToolResultBlock {
|
|
44
|
+
readonly type: "tool_result";
|
|
45
|
+
readonly tool_use_id: string;
|
|
46
|
+
readonly content: string | Array<{
|
|
47
|
+
type: string;
|
|
48
|
+
text?: string;
|
|
49
|
+
}>;
|
|
50
|
+
readonly is_error?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export type RawContentBlock = RawTextBlock | RawThinkingBlock | RawToolUseBlock | RawToolResultBlock | {
|
|
53
|
+
readonly type: string;
|
|
54
|
+
[key: string]: unknown;
|
|
55
|
+
};
|
|
56
|
+
export interface RawUsage {
|
|
57
|
+
readonly input_tokens?: number;
|
|
58
|
+
readonly output_tokens?: number;
|
|
59
|
+
readonly cache_creation_input_tokens?: number;
|
|
60
|
+
readonly cache_read_input_tokens?: number;
|
|
61
|
+
readonly [key: string]: unknown;
|
|
62
|
+
}
|
|
63
|
+
export interface RawMessage {
|
|
64
|
+
readonly role: "user" | "assistant";
|
|
65
|
+
readonly content: string | RawContentBlock[];
|
|
66
|
+
readonly model?: string;
|
|
67
|
+
readonly id?: string;
|
|
68
|
+
readonly type?: string;
|
|
69
|
+
readonly stop_reason?: string | null;
|
|
70
|
+
readonly usage?: RawUsage;
|
|
71
|
+
readonly [key: string]: unknown;
|
|
72
|
+
}
|
|
73
|
+
export interface RawUserLine extends RawBase {
|
|
74
|
+
readonly type: "user";
|
|
75
|
+
readonly message: RawMessage;
|
|
76
|
+
readonly agentId?: string;
|
|
77
|
+
/** Present on tool-result delivery lines — contains structured metadata about the result */
|
|
78
|
+
readonly toolUseResult?: RawToolUseResult;
|
|
79
|
+
}
|
|
80
|
+
export interface RawAssistantLine extends RawBase {
|
|
81
|
+
readonly type: "assistant";
|
|
82
|
+
readonly message: RawMessage;
|
|
83
|
+
readonly requestId?: string;
|
|
84
|
+
readonly agentId?: string;
|
|
85
|
+
readonly attributionAgent?: string;
|
|
86
|
+
readonly attributionSkill?: string;
|
|
87
|
+
/** toolUseResult is present on user lines that are tool results, not assistant lines */
|
|
88
|
+
readonly toolUseResult?: unknown;
|
|
89
|
+
}
|
|
90
|
+
export interface RawToolResultUserLine extends RawBase {
|
|
91
|
+
readonly type: "user";
|
|
92
|
+
readonly message: RawMessage;
|
|
93
|
+
/** Structured tool result metadata, present when message.content is a tool_result array */
|
|
94
|
+
readonly toolUseResult?: RawToolUseResult;
|
|
95
|
+
}
|
|
96
|
+
export interface RawToolUseResult {
|
|
97
|
+
readonly isAsync?: boolean;
|
|
98
|
+
readonly status?: string;
|
|
99
|
+
readonly agentId?: string;
|
|
100
|
+
readonly description?: string;
|
|
101
|
+
readonly prompt?: string;
|
|
102
|
+
readonly filePath?: string;
|
|
103
|
+
readonly oldString?: string;
|
|
104
|
+
readonly newString?: string;
|
|
105
|
+
readonly [key: string]: unknown;
|
|
106
|
+
}
|
|
107
|
+
export interface RawSystemLine extends RawBase {
|
|
108
|
+
readonly type: "system";
|
|
109
|
+
readonly subtype?: string;
|
|
110
|
+
readonly content?: string;
|
|
111
|
+
readonly level?: string;
|
|
112
|
+
readonly durationMs?: number;
|
|
113
|
+
readonly messageCount?: number;
|
|
114
|
+
}
|
|
115
|
+
export interface RawModeLine extends RawBase {
|
|
116
|
+
readonly type: "mode";
|
|
117
|
+
readonly mode: string;
|
|
118
|
+
}
|
|
119
|
+
export interface RawPermissionModeLine extends RawBase {
|
|
120
|
+
readonly type: "permission-mode";
|
|
121
|
+
readonly permissionMode: string;
|
|
122
|
+
}
|
|
123
|
+
export interface RawFileHistorySnapshotLine extends RawBase {
|
|
124
|
+
readonly type: "file-history-snapshot";
|
|
125
|
+
readonly messageId?: string;
|
|
126
|
+
readonly snapshot?: unknown;
|
|
127
|
+
readonly isSnapshotUpdate?: boolean;
|
|
128
|
+
}
|
|
129
|
+
export interface RawAiTitleLine extends RawBase {
|
|
130
|
+
readonly type: "ai-title";
|
|
131
|
+
readonly aiTitle: string;
|
|
132
|
+
}
|
|
133
|
+
export interface RawLastPromptLine extends RawBase {
|
|
134
|
+
readonly type: "last-prompt";
|
|
135
|
+
readonly leafUuid: string;
|
|
136
|
+
}
|
|
137
|
+
export interface RawAttachmentLine extends RawBase {
|
|
138
|
+
readonly type: "attachment";
|
|
139
|
+
readonly attachment?: {
|
|
140
|
+
readonly type: string;
|
|
141
|
+
readonly [key: string]: unknown;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export interface RawQueueOperationLine extends RawBase {
|
|
145
|
+
readonly type: "queue-operation";
|
|
146
|
+
readonly operation?: string;
|
|
147
|
+
readonly content?: string;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=rawTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawTypes.d.ts","sourceRoot":"","sources":["../../src/parser/rawTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raw JSONL line shapes as they appear in Claude Code transcript files.
|
|
3
|
+
*
|
|
4
|
+
* These types are intentionally loose (lots of `unknown` and optional fields)
|
|
5
|
+
* because the format is undocumented and changes between versions.
|
|
6
|
+
*
|
|
7
|
+
* RULE: All knowledge of the Claude Code format lives in src/parser/.
|
|
8
|
+
* The rest of the codebase imports only from src/model.ts.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=rawTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawTypes.js","sourceRoot":"","sources":["../../src/parser/rawTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hand-maintained cost table for Claude model families.
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: These prices are hand-maintained and must be verified against
|
|
5
|
+
* https://www.anthropic.com/pricing before using for billing or reporting.
|
|
6
|
+
* Last verified: 2026-06-13.
|
|
7
|
+
*/
|
|
8
|
+
import type { TokenUsage } from "./model.js";
|
|
9
|
+
export interface ModelPricing {
|
|
10
|
+
/** USD per 1 million input tokens */
|
|
11
|
+
readonly inputPer1M: number;
|
|
12
|
+
/** USD per 1 million output tokens */
|
|
13
|
+
readonly outputPer1M: number;
|
|
14
|
+
/** USD per 1 million cache-write tokens */
|
|
15
|
+
readonly cacheWritePer1M: number;
|
|
16
|
+
/** USD per 1 million cache-read tokens */
|
|
17
|
+
readonly cacheReadPer1M: number;
|
|
18
|
+
}
|
|
19
|
+
/** Date this pricing table was last verified against Anthropic's public list prices. */
|
|
20
|
+
export declare const PRICING_AS_OF_DATE = "2026-06-13";
|
|
21
|
+
/**
|
|
22
|
+
* Known model-family prefixes mapped to their public list prices (USD per 1M tokens).
|
|
23
|
+
*
|
|
24
|
+
* Real model ids look like "claude-sonnet-4-6-20250930"; we match by prefix so
|
|
25
|
+
* versioned ids resolve correctly. Add new families here as they are released.
|
|
26
|
+
*/
|
|
27
|
+
export declare const MODEL_PRICING: Record<string, ModelPricing>;
|
|
28
|
+
/**
|
|
29
|
+
* Estimates the cost in USD for a given model and token usage.
|
|
30
|
+
*
|
|
31
|
+
* Returns undefined for model ids that don't match any known prefix (e.g. "<synthetic>"),
|
|
32
|
+
* so the UI can display "cost unavailable" rather than a misleading zero.
|
|
33
|
+
*/
|
|
34
|
+
export declare function estimateCostUsd(modelId: string, usage: TokenUsage): number | undefined;
|
|
35
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA2BtD,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CActF"}
|