@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.
- package/README.md +40 -12
- package/dist/tokenscope-lib/analyzer.d.ts +2 -0
- package/dist/tokenscope-lib/analyzer.d.ts.map +1 -1
- package/dist/tokenscope-lib/analyzer.js +73 -70
- package/dist/tokenscope-lib/analyzer.js.map +1 -1
- package/dist/tokenscope-lib/config.d.ts +0 -1
- package/dist/tokenscope-lib/config.d.ts.map +1 -1
- package/dist/tokenscope-lib/config.js +20 -11
- package/dist/tokenscope-lib/config.js.map +1 -1
- package/dist/tokenscope-lib/context.d.ts +4 -1
- package/dist/tokenscope-lib/context.d.ts.map +1 -1
- package/dist/tokenscope-lib/context.js +54 -44
- package/dist/tokenscope-lib/context.js.map +1 -1
- package/dist/tokenscope-lib/cost.d.ts +4 -0
- package/dist/tokenscope-lib/cost.d.ts.map +1 -1
- package/dist/tokenscope-lib/cost.js +43 -8
- package/dist/tokenscope-lib/cost.js.map +1 -1
- package/dist/tokenscope-lib/formatter.d.ts +3 -0
- package/dist/tokenscope-lib/formatter.d.ts.map +1 -1
- package/dist/tokenscope-lib/formatter.js +101 -21
- package/dist/tokenscope-lib/formatter.js.map +1 -1
- package/dist/tokenscope-lib/opencode.d.ts +4 -0
- package/dist/tokenscope-lib/opencode.d.ts.map +1 -0
- package/dist/tokenscope-lib/opencode.js +25 -0
- package/dist/tokenscope-lib/opencode.js.map +1 -0
- package/dist/tokenscope-lib/skill.d.ts +43 -5
- package/dist/tokenscope-lib/skill.d.ts.map +1 -1
- package/dist/tokenscope-lib/skill.js +435 -50
- package/dist/tokenscope-lib/skill.js.map +1 -1
- package/dist/tokenscope-lib/subagent.d.ts +3 -1
- package/dist/tokenscope-lib/subagent.d.ts.map +1 -1
- package/dist/tokenscope-lib/subagent.js +34 -27
- package/dist/tokenscope-lib/subagent.js.map +1 -1
- package/dist/tokenscope-lib/telemetry.d.ts +47 -0
- package/dist/tokenscope-lib/telemetry.d.ts.map +1 -0
- package/dist/tokenscope-lib/telemetry.js +105 -0
- package/dist/tokenscope-lib/telemetry.js.map +1 -0
- package/dist/tokenscope-lib/tokenizer.d.ts +4 -1
- package/dist/tokenscope-lib/tokenizer.d.ts.map +1 -1
- package/dist/tokenscope-lib/tokenizer.js +16 -20
- package/dist/tokenscope-lib/tokenizer.js.map +1 -1
- package/dist/tokenscope-lib/types.d.ts +34 -2
- package/dist/tokenscope-lib/types.d.ts.map +1 -1
- package/dist/tokenscope-lib/types.js.map +1 -1
- package/dist/tokenscope-lib/warnings.d.ts +8 -0
- package/dist/tokenscope-lib/warnings.d.ts.map +1 -0
- package/dist/tokenscope-lib/warnings.js +31 -0
- package/dist/tokenscope-lib/warnings.js.map +1 -0
- package/dist/tokenscope.d.ts.map +1 -1
- package/dist/tokenscope.js +135 -57
- package/dist/tokenscope.js.map +1 -1
- package/models.json +30922 -232
- 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
|
-
|
|
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;
|
|
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
|
-
|
|
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
|
|
24
|
-
const children = (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.
|
|
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
|
-
|
|
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
|
|
64
|
-
const messages = (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
|
-
|
|
69
|
-
let
|
|
70
|
-
let
|
|
73
|
+
const telemetry = summarizeTelemetry(messages);
|
|
74
|
+
let providerID = "";
|
|
75
|
+
let modelName = "unknown";
|
|
71
76
|
for (const message of messages) {
|
|
72
|
-
if (message.info.role
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
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
|
-
|
|
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(/@(
|
|
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":"AAAA,kEAAkE;
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../tokenscope-lib/subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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":"
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
99
|
+
this.transformersModule = this.importRuntimePackage("@huggingface/transformers");
|
|
98
100
|
}
|
|
99
101
|
return this.transformersModule;
|
|
100
102
|
}
|
|
101
|
-
async
|
|
102
|
-
const pkgJsonPath = path.join(VENDOR_ROOT, pkg, "package.json");
|
|
103
|
-
let data;
|
|
103
|
+
async importRuntimePackage(pkg) {
|
|
104
104
|
try {
|
|
105
|
-
|
|
105
|
+
return await import(pkg);
|
|
106
106
|
}
|
|
107
|
-
catch {
|
|
108
|
-
throw new Error(`Token analyzer
|
|
109
|
-
`
|
|
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":"AAAA,mEAAmE;
|
|
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
|
-
|
|
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":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;
|
|
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;
|
|
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"}
|