@copado/agentia-cli 0.112.0-alpha.0 → 0.114.0-alpha.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/README.md +2014 -450
- package/dist/commands/ai/agent/ask.d.ts +3 -0
- package/dist/commands/ai/agent/ask.js +14 -0
- package/dist/commands/ai/agent/ask.js.map +1 -1
- package/dist/commands/ai/agent/chat.d.ts +3 -0
- package/dist/commands/ai/agent/chat.js +14 -0
- package/dist/commands/ai/agent/chat.js.map +1 -1
- package/dist/commands/cicd/work/set.js +22 -14
- package/dist/commands/cicd/work/set.js.map +1 -1
- package/dist/commands/testing/build/abort.d.ts +7 -1
- package/dist/commands/testing/build/abort.js +13 -3
- package/dist/commands/testing/build/abort.js.map +1 -1
- package/dist/commands/testing/build/get.d.ts +18 -0
- package/dist/commands/testing/build/get.js +38 -0
- package/dist/commands/testing/build/get.js.map +1 -0
- package/dist/commands/testing/build/latest.d.ts +12 -0
- package/dist/commands/testing/build/latest.js +40 -0
- package/dist/commands/testing/build/latest.js.map +1 -0
- package/dist/commands/testing/build/list.d.ts +6 -1
- package/dist/commands/testing/build/list.js +23 -1
- package/dist/commands/testing/build/list.js.map +1 -1
- package/dist/commands/testing/build/logs.d.ts +6 -0
- package/dist/commands/testing/build/logs.js +8 -1
- package/dist/commands/testing/build/logs.js.map +1 -1
- package/dist/commands/testing/build/run.d.ts +27 -4
- package/dist/commands/testing/build/run.js +4 -18
- package/dist/commands/testing/build/run.js.map +1 -1
- package/dist/commands/testing/build/search.d.ts +21 -0
- package/dist/commands/testing/build/search.js +57 -0
- package/dist/commands/testing/build/search.js.map +1 -0
- package/dist/commands/testing/create.d.ts +1 -15
- package/dist/commands/testing/create.js +1 -43
- package/dist/commands/testing/create.js.map +1 -1
- package/dist/commands/testing/data-table/create.d.ts +30 -0
- package/dist/commands/testing/data-table/create.js +52 -0
- package/dist/commands/testing/data-table/create.js.map +1 -0
- package/dist/commands/testing/data-table/delete.d.ts +25 -0
- package/dist/commands/testing/data-table/delete.js +40 -0
- package/dist/commands/testing/data-table/delete.js.map +1 -0
- package/dist/commands/testing/data-table/export.d.ts +33 -0
- package/dist/commands/testing/data-table/export.js +59 -0
- package/dist/commands/testing/data-table/export.js.map +1 -0
- package/dist/commands/testing/data-table/get.d.ts +21 -0
- package/dist/commands/testing/data-table/get.js +35 -0
- package/dist/commands/testing/data-table/get.js.map +1 -0
- package/dist/commands/testing/data-table/list.d.ts +16 -0
- package/dist/commands/testing/data-table/list.js +33 -0
- package/dist/commands/testing/data-table/list.js.map +1 -0
- package/dist/commands/testing/data-table/update.d.ts +34 -0
- package/dist/commands/testing/data-table/update.js +64 -0
- package/dist/commands/testing/data-table/update.js.map +1 -0
- package/dist/commands/testing/job/create.d.ts +18 -0
- package/dist/commands/testing/job/create.js +60 -4
- package/dist/commands/testing/job/create.js.map +1 -1
- package/dist/commands/testing/job/delete.d.ts +6 -1
- package/dist/commands/testing/job/delete.js +13 -3
- package/dist/commands/testing/job/delete.js.map +1 -1
- package/dist/commands/testing/job/refs.d.ts +17 -0
- package/dist/commands/testing/job/refs.js +30 -0
- package/dist/commands/testing/job/refs.js.map +1 -0
- package/dist/commands/testing/job/schedule/get.d.ts +23 -0
- package/dist/commands/testing/job/schedule/get.js +31 -0
- package/dist/commands/testing/job/schedule/get.js.map +1 -0
- package/dist/commands/testing/job/schedule/remove.d.ts +24 -0
- package/dist/commands/testing/job/schedule/remove.js +34 -0
- package/dist/commands/testing/job/schedule/remove.js.map +1 -0
- package/dist/commands/testing/job/schedule/set.d.ts +23 -0
- package/dist/commands/testing/job/schedule/set.js +39 -0
- package/dist/commands/testing/job/schedule/set.js.map +1 -0
- package/dist/commands/testing/job/update.d.ts +2 -0
- package/dist/commands/testing/job/update.js +7 -1
- package/dist/commands/testing/job/update.js.map +1 -1
- package/dist/commands/testing/job/upload.d.ts +6 -0
- package/dist/commands/testing/job/upload.js +22 -0
- package/dist/commands/testing/job/upload.js.map +1 -1
- package/dist/commands/testing/live/continue.d.ts +20 -0
- package/dist/commands/testing/live/continue.js +21 -0
- package/dist/commands/testing/live/continue.js.map +1 -0
- package/dist/commands/testing/live/execute.d.ts +30 -0
- package/dist/commands/testing/live/execute.js +43 -0
- package/dist/commands/testing/live/execute.js.map +1 -0
- package/dist/commands/testing/live/history.d.ts +23 -0
- package/dist/commands/testing/live/history.js +35 -0
- package/dist/commands/testing/live/history.js.map +1 -0
- package/dist/commands/testing/live/inspect.d.ts +18 -0
- package/dist/commands/testing/live/inspect.js +30 -0
- package/dist/commands/testing/live/inspect.js.map +1 -0
- package/dist/commands/testing/live/interrupt.d.ts +20 -0
- package/dist/commands/testing/live/interrupt.js +21 -0
- package/dist/commands/testing/live/interrupt.js.map +1 -0
- package/dist/commands/testing/live/recorder.d.ts +23 -0
- package/dist/commands/testing/live/recorder.js +134 -0
- package/dist/commands/testing/live/recorder.js.map +1 -0
- package/dist/commands/testing/live/reports.d.ts +20 -0
- package/dist/commands/testing/live/reports.js +31 -0
- package/dist/commands/testing/live/reports.js.map +1 -0
- package/dist/commands/testing/live/screenshot.d.ts +23 -0
- package/dist/commands/testing/live/screenshot.js +25 -0
- package/dist/commands/testing/live/screenshot.js.map +1 -0
- package/dist/commands/testing/live/set-options.d.ts +27 -0
- package/dist/commands/testing/live/set-options.js +28 -0
- package/dist/commands/testing/live/set-options.js.map +1 -0
- package/dist/commands/testing/live/start.d.ts +29 -0
- package/dist/commands/testing/live/start.js +53 -0
- package/dist/commands/testing/live/start.js.map +1 -0
- package/dist/commands/testing/live/status.d.ts +19 -0
- package/dist/commands/testing/live/status.js +27 -0
- package/dist/commands/testing/live/status.js.map +1 -0
- package/dist/commands/testing/live/stop.d.ts +24 -0
- package/dist/commands/testing/live/stop.js +38 -0
- package/dist/commands/testing/live/stop.js.map +1 -0
- package/dist/commands/testing/live/view.d.ts +16 -0
- package/dist/commands/testing/live/view.js +36 -0
- package/dist/commands/testing/live/view.js.map +1 -0
- package/dist/commands/testing/logs.d.ts +6 -0
- package/dist/commands/testing/logs.js +8 -1
- package/dist/commands/testing/logs.js.map +1 -1
- package/dist/commands/testing/project/create.d.ts +3 -0
- package/dist/commands/testing/project/create.js +17 -1
- package/dist/commands/testing/project/create.js.map +1 -1
- package/dist/commands/testing/project/delete.d.ts +7 -2
- package/dist/commands/testing/project/delete.js +15 -3
- package/dist/commands/testing/project/delete.js.map +1 -1
- package/dist/commands/testing/project/get.js +1 -1
- package/dist/commands/testing/project/get.js.map +1 -1
- package/dist/commands/testing/project/permission/get.d.ts +13 -0
- package/dist/commands/testing/project/permission/get.js +21 -0
- package/dist/commands/testing/project/permission/get.js.map +1 -0
- package/dist/commands/testing/project/permission/list.d.ts +13 -0
- package/dist/commands/testing/project/permission/list.js +21 -0
- package/dist/commands/testing/project/permission/list.js.map +1 -0
- package/dist/commands/testing/project/permission/set.d.ts +19 -0
- package/dist/commands/testing/project/permission/set.js +33 -0
- package/dist/commands/testing/project/permission/set.js.map +1 -0
- package/dist/commands/testing/project/permission/update.d.ts +19 -0
- package/dist/commands/testing/project/permission/update.js +33 -0
- package/dist/commands/testing/project/permission/update.js.map +1 -0
- package/dist/commands/testing/project/update.d.ts +14 -0
- package/dist/commands/testing/project/update.js +28 -0
- package/dist/commands/testing/project/update.js.map +1 -0
- package/dist/commands/testing/robot/create.d.ts +4 -1
- package/dist/commands/testing/robot/create.js +20 -5
- package/dist/commands/testing/robot/create.js.map +1 -1
- package/dist/commands/testing/robot/delete.d.ts +6 -1
- package/dist/commands/testing/robot/delete.js +13 -3
- package/dist/commands/testing/robot/delete.js.map +1 -1
- package/dist/commands/testing/robot/update.d.ts +19 -0
- package/dist/commands/testing/robot/update.js +49 -0
- package/dist/commands/testing/robot/update.js.map +1 -0
- package/dist/commands/testing/run.d.ts +27 -4
- package/dist/commands/testing/run.js +4 -11
- package/dist/commands/testing/run.js.map +1 -1
- package/dist/commands/testing/test/run.d.ts +27 -11
- package/dist/commands/testing/test/run.js +5 -37
- package/dist/commands/testing/test/run.js.map +1 -1
- package/dist/commands/testing/update.d.ts +6 -0
- package/dist/commands/testing/update.js +10 -0
- package/dist/commands/testing/update.js.map +1 -1
- package/dist/commands/testing/user-parameter/create.d.ts +19 -0
- package/dist/commands/testing/user-parameter/create.js +45 -0
- package/dist/commands/testing/user-parameter/create.js.map +1 -0
- package/dist/commands/testing/user-parameter/delete.d.ts +21 -0
- package/dist/commands/testing/user-parameter/delete.js +33 -0
- package/dist/commands/testing/user-parameter/delete.js.map +1 -0
- package/dist/commands/testing/user-parameter/get.d.ts +13 -0
- package/dist/commands/testing/user-parameter/get.js +21 -0
- package/dist/commands/testing/user-parameter/get.js.map +1 -0
- package/dist/commands/testing/user-parameter/list.d.ts +12 -0
- package/dist/commands/testing/user-parameter/list.js +23 -0
- package/dist/commands/testing/user-parameter/list.js.map +1 -0
- package/dist/commands/testing/user-parameter/update.d.ts +23 -0
- package/dist/commands/testing/user-parameter/update.js +45 -0
- package/dist/commands/testing/user-parameter/update.js.map +1 -0
- package/dist/commands/testing/variable/create.d.ts +6 -2
- package/dist/commands/testing/variable/create.js +14 -5
- package/dist/commands/testing/variable/create.js.map +1 -1
- package/dist/commands/testing/variable/delete.d.ts +6 -1
- package/dist/commands/testing/variable/delete.js +13 -3
- package/dist/commands/testing/variable/delete.js.map +1 -1
- package/dist/commands/testing/variable/get.d.ts +13 -0
- package/dist/commands/testing/variable/get.js +25 -0
- package/dist/commands/testing/variable/get.js.map +1 -0
- package/dist/commands/testing/variable/list.d.ts +4 -0
- package/dist/commands/testing/variable/list.js +15 -3
- package/dist/commands/testing/variable/list.js.map +1 -1
- package/dist/commands/testing/variable/update.d.ts +6 -2
- package/dist/commands/testing/variable/update.js +11 -5
- package/dist/commands/testing/variable/update.js.map +1 -1
- package/dist/lib/ai-chat-session.d.ts +2 -1
- package/dist/lib/ai-chat-session.js +8 -0
- package/dist/lib/ai-chat-session.js.map +1 -1
- package/dist/lib/ai-gateway.d.ts +5 -2
- package/dist/lib/ai-gateway.js +44 -5
- package/dist/lib/ai-gateway.js.map +1 -1
- package/dist/lib/ai-operations.d.ts +4 -2
- package/dist/lib/ai-operations.js +29 -3
- package/dist/lib/ai-operations.js.map +1 -1
- package/dist/lib/ai-types.d.ts +29 -0
- package/dist/lib/ai-types.js +25 -0
- package/dist/lib/ai-types.js.map +1 -1
- package/dist/lib/cicd-gateway.d.ts +6 -0
- package/dist/lib/cicd-gateway.js +13 -2
- package/dist/lib/cicd-gateway.js.map +1 -1
- package/dist/lib/credential-store.d.ts +3 -0
- package/dist/lib/credential-store.js +16 -0
- package/dist/lib/credential-store.js.map +1 -1
- package/dist/lib/credential-sync.d.ts +35 -0
- package/dist/lib/credential-sync.js +249 -0
- package/dist/lib/credential-sync.js.map +1 -0
- package/dist/lib/debug.js +3 -1
- package/dist/lib/debug.js.map +1 -1
- package/dist/lib/defaults-store.d.ts +18 -0
- package/dist/lib/defaults-store.js +182 -89
- package/dist/lib/defaults-store.js.map +1 -1
- package/dist/lib/environment-types.js +1 -1
- package/dist/lib/mcp/ai-tools.d.ts +3 -0
- package/dist/lib/mcp/ai-tools.js +6 -0
- package/dist/lib/mcp/ai-tools.js.map +1 -1
- package/dist/lib/mcp/command-id.js +3 -0
- package/dist/lib/mcp/command-id.js.map +1 -1
- package/dist/lib/mcp/redaction.d.ts +1 -2
- package/dist/lib/mcp/redaction.js +1 -23
- package/dist/lib/mcp/redaction.js.map +1 -1
- package/dist/lib/mcp/testing-live-tools.d.ts +126 -0
- package/dist/lib/mcp/testing-live-tools.js +215 -0
- package/dist/lib/mcp/testing-live-tools.js.map +1 -0
- package/dist/lib/mcp/testing-tools.d.ts +455 -9
- package/dist/lib/mcp/testing-tools.js +677 -37
- package/dist/lib/mcp/testing-tools.js.map +1 -1
- package/dist/lib/mcp/tools.d.ts +554 -14
- package/dist/lib/mcp/work-tools.js +7 -4
- package/dist/lib/mcp/work-tools.js.map +1 -1
- package/dist/lib/secret-redaction.d.ts +2 -0
- package/dist/lib/secret-redaction.js +24 -0
- package/dist/lib/secret-redaction.js.map +1 -0
- package/dist/lib/testing-config.d.ts +3 -0
- package/dist/lib/testing-config.js +9 -0
- package/dist/lib/testing-config.js.map +1 -1
- package/dist/lib/testing-confirmation.d.ts +14 -0
- package/dist/lib/testing-confirmation.js +17 -0
- package/dist/lib/testing-confirmation.js.map +1 -0
- package/dist/lib/testing-data-command.d.ts +21 -0
- package/dist/lib/testing-data-command.js +49 -0
- package/dist/lib/testing-data-command.js.map +1 -0
- package/dist/lib/testing-data-core.d.ts +22 -0
- package/dist/lib/testing-data-core.js +208 -0
- package/dist/lib/testing-data-core.js.map +1 -0
- package/dist/lib/testing-data-export.d.ts +1 -0
- package/dist/lib/testing-data-export.js +2 -0
- package/dist/lib/testing-data-export.js.map +1 -0
- package/dist/lib/testing-data-import.d.ts +1 -0
- package/dist/lib/testing-data-import.js +2 -0
- package/dist/lib/testing-data-import.js.map +1 -0
- package/dist/lib/testing-data-io.d.ts +21 -0
- package/dist/lib/testing-data-io.js +236 -0
- package/dist/lib/testing-data-io.js.map +1 -0
- package/dist/lib/testing-data-operations.d.ts +36 -0
- package/dist/lib/testing-data-operations.js +91 -0
- package/dist/lib/testing-data-operations.js.map +1 -0
- package/dist/lib/testing-data-types.d.ts +41 -0
- package/dist/lib/testing-data-types.js +3 -0
- package/dist/lib/testing-data-types.js.map +1 -0
- package/dist/lib/testing-flags.d.ts +62 -1
- package/dist/lib/testing-flags.js +177 -1
- package/dist/lib/testing-flags.js.map +1 -1
- package/dist/lib/testing-gateway.d.ts +17 -3
- package/dist/lib/testing-gateway.js +175 -45
- package/dist/lib/testing-gateway.js.map +1 -1
- package/dist/lib/testing-live-command.d.ts +24 -0
- package/dist/lib/testing-live-command.js +56 -0
- package/dist/lib/testing-live-command.js.map +1 -0
- package/dist/lib/testing-live-endpoints.d.ts +14 -0
- package/dist/lib/testing-live-endpoints.js +34 -0
- package/dist/lib/testing-live-endpoints.js.map +1 -0
- package/dist/lib/testing-live-history.d.ts +11 -0
- package/dist/lib/testing-live-history.js +96 -0
- package/dist/lib/testing-live-history.js.map +1 -0
- package/dist/lib/testing-live-operations.d.ts +118 -0
- package/dist/lib/testing-live-operations.js +676 -0
- package/dist/lib/testing-live-operations.js.map +1 -0
- package/dist/lib/testing-live-recorder.d.ts +14 -0
- package/dist/lib/testing-live-recorder.js +122 -0
- package/dist/lib/testing-live-recorder.js.map +1 -0
- package/dist/lib/testing-live-robot.d.ts +16 -0
- package/dist/lib/testing-live-robot.js +158 -0
- package/dist/lib/testing-live-robot.js.map +1 -0
- package/dist/lib/testing-live-state.d.ts +4 -0
- package/dist/lib/testing-live-state.js +90 -0
- package/dist/lib/testing-live-state.js.map +1 -0
- package/dist/lib/testing-live-types.d.ts +92 -0
- package/dist/lib/testing-live-types.js +2 -0
- package/dist/lib/testing-live-types.js.map +1 -0
- package/dist/lib/testing-operations.d.ts +157 -5
- package/dist/lib/testing-operations.js +829 -66
- package/dist/lib/testing-operations.js.map +1 -1
- package/dist/lib/testing-run-command.d.ts +25 -0
- package/dist/lib/testing-run-command.js +94 -0
- package/dist/lib/testing-run-command.js.map +1 -0
- package/dist/lib/testing-sanitization.d.ts +11 -0
- package/dist/lib/testing-sanitization.js +135 -0
- package/dist/lib/testing-sanitization.js.map +1 -0
- package/dist/lib/testing-schedule.d.ts +23 -0
- package/dist/lib/testing-schedule.js +48 -0
- package/dist/lib/testing-schedule.js.map +1 -0
- package/dist/lib/testing-secret-input.d.ts +12 -0
- package/dist/lib/testing-secret-input.js +56 -0
- package/dist/lib/testing-secret-input.js.map +1 -0
- package/dist/lib/testing-session.d.ts +8 -0
- package/dist/lib/testing-session.js +82 -0
- package/dist/lib/testing-session.js.map +1 -0
- package/dist/lib/testing-types.d.ts +143 -13
- package/dist/lib/testing-types.js +110 -5
- package/dist/lib/testing-types.js.map +1 -1
- package/dist/lib/testing-watch.d.ts +4 -0
- package/dist/lib/testing-watch.js +45 -0
- package/dist/lib/testing-watch.js.map +1 -0
- package/dist/lib/work-types.d.ts +1 -0
- package/dist/lib/work-types.js.map +1 -1
- package/oclif.manifest.json +7523 -2891
- package/package.json +12 -1
- package/templates/skills/agentia-testing/SKILL.md +9 -6
- package/templates/skills/agentia-testing/references/tests.md +70 -36
|
@@ -26,6 +26,8 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
26
26
|
'git-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
27
|
'git-domain-credential': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
28
|
'git-password': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
'git-password-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
'git-password-stdin': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
29
31
|
'git-tag': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
32
|
'git-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
33
|
'git-use-caller-credentials': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
@@ -2,6 +2,7 @@ import { Args, Flags } from '@oclif/core';
|
|
|
2
2
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
3
|
import { testingGitStorageFlags, testingProjectFlag, } from '../../../lib/testing-flags.js';
|
|
4
4
|
import { buildTestingGitStorageUpdate, updateTestingJob } from '../../../lib/testing-operations.js';
|
|
5
|
+
import { resolveTestingSecretInput } from '../../../lib/testing-secret-input.js';
|
|
5
6
|
import { formatTestingRecord, TESTING_JOB_PARALLEL_MODES, TESTING_JOB_SUITE_TYPES, } from '../../../lib/testing-types.js';
|
|
6
7
|
export default class TestingJobUpdate extends AgentiaCommand {
|
|
7
8
|
static args = {
|
|
@@ -67,6 +68,11 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
67
68
|
const screen = this.screenFromFlags(flags);
|
|
68
69
|
const showVideoParams = this.videoParamsFromFlags(flags);
|
|
69
70
|
const caseDurationChangeDetection = this.analyticsFromFlags(flags);
|
|
71
|
+
const gitPassword = await resolveTestingSecretInput({
|
|
72
|
+
value: flags['git-password'],
|
|
73
|
+
valueFile: flags['git-password-file'],
|
|
74
|
+
valueStdin: flags['git-password-stdin'],
|
|
75
|
+
}, { label: 'CRT Git password', required: false });
|
|
70
76
|
const job = await this.withSpinner('Updating testing job', () => updateTestingJob({
|
|
71
77
|
analytics: caseDurationChangeDetection === undefined ? undefined : { caseDurationChangeDetection },
|
|
72
78
|
description: flags.description,
|
|
@@ -80,7 +86,7 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
80
86
|
showVideoParams,
|
|
81
87
|
storage: buildTestingGitStorageUpdate({
|
|
82
88
|
gitBranch: flags['git-branch'],
|
|
83
|
-
gitPassword
|
|
89
|
+
gitPassword,
|
|
84
90
|
gitTag: flags['git-tag'],
|
|
85
91
|
gitUrl: flags['git-url'],
|
|
86
92
|
gitUseCallerCredentials: flags['git-use-caller-credentials'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/update.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
2
|
import { type TestingFileOperation } from '../../../lib/testing-types.js';
|
|
3
3
|
export type TestingJobUploadResult = {
|
|
4
|
+
dryRun?: true;
|
|
4
5
|
operations: TestingFileOperation[];
|
|
5
6
|
response: Record<string, unknown>;
|
|
6
7
|
};
|
|
@@ -16,6 +17,11 @@ export default class TestingJobUpload extends AgentiaCommand {
|
|
|
16
17
|
static flags: {
|
|
17
18
|
'author-email': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
19
|
'author-name': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
'base-path': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
message: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
'parent-commit': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
'remote-prefix': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
25
|
add: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
26
|
remove: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
27
|
replace: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -14,6 +14,7 @@ export default class TestingJobUpload extends AgentiaCommand {
|
|
|
14
14
|
static examples = [
|
|
15
15
|
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --add tests.robot',
|
|
16
16
|
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --replace local.robot:tests.robot --remove old.robot --json',
|
|
17
|
+
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --add tests/smoke.robot --base-path tests --remote-prefix suites --dry-run --json',
|
|
17
18
|
];
|
|
18
19
|
static flags = {
|
|
19
20
|
...testingProjectFlag,
|
|
@@ -27,11 +28,29 @@ export default class TestingJobUpload extends AgentiaCommand {
|
|
|
27
28
|
default: DEFAULT_TESTING_AUTHOR.name,
|
|
28
29
|
description: 'Author name for CRT file history.',
|
|
29
30
|
}),
|
|
31
|
+
'base-path': Flags.string({
|
|
32
|
+
description: 'Require local upload files to stay within this directory and derive relative paths from it.',
|
|
33
|
+
}),
|
|
34
|
+
'dry-run': Flags.boolean({
|
|
35
|
+
default: false,
|
|
36
|
+
description: 'Return a sanitized upload plan without making a network mutation.',
|
|
37
|
+
}),
|
|
38
|
+
message: Flags.string({
|
|
39
|
+
description: 'Commit message for CRT file history.',
|
|
40
|
+
}),
|
|
41
|
+
'parent-commit': Flags.string({
|
|
42
|
+
description: 'Expected parent commit hash.',
|
|
43
|
+
}),
|
|
44
|
+
'remote-prefix': Flags.string({
|
|
45
|
+
description: 'Validated remote path prefix for all operations.',
|
|
46
|
+
}),
|
|
30
47
|
};
|
|
31
48
|
async run() {
|
|
32
49
|
const { args, flags } = await this.parse(TestingJobUpload);
|
|
33
50
|
const operations = buildFileOperationsFromSpecs({
|
|
34
51
|
add: flags.add,
|
|
52
|
+
basePath: flags['base-path'],
|
|
53
|
+
remotePrefix: flags['remote-prefix'],
|
|
35
54
|
remove: flags.remove,
|
|
36
55
|
replace: flags.replace,
|
|
37
56
|
});
|
|
@@ -41,8 +60,11 @@ export default class TestingJobUpload extends AgentiaCommand {
|
|
|
41
60
|
const result = await this.withSpinner('Uploading testing job files', () => uploadTestingJobFiles({
|
|
42
61
|
author: { email: flags['author-email'], name: flags['author-name'] },
|
|
43
62
|
branch: flags.branch,
|
|
63
|
+
commitMessage: flags.message,
|
|
64
|
+
dryRun: flags['dry-run'],
|
|
44
65
|
jobId: args.id,
|
|
45
66
|
operations,
|
|
67
|
+
parentCommitHash: flags['parent-commit'],
|
|
46
68
|
projectId: flags.project,
|
|
47
69
|
}));
|
|
48
70
|
this.display(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAC,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,oCAAoC,CAAA;AAC9H,OAAO,EAAC,mBAAmB,EAA4B,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveContinue extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<{
|
|
16
|
+
action: string;
|
|
17
|
+
message: string;
|
|
18
|
+
sessionId: number;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
+
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
4
|
+
import { controlTestingLive } from '../../../lib/testing-live-operations.js';
|
|
5
|
+
export default class TestingLiveContinue extends AgentiaCommand {
|
|
6
|
+
static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
|
|
7
|
+
static description = 'Continue paused Robot execution in the active CRT live session';
|
|
8
|
+
static examples = ['<%= config.bin %> <%= command.id %> --project <project-id>'];
|
|
9
|
+
static flags = testingLiveCommonFlags;
|
|
10
|
+
async run() {
|
|
11
|
+
const { args, flags } = await this.parse(TestingLiveContinue);
|
|
12
|
+
const result = await controlTestingLive('continue', {
|
|
13
|
+
jobId: args['job-id'],
|
|
14
|
+
projectId: flags.project,
|
|
15
|
+
sessionId: flags['session-id'],
|
|
16
|
+
});
|
|
17
|
+
this.display(() => this.log(result.message));
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=continue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/continue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,cAAc;IAC7D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,gEAAgE,CAAA;IAC9F,MAAM,CAAU,QAAQ,GAAG,CAAC,4DAA4D,CAAC,CAAA;IACzF,MAAM,CAAU,KAAK,GAAG,sBAAsB,CAAA;IAEvC,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE;YAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveExecute extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
arg: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
keyword: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
line: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
raw: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
section: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'section-index': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
};
|
|
22
|
+
run(): Promise<{
|
|
23
|
+
executionId: string;
|
|
24
|
+
jobId: number;
|
|
25
|
+
lines: string[];
|
|
26
|
+
projectId: number;
|
|
27
|
+
sessionId: number;
|
|
28
|
+
status: string;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
+
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
4
|
+
import { executeTestingLive } from '../../../lib/testing-live-operations.js';
|
|
5
|
+
export default class TestingLiveExecute extends AgentiaCommand {
|
|
6
|
+
static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
|
|
7
|
+
static description = 'Execute bounded Robot Framework keywords in an active CRT live session';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %> --project <project-id> --keyword GoTo --arg https://example.com',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --file smoke.robot --section Login',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...testingLiveCommonFlags,
|
|
14
|
+
arg: Flags.string({ description: 'Keyword argument. Repeat to preserve argument boundaries.', multiple: true }),
|
|
15
|
+
file: Flags.string({ description: 'Robot Framework input file.' }),
|
|
16
|
+
keyword: Flags.string({ description: 'Robot Framework keyword name.' }),
|
|
17
|
+
line: Flags.string({ description: 'Raw Robot Framework keyword line. Repeat for multiple lines.', multiple: true }),
|
|
18
|
+
raw: Flags.boolean({ default: false, description: 'Treat file input as raw keyword lines.' }),
|
|
19
|
+
section: Flags.string({ description: 'Robot test/task name to execute.' }),
|
|
20
|
+
'section-index': Flags.integer({ description: 'One-based Robot test/task index to execute.', min: 1 }),
|
|
21
|
+
};
|
|
22
|
+
async run() {
|
|
23
|
+
const { args, flags } = await this.parse(TestingLiveExecute);
|
|
24
|
+
const supplied = [flags.keyword !== undefined, flags.file !== undefined, (flags.line?.length ?? 0) > 0].filter(Boolean);
|
|
25
|
+
if (supplied.length !== 1)
|
|
26
|
+
throw new Error('Use exactly one of --keyword, --line, or --file.');
|
|
27
|
+
const result = await this.withSpinner('Executing CRT live keyword', () => executeTestingLive({
|
|
28
|
+
args: flags.arg,
|
|
29
|
+
file: flags.file,
|
|
30
|
+
jobId: args['job-id'],
|
|
31
|
+
keyword: flags.keyword,
|
|
32
|
+
lines: flags.line,
|
|
33
|
+
projectId: flags.project,
|
|
34
|
+
raw: flags.raw,
|
|
35
|
+
section: flags.section,
|
|
36
|
+
sectionIndex: flags['section-index'],
|
|
37
|
+
sessionId: flags['session-id'],
|
|
38
|
+
}));
|
|
39
|
+
this.display(() => this.log(`Execution ${result.executionId}: ${result.status}`));
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=execute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,wEAAwE,CAAA;IACtG,MAAM,CAAU,QAAQ,GAAG;QACzB,qGAAqG;QACrG,wGAAwG;KACzG,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,2DAA2D,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QAC7G,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,6BAA6B,EAAC,CAAC;QAChE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,+BAA+B,EAAC,CAAC;QACrE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,8DAA8D,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QACjH,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wCAAwC,EAAC,CAAC;QAC3F,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,kCAAkC,EAAC,CAAC;QACxE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,6CAA6C,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;KACrG,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,4BAA4B,EAAE,GAAG,EAAE,CACvE,kBAAkB,CAAC;YACjB,IAAI,EAAE,KAAK,CAAC,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC;YACpC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACjF,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveHistory extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<{
|
|
18
|
+
count: number;
|
|
19
|
+
executions: import("../../../lib/testing-live-types.js").TestingLiveHistoryRecord[];
|
|
20
|
+
jobId: number;
|
|
21
|
+
projectId: number;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
+
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
4
|
+
import { getTestingLiveHistory } from '../../../lib/testing-live-operations.js';
|
|
5
|
+
import { readTestingLiveState } from '../../../lib/testing-live-state.js';
|
|
6
|
+
export default class TestingLiveHistory extends AgentiaCommand {
|
|
7
|
+
static args = { 'job-id': Args.integer({ description: 'CRT job/test ID; defaults to the active session.', required: false }) };
|
|
8
|
+
static description = 'Read bounded sanitized local CRT live execution history';
|
|
9
|
+
static examples = ['<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --limit 20 --json'];
|
|
10
|
+
static flags = {
|
|
11
|
+
...testingLiveCommonFlags,
|
|
12
|
+
limit: Flags.integer({ default: 10, description: 'Maximum records to return.', max: 500, min: 1 }),
|
|
13
|
+
status: Flags.option({ description: 'Execution status filter.', options: ['completed', 'failed', 'recorded'] })(),
|
|
14
|
+
};
|
|
15
|
+
async run() {
|
|
16
|
+
const { args, flags } = await this.parse(TestingLiveHistory);
|
|
17
|
+
const active = args['job-id'] === undefined ? await readTestingLiveState() : undefined;
|
|
18
|
+
const jobId = args['job-id'] ?? active?.jobId;
|
|
19
|
+
if (jobId === undefined || (active !== undefined && active.projectId !== flags.project)) {
|
|
20
|
+
throw new Error('Provide a job ID or start a live session for this project.');
|
|
21
|
+
}
|
|
22
|
+
const result = getTestingLiveHistory({
|
|
23
|
+
jobId,
|
|
24
|
+
limit: flags.limit,
|
|
25
|
+
projectId: flags.project,
|
|
26
|
+
status: flags.status,
|
|
27
|
+
});
|
|
28
|
+
this.display(() => {
|
|
29
|
+
for (const execution of result.executions)
|
|
30
|
+
this.log(`${execution.startedAt} [${execution.status}] ${execution.lines.join(' | ')}`);
|
|
31
|
+
});
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,qBAAqB,EAAC,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAA;AAEvE,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,kDAAkD,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IACnI,MAAM,CAAU,WAAW,GAAG,yDAAyD,CAAA;IACvF,MAAM,CAAU,QAAQ,GAAG,CAAC,uFAAuF,CAAC,CAAA;IACpH,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;QAChG,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAC,CAAC,EAAE;KAChH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,KAAK,CAAA;QAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,MAAM,EAAE,KAAK,CAAC,MAAyD;SACxE,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACpI,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveInspect extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
dom: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<Record<string, unknown>>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
+
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
4
|
+
import { inspectTestingLive } from '../../../lib/testing-live-operations.js';
|
|
5
|
+
export default class TestingLiveInspect extends AgentiaCommand {
|
|
6
|
+
static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
|
|
7
|
+
static description = 'Inspect bounded, sanitized page state from an active CRT live session';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %> --project <project-id> --json',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> --project <project-id> --dom --output page.html',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...testingLiveCommonFlags,
|
|
14
|
+
dom: Flags.boolean({ default: false, description: 'Fetch raw page DOM; requires --output.' }),
|
|
15
|
+
output: Flags.string({ dependsOn: ['dom'], description: 'Explicit file path for raw DOM.' }),
|
|
16
|
+
};
|
|
17
|
+
async run() {
|
|
18
|
+
const { args, flags } = await this.parse(TestingLiveInspect);
|
|
19
|
+
const result = await this.withSpinner('Inspecting CRT live session', () => inspectTestingLive({
|
|
20
|
+
dom: flags.dom,
|
|
21
|
+
jobId: args['job-id'],
|
|
22
|
+
output: flags.output,
|
|
23
|
+
projectId: flags.project,
|
|
24
|
+
sessionId: flags['session-id'],
|
|
25
|
+
}));
|
|
26
|
+
this.display(() => this.log(flags.dom ? `DOM written to ${String(result.path)}.` : JSON.stringify(result, null, 2)));
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,uEAAuE,CAAA;IACrG,MAAM,CAAU,QAAQ,GAAG;QACzB,mEAAmE;QACnE,qFAAqF;KACtF,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wCAAwC,EAAC,CAAC;QAC3F,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAC,CAAC;KAC3F,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE,GAAG,EAAE,CACxE,kBAAkB,CAAC;YACjB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CACH,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACpH,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveInterrupt extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<{
|
|
16
|
+
action: string;
|
|
17
|
+
message: string;
|
|
18
|
+
sessionId: number;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
+
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
4
|
+
import { controlTestingLive } from '../../../lib/testing-live-operations.js';
|
|
5
|
+
export default class TestingLiveInterrupt extends AgentiaCommand {
|
|
6
|
+
static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
|
|
7
|
+
static description = 'Interrupt Robot execution in the active CRT live session';
|
|
8
|
+
static examples = ['<%= config.bin %> <%= command.id %> --project <project-id>'];
|
|
9
|
+
static flags = testingLiveCommonFlags;
|
|
10
|
+
async run() {
|
|
11
|
+
const { args, flags } = await this.parse(TestingLiveInterrupt);
|
|
12
|
+
const result = await controlTestingLive('interrupt', {
|
|
13
|
+
jobId: args['job-id'],
|
|
14
|
+
projectId: flags.project,
|
|
15
|
+
sessionId: flags['session-id'],
|
|
16
|
+
});
|
|
17
|
+
this.display(() => this.log(result.message));
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=interrupt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../../../src/commands/testing/live/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAA;AAE1E,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,cAAc;IAC9D,MAAM,CAAU,IAAI,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,CAAA;IAClH,MAAM,CAAU,WAAW,GAAG,0DAA0D,CAAA;IACxF,MAAM,CAAU,QAAQ,GAAG,CAAC,4DAA4D,CAAC,CAAA;IACzF,MAAM,CAAU,KAAK,GAAG,sBAAsB,CAAA;IAEvC,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
+
export default class TestingLiveRecorder extends AgentiaCommand {
|
|
3
|
+
static args: {
|
|
4
|
+
'job-id': import("@oclif/core/interfaces").Arg<number | undefined, {
|
|
5
|
+
max?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
}>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static enableJsonFlag: boolean;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
'no-enable': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
'session-id': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<{
|
|
20
|
+
recorded: number;
|
|
21
|
+
sessionId: number;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/* eslint-disable no-bitwise -- Node secure append flags are a bitmask. */
|
|
2
|
+
import { Args, Flags } from '@oclif/core';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { closeSync, constants, mkdirSync, openSync, writeSync } from 'node:fs';
|
|
5
|
+
import { dirname, extname, resolve } from 'node:path';
|
|
6
|
+
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
7
|
+
import { resolveTestingCredentials } from '../../../lib/testing-config.js';
|
|
8
|
+
import { appendTestingLiveHistory } from '../../../lib/testing-live-history.js';
|
|
9
|
+
import { loadTestingLiveConnection, setTestingLiveOptions } from '../../../lib/testing-live-operations.js';
|
|
10
|
+
import { acquireTestingLiveRecorderLock, connectTestingLiveWebSocket, parseTestingLiveRecorderFrame, robotLinesFromRecorderEvent, } from '../../../lib/testing-live-recorder.js';
|
|
11
|
+
export default class TestingLiveRecorder extends AgentiaCommand {
|
|
12
|
+
static args = { 'job-id': Args.integer({ description: 'Optional CRT job/test ID guard.', required: false }) };
|
|
13
|
+
static description = 'Record CRT live interactions as bounded Robot Framework lines';
|
|
14
|
+
static enableJsonFlag = false;
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> <%= command.id %> --project <project-id> --output recorded.robot',
|
|
17
|
+
];
|
|
18
|
+
static flags = {
|
|
19
|
+
debug: Flags.boolean({ default: false, description: 'Print frame sizes and event types without frame bodies.' }),
|
|
20
|
+
'no-enable': Flags.boolean({ default: false, description: 'Do not manage the server recorder toggle.' }),
|
|
21
|
+
output: Flags.string({ char: 'o', description: 'Explicit .robot file to append recorded keywords to.' }),
|
|
22
|
+
project: Flags.integer({ char: 'p', description: 'CRT project ID.', required: true }),
|
|
23
|
+
'session-id': Flags.integer({ description: 'Guard that must match the active CRT live session.', min: 1 }),
|
|
24
|
+
};
|
|
25
|
+
async run() {
|
|
26
|
+
const { args, flags } = await this.parse(TestingLiveRecorder);
|
|
27
|
+
const connection = await loadTestingLiveConnection({
|
|
28
|
+
jobId: args['job-id'],
|
|
29
|
+
projectId: flags.project,
|
|
30
|
+
sessionId: flags['session-id'],
|
|
31
|
+
});
|
|
32
|
+
const lock = acquireTestingLiveRecorderLock(connection.metadata.sessionId);
|
|
33
|
+
const descriptor = flags.output === undefined ? undefined : openRobotOutput(flags.output);
|
|
34
|
+
let recorded = 0;
|
|
35
|
+
try {
|
|
36
|
+
if (!flags['no-enable']) {
|
|
37
|
+
await setTestingLiveOptions({
|
|
38
|
+
jobId: connection.metadata.jobId,
|
|
39
|
+
projectId: connection.metadata.projectId,
|
|
40
|
+
recorder: emptyOptions(true),
|
|
41
|
+
sessionId: connection.metadata.sessionId,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const socket = connectTestingLiveWebSocket(connection.metadata.sessionPath, resolveTestingCredentials().domain, connection.session);
|
|
45
|
+
await new Promise((resolvePromise, reject) => {
|
|
46
|
+
const heartbeat = setInterval(() => {
|
|
47
|
+
if (socket.readyState === socket.OPEN)
|
|
48
|
+
socket.send('true');
|
|
49
|
+
}, 3000);
|
|
50
|
+
const stop = () => socket.close();
|
|
51
|
+
process.once('SIGINT', stop);
|
|
52
|
+
socket.once('error', () => reject(new Error('CRT live recorder connection failed.')));
|
|
53
|
+
socket.once('open', () => this.log('Recording CRT interactions. Press Ctrl-C to stop.'));
|
|
54
|
+
socket.on('message', (frame) => {
|
|
55
|
+
try {
|
|
56
|
+
const event = parseTestingLiveRecorderFrame(frame);
|
|
57
|
+
if (event === undefined)
|
|
58
|
+
return;
|
|
59
|
+
if (flags.debug) {
|
|
60
|
+
const type = typeof event.type === 'string' && /^[a-z-]{1,32}$/u.test(event.type)
|
|
61
|
+
? event.type
|
|
62
|
+
: 'unknown';
|
|
63
|
+
this.warn(`Recorder event ${type} (${Buffer.byteLength(frame.toString())} bytes).`);
|
|
64
|
+
}
|
|
65
|
+
const lines = robotLinesFromRecorderEvent(event);
|
|
66
|
+
if (lines.length === 0)
|
|
67
|
+
return;
|
|
68
|
+
for (const line of lines)
|
|
69
|
+
this.log(line);
|
|
70
|
+
if (descriptor !== undefined) {
|
|
71
|
+
writeSync(descriptor, `${lines.join('\n')}\n\n`, undefined, 'utf8');
|
|
72
|
+
}
|
|
73
|
+
const now = new Date().toISOString();
|
|
74
|
+
appendTestingLiveHistory({
|
|
75
|
+
completedAt: now,
|
|
76
|
+
id: randomUUID(),
|
|
77
|
+
jobId: connection.metadata.jobId,
|
|
78
|
+
lines,
|
|
79
|
+
projectId: connection.metadata.projectId,
|
|
80
|
+
startedAt: now,
|
|
81
|
+
status: 'recorded',
|
|
82
|
+
});
|
|
83
|
+
recorded += lines.length;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this.warn(error.message);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
socket.once('close', () => resolvePromise());
|
|
90
|
+
socket.once('error', () => resolvePromise());
|
|
91
|
+
socket.once('close', cleanup);
|
|
92
|
+
socket.once('error', cleanup);
|
|
93
|
+
function cleanup() {
|
|
94
|
+
clearInterval(heartbeat);
|
|
95
|
+
process.removeListener('SIGINT', stop);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
if (descriptor !== undefined)
|
|
101
|
+
closeSync(descriptor);
|
|
102
|
+
lock.release();
|
|
103
|
+
if (!flags['no-enable']) {
|
|
104
|
+
await setTestingLiveOptions({
|
|
105
|
+
jobId: connection.metadata.jobId,
|
|
106
|
+
projectId: connection.metadata.projectId,
|
|
107
|
+
recorder: emptyOptions(false),
|
|
108
|
+
sessionId: connection.metadata.sessionId,
|
|
109
|
+
}).catch(() => { });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return { recorded, sessionId: connection.metadata.sessionId };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function emptyOptions(enabled) {
|
|
116
|
+
return {
|
|
117
|
+
enabled,
|
|
118
|
+
enableHealingContext: false,
|
|
119
|
+
enableHoverText: false,
|
|
120
|
+
enableScrollText: false,
|
|
121
|
+
enableSystemState: false,
|
|
122
|
+
enableVerifyText: false,
|
|
123
|
+
preferTableKeywords: false,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function openRobotOutput(path) {
|
|
127
|
+
if (path.includes('\0') || extname(path).toLowerCase() !== '.robot') {
|
|
128
|
+
throw new Error('CRT recorder output must be an explicit .robot path.');
|
|
129
|
+
}
|
|
130
|
+
const target = resolve(path);
|
|
131
|
+
mkdirSync(dirname(target), { mode: 0o700, recursive: true });
|
|
132
|
+
return openSync(target, constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_WRONLY, 0o600);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=recorder.js.map
|