@ramtinj95/opencode-tokenscope 1.5.2 → 1.6.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.
Files changed (53) hide show
  1. package/README.md +40 -12
  2. package/dist/tokenscope-lib/analyzer.d.ts +2 -0
  3. package/dist/tokenscope-lib/analyzer.d.ts.map +1 -1
  4. package/dist/tokenscope-lib/analyzer.js +73 -70
  5. package/dist/tokenscope-lib/analyzer.js.map +1 -1
  6. package/dist/tokenscope-lib/config.d.ts +0 -1
  7. package/dist/tokenscope-lib/config.d.ts.map +1 -1
  8. package/dist/tokenscope-lib/config.js +20 -11
  9. package/dist/tokenscope-lib/config.js.map +1 -1
  10. package/dist/tokenscope-lib/context.d.ts +4 -1
  11. package/dist/tokenscope-lib/context.d.ts.map +1 -1
  12. package/dist/tokenscope-lib/context.js +54 -44
  13. package/dist/tokenscope-lib/context.js.map +1 -1
  14. package/dist/tokenscope-lib/cost.d.ts +4 -0
  15. package/dist/tokenscope-lib/cost.d.ts.map +1 -1
  16. package/dist/tokenscope-lib/cost.js +43 -8
  17. package/dist/tokenscope-lib/cost.js.map +1 -1
  18. package/dist/tokenscope-lib/formatter.d.ts +3 -0
  19. package/dist/tokenscope-lib/formatter.d.ts.map +1 -1
  20. package/dist/tokenscope-lib/formatter.js +101 -21
  21. package/dist/tokenscope-lib/formatter.js.map +1 -1
  22. package/dist/tokenscope-lib/opencode.d.ts +4 -0
  23. package/dist/tokenscope-lib/opencode.d.ts.map +1 -0
  24. package/dist/tokenscope-lib/opencode.js +25 -0
  25. package/dist/tokenscope-lib/opencode.js.map +1 -0
  26. package/dist/tokenscope-lib/skill.d.ts +43 -5
  27. package/dist/tokenscope-lib/skill.d.ts.map +1 -1
  28. package/dist/tokenscope-lib/skill.js +435 -50
  29. package/dist/tokenscope-lib/skill.js.map +1 -1
  30. package/dist/tokenscope-lib/subagent.d.ts +3 -1
  31. package/dist/tokenscope-lib/subagent.d.ts.map +1 -1
  32. package/dist/tokenscope-lib/subagent.js +34 -27
  33. package/dist/tokenscope-lib/subagent.js.map +1 -1
  34. package/dist/tokenscope-lib/telemetry.d.ts +47 -0
  35. package/dist/tokenscope-lib/telemetry.d.ts.map +1 -0
  36. package/dist/tokenscope-lib/telemetry.js +105 -0
  37. package/dist/tokenscope-lib/telemetry.js.map +1 -0
  38. package/dist/tokenscope-lib/tokenizer.d.ts +4 -1
  39. package/dist/tokenscope-lib/tokenizer.d.ts.map +1 -1
  40. package/dist/tokenscope-lib/tokenizer.js +16 -20
  41. package/dist/tokenscope-lib/tokenizer.js.map +1 -1
  42. package/dist/tokenscope-lib/types.d.ts +34 -2
  43. package/dist/tokenscope-lib/types.d.ts.map +1 -1
  44. package/dist/tokenscope-lib/types.js.map +1 -1
  45. package/dist/tokenscope-lib/warnings.d.ts +8 -0
  46. package/dist/tokenscope-lib/warnings.d.ts.map +1 -0
  47. package/dist/tokenscope-lib/warnings.js +31 -0
  48. package/dist/tokenscope-lib/warnings.js.map +1 -0
  49. package/dist/tokenscope.d.ts.map +1 -1
  50. package/dist/tokenscope.js +135 -57
  51. package/dist/tokenscope.js.map +1 -1
  52. package/models.json +30922 -232
  53. package/package.json +1 -1
@@ -1,9 +1,11 @@
1
1
  import type { SubagentAnalysis } from "./types";
