checkly 8.4.0 → 8.5.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.
- package/dist/ai-context/checkly.rules.md +153 -1
- package/dist/ai-context/context.d.ts +13 -1
- package/dist/ai-context/context.js +14 -1
- package/dist/ai-context/context.js.map +1 -1
- package/dist/ai-context/public-skills/checkly/SKILL.md +3 -1
- package/dist/ai-context/skills-command/references/configure-api-checks.md +1 -0
- package/dist/ai-context/skills-command/references/configure-browser-checks.md +1 -0
- package/dist/ai-context/skills-command/references/configure-check-groups.md +1 -0
- package/dist/ai-context/skills-command/references/configure-environment.md +92 -0
- package/dist/ai-context/skills-command/references/configure-multistep-checks.md +1 -0
- package/dist/ai-context/skills-command/references/configure-playwright-checks.md +50 -0
- package/dist/ai-context/skills-command/references/configure.md +6 -1
- package/dist/ai-context/skills-command/references/investigate-test-sessions.md +125 -0
- package/dist/ai-context/skills-command/references/investigate.md +3 -0
- package/dist/commands/alert-channels/get.d.ts +14 -0
- package/dist/commands/alert-channels/get.js +50 -0
- package/dist/commands/alert-channels/get.js.map +1 -0
- package/dist/commands/alert-channels/list.d.ts +13 -0
- package/dist/commands/alert-channels/list.js +64 -0
- package/dist/commands/alert-channels/list.js.map +1 -0
- package/dist/commands/alert-channels/logs.d.ts +19 -0
- package/dist/commands/alert-channels/logs.js +91 -0
- package/dist/commands/alert-channels/logs.js.map +1 -0
- package/dist/commands/rca/run.d.ts +1 -0
- package/dist/commands/rca/run.js +6 -3
- package/dist/commands/rca/run.js.map +1 -1
- package/dist/commands/test-sessions/get.d.ts +1 -0
- package/dist/commands/test-sessions/get.js +28 -1
- package/dist/commands/test-sessions/get.js.map +1 -1
- package/dist/commands/test-sessions/list.d.ts +22 -0
- package/dist/commands/test-sessions/list.js +190 -0
- package/dist/commands/test-sessions/list.js.map +1 -0
- package/dist/constructs/playwright-check.d.ts +13 -5
- package/dist/constructs/playwright-check.js +3 -1
- package/dist/constructs/playwright-check.js.map +1 -1
- package/dist/formatters/alert-channels.d.ts +15 -0
- package/dist/formatters/alert-channels.js +259 -0
- package/dist/formatters/alert-channels.js.map +1 -0
- package/dist/formatters/checks.js +11 -19
- package/dist/formatters/checks.js.map +1 -1
- package/dist/formatters/render.d.ts +7 -0
- package/dist/formatters/render.js +73 -0
- package/dist/formatters/render.js.map +1 -1
- package/dist/formatters/test-sessions.d.ts +4 -1
- package/dist/formatters/test-sessions.js +93 -0
- package/dist/formatters/test-sessions.js.map +1 -1
- package/dist/helpers/number.d.ts +3 -0
- package/dist/helpers/number.js +20 -0
- package/dist/helpers/number.js.map +1 -0
- package/dist/rest/alert-channels.d.ts +52 -0
- package/dist/rest/alert-channels.js +23 -0
- package/dist/rest/alert-channels.js.map +1 -0
- package/dist/rest/alert-notifications.d.ts +39 -0
- package/dist/rest/alert-notifications.js +19 -0
- package/dist/rest/alert-notifications.js.map +1 -0
- package/dist/rest/api.d.ts +4 -0
- package/dist/rest/api.js +4 -0
- package/dist/rest/api.js.map +1 -1
- package/dist/rest/rca.d.ts +2 -2
- package/dist/rest/rca.js +4 -4
- package/dist/rest/rca.js.map +1 -1
- package/dist/rest/test-sessions.d.ts +51 -0
- package/dist/rest/test-sessions.js +24 -1
- package/dist/rest/test-sessions.js.map +1 -1
- package/oclif.manifest.json +571 -237
- package/package.json +4 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Investigating Test Sessions
|
|
2
|
+
|
|
3
|
+
Use this flow when a user asks you to run a session, inspect recorded test-session results, investigate test-session error groups, run root cause analysis, or retrieve result logs, traces, videos, screenshots, and other assets.
|
|
4
|
+
|
|
5
|
+
Read-only inspection commands execute immediately. `rca run` starts a new analysis, but it does not mutate checks or monitors.
|
|
6
|
+
|
|
7
|
+
## Run or trigger a recorded session
|
|
8
|
+
|
|
9
|
+
`checkly test`, `checkly trigger`, and `checkly pw-test` record results as a test session by default. Use `--no-record` only when the user explicitly does not want a recorded session.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx checkly test --test-session-name "Checkout regression"
|
|
13
|
+
npx checkly test --record --test-session-name "Checkout regression"
|
|
14
|
+
npx checkly trigger --tags production --test-session-name "Production smoke"
|
|
15
|
+
npx checkly pw-test --test-session-name "Playwright suite"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Useful flags:
|
|
19
|
+
- `--location <region>` or `--private-location <slug>` - choose where checks run.
|
|
20
|
+
- `-e, --env KEY=value` or `--env-file <path>` - pass runtime environment variables.
|
|
21
|
+
- `--timeout <seconds>` - wait for session completion before the command exits.
|
|
22
|
+
- `-d, --detach` - keep cloud execution running if the local CLI is cancelled.
|
|
23
|
+
- `-r, --reporter json` - capture machine-readable run output, including test session IDs when available.
|
|
24
|
+
|
|
25
|
+
If the command output includes a test session ID or link, use it directly with `test-sessions get`.
|
|
26
|
+
|
|
27
|
+
## Find a test session
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx checkly test-sessions list
|
|
31
|
+
npx checkly test-sessions list --status failed --limit 10
|
|
32
|
+
npx checkly test-sessions list --branch main --provider github
|
|
33
|
+
npx checkly test-sessions list --search "checkout"
|
|
34
|
+
npx checkly test-sessions list --error-group <test-session-error-group-id>
|
|
35
|
+
npx checkly test-sessions list --output json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Flags:
|
|
39
|
+
- `-l, --limit <n>` - number of sessions to return (1-100, default 20).
|
|
40
|
+
- `--cursor <nextId>` - fetch the next cursor page.
|
|
41
|
+
- `--from <date>` / `--to <date>` - filter by ISO date or Unix timestamp in seconds.
|
|
42
|
+
- `--status <status>` - `running`, `failed`, `passed`, or `cancelled`; repeat or comma-separate.
|
|
43
|
+
- `--provider <provider>` - `github`, `vercel`, `api`, `trigger`, or `pw_reporter`; repeat or comma-separate.
|
|
44
|
+
- `--branch <name>` - filter by Git branch; repeat or comma-separate.
|
|
45
|
+
- `--user <id>` and `--no-users` - filter by commit owner/invoking user, or include sessions without either.
|
|
46
|
+
- `-s, --search <text>` - search test-session text fields.
|
|
47
|
+
- `--error-group <id>` - find sessions that include a specific test-session error group.
|
|
48
|
+
- `-o, --output <format>` - `table` (default), `json`, or `md`.
|
|
49
|
+
|
|
50
|
+
JSON output uses the stable list envelope:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"data": [],
|
|
55
|
+
"pagination": {
|
|
56
|
+
"nextId": null,
|
|
57
|
+
"length": 0
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Inspect a test session
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx checkly test-sessions get <test-session-id>
|
|
66
|
+
npx checkly test-sessions get <test-session-id> --watch
|
|
67
|
+
npx checkly test-sessions get <test-session-id> --output json
|
|
68
|
+
npx checkly test-sessions get <test-session-id> --error-groups-limit 20
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Flags:
|
|
72
|
+
- `-w, --watch` - wait for a running session to complete before rendering.
|
|
73
|
+
- `--error-groups-limit <n>` - number of error group IDs to show in detail output (default 5).
|
|
74
|
+
- `-o, --output <format>` - `detail` (default), `json`, or `md`.
|
|
75
|
+
|
|
76
|
+
The detail view shows the session status, metadata, result rows, test-session result IDs, check IDs when available, and test-session error group IDs. Prefer `--watch` before investigating failures so you do not act on partial results.
|
|
77
|
+
|
|
78
|
+
Use `--output json` when you need exact fields, result links, or asset URLs. For Playwright Check Suite results, inspect result payload fields such as Playwright result details, traces, videos, screenshots, reports, and links when present.
|
|
79
|
+
|
|
80
|
+
## Inspect a test-session error group
|
|
81
|
+
|
|
82
|
+
Use only error group IDs shown by `test-sessions get`. Test-session error groups are separate from check error groups, so do not pass them to `checks get --error-group`.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx checkly test-sessions get <test-session-id> --error-group <test-session-error-group-id>
|
|
86
|
+
npx checkly test-sessions get <test-session-id> --error-group <test-session-error-group-id> --full-error
|
|
87
|
+
npx checkly test-sessions get <test-session-id> --error-group <test-session-error-group-id> --output json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Flags:
|
|
91
|
+
- `--full-error` - print the complete raw error for the selected test-session error group.
|
|
92
|
+
- `-w, --watch` - wait for session completion before validating and fetching the error group.
|
|
93
|
+
- `-o, --output <format>` - `detail` (default), `json`, or `md`.
|
|
94
|
+
|
|
95
|
+
Look for `rootCauseAnalyses` in JSON output. If one already exists, reuse it before starting a new RCA.
|
|
96
|
+
|
|
97
|
+
## Run root cause analysis
|
|
98
|
+
|
|
99
|
+
For test-session error groups, use `--test-session-error-group` (short alias `-te`). For regular check error groups, use `--error-group` (short alias `-e`).
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npx checkly rca run --test-session-error-group <test-session-error-group-id> --watch
|
|
103
|
+
npx checkly rca run -te <test-session-error-group-id> --user-context "Started after checkout deploy" --watch
|
|
104
|
+
npx checkly rca get <rca-id> --watch
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Flags:
|
|
108
|
+
- `--user-context <text>` - add concise context that can improve the analysis.
|
|
109
|
+
- `-w, --watch` - wait for completion and print the analysis.
|
|
110
|
+
- `-o, --output <format>` - `detail` (default), `json`, or `md`; watch mode is only supported with detail output.
|
|
111
|
+
|
|
112
|
+
If RCA is unavailable because of plan or entitlement limits, run `npx checkly account plan --output json` and report the relevant entitlement or upgrade URL.
|
|
113
|
+
|
|
114
|
+
## Retrieve result assets
|
|
115
|
+
|
|
116
|
+
There is no dedicated `test-sessions download` command. Use the JSON outputs and links exposed by the session or result payload.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx checkly test-sessions get <test-session-id> --output json
|
|
120
|
+
npx checkly checks get <check-id> --result <test-session-result-id> --output json
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Use `test-sessions get --output json` first. If a result includes public URLs or asset fields, download those URLs directly. If a result only gives `checkId` plus `testSessionResultId`, use `checks get <check-id> --result <test-session-result-id> --output json` to fetch detailed result data; terminal output summarizes available screenshots, traces, and videos, while JSON output exposes the underlying URLs/fields.
|
|
124
|
+
|
|
125
|
+
Do not invent asset names or assume every result has the same artifact set. Some results have screenshots only, some have traces or videos, and some have no downloadable assets.
|
|
@@ -10,3 +10,6 @@ Parse and read further reference documentation when tasked with investigating an
|
|
|
10
10
|
|
|
11
11
|
### `npx checkly skills investigate checks`
|
|
12
12
|
Inspecting checks (`checks list`, `checks get`) and triggering on-demand runs
|
|
13
|
+
|
|
14
|
+
### `npx checkly skills investigate test-sessions`
|
|
15
|
+
Run and inspect recorded test sessions, drill into test-session error groups, run RCA, and retrieve result assets
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthCommand } from '../authCommand.js';
|
|
2
|
+
export default class AlertChannelsGet 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
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { AuthCommand } from '../authCommand.js';
|
|
4
|
+
import { outputFlag } from '../../helpers/flags.js';
|
|
5
|
+
import { parsePositiveInteger } from '../../helpers/number.js';
|
|
6
|
+
import * as api from '../../rest/api.js';
|
|
7
|
+
import { formatAlertChannelDetail } from '../../formatters/alert-channels.js';
|
|
8
|
+
export default class AlertChannelsGet extends AuthCommand {
|
|
9
|
+
static hidden = false;
|
|
10
|
+
static readOnly = true;
|
|
11
|
+
static idempotent = true;
|
|
12
|
+
static description = 'Get details of an alert channel.';
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: 'The alert channel ID to retrieve.',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static flags = {
|
|
20
|
+
output: outputFlag({ default: 'detail' }),
|
|
21
|
+
};
|
|
22
|
+
async run() {
|
|
23
|
+
const { args, flags } = await this.parse(AlertChannelsGet);
|
|
24
|
+
this.style.outputFormat = flags.output;
|
|
25
|
+
try {
|
|
26
|
+
const id = parsePositiveInteger(args.id, 'Alert channel ID');
|
|
27
|
+
const alertChannel = await api.alertChannels.get(id);
|
|
28
|
+
if (flags.output === 'json') {
|
|
29
|
+
this.log(JSON.stringify(alertChannel, null, 2));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const fmt = flags.output === 'md' ? 'md' : 'terminal';
|
|
33
|
+
if (fmt === 'md') {
|
|
34
|
+
this.log(formatAlertChannelDetail(alertChannel, fmt));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const output = [];
|
|
38
|
+
output.push(formatAlertChannelDetail(alertChannel, fmt));
|
|
39
|
+
output.push('');
|
|
40
|
+
output.push(` ${chalk.dim('View logs:')} checkly alert-channels logs ${id}`);
|
|
41
|
+
output.push(` ${chalk.dim('Back to list:')} checkly alert-channels list`);
|
|
42
|
+
this.log(output.join('\n'));
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
this.style.longError('Failed to get alert channel details.', err);
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/alert-channels/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAA;AAExC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAE7E,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IAEvD,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;KAC1C,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAA;QAEtC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAA;YAC5D,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC/C,OAAM;YACR,CAAC;YAED,MAAM,GAAG,GAAiB,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;YAEnE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAA;gBACrD,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAA;YACxD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAA;YAChF,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAA;YAE1E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAA;YACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthCommand } from '../authCommand.js';
|
|
2
|
+
export default class AlertChannelsList extends AuthCommand {
|
|
3
|
+
static hidden: boolean;
|
|
4
|
+
static readOnly: boolean;
|
|
5
|
+
static idempotent: boolean;
|
|
6
|
+
static description: string;
|
|
7
|
+
static flags: {
|
|
8
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { AuthCommand } from '../authCommand.js';
|
|
3
|
+
import { outputFlag } from '../../helpers/flags.js';
|
|
4
|
+
import { validateIntegerRange } from '../../helpers/number.js';
|
|
5
|
+
import * as api from '../../rest/api.js';
|
|
6
|
+
import { formatAlertChannelNavigationHints, formatAlertChannelPaginationInfo, formatAlertChannels, } from '../../formatters/alert-channels.js';
|
|
7
|
+
export default class AlertChannelsList extends AuthCommand {
|
|
8
|
+
static hidden = false;
|
|
9
|
+
static readOnly = true;
|
|
10
|
+
static idempotent = true;
|
|
11
|
+
static description = 'List all alert channels in your account.';
|
|
12
|
+
static flags = {
|
|
13
|
+
limit: Flags.integer({
|
|
14
|
+
char: 'l',
|
|
15
|
+
description: 'Number of alert channels to return (1-100).',
|
|
16
|
+
default: 25,
|
|
17
|
+
}),
|
|
18
|
+
page: Flags.integer({
|
|
19
|
+
char: 'p',
|
|
20
|
+
description: 'Page number.',
|
|
21
|
+
default: 1,
|
|
22
|
+
}),
|
|
23
|
+
output: outputFlag({ default: 'table' }),
|
|
24
|
+
};
|
|
25
|
+
async run() {
|
|
26
|
+
const { flags } = await this.parse(AlertChannelsList);
|
|
27
|
+
this.style.outputFormat = flags.output;
|
|
28
|
+
try {
|
|
29
|
+
const limit = validateIntegerRange(flags.limit, 'Limit', 1, 100);
|
|
30
|
+
const page = validateIntegerRange(flags.page, 'Page', 1, Number.MAX_SAFE_INTEGER);
|
|
31
|
+
const paginated = await api.alertChannels.getAllPaginated({ limit, page });
|
|
32
|
+
const pagination = { page, limit, total: paginated.total };
|
|
33
|
+
if (flags.output === 'json') {
|
|
34
|
+
const totalPages = Math.ceil(paginated.total / limit);
|
|
35
|
+
this.log(JSON.stringify({
|
|
36
|
+
data: paginated.alertChannels,
|
|
37
|
+
pagination: { page, limit, total: paginated.total, totalPages },
|
|
38
|
+
}, null, 2));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (paginated.total === 0) {
|
|
42
|
+
this.log('No alert channels found.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const fmt = flags.output === 'md' ? 'md' : 'terminal';
|
|
46
|
+
if (fmt === 'md') {
|
|
47
|
+
this.log(formatAlertChannels(paginated.alertChannels, fmt));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const output = [];
|
|
51
|
+
output.push(formatAlertChannels(paginated.alertChannels, fmt));
|
|
52
|
+
output.push('');
|
|
53
|
+
output.push(formatAlertChannelPaginationInfo(pagination));
|
|
54
|
+
output.push('');
|
|
55
|
+
output.push(formatAlertChannelNavigationHints(pagination));
|
|
56
|
+
this.log(output.join('\n'));
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
this.style.longError('Failed to list alert channels.', err);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/alert-channels/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AuthCommand } from '../authCommand.js';
|
|
2
|
+
export default class AlertChannelsLogs 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
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
from: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
to: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { AuthCommand } from '../authCommand.js';
|
|
4
|
+
import { outputFlag } from '../../helpers/flags.js';
|
|
5
|
+
import { parseNonNegativeInteger, parsePositiveInteger, validateIntegerRange, } from '../../helpers/number.js';
|
|
6
|
+
import * as api from '../../rest/api.js';
|
|
7
|
+
import { formatAlertNotificationLogs } from '../../formatters/alert-channels.js';
|
|
8
|
+
export default class AlertChannelsLogs extends AuthCommand {
|
|
9
|
+
static hidden = false;
|
|
10
|
+
static readOnly = true;
|
|
11
|
+
static idempotent = true;
|
|
12
|
+
static description = 'List notification logs for an alert channel.';
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: 'The alert channel ID to retrieve logs for.',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static flags = {
|
|
20
|
+
limit: Flags.integer({
|
|
21
|
+
char: 'l',
|
|
22
|
+
description: 'Number of logs to return (1-100).',
|
|
23
|
+
default: 25,
|
|
24
|
+
}),
|
|
25
|
+
page: Flags.integer({
|
|
26
|
+
char: 'p',
|
|
27
|
+
description: 'Page number.',
|
|
28
|
+
default: 1,
|
|
29
|
+
}),
|
|
30
|
+
from: Flags.integer({
|
|
31
|
+
description: 'Unix timestamp for the start of the log window.',
|
|
32
|
+
}),
|
|
33
|
+
to: Flags.integer({
|
|
34
|
+
description: 'Unix timestamp for the end of the log window.',
|
|
35
|
+
}),
|
|
36
|
+
status: Flags.string({
|
|
37
|
+
char: 's',
|
|
38
|
+
description: 'Filter logs by status.',
|
|
39
|
+
options: ['failed'],
|
|
40
|
+
}),
|
|
41
|
+
output: outputFlag({ default: 'table' }),
|
|
42
|
+
};
|
|
43
|
+
async run() {
|
|
44
|
+
const { args, flags } = await this.parse(AlertChannelsLogs);
|
|
45
|
+
this.style.outputFormat = flags.output;
|
|
46
|
+
try {
|
|
47
|
+
const id = parsePositiveInteger(args.id, 'Alert channel ID');
|
|
48
|
+
const limit = validateIntegerRange(flags.limit, 'Limit', 1, 100);
|
|
49
|
+
const page = parsePositiveInteger(flags.page, 'Page');
|
|
50
|
+
const params = {
|
|
51
|
+
alertChannelId: id,
|
|
52
|
+
limit,
|
|
53
|
+
page,
|
|
54
|
+
};
|
|
55
|
+
if (flags.from !== undefined)
|
|
56
|
+
params.from = parseNonNegativeInteger(flags.from, 'From');
|
|
57
|
+
if (flags.to !== undefined)
|
|
58
|
+
params.to = parseNonNegativeInteger(flags.to, 'To');
|
|
59
|
+
if (flags.status === 'failed')
|
|
60
|
+
params.hasFailures = true;
|
|
61
|
+
const logs = await api.alertNotifications.getAll(params);
|
|
62
|
+
const totalPages = Math.ceil(logs.total / limit);
|
|
63
|
+
if (flags.output === 'json') {
|
|
64
|
+
this.log(JSON.stringify({
|
|
65
|
+
data: logs.data,
|
|
66
|
+
pagination: { page, limit, total: logs.total, totalPages },
|
|
67
|
+
}, null, 2));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const fmt = flags.output === 'md' ? 'md' : 'terminal';
|
|
71
|
+
if (fmt === 'md') {
|
|
72
|
+
this.log(formatAlertNotificationLogs(logs.data, fmt));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (logs.data.length === 0) {
|
|
76
|
+
this.log('No alert channel logs found.');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const output = [];
|
|
80
|
+
output.push(formatAlertNotificationLogs(logs.data, fmt));
|
|
81
|
+
output.push('');
|
|
82
|
+
output.push(chalk.dim(`Showing ${logs.data.length} of ${logs.total} logs (page ${page}/${totalPages})`));
|
|
83
|
+
this.log(output.join('\n'));
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
this.style.longError('Failed to list alert channel logs.', err);
|
|
87
|
+
process.exitCode = 1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/alert-channels/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export default class RcaRun extends AuthCommand {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
'error-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
'test-session-error-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'user-context': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
12
|
watch: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
};
|
package/dist/commands/rca/run.js
CHANGED
|
@@ -10,7 +10,7 @@ export default class RcaRun extends AuthCommand {
|
|
|
10
10
|
static readOnly = false;
|
|
11
11
|
static idempotent = false;
|
|
12
12
|
static description = 'Trigger a root cause analysis for a check or test session error group.';
|
|
13
|
-
static usage = 'rca run [-e <value> | -te <value>] [-w] [-o detail|json|md]';
|
|
13
|
+
static usage = 'rca run [-e <value> | -te <value>] [--user-context <text>] [-w] [-o detail|json|md]';
|
|
14
14
|
static flags = {
|
|
15
15
|
'error-group': Flags.string({
|
|
16
16
|
char: 'e',
|
|
@@ -22,6 +22,9 @@ export default class RcaRun extends AuthCommand {
|
|
|
22
22
|
description: 'The test session error group ID to analyze.',
|
|
23
23
|
helpLabel: '-te, --test-session-error-group',
|
|
24
24
|
}),
|
|
25
|
+
'user-context': Flags.string({
|
|
26
|
+
description: 'Extra context to pass into the root cause analysis.',
|
|
27
|
+
}),
|
|
25
28
|
'watch': Flags.boolean({
|
|
26
29
|
char: 'w',
|
|
27
30
|
description: 'Wait for the analysis to complete and display the result.',
|
|
@@ -49,7 +52,7 @@ export default class RcaRun extends AuthCommand {
|
|
|
49
52
|
if (source.type === 'error-group') {
|
|
50
53
|
// Fetch the error group to get the checkId for navigation hints
|
|
51
54
|
const { data: errorGroup } = await api.errorGroups.get(source.id);
|
|
52
|
-
const response = await api.rca.trigger(source.id);
|
|
55
|
+
const response = await api.rca.trigger(source.id, flags['user-context']);
|
|
53
56
|
rcaId = response.data.id;
|
|
54
57
|
pendingInfo = {
|
|
55
58
|
rcaId,
|
|
@@ -62,7 +65,7 @@ export default class RcaRun extends AuthCommand {
|
|
|
62
65
|
}
|
|
63
66
|
else {
|
|
64
67
|
await api.testSessionErrorGroups.get(source.id);
|
|
65
|
-
const response = await api.rca.triggerTestSessionErrorGroup(source.id);
|
|
68
|
+
const response = await api.rca.triggerTestSessionErrorGroup(source.id, flags['user-context']);
|
|
66
69
|
rcaId = response.data.id;
|
|
67
70
|
pendingInfo = {
|
|
68
71
|
rcaId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/rca/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE9E,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,MAAM,CAAC,UAAU,GAAG,KAAK,CAAA;IACzB,MAAM,CAAC,WAAW,GAAG,wEAAwE,CAAA;IAC7F,MAAM,CAAC,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/rca/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export default class TestSessionsGet extends AuthCommand {
|
|
|
11
11
|
'error-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
'error-groups-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'full-error': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
watch: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
15
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<void>;
|
|
@@ -26,13 +26,40 @@ export default class TestSessionsGet extends AuthCommand {
|
|
|
26
26
|
description: 'Print the complete raw error when showing a test session error group.',
|
|
27
27
|
default: false,
|
|
28
28
|
}),
|
|
29
|
+
'watch': Flags.boolean({
|
|
30
|
+
char: 'w',
|
|
31
|
+
description: 'Watch a running test session until it completes before rendering.',
|
|
32
|
+
default: false,
|
|
33
|
+
}),
|
|
29
34
|
'output': outputFlag({ default: 'detail' }),
|
|
30
35
|
};
|
|
31
36
|
async run() {
|
|
32
37
|
const { args, flags } = await this.parse(TestSessionsGet);
|
|
33
38
|
this.style.outputFormat = flags.output;
|
|
34
39
|
try {
|
|
35
|
-
|
|
40
|
+
let testSession;
|
|
41
|
+
if (flags.watch) {
|
|
42
|
+
const showAction = flags.output === 'detail';
|
|
43
|
+
if (showAction) {
|
|
44
|
+
this.style.actionStart('Watching test session until completion...');
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
testSession = await api.testSessions.pollUntilComplete(args.id);
|
|
48
|
+
if (showAction) {
|
|
49
|
+
this.style.actionSuccess();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
if (showAction) {
|
|
54
|
+
this.style.actionFailure();
|
|
55
|
+
}
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const { data } = await api.testSessions.get(args.id);
|
|
61
|
+
testSession = data;
|
|
62
|
+
}
|
|
36
63
|
if (flags['error-group']) {
|
|
37
64
|
const errorGroupIds = uniqueErrorGroupIds(testSession);
|
|
38
65
|
if (!errorGroupIds.includes(flags['error-group'])) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/test-sessions/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAA;AACxC,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/test-sessions/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AuthCommand } from '../authCommand.js';
|
|
2
|
+
export default class TestSessionsList extends AuthCommand {
|
|
3
|
+
static hidden: boolean;
|
|
4
|
+
static readOnly: boolean;
|
|
5
|
+
static idempotent: boolean;
|
|
6
|
+
static description: string;
|
|
7
|
+
static flags: {
|
|
8
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
cursor: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
to: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
status: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
branch: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
user: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'no-users': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
provider: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'error-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
};
|
|
21
|
+
run(): Promise<void>;
|
|
22
|
+
}
|