@observeone/cli 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +36 -0
  2. package/dist/README.md +36 -0
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +31 -3
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/resource-command.factory.d.ts.map +1 -1
  7. package/dist/commands/resource-command.factory.js +22 -3
  8. package/dist/commands/resource-command.factory.js.map +1 -1
  9. package/dist/commands/suite/delete.d.ts +6 -0
  10. package/dist/commands/suite/delete.d.ts.map +1 -0
  11. package/dist/commands/suite/delete.js +31 -0
  12. package/dist/commands/suite/delete.js.map +1 -0
  13. package/dist/commands/suite/formatters.d.ts +7 -0
  14. package/dist/commands/suite/formatters.d.ts.map +1 -0
  15. package/dist/commands/suite/formatters.js +100 -0
  16. package/dist/commands/suite/formatters.js.map +1 -0
  17. package/dist/commands/suite/generate.d.ts +6 -0
  18. package/dist/commands/suite/generate.d.ts.map +1 -0
  19. package/dist/commands/suite/generate.js +98 -0
  20. package/dist/commands/suite/generate.js.map +1 -0
  21. package/dist/commands/suite/get.d.ts +6 -0
  22. package/dist/commands/suite/get.d.ts.map +1 -0
  23. package/dist/commands/suite/get.js +30 -0
  24. package/dist/commands/suite/get.js.map +1 -0
  25. package/dist/commands/suite/index.d.ts +6 -0
  26. package/dist/commands/suite/index.d.ts.map +1 -0
  27. package/dist/commands/suite/index.js +20 -0
  28. package/dist/commands/suite/index.js.map +1 -0
  29. package/dist/commands/suite/list.d.ts +6 -0
  30. package/dist/commands/suite/list.d.ts.map +1 -0
  31. package/dist/commands/suite/list.js +29 -0
  32. package/dist/commands/suite/list.js.map +1 -0
  33. package/dist/commands/suite/run.d.ts +6 -0
  34. package/dist/commands/suite/run.d.ts.map +1 -0
  35. package/dist/commands/suite/run.js +57 -0
  36. package/dist/commands/suite/run.js.map +1 -0
  37. package/dist/commands/suite/status.d.ts +6 -0
  38. package/dist/commands/suite/status.d.ts.map +1 -0
  39. package/dist/commands/suite/status.js +52 -0
  40. package/dist/commands/suite/status.js.map +1 -0
  41. package/dist/commands/suite/vars.d.ts +4 -0
  42. package/dist/commands/suite/vars.d.ts.map +1 -0
  43. package/dist/commands/suite/vars.js +38 -0
  44. package/dist/commands/suite/vars.js.map +1 -0
  45. package/dist/commands/suite/wait.d.ts +6 -0
  46. package/dist/commands/suite/wait.d.ts.map +1 -0
  47. package/dist/commands/suite/wait.js +40 -0
  48. package/dist/commands/suite/wait.js.map +1 -0
  49. package/dist/commands/validate.d.ts +4 -0
  50. package/dist/commands/validate.d.ts.map +1 -0
  51. package/dist/commands/validate.js +49 -0
  52. package/dist/commands/validate.js.map +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/package.json +1 -1
  57. package/dist/services/api-client.service.d.ts +20 -1
  58. package/dist/services/api-client.service.d.ts.map +1 -1
  59. package/dist/services/api-client.service.js +58 -0
  60. package/dist/services/api-client.service.js.map +1 -1
  61. package/dist/types/index.d.ts +49 -0
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/dist/utils/schemas.d.ts +8 -0
  64. package/dist/utils/schemas.d.ts.map +1 -0
  65. package/dist/utils/schemas.js +87 -0
  66. package/dist/utils/schemas.js.map +1 -0
  67. package/package.json +18 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/suite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,kBAAkB,CAChC,aAA6B,EAC7B,SAAoB,EACpB,aAA6B;IAE7B,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;IAErF,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAClF,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACpF,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAClF,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../../services/api-client.service.js';