2
2
  import { CostCalculator } from "./cost";
3
+ import { WarningCollector } from "./warnings";
3
4
  export declare class SubagentAnalyzer {
4
5
  private client;
5
6
  private costCalculator;
6
- constructor(client: any, costCalculator: CostCalculator);
7
+ private warnings?;
8
+ constructor(client: any, costCalculator: CostCalculator, warnings?: WarningCollector | undefined);
7
9
  analyzeChildSessions(parentSessionID: string): Promise<SubagentAnalysis>;
8
10
  private analyzeChildSession;
9
11
  private extractAgentType;
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmC,gBAAgB,EAAgB,MAAM,SAAS,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAEvC,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;gBADd,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,cAAc;IAGlC,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAwDhE,mBAAmB;IA6DjC,OAAO,CAAC,gBAAgB;CAMzB"}
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmC,gBAAgB,EAAgB,MAAM,SAAS,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAGvC,OAAO,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAA;AAEjE,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ,CAAC;gBAFT,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,gBAAgB,YAAA;IAG/B,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA2DhE,mBAAmB;IA2DjC,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -1,10 +1,15 @@
1
1
  // SubagentAnalyzer - analyzes child sessions from Task tool calls
2
+ import { fetchSessionChildren, fetchSessionMessages, unwrapResponseData } from "./opencode";
3
+ import { summarizeTelemetry } from "./telemetry";
4
+ import { formatErrorMessage } from "./warnings";
2
5
  export class SubagentAnalyzer {
3
6
  client;
4
7
  costCalculator;
5
- constructor(client, costCalculator) {
8
+ warnings;
9
+ constructor(client, costCalculator, warnings) {
6
10
  this.client = client;
7
11
  this.costCalculator = costCalculator;
12
+ this.warnings = warnings;
8
13
  }
9
14
  async analyzeChildSessions(parentSessionID) {
10
15
  const result = {
@@ -20,8 +25,8 @@ export class SubagentAnalyzer {
20
25
  totalApiCalls: 0,
21
26
  };
22
27
  try {
23
- const childrenResponse = await this.client.session.children({ path: { id: parentSessionID } });
24
- const children = (childrenResponse?.data ?? childrenResponse ?? []);
28
+ const childrenResponse = await fetchSessionChildren(this.client, parentSessionID);
29
+ const children = unwrapResponseData(childrenResponse ?? []);
25
30
  if (!Array.isArray(children) || children.length === 0)
26
31
  return result;
27
32
  for (const child of children) {
@@ -36,7 +41,7 @@ export class SubagentAnalyzer {
36
41
  result.totalTokens += summary.totalTokens;
37
42
  result.totalApiCost += summary.apiCost;
38
43
  result.totalEstimatedCost += summary.estimatedCost;
39
- result.totalApiCalls += summary.assistantMessageCount;
44
+ result.totalApiCalls += summary.apiCallCount;
40
45
  }
41
46
  const nestedAnalysis = await this.analyzeChildSessions(child.id);
42
47
  for (const nested of nestedAnalysis.subagents) {
@@ -54,38 +59,39 @@ export class SubagentAnalyzer {
54
59
  }
55
60
  }
56
61
  catch (error) {
57
- console.error(`Failed to fetch child sessions for ${parentSessionID}:`, error);
62
+ this.warnings?.add(`Subagent analysis was skipped for session ${parentSessionID}: ${formatErrorMessage(error)}`, `subagent-root:${parentSessionID}`);
58
63
  }
59
64
  return result;
60
65
  }
61
66
  async analyzeChildSession(child) {
62
67
  try {
63
- const messagesResponse = await this.client.session.messages({ path: { id: child.id } });
64
- const messages = (messagesResponse?.data ?? messagesResponse ?? []);
68
+ const messagesResponse = await fetchSessionMessages(this.client, child.id);
69
+ const messages = unwrapResponseData(messagesResponse ?? []);
65
70
  if (!Array.isArray(messages) || messages.length === 0)
66
71
  return null;
67
72
  const agentType = this.extractAgentType(child.title);
68
- let inputTokens = 0, outputTokens = 0, reasoningTokens = 0;
69
- let cacheReadTokens = 0, cacheWriteTokens = 0;
70
- let apiCost = 0, assistantMessageCount = 0, modelName = "unknown";
73
+ const telemetry = summarizeTelemetry(messages);
74
+ let providerID = "";
75
+ let modelName = "unknown";
71
76
  for (const message of messages) {
72
- if (message.info.role === "assistant") {
73
- assistantMessageCount++;
74
- const tokens = message.info.tokens;
75
- if (tokens) {
76
- inputTokens += Number(tokens.input) || 0;
77
- outputTokens += Number(tokens.output) || 0;
78
- reasoningTokens += Number(tokens.reasoning) || 0;
79
- cacheReadTokens += Number(tokens.cache?.read) || 0;
80
- cacheWriteTokens += Number(tokens.cache?.write) || 0;
81
- }
82
- apiCost += Number(message.info.cost) || 0;
83
- if (message.info.modelID)
84
- modelName = message.info.modelID;
85
- }
77
+ if (message.info.role !== "assistant")
78
+ continue;
79
+ if (message.info.providerID)
80
+ providerID = message.info.providerID;
81
+ if (message.info.modelID)
82
+ modelName = message.info.modelID;
86
83
  }
84
+ const inputTokens = telemetry.inputTokens;
85
+ const outputTokens = telemetry.outputTokens;
86
+ const reasoningTokens = telemetry.reasoningTokens;
87
+ const cacheReadTokens = telemetry.cacheReadTokens;
88
+ const cacheWriteTokens = telemetry.cacheWriteTokens;
89
+ const apiCost = telemetry.sessionCost;
90
+ const assistantMessageCount = telemetry.assistantMessageCount;
91
+ const apiCallCount = telemetry.apiCallCount;
87
92
  const totalTokens = inputTokens + outputTokens + reasoningTokens + cacheReadTokens + cacheWriteTokens;
88
- const pricing = this.costCalculator.getPricing(modelName);
93
+ const pricingModelName = this.costCalculator.buildLookupKey(providerID, modelName) || modelName;
94
+ const pricing = this.costCalculator.getPricing(pricingModelName);
89
95
  const estimatedCost = (inputTokens / 1_000_000) * pricing.input +
90
96
  ((outputTokens + reasoningTokens) / 1_000_000) * pricing.output +
91
97
  (cacheReadTokens / 1_000_000) * pricing.cacheRead +
@@ -103,15 +109,16 @@ export class SubagentAnalyzer {
103
109
  apiCost,
104
110
  estimatedCost,
105
111
  assistantMessageCount,
112
+ apiCallCount,
106
113
  };
107
114
  }
108
115
  catch (error) {
109
- console.error(`Failed to analyze child session ${child.id}:`, error);
116
+ this.warnings?.add(`A child session could not be analyzed (${child.id}): ${formatErrorMessage(error)}`, `subagent-child:${child.id}`);
110
117
  return null;
111
118
  }
112
119
  }
113
120
  extractAgentType(title) {
114
- const match = title.match(/@(\w+)\s+subagent/i);
121
+ const match = title.match(/@([A-Za-z0-9._-]+)\s+subagent/i);
115
122
  if (match)
116
123
  return match[1];
117
124
  const words = title.split(/\s+/);
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../tokenscope-lib/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../tokenscope-lib/subagent.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAIlE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,OAAO,gBAAgB;IAEjB;IACA;IACA;IAHV,YACU,MAAW,EACX,cAA8B,EAC9B,QAA2B;QAF3B,WAAM,GAAN,MAAM,CAAK;QACX,mBAAc,GAAd,cAAc,CAAgB;QAC9B,aAAQ,GAAR,QAAQ,CAAmB;IAClC,CAAC;IAEJ,KAAK,CAAC,oBAAoB,CAAC,eAAuB;QAChD,MAAM,MAAM,GAAqB;YAC/B,SAAS,EAAE,EAAE;YACb,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,oBAAoB,EAAE,CAAC;YACvB,oBAAoB,EAAE,CAAC;YACvB,qBAAqB,EAAE,CAAC;YACxB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,aAAa,EAAE,CAAC;SACjB,CAAA;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;YACjF,MAAM,QAAQ,GAAmB,kBAAkB,CAAiB,gBAAgB,IAAI,EAAE,CAAC,CAAA;YAE3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAA;YAEpE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;gBACrD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC9B,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAA;oBAC9C,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAA;oBAChD,MAAM,CAAC,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAA;oBACtD,MAAM,CAAC,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAA;oBACtD,MAAM,CAAC,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,CAAA;oBACxD,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAA;oBACzC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAA;oBACtC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAA;oBAClD,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAA;gBAC9C,CAAC;gBAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAChE,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;oBAC9C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC/B,CAAC;gBACD,MAAM,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAA;gBAC1D,MAAM,CAAC,iBAAiB,IAAI,cAAc,CAAC,iBAAiB,CAAA;gBAC5D,MAAM,CAAC,oBAAoB,IAAI,cAAc,CAAC,oBAAoB,CAAA;gBAClE,MAAM,CAAC,oBAAoB,IAAI,cAAc,CAAC,oBAAoB,CAAA;gBAClE,MAAM,CAAC,qBAAqB,IAAI,cAAc,CAAC,qBAAqB,CAAA;gBACpE,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,CAAA;gBAChD,MAAM,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY,CAAA;gBAClD,MAAM,CAAC,kBAAkB,IAAI,cAAc,CAAC,kBAAkB,CAAA;gBAC9D,MAAM,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa,CAAA;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,GAAG,CAChB,6CAA6C,eAAe,KAAK,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAC5F,iBAAiB,eAAe,EAAE,CACnC,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAmB;QACnD,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAqB,kBAAkB,CAAmB,gBAAgB,IAAI,EAAE,CAAC,CAAA;YAE/F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAElE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YAC9C,IAAI,UAAU,GAAG,EAAE,CAAA;YACnB,IAAI,SAAS,GAAG,SAAS,CAAA;YAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;oBAAE,SAAQ;gBAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU;oBAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAA;gBACjE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO;oBAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;YAC5D,CAAC;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;YACzC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;YAC3C,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;YACjD,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;YACjD,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAA;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAA;YACrC,MAAM,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,CAAA;YAC7D,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAA;YAC3C,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAA;YACrG,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,SAAS,CAAA;YAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;YAChE,MAAM,aAAa,GACjB,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK;gBACzC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM;gBAC/D,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS;gBACjD,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAA;YAErD,OAAO;gBACL,SAAS,EAAE,KAAK,CAAC,EAAE;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS;gBACT,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,eAAe;gBACf,gBAAgB;gBAChB,WAAW;gBACX,OAAO;gBACP,aAAa;gBACb,qBAAqB;gBACrB,YAAY;aACb,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,GAAG,CAChB,0CAA0C,KAAK,CAAC,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,EACnF,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAC7B,CAAA;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC3D,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,UAAU,CAAA;IAC9C,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ import type { TokenUsage } from "./types";
2
+ export interface TelemetryCall {
3
+ inputTokens: number;
4
+ outputTokens: number;
5
+ reasoningTokens: number;
6
+ cacheReadTokens: number;
7
+ cacheWriteTokens: number;
8
+ cost: number;
9
+ providerTotalTokens?: number;
10
+ }
11
+ export interface TelemetrySummary {
12
+ assistantMessageCount: number;
13
+ apiCallCount: number;
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ reasoningTokens: number;
17
+ cacheReadTokens: number;
18
+ cacheWriteTokens: number;
19
+ callsWithCacheRead: number;
20
+ callsWithCacheWrite: number;
21
+ sessionCost: number;
22
+ mostRecentInput: number;
23
+ mostRecentOutput: number;
24
+ mostRecentReasoning: number;
25
+ mostRecentCacheRead: number;
26
+ mostRecentCacheWrite: number;
27
+ mostRecentCost: number;
28
+ mostRecentProviderTotalTokens?: number;
29
+ }
30
+ type TelemetryPartLike = {
31
+ type?: string;
32
+ tokens?: TokenUsage;
33
+ cost?: number;
34
+ };
35
+ type TelemetryMessageLike = {
36
+ info: {
37
+ role?: string;
38
+ tokens?: TokenUsage;
39
+ cost?: number;
40
+ };
41
+ parts: TelemetryPartLike[];
42
+ };
43
+ export declare function collectTelemetryCalls(messages: TelemetryMessageLike[]): TelemetryCall[];
44
+ export declare function summarizeTelemetry(messages: TelemetryMessageLike[]): TelemetrySummary;
45
+ export declare function firstCacheWriteTokens(messages: TelemetryMessageLike[]): number;
46
+ export {};
47
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/telemetry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,6BAA6B,CAAC,EAAE,MAAM,CAAA;CACvC;AAED,KAAK,iBAAiB,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAC3B,CAAA;AAyCD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,aAAa,EAAE,CAoBvF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,gBAAgB,CA8CrF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAM9E"}
@@ -0,0 +1,105 @@
1
+ // Telemetry helpers - extracts per-API-call token and cost data from stored session messages
2
+ function safeNumber(value) {
3
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
4
+ }
5
+ function hasExplicitNumber(value) {
6
+ return typeof value === "number" && Number.isFinite(value);
7
+ }
8
+ function buildTelemetryCall(tokens, cost, force) {
9
+ const inputTokens = safeNumber(tokens?.input);
10
+ const outputTokens = safeNumber(tokens?.output);
11
+ const reasoningTokens = safeNumber(tokens?.reasoning);
12
+ const cacheReadTokens = safeNumber(tokens?.cache?.read);
13
+ const cacheWriteTokens = safeNumber(tokens?.cache?.write);
14
+ const providerTotalTokens = hasExplicitNumber(tokens?.total) ? safeNumber(tokens?.total) : undefined;
15
+ const normalizedCost = safeNumber(cost);
16
+ const hasActivity = inputTokens + outputTokens + reasoningTokens + cacheReadTokens + cacheWriteTokens > 0 ||
17
+ normalizedCost > 0 ||
18
+ providerTotalTokens !== undefined;
19
+ if (!force && !hasActivity)
20
+ return null;
21
+ return {
22
+ inputTokens,
23
+ outputTokens,
24
+ reasoningTokens,
25
+ cacheReadTokens,
26
+ cacheWriteTokens,
27
+ cost: normalizedCost,
28
+ providerTotalTokens,
29
+ };
30
+ }
31
+ function isStepFinishPart(part) {
32
+ return part.type === "step-finish";
33
+ }
34
+ export function collectTelemetryCalls(messages) {
35
+ const calls = [];
36
+ for (const message of messages) {
37
+ if (message.info.role !== "assistant")
38
+ continue;
39
+ const stepFinishParts = message.parts.filter(isStepFinishPart);
40
+ if (stepFinishParts.length > 0) {
41
+ for (const part of stepFinishParts) {
42
+ const call = buildTelemetryCall(part.tokens, part.cost, true);
43
+ if (call)
44
+ calls.push(call);
45
+ }
46
+ continue;
47
+ }
48
+ const fallback = buildTelemetryCall(message.info.tokens, message.info.cost, false);
49
+ if (fallback)
50
+ calls.push(fallback);
51
+ }
52
+ return calls;
53
+ }
54
+ export function summarizeTelemetry(messages) {
55
+ const assistantMessageCount = messages.reduce((count, message) => count + (message.info.role === "assistant" ? 1 : 0), 0);
56
+ const calls = collectTelemetryCalls(messages);
57
+ let inputTokens = 0;
58
+ let outputTokens = 0;
59
+ let reasoningTokens = 0;
60
+ let cacheReadTokens = 0;
61
+ let cacheWriteTokens = 0;
62
+ let callsWithCacheRead = 0;
63
+ let callsWithCacheWrite = 0;
64
+ let sessionCost = 0;
65
+ for (const call of calls) {
66
+ inputTokens += call.inputTokens;
67
+ outputTokens += call.outputTokens;
68
+ reasoningTokens += call.reasoningTokens;
69
+ cacheReadTokens += call.cacheReadTokens;
70
+ cacheWriteTokens += call.cacheWriteTokens;
71
+ sessionCost += call.cost;
72
+ if (call.cacheReadTokens > 0)
73
+ callsWithCacheRead += 1;
74
+ if (call.cacheWriteTokens > 0)
75
+ callsWithCacheWrite += 1;
76
+ }
77
+ const mostRecent = calls[calls.length - 1];
78
+ return {
79
+ assistantMessageCount,
80
+ apiCallCount: calls.length,
81
+ inputTokens,
82
+ outputTokens,
83
+ reasoningTokens,
84
+ cacheReadTokens,
85
+ cacheWriteTokens,
86
+ callsWithCacheRead,
87
+ callsWithCacheWrite,
88
+ sessionCost,
89
+ mostRecentInput: mostRecent?.inputTokens ?? 0,
90
+ mostRecentOutput: mostRecent?.outputTokens ?? 0,
91
+ mostRecentReasoning: mostRecent?.reasoningTokens ?? 0,
92
+ mostRecentCacheRead: mostRecent?.cacheReadTokens ?? 0,
93
+ mostRecentCacheWrite: mostRecent?.cacheWriteTokens ?? 0,
94
+ mostRecentCost: mostRecent?.cost ?? 0,
95
+ mostRecentProviderTotalTokens: mostRecent?.providerTotalTokens,
96
+ };
97
+ }
98
+ export function firstCacheWriteTokens(messages) {
99
+ for (const call of collectTelemetryCalls(messages)) {
100
+ if (call.cacheWriteTokens > 0)
101
+ return call.cacheWriteTokens;
102
+ }
103
+ return 0;
104
+ }
105
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../tokenscope-lib/telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { TokenModel } from "./types";
2
+ import { WarningCollector } from "./warnings";
2
3
  export declare class TokenizerManager {
4
+ private warnings?;
3
5
  private tiktokenCache;
4
6
  private transformerCache;
5
7
  private tiktokenModule?;
6
8
  private transformersModule?;
9
+ constructor(warnings?: WarningCollector | undefined);
7
10
  countTokens(content: string, model: TokenModel): Promise<number>;
8
11
  private approximateTokenCount;
9
12
  private countWithTiktoken;
@@ -12,6 +15,6 @@ export declare class TokenizerManager {
12
15
  private loadTiktokenModule;
13
16
  private loadTransformersTokenizer;
14
17
  private loadTransformersModule;
15
- private importFromVendor;
18
+ private importRuntimePackage;
16
19
  }
17
20
  //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/tokenizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAc;IAEnC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBtE,OAAO,CAAC,qBAAqB;YAIf,iBAAiB;YASjB,qBAAqB;YAcrB,mBAAmB;YAwBnB,kBAAkB;YAOlB,yBAAyB;YAgBzB,sBAAsB;YAOtB,gBAAgB;CAiB/B"}
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/tokenizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAA;AAEjE,qBAAa,gBAAgB;IAMf,OAAO,CAAC,QAAQ,CAAC;IAL7B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAc;gBAErB,QAAQ,CAAC,EAAE,gBAAgB,YAAA;IAEzC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBtE,OAAO,CAAC,qBAAqB;YAIf,iBAAiB;YASjB,qBAAqB;YAcrB,mBAAmB;YAwBnB,kBAAkB;YAOlB,yBAAyB;YAoBzB,sBAAsB;YAOtB,oBAAoB;CAUnC"}
@@ -1,13 +1,14 @@
1
1
  // TokenizerManager - handles token counting with multiple backends
2
- import path from "path";
3
- import fs from "fs/promises";
4
- import { pathToFileURL } from "url";
5
- import { VENDOR_ROOT } from "./config";
2
+ import { formatErrorMessage } from "./warnings";
6
3
  export class TokenizerManager {
4
+ warnings;
7
5
  tiktokenCache = new Map();
8
6
  transformerCache = new Map();
9
7
  tiktokenModule;
10
8
  transformersModule;
9
+ constructor(warnings) {
10
+ this.warnings = warnings;
11
+ }
11
12
  async countTokens(content, model) {
12
13
  if (!content.trim())
13
14
  return 0;
@@ -22,7 +23,7 @@ export class TokenizerManager {
22
23
  }
23
24
  }
24
25
  catch (error) {
25
- console.error(`Token counting error for ${model.name}:`, error);
26
+ this.warnings?.add(`Token counting fell back to approximate mode for model '${model.name}': ${formatErrorMessage(error)}`, `token-count:${model.name}`);
26
27
  return this.approximateTokenCount(content);
27
28
  }
28
29
  }
@@ -63,7 +64,7 @@ export class TokenizerManager {
63
64
  }
64
65
  let encoder;
65
66
  try {
66
- encoder = encodingForModel(model);
67
+ encoder = typeof encodingForModel === "function" ? encodingForModel(model) : getEncoding(model);
67
68
  }
68
69
  catch {
69
70
  encoder = getEncoding("cl100k_base");
@@ -73,7 +74,7 @@ export class TokenizerManager {
73
74
  }
74
75
  async loadTiktokenModule() {
75
76
  if (!this.tiktokenModule) {
76
- this.tiktokenModule = this.importFromVendor("js-tiktoken");
77
+ this.tiktokenModule = this.importRuntimePackage("js-tiktoken");
77
78
  }
78
79
  return this.tiktokenModule;
79
80
  }
@@ -87,31 +88,26 @@ export class TokenizerManager {
87
88
  this.transformerCache.set(hub, tokenizer);
88
89
  return tokenizer;
89
90
  }
90
- catch {
91
+ catch (error) {
92
+ this.warnings?.add(`Could not load the tokenizer '${hub}'. Transformer-based counts will use the approximate fallback instead: ${formatErrorMessage(error)}`, `transformer-load:${hub}`);
91
93
  this.transformerCache.set(hub, null);
92
94
  return null;
93
95
  }
94
96
  }
95
97
  async loadTransformersModule() {
96
98
  if (!this.transformersModule) {
97
- this.transformersModule = this.importFromVendor("@huggingface/transformers");
99
+ this.transformersModule = this.importRuntimePackage("@huggingface/transformers");
98
100
  }
99
101
  return this.transformersModule;
100
102
  }
101
- async importFromVendor(pkg) {
102
- const pkgJsonPath = path.join(VENDOR_ROOT, pkg, "package.json");
103
- let data;
103
+ async importRuntimePackage(pkg) {
104
104
  try {
105
- data = await fs.readFile(pkgJsonPath, "utf8");
105
+ return await import(pkg);
106
106
  }
107
- catch {
108
- throw new Error(`Token analyzer dependencies missing. Run the install.sh script to install vendor tokenizers.\n` +
109
- `Expected path: ${pkgJsonPath}`);
107
+ catch (error) {
108
+ throw new Error(`Token analyzer dependency '${pkg}' could not be loaded. ` +
109
+ `Reinstall the npm package or rerun plugin/install.sh. ${formatErrorMessage(error)}`);
110
110
  }
111
- const manifest = JSON.parse(data);
112
- const entry = manifest.module ?? manifest.main ?? "index.js";
113
- const entryPath = path.join(VENDOR_ROOT, pkg, entry);
114
- return import(pathToFileURL(entryPath).href);
115
111
  }
116
112
  }
117
113
  //# sourceMappingURL=tokenizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../tokenscope-lib/tokenizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../tokenscope-lib/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,19 @@ export interface SessionMessage {
5
5
  export interface SessionMessageInfo {
6
6
  id: string;
7
7
  role: string;
8
+ agent?: string;
9
+ model?: {
10
+ providerID?: string;
11
+ modelID?: string;
12
+ };
8
13
  modelID?: string;
9
14
  providerID?: string;
10
- system?: string[];
15
+ system?: string | string[];
11
16
  tokens?: TokenUsage;
12
17
  cost?: number;
13
18
  }
14
19
  export interface TokenUsage {
20
+ total?: number;
15
21
  input?: number;
16
22
  output?: number;
17
23
  reasoning?: number;
@@ -41,6 +47,11 @@ export interface ToolState {
41
47
  output?: string;
42
48
  title?: string;
43
49
  metadata?: Record<string, unknown>;
50
+ time?: {
51
+ start?: number;
52
+ end?: number;
53
+ compacted?: number;
54
+ };
44
55
  }
45
56
  export interface CategoryEntry {
46
57
  label: string;
@@ -55,6 +66,7 @@ export interface CategorySummary {
55
66
  export interface TokenAnalysis {
56
67
  sessionID: string;
57
68
  model: TokenModel;
69
+ pricingModelName?: string;
58
70
  categories: {
59
71
  system: CategorySummary;
60
72
  user: CategorySummary;
@@ -69,15 +81,20 @@ export interface TokenAnalysis {
69
81
  cacheReadTokens: number;
70
82
  cacheWriteTokens: number;
71
83
  assistantMessageCount: number;
84
+ apiCallCount: number;
85
+ callsWithCacheRead: number;
86
+ callsWithCacheWrite: number;
72
87
  mostRecentInput: number;
73
88
  mostRecentOutput: number;
74
89
  mostRecentReasoning: number;
75
90
  mostRecentCacheRead: number;
76
91
  mostRecentCacheWrite: number;
92
+ mostRecentProviderTotalTokens?: number;
77
93
  sessionCost: number;
78
94
  mostRecentCost: number;
79
95
  allToolsCalled: string[];
80
96
  toolCallCounts: Map<string, number>;
97
+ warnings: string[];
81
98
  subagentAnalysis?: SubagentAnalysis;
82
99
  contextBreakdown?: ContextBreakdown;
83
100
  toolEstimates?: ToolSchemaEstimate[];
@@ -133,6 +150,7 @@ export interface SubagentSummary {
133
150
  apiCost: number;
134
151
  estimatedCost: number;
135
152
  assistantMessageCount: number;
153
+ apiCallCount: number;
136
154
  }
137
155
  export interface SubagentAnalysis {
138
156
  subagents: SubagentSummary[];
@@ -186,12 +204,21 @@ export interface LoadedSkill {
186
204
  totalTokens: number;
187
205
  content: string;
188
206
  }
207
+ export interface AvailableSubagent {
208
+ name: string;
209
+ description: string;
210
+ tokens: number;
211
+ }
189
212
  export interface SkillAnalysis {
190
213
  availableSkills: AvailableSkill[];
214
+ availableSubagents: AvailableSubagent[];
191
215
  loadedSkills: LoadedSkill[];
192
216
  totalAvailableTokens: number;
217
+ totalAvailableSubagentTokens: number;
193
218
  totalLoadedTokens: number;
219
+ availableSkillsContextTokens: number;
194
220
  skillToolDescriptionTokens: number;
221
+ taskToolDescriptionTokens: number;
195
222
  }
196
223
  export interface CacheEfficiency {
197
224
  cacheReadTokens: number;
@@ -222,7 +249,12 @@ export interface ExportedMessage {
222
249
  export interface ExportedMessageInfo {
223
250
  id: string;
224
251
  role: "user" | "assistant";
225
- system?: string[];
252
+ agent?: string;
253
+ model?: {
254
+ providerID?: string;
255
+ modelID?: string;
256
+ };
257
+ system?: string | string[];
226
258
  tools?: Record<string, boolean>;
227
259
  tokens?: TokenUsage;
228
260
  cost?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../tokenscope-lib/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AA8RjD,cAAc;AAEd,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../tokenscope-lib/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AA+TjD,cAAc;AAEd,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare class WarningCollector {
2
+ private readonly warnings;
3
+ private readonly seen;
4
+ add(message: string, key?: string): void;
5
+ list(): string[];
6
+ }
7
+ export declare function formatErrorMessage(error: unknown): string;
8
+ //# sourceMappingURL=warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../tokenscope-lib/warnings.ts"],"names":[],"mappings":"AAEA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAUxC,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAczD"}