@qverisai/mcp 0.5.0 → 0.7.0

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.
@@ -0,0 +1,395 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ export const DEFAULT_DETAIL_LIMIT = 10;
4
+ export const MAX_DETAIL_LIMIT = 50;
5
+ export const DEFAULT_PAGE_SIZE = 500;
6
+ export const MAX_SUMMARY_ROWS = 5000;
7
+ export const MAX_SEARCH_SCAN_ROWS = 2000;
8
+ export const MAX_EXPORT_ROWS = 50000;
9
+ export function unwrapEnvelope(response) {
10
+ if (response &&
11
+ typeof response === 'object' &&
12
+ 'status' in response &&
13
+ 'data' in response) {
14
+ const envelope = response;
15
+ if (envelope.status === 'failure') {
16
+ throw new Error(envelope.message || 'QVeris API request failed');
17
+ }
18
+ return envelope.data;
19
+ }
20
+ return response;
21
+ }
22
+ export function normalizeMode(mode) {
23
+ if (mode === 'search')
24
+ return 'search';
25
+ if (mode === 'export_file' || mode === 'export-file')
26
+ return 'export_file';
27
+ return 'summary';
28
+ }
29
+ export function clampLimit(limit) {
30
+ if (!Number.isFinite(limit) || !limit || limit <= 0)
31
+ return DEFAULT_DETAIL_LIMIT;
32
+ return Math.min(Math.floor(limit), MAX_DETAIL_LIMIT);
33
+ }
34
+ export function resolveDateRange(input) {
35
+ return {
36
+ start_date: input.start_date || isoDate(new Date(Date.now() - 24 * 60 * 60 * 1000)),
37
+ end_date: input.end_date || isoDate(new Date()),
38
+ };
39
+ }
40
+ export function chooseBucket(input) {
41
+ if (input.bucket === 'hour' || input.bucket === 'day' || input.bucket === 'week')
42
+ return input.bucket;
43
+ const { start_date, end_date } = resolveDateRange(input);
44
+ const start = Date.parse(`${start_date}T00:00:00Z`);
45
+ const end = Date.parse(`${end_date}T23:59:59Z`);
46
+ const days = Number.isFinite(start) && Number.isFinite(end)
47
+ ? Math.max(1, Math.ceil((end - start) / 86400000))
48
+ : 1;
49
+ if (days <= 2)
50
+ return 'hour';
51
+ if (days <= 60)
52
+ return 'day';
53
+ return 'week';
54
+ }
55
+ export function getUsageItems(response) {
56
+ return Array.isArray(response.items) ? response.items : [];
57
+ }
58
+ export function getLedgerItems(response) {
59
+ return Array.isArray(response.items) ? response.items : [];
60
+ }
61
+ export function usageAmount(row) {
62
+ return firstNumber(row.actual_amount_credits, row.settled_amount_credits, numberFromRecord(row.settlement_result, 'settled_amount_credits'), row.requested_amount_credits, row.pre_settlement_amount_credits);
63
+ }
64
+ export function ledgerAmount(row) {
65
+ return toNumber(row.amount_credits);
66
+ }
67
+ export function matchesUsage(row, input) {
68
+ return matchesAmount(usageAmount(row), input) &&
69
+ matchesField(row.execution_id, input.execution_id) &&
70
+ matchesField(row.search_id, input.search_id) &&
71
+ matchesField(row.event_type, input.event_type) &&
72
+ matchesField(row.kind, input.kind) &&
73
+ matchesField(row.charge_outcome, input.charge_outcome) &&
74
+ matchesBoolean(row.success, input.success);
75
+ }
76
+ export function matchesLedger(row, input) {
77
+ const amount = ledgerAmount(row);
78
+ const direction = input.direction || 'any';
79
+ if (direction === 'consume' && !(amount < 0))
80
+ return false;
81
+ if (direction === 'grant' && !(amount > 0))
82
+ return false;
83
+ return matchesAmount(Math.abs(amount), input) &&
84
+ matchesField(row.entry_type, input.entry_type);
85
+ }
86
+ export function pickUsage(row) {
87
+ return {
88
+ created_at: row.created_at,
89
+ event_type: row.event_type,
90
+ success: row.success,
91
+ charge_outcome: row.charge_outcome || null,
92
+ target: row.tool_id || row.model || row.query || row.display_target || row.source_ref_id || '',
93
+ execution_id: row.execution_id || null,
94
+ search_id: row.search_id || null,
95
+ billing_summary: row.billing_summary || stringFromRecord(row.pre_settlement_bill, 'summary'),
96
+ requested_amount_credits: row.requested_amount_credits ?? row.pre_settlement_amount_credits ?? null,
97
+ actual_amount_credits: usageAmount(row),
98
+ credits_ledger_entry_id: row.credits_ledger_entry_id || null,
99
+ error_message: row.error_message || null,
100
+ };
101
+ }
102
+ export function pickLedger(row) {
103
+ return {
104
+ created_at: row.created_at,
105
+ entry_type: row.entry_type,
106
+ amount_credits: ledgerAmount(row),
107
+ source_ref_type: row.source_ref_type || null,
108
+ source_ref_id: row.source_ref_id || null,
109
+ description: row.description || '',
110
+ billing_summary: stringFromRecord(row.pre_settlement_bill, 'summary'),
111
+ settled_amount_credits: numberFromRecord(row.settlement_result, 'settled_amount_credits'),
112
+ bucket_deductions: arrayFromRecord(row.settlement_result, 'bucket_deductions'),
113
+ };
114
+ }
115
+ export function summarizeUsage(rows, input, scannedRecords, total, truncated) {
116
+ const range = resolveDateRange(input);
117
+ const bucket = chooseBucket(input);
118
+ const chargeOutcomes = {};
119
+ const buckets = {};
120
+ let succeeded = 0;
121
+ let failed = 0;
122
+ let requested = 0;
123
+ let actual = 0;
124
+ for (const row of rows) {
125
+ if (row.success)
126
+ succeeded += 1;
127
+ else
128
+ failed += 1;
129
+ const outcome = row.charge_outcome || 'unknown';
130
+ chargeOutcomes[outcome] = (chargeOutcomes[outcome] || 0) + 1;
131
+ requested += firstNumber(row.requested_amount_credits, row.pre_settlement_amount_credits);
132
+ actual += usageAmount(row);
133
+ const key = bucketKey(row.created_at, bucket);
134
+ buckets[key] ||= { events: 0, succeeded: 0, failed: 0, actual_amount_credits: 0 };
135
+ buckets[key].events += 1;
136
+ if (row.success)
137
+ buckets[key].succeeded += 1;
138
+ else
139
+ buckets[key].failed += 1;
140
+ buckets[key].actual_amount_credits = round(buckets[key].actual_amount_credits + usageAmount(row));
141
+ }
142
+ return {
143
+ mode: 'summary',
144
+ ...range,
145
+ bucket,
146
+ total_events: rows.length,
147
+ succeeded,
148
+ failed,
149
+ charge_outcomes: chargeOutcomes,
150
+ requested_amount_credits: round(requested),
151
+ actual_amount_credits: round(actual),
152
+ buckets,
153
+ top_charges: rows
154
+ .map((row) => ({ ...pickUsage(row), amount: usageAmount(row) }))
155
+ .filter((row) => Number(row.amount) > 0)
156
+ .sort((a, b) => Number(b.amount) - Number(a.amount))
157
+ .slice(0, DEFAULT_DETAIL_LIMIT),
158
+ scanned_records: scannedRecords,
159
+ matched_records: total,
160
+ truncated,
161
+ };
162
+ }
163
+ export function summarizeUsageFromServer(serverSummary, input, scannedRecords, total) {
164
+ const range = resolveDateRange(input);
165
+ const bucket = chooseBucket(input);
166
+ const buckets = {};
167
+ const serverBuckets = Array.isArray(serverSummary.buckets) ? serverSummary.buckets : [];
168
+ for (const row of serverBuckets) {
169
+ if (!row || typeof row !== 'object')
170
+ continue;
171
+ const bucketRow = row;
172
+ const key = stringValue(bucketRow.bucket_start) || 'unknown';
173
+ buckets[key] = {
174
+ events: numberValue(bucketRow.total_count),
175
+ succeeded: numberValue(bucketRow.success_count),
176
+ failed: numberValue(bucketRow.failure_count),
177
+ actual_amount_credits: round(numberValue(bucketRow.settled_credits)),
178
+ };
179
+ }
180
+ const maxChargeItems = Array.isArray(serverSummary.max_charge_items)
181
+ ? serverSummary.max_charge_items
182
+ : [];
183
+ return {
184
+ mode: 'summary',
185
+ start_date: dateOnly(serverSummary.start_date) || range.start_date,
186
+ end_date: dateOnly(serverSummary.end_date) || range.end_date,
187
+ bucket: stringValue(serverSummary.bucket) || bucket,
188
+ total_events: numberValue(serverSummary.total_count),
189
+ succeeded: numberValue(serverSummary.success_count),
190
+ failed: numberValue(serverSummary.failure_count),
191
+ charge_outcomes: recordValue(serverSummary.charge_outcome_counts),
192
+ requested_amount_credits: round(numberValue(serverSummary.pre_settlement_credits)),
193
+ actual_amount_credits: round(numberValue(serverSummary.settled_credits)),
194
+ buckets,
195
+ top_charges: maxChargeItems
196
+ .map((row) => ({ ...pickUsage(row), amount: usageAmount(row) }))
197
+ .filter((row) => Number(row.amount) > 0)
198
+ .slice(0, DEFAULT_DETAIL_LIMIT),
199
+ scanned_records: scannedRecords,
200
+ matched_records: total,
201
+ truncated: false,
202
+ };
203
+ }
204
+ export function summarizeLedger(rows, input, scannedRecords, total, truncated) {
205
+ const range = resolveDateRange(input);
206
+ const bucket = chooseBucket(input);
207
+ const entryTypes = {};
208
+ const buckets = {};
209
+ let consumed = 0;
210
+ let granted = 0;
211
+ let net = 0;
212
+ for (const row of rows) {
213
+ const amount = ledgerAmount(row);
214
+ if (amount < 0)
215
+ consumed += Math.abs(amount);
216
+ if (amount > 0)
217
+ granted += amount;
218
+ net += amount;
219
+ const type = row.entry_type || 'unknown';
220
+ entryTypes[type] ||= { count: 0, amount_credits: 0 };
221
+ entryTypes[type].count += 1;
222
+ entryTypes[type].amount_credits = round(entryTypes[type].amount_credits + amount);
223
+ const key = bucketKey(row.created_at, bucket);
224
+ buckets[key] ||= { entries: 0, consumed_credits: 0, granted_credits: 0, net_credits: 0 };
225
+ buckets[key].entries += 1;
226
+ if (amount < 0)
227
+ buckets[key].consumed_credits = round(buckets[key].consumed_credits + Math.abs(amount));
228
+ if (amount > 0)
229
+ buckets[key].granted_credits = round(buckets[key].granted_credits + amount);
230
+ buckets[key].net_credits = round(buckets[key].net_credits + amount);
231
+ }
232
+ return {
233
+ mode: 'summary',
234
+ ...range,
235
+ bucket,
236
+ total_entries: rows.length,
237
+ consumed_credits: round(consumed),
238
+ granted_credits: round(granted),
239
+ net_credits: round(net),
240
+ entry_types: entryTypes,
241
+ buckets,
242
+ top_debits: rows
243
+ .filter((row) => ledgerAmount(row) < 0)
244
+ .map((row) => pickLedger(row))
245
+ .sort((a, b) => Math.abs(Number(b.amount_credits)) - Math.abs(Number(a.amount_credits)))
246
+ .slice(0, DEFAULT_DETAIL_LIMIT),
247
+ scanned_records: scannedRecords,
248
+ matched_records: total,
249
+ truncated,
250
+ };
251
+ }
252
+ export function summarizeLedgerFromServer(serverSummary, input, scannedRecords, total) {
253
+ const range = resolveDateRange(input);
254
+ const bucket = chooseBucket(input);
255
+ const buckets = {};
256
+ const serverBuckets = Array.isArray(serverSummary.buckets) ? serverSummary.buckets : [];
257
+ for (const row of serverBuckets) {
258
+ if (!row || typeof row !== 'object')
259
+ continue;
260
+ const bucketRow = row;
261
+ const key = stringValue(bucketRow.bucket_start) || 'unknown';
262
+ buckets[key] = {
263
+ entries: numberValue(bucketRow.entry_count),
264
+ consumed_credits: round(numberValue(bucketRow.consumed_credits)),
265
+ granted_credits: round(numberValue(bucketRow.granted_credits)),
266
+ net_credits: round(numberValue(bucketRow.net_amount_credits)),
267
+ };
268
+ }
269
+ const maxAmountItems = Array.isArray(serverSummary.max_amount_items)
270
+ ? serverSummary.max_amount_items
271
+ : [];
272
+ return {
273
+ mode: 'summary',
274
+ start_date: dateOnly(serverSummary.start_date) || range.start_date,
275
+ end_date: dateOnly(serverSummary.end_date) || range.end_date,
276
+ bucket: stringValue(serverSummary.bucket) || bucket,
277
+ total_entries: numberValue(serverSummary.total_entries),
278
+ consumed_credits: round(numberValue(serverSummary.consumed_credits)),
279
+ granted_credits: round(numberValue(serverSummary.granted_credits)),
280
+ net_credits: round(numberValue(serverSummary.net_amount_credits)),
281
+ entry_types: {},
282
+ buckets,
283
+ top_debits: maxAmountItems
284
+ .filter((row) => ledgerAmount(row) < 0)
285
+ .map((row) => pickLedger(row))
286
+ .slice(0, DEFAULT_DETAIL_LIMIT),
287
+ scanned_records: scannedRecords,
288
+ matched_records: total,
289
+ truncated: false,
290
+ };
291
+ }
292
+ export function writeJsonlExport(kind, rows, metadata) {
293
+ const dir = join(process.cwd(), '.qveris', 'exports');
294
+ mkdirSync(dir, { recursive: true });
295
+ const timestamp = new Date().toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
296
+ const filePath = join(dir, `${kind}_${timestamp}.jsonl`);
297
+ writeFileSync(filePath, rows.map((row) => JSON.stringify(row)).join('\n') + (rows.length ? '\n' : ''), 'utf-8');
298
+ return {
299
+ mode: 'export_file',
300
+ file_path: filePath,
301
+ format: 'jsonl',
302
+ record_count: rows.length,
303
+ ...metadata,
304
+ };
305
+ }
306
+ function matchesAmount(amount, input) {
307
+ if (input.min_credits !== undefined && Number.isFinite(input.min_credits) && amount < input.min_credits)
308
+ return false;
309
+ if (input.max_credits !== undefined && Number.isFinite(input.max_credits) && amount > input.max_credits)
310
+ return false;
311
+ return true;
312
+ }
313
+ function matchesField(value, expected) {
314
+ if (expected === undefined || expected === null || expected === '')
315
+ return true;
316
+ return String(value ?? '') === String(expected);
317
+ }
318
+ function matchesBoolean(value, expected) {
319
+ if (expected === undefined)
320
+ return true;
321
+ return value === expected;
322
+ }
323
+ function bucketKey(createdAt, bucket) {
324
+ const date = new Date(createdAt || Date.now());
325
+ if (!Number.isFinite(date.getTime()))
326
+ return 'unknown';
327
+ if (bucket === 'hour')
328
+ return `${date.toISOString().slice(0, 13)}:00:00Z`;
329
+ if (bucket === 'week')
330
+ return isoWeek(date);
331
+ return date.toISOString().slice(0, 10);
332
+ }
333
+ function isoWeek(date) {
334
+ const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
335
+ const dayNum = d.getUTCDay() || 7;
336
+ d.setUTCDate(d.getUTCDate() + 4 - dayNum);
337
+ const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
338
+ const weekNo = Math.ceil((((d.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);
339
+ return `${d.getUTCFullYear()}-W${String(weekNo).padStart(2, '0')}`;
340
+ }
341
+ function isoDate(date) {
342
+ return date.toISOString().slice(0, 10);
343
+ }
344
+ function firstNumber(...values) {
345
+ for (const value of values) {
346
+ if (value === undefined || value === null || value === '')
347
+ continue;
348
+ const number = Number(value);
349
+ if (Number.isFinite(number))
350
+ return number;
351
+ }
352
+ return 0;
353
+ }
354
+ function toNumber(value) {
355
+ const number = Number(value);
356
+ return Number.isFinite(number) ? number : 0;
357
+ }
358
+ function numberFromRecord(record, key) {
359
+ if (!record || typeof record !== 'object')
360
+ return undefined;
361
+ const value = record[key];
362
+ const number = Number(value);
363
+ return Number.isFinite(number) ? number : undefined;
364
+ }
365
+ function stringFromRecord(record, key) {
366
+ if (!record || typeof record !== 'object')
367
+ return '';
368
+ const value = record[key];
369
+ return typeof value === 'string' ? value : '';
370
+ }
371
+ function arrayFromRecord(record, key) {
372
+ if (!record || typeof record !== 'object')
373
+ return [];
374
+ const value = record[key];
375
+ return Array.isArray(value) ? value : [];
376
+ }
377
+ function round(value) {
378
+ return Math.round(value * 1000) / 1000;
379
+ }
380
+ function numberValue(value) {
381
+ const number = Number(value);
382
+ return Number.isFinite(number) ? number : 0;
383
+ }
384
+ function stringValue(value) {
385
+ return typeof value === 'string' ? value : '';
386
+ }
387
+ function dateOnly(value) {
388
+ return stringValue(value).slice(0, 10);
389
+ }
390
+ function recordValue(value) {
391
+ return value && typeof value === 'object' && !Array.isArray(value)
392
+ ? value
393
+ : {};
394
+ }
395
+ //# sourceMappingURL=audit-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-utils.js","sourceRoot":"","sources":["../../src/tools/audit-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * credits_ledger MCP Tool Implementation
3
+ *
4
+ * Context-safe query for final credit balance movements.
5
+ */
6
+ import type { QverisClient } from '../api/client.js';
7
+ import { type LedgerFilterInput } from './audit-utils.js';
8
+ export interface CreditsLedgerInput extends LedgerFilterInput {
9
+ }
10
+ export declare const creditsLedgerSchema: {
11
+ type: "object";
12
+ properties: {
13
+ mode: {
14
+ type: string;
15
+ enum: string[];
16
+ description: string;
17
+ default: string;
18
+ };
19
+ start_date: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ end_date: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ bucket: {
28
+ type: string;
29
+ enum: string[];
30
+ description: string;
31
+ };
32
+ entry_type: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ direction: {
37
+ type: string;
38
+ enum: string[];
39
+ description: string;
40
+ default: string;
41
+ };
42
+ min_credits: {
43
+ type: string;
44
+ description: string;
45
+ };
46
+ max_credits: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ limit: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ };
55
+ };
56
+ export declare function executeCreditsLedger(client: QverisClient, input: CreditsLedgerInput): Promise<Record<string, unknown>>;
57
+ //# sourceMappingURL=credits-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits-ledger.d.ts","sourceRoot":"","sources":["../../src/tools/credits-ledger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;CAAG;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB/B,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0ClC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * credits_ledger MCP Tool Implementation
3
+ *
4
+ * Context-safe query for final credit balance movements.
5
+ */
6
+ import { DEFAULT_PAGE_SIZE, MAX_EXPORT_ROWS, MAX_SEARCH_SCAN_ROWS, MAX_SUMMARY_ROWS, clampLimit, getLedgerItems, matchesLedger, normalizeMode, pickLedger, resolveDateRange, summarizeLedger, summarizeLedgerFromServer, unwrapEnvelope, writeJsonlExport, } from './audit-utils.js';
7
+ export const creditsLedgerSchema = {
8
+ type: 'object',
9
+ properties: {
10
+ mode: {
11
+ type: 'string',
12
+ enum: ['summary', 'search', 'export_file'],
13
+ description: 'summary returns aggregates, search returns capped rows, export_file writes JSONL locally. Default: summary.',
14
+ default: 'summary',
15
+ },
16
+ start_date: { type: 'string', description: 'Start date in YYYY-MM-DD. Defaults to yesterday UTC.' },
17
+ end_date: { type: 'string', description: 'End date in YYYY-MM-DD. Defaults to today UTC.' },
18
+ bucket: { type: 'string', enum: ['hour', 'day', 'week'], description: 'Aggregation bucket for summary mode.' },
19
+ entry_type: { type: 'string', description: 'Filter by ledger entry type, for example consume_tool_execute.' },
20
+ direction: {
21
+ type: 'string',
22
+ enum: ['consume', 'grant', 'any'],
23
+ description: 'consume for negative ledger entries, grant for positive entries. Default: any.',
24
+ default: 'any',
25
+ },
26
+ min_credits: { type: 'number', description: 'Minimum absolute credit amount to match.' },
27
+ max_credits: { type: 'number', description: 'Maximum absolute credit amount to match.' },
28
+ limit: { type: 'number', description: 'Max rows for search mode. Default 10, hard max 50.' },
29
+ },
30
+ };
31
+ export async function executeCreditsLedger(client, input) {
32
+ const mode = normalizeMode(input.mode);
33
+ const range = resolveDateRange(input);
34
+ if (mode === 'search') {
35
+ const limit = clampLimit(input.limit);
36
+ const result = await collectLedgerRows(client, input, limit, MAX_SEARCH_SCAN_ROWS, true);
37
+ return {
38
+ mode,
39
+ ...range,
40
+ shown_records: result.rows.length,
41
+ matched_records: result.total,
42
+ truncated: result.truncated,
43
+ items: result.rows.map((row) => pickLedger(row)),
44
+ };
45
+ }
46
+ if (mode === 'export_file') {
47
+ const result = await collectLedgerRows(client, input, MAX_EXPORT_ROWS, MAX_EXPORT_ROWS, false);
48
+ return writeJsonlExport('credits_ledger', result.rows, {
49
+ ...range,
50
+ matched_records: result.total,
51
+ truncated: result.truncated,
52
+ filters: exportFilters(input),
53
+ });
54
+ }
55
+ const summaryLimit = clampLimit(input.limit);
56
+ const summaryResponse = unwrapEnvelope(await client.getCreditsLedger(buildQuery(input, 1, summaryLimit, true)));
57
+ if (summaryResponse.summary) {
58
+ return summarizeLedgerFromServer(summaryResponse.summary, input, getLedgerItems(summaryResponse).length, summaryResponse.total);
59
+ }
60
+ const result = await collectLedgerRows(client, input, MAX_SUMMARY_ROWS, MAX_SUMMARY_ROWS, false);
61
+ return summarizeLedger(result.rows, input, result.scannedRows, result.total, result.truncated);
62
+ }
63
+ async function collectLedgerRows(client, input, limit, maxRows, stopWhenLimitReached) {
64
+ const rows = [];
65
+ let page = 1;
66
+ let total;
67
+ let scannedRows = 0;
68
+ let truncated = false;
69
+ while (rows.length < limit && scannedRows < maxRows) {
70
+ const query = buildQuery(input, page, Math.min(DEFAULT_PAGE_SIZE, maxRows - scannedRows));
71
+ const response = unwrapEnvelope(await client.getCreditsLedger(query));
72
+ const items = getLedgerItems(response);
73
+ if (total === undefined)
74
+ total = response.total;
75
+ if (items.length === 0)
76
+ break;
77
+ scannedRows += items.length;
78
+ for (const item of items) {
79
+ if (!matchesLedger(item, input))
80
+ continue;
81
+ rows.push(item);
82
+ if (stopWhenLimitReached && rows.length >= limit)
83
+ break;
84
+ }
85
+ if (stopWhenLimitReached && rows.length >= limit) {
86
+ truncated = Boolean(total && total > scannedRows);
87
+ break;
88
+ }
89
+ if (total !== undefined && scannedRows >= total)
90
+ break;
91
+ if (items.length < DEFAULT_PAGE_SIZE)
92
+ break;
93
+ page += 1;
94
+ }
95
+ if (total !== undefined && scannedRows < total)
96
+ truncated = true;
97
+ if (scannedRows >= maxRows && (total === undefined || scannedRows < total))
98
+ truncated = true;
99
+ return { rows: rows.slice(0, limit), total, scannedRows, truncated };
100
+ }
101
+ function buildQuery(input, page, pageSize, summary = false) {
102
+ const range = resolveDateRange(input);
103
+ return {
104
+ ...range,
105
+ summary: summary || undefined,
106
+ bucket: summary ? input.bucket : undefined,
107
+ entry_type: input.entry_type,
108
+ direction: input.direction,
109
+ min_credits: input.min_credits,
110
+ max_credits: input.max_credits,
111
+ limit: summary ? pageSize : undefined,
112
+ page,
113
+ page_size: pageSize,
114
+ };
115
+ }
116
+ function exportFilters(input) {
117
+ return {
118
+ entry_type: input.entry_type,
119
+ direction: input.direction,
120
+ min_credits: input.min_credits,
121
+ max_credits: input.max_credits,
122
+ };
123
+ }
124
+ //# sourceMappingURL=credits-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits-ledger.js","sourceRoot":"","sources":["../../src/tools/credits-ledger.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ export interface ExecuteToolInput {
47
47
  max_response_size?: number;
48
48
  }
49
49
  /**
50
- * JSON Schema for the execute_tool tool input.
50
+ * JSON Schema for the call tool input.
51
51
  * Used by MCP to validate and document the tool parameters.
52
52
  */
53
53
  export declare const executeToolSchema: {
@@ -78,7 +78,7 @@ export declare const executeToolSchema: {
78
78
  required: string[];
79
79
  };
80
80
  /**
81
- * Executes the execute_tool operation.
81
+ * Executes the call operation.
82
82
  *
83
83
  * @param client - Initialized Qveris API client
84
84
  * @param input - Execution parameters
@@ -7,7 +7,7 @@
7
7
  * @module tools/execute
8
8
  */
9
9
  /**
10
- * JSON Schema for the execute_tool tool input.
10
+ * JSON Schema for the call tool input.
11
11
  * Used by MCP to validate and document the tool parameters.
12
12
  */
13
13
  export const executeToolSchema = {
@@ -44,7 +44,7 @@ export const executeToolSchema = {
44
44
  required: ['tool_id', 'search_id', 'params_to_tool'],
45
45
  };
46
46
  /**
47
- * Executes the execute_tool operation.
47
+ * Executes the call operation.
48
48
  *
49
49
  * @param client - Initialized Qveris API client
50
50
  * @param input - Execution parameters