MCPcopy Index your code
hub / github.com/coder/mux / extractUsage

Function extractUsage

src/node/services/devToolsMiddleware.ts:195–239  ·  view source on GitHub ↗
(
  usage: LanguageModelV3Usage | Record<string, unknown> | null | undefined
)

Source from the content-addressed store, hash-verified

193}
194
195export function extractUsage(
196 usage: LanguageModelV3Usage | Record<string, unknown> | null | undefined
197): DevToolsUsage | null {
198 if (!usage || !isRecord(usage)) {
199 return null;
200 }
201
202 const inputTokens =
203 extractInputTokens(usage.inputTokens) ?? extractOptionalTokenCount(usage, "promptTokens");
204 const outputTokens =
205 extractOutputTokens(usage.outputTokens) ?? extractOptionalTokenCount(usage, "completionTokens");
206 const explicitTotalTokens = extractOptionalTokenCount(usage, "totalTokens");
207 const inputTokenTotal = extractTokenTotal(inputTokens);
208 const outputTokenTotal = extractTokenTotal(outputTokens);
209
210 const totalTokens =
211 typeof explicitTotalTokens === "number"
212 ? explicitTotalTokens
213 : inputTokenTotal !== undefined || outputTokenTotal !== undefined
214 ? (inputTokenTotal ?? 0) + (outputTokenTotal ?? 0)
215 : undefined;
216
217 const raw = Object.prototype.hasOwnProperty.call(usage, "raw") ? usage.raw : undefined;
218
219 if (
220 inputTokens === undefined &&
221 outputTokens === undefined &&
222 typeof totalTokens !== "number" &&
223 raw === undefined
224 ) {
225 return null;
226 }
227
228 const normalizedUsage: DevToolsUsage = {
229 inputTokens,
230 outputTokens,
231 totalTokens,
232 };
233
234 if (raw !== undefined) {
235 normalizedUsage.raw = raw;
236 }
237
238 return normalizedUsage;
239}
240
241export function createDevToolsMiddleware(
242 workspaceId: string,

Callers 3

createDevToolsMiddlewareFunction · 0.85
collectChunkFunction · 0.85

Calls 5

extractInputTokensFunction · 0.85
extractOutputTokensFunction · 0.85
extractTokenTotalFunction · 0.85
isRecordFunction · 0.70

Tested by

no test coverage detected