checkly 8.2.0 → 8.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: checkly
3
- description: Set up, create, test and manage monitoring checks using the Checkly CLI. Use when working with Agentic Checks, API Checks, Browser Checks, URL Monitors, ICMP Monitors, Playwright Check Suites, Heartbeat Monitors, Alert Channels, Dashboards, or Status Pages. Access Checkly account plan, entitlements, feature limits, members, and pending invites.
3
+ description: Set up, create, test and manage monitoring checks using the Checkly CLI. Use when working with Agentic Checks, API Checks, Browser Checks, URL Monitors, ICMP Monitors, Playwright Check Suites, Heartbeat Monitors, Alert Channels, Dashboards, or Status Pages. Access Checkly account plan, entitlements, feature limits, members, and pending invites. Includes generic API pass-through (`checkly api`) for endpoints without dedicated commands.
4
4
  allowed-tools: Bash(npx:checkly:*) Bash(npm:install:*)
5
5
  metadata:
6
6
  author: checkly
@@ -36,6 +36,64 @@ Write commands (e.g. `incidents create`, `deploy`, `destroy`) return exit code 2
36
36
 
37
37
  Run `npx checkly skills communicate` for the full protocol details.
38
38
 
39
+ ## API Pass-Through (fallback for any endpoint)
40
+
41
+ When no dedicated CLI command exists for an endpoint, use `npx checkly api` to make authenticated requests directly. The CLI handles auth headers and base URL automatically.
42
+
43
+ ```bash
44
+ npx checkly api /v1/checks
45
+ npx checkly api /v1/dashboards -X GET --jq '.[].name'
46
+ npx checkly api /v1/checks -X POST -F name=MyCheck -F activated:=true
47
+ npx checkly api /v1/checks -X GET -F limit=5
48
+ ```
49
+
50
+ Key flags: `-X` (method), `-F` (field — `key=value` for strings, `key:=value` for JSON), `-H` (header), `--jq` (filter with jq), `--input` (body from file/stdin), `-i` / `--include` (response status + headers on stdout), `--verbose` (request/response headers on stderr).
51
+
52
+ ### Nested payloads
53
+
54
+ Use `:=` to send structured JSON in a single field:
55
+
56
+ ```bash
57
+ npx checkly api /v1/checks/<id> -X PATCH \
58
+ -F retryStrategy:='{"type":"LINEAR","maxRetries":2,"baseBackoffSeconds":10}'
59
+ ```
60
+
61
+ For large or deeply nested bodies, pipe a JSON file via `--input`:
62
+
63
+ ```bash
64
+ npx checkly api /v1/checks -X POST --input ./new-check.json
65
+ ```
66
+
67
+ ### Pagination
68
+
69
+ `checkly api` does not auto-walk pages. Drive pagination yourself, the same way every other `checkly` list command exposes it.
70
+
71
+ When using `-F` on a read endpoint, **always pass `-X GET` explicitly** — any `-F` flag implies POST unless the method is set, so omitting `-X GET` will try to create a resource with your pagination params as the body.
72
+
73
+ **Detecting which pagination style an endpoint uses.** Make a first request with `-i` (response headers on stdout) and inspect what came back:
74
+
75
+ - **Page-based** → response has a `content-range` header (e.g. `0-1/23` means items 0–1 of 23 total) and usually a `link` header with `rel="next"` / `rel="last"`. The body is a bare array. Walk by incrementing `-F page=N` until you've covered the total in `content-range`, or until the `rel="next"` link disappears.
76
+ - **Cursor-based** → response body is an envelope like `{ entries: [...], nextId: "...", length: N }`. Pass `-F nextId=<value>` (or `-F cursor=<value>`, depending on the endpoint) on the next call. When `nextId` is missing or null, you've reached the end.
77
+
78
+ ```bash
79
+ # Step 1: make the first call with -i and inspect the response shape
80
+ npx checkly api /v1/checks -X GET -F limit=100 -i
81
+
82
+ # If you saw a content-range header → page-based, walk with -F page=N
83
+ npx checkly api /v1/checks -X GET -F limit=100 -F page=2 -i
84
+
85
+ # If the body had a nextId field → cursor-based, walk with -F nextId=<value>
86
+ npx checkly api /v1/status-pages -X GET -F limit=50 -F nextId=<nextIdFromPrevResponse>
87
+ ```
88
+
89
+ ### Error responses
90
+
91
+ On non-2xx, the response body is still written to stdout (read it for the API's error message) and the CLI exits with code 1. A 401 prints an auth hint, a 403 prints a permission hint, and a 404 prints the docs URL — all on stderr.
92
+
93
+ ### Endpoint discovery
94
+
95
+ See the [Checkly API reference](https://www.checklyhq.com/docs/api) for the human-readable endpoint catalogue, or fetch the [OpenAPI spec](https://api.checklyhq.com/openapi.json) for a machine-readable definition you can grep for paths, parameters, and response shapes.
96
+
39
97
  ### `npx checkly skills initialize`
40
98
  Learn how to initialize and set up a new Checkly CLI project from scratch.
41
99
 
@@ -0,0 +1,23 @@
1
+ import { AuthCommand } from './authCommand.js';
2
+ export default class Api extends AuthCommand {
3
+ static hidden: boolean;
4
+ static readOnly: boolean;
5
+ static destructive: boolean;
6
+ static idempotent: boolean;
7
+ static description: string;
8
+ static examples: string[];
9
+ static args: {
10
+ endpoint: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ method: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ field: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
15
+ header: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
16
+ jq: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ input: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ include: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ };
21
+ run(): Promise<void>;
22
+ private applyJq;
23
+ }
@@ -0,0 +1,205 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { execFile } from 'node:child_process';
3
+ import { readFile } from 'node:fs/promises';
4
+ import { AuthCommand } from './authCommand.js';
5
+ import { api } from '../rest/api.js';
6
+ import { parseFields } from '../helpers/api-fields.js';
7
+ const WRITE_METHODS = new Set(['POST', 'PUT', 'PATCH']);
8
+ export default class Api extends AuthCommand {
9
+ static hidden = false;
10
+ static readOnly = false;
11
+ static destructive = true;
12
+ static idempotent = false;
13
+ static description = 'Make an authenticated HTTP request to the Checkly API.\n'
14
+ + 'Pass-through for any endpoint — handles auth automatically.\n'
15
+ + 'See https://www.checklyhq.com/docs/api for available endpoints.\n'
16
+ + 'OpenAPI spec: https://api.checklyhq.com/openapi.json';
17
+ static examples = [
18
+ 'checkly api /v1/checks',
19
+ 'checkly api /v1/checks -X GET --jq \'.[].name\'',
20
+ 'checkly api /v1/checks -X POST -F name=MyCheck -F activated:=true',
21
+ 'checkly api /v1/checks -X GET -F limit=5',
22
+ 'echo \'{"name":"New"}\' | checkly api /v1/checks -X POST --input -',
23
+ ];
24
+ static args = {
25
+ endpoint: Args.string({
26
+ description: 'API endpoint path (e.g. /v1/checks).',
27
+ required: true,
28
+ }),
29
+ };
30
+ /* eslint-disable @stylistic/quote-props */
31
+ static flags = {
32
+ 'method': Flags.string({
33
+ char: 'X',
34
+ description: 'HTTP method.',
35
+ options: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
36
+ }),
37
+ 'field': Flags.string({
38
+ char: 'F',
39
+ description: 'Add a field: key=value (string) or key:=value (parsed as JSON).',
40
+ multiple: true,
41
+ default: [],
42
+ }),
43
+ 'header': Flags.string({
44
+ char: 'H',
45
+ description: 'Custom HTTP header: "Key: Value".',
46
+ multiple: true,
47
+ default: [],
48
+ }),
49
+ 'jq': Flags.string({
50
+ description: 'Filter JSON output with a jq expression (requires jq installed).',
51
+ }),
52
+ 'input': Flags.string({
53
+ description: 'Request body from file path, or "-" for stdin.',
54
+ }),
55
+ 'include': Flags.boolean({
56
+ char: 'i',
57
+ description: 'Include HTTP status and response headers in the output.',
58
+ default: false,
59
+ }),
60
+ 'verbose': Flags.boolean({
61
+ description: 'Print request and response headers to stderr.',
62
+ default: false,
63
+ }),
64
+ };
65
+ async run() {
66
+ const { args, flags } = await this.parse(Api);
67
+ const hasFields = flags.field.length > 0;
68
+ const method = (flags.method ?? (hasFields || flags.input ? 'POST' : 'GET')).toUpperCase();
69
+ if (args.endpoint.startsWith('//') || /^[a-z][a-z\d+\-.]*:/i.test(args.endpoint)) {
70
+ this.error('Endpoint must be a relative path (e.g. /v1/checks), not a URL.');
71
+ }
72
+ const endpoint = args.endpoint.startsWith('/') ? args.endpoint : `/${args.endpoint}`;
73
+ const baseUrl = api.defaults.baseURL;
74
+ if (baseUrl) {
75
+ const resolved = new URL(endpoint, baseUrl);
76
+ if (resolved.origin !== new URL(baseUrl).origin) {
77
+ this.error('Endpoint must be a relative path (e.g. /v1/checks), not a URL.');
78
+ }
79
+ }
80
+ const fields = hasFields ? parseFields(flags.field) : undefined;
81
+ if (flags.input && hasFields) {
82
+ this.error('Cannot use --input together with -F/--field.');
83
+ }
84
+ let data;
85
+ if (flags.input) {
86
+ const raw = flags.input === '-' ? await readStdin() : await readFile(flags.input, 'utf-8');
87
+ try {
88
+ data = JSON.parse(raw);
89
+ }
90
+ catch {
91
+ data = raw;
92
+ }
93
+ }
94
+ else if (fields && WRITE_METHODS.has(method)) {
95
+ data = fields;
96
+ }
97
+ const params = fields && !WRITE_METHODS.has(method) ? fields : undefined;
98
+ const customHeaders = {};
99
+ for (const h of flags.header) {
100
+ const colonIndex = h.indexOf(':');
101
+ if (colonIndex === -1) {
102
+ this.error(`Invalid header format: "${h}". Expected "Key: Value".`);
103
+ }
104
+ customHeaders[h.slice(0, colonIndex).trim()] = h.slice(colonIndex + 1).trim();
105
+ }
106
+ const requestConfig = {
107
+ method,
108
+ url: endpoint,
109
+ params,
110
+ data,
111
+ headers: customHeaders,
112
+ validateStatus: () => true,
113
+ };
114
+ if (flags.verbose) {
115
+ this.logToStderr(`> ${method} ${endpoint}`);
116
+ for (const [k, v] of Object.entries(customHeaders)) {
117
+ this.logToStderr(`> ${k}: ${v}`);
118
+ }
119
+ this.logToStderr('');
120
+ }
121
+ const response = await api.request(requestConfig);
122
+ if (flags.verbose) {
123
+ this.logToStderr(`< ${response.status} ${response.statusText}`);
124
+ for (const [k, v] of Object.entries(response.headers)) {
125
+ if (v !== undefined) {
126
+ this.logToStderr(`< ${k}: ${v}`);
127
+ }
128
+ }
129
+ this.logToStderr('');
130
+ }
131
+ const responseData = response.data;
132
+ if (flags.include) {
133
+ this.log(`HTTP/1.1 ${response.status} ${response.statusText}`);
134
+ for (const [k, v] of Object.entries(response.headers)) {
135
+ if (v !== undefined) {
136
+ this.log(`${k}: ${v}`);
137
+ }
138
+ }
139
+ this.log();
140
+ }
141
+ if (responseData === undefined || responseData === null || responseData === '') {
142
+ if (response.status >= 400) {
143
+ this.exit(1);
144
+ }
145
+ return;
146
+ }
147
+ const json = typeof responseData === 'string' ? responseData : formatJson(responseData);
148
+ if (flags.jq) {
149
+ await this.applyJq(json, flags.jq);
150
+ }
151
+ else {
152
+ this.log(json);
153
+ }
154
+ if (response.status === 404) {
155
+ this.logToStderr('Endpoint not found. See available endpoints at https://www.checklyhq.com/docs/api');
156
+ }
157
+ else if (response.status === 401) {
158
+ this.logToStderr('Authentication failed — run "checkly login" or set CHECKLY_API_KEY.');
159
+ }
160
+ else if (response.status === 403) {
161
+ this.logToStderr('Permission denied — verify your account role and API key scope.');
162
+ }
163
+ if (response.status >= 400) {
164
+ this.exit(1);
165
+ }
166
+ }
167
+ applyJq(json, filter) {
168
+ return new Promise((resolve, reject) => {
169
+ const child = execFile('jq', [filter], { encoding: 'utf-8' }, (error, stdout, stderr) => {
170
+ if (error) {
171
+ if (error.code === 'ENOENT') {
172
+ reject(new Error('--jq requires jq to be installed.\n'
173
+ + 'Install it from https://jqlang.github.io/jq/'));
174
+ return;
175
+ }
176
+ reject(new Error(`jq failed: ${stderr || error.message}`));
177
+ return;
178
+ }
179
+ if (stderr) {
180
+ this.logToStderr(stderr);
181
+ }
182
+ if (stdout) {
183
+ this.log(stdout.trimEnd());
184
+ }
185
+ resolve();
186
+ });
187
+ child.stdin?.write(json);
188
+ child.stdin?.end();
189
+ });
190
+ }
191
+ }
192
+ function formatJson(data) {
193
+ if (process.stdout.isTTY) {
194
+ return JSON.stringify(data, null, 2);
195
+ }
196
+ return JSON.stringify(data);
197
+ }
198
+ async function readStdin() {
199
+ const chunks = [];
200
+ for await (const chunk of process.stdin) {
201
+ chunks.push(chunk);
202
+ }
203
+ return Buffer.concat(chunks).toString('utf-8');
204
+ }
205
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { AuthCommand } from '../authCommand.js';
2
+ export default class TestSessionsGet extends AuthCommand {
3
+ static hidden: boolean;
4
+ static readOnly: boolean;
5
+ static idempotent: boolean;
6
+ static description: string;
7
+ static args: {
8
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ 'error-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'error-groups-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'full-error': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,71 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { AuthCommand } from '../authCommand.js';
3
+ import { outputFlag } from '../../helpers/flags.js';
4
+ import * as api from '../../rest/api.js';
5
+ import { formatTestSessionDetail, formatTestSessionErrorGroupDetail, uniqueErrorGroupIds, } from '../../formatters/test-sessions.js';
6
+ export default class TestSessionsGet extends AuthCommand {
7
+ static hidden = false;
8
+ static readOnly = true;
9
+ static idempotent = true;
10
+ static description = 'Get details of a recorded test session, including result error groups for RCA.';
11
+ static args = {
12
+ id: Args.string({
13
+ description: 'The ID of the test session to retrieve.',
14
+ required: true,
15
+ }),
16
+ };
17
+ static flags = {
18
+ 'error-group': Flags.string({
19
+ description: 'Show details for a test session error group ID from this session.',
20
+ }),
21
+ 'error-groups-limit': Flags.integer({
22
+ description: 'Number of error group IDs to show in the session summary.',
23
+ default: 5,
24
+ }),
25
+ 'full-error': Flags.boolean({
26
+ description: 'Print the complete raw error when showing a test session error group.',
27
+ default: false,
28
+ }),
29
+ 'output': outputFlag({ default: 'detail' }),
30
+ };
31
+ async run() {
32
+ const { args, flags } = await this.parse(TestSessionsGet);
33
+ this.style.outputFormat = flags.output;
34
+ try {
35
+ const { data: testSession } = await api.testSessions.get(args.id);
36
+ if (flags['error-group']) {
37
+ const errorGroupIds = uniqueErrorGroupIds(testSession);
38
+ if (!errorGroupIds.includes(flags['error-group'])) {
39
+ const listCommand = `checkly test-sessions get ${args.id} `
40
+ + `--error-groups-limit ${Math.max(5, errorGroupIds.length)}`;
41
+ this.style.longError('Test session error group not found in this session.', `Run \`${listCommand}\` to list the available error group IDs.`);
42
+ process.exitCode = 1;
43
+ return;
44
+ }
45
+ const { data: errorGroup } = await api.testSessionErrorGroups.get(flags['error-group']);
46
+ if (flags.output === 'json') {
47
+ this.log(JSON.stringify(errorGroup, null, 2));
48
+ return;
49
+ }
50
+ const fmt = flags.output === 'md' ? 'md' : 'terminal';
51
+ this.log(formatTestSessionErrorGroupDetail(errorGroup, fmt, {
52
+ fullError: flags['full-error'],
53
+ }));
54
+ return;
55
+ }
56
+ if (flags.output === 'json') {
57
+ this.log(JSON.stringify(testSession, null, 2));
58
+ return;
59
+ }
60
+ const fmt = flags.output === 'md' ? 'md' : 'terminal';
61
+ this.log(formatTestSessionDetail(testSession, fmt, {
62
+ errorGroupsLimit: flags['error-groups-limit'],
63
+ }));
64
+ }
65
+ catch (err) {
66
+ this.style.longError('Failed to get test session details.', err);
67
+ process.exitCode = 1;
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/test-sessions/get.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { AlertChannel, AlertChannelProps } from './alert-channel.js';
2
2
  export interface SlackAppAlertChannelProps extends AlertChannelProps {
3
+ /**
4
+ * List of Slack #channels or @handles to notify.
5
+ * Private channels require the Checkly app to be invited first.
6
+ * @example
7
+ * ['#alerts', '#ops', '@alice']
8
+ */
3
9
  slackChannels: string[];
4
10
  }
5
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slack-app-alert-channel.js","sourceRoot":"","sources":["../../src/constructs/slack-app-alert-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAMtC;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,aAAa,CAAU;IACvB;;;;;;;OAOG;IACH,YAAa,SAAiB,EAAE,KAAgC;QAC9D,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACxC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAA;IACjD,CAAC;IAED,UAAU;QACR,OAAO;YACL,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE;gBACN,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC;SACF,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"slack-app-alert-channel.js","sourceRoot":"","sources":["../../src/constructs/slack-app-alert-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAYtC;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,aAAa,CAAU;IACvB;;;;;;;OAOG;IACH,YAAa,SAAiB,EAAE,KAAgC;QAC9D,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACxC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAA;IACjD,CAAC;IAED,UAAU;QACR,OAAO;YACL,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE;gBACN,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC;SACF,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { TestSessionErrorGroup } from '../rest/test-session-error-groups.js';
2
+ import type { TestSessionDetail } from '../rest/test-sessions.js';
3
+ import { type OutputFormat } from './render.js';
4
+ export interface TestSessionFormatOptions {
5
+ errorGroupsLimit?: number;
6
+ }
7
+ export interface TestSessionErrorGroupFormatOptions {
8
+ fullError?: boolean;
9
+ errorLines?: number;
10
+ }
11
+ export declare function uniqueErrorGroupIds(session: TestSessionDetail): string[];
12
+ export declare function formatTestSessionErrorGroupIds(session: TestSessionDetail, format: OutputFormat, options?: TestSessionFormatOptions): string;
13
+ export declare function formatTestSessionHints(session: TestSessionDetail, format: OutputFormat): string;
14
+ export declare function formatTestSessionErrorGroupDetail(group: TestSessionErrorGroup, format: OutputFormat, options?: TestSessionErrorGroupFormatOptions): string;
15
+ export declare function formatTestSessionDetail(session: TestSessionDetail, format: OutputFormat, options?: TestSessionFormatOptions): string;
@@ -0,0 +1,265 @@
1
+ import chalk from 'chalk';
2
+ import { formatCheckType, formatDate, renderDetailFields, renderTable, truncateToWidth, visWidth, } from './render.js';
3
+ const DEFAULT_ERROR_GROUPS_LIMIT = 5;
4
+ const DEFAULT_ERROR_DETAIL_LINES = 80;
5
+ function formatStatus(status, format) {
6
+ const normalized = status.toLowerCase();
7
+ if (format === 'md')
8
+ return normalized;
9
+ switch (status) {
10
+ case 'FAILED':
11
+ return chalk.red(normalized);
12
+ case 'CANCELLED':
13
+ return chalk.dim(normalized);
14
+ case 'RUNNING':
15
+ return chalk.yellow(normalized);
16
+ case 'PASSED':
17
+ return chalk.green(normalized);
18
+ }
19
+ }
20
+ function formatList(values, format) {
21
+ if (!values || values.length === 0)
22
+ return format === 'terminal' ? chalk.dim('-') : '-';
23
+ return values.join(', ');
24
+ }
25
+ function formatErrorGroupCount(values, format) {
26
+ if (format === 'md')
27
+ return formatList(values, format);
28
+ const count = values?.length ?? 0;
29
+ if (count === 0)
30
+ return chalk.dim('-');
31
+ return `${count} ${count === 1 ? 'group' : 'groups'}`;
32
+ }
33
+ function formatErrorGroupSummary(session, format) {
34
+ const count = uniqueErrorGroupIds(session).length;
35
+ if (count === 0)
36
+ return format === 'terminal' ? chalk.dim('-') : '-';
37
+ return `${count} ${count === 1 ? 'group' : 'groups'}`;
38
+ }
39
+ function formatDuration(ms) {
40
+ if (ms < 1000)
41
+ return `${Math.round(ms)}ms`;
42
+ const totalSeconds = Math.round(ms / 1000);
43
+ const seconds = totalSeconds % 60;
44
+ const totalMinutes = Math.floor(totalSeconds / 60);
45
+ if (totalMinutes === 0)
46
+ return `${seconds}s`;
47
+ const minutes = totalMinutes % 60;
48
+ const hours = Math.floor(totalMinutes / 60);
49
+ if (hours === 0)
50
+ return seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
51
+ if (minutes === 0 && seconds === 0)
52
+ return `${hours}h`;
53
+ if (minutes === 0)
54
+ return `${hours}h ${seconds}s`;
55
+ return seconds === 0 ? `${hours}h ${minutes}m` : `${hours}h ${minutes}m ${seconds}s`;
56
+ }
57
+ function formatMetadata(metadata, format) {
58
+ if (!metadata)
59
+ return null;
60
+ const entries = Object.entries(metadata).filter(([, value]) => value != null && value !== '');
61
+ if (entries.length === 0)
62
+ return null;
63
+ const labels = {
64
+ environment: 'environment',
65
+ repoUrl: 'repo',
66
+ commitId: 'commit',
67
+ commitOwner: 'author',
68
+ commitMessage: 'message',
69
+ branchName: 'branch',
70
+ };
71
+ const formatted = entries.map(([key, value]) => `${labels[key] ?? key}: ${value}`);
72
+ return format === 'md' ? formatted.join(', ') : formatted.join('\n');
73
+ }
74
+ const testSessionDetailFields = [
75
+ { label: 'Status', value: (session, fmt) => formatStatus(session.status, fmt) },
76
+ { label: 'Started', value: (session, fmt) => formatDate(session.startedAt, fmt) },
77
+ { label: 'Stopped', value: (session, fmt) => formatDate(session.stoppedAt, fmt) },
78
+ { label: 'Time elapsed', value: session => formatDuration(session.timeElapsed) },
79
+ { label: 'Metadata', value: (session, fmt) => formatMetadata(session.metadata, fmt) },
80
+ { label: 'Session link', value: (session, fmt) => fmt === 'md' ? session.testSessionLink : null },
81
+ { label: 'Error groups', value: (session, fmt) => formatErrorGroupSummary(session, fmt) },
82
+ { label: 'ID', value: session => session.testSessionId },
83
+ ];
84
+ function buildResultColumns(results, format) {
85
+ if (format === 'md') {
86
+ return [
87
+ { header: 'Result ID', value: result => result.testSessionResultId },
88
+ { header: 'Check ID', value: result => result.checkId ?? '-' },
89
+ { header: 'Name', value: result => result.name || '-' },
90
+ { header: 'Check Type', value: result => formatCheckType(result.checkType) },
91
+ { header: 'Status', value: (result, fmt) => formatStatus(result.status, fmt) },
92
+ { header: 'Result Type', value: result => result.resultType ?? '-' },
93
+ { header: 'Run Location', value: result => result.runLocation ?? '-' },
94
+ { header: 'Error Groups', value: (result, fmt) => formatList(result.errorGroupIds, fmt) },
95
+ ];
96
+ }
97
+ const termWidth = process.stdout.columns || 120;
98
+ const showCheckId = termWidth >= 160 && results.some(result => result.checkId);
99
+ const typeWidth = 14;
100
+ const statusWidth = 10;
101
+ const resultTypeWidth = 10;
102
+ const locationWidth = 14;
103
+ const errorGroupWidth = 14;
104
+ const resultIdWidth = showCheckId ? 38 : 0;
105
+ const checkIdWidth = showCheckId ? 38 : 0;
106
+ const fixedWidth = typeWidth + statusWidth + resultTypeWidth + locationWidth
107
+ + errorGroupWidth + resultIdWidth + checkIdWidth;
108
+ const longestName = Math.max(4, ...results.map(result => visWidth(result.name || '-')));
109
+ const nameWidth = Math.max(16, Math.min(longestName + 2, termWidth - fixedWidth, 42));
110
+ const columns = [
111
+ { header: 'Name', width: nameWidth, value: result => truncateToWidth(result.name || '-', nameWidth - 2) },
112
+ { header: 'Type', width: typeWidth, value: result => truncateToWidth(formatCheckType(result.checkType), typeWidth - 2) },
113
+ { header: 'Status', width: statusWidth, value: (result, fmt) => formatStatus(result.status, fmt) },
114
+ { header: 'Result', width: resultTypeWidth, value: result => result.resultType ? truncateToWidth(result.resultType, resultTypeWidth - 2) : chalk.dim('-') },
115
+ { header: 'Location', width: locationWidth, value: result => result.runLocation ? truncateToWidth(result.runLocation, locationWidth - 2) : chalk.dim('-') },
116
+ { header: 'Error Groups', width: errorGroupWidth, value: (result, fmt) => formatErrorGroupCount(result.errorGroupIds, fmt) },
117
+ ];
118
+ if (showCheckId) {
119
+ columns.push({ header: 'Result ID', width: resultIdWidth, value: result => chalk.dim(result.testSessionResultId) }, { header: 'Check ID', value: result => result.checkId ? chalk.dim(result.checkId) : chalk.dim('-') });
120
+ }
121
+ else {
122
+ columns.push({ header: 'Result ID', value: result => chalk.dim(result.testSessionResultId) });
123
+ }
124
+ return columns;
125
+ }
126
+ export function uniqueErrorGroupIds(session) {
127
+ return [
128
+ ...(session.errorGroupIds ?? []),
129
+ ...(session.results ?? []).flatMap(result => result.errorGroupIds ?? []),
130
+ ].filter((id, index, ids) => ids.indexOf(id) === index);
131
+ }
132
+ function errorGroupReferences(session) {
133
+ const refs = new Map();
134
+ const add = (id, source) => {
135
+ const sources = refs.get(id) ?? new Set();
136
+ sources.add(source);
137
+ refs.set(id, sources);
138
+ };
139
+ for (const id of session.errorGroupIds ?? []) {
140
+ add(id, 'session');
141
+ }
142
+ for (const result of session.results ?? []) {
143
+ const source = result.name || result.testSessionResultId;
144
+ for (const id of result.errorGroupIds ?? []) {
145
+ add(id, source);
146
+ }
147
+ }
148
+ return [...refs.entries()].map(([id, sources]) => ({ id, sources: [...sources] }));
149
+ }
150
+ function buildErrorGroupReferenceColumns(format) {
151
+ if (format === 'md') {
152
+ return [
153
+ { header: 'Source', value: ref => ref.sources.join(', ') },
154
+ { header: 'Error Group ID', value: ref => ref.id },
155
+ ];
156
+ }
157
+ const termWidth = process.stdout.columns || 120;
158
+ const idWidth = 38;
159
+ const sourceWidth = Math.max(16, Math.min(50, termWidth - idWidth));
160
+ return [
161
+ {
162
+ header: 'Source',
163
+ width: sourceWidth,
164
+ value: ref => truncateToWidth(ref.sources.join(', '), sourceWidth - 2),
165
+ },
166
+ { header: 'Error Group ID', value: ref => chalk.dim(ref.id) },
167
+ ];
168
+ }
169
+ export function formatTestSessionErrorGroupIds(session, format, options = {}) {
170
+ const refs = errorGroupReferences(session);
171
+ if (refs.length === 0)
172
+ return '';
173
+ const limit = Math.max(0, options.errorGroupsLimit ?? DEFAULT_ERROR_GROUPS_LIMIT);
174
+ if (limit === 0)
175
+ return '';
176
+ const visible = refs.slice(0, limit);
177
+ const hiddenCount = refs.length - visible.length;
178
+ const lines = [
179
+ format === 'md' ? '## Error Group IDs' : chalk.bold('ERROR GROUP IDS'),
180
+ '',
181
+ renderTable(buildErrorGroupReferenceColumns(format), visible, format),
182
+ ];
183
+ if (hiddenCount > 0) {
184
+ const showMoreCommand = `checkly test-sessions get ${session.testSessionId} --error-groups-limit ${refs.length}`;
185
+ lines.push('');
186
+ lines.push(format === 'md'
187
+ ? `*Showing ${visible.length} of ${refs.length} error group IDs. Show all: \`${showMoreCommand}\`*`
188
+ : `${chalk.dim(`Showing ${visible.length} of ${refs.length} error group IDs. Show all:`)} ${showMoreCommand}`);
189
+ }
190
+ return lines.join('\n');
191
+ }
192
+ export function formatTestSessionHints(session, format) {
193
+ const lines = [];
194
+ const errorGroupIds = uniqueErrorGroupIds(session);
195
+ if (errorGroupIds.length > 0) {
196
+ const inspectCommand = `checkly test-sessions get ${session.testSessionId} --error-group <error-group-id>`;
197
+ const rcaCommand = 'checkly rca run --test-session-error-group <error-group-id> --watch';
198
+ lines.push(format === 'md'
199
+ ? `- Inspect group: \`${inspectCommand}\``
200
+ : ` ${chalk.dim('Inspect group:')} ${inspectCommand}`);
201
+ lines.push(format === 'md'
202
+ ? `- Run RCA: \`${rcaCommand}\``
203
+ : ` ${chalk.dim('Run RCA:')} ${rcaCommand}`);
204
+ }
205
+ if (session.testSessionLink) {
206
+ lines.push(format === 'md'
207
+ ? `- Open session: ${session.testSessionLink}`
208
+ : ` ${chalk.dim('Open session:')} ${session.testSessionLink}`);
209
+ }
210
+ return lines.join('\n');
211
+ }
212
+ function formatRawErrorMessage(rawErrorMessage, format, options) {
213
+ if (!rawErrorMessage)
214
+ return null;
215
+ if (options.fullError)
216
+ return rawErrorMessage;
217
+ const maxLines = Math.max(1, options.errorLines ?? DEFAULT_ERROR_DETAIL_LINES);
218
+ const lines = rawErrorMessage.split('\n');
219
+ if (lines.length <= maxLines)
220
+ return rawErrorMessage;
221
+ const note = `Showing first ${maxLines} of ${lines.length} lines. Use --full-error to print the complete raw error.`;
222
+ const formattedNote = format === 'md' ? `_${note}_` : chalk.dim(note);
223
+ return [...lines.slice(0, maxLines), '', formattedNote].join('\n');
224
+ }
225
+ function testSessionErrorGroupDetailFields(options) {
226
+ return [
227
+ { label: 'Error', value: (group, fmt) => formatRawErrorMessage(group.rawErrorMessage, fmt, options) },
228
+ { label: 'First seen', value: (group, fmt) => formatDate(group.firstSeen, fmt) },
229
+ { label: 'Last seen', value: (group, fmt) => formatDate(group.lastSeen, fmt) },
230
+ { label: 'Archived', value: group => group.archivedUntilNextEvent ? 'yes' : 'no' },
231
+ { label: 'Project ID', value: group => group.projectId },
232
+ { label: 'Environments', value: (group, fmt) => formatList(group.environments, fmt) },
233
+ { label: 'Error hash', value: group => group.errorHash },
234
+ { label: 'ID', value: group => group.id },
235
+ ];
236
+ }
237
+ export function formatTestSessionErrorGroupDetail(group, format, options = {}) {
238
+ return renderDetailFields('Test session error group', testSessionErrorGroupDetailFields(options), group, format);
239
+ }
240
+ export function formatTestSessionDetail(session, format, options = {}) {
241
+ const lines = [
242
+ renderDetailFields(session.name, testSessionDetailFields, session, format),
243
+ ];
244
+ const results = session.results ?? [];
245
+ if (results.length > 0) {
246
+ lines.push('');
247
+ lines.push(format === 'md' ? '## Results' : chalk.bold('RESULTS'));
248
+ lines.push('');
249
+ lines.push(renderTable(buildResultColumns(results, format), results, format));
250
+ }
251
+ const errorGroupIds = formatTestSessionErrorGroupIds(session, format, options);
252
+ if (errorGroupIds) {
253
+ lines.push('');
254
+ lines.push(errorGroupIds);
255
+ }
256
+ const hints = formatTestSessionHints(session, format);
257
+ if (hints) {
258
+ lines.push('');
259
+ lines.push(format === 'md' ? '## Hints' : chalk.bold('HINTS'));
260
+ lines.push('');
261
+ lines.push(hints);
262
+ }
263
+ return lines.join('\n');
264
+ }
265
+ //# sourceMappingURL=test-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-sessions.js","sourceRoot":"","sources":["../../src/formatters/test-sessions.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ const examples = [
11
11
  description: 'Deploy your project to your Checkly account.',
12
12
  command: 'npx checkly deploy',
13
13
  },
14
+ {
15
+ description: 'Make an authenticated API request to any endpoint.',
16
+ command: 'npx checkly api /v1/checks',
17
+ },
14
18
  ];
15
19
  export default examples;
16
20
  //# sourceMappingURL=examples.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/help/examples.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAmB;IAC/B;QACE,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,kBAAkB;KAC5B;IACD;QACE,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,wCAAwC;KAClD;IACD;QACE,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,oBAAoB;KAC9B;CACF,CAAA;AACD,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/help/examples.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAmB;IAC/B;QACE,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,kBAAkB;KAC5B;IACD;QACE,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,wCAAwC;KAClD;IACD;QACE,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,oBAAoB;KAC9B;IACD;QACE,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,4BAA4B;KACtC;CACF,CAAA;AACD,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,4 @@
1
+ export interface ParsedFields {
2
+ [key: string]: unknown;
3
+ }
4
+ export declare function parseFields(fields: string[]): ParsedFields;
@@ -0,0 +1,24 @@
1
+ export function parseFields(fields) {
2
+ const result = {};
3
+ for (const entry of fields) {
4
+ const jsonIndex = entry.indexOf(':=');
5
+ if (jsonIndex !== -1) {
6
+ const key = entry.slice(0, jsonIndex);
7
+ const raw = entry.slice(jsonIndex + 2);
8
+ try {
9
+ result[key] = JSON.parse(raw);
10
+ }
11
+ catch {
12
+ throw new Error(`Invalid JSON in field "${key}": ${raw}`);
13
+ }
14
+ continue;
15
+ }
16
+ const eqIndex = entry.indexOf('=');
17
+ if (eqIndex === -1) {
18
+ throw new Error(`Invalid field format: "${entry}". Expected key=value or key:=json.`);
19
+ }
20
+ result[entry.slice(0, eqIndex)] = entry.slice(eqIndex + 1);
21
+ }
22
+ return result;
23
+ }
24
+ //# sourceMappingURL=api-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-fields.js","sourceRoot":"","sources":["../../src/helpers/api-fields.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,WAAW,CAAE,MAAgB;IAC3C,MAAM,MAAM,GAAiB,EAAE,CAAA;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;YACtC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,MAAM,GAAG,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,qCAAqC,CAAC,CAAA;QACvF,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function parseTotalFromContentRange(header: string | undefined): number | null;
@@ -0,0 +1,7 @@
1
+ export function parseTotalFromContentRange(header) {
2
+ if (!header)
3
+ return null;
4
+ const match = header.match(/\/(\d+)$/);
5
+ return match ? parseInt(match[1], 10) : null;
6
+ }
7
+ //# sourceMappingURL=content-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-range.js","sourceRoot":"","sources":["../../src/helpers/content-range.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B,CAAE,MAA0B;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC"}
@@ -1,10 +1,4 @@
1
- function parseTotalFromContentRange(header) {
2
- if (!header)
3
- return null;
4
- // Content-Range format: "0-24/300" or "*/0"
5
- const match = header.match(/\/(\d+)$/);
6
- return match ? parseInt(match[1], 10) : null;
7
- }
1
+ import { parseTotalFromContentRange } from '../helpers/content-range.js';
8
2
  class Checks {
9
3
  api;
10
4
  constructor(api) {
@@ -1 +1 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/rest/checks.ts"],"names":[],"mappings":"AAuCA,SAAS,0BAA0B,CAAE,MAA0B;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,4CAA4C;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,MAAM;IACV,GAAG,CAAe;IAClB,YAAa,GAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,CAAE,SAA2B,EAAE;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,SAA2B,EAAE;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,MAAM,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;QACnG,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,IAAI;YACrB,KAAK;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SAC1B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,SAAmD,EAAE;QACnE,MAAM,QAAQ,GAAG,GAAG,CAAA;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QACjF,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAEnC,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ;YAAE,OAAO,SAAS,CAAA;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE;YAClC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;SACpD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACrB,CACF,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,GAAG,CAAE,EAAU;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;CACF;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/rest/checks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAuCxE,MAAM,MAAM;IACV,GAAG,CAAe;IAClB,YAAa,GAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,CAAE,SAA2B,EAAE;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,SAA2B,EAAE;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,MAAM,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;QACnG,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,IAAI;YACrB,KAAK;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SAC1B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,SAAmD,EAAE;QACnE,MAAM,QAAQ,GAAG,GAAG,CAAA;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QACjF,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAEnC,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ;YAAE,OAAO,SAAS,CAAA;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,EAAE;YAClC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;SACpD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACrB,CACF,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,GAAG,CAAE,EAAU;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;CACF;AAED,eAAe,MAAM,CAAA"}
@@ -57,6 +57,42 @@ export type TriggerTestSessionResponse = {
57
57
  testResultIds: Record<string, string>;
58
58
  sequenceIds: Record<string, SequenceId>;
59
59
  };
60
+ export type TestSessionMetadata = {
61
+ environment?: string;
62
+ repoUrl?: string;
63
+ commitId?: string;
64
+ commitOwner?: string;
65
+ commitMessage?: string;
66
+ branchName?: string;
67
+ };
68
+ export type TestSessionStatus = 'RUNNING' | 'FAILED' | 'PASSED' | 'CANCELLED';
69
+ export type TestSessionResult = {
70
+ testSessionResultId: string;
71
+ testSessionResultLink: string;
72
+ checkId?: string | null;
73
+ checkType: string;
74
+ name?: string;
75
+ runLocation?: string;
76
+ resultType?: string;
77
+ status: TestSessionStatus;
78
+ hasErrors: boolean;
79
+ hasFailures: boolean;
80
+ isDegraded: boolean;
81
+ aborted: boolean;
82
+ errorGroupIds?: string[];
83
+ };
84
+ export type TestSessionDetail = {
85
+ testSessionId: string;
86
+ testSessionLink: string;
87
+ name: string;
88
+ status: TestSessionStatus;
89
+ startedAt: string;
90
+ stoppedAt: string | null;
91
+ timeElapsed: number;
92
+ metadata?: TestSessionMetadata;
93
+ errorGroupIds?: string[];
94
+ results?: TestSessionResult[];
95
+ };
60
96
  export declare class NoMatchingChecksError extends Error {
61
97
  constructor(options?: ErrorOptions);
62
98
  }
@@ -68,6 +104,7 @@ declare class TestSessions {
68
104
  * @throws {NoMatchingChecksError} If no checks matched the request.
69
105
  */
70
106
  trigger(payload: TriggerTestSessionRequest): Promise<import("axios").AxiosResponse<TriggerTestSessionResponse, any, {}>>;
107
+ get(id: string): Promise<import("axios").AxiosResponse<TestSessionDetail, any, {}>>;
71
108
  getShortLink(id: string): Promise<import("axios").AxiosResponse<{
72
109
  link: string;
73
110
  }, any, {}>>;
@@ -36,6 +36,9 @@ class TestSessions {
36
36
  throw err;
37
37
  }
38
38
  }
39
+ get(id) {
40
+ return this.api.get(`/v1/test-sessions/${id}`);
41
+ }
39
42
  getShortLink(id) {
40
43
  return this.api.get(`/next/test-sessions/${id}/link`);
41
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test-sessions.js","sourceRoot":"","sources":["../../src/rest/test-sessions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AA0C5C,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAa,OAAsB;QACjC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,YAAY;IAChB,GAAG,CAAe;IAClB,YAAa,GAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,OAA8B;QACvC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE;YAC7D,gBAAgB,EAAE,mBAAmB;SACtC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAE,OAAkC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAA6B,6BAA6B,EAAE,OAAO,CAAC,CAAA;YAEpG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,wFAAwF;gBACxF,wFAAwF;gBACxF,MAAM,IAAI,qBAAqB,EAAE,CAAA;YACnC,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,wBAAwB,EAAE,CAAC;gBACrF,MAAM,IAAI,qBAAqB,EAAE,CAAA;YACnC,CAAC;YAED,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,YAAY,CAAE,EAAU;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAmB,uBAAuB,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,mBAAmB,CAAE,aAAqB,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAwB,uBAAuB,aAAa,YAAY,YAAY,QAAQ,CAAC,CAAA;IAClH,CAAC;CACF;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"test-sessions.js","sourceRoot":"","sources":["../../src/rest/test-sessions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAkF5C,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAa,OAAsB;QACjC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,YAAY;IAChB,GAAG,CAAe;IAClB,YAAa,GAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,OAA8B;QACvC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE;YAC7D,gBAAgB,EAAE,mBAAmB;SACtC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAE,OAAkC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAA6B,6BAA6B,EAAE,OAAO,CAAC,CAAA;YAEpG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,wFAAwF;gBACxF,wFAAwF;gBACxF,MAAM,IAAI,qBAAqB,EAAE,CAAA;YACnC,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,wBAAwB,EAAE,CAAC;gBACrF,MAAM,IAAI,qBAAqB,EAAE,CAAA;YACnC,CAAC;YAED,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,GAAG,CAAE,EAAU;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,qBAAqB,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,YAAY,CAAE,EAAU;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAmB,uBAAuB,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,mBAAmB,CAAE,aAAqB,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAwB,uBAAuB,aAAa,YAAY,YAAY,QAAQ,CAAC,CAAA;IAClH,CAAC;CACF;AAED,eAAe,YAAY,CAAA"}
@@ -1,5 +1,104 @@
1
1
  {
2
2
  "commands": {
3
+ "api": {
4
+ "aliases": [],
5
+ "args": {
6
+ "endpoint": {
7
+ "description": "API endpoint path (e.g. /v1/checks).",
8
+ "name": "endpoint",
9
+ "required": true
10
+ }
11
+ },
12
+ "description": "Make an authenticated HTTP request to the Checkly API.\nPass-through for any endpoint — handles auth automatically.\nSee https://www.checklyhq.com/docs/api for available endpoints.\nOpenAPI spec: https://api.checklyhq.com/openapi.json",
13
+ "examples": [
14
+ "checkly api /v1/checks",
15
+ "checkly api /v1/checks -X GET --jq '.[].name'",
16
+ "checkly api /v1/checks -X POST -F name=MyCheck -F activated:=true",
17
+ "checkly api /v1/checks -X GET -F limit=5",
18
+ "echo '{\"name\":\"New\"}' | checkly api /v1/checks -X POST --input -"
19
+ ],
20
+ "flags": {
21
+ "method": {
22
+ "char": "X",
23
+ "description": "HTTP method.",
24
+ "name": "method",
25
+ "hasDynamicHelp": false,
26
+ "multiple": false,
27
+ "options": [
28
+ "GET",
29
+ "POST",
30
+ "PUT",
31
+ "PATCH",
32
+ "DELETE"
33
+ ],
34
+ "type": "option"
35
+ },
36
+ "field": {
37
+ "char": "F",
38
+ "description": "Add a field: key=value (string) or key:=value (parsed as JSON).",
39
+ "name": "field",
40
+ "default": [],
41
+ "hasDynamicHelp": false,
42
+ "multiple": true,
43
+ "type": "option"
44
+ },
45
+ "header": {
46
+ "char": "H",
47
+ "description": "Custom HTTP header: \"Key: Value\".",
48
+ "name": "header",
49
+ "default": [],
50
+ "hasDynamicHelp": false,
51
+ "multiple": true,
52
+ "type": "option"
53
+ },
54
+ "jq": {
55
+ "description": "Filter JSON output with a jq expression (requires jq installed).",
56
+ "name": "jq",
57
+ "hasDynamicHelp": false,
58
+ "multiple": false,
59
+ "type": "option"
60
+ },
61
+ "input": {
62
+ "description": "Request body from file path, or \"-\" for stdin.",
63
+ "name": "input",
64
+ "hasDynamicHelp": false,
65
+ "multiple": false,
66
+ "type": "option"
67
+ },
68
+ "include": {
69
+ "char": "i",
70
+ "description": "Include HTTP status and response headers in the output.",
71
+ "name": "include",
72
+ "allowNo": false,
73
+ "type": "boolean"
74
+ },
75
+ "verbose": {
76
+ "description": "Print request and response headers to stderr.",
77
+ "name": "verbose",
78
+ "allowNo": false,
79
+ "type": "boolean"
80
+ }
81
+ },
82
+ "hasDynamicHelp": false,
83
+ "hidden": false,
84
+ "hiddenAliases": [],
85
+ "id": "api",
86
+ "pluginAlias": "checkly",
87
+ "pluginName": "checkly",
88
+ "pluginType": "core",
89
+ "strict": true,
90
+ "enableJsonFlag": false,
91
+ "coreCommand": false,
92
+ "readOnly": false,
93
+ "destructive": true,
94
+ "idempotent": false,
95
+ "isESM": true,
96
+ "relativePath": [
97
+ "dist",
98
+ "commands",
99
+ "api.js"
100
+ ]
101
+ },
3
102
  "authCommand": {
4
103
  "aliases": [],
5
104
  "args": {},
@@ -2754,7 +2853,75 @@
2754
2853
  "status-pages",
2755
2854
  "list.js"
2756
2855
  ]
2856
+ },
2857
+ "test-sessions:get": {
2858
+ "aliases": [],
2859
+ "args": {
2860
+ "id": {
2861
+ "description": "The ID of the test session to retrieve.",
2862
+ "name": "id",
2863
+ "required": true
2864
+ }
2865
+ },
2866
+ "description": "Get details of a recorded test session, including result error groups for RCA.",
2867
+ "flags": {
2868
+ "error-group": {
2869
+ "description": "Show details for a test session error group ID from this session.",
2870
+ "name": "error-group",
2871
+ "hasDynamicHelp": false,
2872
+ "multiple": false,
2873
+ "type": "option"
2874
+ },
2875
+ "error-groups-limit": {
2876
+ "description": "Number of error group IDs to show in the session summary.",
2877
+ "name": "error-groups-limit",
2878
+ "default": 5,
2879
+ "hasDynamicHelp": false,
2880
+ "multiple": false,
2881
+ "type": "option"
2882
+ },
2883
+ "full-error": {
2884
+ "description": "Print the complete raw error when showing a test session error group.",
2885
+ "name": "full-error",
2886
+ "allowNo": false,
2887
+ "type": "boolean"
2888
+ },
2889
+ "output": {
2890
+ "char": "o",
2891
+ "description": "Output format.",
2892
+ "name": "output",
2893
+ "default": "detail",
2894
+ "hasDynamicHelp": false,
2895
+ "multiple": false,
2896
+ "options": [
2897
+ "detail",
2898
+ "json",
2899
+ "md"
2900
+ ],
2901
+ "type": "option"
2902
+ }
2903
+ },
2904
+ "hasDynamicHelp": false,
2905
+ "hidden": false,
2906
+ "hiddenAliases": [],
2907
+ "id": "test-sessions:get",
2908
+ "pluginAlias": "checkly",
2909
+ "pluginName": "checkly",
2910
+ "pluginType": "core",
2911
+ "strict": true,
2912
+ "enableJsonFlag": false,
2913
+ "coreCommand": false,
2914
+ "readOnly": true,
2915
+ "destructive": false,
2916
+ "idempotent": true,
2917
+ "isESM": true,
2918
+ "relativePath": [
2919
+ "dist",
2920
+ "commands",
2921
+ "test-sessions",
2922
+ "get.js"
2923
+ ]
2757
2924
  }
2758
2925
  },
2759
- "version": "8.2.0"
2926
+ "version": "8.3.0"
2760
2927
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "checkly",
3
- "version": "8.2.0",
3
+ "version": "8.3.0",
4
4
  "type": "module",
5
5
  "description": "Checkly CLI",
6
6
  "main": "dist/index.js",
@@ -75,6 +75,9 @@
75
75
  },
76
76
  "status-pages": {
77
77
  "description": "List and manage status pages in your Checkly account."
78
+ },
79
+ "test-sessions": {
80
+ "description": "Inspect recorded test sessions."
78
81
  }
79
82
  },
80
83
  "helpClass": "./dist/help/help-extension.js"