codesesh 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -704,7 +704,7 @@ function withEstimatedSessionCost(stats, model) {
704
704
  function estimateTokenCost(model, tokens) {
705
705
  return estimateCostForTokens(model, tokens)?.cost ?? null;
706
706
  }
707
- var HEAD_INDEX_VERSION = "claudecode-head-v1";
707
+ var HEAD_INDEX_VERSION = "claudecode-head-v2";
708
708
  function parseTimestampMs(data) {
709
709
  const raw = String(data["timestamp"] ?? "").trim();
710
710
  if (!raw) return 0;
@@ -714,6 +714,25 @@ function parseTimestampMs(data) {
714
714
  return 0;
715
715
  }
716
716
  }
717
+ function numericUsage(value) {
718
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
719
+ }
720
+ function extractClaudeUsage(data, msg) {
721
+ const usage = msg["usage"];
722
+ if (!usage || typeof usage !== "object") return null;
723
+ const u = usage;
724
+ const requestId = typeof data["requestId"] === "string" ? data["requestId"].trim() : "";
725
+ const uuid = typeof data["uuid"] === "string" ? data["uuid"].trim() : "";
726
+ const key = requestId || uuid;
727
+ if (!key) return null;
728
+ return {
729
+ key,
730
+ input: numericUsage(u["input_tokens"]),
731
+ output: numericUsage(u["output_tokens"]),
732
+ cacheRead: numericUsage(u["cache_read_input_tokens"]),
733
+ cacheCreate: numericUsage(u["cache_creation_input_tokens"])
734
+ };
735
+ }
717
736
  var ClaudeCodeAgent = class extends BaseAgent {
718
737
  name = "claudecode";
719
738
  displayName = "Claude Code";
@@ -823,6 +842,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
823
842
  const pendingToolCalls = /* @__PURE__ */ new Map();
824
843
  const ignoredToolCallIds = /* @__PURE__ */ new Set();
825
844
  const assistantUuidToToolCalls = /* @__PURE__ */ new Map();
845
+ const countedUsageKeys = /* @__PURE__ */ new Set();
826
846
  const assistantState = {
827
847
  currentIndex: null,
828
848
  latestTextIndex: null
@@ -840,6 +860,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
840
860
  pendingToolCalls,
841
861
  ignoredToolCallIds,
842
862
  assistantUuidToToolCalls,
863
+ countedUsageKeys,
843
864
  assistantState
844
865
  );
845
866
  } catch {
@@ -1057,6 +1078,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1057
1078
  let totalCacheCreateTokens = 0;
1058
1079
  let totalCost = 0;
1059
1080
  const modelUsageMap = {};
1081
+ const countedUsageKeys = /* @__PURE__ */ new Set();
1060
1082
  for (const line of lines) {
1061
1083
  try {
1062
1084
  const data = JSON.parse(line);
@@ -1077,12 +1099,13 @@ var ClaudeCodeAgent = class extends BaseAgent {
1077
1099
  if (typeof m === "string" && m.trim()) model = m.trim();
1078
1100
  }
1079
1101
  if (role === "assistant") {
1080
- const usage = msg["usage"];
1081
- if (usage && typeof usage === "object") {
1082
- const inputTokens = usage["input_tokens"] ?? 0;
1083
- const cacheRead = usage["cache_read_input_tokens"] ?? 0;
1084
- const cacheCreate = usage["cache_creation_input_tokens"] ?? 0;
1085
- const outputTokens = usage["output_tokens"] ?? 0;
1102
+ const usage = extractClaudeUsage(data, msg);
1103
+ if (usage && !countedUsageKeys.has(usage.key)) {
1104
+ countedUsageKeys.add(usage.key);
1105
+ const inputTokens = usage.input;
1106
+ const cacheRead = usage.cacheRead;
1107
+ const cacheCreate = usage.cacheCreate;
1108
+ const outputTokens = usage.output;
1086
1109
  totalInputTokens += inputTokens + cacheRead + cacheCreate;
1087
1110
  totalOutputTokens += outputTokens;
1088
1111
  totalCacheReadTokens += cacheRead;
@@ -1156,7 +1179,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1156
1179
  return null;
1157
1180
  }
1158
1181
  // --- Record conversion ---
1159
- convertRecord(data, messages, pendingToolCalls, ignoredToolCallIds, assistantUuidToToolCalls, assistantState) {
1182
+ convertRecord(data, messages, pendingToolCalls, ignoredToolCallIds, assistantUuidToToolCalls, countedUsageKeys, assistantState) {
1160
1183
  if (data["isMeta"] === true) return;
1161
1184
  const msgType = String(data["type"] ?? "");
1162
1185
  if (isInternalEventType(msgType)) return;
@@ -1167,6 +1190,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1167
1190
  pendingToolCalls,
1168
1191
  ignoredToolCallIds,
1169
1192
  assistantUuidToToolCalls,
1193
+ countedUsageKeys,
1170
1194
  assistantState
1171
1195
  );
1172
1196
  } else if (msgType === "user") {
@@ -1182,7 +1206,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1182
1206
  this.convertToolResultRecord(data, messages, assistantState);
1183
1207
  }
1184
1208
  }
1185
- convertAssistantRecord(data, messages, pendingToolCalls, ignoredToolCallIds, assistantUuidToToolCalls, assistantState) {
1209
+ convertAssistantRecord(data, messages, pendingToolCalls, ignoredToolCallIds, assistantUuidToToolCalls, countedUsageKeys, assistantState) {
1186
1210
  const msg = data["message"] ?? {};
1187
1211
  const timestampMs = parseTimestampMs(data);
1188
1212
  const rawContent = msg["content"] ?? [];
@@ -1200,7 +1224,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1200
1224
  if (text) {
1201
1225
  currentAssistantIndex = this.appendAssistantReasoning(
1202
1226
  messages,
1203
- { messageId: uuid, msg, timestampMs, text },
1227
+ { messageId: uuid, data, msg, timestampMs, text, countedUsageKeys },
1204
1228
  currentAssistantIndex
1205
1229
  );
1206
1230
  }
@@ -1211,7 +1235,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1211
1235
  if (text) {
1212
1236
  currentAssistantIndex = this.appendAssistantText(
1213
1237
  messages,
1214
- { messageId: uuid, msg, timestampMs, text },
1238
+ { messageId: uuid, data, msg, timestampMs, text, countedUsageKeys },
1215
1239
  currentAssistantIndex
1216
1240
  );
1217
1241
  latestAssistantTextIndex = currentAssistantIndex;
@@ -1228,10 +1252,12 @@ var ClaudeCodeAgent = class extends BaseAgent {
1228
1252
  const toolPart = this.buildToolPart(part, timestampMs);
1229
1253
  const [msgIndex, partIndex] = this.attachToolCallToLatestAssistant(messages, {
1230
1254
  messageId: uuid,
1255
+ data,
1231
1256
  msg,
1232
1257
  timestampMs,
1233
1258
  toolPart,
1234
- latestTextIndex: latestAssistantTextIndex
1259
+ latestTextIndex: latestAssistantTextIndex,
1260
+ countedUsageKeys
1235
1261
  });
1236
1262
  currentAssistantIndex = msgIndex;
1237
1263
  if (toolCallId) {
@@ -1353,21 +1379,19 @@ var ClaudeCodeAgent = class extends BaseAgent {
1353
1379
  time_created: timestampMs
1354
1380
  };
1355
1381
  }
1356
- applyAssistantMetadata(message, msg) {
1382
+ applyAssistantMetadata(message, data, msg, countedUsageKeys) {
1357
1383
  const model = msg["model"];
1358
1384
  if (model && typeof model === "string" && !message.model) {
1359
1385
  message.model = model;
1360
1386
  }
1361
- const usage = msg["usage"];
1362
- if (usage && typeof usage === "object" && !message.tokens) {
1363
- const u = usage;
1364
- const cacheRead = u["cache_read_input_tokens"] ?? 0;
1365
- const cacheCreate = u["cache_creation_input_tokens"] ?? 0;
1387
+ const usage = extractClaudeUsage(data, msg);
1388
+ if (usage && !message.tokens && !countedUsageKeys.has(usage.key)) {
1389
+ countedUsageKeys.add(usage.key);
1366
1390
  message.tokens = {
1367
- input: (u["input_tokens"] ?? 0) + cacheCreate + cacheRead,
1368
- output: u["output_tokens"] ?? 0,
1369
- cache_read: cacheRead,
1370
- cache_create: cacheCreate
1391
+ input: usage.input + usage.cacheCreate + usage.cacheRead,
1392
+ output: usage.output,
1393
+ cache_read: usage.cacheRead,
1394
+ cache_create: usage.cacheCreate
1371
1395
  };
1372
1396
  const cost = estimateTokenCost(message.model, message.tokens);
1373
1397
  if (cost !== null) {
@@ -1385,7 +1409,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1385
1409
  const hasTool = message2.parts.some((p) => p.type === "tool");
1386
1410
  if (!hasText && !hasTool) {
1387
1411
  this.appendPartIfNew(message2, part);
1388
- this.applyAssistantMetadata(message2, opts.msg);
1412
+ this.applyAssistantMetadata(message2, opts.data, opts.msg, opts.countedUsageKeys);
1389
1413
  return currentIndex;
1390
1414
  }
1391
1415
  }
@@ -1396,7 +1420,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1396
1420
  parts: [part],
1397
1421
  agent: "claude"
1398
1422
  });
1399
- this.applyAssistantMetadata(message, opts.msg);
1423
+ this.applyAssistantMetadata(message, opts.data, opts.msg, opts.countedUsageKeys);
1400
1424
  messages.push(message);
1401
1425
  return messages.length - 1;
1402
1426
  }
@@ -1407,7 +1431,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1407
1431
  const hasTool = message2.parts.some((p) => p.type === "tool");
1408
1432
  if (!hasTool) {
1409
1433
  this.appendPartIfNew(message2, part);
1410
- this.applyAssistantMetadata(message2, opts.msg);
1434
+ this.applyAssistantMetadata(message2, opts.data, opts.msg, opts.countedUsageKeys);
1411
1435
  return currentIndex;
1412
1436
  }
1413
1437
  }
@@ -1418,7 +1442,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1418
1442
  parts: [part],
1419
1443
  agent: "claude"
1420
1444
  });
1421
- this.applyAssistantMetadata(message, opts.msg);
1445
+ this.applyAssistantMetadata(message, opts.data, opts.msg, opts.countedUsageKeys);
1422
1446
  messages.push(message);
1423
1447
  return messages.length - 1;
1424
1448
  }
@@ -1426,7 +1450,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1426
1450
  if (opts.latestTextIndex !== null) {
1427
1451
  const message2 = messages[opts.latestTextIndex];
1428
1452
  message2.parts.push(opts.toolPart);
1429
- this.applyAssistantMetadata(message2, opts.msg);
1453
+ this.applyAssistantMetadata(message2, opts.data, opts.msg, opts.countedUsageKeys);
1430
1454
  return [opts.latestTextIndex, message2.parts.length - 1];
1431
1455
  }
1432
1456
  const message = this.buildMessage({
@@ -1437,7 +1461,7 @@ var ClaudeCodeAgent = class extends BaseAgent {
1437
1461
  agent: "claude",
1438
1462
  mode: "tool"
1439
1463
  });
1440
- this.applyAssistantMetadata(message, opts.msg);
1464
+ this.applyAssistantMetadata(message, opts.data, opts.msg, opts.countedUsageKeys);
1441
1465
  messages.push(message);
1442
1466
  return [messages.length - 1, 0];
1443
1467
  }
@@ -9148,4 +9172,4 @@ export {
9148
9172
  importBookmarks,
9149
9173
  deleteBookmark
9150
9174
  };
9151
- //# sourceMappingURL=chunk-LXHUIQZI.js.map
9175
+ //# sourceMappingURL=chunk-5UOLRSFH.js.map