@copado/agentia-cli 1.2.0 → 1.4.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/CHANGELOG.md +58 -1
- package/README.md +2299 -1615
- package/dist/commands/auth/get.js +21 -1
- package/dist/commands/auth/set.js +13 -0
- package/dist/commands/auth/unset.js +37 -0
- package/dist/commands/cicd/cloud/commit.js +6 -5
- package/dist/commands/cicd/cloud/promote.js +44 -8
- package/dist/commands/cicd/credential/auth/status.js +2 -2
- package/dist/commands/cicd/credential/auth/web/login.js +2 -2
- package/dist/commands/cicd/credential/create.js +2 -2
- package/dist/commands/cicd/credential/list.js +4 -3
- package/dist/commands/cicd/credential/open.js +2 -2
- package/dist/commands/cicd/credential/update.js +2 -2
- package/dist/commands/cicd/data/commit/create.js +2 -2
- package/dist/commands/cicd/data/commit/list.js +2 -2
- package/dist/commands/cicd/data/dataset-file/content.js +2 -2
- package/dist/commands/cicd/data/dataset-file/list.js +2 -2
- package/dist/commands/cicd/data/filter/add.js +2 -2
- package/dist/commands/cicd/data/filter/delete.js +2 -2
- package/dist/commands/cicd/data/filter/list.js +2 -2
- package/dist/commands/cicd/data/filter/update.js +2 -2
- package/dist/commands/cicd/data/formula/create.js +2 -2
- package/dist/commands/cicd/data/formula/list.js +2 -2
- package/dist/commands/cicd/data/formula/update.js +2 -2
- package/dist/commands/cicd/data/records/match.js +2 -2
- package/dist/commands/cicd/data/records/search.js +2 -2
- package/dist/commands/cicd/data/sobject/fields.js +2 -2
- package/dist/commands/cicd/data/sobject/relationships.js +2 -2
- package/dist/commands/cicd/data/sync/apply.js +2 -2
- package/dist/commands/cicd/data/sync/preview-updates.js +2 -2
- package/dist/commands/cicd/data/template/convert-old.js +2 -2
- package/dist/commands/cicd/data/template/create.js +2 -2
- package/dist/commands/cicd/data/template/delete.js +2 -2
- package/dist/commands/cicd/data/template/get-detail.js +2 -2
- package/dist/commands/cicd/data/template/get.js +2 -2
- package/dist/commands/cicd/data/template/list.js +2 -2
- package/dist/commands/cicd/data/template/open.js +2 -2
- package/dist/commands/cicd/data/template/save-detail.js +2 -2
- package/dist/commands/cicd/environment/auth/status.js +2 -2
- package/dist/commands/cicd/environment/auth/web/login.js +2 -2
- package/dist/commands/cicd/environment/create.js +2 -2
- package/dist/commands/cicd/environment/get.js +2 -2
- package/dist/commands/cicd/environment/list.js +4 -3
- package/dist/commands/cicd/environment/open.js +2 -2
- package/dist/commands/cicd/environment/update.js +2 -2
- package/dist/commands/cicd/extension/create.js +2 -2
- package/dist/commands/cicd/extension/install.js +2 -2
- package/dist/commands/cicd/extension/package.js +2 -2
- package/dist/commands/cicd/extension/publish.js +2 -2
- package/dist/commands/cicd/extension/uninstall.js +2 -2
- package/dist/commands/cicd/extension/validate.js +2 -2
- package/dist/commands/cicd/extension-configuration/get.js +2 -2
- package/dist/commands/cicd/extension-configuration/list.js +4 -3
- package/dist/commands/cicd/extension-configuration/open.js +2 -2
- package/dist/commands/cicd/function/defaults.js +2 -2
- package/dist/commands/cicd/function/delete.js +2 -2
- package/dist/commands/cicd/function/get.js +2 -2
- package/dist/commands/cicd/function/list.js +12 -15
- package/dist/commands/cicd/function/open.js +2 -2
- package/dist/commands/cicd/function/result/get.js +2 -2
- package/dist/commands/cicd/function/result/log/get.js +2 -2
- package/dist/commands/cicd/function/run-local.js +2 -2
- package/dist/commands/cicd/function/run.js +2 -2
- package/dist/commands/cicd/function/upsert.js +2 -2
- package/dist/commands/cicd/health-check.js +2 -2
- package/dist/commands/cicd/job/get.js +2 -2
- package/dist/commands/cicd/job/kill.js +2 -2
- package/dist/commands/cicd/job/list.js +4 -3
- package/dist/commands/cicd/job/log/get.js +2 -2
- package/dist/commands/cicd/job/open.js +2 -2
- package/dist/commands/cicd/job/pause.js +2 -2
- package/dist/commands/cicd/job/result-file/get.js +13 -8
- package/dist/commands/cicd/job/result-file/list.js +2 -2
- package/dist/commands/cicd/job/resume.js +2 -2
- package/dist/commands/cicd/job/run.js +2 -2
- package/dist/commands/cicd/metadata/content/compare.js +2 -2
- package/dist/commands/cicd/metadata/content/get.js +2 -2
- package/dist/commands/cicd/metadata/dependency/list.js +44 -21
- package/dist/commands/cicd/metadata/explore.js +2 -2
- package/dist/commands/cicd/metadata/index/compare.js +2 -2
- package/dist/commands/cicd/metadata/list.js +2 -2
- package/dist/commands/cicd/metadata/refresh/deleted.js +2 -2
- package/dist/commands/cicd/metadata/refresh/run.js +2 -2
- package/dist/commands/cicd/metadata/refresh/status.js +2 -2
- package/dist/commands/cicd/notification/configure.js +2 -2
- package/dist/commands/cicd/notification/get.js +2 -2
- package/dist/commands/cicd/pipeline/automation/activate.js +2 -2
- package/dist/commands/cicd/pipeline/automation/create.js +2 -2
- package/dist/commands/cicd/pipeline/automation/deactivate.js +2 -2
- package/dist/commands/cicd/pipeline/automation/delete.js +2 -2
- package/dist/commands/cicd/pipeline/automation/get.js +2 -2
- package/dist/commands/cicd/pipeline/automation/list.js +4 -3
- package/dist/commands/cicd/pipeline/automation/open.js +2 -2
- package/dist/commands/cicd/pipeline/automation/update.js +2 -2
- package/dist/commands/cicd/pipeline/connection/create.js +2 -2
- package/dist/commands/cicd/pipeline/connection/delete.js +2 -2
- package/dist/commands/cicd/pipeline/connection/list.js +2 -2
- package/dist/commands/cicd/pipeline/connection/open.js +2 -2
- package/dist/commands/cicd/pipeline/connection/update.js +2 -2
- package/dist/commands/cicd/pipeline/create.js +2 -2
- package/dist/commands/cicd/pipeline/get.js +2 -2
- package/dist/commands/cicd/pipeline/list.js +4 -3
- package/dist/commands/cicd/pipeline/open.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/activate.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/create.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/deactivate.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/delete.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/get.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/list.js +4 -3
- package/dist/commands/cicd/pipeline/quality-gate/open.js +2 -2
- package/dist/commands/cicd/pipeline/quality-gate/update.js +2 -2
- package/dist/commands/cicd/pipeline/stage-connection/create.js +2 -2
- package/dist/commands/cicd/pipeline/stage-connection/delete.js +2 -2
- package/dist/commands/cicd/pipeline/stage-connection/list.js +2 -2
- package/dist/commands/cicd/pipeline/stage-connection/open.js +2 -2
- package/dist/commands/cicd/pipeline/stage-connection/update.js +2 -2
- package/dist/commands/cicd/pipeline/update.js +2 -2
- package/dist/commands/cicd/project/create.js +2 -2
- package/dist/commands/cicd/project/default/get.js +2 -2
- package/dist/commands/cicd/project/default/set.js +2 -2
- package/dist/commands/cicd/project/default/unset.js +2 -2
- package/dist/commands/cicd/project/delete.js +2 -2
- package/dist/commands/cicd/project/get.js +2 -2
- package/dist/commands/cicd/project/list.js +4 -3
- package/dist/commands/cicd/project/open.js +2 -2
- package/dist/commands/cicd/project/update.js +2 -2
- package/dist/commands/cicd/promotion/conflict/get.js +2 -2
- package/dist/commands/cicd/promotion/conflict/list.js +2 -2
- package/dist/commands/cicd/promotion/conflict/resolve.js +2 -2
- package/dist/commands/cicd/promotion/conflict/unresolve.js +2 -2
- package/dist/commands/cicd/promotion/get.js +2 -2
- package/dist/commands/cicd/promotion/job-step/update.js +2 -2
- package/dist/commands/cicd/promotion/list.js +4 -3
- package/dist/commands/cicd/promotion/open.js +2 -2
- package/dist/commands/cicd/promotion/queue/list.js +28 -0
- package/dist/commands/cicd/promotion/queue/remove.js +37 -0
- package/dist/commands/cicd/promotion/run.js +2 -2
- package/dist/commands/cicd/promotion/status.js +29 -0
- package/dist/commands/cicd/repository/auth/https/configure.js +2 -2
- package/dist/commands/cicd/repository/auth/oauth/login.js +2 -2
- package/dist/commands/cicd/repository/auth/setup.js +2 -2
- package/dist/commands/cicd/repository/auth/ssh/configure.js +2 -2
- package/dist/commands/cicd/repository/create.js +2 -2
- package/dist/commands/cicd/repository/delete.js +2 -2
- package/dist/commands/cicd/repository/get.js +2 -2
- package/dist/commands/cicd/repository/list.js +7 -10
- package/dist/commands/cicd/repository/open.js +2 -2
- package/dist/commands/cicd/repository/reset.js +2 -2
- package/dist/commands/cicd/repository/update.js +2 -2
- package/dist/commands/cicd/repository/validate.js +2 -2
- package/dist/commands/cicd/stage/create.js +2 -2
- package/dist/commands/cicd/stage/delete.js +2 -2
- package/dist/commands/cicd/stage/get.js +2 -2
- package/dist/commands/cicd/stage/list.js +4 -3
- package/dist/commands/cicd/stage/open.js +2 -2
- package/dist/commands/cicd/stage/update.js +2 -2
- package/dist/commands/cicd/template/defaults.js +2 -2
- package/dist/commands/cicd/template/delete.js +2 -2
- package/dist/commands/cicd/template/get.js +2 -2
- package/dist/commands/cicd/template/list.js +11 -14
- package/dist/commands/cicd/template/upsert.js +2 -2
- package/dist/commands/cicd/user/get.js +2 -2
- package/dist/commands/cicd/work/ahead-behind.js +2 -2
- package/dist/commands/cicd/work/create.js +2 -2
- package/dist/commands/cicd/work/delete.js +4 -4
- package/dist/commands/cicd/work/deployment-step/create.js +2 -2
- package/dist/commands/cicd/work/deployment-step/delete.js +2 -2
- package/dist/commands/cicd/work/deployment-step/list.js +2 -2
- package/dist/commands/cicd/work/deployment-step/reorder.js +2 -2
- package/dist/commands/cicd/work/deployment-step/salesforce-flows.js +2 -2
- package/dist/commands/cicd/work/deployment-step/types.js +2 -2
- package/dist/commands/cicd/work/deployment-step/update.js +2 -2
- package/dist/commands/cicd/work/done.js +2 -2
- package/dist/commands/cicd/work/environment-sync.js +140 -64
- package/dist/commands/cicd/work/get.js +4 -4
- package/dist/commands/cicd/work/list.js +4 -3
- package/dist/commands/cicd/work/open.js +2 -2
- package/dist/commands/cicd/work/promote.js +2 -2
- package/dist/commands/cicd/work/publish.js +2 -2
- package/dist/commands/cicd/work/push.js +2 -2
- package/dist/commands/cicd/work/set.js +2 -2
- package/dist/commands/cicd/work/status.js +2 -2
- package/dist/commands/cicd/work/submit.js +2 -2
- package/dist/commands/cicd/work/test/apex.js +20 -35
- package/dist/commands/cicd/work/test.js +116 -11
- package/dist/commands/cicd/work/update.js +4 -4
- package/dist/commands/help-agent.js +15 -0
- package/dist/commands/help.js +38 -0
- package/dist/commands/history/clear.js +42 -0
- package/dist/commands/history/list.js +50 -0
- package/dist/commands/support.js +15 -0
- package/dist/commands/testing/browser/execute.js +49 -0
- package/dist/commands/testing/browser/history.js +49 -0
- package/dist/commands/testing/browser/inspect.js +35 -0
- package/dist/commands/testing/browser/recorder.js +52 -0
- package/dist/commands/testing/browser/screenshot.js +27 -0
- package/dist/commands/testing/browser/set-options.js +35 -0
- package/dist/commands/testing/browser/start.js +51 -0
- package/dist/commands/testing/browser/status.js +26 -0
- package/dist/commands/testing/browser/stop.js +34 -0
- package/dist/commands/testing/browser/view.js +35 -0
- package/dist/commands/testing/job/runs/abort.js +1 -1
- package/dist/commands/testing/job/runs/get.js +1 -1
- package/dist/commands/testing/job/runs/list.js +1 -1
- package/dist/commands/testing/job/runs/logs.js +1 -1
- package/dist/commands/testing/job/runs/search.js +1 -1
- package/dist/hooks/init/cicd-connection.js +59 -0
- package/dist/lib/agentia-command.js +69 -6
- package/dist/lib/cicd-command.js +3 -0
- package/dist/lib/cicd-connection.js +22 -0
- package/dist/lib/cicd-gateway.js +2 -1
- package/dist/lib/command-history-sanitization.js +9 -0
- package/dist/lib/command-history.js +11 -0
- package/dist/lib/command-output-buffer.js +6 -1
- package/dist/lib/defaults-store.js +5 -1
- package/dist/lib/dependency-from-changes.js +3 -1
- package/dist/lib/dependency-source-context.js +3 -0
- package/dist/lib/function-list.js +3 -0
- package/dist/lib/git-worktree.js +4 -1
- package/dist/lib/help-agent-command.js +3 -0
- package/dist/lib/help-agent-interaction-history.js +10 -0
- package/dist/lib/help-agent-session.js +3 -0
- package/dist/lib/job-get.js +2 -1
- package/dist/lib/job-types.js +2 -1
- package/dist/lib/list-pagination.js +6 -1
- package/dist/lib/local-quality-gates.js +4 -1
- package/dist/lib/mcp/result.js +41 -3
- package/dist/lib/mcp/server.js +3 -2
- package/dist/lib/mcp/testing-browser-tools.js +179 -0
- package/dist/lib/mcp/testing-tools.js +4 -3
- package/dist/lib/mcp/tool-annotations.js +31 -12
- package/dist/lib/mcp/tools.js +115 -59
- package/dist/lib/mcp/work-tools.js +100 -47
- package/dist/lib/promotion-queue.js +5 -0
- package/dist/lib/promotion-run.js +4 -1
- package/dist/lib/promotion-status.js +12 -0
- package/dist/lib/quality-gates.js +13 -0
- package/dist/lib/repository-list.js +3 -0
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/stock-quality-gates.js +2 -1
- package/dist/lib/support-ai-context.js +11 -0
- package/dist/lib/support-ai-stream-parser.js +4 -0
- package/dist/lib/support-ai.js +9 -0
- package/dist/lib/template-list.js +3 -0
- package/dist/lib/testing-browser-command.js +6 -0
- package/dist/lib/testing-browser-operations.js +16 -0
- package/dist/lib/testing-browser-requests.js +11 -0
- package/dist/lib/testing-browser-robot.js +9 -0
- package/dist/lib/testing-browser-session.js +13 -0
- package/dist/lib/testing-browser-state.js +17 -0
- package/dist/lib/testing-browser-stream.js +7 -0
- package/dist/lib/testing-browser-types.js +3 -0
- package/dist/lib/testing-browser-viewer-key.js +7 -0
- package/dist/lib/testing-gateway.js +2 -1
- package/dist/lib/testing-operations.js +21 -1
- package/dist/lib/testing-sanitization.js +2 -1
- package/dist/lib/work-apex-test-failures.js +2 -1
- package/dist/lib/work-environment-sync-ready.js +7 -1
- package/dist/lib/work-environment-sync.js +8 -1
- package/dist/lib/work-local-run-tests.js +2 -1
- package/dist/lib/work-promote-deploy.js +3 -1
- package/dist/lib/work-promote.js +2 -1
- package/dist/lib/work-types.js +3 -1
- package/oclif.manifest.json +3544 -1828
- package/package.json +11 -4
- package/templates/skills/agentia-ai/SKILL.md +6 -2
- package/templates/skills/agentia-ai/references/ai-agents.md +19 -1
- package/templates/skills/agentia-cicd/SKILL.md +6 -5
- package/templates/skills/agentia-cicd/references/environments-and-credentials.md +16 -0
- package/templates/skills/agentia-cicd/references/jobs.md +3 -2
- package/templates/skills/agentia-cicd/references/promotions.md +26 -5
- package/templates/skills/agentia-cicd/references/work.md +25 -11
- package/templates/skills/agentia-metadata/SKILL.md +9 -3
- package/templates/skills/agentia-metadata/references/metadata-dependency.md +70 -0
- package/templates/skills/agentia-metadata/references/metadata-explore.md +8 -4
- package/templates/skills/agentia-testing/SKILL.md +9 -4
- package/templates/skills/agentia-testing/references/browser-testing.md +92 -0
- package/templates/skills/agentia-testing/references/flow-automation.md +112 -0
- package/templates/skills/agentia-testing/references/qforce.md +88 -0
- package/templates/skills/agentia-testing/references/qweb.md +103 -0
- package/templates/skills/agentia-testing/references/tests.md +17 -9
- package/vendor/java/var-replace-command.jar +0 -0
- package/dist/commands/testing/live/continue.js +0 -16
- package/dist/commands/testing/live/execute.js +0 -43
- package/dist/commands/testing/live/history.js +0 -40
- package/dist/commands/testing/live/inspect.js +0 -31
- package/dist/commands/testing/live/interrupt.js +0 -16
- package/dist/commands/testing/live/recorder.js +0 -42
- package/dist/commands/testing/live/reports.js +0 -31
- package/dist/commands/testing/live/screenshot.js +0 -25
- package/dist/commands/testing/live/set-options.js +0 -35
- package/dist/commands/testing/live/start.js +0 -58
- package/dist/commands/testing/live/status.js +0 -24
- package/dist/commands/testing/live/stop.js +0 -36
- package/dist/commands/testing/live/view.js +0 -36
- package/dist/lib/mcp/testing-live-tools.js +0 -226
- package/dist/lib/testing-live-command.js +0 -8
- package/dist/lib/testing-live-operations.js +0 -25
- package/dist/lib/testing-live-recorder.js +0 -11
- package/dist/lib/testing-live-robot.js +0 -9
- package/dist/lib/testing-live-state.js +0 -12
- package/dist/lib/testing-live-types.js +0 -3
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg } from '../../../lib/testing-live-command.js';
|
|
4
|
-
import { recordTestingLiveSession } from '../../../lib/testing-live-operations.js';
|
|
5
|
-
export default class TestingLiveRecorder extends AgentiaCommand {
|
|
6
|
-
static args = testingLiveOptionalJobArg;
|
|
7
|
-
static description = 'Record CRT live interactions as bounded Robot Framework lines';
|
|
8
|
-
static enableJsonFlag = false;
|
|
9
|
-
static examples = ['<%= config.bin %> <%= command.id %> --project <project-id> --output recorded.robot'];
|
|
10
|
-
static flags = {
|
|
11
|
-
...testingLiveCommonFlags,
|
|
12
|
-
debug: Flags.boolean({ default: false, description: 'Print frame sizes and event types without frame bodies.' }),
|
|
13
|
-
'no-enable': Flags.boolean({ default: false, description: 'Do not manage the server recorder toggle.' }),
|
|
14
|
-
output: Flags.string({ char: 'o', description: 'Explicit .robot file to append recorded keywords to.' }),
|
|
15
|
-
};
|
|
16
|
-
async run() {
|
|
17
|
-
const { args, flags } = await this.parse(TestingLiveRecorder);
|
|
18
|
-
const controller = new AbortController();
|
|
19
|
-
const stop = () => controller.abort();
|
|
20
|
-
process.once('SIGINT', stop);
|
|
21
|
-
try {
|
|
22
|
-
return await recordTestingLiveSession({
|
|
23
|
-
appendRobot: flags.output,
|
|
24
|
-
jobId: args['job-id'],
|
|
25
|
-
noEnable: flags['no-enable'],
|
|
26
|
-
onDebugFrame: flags.debug
|
|
27
|
-
? ({ bytes, type }) => this.warn(`Recorder event ${type} (${bytes} bytes).`)
|
|
28
|
-
: undefined,
|
|
29
|
-
onError: (error) => this.warn(error.message),
|
|
30
|
-
onKeywordLine: (line) => this.log(line),
|
|
31
|
-
onReady: () => this.log('Recording CRT interactions. Press Ctrl-C to stop.'),
|
|
32
|
-
projectId: flags.project,
|
|
33
|
-
sessionId: flags['session-id'],
|
|
34
|
-
signal: controller.signal,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
process.removeListener('SIGINT', stop);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=recorder.js.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg } from '../../../lib/testing-live-command.js';
|
|
4
|
-
import { getTestingLiveReports } from '../../../lib/testing-live-operations.js';
|
|
5
|
-
export default class TestingLiveReports extends AgentiaCommand {
|
|
6
|
-
static args = testingLiveOptionalJobArg;
|
|
7
|
-
static description = 'List or save bounded report artifacts from an active CRT live session';
|
|
8
|
-
static examples = [
|
|
9
|
-
'<%= config.bin %> <%= command.id %> --project <project-id>',
|
|
10
|
-
'<%= config.bin %> <%= command.id %> --project <project-id> --output-dir ./reports',
|
|
11
|
-
];
|
|
12
|
-
static flags = {
|
|
13
|
-
...testingLiveCommonFlags,
|
|
14
|
-
'output-dir': Flags.string({ description: 'Explicit directory for log.html, report.html, and output.xml.' }),
|
|
15
|
-
};
|
|
16
|
-
async run() {
|
|
17
|
-
const { args, flags } = await this.parse(TestingLiveReports);
|
|
18
|
-
const result = await this.withSpinner('Reading CRT live reports', () => getTestingLiveReports({
|
|
19
|
-
jobId: args['job-id'],
|
|
20
|
-
outputDir: flags['output-dir'],
|
|
21
|
-
projectId: flags.project,
|
|
22
|
-
sessionId: flags['session-id'],
|
|
23
|
-
}));
|
|
24
|
-
this.display(() => {
|
|
25
|
-
for (const file of result.files)
|
|
26
|
-
this.log(`${file.name}: ${file.bytes} bytes${file.path === undefined ? '' : ` -> ${file.path}`}`);
|
|
27
|
-
});
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=reports.js.map
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg } from '../../../lib/testing-live-command.js';
|
|
4
|
-
import { saveTestingLiveScreenshot } from '../../../lib/testing-live-operations.js';
|
|
5
|
-
export default class TestingLiveScreenshot extends AgentiaCommand {
|
|
6
|
-
static args = testingLiveOptionalJobArg;
|
|
7
|
-
static description = 'Save a bounded CRT live browser screenshot to an explicit file';
|
|
8
|
-
static examples = ['<%= config.bin %> <%= command.id %> --project <project-id> --output screenshot.png'];
|
|
9
|
-
static flags = {
|
|
10
|
-
...testingLiveCommonFlags,
|
|
11
|
-
output: Flags.string({ char: 'o', description: 'Explicit screenshot output path.', required: true }),
|
|
12
|
-
};
|
|
13
|
-
async run() {
|
|
14
|
-
const { args, flags } = await this.parse(TestingLiveScreenshot);
|
|
15
|
-
const result = await this.withSpinner('Saving CRT live screenshot', () => saveTestingLiveScreenshot({
|
|
16
|
-
jobId: args['job-id'],
|
|
17
|
-
output: flags.output,
|
|
18
|
-
projectId: flags.project,
|
|
19
|
-
sessionId: flags['session-id'],
|
|
20
|
-
}));
|
|
21
|
-
this.display(() => this.log(`Wrote ${result.bytes} bytes to ${result.path}.`));
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=screenshot.js.map
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg, testingLiveRecorderOptionFlags, testingLiveRecorderOptions, } from '../../../lib/testing-live-command.js';
|
|
3
|
-
import { setTestingLiveOptions } from '../../../lib/testing-live-operations.js';
|
|
4
|
-
export default class TestingLiveSetOptions extends AgentiaCommand {
|
|
5
|
-
static args = testingLiveOptionalJobArg;
|
|
6
|
-
static description = 'Set the complete validated CRT live recorder option block';
|
|
7
|
-
static examples = [
|
|
8
|
-
'<%= config.bin %> <%= command.id %> --project <project-id> --enable --scroll-text --table-keywords',
|
|
9
|
-
];
|
|
10
|
-
static flags = { ...testingLiveCommonFlags, ...testingLiveRecorderOptionFlags };
|
|
11
|
-
async run() {
|
|
12
|
-
const { args, flags } = await this.parse(TestingLiveSetOptions);
|
|
13
|
-
const optionNames = [
|
|
14
|
-
'enable',
|
|
15
|
-
'healing-context',
|
|
16
|
-
'hover-text',
|
|
17
|
-
'scroll-text',
|
|
18
|
-
'system-state',
|
|
19
|
-
'table-keywords',
|
|
20
|
-
'verify-text',
|
|
21
|
-
];
|
|
22
|
-
if (!optionNames.some((name) => flags[name] !== undefined)) {
|
|
23
|
-
throw new Error('Provide at least one recorder option; unspecified options are set to false.');
|
|
24
|
-
}
|
|
25
|
-
const result = await setTestingLiveOptions({
|
|
26
|
-
jobId: args['job-id'],
|
|
27
|
-
projectId: flags.project,
|
|
28
|
-
recorder: testingLiveRecorderOptions(flags),
|
|
29
|
-
sessionId: flags['session-id'],
|
|
30
|
-
});
|
|
31
|
-
this.display(() => this.log('CRT live recorder options updated.'));
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=set-options.js.map
|
|
@@ -1,58 +0,0 @@
|
|
|
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 { startTestingLive } from '../../../lib/testing-live-operations.js';
|
|
5
|
-
import { TESTING_LIVE_LIBRARIES } from '../../../lib/testing-live-types.js';
|
|
6
|
-
export default class TestingLiveStart extends AgentiaCommand {
|
|
7
|
-
static args = {
|
|
8
|
-
'job-id': Args.integer({ description: 'CRT job ID.', required: true }),
|
|
9
|
-
};
|
|
10
|
-
static description = 'Start and bootstrap a bounded Copado Robotic Testing live session';
|
|
11
|
-
static examples = [
|
|
12
|
-
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id>',
|
|
13
|
-
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --file smoke.robot --section "Login"',
|
|
14
|
-
];
|
|
15
|
-
static flags = {
|
|
16
|
-
...testingLiveCommonFlags,
|
|
17
|
-
description: Flags.string({ description: 'Nonsecret session label.' }),
|
|
18
|
-
file: Flags.string({ description: 'Robot Framework file used to bootstrap a selected test/task.' }),
|
|
19
|
-
'jap-ime': Flags.boolean({ default: false, description: 'Enable Japanese IME in the live environment.' }),
|
|
20
|
-
library: Flags.option({
|
|
21
|
-
default: 'QWeb',
|
|
22
|
-
description: 'Robot Framework library to bootstrap.',
|
|
23
|
-
options: [...TESTING_LIVE_LIBRARIES],
|
|
24
|
-
})(),
|
|
25
|
-
'no-bootstrap': Flags.boolean({ default: false, description: 'Create the host without readiness/bootstrap calls.' }),
|
|
26
|
-
'no-browser': Flags.boolean({ default: false, description: 'Do not open Chrome during QWeb/QForce bootstrap.' }),
|
|
27
|
-
'poll-interval': Flags.integer({ default: 3, description: 'Readiness polling interval in seconds.', min: 1 }),
|
|
28
|
-
screen: Flags.string({ description: 'Session screen as WIDTHxHEIGHTxDEPTH.' }),
|
|
29
|
-
section: Flags.string({ description: 'Robot test/task name to bootstrap.' }),
|
|
30
|
-
'section-index': Flags.integer({ description: 'One-based Robot test/task index to bootstrap.', min: 1 }),
|
|
31
|
-
'session-version': Flags.string({ description: 'CRT live environment version.' }),
|
|
32
|
-
timeout: Flags.integer({ default: 120, description: 'Readiness timeout in seconds.', min: 1 }),
|
|
33
|
-
viewport: Flags.string({ description: 'Session viewport as WIDTHxHEIGHT (24-bit depth).' }),
|
|
34
|
-
};
|
|
35
|
-
async run() {
|
|
36
|
-
const { args, flags } = await this.parse(TestingLiveStart);
|
|
37
|
-
const result = await this.withSpinner('Starting CRT live session', () => startTestingLive({
|
|
38
|
-
description: flags.description,
|
|
39
|
-
file: flags.file,
|
|
40
|
-
japIme: flags['jap-ime'],
|
|
41
|
-
jobId: args['job-id'],
|
|
42
|
-
library: flags.library,
|
|
43
|
-
noBootstrap: flags['no-bootstrap'],
|
|
44
|
-
noBrowser: flags['no-browser'],
|
|
45
|
-
pollIntervalMs: flags['poll-interval'] * 1000,
|
|
46
|
-
projectId: flags.project,
|
|
47
|
-
screen: flags.screen,
|
|
48
|
-
section: flags.section,
|
|
49
|
-
sectionIndex: flags['section-index'],
|
|
50
|
-
sessionVersion: flags['session-version'],
|
|
51
|
-
timeoutMs: flags.timeout * 1000,
|
|
52
|
-
viewport: flags.viewport,
|
|
53
|
-
}));
|
|
54
|
-
this.display(() => this.log(`CRT live session ${result.sessionId} is ready for job ${result.jobId}.`));
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=start.js.map
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg } from '../../../lib/testing-live-command.js';
|
|
3
|
-
import { getTestingLiveStatus } from '../../../lib/testing-live-operations.js';
|
|
4
|
-
export default class TestingLiveStatus extends AgentiaCommand {
|
|
5
|
-
static args = testingLiveOptionalJobArg;
|
|
6
|
-
static description = 'Inspect sanitized status for the active CRT live session';
|
|
7
|
-
static examples = ['<%= config.bin %> <%= command.id %> --project <project-id> --json'];
|
|
8
|
-
static flags = testingLiveCommonFlags;
|
|
9
|
-
async run() {
|
|
10
|
-
const { args, flags } = await this.parse(TestingLiveStatus);
|
|
11
|
-
const result = await this.withSpinner('Reading CRT live status', () => getTestingLiveStatus({
|
|
12
|
-
jobId: args['job-id'],
|
|
13
|
-
projectId: flags.project,
|
|
14
|
-
sessionId: flags['session-id'],
|
|
15
|
-
}));
|
|
16
|
-
this.display(() => {
|
|
17
|
-
this.log(`Session: ${result.metadata.sessionId} (${result.metadata.status})`);
|
|
18
|
-
this.log(`Browser started: ${result.status.env.isBrowserStarted}`);
|
|
19
|
-
this.log(`Executor running: ${result.status.session.isRobotExecutorRunning}`);
|
|
20
|
-
});
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=status.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { confirmTestingAction } from '../../../lib/testing-confirmation.js';
|
|
4
|
-
import { testingLiveCommonFlags, testingLiveOptionalJobArg } from '../../../lib/testing-live-command.js';
|
|
5
|
-
import { stopTestingLive } from '../../../lib/testing-live-operations.js';
|
|
6
|
-
export default class TestingLiveStop extends AgentiaCommand {
|
|
7
|
-
static args = testingLiveOptionalJobArg;
|
|
8
|
-
static description = 'Stop the active Copado Robotic Testing live session';
|
|
9
|
-
static examples = [
|
|
10
|
-
'<%= config.bin %> <%= command.id %> --project <project-id>',
|
|
11
|
-
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --yes --json',
|
|
12
|
-
];
|
|
13
|
-
static flags = {
|
|
14
|
-
...testingLiveCommonFlags,
|
|
15
|
-
yes: Flags.boolean({ char: 'y', default: false, description: 'Confirm live session shutdown.' }),
|
|
16
|
-
};
|
|
17
|
-
async run() {
|
|
18
|
-
const { args, flags } = await this.parse(TestingLiveStop);
|
|
19
|
-
const confirmed = await confirmTestingAction({
|
|
20
|
-
action: 'CRT live session shutdown',
|
|
21
|
-
json: this.jsonEnabled(),
|
|
22
|
-
message: 'Stop the active CRT live session?',
|
|
23
|
-
yes: flags.yes,
|
|
24
|
-
});
|
|
25
|
-
if (!confirmed)
|
|
26
|
-
return { stopped: false };
|
|
27
|
-
const result = await this.withSpinner('Stopping CRT live session', () => stopTestingLive({
|
|
28
|
-
jobId: args['job-id'],
|
|
29
|
-
projectId: flags.project,
|
|
30
|
-
sessionId: flags['session-id'],
|
|
31
|
-
}));
|
|
32
|
-
this.display(() => this.log(`Stopped CRT live session ${result.sessionId}.`));
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=stop.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { openUrl } from '../../../lib/open-browser.js';
|
|
4
|
-
import { testingLiveCommonFlags } from '../../../lib/testing-live-command.js';
|
|
5
|
-
import { testingLiveViewUrl } from '../../../lib/testing-live-operations.js';
|
|
6
|
-
export default class TestingLiveView extends AgentiaCommand {
|
|
7
|
-
static description = 'Open the authenticated CRT run/session page without putting viewer secrets in the URL';
|
|
8
|
-
static examples = [
|
|
9
|
-
'<%= config.bin %> <%= command.id %> --project <project-id>',
|
|
10
|
-
'<%= config.bin %> <%= command.id %> --project <project-id> --no-open --json',
|
|
11
|
-
];
|
|
12
|
-
static flags = {
|
|
13
|
-
...testingLiveCommonFlags,
|
|
14
|
-
interactive: Flags.boolean({ default: false, description: 'Request interactive viewer controls when available.' }),
|
|
15
|
-
'no-open': Flags.boolean({ default: false, description: 'Return the nonsecret URL without opening a browser.' }),
|
|
16
|
-
};
|
|
17
|
-
async run() {
|
|
18
|
-
const { flags } = await this.parse(TestingLiveView);
|
|
19
|
-
if (this.jsonEnabled() && !flags['no-open']) {
|
|
20
|
-
throw new Error('CRT live view cannot open a browser with --json. Re-run with --no-open.');
|
|
21
|
-
}
|
|
22
|
-
const url = await testingLiveViewUrl({
|
|
23
|
-
interactive: flags.interactive,
|
|
24
|
-
projectId: flags.project,
|
|
25
|
-
sessionId: flags['session-id'],
|
|
26
|
-
});
|
|
27
|
-
if (!flags['no-open'])
|
|
28
|
-
await openUrl(url);
|
|
29
|
-
this.display(() => {
|
|
30
|
-
this.log(url);
|
|
31
|
-
this.warn('Viewer secrets are intentionally not transported in the URL; this opens only the authenticated CRT session page.');
|
|
32
|
-
});
|
|
33
|
-
return { access: 'authenticated-page-only', opened: !flags['no-open'], url };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=view.js.map
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { mkdtemp } from 'node:fs/promises';
|
|
2
|
-
import { tmpdir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { z } from 'zod';
|
|
5
|
-
import { controlTestingLive, executeTestingLive, getTestingLiveHistory, getTestingLiveReports, getTestingLiveStatus, inspectTestingLive, parseTestingLiveScreen, saveTestingLiveScreenshot, setTestingLiveOptions, startTestingLive, stopTestingLive, } from '../testing-live-operations.js';
|
|
6
|
-
import { TESTING_LIVE_LIBRARIES } from '../testing-live-types.js';
|
|
7
|
-
import { safelyHandleTool } from './result.js';
|
|
8
|
-
async function testingLiveStart(args) {
|
|
9
|
-
const hasScreenParts = args.screenDepth !== undefined || args.screenHeight !== undefined || args.screenWidth !== undefined;
|
|
10
|
-
if (hasScreenParts && (args.screen !== undefined || args.viewport !== undefined)) {
|
|
11
|
-
throw new Error('Use either screen/viewport or screenWidth/screenHeight/screenDepth, not both.');
|
|
12
|
-
}
|
|
13
|
-
let screenInput = args.screen;
|
|
14
|
-
if (hasScreenParts) {
|
|
15
|
-
if (args.screenDepth === undefined || args.screenHeight === undefined || args.screenWidth === undefined) {
|
|
16
|
-
throw new Error('Provide screenWidth, screenHeight, and screenDepth together.');
|
|
17
|
-
}
|
|
18
|
-
screenInput = { depth: args.screenDepth, height: args.screenHeight, width: args.screenWidth };
|
|
19
|
-
}
|
|
20
|
-
const screen = parseTestingLiveScreen(screenInput, args.viewport);
|
|
21
|
-
return {
|
|
22
|
-
result: await startTestingLive({
|
|
23
|
-
description: args.description,
|
|
24
|
-
japIme: args.japIme,
|
|
25
|
-
jobId: args.job,
|
|
26
|
-
library: args.library,
|
|
27
|
-
noBootstrap: args.noBootstrap,
|
|
28
|
-
noBrowser: args.noBrowser,
|
|
29
|
-
pollIntervalMs: args.pollIntervalSeconds === undefined ? undefined : args.pollIntervalSeconds * 1000,
|
|
30
|
-
projectId: args.project,
|
|
31
|
-
screen,
|
|
32
|
-
section: args.section,
|
|
33
|
-
sectionIndex: args.sectionIndex,
|
|
34
|
-
sessionVersion: args.sessionVersion,
|
|
35
|
-
timeoutMs: args.timeoutSeconds === undefined ? undefined : args.timeoutSeconds * 1000,
|
|
36
|
-
}),
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
async function testingLiveStop(args) {
|
|
40
|
-
if (args.confirm !== true)
|
|
41
|
-
throw new Error('CRT live session shutdown requires confirm: true.');
|
|
42
|
-
return { result: await stopTestingLive({ jobId: args.job, projectId: args.project, sessionId: args.sessionId }) };
|
|
43
|
-
}
|
|
44
|
-
async function testingLiveStatus(args) {
|
|
45
|
-
return { result: await getTestingLiveStatus({ jobId: args.job, projectId: args.project, sessionId: args.sessionId }) };
|
|
46
|
-
}
|
|
47
|
-
async function testingLiveExecute(args) {
|
|
48
|
-
const modes = [args.keyword !== undefined, (args.line?.length ?? 0) > 0].filter(Boolean);
|
|
49
|
-
if (modes.length !== 1)
|
|
50
|
-
throw new Error('Use exactly one of keyword or line.');
|
|
51
|
-
return {
|
|
52
|
-
result: await executeTestingLive({
|
|
53
|
-
args: args.argument,
|
|
54
|
-
jobId: args.job,
|
|
55
|
-
keyword: args.keyword,
|
|
56
|
-
lines: args.line,
|
|
57
|
-
projectId: args.project,
|
|
58
|
-
raw: args.raw,
|
|
59
|
-
section: args.section,
|
|
60
|
-
sectionIndex: args.sectionIndex,
|
|
61
|
-
sessionId: args.sessionId,
|
|
62
|
-
}),
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
async function testingLiveControl(action, args) {
|
|
66
|
-
return {
|
|
67
|
-
result: await controlTestingLive(action, { jobId: args.job, projectId: args.project, sessionId: args.sessionId }),
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
async function testingLiveInspect(args) {
|
|
71
|
-
return {
|
|
72
|
-
result: await inspectTestingLive({
|
|
73
|
-
jobId: args.job,
|
|
74
|
-
projectId: args.project,
|
|
75
|
-
sessionId: args.sessionId,
|
|
76
|
-
}),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
async function testingLiveScreenshot(args) {
|
|
80
|
-
const outputDir = await mkdtemp(join(tmpdir(), 'agentia-mcp-live-screenshot-'));
|
|
81
|
-
return {
|
|
82
|
-
result: await saveTestingLiveScreenshot({
|
|
83
|
-
jobId: args.job,
|
|
84
|
-
output: join(outputDir, 'screenshot.png'),
|
|
85
|
-
projectId: args.project,
|
|
86
|
-
sessionId: args.sessionId,
|
|
87
|
-
}),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
async function testingLiveReports(args) {
|
|
91
|
-
return {
|
|
92
|
-
result: await getTestingLiveReports({
|
|
93
|
-
jobId: args.job,
|
|
94
|
-
projectId: args.project,
|
|
95
|
-
sessionId: args.sessionId,
|
|
96
|
-
}),
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
async function testingLiveSetOptions(args) {
|
|
100
|
-
return {
|
|
101
|
-
result: await setTestingLiveOptions({
|
|
102
|
-
jobId: args.job,
|
|
103
|
-
projectId: args.project,
|
|
104
|
-
recorder: args.recorder,
|
|
105
|
-
sessionId: args.sessionId,
|
|
106
|
-
}),
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
async function testingLiveHistory(args) {
|
|
110
|
-
return {
|
|
111
|
-
result: getTestingLiveHistory({ jobId: args.job, limit: args.limit, projectId: args.project, status: args.status }),
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
export const testingLiveMcpHandlers = {
|
|
115
|
-
testingLiveContinue: (args) => testingLiveControl('continue', args),
|
|
116
|
-
testingLiveExecute,
|
|
117
|
-
testingLiveHistory,
|
|
118
|
-
testingLiveInspect,
|
|
119
|
-
testingLiveInterrupt: (args) => testingLiveControl('interrupt', args),
|
|
120
|
-
testingLiveReports,
|
|
121
|
-
testingLiveScreenshot,
|
|
122
|
-
testingLiveSetOptions,
|
|
123
|
-
testingLiveStart,
|
|
124
|
-
testingLiveStatus,
|
|
125
|
-
testingLiveStop,
|
|
126
|
-
};
|
|
127
|
-
const liveSessionSchema = {
|
|
128
|
-
job: z.number().int().positive().optional().describe('Optional CRT job ID guard.'),
|
|
129
|
-
project: z.number().int().positive().describe('CRT project ID.'),
|
|
130
|
-
sessionId: z.number().int().positive().optional().describe('Optional active live session ID guard.'),
|
|
131
|
-
};
|
|
132
|
-
const liveRecorderOptionsSchema = z.object({
|
|
133
|
-
enabled: z.boolean(),
|
|
134
|
-
enableHealingContext: z.boolean(),
|
|
135
|
-
enableHoverText: z.boolean(),
|
|
136
|
-
enableScrollText: z.boolean(),
|
|
137
|
-
enableSystemState: z.boolean(),
|
|
138
|
-
enableVerifyText: z.boolean(),
|
|
139
|
-
preferTableKeywords: z.boolean(),
|
|
140
|
-
});
|
|
141
|
-
export function registerTestingLiveMcpTools(server) {
|
|
142
|
-
server.registerTool('agentia_testing_live_start', {
|
|
143
|
-
description: 'Start and bootstrap a bounded CRT live-testing session.',
|
|
144
|
-
inputSchema: {
|
|
145
|
-
description: z.string().max(500).optional(),
|
|
146
|
-
japIme: z.boolean().optional(),
|
|
147
|
-
job: z.number().int().positive().describe('CRT job ID.'),
|
|
148
|
-
library: z.enum(TESTING_LIVE_LIBRARIES).optional(),
|
|
149
|
-
noBootstrap: z.boolean().optional(),
|
|
150
|
-
noBrowser: z.boolean().optional(),
|
|
151
|
-
pollIntervalSeconds: z.number().int().min(1).max(30).optional(),
|
|
152
|
-
project: z.number().int().positive().describe('CRT project ID.'),
|
|
153
|
-
screen: z.string().max(100).optional(),
|
|
154
|
-
screenDepth: z.number().int().min(8).max(32).optional(),
|
|
155
|
-
screenHeight: z.number().int().min(240).max(4320).optional(),
|
|
156
|
-
screenWidth: z.number().int().min(320).max(7680).optional(),
|
|
157
|
-
section: z.string().max(500).optional(),
|
|
158
|
-
sectionIndex: z.number().int().positive().optional(),
|
|
159
|
-
sessionVersion: z.string().max(100).optional(),
|
|
160
|
-
timeoutSeconds: z.number().int().min(1).max(600).optional(),
|
|
161
|
-
viewport: z.string().max(100).optional(),
|
|
162
|
-
},
|
|
163
|
-
title: 'Agentia Testing Live Start',
|
|
164
|
-
}, (args) => safelyHandleTool(() => testingLiveStart(args)));
|
|
165
|
-
server.registerTool('agentia_testing_live_stop', {
|
|
166
|
-
description: 'Stop the active CRT live-testing session. Requires explicit confirmation.',
|
|
167
|
-
inputSchema: { confirm: z.boolean().describe('Must be true to stop the session.'), ...liveSessionSchema },
|
|
168
|
-
title: 'Agentia Testing Live Stop',
|
|
169
|
-
}, (args) => safelyHandleTool(() => testingLiveStop(args)));
|
|
170
|
-
server.registerTool('agentia_testing_live_status', {
|
|
171
|
-
description: 'Read sanitized status for the active CRT live-testing session.',
|
|
172
|
-
inputSchema: liveSessionSchema,
|
|
173
|
-
title: 'Agentia Testing Live Status',
|
|
174
|
-
}, (args) => safelyHandleTool(() => testingLiveStatus(args)));
|
|
175
|
-
server.registerTool('agentia_testing_live_execute', {
|
|
176
|
-
description: 'Execute bounded Robot Framework keywords in the active CRT live-testing session.',
|
|
177
|
-
inputSchema: {
|
|
178
|
-
argument: z.array(z.string().max(16_384)).max(100).optional(),
|
|
179
|
-
keyword: z.string().max(16_384).optional(),
|
|
180
|
-
line: z.array(z.string().max(16_384)).max(500).optional(),
|
|
181
|
-
raw: z.boolean().optional(),
|
|
182
|
-
section: z.string().max(500).optional(),
|
|
183
|
-
sectionIndex: z.number().int().positive().optional(),
|
|
184
|
-
...liveSessionSchema,
|
|
185
|
-
},
|
|
186
|
-
title: 'Agentia Testing Live Execute',
|
|
187
|
-
}, (args) => safelyHandleTool(() => testingLiveExecute(args)));
|
|
188
|
-
for (const action of ['continue', 'interrupt']) {
|
|
189
|
-
server.registerTool(`agentia_testing_live_${action}`, {
|
|
190
|
-
description: `${action === 'continue' ? 'Continue' : 'Interrupt'} execution in the active CRT live-testing session.`,
|
|
191
|
-
inputSchema: liveSessionSchema,
|
|
192
|
-
title: `Agentia Testing Live ${action === 'continue' ? 'Continue' : 'Interrupt'}`,
|
|
193
|
-
}, (args) => safelyHandleTool(() => testingLiveControl(action, args)));
|
|
194
|
-
}
|
|
195
|
-
server.registerTool('agentia_testing_live_inspect', {
|
|
196
|
-
description: 'Read bounded sanitized page state without local file access.',
|
|
197
|
-
inputSchema: liveSessionSchema,
|
|
198
|
-
title: 'Agentia Testing Live Inspect',
|
|
199
|
-
}, (args) => safelyHandleTool(() => testingLiveInspect(args)));
|
|
200
|
-
server.registerTool('agentia_testing_live_screenshot', {
|
|
201
|
-
description: 'Save a bounded CRT live screenshot to an isolated temporary path.',
|
|
202
|
-
inputSchema: liveSessionSchema,
|
|
203
|
-
title: 'Agentia Testing Live Screenshot',
|
|
204
|
-
}, (args) => safelyHandleTool(() => testingLiveScreenshot(args)));
|
|
205
|
-
server.registerTool('agentia_testing_live_reports', {
|
|
206
|
-
description: 'List bounded live report metadata without local file access.',
|
|
207
|
-
inputSchema: liveSessionSchema,
|
|
208
|
-
title: 'Agentia Testing Live Reports',
|
|
209
|
-
}, (args) => safelyHandleTool(() => testingLiveReports(args)));
|
|
210
|
-
server.registerTool('agentia_testing_live_set_options', {
|
|
211
|
-
description: 'Set the complete validated CRT live recorder option block.',
|
|
212
|
-
inputSchema: { recorder: liveRecorderOptionsSchema, ...liveSessionSchema },
|
|
213
|
-
title: 'Agentia Testing Live Set Options',
|
|
214
|
-
}, (args) => safelyHandleTool(() => testingLiveSetOptions(args)));
|
|
215
|
-
server.registerTool('agentia_testing_live_history', {
|
|
216
|
-
description: 'Read bounded sanitized local CRT live execution history.',
|
|
217
|
-
inputSchema: {
|
|
218
|
-
job: z.number().int().positive().describe('CRT job ID.'),
|
|
219
|
-
limit: z.number().int().min(1).max(500).optional(),
|
|
220
|
-
project: z.number().int().positive().describe('CRT project ID.'),
|
|
221
|
-
status: z.enum(['completed', 'failed', 'recorded']).optional(),
|
|
222
|
-
},
|
|
223
|
-
title: 'Agentia Testing Live History',
|
|
224
|
-
}, (args) => safelyHandleTool(() => testingLiveHistory(args)));
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=testing-live-tools.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import {modules} from './runtime.js';
|
|
2
|
-
const parseTestingLiveScreen = modules["testing-live-command.js"]["parseTestingLiveScreen"]
|
|
3
|
-
const runTestingLiveControlCommand = modules["testing-live-command.js"]["runTestingLiveControlCommand"]
|
|
4
|
-
const testingLiveCommonFlags = modules["testing-live-command.js"]["testingLiveCommonFlags"]
|
|
5
|
-
const testingLiveOptionalJobArg = modules["testing-live-command.js"]["testingLiveOptionalJobArg"]
|
|
6
|
-
const testingLiveRecorderOptionFlags = modules["testing-live-command.js"]["testingLiveRecorderOptionFlags"]
|
|
7
|
-
const testingLiveRecorderOptions = modules["testing-live-command.js"]["testingLiveRecorderOptions"]
|
|
8
|
-
export {parseTestingLiveScreen, runTestingLiveControlCommand, testingLiveCommonFlags, testingLiveOptionalJobArg, testingLiveRecorderOptionFlags, testingLiveRecorderOptions};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {modules} from './runtime.js';
|
|
2
|
-
const TESTING_LIVE_API_ENDPOINTS = modules["testing-live-operations.js"]["TESTING_LIVE_API_ENDPOINTS"]
|
|
3
|
-
const TESTING_LIVE_MAX_REPORT_BYTES = modules["testing-live-operations.js"]["TESTING_LIVE_MAX_REPORT_BYTES"]
|
|
4
|
-
const TESTING_LIVE_MAX_SCREENSHOT_BYTES = modules["testing-live-operations.js"]["TESTING_LIVE_MAX_SCREENSHOT_BYTES"]
|
|
5
|
-
const TESTING_LIVE_SYSTEM_STATE_MAX_WAIT_MS = modules["testing-live-operations.js"]["TESTING_LIVE_SYSTEM_STATE_MAX_WAIT_MS"]
|
|
6
|
-
const clearTestingLive = modules["testing-live-operations.js"]["clearTestingLive"]
|
|
7
|
-
const collectTestingLiveDom = modules["testing-live-operations.js"]["collectTestingLiveDom"]
|
|
8
|
-
const controlTestingLive = modules["testing-live-operations.js"]["controlTestingLive"]
|
|
9
|
-
const executeTestingLive = modules["testing-live-operations.js"]["executeTestingLive"]
|
|
10
|
-
const getTestingLiveHistory = modules["testing-live-operations.js"]["getTestingLiveHistory"]
|
|
11
|
-
const getTestingLiveReports = modules["testing-live-operations.js"]["getTestingLiveReports"]
|
|
12
|
-
const getTestingLiveStatus = modules["testing-live-operations.js"]["getTestingLiveStatus"]
|
|
13
|
-
const inspectTestingLive = modules["testing-live-operations.js"]["inspectTestingLive"]
|
|
14
|
-
const loadTestingLiveConnection = modules["testing-live-operations.js"]["loadTestingLiveConnection"]
|
|
15
|
-
const parseTestingLiveScreen = modules["testing-live-operations.js"]["parseTestingLiveScreen"]
|
|
16
|
-
const recordTestingLiveSession = modules["testing-live-operations.js"]["recordTestingLiveSession"]
|
|
17
|
-
const saveTestingLiveScreenshot = modules["testing-live-operations.js"]["saveTestingLiveScreenshot"]
|
|
18
|
-
const setTestingLiveOptions = modules["testing-live-operations.js"]["setTestingLiveOptions"]
|
|
19
|
-
const setTestingLiveSystemStateDelayForTests = modules["testing-live-operations.js"]["setTestingLiveSystemStateDelayForTests"]
|
|
20
|
-
const startTestingLive = modules["testing-live-operations.js"]["startTestingLive"]
|
|
21
|
-
const stopTestingLive = modules["testing-live-operations.js"]["stopTestingLive"]
|
|
22
|
-
const testingLiveJobSessionEndpoint = modules["testing-live-operations.js"]["testingLiveJobSessionEndpoint"]
|
|
23
|
-
const testingLiveRecorderOptions = modules["testing-live-operations.js"]["testingLiveRecorderOptions"]
|
|
24
|
-
const testingLiveViewUrl = modules["testing-live-operations.js"]["testingLiveViewUrl"]
|
|
25
|
-
export {TESTING_LIVE_API_ENDPOINTS, TESTING_LIVE_MAX_REPORT_BYTES, TESTING_LIVE_MAX_SCREENSHOT_BYTES, TESTING_LIVE_SYSTEM_STATE_MAX_WAIT_MS, clearTestingLive, collectTestingLiveDom, controlTestingLive, executeTestingLive, getTestingLiveHistory, getTestingLiveReports, getTestingLiveStatus, inspectTestingLive, loadTestingLiveConnection, parseTestingLiveScreen, recordTestingLiveSession, saveTestingLiveScreenshot, setTestingLiveOptions, setTestingLiveSystemStateDelayForTests, startTestingLive, stopTestingLive, testingLiveJobSessionEndpoint, testingLiveRecorderOptions, testingLiveViewUrl};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import {modules} from './runtime.js';
|
|
2
|
-
const TESTING_LIVE_MAX_DOM_BYTES = modules["testing-live-recorder.js"]["TESTING_LIVE_MAX_DOM_BYTES"]
|
|
3
|
-
const TESTING_LIVE_MAX_WS_FRAME_BYTES = modules["testing-live-recorder.js"]["TESTING_LIVE_MAX_WS_FRAME_BYTES"]
|
|
4
|
-
const acquireTestingLiveRecorderLock = modules["testing-live-recorder.js"]["acquireTestingLiveRecorderLock"]
|
|
5
|
-
const connectTestingLiveWebSocket = modules["testing-live-recorder.js"]["connectTestingLiveWebSocket"]
|
|
6
|
-
const feedTestingLiveDomFrame = modules["testing-live-recorder.js"]["feedTestingLiveDomFrame"]
|
|
7
|
-
const parseTestingLiveRecorderFrame = modules["testing-live-recorder.js"]["parseTestingLiveRecorderFrame"]
|
|
8
|
-
const resetTestingLiveWebSocketForTests = modules["testing-live-recorder.js"]["resetTestingLiveWebSocketForTests"]
|
|
9
|
-
const robotLinesFromRecorderEvent = modules["testing-live-recorder.js"]["robotLinesFromRecorderEvent"]
|
|
10
|
-
const setTestingLiveWebSocketForTests = modules["testing-live-recorder.js"]["setTestingLiveWebSocketForTests"]
|
|
11
|
-
export {TESTING_LIVE_MAX_DOM_BYTES, TESTING_LIVE_MAX_WS_FRAME_BYTES, acquireTestingLiveRecorderLock, connectTestingLiveWebSocket, feedTestingLiveDomFrame, parseTestingLiveRecorderFrame, resetTestingLiveWebSocketForTests, robotLinesFromRecorderEvent, setTestingLiveWebSocketForTests};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import {modules} from './runtime.js';
|
|
2
|
-
const TESTING_LIVE_MAX_KEYWORD_LINES = modules["testing-live-robot.js"]["TESTING_LIVE_MAX_KEYWORD_LINES"]
|
|
3
|
-
const TESTING_LIVE_MAX_LINE_BYTES = modules["testing-live-robot.js"]["TESTING_LIVE_MAX_LINE_BYTES"]
|
|
4
|
-
const TESTING_LIVE_MAX_ROBOT_BYTES = modules["testing-live-robot.js"]["TESTING_LIVE_MAX_ROBOT_BYTES"]
|
|
5
|
-
const escapeTestingLiveXpathEquals = modules["testing-live-robot.js"]["escapeTestingLiveXpathEquals"]
|
|
6
|
-
const parseTestingRobot = modules["testing-live-robot.js"]["parseTestingRobot"]
|
|
7
|
-
const summarizeTestingLiveKeywordLines = modules["testing-live-robot.js"]["summarizeTestingLiveKeywordLines"]
|
|
8
|
-
const validateKeywordLines = modules["testing-live-robot.js"]["validateKeywordLines"]
|
|
9
|
-
export {TESTING_LIVE_MAX_KEYWORD_LINES, TESTING_LIVE_MAX_LINE_BYTES, TESTING_LIVE_MAX_ROBOT_BYTES, escapeTestingLiveXpathEquals, parseTestingRobot, summarizeTestingLiveKeywordLines, validateKeywordLines};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import {modules} from './runtime.js';
|
|
2
|
-
const TESTING_LIVE_HISTORY_MAX_LIMIT = modules["testing-live-state.js"]["TESTING_LIVE_HISTORY_MAX_LIMIT"]
|
|
3
|
-
const TESTING_LIVE_HISTORY_MAX_LINE_BYTES = modules["testing-live-state.js"]["TESTING_LIVE_HISTORY_MAX_LINE_BYTES"]
|
|
4
|
-
const TESTING_LIVE_HISTORY_MAX_READ_BYTES = modules["testing-live-state.js"]["TESTING_LIVE_HISTORY_MAX_READ_BYTES"]
|
|
5
|
-
const appendTestingLiveHistory = modules["testing-live-state.js"]["appendTestingLiveHistory"]
|
|
6
|
-
const clearTestingLiveState = modules["testing-live-state.js"]["clearTestingLiveState"]
|
|
7
|
-
const readTestingLiveHistory = modules["testing-live-state.js"]["readTestingLiveHistory"]
|
|
8
|
-
const readTestingLiveState = modules["testing-live-state.js"]["readTestingLiveState"]
|
|
9
|
-
const testingLiveSessionPath = modules["testing-live-state.js"]["testingLiveSessionPath"]
|
|
10
|
-
const validateTestingLiveSessionPath = modules["testing-live-state.js"]["validateTestingLiveSessionPath"]
|
|
11
|
-
const writeTestingLiveState = modules["testing-live-state.js"]["writeTestingLiveState"]
|
|
12
|
-
export {TESTING_LIVE_HISTORY_MAX_LIMIT, TESTING_LIVE_HISTORY_MAX_LINE_BYTES, TESTING_LIVE_HISTORY_MAX_READ_BYTES, appendTestingLiveHistory, clearTestingLiveState, readTestingLiveHistory, readTestingLiveState, testingLiveSessionPath, validateTestingLiveSessionPath, writeTestingLiveState};
|