3
+ import { IConfigService } from '../../interfaces/config.interface.js';
4
+ import { IOutputService } from '../../interfaces/output.interface.js';
5
+ export declare function createSuiteListCommand(_configService: IConfigService, apiClient: ApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAsBT"}
@@ -0,0 +1,29 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { printSuiteList } from './formatters.js';
4
+ export function createSuiteListCommand(_configService, apiClient, outputService) {
5
+ return new Command('list')
6
+ .description('List all Playwright Autopilot suites')
7
+ .action(async () => {
8
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
9
+ try {
10
+ const suites = await apiClient.listSuites();
11
+ if (isJson) {
12
+ outputService.formatJsonOutput({ suites });
13
+ return;
14
+ }
15
+ printSuiteList(suites);
16
+ }
17
+ catch (err) {
18
+ const msg = err.message || 'Failed to list suites';
19
+ if (isJson) {
20
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
21
+ }
22
+ else {
23
+ console.error(chalk.red(`❌ ${msg}`));
24
+ }
25
+ process.exit(1);
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/suite/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CACpC,cAA8B,EAC9B,SAAoB,EACpB,aAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,cAAc,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,IAAI,uBAAuB,CAAC;YAC9D,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../../services/api-client.service.js';
3
+ import { IConfigService } from '../../interfaces/config.interface.js';
4
+ import { IOutputService } from '../../interfaces/output.interface.js';
5
+ export declare function createSuiteRunCommand(_configService: IConfigService, apiClient: ApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAsDT"}
@@ -0,0 +1,57 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { printExecutionResults } from './formatters.js';
5
+ export function createSuiteRunCommand(_configService, apiClient, outputService) {
6
+ return new Command('run')
7
+ .description('Trigger a suite execution')
8
+ .argument('<id>', 'Suite ID')
9
+ .option('-w, --wait', 'Wait for the execution to complete')
10
+ .option('--tests <ids>', 'Comma-separated list of test IDs to run')
11
+ .action(async (id, options) => {
12
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
13
+ try {
14
+ const testIds = options.tests ? options.tests.split(',').map((s) => s.trim()) : undefined;
15
+ const { execution_id } = await apiClient.runSuite(id, testIds);
16
+ if (!options.wait) {
17
+ if (isJson) {
18
+ outputService.formatJsonOutput({ execution_id });
19
+ }
20
+ else {
21
+ console.log(chalk.bold(`\n Suite run triggered`));
22
+ console.log(chalk.gray(` Execution ID: ${execution_id}`));
23
+ console.log(chalk.gray(` Wait: obs suite wait ${id} ${execution_id}\n`));
24
+ }
25
+ return;
26
+ }
27
+ if (!isJson) {
28
+ console.log(chalk.bold(`\n Running suite...`));
29
+ console.log(chalk.gray('─'.repeat(56)));
30
+ }
31
+ const spinner = ora({ text: 'Running...', stream: process.stdout }).start();
32
+ const started = Date.now();
33
+ const done = await apiClient.pollSuiteExecution(id, execution_id);
34
+ const elapsed = ((Date.now() - started) / 1000).toFixed(0);
35
+ spinner.stop();
36
+ if (isJson) {
37
+ outputService.formatJsonOutput({ execution: done });
38
+ }
39
+ else {
40
+ printExecutionResults(done);
41
+ }
42
+ const allPassed = done.status === 'COMPLETED' && (done.failed ?? 0) === 0;
43
+ process.exit(allPassed ? 0 : 1);
44
+ }
45
+ catch (err) {
46
+ const msg = err.message || 'Failed to run suite';
47
+ if (isJson) {
48
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
49
+ }
50
+ else {
51
+ console.error(chalk.red(`\n❌ ${msg}\n`));
52
+ }
53
+ process.exit(1);
54
+ }
55
+ });
56
+ }
57
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/suite/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../../services/api-client.service.js';
3
+ import { IConfigService } from '../../interfaces/config.interface.js';
4
+ import { IOutputService } from '../../interfaces/output.interface.js';
5
+ export declare function createSuiteStatusCommand(_configService: IConfigService, apiClient: ApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,cAAc,GAC5B,OAAO,CA8CT"}
@@ -0,0 +1,52 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { printExecutionResults } from './formatters.js';
4
+ export function createSuiteStatusCommand(_configService, apiClient, outputService) {
5
+ return new Command('status')
6
+ .description('Check the status of a suite execution (defaults to latest)')
7
+ .argument('<id>', 'Suite ID')
8
+ .argument('[executionId]', 'Execution ID (optional, defaults to latest)')
9
+ .action(async (id, executionId) => {
10
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
11
+ try {
12
+ let resolvedExecId;
13
+ if (executionId) {
14
+ resolvedExecId = executionId;
15
+ }
16
+ else {
17
+ const executions = await apiClient.listSuiteExecutions(id);
18
+ const latest = executions[0];
19
+ if (!latest) {
20
+ const msg = 'No executions found for this suite. Run: obs suite run <id>';
21
+ if (isJson) {
22
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
23
+ }
24
+ else {
25
+ console.log(chalk.gray(`\n ${msg}\n`));
26
+ }
27
+ return;
28
+ }
29
+ resolvedExecId = latest.id;
30
+ }
31
+ const execution = await apiClient.getSuiteExecution(id, resolvedExecId);
32
+ if (isJson) {
33
+ outputService.formatJsonOutput({ execution });
34
+ return;
35
+ }
36
+ const lastRun = new Date(execution.created_at).toLocaleString();
37
+ console.log(chalk.gray(`\n Last run: ${lastRun}`));
38
+ printExecutionResults(execution);
39
+ }
40
+ catch (err) {
41
+ const msg = err.message || 'Failed to get suite status';
42
+ if (isJson) {
43
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
44
+ }
45
+ else {
46
+ console.error(chalk.red(`❌ ${msg}`));
47
+ }
48
+ process.exit(1);
49
+ }
50
+ });
51
+ }
52
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/suite/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,UAAU,wBAAwB,CACtC,cAA8B,EAC9B,SAAoB,EACpB,aAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;SAC5B,QAAQ,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,WAAoB,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;QACtD,IAAI,CAAC;YACH,IAAI,cAAsB,CAAC;YAC3B,IAAI,WAAW,EAAE,CAAC;gBAChB,cAAc,GAAG,WAAW,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,GAAG,6DAA6D,CAAC;oBAC1E,IAAI,MAAM,EAAE,CAAC;wBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC/E,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;oBACzC,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAExE,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,IAAI,4BAA4B,CAAC;YACnE,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function parseVarFlags(vars: string[]): Record<string, string>;
2
+ export declare function parseVarFile(filePath: string): Record<string, string>;
3
+ export declare function mergeVars(varFlags: string[], varFile?: string): Record<string, string> | undefined;
4
+ //# sourceMappingURL=vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/vars.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAarE;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAKpC"}
@@ -0,0 +1,38 @@
1
+ import { readFileSync } from 'fs';
2
+ function normalizeKey(key) {
3
+ return key.trim().toUpperCase().replace(/\s+/g, '_');
4
+ }
5
+ export function parseVarFlags(vars) {
6
+ const result = {};
7
+ for (const v of vars) {
8
+ const idx = v.indexOf('=');
9
+ if (idx === -1)
10
+ throw new Error(`Invalid --var format: "${v}". Expected KEY=VALUE`);
11
+ result[normalizeKey(v.slice(0, idx))] = v.slice(idx + 1);
12
+ }
13
+ return result;
14
+ }
15
+ export function parseVarFile(filePath) {
16
+ const content = readFileSync(filePath, 'utf8');
17
+ const result = {};
18
+ for (const line of content.split('\n')) {
19
+ const trimmed = line.trim();
20
+ if (!trimmed || trimmed.startsWith('#'))
21
+ continue;
22
+ const idx = trimmed.indexOf('=');
23
+ if (idx === -1)
24
+ continue;
25
+ const key = normalizeKey(trimmed.slice(0, idx));
26
+ const value = trimmed.slice(idx + 1).replace(/^["']|["']$/g, '');
27
+ result[key] = value;
28
+ }
29
+ return result;
30
+ }
31
+ export function mergeVars(varFlags, varFile) {
32
+ const result = {};
33
+ if (varFile)
34
+ Object.assign(result, parseVarFile(varFile));
35
+ Object.assign(result, parseVarFlags(varFlags));
36
+ return Object.keys(result).length > 0 ? result : undefined;
37
+ }
38
+ //# sourceMappingURL=vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vars.js","sourceRoot":"","sources":["../../../src/commands/suite/vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;QACpF,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,QAAkB,EAClB,OAAgB;IAEhB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,OAAO;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../../services/api-client.service.js';
3
+ import { IConfigService } from '../../interfaces/config.interface.js';
4
+ import { IOutputService } from '../../interfaces/output.interface.js';
5
+ export declare function createSuiteWaitCommand(_configService: IConfigService, apiClient: ApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/commands/suite/wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAmCT"}
@@ -0,0 +1,40 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { printExecutionResults } from './formatters.js';
5
+ export function createSuiteWaitCommand(_configService, apiClient, outputService) {
6
+ return new Command('wait')
7
+ .description('Wait for a suite execution to complete (CI-friendly)')
8
+ .argument('<id>', 'Suite ID')
9
+ .argument('<executionId>', 'Execution ID')
10
+ .action(async (id, executionId) => {
11
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
12
+ try {
13
+ const spinner = ora({
14
+ text: 'Waiting for execution to complete...',
15
+ stream: process.stdout,
16
+ }).start();
17
+ const done = await apiClient.pollSuiteExecution(id, executionId);
18
+ spinner.stop();
19
+ if (isJson) {
20
+ outputService.formatJsonOutput({ execution: done });
21
+ }
22
+ else {
23
+ printExecutionResults(done);
24
+ }
25
+ const allPassed = done.status === 'COMPLETED' && (done.failed ?? 0) === 0;
26
+ process.exit(allPassed ? 0 : 1);
27
+ }
28
+ catch (err) {
29
+ const msg = err.message || 'Failed to wait for suite execution';
30
+ if (isJson) {
31
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
32
+ }
33
+ else {
34
+ console.error(chalk.red(`❌ ${msg}`));
35
+ }
36
+ process.exit(1);
37
+ }
38
+ });
39
+ }
40
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/commands/suite/wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,UAAU,sBAAsB,CACpC,cAA8B,EAC9B,SAAoB,EACpB,aAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,sDAAsD,CAAC;SACnE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;SAC5B,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,WAAmB,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC;gBAClB,IAAI,EAAE,sCAAsC;gBAC5C,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC,KAAK,EAAE,CAAC;YAEX,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAEjE,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,IAAI,oCAAoC,CAAC;YAC3E,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ import { IOutputService } from '../interfaces/output.interface.js';
3
+ export declare function createValidateCommand(outputService: IOutputService): Command;
4
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,cAAc,GAAG,OAAO,CAkD5E"}
@@ -0,0 +1,49 @@
1
+ import { Command } from 'commander';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { resolveSchema, resourceNames } from '../utils/schemas.js';
4
+ export function createValidateCommand(outputService) {
5
+ return new Command('validate')
6
+ .description('Validate a resource JSON file against the expected schema')
7
+ .requiredOption('-r, --resource <type>', `Resource type (${resourceNames.join(', ')})`)
8
+ .requiredOption('-f, --file <path>', 'Path to JSON file to validate')
9
+ .option('-j, --json', 'Output in JSON format')
10
+ .action((options) => {
11
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true' || options.json === true;
12
+ if (isJson)
13
+ outputService.enableJsonMode();
14
+ const schema = resolveSchema(options.resource);
15
+ if (!schema) {
16
+ outputService.error(`Unknown resource type "${options.resource}". Valid types: ${resourceNames.join(', ')}`);
17
+ process.exit(1);
18
+ }
19
+ if (!existsSync(options.file)) {
20
+ outputService.error(`File not found: ${options.file}`);
21
+ process.exit(1);
22
+ }
23
+ let data;
24
+ try {
25
+ data = JSON.parse(readFileSync(options.file, 'utf-8'));
26
+ }
27
+ catch {
28
+ outputService.error(`Failed to parse ${options.file} as JSON.`);
29
+ process.exit(1);
30
+ }
31
+ const missing = schema.required.filter((field) => data[field] === undefined || data[field] === '');
32
+ if (missing.length > 0) {
33
+ if (isJson) {
34
+ outputService.formatJsonOutput({ valid: false, missing_fields: missing });
35
+ }
36
+ else {
37
+ outputService.error(`Validation failed — missing required fields: ${missing.join(', ')}`);
38
+ }
39
+ process.exit(1);
40
+ }
41
+ if (isJson) {
42
+ outputService.formatJsonOutput({ valid: true, resource: options.resource });
43
+ }
44
+ else {
45
+ outputService.success(`${options.file} is valid for resource type "${options.resource}".`);
46
+ }
47
+ });
48
+ }
49
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,UAAU,qBAAqB,CAAC,aAA6B;IACjE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,2DAA2D,CAAC;SACxE,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACtF,cAAc,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;SACpE,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC;SAC7C,MAAM,CAAC,CAAC,OAA2D,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QAC/E,IAAI,MAAM;YAAE,aAAa,CAAC,cAAc,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,aAAa,CAAC,KAAK,CACjB,0BAA0B,OAAO,CAAC,QAAQ,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAA4B,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAC3D,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,KAAK,CAAC,gDAAgD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,aAAa,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,gCAAgC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAkI9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAoI9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ import { UpdateService } from './services/update.service.js';
16
16
  import { createLoginCommand } from './commands/login.js';
17
17
  import { createLogoutCommand } from './commands/logout.js';
18
18
  import { createInitCommand } from './commands/init.js';
19
+ import { createValidateCommand } from './commands/validate.js';
19
20
  import { createAiCheckCommand } from './commands/ai-check.js';
20
21
  import { createMonitorCommand } from './commands/monitor.js';
21
22
  import { createCheckCommand } from './commands/check.js';
@@ -25,6 +26,7 @@ import { createExportCommand } from './commands/export.js';
25
26
  import { createAlertChannelCommand } from './commands/alert-channel.js';
26
27
  import { createStatusPageCommand } from './commands/status-page.js';
27
28
  import { createIncidentCommand } from './commands/incident.js';
29
+ import { createSuiteCommand } from './commands/suite/index.js';
28
30
  const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
29
31
  const { version } = packageJson;
30
32
  // Create services directly
@@ -63,6 +65,8 @@ program.addCommand(createExportCommand(configService, apiClient, outputService))
63
65
  program.addCommand(createAlertChannelCommand(configService, apiClient, outputService));
64
66
  program.addCommand(createStatusPageCommand(configService, apiClient, outputService));
65
67
  program.addCommand(createIncidentCommand(configService, apiClient, outputService));
68
+ program.addCommand(createValidateCommand(outputService));
69
+ program.addCommand(createSuiteCommand(configService, apiClient, outputService));
66
70
  // Global options handler
67
71
  program.hook('preAction', (thisCommand) => {
68
72
  const options = thisCommand.opts();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,8CAA8C;AAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;AAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAC;AACzB,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;AAEhC,2BAA2B;AAC3B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACxD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,0BAA0B;AAC1B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AAEjD,2DAA2D;AAC3D,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3B,MAAM,IAAI,GAAI,GAAyB,EAAE,IAAI,IAAI,EAAE,CAAC;IACpD,IAAI,IAAI,KAAK,yBAAyB,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,6BAA6B;AAC7B,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAChF,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AACtE,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AACpE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAClF,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAClF,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAChF,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACpF,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAChF,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACjF,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACvF,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACrF,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAEnF,yBAAyB;AACzB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEnC,qBAAqB;IACrB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;QACrC,aAAa,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,OAAO,CAAC,eAAe,CAAC;IACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;CAC7C,CAAC,CAAC;AAEH,qCAAqC;AACrC,SAAS,gBAAgB,CAAC,KAAc,EAAE,MAAc;IACtD,MAAM,GAAG,GAAG,KAA4D,CAAC;IACzE,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;IAE7B,IACE,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5B,IAAI,KAAK,yBAAyB;QAClC,IAAI,KAAK,mBAAmB,EAC5B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9E,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;aAC5E;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yBAAyB;AACzB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAY,EAAE,EAAE;IAC/C,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;IACnD,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE3F,mDAAmD;AACnD,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;IACrB,IAAI,CAAC;QACH,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,oFAAoF;YACpF,aAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtD,iDAAiD;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF,KAAK,GAAG,EAAE,CAAC;AAEX,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@observeone/cli",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "type": "module",
5
5
  "description": "ObserveOne CLI - AI-powered website monitoring and testing from the command line",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  import { IConfigService } from '../interfaces/config.interface.js';
2
2
  import { IApiClient } from '../interfaces/api-client.interface.js';
3
- import { Test, TestExecution, TestResult, UrlMonitor, ApiCheck, Heartbeat, AlertChannel, StatusPage, Incident } from '../types/index.js';
3
+ import { Test, TestExecution, TestResult, UrlMonitor, ApiCheck, Heartbeat, AlertChannel, StatusPage, Incident, Suite, SuiteExecution } from '../types/index.js';
4
4
  /**
5
5
  * API Client implementation
6
6
  * Handles HTTP communication with ObserveOne backend
@@ -85,6 +85,25 @@ export declare class ApiClient implements IApiClient {
85
85
  environment: string;
86
86
  }>;
87
87
  pollExecutionStatus(executionId: number, maxAttempts?: number, intervalMs?: number): Promise<TestExecution>;
88
+ listSuites(): Promise<Suite[]>;
89
+ getSuite(id: string): Promise<Suite>;
90
+ generateSuite(payload: {
91
+ target_url: string;
92
+ suite_name: string;
93
+ cron_expression?: string;
94
+ schedule_active?: boolean;
95
+ max_tests?: number;
96
+ secrets?: Record<string, string>;
97
+ allow_form_submit?: boolean;
98
+ }): Promise<Suite>;
99
+ runSuite(suiteId: string, testIds?: string[]): Promise<{
100
+ execution_id: string;
101
+ }>;
102
+ getSuiteExecution(suiteId: string, executionId: string): Promise<SuiteExecution>;
103
+ listSuiteExecutions(suiteId: string): Promise<SuiteExecution[]>;
104
+ deleteSuite(id: string): Promise<void>;
105
+ pollSuiteGeneration(suiteId: string, maxAttempts?: number, intervalMs?: number): Promise<Suite>;
106
+ pollSuiteExecution(suiteId: string, executionId: string, maxAttempts?: number, intervalMs?: number): Promise<SuiteExecution>;
88
107
  requestCliAuth(): Promise<{
89
108
  request_id: string;
90
109
  auth_url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.service.d.ts","sourceRoot":"","sources":["../../src/services/api-client.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.service.d.ts","sourceRoot":"","sources":["../../src/services/api-client.service.ts"],"names":[],"mappings":"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"}
@@ -326,6 +326,64 @@ export class ApiClient {
326
326
  }
327
327
  throw new Error(`Test execution ${executionId} did not complete within the timeout period`);
328
328
  }
329
+ // Suites (Playwright Autopilot)
330
+ async listSuites() {
331
+ const response = await this.client.get('/playwright-autopilot/suites');
332
+ return Array.isArray(response.data) ? response.data : [];
333
+ }
334
+ async getSuite(id) {
335
+ const response = await this.client.get(`/playwright-autopilot/suites/${id}`);
336
+ return response.data;
337
+ }
338
+ async generateSuite(payload) {
339
+ const response = await this.client.post('/playwright-autopilot/suites', payload);
340
+ return response.data;
341
+ }
342
+ async runSuite(suiteId, testIds) {
343
+ const response = await this.client.post(`/playwright-autopilot/suites/${suiteId}/run`, testIds?.length ? { test_ids: testIds } : {});
344
+ return response.data;
345
+ }
346
+ async getSuiteExecution(suiteId, executionId) {
347
+ const response = await this.client.get(`/playwright-autopilot/suites/${suiteId}/executions/${executionId}`);
348
+ return response.data;
349
+ }
350
+ async listSuiteExecutions(suiteId) {
351
+ const response = await this.client.get(`/playwright-autopilot/suites/${suiteId}/executions`);
352
+ return Array.isArray(response.data) ? response.data : [];
353
+ }
354
+ async deleteSuite(id) {
355
+ await this.client.delete(`/playwright-autopilot/suites/${id}`);
356
+ }
357
+ async pollSuiteGeneration(suiteId, maxAttempts = 120, intervalMs = 5000) {
358
+ let attempts = 0;
359
+ while (attempts < maxAttempts) {
360
+ const suite = await this.getSuite(suiteId);
361
+ if (suite.status === 'scheduled' || suite.status === 'failed')
362
+ return suite;
363
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
364
+ attempts++;
365
+ }
366
+ throw new Error('Suite generation did not complete within the timeout period');
367
+ }
368
+ async pollSuiteExecution(suiteId, executionId, maxAttempts = 60, intervalMs = 5000) {
369
+ let attempts = 0;
370
+ while (attempts < maxAttempts) {
371
+ try {
372
+ const execution = await this.getSuiteExecution(suiteId, executionId);
373
+ if (execution.status === 'COMPLETED' || execution.status === 'FAILED')
374
+ return execution;
375
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
376
+ attempts++;
377
+ }
378
+ catch (_error) {
379
+ attempts++;
380
+ if (attempts >= maxAttempts)
381
+ throw _error;
382
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
383
+ }
384
+ }
385
+ throw new Error('Suite execution did not complete within the timeout period');
386
+ }
329
387
  async requestCliAuth() {
330
388
  const response = await this.client.post('/cli/auth/request');
331
389
  return response.data;