@codemieai/code 0.15.3 → 0.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +9 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +34 -9
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.js +196 -10
- package/dist/agents/plugins/claude/claude.models.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +147 -45
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
- package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/statusline-installer.js +41 -3
- package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-models.js +109 -8
- package/dist/agents/plugins/codex/codex-models.js.map +1 -1
- package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
- package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.correlation.js +150 -0
- package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.js +8 -40
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
- package/dist/agents/plugins/kimi/kimi.session.js +24 -2
- package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
- package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
- package/dist/cli/commands/analytics/cost/local-models.js +21 -0
- package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
- package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/types.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/formatter.d.ts +11 -0
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/formatter.js +28 -0
- package/dist/cli/commands/analytics/formatter.js.map +1 -1
- package/dist/cli/commands/analytics/index.d.ts.map +1 -1
- package/dist/cli/commands/analytics/index.js +70 -73
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.js +60 -14
- package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
- package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
- package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
- package/dist/cli/commands/analytics/otel-pricing.js +33 -0
- package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
- package/dist/cli/commands/analytics/report/client/app.js +279 -18
- package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
- package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
- package/dist/cli/commands/analytics/report/output-target.js +56 -0
- package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
- package/dist/cli/commands/analytics/report/report-generator.js +1 -1
- package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
- package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/session-report.js +1 -3
- package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +6 -6
- package/dist/cli/commands/analytics/report/types.d.ts +17 -1
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
- package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
- package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
- package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +8 -8
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/models.d.ts.map +1 -1
- package/dist/cli/commands/models.js +16 -3
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +16 -4
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js +42 -14
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +18 -0
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.js +58 -0
- package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +2 -2
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +27 -38
- package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.js +6 -1
- package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
- package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
- package/dist/providers/core/default-agent-hooks.js +9 -0
- package/dist/providers/core/default-agent-hooks.js.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +79 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +22 -14
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/utils/bedrock-pricing.mjs +111 -0
- package/dist/utils/cli-updater.d.ts.map +1 -1
- package/dist/utils/cli-updater.js +32 -7
- package/dist/utils/cli-updater.js.map +1 -1
- package/dist/utils/credential-crypto.d.ts +51 -0
- package/dist/utils/credential-crypto.d.ts.map +1 -0
- package/dist/utils/credential-crypto.js +96 -0
- package/dist/utils/credential-crypto.js.map +1 -0
- package/dist/utils/model-normalizer.d.ts +6 -0
- package/dist/utils/model-normalizer.d.ts.map +1 -1
- package/dist/utils/model-normalizer.js +37 -19
- package/dist/utils/model-normalizer.js.map +1 -1
- package/dist/utils/price-resolution.d.ts +42 -0
- package/dist/utils/price-resolution.d.ts.map +1 -0
- package/dist/utils/price-resolution.js +112 -0
- package/dist/utils/price-resolution.js.map +1 -0
- package/dist/utils/pricing.d.ts +65 -6
- package/dist/utils/pricing.d.ts.map +1 -1
- package/dist/utils/pricing.js +91 -117
- package/dist/utils/pricing.js.map +1 -1
- package/dist/utils/pricing.json +201 -20
- package/dist/utils/routing-headers.mjs +104 -0
- package/dist/utils/security.d.ts +0 -32
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +20 -102
- package/dist/utils/security.js.map +1 -1
- package/package.json +4 -2
- package/scripts/bundle-statusline.mjs +37 -0
- package/scripts/copy-plugins.js +19 -2
- package/src/utils/tips.json +9 -9
- package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
- package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
- package/dist/cli/commands/analytics/exporter.d.ts +0 -20
- package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
- package/dist/cli/commands/analytics/exporter.js +0 -91
- package/dist/cli/commands/analytics/exporter.js.map +0 -1
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
import { readFile } from 'node:fs/promises';
|
|
11
11
|
import { INTERNAL_PARSED_FAMILY } from '../data-loader.js';
|
|
12
12
|
import { MAX_SERIES_POINTS } from './types.js';
|
|
13
|
-
import { emptyUsage, addUsage, costBreakdown } from './cost-calculator.js';
|
|
14
|
-
import { lookupPrice } from '../../../../utils/pricing.js';
|
|
15
|
-
import { gatherUsageDeduped, gatherDedupedUsageRecords, sumUsageRecords, readCodexSubagentUsage } from './usage-readers.js';
|
|
13
|
+
import { emptyUsage, addUsage, costBreakdown, costForUsage } from './cost-calculator.js';
|
|
14
|
+
import { lookupPrice, resolvePrice } from '../../../../utils/pricing.js';
|
|
15
|
+
import { gatherUsageDeduped, gatherDedupedUsageRecords, sumUsageRecords, readCodexSubagentUsage, extractModelIdentityTimeline } from './usage-readers.js';
|
|
16
16
|
import { extractDispatchResult } from './dispatch-extractor.js';
|
|
17
17
|
import { enrichClaudeDispatchCosts } from './claude-dispatch-allocation.js';
|
|
18
18
|
import { enrichSkillDispatchCost } from './dispatch-allocation.js';
|
|
@@ -22,6 +22,7 @@ import { AgentRegistry } from '../../../../agents/registry.js';
|
|
|
22
22
|
import { ClaudeSessionAdapter } from '../../../../agents/plugins/claude/claude.session.js';
|
|
23
23
|
import { ClaudePluginMetadata } from '../../../../agents/plugins/claude/claude.plugin.js';
|
|
24
24
|
import { isCodexFamilyAgent } from './codex-agent.js';
|
|
25
|
+
import { isLocalModel } from './local-models.js';
|
|
25
26
|
import { logger } from '../../../../utils/logger.js';
|
|
26
27
|
/**
|
|
27
28
|
* Resolve the SessionAdapter for an agent. Most agents expose one via their registry plugin
|
|
@@ -84,27 +85,52 @@ async function parseOne(raw, deps) {
|
|
|
84
85
|
?? (filePath ? await deps.parseNative(agentName, filePath, raw.sessionId) : null);
|
|
85
86
|
return {
|
|
86
87
|
sessionId: raw.sessionId, agentName, hadLog, filePath, parsed, startTime: raw.startEvent?.data?.startTime ?? 0,
|
|
88
|
+
...(raw.startEvent?.data?.provider && { provider: raw.startEvent.data.provider }),
|
|
87
89
|
...(capture && Number.isFinite(capture.capturedAt) && { capturedAt: capture.capturedAt }),
|
|
88
90
|
...(capture && Number.isFinite(raw.startEvent?.data?.startTime) && { observedStart: raw.startEvent.data.startTime }),
|
|
89
91
|
...(capture && Number.isFinite(raw.endEvent?.data?.endTime) && { observedEnd: raw.endEvent.data.endTime }),
|
|
90
92
|
};
|
|
91
93
|
}
|
|
92
|
-
/**
|
|
93
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Phase 3: price an already-gathered (deduped) per-model usage map for one session.
|
|
96
|
+
* `provider` is the session's launch provider: a model it serves locally (see isLocalModel)
|
|
97
|
+
* is priced at $0 and reported as local instead of unpriced.
|
|
98
|
+
*/
|
|
99
|
+
function priceUsage(sessionId, hadLog, usageByModel, provider) {
|
|
94
100
|
const perModel = [];
|
|
95
101
|
const unpriced = [];
|
|
102
|
+
const estimated = [];
|
|
103
|
+
const local = [];
|
|
96
104
|
let sessionTokens = emptyUsage();
|
|
97
105
|
let sessionCost = 0;
|
|
98
106
|
let cacheReadCostUSD = 0;
|
|
99
107
|
for (const [rawModel, usage] of usageByModel) {
|
|
100
108
|
const model = normalizeModelName(rawModel);
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
if (isLocalModel(provider, rawModel)) {
|
|
110
|
+
local.push(model);
|
|
111
|
+
perModel.push({ model, tokens: usage, costUSD: 0, unpriced: false, local: true });
|
|
112
|
+
sessionTokens = addUsage(sessionTokens, usage);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// resolvePrice() takes the raw (region-qualified) id, not the display `model` above — it
|
|
116
|
+
// does its own normalizing internally, but also needs the raw form to detect Amazon
|
|
117
|
+
// Bedrock's regional-endpoint pricing premium before that qualifier is stripped.
|
|
118
|
+
const resolution = resolvePrice(rawModel);
|
|
119
|
+
const breakdown = resolution ? costBreakdown(usage, resolution.price) : null;
|
|
103
120
|
const costUSD = breakdown ? breakdown.total : 0;
|
|
104
|
-
if (!
|
|
121
|
+
if (!resolution) {
|
|
105
122
|
unpriced.push(model);
|
|
106
123
|
}
|
|
107
|
-
|
|
124
|
+
else if (resolution.estimated) {
|
|
125
|
+
estimated.push(model);
|
|
126
|
+
}
|
|
127
|
+
perModel.push({
|
|
128
|
+
model,
|
|
129
|
+
tokens: usage,
|
|
130
|
+
costUSD,
|
|
131
|
+
unpriced: !resolution,
|
|
132
|
+
...(resolution?.estimated && { estimated: true }),
|
|
133
|
+
});
|
|
108
134
|
sessionTokens = addUsage(sessionTokens, usage);
|
|
109
135
|
sessionCost += costUSD;
|
|
110
136
|
cacheReadCostUSD += breakdown ? breakdown.cacheRead : 0;
|
|
@@ -115,6 +141,8 @@ function priceUsage(sessionId, hadLog, usageByModel) {
|
|
|
115
141
|
return {
|
|
116
142
|
cost: { sessionId, tokens: sessionTokens, costUSD: sessionCost, cacheReadCostUSD, perModel, priced: perModel.length > 0, hadLog },
|
|
117
143
|
unpriced,
|
|
144
|
+
estimated,
|
|
145
|
+
local,
|
|
118
146
|
};
|
|
119
147
|
}
|
|
120
148
|
/** Evenly downsample a cumulative series to ≤ MAX_SERIES_POINTS, always keeping the first and last point. */
|
|
@@ -145,13 +173,108 @@ export function buildCostSeries(records) {
|
|
|
145
173
|
let cumCost = 0;
|
|
146
174
|
let cumTokens = 0;
|
|
147
175
|
records.forEach((r, i) => {
|
|
148
|
-
|
|
176
|
+
// r.model is the raw (region-qualified, when Bedrock) id — lookupPrice() normalizes it
|
|
177
|
+
// internally, but also needs the raw form to detect a Bedrock regional-endpoint premium.
|
|
178
|
+
const price = lookupPrice(r.model);
|
|
149
179
|
cumCost += price ? costBreakdown(r.usage, price).total : 0;
|
|
150
180
|
cumTokens += r.usage.total;
|
|
151
181
|
points.push({ t: useTs ? r.ts : i + 1, cost: cumCost, tokens: cumTokens });
|
|
152
182
|
});
|
|
153
183
|
return downsample(points);
|
|
154
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* The literal model/router alias active at `ts`, per `timeline`'s own chronological entries —
|
|
187
|
+
* the last entry with `ts <= target`, since a later `/model` switch always wins from the
|
|
188
|
+
* moment it's recorded. `null`/no match (target before the first entry, or ts unavailable)
|
|
189
|
+
* yields `undefined` rather than guessing.
|
|
190
|
+
*/
|
|
191
|
+
function resolveAliasAt(timeline, target) {
|
|
192
|
+
if (!timeline || target == null)
|
|
193
|
+
return undefined;
|
|
194
|
+
let result;
|
|
195
|
+
for (const entry of timeline) {
|
|
196
|
+
if (entry.ts > target)
|
|
197
|
+
break;
|
|
198
|
+
result = entry.modelId;
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Build a per-turn model-usage timeline from ordered usage records.
|
|
204
|
+
* Each point captures the actual model, per-turn cost, and token count.
|
|
205
|
+
* Returns [] when there are no records.
|
|
206
|
+
*/
|
|
207
|
+
export function buildModelTimeline(records, identityTimeline = null) {
|
|
208
|
+
if (!records.length)
|
|
209
|
+
return [];
|
|
210
|
+
const useTs = records.every((r) => r.ts != null);
|
|
211
|
+
return records.map((r, i) => {
|
|
212
|
+
const model = normalizeModelName(r.model);
|
|
213
|
+
// lookupPrice() takes the raw id (r.model) — see buildCostSeries()'s own comment above.
|
|
214
|
+
const price = lookupPrice(r.model);
|
|
215
|
+
const costUSD = price ? costBreakdown(r.usage, price).total : 0;
|
|
216
|
+
const point = {
|
|
217
|
+
t: useTs ? r.ts : i + 1,
|
|
218
|
+
model,
|
|
219
|
+
costUSD: Math.round(costUSD * 1e8) / 1e8,
|
|
220
|
+
tokens: r.usage.total,
|
|
221
|
+
};
|
|
222
|
+
if (r.requestedModel != null)
|
|
223
|
+
point.requestedModel = r.requestedModel;
|
|
224
|
+
if (r.routingFamily != null) {
|
|
225
|
+
point.routingFamily = r.routingFamily;
|
|
226
|
+
const alias = resolveAliasAt(identityTimeline, r.ts);
|
|
227
|
+
if (alias != null)
|
|
228
|
+
point.requestedAlias = alias;
|
|
229
|
+
}
|
|
230
|
+
if (r.routingTier != null)
|
|
231
|
+
point.routingTier = r.routingTier;
|
|
232
|
+
if (r.routingTierRaw != null)
|
|
233
|
+
point.routingTierRaw = r.routingTierRaw;
|
|
234
|
+
if (r.routedModel != null)
|
|
235
|
+
point.routedModel = r.routedModel;
|
|
236
|
+
if (r.classifierModel != null)
|
|
237
|
+
point.classifierModel = r.classifierModel;
|
|
238
|
+
if (r.routerType != null)
|
|
239
|
+
point.routerType = r.routerType;
|
|
240
|
+
if (r.routingSource != null)
|
|
241
|
+
point.routingSource = r.routingSource;
|
|
242
|
+
if (r.decisionSource != null)
|
|
243
|
+
point.decisionSource = r.decisionSource;
|
|
244
|
+
// Counterfactual cost: reprice this turn's actual usage at the backend-reported
|
|
245
|
+
// counterfactual model's rate (x-codemie-routing-counterfactual-model — see
|
|
246
|
+
// routing-headers.mjs) to estimate what this turn would have cost unrouted. Backend-computed
|
|
247
|
+
// and family-agnostic, unlike the old `requestedModel`-based estimate: on non-switchyard
|
|
248
|
+
// families `requestedModel` can be a router/tier ALIAS ('claude-smart-router') rather than a
|
|
249
|
+
// priceable model, so the backend now names the concrete model itself.
|
|
250
|
+
if (r.counterfactualModel != null) {
|
|
251
|
+
point.counterfactualModel = r.counterfactualModel;
|
|
252
|
+
const counterfactualPrice = lookupPrice(r.counterfactualModel);
|
|
253
|
+
if (counterfactualPrice) {
|
|
254
|
+
const estimatedMaxCostUSD = costForUsage(r.usage, counterfactualPrice);
|
|
255
|
+
point.estimatedMaxCostUSD = Math.round(estimatedMaxCostUSD * 1e8) / 1e8;
|
|
256
|
+
point.potentialSavingsUSD = Math.round(Math.max(0, estimatedMaxCostUSD - costUSD) * 1e8) / 1e8;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return point;
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* A turn counts as "routed" for the Routed % metric when the model that actually answered it
|
|
264
|
+
* differs from the backend's counterfactual — i.e. routing measurably changed which model was
|
|
265
|
+
* used, not merely that a routing decision was recorded. `routedModel` (the router's own
|
|
266
|
+
* decision) is preferred over `model` (the billed model) when both are present, since some
|
|
267
|
+
* routing families report `model` as a router/tier alias rather than the concrete model.
|
|
268
|
+
* Normalizes both sides before comparing so formatting differences (e.g. Bedrock region
|
|
269
|
+
* qualifiers) don't produce a false positive. A turn with no `counterfactualModel` reported
|
|
270
|
+
* cannot be classified as routed under this definition.
|
|
271
|
+
*/
|
|
272
|
+
export function isRoutedTurn(point) {
|
|
273
|
+
if (point.counterfactualModel == null)
|
|
274
|
+
return false;
|
|
275
|
+
const actual = normalizeModelName(point.routedModel ?? point.model);
|
|
276
|
+
return actual !== normalizeModelName(point.counterfactualModel);
|
|
277
|
+
}
|
|
155
278
|
/** Run async tasks with bounded concurrency (cap open file descriptors). */
|
|
156
279
|
async function mapWithConcurrency(items, limit, fn) {
|
|
157
280
|
const out = new Array(items.length);
|
|
@@ -199,8 +322,7 @@ function enrichDispatchCosts(dispatches, parsed, agentName, sessionRecords) {
|
|
|
199
322
|
let totalTokens = emptyUsage();
|
|
200
323
|
let priced = false;
|
|
201
324
|
for (const [rawModel, usage] of usageByModel) {
|
|
202
|
-
const
|
|
203
|
-
const price = lookupPrice(model);
|
|
325
|
+
const price = lookupPrice(rawModel);
|
|
204
326
|
if (price) {
|
|
205
327
|
totalCost += costBreakdown(usage, price).total;
|
|
206
328
|
priced = true;
|
|
@@ -251,6 +373,8 @@ export async function enrichCosts(sessions, deps = realDeps) {
|
|
|
251
373
|
const seen = new Set();
|
|
252
374
|
const index = new Map();
|
|
253
375
|
const unpriced = new Set();
|
|
376
|
+
const estimated = new Set();
|
|
377
|
+
const local = new Set();
|
|
254
378
|
let totalCostUSD = 0;
|
|
255
379
|
let pricedSessions = 0;
|
|
256
380
|
for (const entry of ordered) {
|
|
@@ -289,7 +413,7 @@ export async function enrichCosts(sessions, deps = realDeps) {
|
|
|
289
413
|
series = [];
|
|
290
414
|
records = [];
|
|
291
415
|
}
|
|
292
|
-
const { cost, unpriced: u } = priceUsage(entry.sessionId, entry.hadLog, usageByModel);
|
|
416
|
+
const { cost, unpriced: u, estimated: est, local: loc } = priceUsage(entry.sessionId, entry.hadLog, usageByModel, entry.provider);
|
|
293
417
|
if (entry.capturedAt !== undefined)
|
|
294
418
|
cost.capturedAt = entry.capturedAt;
|
|
295
419
|
if (entry.observedStart !== undefined)
|
|
@@ -308,6 +432,37 @@ export async function enrichCosts(sessions, deps = realDeps) {
|
|
|
308
432
|
if (series.length) {
|
|
309
433
|
cost.costSeries = series;
|
|
310
434
|
}
|
|
435
|
+
if (records.length) {
|
|
436
|
+
const identityTimeline = entry.parsed ? extractModelIdentityTimeline(entry.parsed) : null;
|
|
437
|
+
const timeline = buildModelTimeline(records, identityTimeline);
|
|
438
|
+
if (timeline.length) {
|
|
439
|
+
cost.modelTimeline = timeline;
|
|
440
|
+
const routedCount = timeline.filter(isRoutedTurn).length;
|
|
441
|
+
cost.routedTurnsPct = Math.round((routedCount / timeline.length) * 100);
|
|
442
|
+
}
|
|
443
|
+
// Accumulate classifier (routing LLM) cost from per-turn metadata.
|
|
444
|
+
let classifierCostUSD = 0;
|
|
445
|
+
// A session is only "cost known" if every routed turn reported its classifier cost.
|
|
446
|
+
// One unreported turn makes the session total an understatement, not a measurement.
|
|
447
|
+
let routedTurns = 0;
|
|
448
|
+
let costKnownTurns = 0;
|
|
449
|
+
for (const r of records) {
|
|
450
|
+
classifierCostUSD += r.classifierCostUSD ?? 0;
|
|
451
|
+
if (r.routingFamily != null) {
|
|
452
|
+
routedTurns++;
|
|
453
|
+
if (r.routingCostKnown)
|
|
454
|
+
costKnownTurns++;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
if (routedTurns > 0) {
|
|
458
|
+
cost.routingCostKnown = costKnownTurns === routedTurns;
|
|
459
|
+
}
|
|
460
|
+
if (classifierCostUSD > 0) {
|
|
461
|
+
cost.classifierCostUSD = Math.round(classifierCostUSD * 1e8) / 1e8;
|
|
462
|
+
// Include routing cost in the session total.
|
|
463
|
+
cost.costUSD = Math.round((cost.costUSD + classifierCostUSD) * 1e8) / 1e8;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
311
466
|
if (entry.parsed) {
|
|
312
467
|
// Usage provenance from the adapter: lets the report distinguish "cost is genuinely
|
|
313
468
|
// zero" from "cost is unmeasurable", and surface a provider's own billing unit.
|
|
@@ -341,6 +496,8 @@ export async function enrichCosts(sessions, deps = realDeps) {
|
|
|
341
496
|
}
|
|
342
497
|
index.set(cost.sessionId, cost);
|
|
343
498
|
u.forEach((m) => unpriced.add(m));
|
|
499
|
+
est.forEach((m) => estimated.add(m));
|
|
500
|
+
loc.forEach((m) => local.add(m));
|
|
344
501
|
if (cost.priced) {
|
|
345
502
|
totalCostUSD += cost.costUSD;
|
|
346
503
|
pricedSessions += 1;
|
|
@@ -348,7 +505,7 @@ export async function enrichCosts(sessions, deps = realDeps) {
|
|
|
348
505
|
}
|
|
349
506
|
return {
|
|
350
507
|
index,
|
|
351
|
-
summary: { totalCostUSD, pricedSessions, totalSessions: sessions.length, unpricedModels: [...unpriced] },
|
|
508
|
+
summary: { totalCostUSD, pricedSessions, totalSessions: sessions.length, unpricedModels: [...unpriced], estimatedModels: [...estimated], localModels: [...local] },
|
|
352
509
|
};
|
|
353
510
|
}
|
|
354
511
|
//# sourceMappingURL=cost-enricher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-enricher.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/cost-enricher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cost-enricher.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/cost-enricher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local (self-hosted, free) model detection for report-time cost.
|
|
3
|
+
*
|
|
4
|
+
* A session launched against the `ollama` provider runs its model on the user's own
|
|
5
|
+
* hardware, so there is no per-token bill: the report prices it at $0 and lists it as
|
|
6
|
+
* local rather than unpriced. Ollama's hosted "cloud" models are the exception — they
|
|
7
|
+
* are tagged `<name>:<size>-cloud` or `<name>:cloud` and are billed by Ollama, so they
|
|
8
|
+
* stay unpriced. This `:tag` handling is deliberately kept out of the general price
|
|
9
|
+
* resolver (price-resolution.ts), which only ever sees provider-agnostic model ids.
|
|
10
|
+
*/
|
|
11
|
+
/** True when `model` is an Ollama cloud-hosted tag (`…-cloud` or `…:cloud`). */
|
|
12
|
+
export declare function isOllamaCloudTag(model: string): boolean;
|
|
13
|
+
/** True when `model`, served by `provider`, runs locally and therefore costs $0. */
|
|
14
|
+
export declare function isLocalModel(provider: string | undefined, model: string): boolean;
|
|
15
|
+
//# sourceMappingURL=local-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-models.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/local-models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local (self-hosted, free) model detection for report-time cost.
|
|
3
|
+
*
|
|
4
|
+
* A session launched against the `ollama` provider runs its model on the user's own
|
|
5
|
+
* hardware, so there is no per-token bill: the report prices it at $0 and lists it as
|
|
6
|
+
* local rather than unpriced. Ollama's hosted "cloud" models are the exception — they
|
|
7
|
+
* are tagged `<name>:<size>-cloud` or `<name>:cloud` and are billed by Ollama, so they
|
|
8
|
+
* stay unpriced. This `:tag` handling is deliberately kept out of the general price
|
|
9
|
+
* resolver (price-resolution.ts), which only ever sees provider-agnostic model ids.
|
|
10
|
+
*/
|
|
11
|
+
const OLLAMA_PROVIDER = 'ollama';
|
|
12
|
+
const OLLAMA_CLOUD_TAG_PATTERN = /(?:-cloud|:cloud)$/i;
|
|
13
|
+
/** True when `model` is an Ollama cloud-hosted tag (`…-cloud` or `…:cloud`). */
|
|
14
|
+
export function isOllamaCloudTag(model) {
|
|
15
|
+
return OLLAMA_CLOUD_TAG_PATTERN.test(model);
|
|
16
|
+
}
|
|
17
|
+
/** True when `model`, served by `provider`, runs locally and therefore costs $0. */
|
|
18
|
+
export function isLocalModel(provider, model) {
|
|
19
|
+
return provider?.toLowerCase() === OLLAMA_PROVIDER && !isOllamaCloudTag(model);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=local-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-models.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/local-models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAEvD,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,QAA4B,EAAE,KAAa;IACtE,OAAO,QAAQ,EAAE,WAAW,EAAE,KAAK,eAAe,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -19,6 +19,10 @@ export interface ModelCost {
|
|
|
19
19
|
tokens: TokenUsage;
|
|
20
20
|
costUSD: number;
|
|
21
21
|
unpriced: boolean;
|
|
22
|
+
/** True when the matched pricing.json row is a tier estimate, not a confirmed published price. */
|
|
23
|
+
estimated?: boolean;
|
|
24
|
+
/** True when the model runs locally (e.g. a non-cloud Ollama model) — priced at $0, not unpriced. */
|
|
25
|
+
local?: boolean;
|
|
22
26
|
}
|
|
23
27
|
/** One cumulative point in a session's token & cost growth series. */
|
|
24
28
|
export interface CostSeriesPoint {
|
|
@@ -26,6 +30,44 @@ export interface CostSeriesPoint {
|
|
|
26
30
|
cost: number;
|
|
27
31
|
tokens: number;
|
|
28
32
|
}
|
|
33
|
+
/** One point in the per-turn model/tier/decision timeline shown in the session modal. */
|
|
34
|
+
export interface ModelTimelinePoint {
|
|
35
|
+
t: number;
|
|
36
|
+
model: string;
|
|
37
|
+
costUSD: number;
|
|
38
|
+
tokens: number;
|
|
39
|
+
requestedModel?: string;
|
|
40
|
+
/**
|
|
41
|
+
* The literal alias/id the `model` param actually held for this turn — from Claude Code's own
|
|
42
|
+
* `type: 'attachment'` model-identity markers (see usage-readers.ts's
|
|
43
|
+
* `extractModelIdentityTimeline`), resolved to whichever marker was most recent at this turn's
|
|
44
|
+
* timestamp. Unlike `requestedModel` (the header's capable-tier ceiling for Switchyard), this
|
|
45
|
+
* is exact even for a custom Switchyard variant name — and stays correct turn-by-turn across
|
|
46
|
+
* an in-session `/model` switch. Absent when this agent's log has no such marker.
|
|
47
|
+
*/
|
|
48
|
+
requestedAlias?: string;
|
|
49
|
+
routingFamily?: string;
|
|
50
|
+
routingTier?: 'simple' | 'middle' | 'complex' | 'reasoning' | string;
|
|
51
|
+
routingTierRaw?: string;
|
|
52
|
+
routedModel?: string;
|
|
53
|
+
classifierModel?: string;
|
|
54
|
+
routerType?: string;
|
|
55
|
+
routingSource?: 'stage_router' | 'judge' | string;
|
|
56
|
+
decisionSource?: string;
|
|
57
|
+
/** Backend-reported model to reprice this turn's usage at for the savings estimate below
|
|
58
|
+
* (`x-codemie-routing-counterfactual-model`). Unlike `requestedModel`, which on some routing
|
|
59
|
+
* families is a router/tier alias (e.g. `claude-smart-router`), this is always a priceable
|
|
60
|
+
* model. Absent when the backend reported no counterfactual for this turn. */
|
|
61
|
+
counterfactualModel?: string;
|
|
62
|
+
/**
|
|
63
|
+
* What this turn would have cost had `counterfactualModel` answered it instead, repricing
|
|
64
|
+
* this turn's actual token usage at that model's rate — see cost-enricher.ts's
|
|
65
|
+
* `buildModelTimeline`. Absent when `counterfactualModel` is absent, or has no pricing entry.
|
|
66
|
+
*/
|
|
67
|
+
estimatedMaxCostUSD?: number;
|
|
68
|
+
/** max(0, estimatedMaxCostUSD - costUSD). Absent under the same condition as estimatedMaxCostUSD. */
|
|
69
|
+
potentialSavingsUSD?: number;
|
|
70
|
+
}
|
|
29
71
|
/** Max points kept per session series — downsample guard so the embedded payload stays small. */
|
|
30
72
|
export declare const MAX_SERIES_POINTS = 40;
|
|
31
73
|
/** One dispatched invocation (agent/skill/command) on a session's activity timeline. */
|
|
@@ -80,6 +122,7 @@ export interface SessionCost {
|
|
|
80
122
|
costUSD: number;
|
|
81
123
|
cacheReadCostUSD?: number;
|
|
82
124
|
costSeries?: CostSeriesPoint[];
|
|
125
|
+
modelTimeline?: ModelTimelinePoint[];
|
|
83
126
|
dispatches?: DispatchEvent[];
|
|
84
127
|
/** True only when dispatch extraction retained the full invocation list. Legacy lists may be capped. */
|
|
85
128
|
dispatchesComplete?: boolean;
|
|
@@ -108,6 +151,21 @@ export interface SessionCost {
|
|
|
108
151
|
* to show" — those two must always agree.
|
|
109
152
|
*/
|
|
110
153
|
agentSessionFile?: string;
|
|
154
|
+
classifierCostUSD?: number;
|
|
155
|
+
/**
|
|
156
|
+
* True when every routed turn in this session reported its classifier cost. False when any
|
|
157
|
+
* routed turn reported none, making `classifierCostUSD` an understatement rather than a
|
|
158
|
+
* measurement. Absent when the session had no routed turns at all.
|
|
159
|
+
*/
|
|
160
|
+
routingCostKnown?: boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Percentage (0-100, rounded) of this session's turns where routing measurably changed the
|
|
163
|
+
* outcome — the turn's actual model (`routedModel`, falling back to `model`) differs from its
|
|
164
|
+
* backend-reported `counterfactualModel` (see `ModelTimelinePoint`). A turn with no
|
|
165
|
+
* `counterfactualModel` reported does not count as routed under this definition. Absent when
|
|
166
|
+
* the session has no modelTimeline data at all.
|
|
167
|
+
*/
|
|
168
|
+
routedTurnsPct?: number;
|
|
111
169
|
/**
|
|
112
170
|
* Billing units the provider itself charges in, when they differ from tokens.
|
|
113
171
|
* Currently only GitHub Copilot CLI ("premium requests"), whose bill does not track
|
|
@@ -138,5 +196,7 @@ export interface CostSummary {
|
|
|
138
196
|
pricedSessions: number;
|
|
139
197
|
totalSessions: number;
|
|
140
198
|
unpricedModels: string[];
|
|
199
|
+
estimatedModels: string[];
|
|
200
|
+
localModels: string[];
|
|
141
201
|
}
|
|
142
202
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyEH,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAyCpC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC"}
|
|
@@ -8,10 +8,16 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ParsedSession } from '../../../../agents/core/session/BaseSessionAdapter.js';
|
|
10
10
|
import type { TokenUsage } from './types.js';
|
|
11
|
+
import { type RoutingDecision } from '../../../../utils/routing-headers.mjs';
|
|
11
12
|
/** model -> usage */
|
|
12
13
|
type UsageMap = Map<string, TokenUsage>;
|
|
13
|
-
/**
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* One assistant API response's usage, plus a dedup key for cross-session de-duplication.
|
|
16
|
+
* Routing fields (see {@link RoutingDecision}) are parsed once by {@link parseRoutingHeaders}
|
|
17
|
+
* and merged in — this interface adds only the per-message concerns routing parsing knows
|
|
18
|
+
* nothing about.
|
|
19
|
+
*/
|
|
20
|
+
export interface UsageRecord extends RoutingDecision {
|
|
15
21
|
/** `${message.id}::${requestId}` — null when neither is present (cannot dedupe ⇒ always counted). */
|
|
16
22
|
key: string | null;
|
|
17
23
|
/** Message epoch ms (for per-turn series); null when absent/unparseable. */
|
|
@@ -32,6 +38,23 @@ export interface UsageRecord {
|
|
|
32
38
|
* concatenation order (main transcript first, then sub-agent files in discovery order).
|
|
33
39
|
*/
|
|
34
40
|
export declare function extractClaudeUsageRecords(parsed: ParsedSession): UsageRecord[];
|
|
41
|
+
/** One literal model/router alias becoming active at a point in time (see {@link extractModelIdentityTimeline}). */
|
|
42
|
+
export interface ModelIdentityEvent {
|
|
43
|
+
ts: number;
|
|
44
|
+
modelId: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Every model switch this session recorded, in chronological order: Claude Code stamps a
|
|
48
|
+
* `type: 'attachment'` line (`attachment.type === 'model'`) with the exact literal alias/id the
|
|
49
|
+
* `model` param held, once at session start and again on every in-session `/model` switch (see
|
|
50
|
+
* `attachment.identity.modelId`). This is the ONE signal that carries the literal alias — even a
|
|
51
|
+
* custom Switchyard variant name that never appears anywhere else — unlike RoutingDecision's own
|
|
52
|
+
* `requestedModel` (from `x-codemie-requested-model`), which for Switchyard reports only the
|
|
53
|
+
* capable-tier CEILING. Sorted ascending so a caller can resolve "which alias was active for a
|
|
54
|
+
* turn at time T" by taking the last entry with `ts <= T` (see cost-enricher.ts's
|
|
55
|
+
* `resolveAliasAt`). Returns null when the session has none (e.g. not this agent's log format).
|
|
56
|
+
*/
|
|
57
|
+
export declare function extractModelIdentityTimeline(parsed: ParsedSession): ModelIdentityEvent[] | null;
|
|
35
58
|
/**
|
|
36
59
|
* Per-turn usage from Codex `token_count` events (`last_token_usage`), correlated with the
|
|
37
60
|
* most recent `turn_context.model`. Sub-agent rollouts attached to `parsed.subagents` are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-readers.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-readers.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAuB,KAAK,eAAe,EAA4B,MAAM,6BAA6B,CAAC;AAIlH,qBAAqB;AACrB,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAmDxC;;;;;GAKG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,qGAAqG;IACrG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAqED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CA6D9E;AAgBD,oHAAoH;AACpH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,aAAa,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAiB/F;AAyMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAuB7E;AAmCD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAYtE;AAoDD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAoB5E;AAqGD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAiD1E;AAeD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,CAqBnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAsCxG;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,EAAE,CAmBpH;AAED,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,QAAQ,CAMhE"}
|