MCPcopy Create free account
hub / github.com/apache/maka / decodeUsageQueryInput

Function decodeUsageQueryInput

packages/runtime-host/src/protocol/usage-pricing.ts:327–373  ·  view source on GitHub ↗
(value: unknown)

Source from the content-addressed store, hash-verified

325} as const;
326
327export function decodeUsageQueryInput(value: unknown): UsageQueryInput {
328 const input = requireRecord(value, 'usage query input');
329 if (input.kind === 'summary') {
330 const exact = requireExactRecord(input, 'usage summary input', ['kind', 'query']);
331 return { kind: 'summary', query: decodeLlmUsageQuery(exact.query) };
332 }
333 if (input.kind === 'buckets') {
334 assertOptionalExactKeys(
335 input,
336 'usage buckets input',
337 ['kind', 'query', 'groupBy'],
338 ['offset', 'limit'],
339 );
340 const groupBy = decodeUsageGroupBy(input.groupBy);
341 const page = { offset: decodeOffset(input.offset), limit: decodeLimit(input.limit) };
342 return groupBy === 'tool'
343 ? { kind: 'buckets', query: decodeToolUsageQuery(input.query), groupBy, ...page }
344 : { kind: 'buckets', query: decodeLlmUsageQuery(input.query), groupBy, ...page };
345 }
346 if (input.kind === 'logs') {
347 assertOptionalExactKeys(
348 input,
349 'usage logs input',
350 ['kind', 'source', 'query'],
351 ['offset', 'limit'],
352 );
353 const page = { offset: decodeOffset(input.offset), limit: decodeLimit(input.limit) };
354 if (input.source === 'llm') {
355 return {
356 kind: 'logs',
357 source: 'llm',
358 query: decodeLlmUsageQuery(input.query),
359 ...page,
360 };
361 }
362 if (input.source === 'tool') {
363 return {
364 kind: 'logs',
365 source: 'tool',
366 query: decodeToolUsageQuery(input.query),
367 ...page,
368 };
369 }
370 throw invalidProtocolFrame('Invalid usage log source');
371 }
372 throw invalidProtocolFrame('Invalid usage query kind');
373}
374
375export function decodeUsageQueryResult(value: unknown): UsageQueryResult {
376 const result = requireRecord(value, 'usage query result');

Callers 1

Calls 9

decodeLlmUsageQueryFunction · 0.85
decodeUsageGroupByFunction · 0.85
decodeOffsetFunction · 0.85
decodeLimitFunction · 0.85
decodeToolUsageQueryFunction · 0.85
invalidProtocolFrameFunction · 0.85
requireRecordFunction · 0.70
requireExactRecordFunction · 0.70
assertOptionalExactKeysFunction · 0.70

Tested by

no test coverage detected