checkly 9.2.0 → 9.3.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,273 @@
1
+ import chalk from 'chalk';
2
+ import logSymbols from 'log-symbols';
3
+ import { escapeMdCell, formatMs, heading, padColumn, renderAdaptiveTable, renderCommandHints, renderDetailFields, } from './render.js';
4
+ // --- Shared helpers ---
5
+ export function checkRunMeasures(metrics) {
6
+ for (const meter of metrics.meters) {
7
+ if (meter.meterType === 'CHECK_RUN')
8
+ return meter.measures;
9
+ }
10
+ return undefined;
11
+ }
12
+ export function aiInvocationMeasures(metrics) {
13
+ for (const meter of metrics.meters) {
14
+ if (meter.meterType === 'AI_INVOCATION')
15
+ return meter.measures;
16
+ }
17
+ return undefined;
18
+ }
19
+ function dash(format) {
20
+ return format === 'terminal' ? chalk.dim('-') : '-';
21
+ }
22
+ function formatNumber(value, format) {
23
+ if (value === null || value === undefined)
24
+ return dash(format);
25
+ return Number.isInteger(value)
26
+ ? value.toLocaleString('en-US')
27
+ : value.toLocaleString('en-US', { maximumFractionDigits: 2 });
28
+ }
29
+ function formatPercent(value, format) {
30
+ if (value === null || value === undefined)
31
+ return dash(format);
32
+ return `${value.toLocaleString('en-US', { maximumFractionDigits: 2 })}%`;
33
+ }
34
+ function dateRange(from, to) {
35
+ return `${from} → ${to}`;
36
+ }
37
+ function sectionHeading(text, format) {
38
+ return heading(format === 'md' ? text : text.toUpperCase(), 2, format);
39
+ }
40
+ function renderMeasureList(entries, format) {
41
+ if (format === 'md') {
42
+ return [
43
+ '| Measure | Value |',
44
+ '| --- | --- |',
45
+ ...entries.map(entry => `| ${entry.label} | ${escapeMdCell(entry.value)} |`),
46
+ ].join('\n');
47
+ }
48
+ const labelWidth = Math.max(0, ...entries.map(entry => entry.label.length)) + 3;
49
+ return entries
50
+ .map(entry => `${chalk.dim(padColumn(`${entry.label}:`, labelWidth, 'left', false))}${entry.value}`)
51
+ .join('\n');
52
+ }
53
+ // --- Terms detail ---
54
+ const termsDetailFields = [
55
+ { label: 'Organization', value: terms => terms.name },
56
+ { label: 'Contract period', value: terms => dateRange(terms.contractStartDate, terms.contractEndDate) },
57
+ { label: 'Usage start date', value: terms => terms.usageStartDate },
58
+ { label: 'Credit budget', value: (terms, fmt) => formatNumber(terms.creditBudget, fmt) },
59
+ { label: 'Standard credits / unit', value: (terms, fmt) => formatNumber(terms.standardCreditsPerUnit, fmt) },
60
+ { label: 'Premium credits / unit', value: (terms, fmt) => formatNumber(terms.premiumCreditsPerUnit, fmt) },
61
+ { label: 'Accounts', value: terms => String(terms.accounts.length) },
62
+ { label: 'ID', value: terms => terms.id },
63
+ ];
64
+ function buildAccountColumns(format) {
65
+ if (format === 'md') {
66
+ return [
67
+ { header: 'Name', value: account => account.name },
68
+ { header: 'ID', value: account => account.id },
69
+ ];
70
+ }
71
+ return [
72
+ { header: 'Name', minWidth: 12, maxWidth: 40, value: account => account.name },
73
+ { header: 'ID', width: 38, value: account => chalk.dim(account.id) },
74
+ ];
75
+ }
76
+ export function formatUsageTermsDetail(terms, format) {
77
+ const lines = [];
78
+ lines.push(renderDetailFields(`Usage terms: ${terms.name}`, termsDetailFields, terms, format));
79
+ lines.push('');
80
+ lines.push(sectionHeading('Accounts', format));
81
+ if (format === 'md')
82
+ lines.push('');
83
+ lines.push(renderAdaptiveTable(buildAccountColumns(format), terms.accounts, format));
84
+ return lines.join('\n');
85
+ }
86
+ // --- Warnings ---
87
+ export function formatUsageWarnings(warnings, format) {
88
+ if (warnings.length === 0)
89
+ return '';
90
+ if (format === 'md') {
91
+ return warnings.map(warning => `> **Warning (${warning.code}):** ${warning.message}`).join('\n');
92
+ }
93
+ return warnings
94
+ .map(warning => `${logSymbols.warning} ${chalk.yellow(warning.message)} ${chalk.dim(`(${warning.code})`)}`)
95
+ .join('\n');
96
+ }
97
+ function creditsLabel(metrics, format) {
98
+ const { used, percentOfBudget } = metrics.credits;
99
+ if (used === null)
100
+ return dash(format);
101
+ const usedLabel = formatNumber(used, format);
102
+ return percentOfBudget === null ? usedLabel : `${usedLabel} (${formatPercent(percentOfBudget, format)} of budget)`;
103
+ }
104
+ const summaryHeaderFields = [
105
+ { label: 'Period', value: view => dateRange(view.summary.period.from, view.summary.period.to) },
106
+ {
107
+ label: 'Contract',
108
+ value: view => (view.terms ? dateRange(view.terms.contractStartDate, view.terms.contractEndDate) : null),
109
+ },
110
+ {
111
+ label: 'Progress',
112
+ value: view => {
113
+ const { weeksSinceStart, weeksRemaining } = view.summary.projections;
114
+ return `${weeksSinceStart} weeks since usage start, ${weeksRemaining} remaining`;
115
+ },
116
+ },
117
+ { label: 'Credit budget', value: (view, fmt) => (view.terms ? formatNumber(view.terms.creditBudget, fmt) : null) },
118
+ { label: 'Credits used', value: (view, fmt) => creditsLabel(view.summary.totals, fmt) },
119
+ { label: 'Remaining credits', value: (view, fmt) => formatNumber(view.summary.projections.remainingCredits, fmt) },
120
+ { label: 'Usage terms ID', value: view => view.summary.usageTermsId },
121
+ ];
122
+ function checkRunEntries(metrics, format) {
123
+ const measures = checkRunMeasures(metrics);
124
+ if (!measures)
125
+ return [{ label: 'Check runs', value: dash(format) }];
126
+ return [
127
+ { label: 'Total runs', value: formatNumber(measures.totalRuns, format) },
128
+ { label: 'Final runs', value: formatNumber(measures.finalRuns, format) },
129
+ { label: 'Retry runs', value: formatNumber(measures.retryRuns, format) },
130
+ { label: 'Cancelled runs', value: formatNumber(measures.cancelledRuns, format) },
131
+ { label: 'Degraded runs', value: formatNumber(measures.degradedRuns, format) },
132
+ { label: 'Failed runs', value: formatNumber(measures.failedRuns, format) },
133
+ { label: 'Error runs', value: formatNumber(measures.errorRuns, format) },
134
+ { label: 'Aborted runs', value: formatNumber(measures.abortedRuns, format) },
135
+ { label: 'Over max response time runs', value: formatNumber(measures.overMaxResponseTimeRuns, format) },
136
+ { label: 'Multi-step requests', value: formatNumber(measures.multiStepRequests, format) },
137
+ { label: 'Playwright billable duration', value: formatMs(measures.playwrightBillableDurationMs) },
138
+ { label: 'Standard billable units', value: formatNumber(measures.standardBillableUnits, format) },
139
+ { label: 'Premium billable units', value: formatNumber(measures.premiumBillableUnits, format) },
140
+ ];
141
+ }
142
+ function resolveEntries(metrics, format) {
143
+ const measures = aiInvocationMeasures(metrics);
144
+ if (!measures)
145
+ return [{ label: 'Invocations', value: dash(format) }];
146
+ return [
147
+ { label: 'Invocations', value: formatNumber(measures.invocations, format) },
148
+ { label: 'Duration', value: formatMs(measures.durationMs) },
149
+ ];
150
+ }
151
+ function toProjectionRow(label, window) {
152
+ return {
153
+ window: label,
154
+ creditsUsed: window.usage.credits.used,
155
+ annualPercent: window.projectedAnnualPercentOfBudget,
156
+ creditsAtEnd: window.projectedCreditsAtContractEnd,
157
+ percentAtEnd: window.projectedPercentAtContractEnd,
158
+ weeksUntilExhausted: window.projectedWeeksUntilExhausted,
159
+ };
160
+ }
161
+ function buildProjectionColumns() {
162
+ return [
163
+ { header: 'Window', width: 20, value: row => row.window },
164
+ { header: 'Credits used', width: 14, align: 'right', value: (row, fmt) => formatNumber(row.creditsUsed, fmt) },
165
+ {
166
+ header: 'Annual % of budget',
167
+ width: 20,
168
+ align: 'right',
169
+ value: (row, fmt) => formatPercent(row.annualPercent, fmt),
170
+ },
171
+ {
172
+ header: 'Credits at contract end',
173
+ width: 25,
174
+ align: 'right',
175
+ value: (row, fmt) => formatNumber(row.creditsAtEnd, fmt),
176
+ },
177
+ { header: '% at contract end', width: 19, align: 'right', value: (row, fmt) => formatPercent(row.percentAtEnd, fmt) },
178
+ {
179
+ header: 'Weeks until exhausted',
180
+ width: 23,
181
+ align: 'right',
182
+ value: (row, fmt) => formatNumber(row.weeksUntilExhausted, fmt),
183
+ },
184
+ ];
185
+ }
186
+ export function formatUsageSummary(summary, format, terms) {
187
+ const view = { summary, terms };
188
+ const title = terms ? `Usage: ${terms.name}` : 'Usage summary';
189
+ const { windows } = summary.projections;
190
+ const projectionRows = [
191
+ toProjectionRow('Since usage start', windows.sinceStart),
192
+ toProjectionRow('Last 30 days', windows.last30Days),
193
+ toProjectionRow('Last 7 days', windows.last7Days),
194
+ toProjectionRow('Last 1 day', windows.last1Day),
195
+ ];
196
+ // Markdown needs a blank line between a heading and the table that follows it.
197
+ const headingGap = format === 'md' ? [''] : [];
198
+ const lines = [];
199
+ lines.push(renderDetailFields(title, summaryHeaderFields, view, format));
200
+ lines.push('');
201
+ lines.push(sectionHeading('Check runs', format), ...headingGap);
202
+ lines.push(renderMeasureList(checkRunEntries(summary.totals, format), format));
203
+ lines.push('');
204
+ lines.push(sectionHeading('Resolve', format), ...headingGap);
205
+ lines.push(renderMeasureList(resolveEntries(summary.totals, format), format));
206
+ lines.push('');
207
+ lines.push(sectionHeading('Projections (as of today)', format), ...headingGap);
208
+ lines.push(renderAdaptiveTable(buildProjectionColumns(), projectionRows, format));
209
+ return lines.join('\n');
210
+ }
211
+ function periodLabel(row, interval) {
212
+ return interval === 'day' ? row.periodStart : dateRange(row.periodStart, row.periodEnd);
213
+ }
214
+ function buildSeriesColumns(format, options) {
215
+ const accountLabel = (row, fmt) => {
216
+ if (!row.accountId)
217
+ return dash(fmt);
218
+ return options.accountNames?.get(row.accountId) ?? row.accountId;
219
+ };
220
+ const columns = [
221
+ { header: 'Period', width: options.interval === 'day' ? 12 : 25, value: row => periodLabel(row, options.interval) },
222
+ ];
223
+ if (options.groupBy.includes('account')) {
224
+ // 15 keeps a 13-character prefix on narrow terminals; the terminal view has no ID column to fall back on.
225
+ columns.push({ header: 'Account', minWidth: 15, maxWidth: 40, value: (row, fmt) => accountLabel(row, fmt) });
226
+ if (format === 'md') {
227
+ columns.push({ header: 'Account ID', value: (row, fmt) => row.accountId ?? dash(fmt) });
228
+ }
229
+ }
230
+ if (options.groupBy.includes('checkType')) {
231
+ columns.push({ header: 'Check type', width: 13, value: (row, fmt) => row.checkType ?? dash(fmt) });
232
+ }
233
+ columns.push({
234
+ header: 'Total runs',
235
+ width: 12,
236
+ align: 'right',
237
+ value: (row, fmt) => formatNumber(checkRunMeasures(row)?.totalRuns, fmt),
238
+ }, {
239
+ header: 'Standard units',
240
+ width: 16,
241
+ align: 'right',
242
+ value: (row, fmt) => formatNumber(checkRunMeasures(row)?.standardBillableUnits, fmt),
243
+ }, {
244
+ header: 'Premium units',
245
+ width: 15,
246
+ align: 'right',
247
+ value: (row, fmt) => formatNumber(checkRunMeasures(row)?.premiumBillableUnits, fmt),
248
+ }, { header: 'Credits', width: 10, align: 'right', value: (row, fmt) => formatNumber(row.credits.used, fmt) }, {
249
+ header: '% of budget',
250
+ width: 13,
251
+ align: 'right',
252
+ value: (row, fmt) => formatPercent(row.credits.percentOfBudget, fmt),
253
+ }, {
254
+ header: 'Resolve invocations',
255
+ width: 21,
256
+ align: 'right',
257
+ value: (row, fmt) => formatNumber(aiInvocationMeasures(row)?.invocations, fmt),
258
+ });
259
+ return columns;
260
+ }
261
+ export function formatUsageSeries(rows, format, options) {
262
+ return renderAdaptiveTable(buildSeriesColumns(format, options), rows, format);
263
+ }
264
+ export function formatUsageSeriesPaginationInfo(count, nextId) {
265
+ const base = `${count} usage row${count !== 1 ? 's' : ''}`;
266
+ return chalk.dim(nextId ? `Showing ${base} (more available)` : `Showing ${base}`);
267
+ }
268
+ export function formatUsageSeriesNavigationHints(nextId, seriesCommand) {
269
+ if (!nextId)
270
+ return '';
271
+ return renderCommandHints([{ label: 'Next page', command: `${seriesCommand} --cursor ${nextId}` }], { gap: 1 });
272
+ }
273
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/formatters/usage.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,8 @@ export default class ChecklyHelpClass extends Help {
15
15
  .map(c => [c.id.replace(/:/g, ' '), this.summary(c)]);
16
16
  const formatCommandsWithTopics = (commands) => {
17
17
  const explicitTopics = new Map(topics.map(t => [t.name, t.description]));
18
- const topicNames = new Set(topics.map(t => t.name));
18
+ // Nested topics (e.g. account:usage) are listed under their parent's help, not at the root.
19
+ const topicNames = new Set(topics.map(t => t.name).filter(name => !name.includes(':')));
19
20
  for (const command of commands) {
20
21
  const separatorIndex = command.id.indexOf(':');
21
22
  if (separatorIndex > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"help-extension.js","sourceRoot":"","sources":["../../src/help/help-extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help-extension.js","sourceRoot":"","sources":["../../src/help/help-extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { UsageRangeParams, UsageTermsParams } from '../rest/usage.js';
2
+ export declare function usageTermsFlags(): {
3
+ to: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
4
+ };
5
+ export declare function usageRangeFlags(): {
6
+ from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'account-id': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'check-type': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ to: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ export declare function parseDateOnly(value: string | undefined, label: string): string | undefined;
12
+ interface UsageTermsFlagValues {
13
+ to?: string;
14
+ }
15
+ interface UsageRangeFlagValues extends UsageTermsFlagValues {
16
+ 'from'?: string;
17
+ 'account-id'?: string[];
18
+ 'check-type'?: string[];
19
+ }
20
+ export declare function usageTermsParams(flags: UsageTermsFlagValues): UsageTermsParams;
21
+ export declare function usageRangeParams(flags: UsageRangeFlagValues): UsageRangeParams;
22
+ export interface UsageErrorContext {
23
+ /** The --to flag as given, when the user pinned the terms to a date. */
24
+ to?: string;
25
+ }
26
+ export declare function describeUsageError(err: unknown, context?: UsageErrorContext): string | undefined;
27
+ export {};
@@ -0,0 +1,102 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { allCheckTypes } from '../constants.js';
3
+ import { ApiError, ForbiddenError, UnauthorizedError } from '../rest/errors.js';
4
+ const DATE_ONLY_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
5
+ export function usageTermsFlags() {
6
+ return {
7
+ to: Flags.string({
8
+ description: 'End date (YYYY-MM-DD, inclusive). Defaults to today. Selects the usage terms that cover this date.',
9
+ }),
10
+ };
11
+ }
12
+ export function usageRangeFlags() {
13
+ return {
14
+ ...usageTermsFlags(),
15
+ 'from': Flags.string({
16
+ description: 'Start date (YYYY-MM-DD, inclusive). Defaults to the usage start date of the terms.',
17
+ }),
18
+ 'account-id': Flags.string({
19
+ description: 'Only include these account IDs. Repeat the flag or comma-separate values.',
20
+ multiple: true,
21
+ delimiter: ',',
22
+ }),
23
+ 'check-type': Flags.string({
24
+ description: 'Only include these check types. Repeat the flag or comma-separate values.',
25
+ multiple: true,
26
+ delimiter: ',',
27
+ options: allCheckTypes,
28
+ }),
29
+ };
30
+ }
31
+ export function parseDateOnly(value, label) {
32
+ if (value === undefined)
33
+ return undefined;
34
+ const trimmed = value.trim();
35
+ const error = new Error(`${label} must be a valid calendar date in YYYY-MM-DD format.`);
36
+ if (!DATE_ONLY_PATTERN.test(trimmed))
37
+ throw error;
38
+ // Date.UTC rolls 2026-02-30 over to March 2nd, so round-trip the parts.
39
+ const [year, month, day] = trimmed.split('-').map(Number);
40
+ const parsed = new Date(Date.UTC(year, month - 1, day));
41
+ if (parsed.getUTCFullYear() !== year || parsed.getUTCMonth() !== month - 1 || parsed.getUTCDate() !== day) {
42
+ throw error;
43
+ }
44
+ return trimmed;
45
+ }
46
+ export function usageTermsParams(flags) {
47
+ return {
48
+ to: parseDateOnly(flags.to, '--to'),
49
+ };
50
+ }
51
+ export function usageRangeParams(flags) {
52
+ const from = parseDateOnly(flags['from'], '--from');
53
+ const terms = usageTermsParams(flags);
54
+ if (from && terms.to && from > terms.to) {
55
+ throw new Error('--from must be on or before --to.');
56
+ }
57
+ return {
58
+ ...terms,
59
+ from,
60
+ accountIds: flags['account-id'],
61
+ checkTypes: flags['check-type'],
62
+ };
63
+ }
64
+ export function describeUsageError(err, context = {}) {
65
+ if (!(err instanceof ApiError))
66
+ return undefined;
67
+ // The usage API adds `code` to its error body; ErrorData does not declare it.
68
+ const code = err.data.code;
69
+ switch (code) {
70
+ case 'NO_USAGE_TERMS':
71
+ // With an explicit --to the organization may well have a contract; it just does not cover that date.
72
+ if (context.to) {
73
+ return `No usage terms cover this account on ${context.to}. `
74
+ + 'Run "checkly account usage terms" to see the contract dates, then pick a --to date inside them.';
75
+ }
76
+ return 'No usage terms cover this account for the requested date. '
77
+ + 'Usage reporting is available to accounts that belong to an organization with a usage contract.';
78
+ case 'USAGE_TERMS_CONFLICT':
79
+ return 'More than one set of usage terms covers the requested date. '
80
+ + 'Pick a --to date that only one contract covers.';
81
+ case 'ACCOUNT_NOT_IN_USAGE_TERMS': {
82
+ // API error messages carry no trailing punctuation, so supply the sentence break.
83
+ const message = /[.!?]$/.test(err.message) ? err.message : `${err.message}.`;
84
+ return `${message} Run "checkly account usage terms" to list the accounts covered by the terms.`;
85
+ }
86
+ case 'INVALID_CURSOR':
87
+ return 'The --cursor value is invalid or was issued for different flags. '
88
+ + 'Re-run the original command with the same flags (including --from and --to) and use the cursor it prints.';
89
+ case 'INVALID_RANGE':
90
+ return err.message;
91
+ case 'USAGE_STORE_UNAVAILABLE':
92
+ return 'The usage store is temporarily unavailable. Try again in a few minutes.';
93
+ }
94
+ if (err instanceof UnauthorizedError) {
95
+ return 'Usage reporting requires a user or service API key; legacy account API keys are not accepted.';
96
+ }
97
+ if (err instanceof ForbiddenError) {
98
+ return 'Usage reporting requires the Owner or Admin role on this account.';
99
+ }
100
+ return undefined;
101
+ }
102
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/helpers/usage.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import AlertChannels from './alert-channels.js';
28
28
  import AlertNotifications from './alert-notifications.js';
29
29
  import Rca from './rca.js';
30
30
  import Cancel from './cancel.js';
31
+ import Usage from './usage.js';
31
32
  export declare function getDefaults(): {
32
33
  baseURL: string;
33
34
  accountId: string;
@@ -67,3 +68,4 @@ export declare const alertChannels: AlertChannels;
67
68
  export declare const alertNotifications: AlertNotifications;
68
69
  export declare const rca: Rca;
69
70
  export declare const cancel: Cancel;
71
+ export declare const usage: Usage;
package/dist/rest/api.js CHANGED
@@ -31,6 +31,7 @@ import AlertChannels from './alert-channels.js';
31
31
  import AlertNotifications from './alert-notifications.js';
32
32
  import Rca from './rca.js';
33
33
  import Cancel from './cancel.js';
34
+ import Usage from './usage.js';
34
35
  import { handleErrorResponse, UnauthorizedError } from './errors.js';
35
36
  import { createRetryInterceptor } from './retry.js';
36
37
  import { detectOperator } from '../helpers/cli-mode.js';
@@ -125,4 +126,5 @@ export const alertChannels = new AlertChannels(api);
125
126
  export const alertNotifications = new AlertNotifications(api);
126
127
  export const rca = new Rca(api);
127
128
  export const cancel = new Cancel(api);
129
+ export const usage = new Usage(api);
128
130
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/rest/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/rest/api.ts"],"names":[],"mappings":"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"}