@copado/agentia-cli 0.29.0-alpha.0 → 0.33.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.
Files changed (117) hide show
  1. package/README.md +1015 -54
  2. package/dist/commands/auth/get.d.ts +2 -0
  3. package/dist/commands/auth/get.js +13 -2
  4. package/dist/commands/auth/get.js.map +1 -1
  5. package/dist/commands/auth/set.d.ts +6 -0
  6. package/dist/commands/auth/set.js +44 -4
  7. package/dist/commands/auth/set.js.map +1 -1
  8. package/dist/commands/testing/build/list.d.ts +16 -0
  9. package/dist/commands/testing/build/list.js +47 -0
  10. package/dist/commands/testing/build/list.js.map +1 -0
  11. package/dist/commands/testing/build/logs.d.ts +21 -0
  12. package/dist/commands/testing/build/logs.js +42 -0
  13. package/dist/commands/testing/build/logs.js.map +1 -0
  14. package/dist/commands/testing/build/run.d.ts +19 -0
  15. package/dist/commands/testing/build/run.js +39 -0
  16. package/dist/commands/testing/build/run.js.map +1 -0
  17. package/dist/commands/testing/create.d.ts +18 -0
  18. package/dist/commands/testing/create.js +46 -0
  19. package/dist/commands/testing/create.js.map +1 -0
  20. package/dist/commands/testing/job/create.d.ts +18 -0
  21. package/dist/commands/testing/job/create.js +46 -0
  22. package/dist/commands/testing/job/create.js.map +1 -0
  23. package/dist/commands/testing/job/download.d.ts +22 -0
  24. package/dist/commands/testing/job/download.js +56 -0
  25. package/dist/commands/testing/job/download.js.map +1 -0
  26. package/dist/commands/testing/job/files.d.ts +19 -0
  27. package/dist/commands/testing/job/files.js +35 -0
  28. package/dist/commands/testing/job/files.js.map +1 -0
  29. package/dist/commands/testing/job/get.d.ts +16 -0
  30. package/dist/commands/testing/job/get.js +31 -0
  31. package/dist/commands/testing/job/get.js.map +1 -0
  32. package/dist/commands/testing/job/list.d.ts +14 -0
  33. package/dist/commands/testing/job/list.js +32 -0
  34. package/dist/commands/testing/job/list.js.map +1 -0
  35. package/dist/commands/testing/job/upload.d.ts +29 -0
  36. package/dist/commands/testing/job/upload.js +57 -0
  37. package/dist/commands/testing/job/upload.js.map +1 -0
  38. package/dist/commands/testing/logs.d.ts +21 -0
  39. package/dist/commands/testing/logs.js +42 -0
  40. package/dist/commands/testing/logs.js.map +1 -0
  41. package/dist/commands/testing/project/create.d.ts +14 -0
  42. package/dist/commands/testing/project/create.js +36 -0
  43. package/dist/commands/testing/project/create.js.map +1 -0
  44. package/dist/commands/testing/project/get.d.ts +15 -0
  45. package/dist/commands/testing/project/get.js +30 -0
  46. package/dist/commands/testing/project/get.js.map +1 -0
  47. package/dist/commands/testing/project/list.d.ts +13 -0
  48. package/dist/commands/testing/project/list.js +31 -0
  49. package/dist/commands/testing/project/list.js.map +1 -0
  50. package/dist/commands/testing/robot/create.d.ts +19 -0
  51. package/dist/commands/testing/robot/create.js +60 -0
  52. package/dist/commands/testing/robot/create.js.map +1 -0
  53. package/dist/commands/testing/robot/get.d.ts +16 -0
  54. package/dist/commands/testing/robot/get.js +31 -0
  55. package/dist/commands/testing/robot/get.js.map +1 -0
  56. package/dist/commands/testing/robot/list.d.ts +13 -0
  57. package/dist/commands/testing/robot/list.js +28 -0
  58. package/dist/commands/testing/robot/list.js.map +1 -0
  59. package/dist/commands/testing/run.d.ts +19 -0
  60. package/dist/commands/testing/run.js +32 -0
  61. package/dist/commands/testing/run.js.map +1 -0
  62. package/dist/commands/testing/status.d.ts +16 -0
  63. package/dist/commands/testing/status.js +47 -0
  64. package/dist/commands/testing/status.js.map +1 -0
  65. package/dist/commands/testing/test/create.d.ts +1 -0
  66. package/dist/commands/testing/test/create.js +2 -0
  67. package/dist/commands/testing/test/create.js.map +1 -0
  68. package/dist/commands/testing/test/logs.d.ts +1 -0
  69. package/dist/commands/testing/test/logs.js +2 -0
  70. package/dist/commands/testing/test/logs.js.map +1 -0
  71. package/dist/commands/testing/test/run.d.ts +1 -0
  72. package/dist/commands/testing/test/run.js +2 -0
  73. package/dist/commands/testing/test/run.js.map +1 -0
  74. package/dist/commands/testing/test/status.d.ts +1 -0
  75. package/dist/commands/testing/test/status.js +2 -0
  76. package/dist/commands/testing/test/status.js.map +1 -0
  77. package/dist/commands/testing/test/update.d.ts +1 -0
  78. package/dist/commands/testing/test/update.js +2 -0
  79. package/dist/commands/testing/test/update.js.map +1 -0
  80. package/dist/commands/testing/update.d.ts +29 -0
  81. package/dist/commands/testing/update.js +57 -0
  82. package/dist/commands/testing/update.js.map +1 -0
  83. package/dist/commands/testing/variable/create.d.ts +20 -0
  84. package/dist/commands/testing/variable/create.js +65 -0
  85. package/dist/commands/testing/variable/create.js.map +1 -0
  86. package/dist/commands/testing/variable/delete.d.ts +19 -0
  87. package/dist/commands/testing/variable/delete.js +30 -0
  88. package/dist/commands/testing/variable/delete.js.map +1 -0
  89. package/dist/commands/testing/variable/list.d.ts +15 -0
  90. package/dist/commands/testing/variable/list.js +40 -0
  91. package/dist/commands/testing/variable/list.js.map +1 -0
  92. package/dist/lib/credential-store.d.ts +4 -0
  93. package/dist/lib/credential-store.js +14 -0
  94. package/dist/lib/credential-store.js.map +1 -1
  95. package/dist/lib/mcp/testing-tools.d.ts +162 -0
  96. package/dist/lib/mcp/testing-tools.js +401 -0
  97. package/dist/lib/mcp/testing-tools.js.map +1 -0
  98. package/dist/lib/mcp/tools.d.ts +299 -0
  99. package/dist/lib/mcp/tools.js +3 -0
  100. package/dist/lib/mcp/tools.js.map +1 -1
  101. package/dist/lib/testing-config.d.ts +17 -0
  102. package/dist/lib/testing-config.js +68 -0
  103. package/dist/lib/testing-config.js.map +1 -0
  104. package/dist/lib/testing-flags.d.ts +33 -0
  105. package/dist/lib/testing-flags.js +70 -0
  106. package/dist/lib/testing-flags.js.map +1 -0
  107. package/dist/lib/testing-gateway.d.ts +33 -0
  108. package/dist/lib/testing-gateway.js +161 -0
  109. package/dist/lib/testing-gateway.js.map +1 -0
  110. package/dist/lib/testing-operations.d.ts +110 -0
  111. package/dist/lib/testing-operations.js +284 -0
  112. package/dist/lib/testing-operations.js.map +1 -0
  113. package/dist/lib/testing-types.d.ts +138 -0
  114. package/dist/lib/testing-types.js +190 -0
  115. package/dist/lib/testing-types.js.map +1 -0
  116. package/oclif.manifest.json +3239 -799
  117. package/package.json +4 -1
@@ -0,0 +1,284 @@
1
+ /* eslint-disable unicorn/text-encoding-identifier-case -- CRT file operation payloads require the literal utf-8 enum. */
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
3
+ import { dirname, join, relative, resolve, sep } from 'node:path';
4
+ import { resolveTestingCredentials } from './testing-config.js';
5
+ import { TestingGateway } from './testing-gateway.js';
6
+ import { createDefaultRobotSnapshotBase64, normalizeDownloadedFiles, normalizeTestingArray, normalizeTestingId, normalizeTestingRecord, redactTestingVariables, testingBuildLogsEndpoint, testingJobBuildsEndpoint, testingJobFilesDownloadEndpoint, testingJobFilesEndpoint, testingJobFilesUploadEndpoint, testingJobsEndpoint, testingProjectBuildsEndpoint, testingProjectsEndpoint, testingRobotJobsEndpoint, testingRobotsEndpoint, testingVariableEndpoint, testingVariablesEndpoint, } from './testing-types.js';
7
+ export const DEFAULT_TESTING_AUTHOR = {
8
+ email: 'agentia@copado.com',
9
+ name: 'Agentia CLI',
10
+ };
11
+ export async function listTestingProjects(options = {}) {
12
+ const credentials = resolveOptions(options);
13
+ const response = await TestingGateway.call({ endpoint: testingProjectsEndpoint(credentials.orgId), method: 'GET', service: 'platform' }, options);
14
+ const projects = normalizeTestingArray(response);
15
+ return filterByName(projects, options.name, false);
16
+ }
17
+ export async function createTestingProject(options) {
18
+ const credentials = resolveOptions(options);
19
+ const body = {
20
+ description: options.description ?? '',
21
+ name: options.name,
22
+ projectType: 'ta',
23
+ };
24
+ const response = await TestingGateway.call({ body, endpoint: testingProjectsEndpoint(credentials.orgId), method: 'POST', service: 'platform' }, options);
25
+ return normalizeTestingRecord(response);
26
+ }
27
+ export async function getTestingProject(options) {
28
+ return findTestingRecord(await listTestingProjects(options), options.projectId, 'project');
29
+ }
30
+ export async function listTestingRobots(options) {
31
+ const response = await TestingGateway.call({ endpoint: testingRobotsEndpoint(options.projectId), method: 'GET', service: 'pace' }, options);
32
+ return normalizeTestingArray(response);
33
+ }
34
+ export async function createTestingRobot(options) {
35
+ const body = {
36
+ description: options.description ?? '',
37
+ fwVersion: options.fwVersion ?? 'stable',
38
+ name: options.name,
39
+ os: options.os ?? 'linux',
40
+ robotType: options.robotType ?? 'default',
41
+ runEnvironment: options.kind === 'QConnect' ? 'paceconnect' : 'cloud',
42
+ };
43
+ const response = await TestingGateway.call({ body, endpoint: testingRobotsEndpoint(options.projectId), method: 'POST', service: 'pace' }, options);
44
+ return normalizeTestingRecord(response);
45
+ }
46
+ export async function getTestingRobot(options) {
47
+ return findTestingRecord(await listTestingRobots(options), options.robotId, 'robot');
48
+ }
49
+ export async function listTestingJobs(options) {
50
+ const response = await TestingGateway.call({ endpoint: testingJobsEndpoint(options.projectId), method: 'GET', service: 'pace' }, options);
51
+ const jobs = normalizeTestingArray(response);
52
+ return filterByName(jobs, options.name, true);
53
+ }
54
+ export async function getTestingJob(options) {
55
+ return findTestingRecord(await listTestingJobs(options), options.jobId, 'job');
56
+ }
57
+ export async function createTestingJob(options) {
58
+ const body = {
59
+ description: options.description ?? '',
60
+ name: options.name,
61
+ storage: {
62
+ contentsBase64: createDefaultRobotSnapshotBase64(),
63
+ kind: 'snapshot',
64
+ },
65
+ };
66
+ const response = await TestingGateway.call({ body, endpoint: testingRobotJobsEndpoint(options.projectId, options.robotId), method: 'POST', service: 'pace' }, options);
67
+ const job = normalizeTestingRecord(response);
68
+ const jobId = normalizeTestingId(response);
69
+ const result = {
70
+ filesUploaded: 0,
71
+ job,
72
+ jobId,
73
+ projectId: options.projectId,
74
+ };
75
+ if (jobId !== undefined && options.fileInput !== undefined) {
76
+ const operations = buildFileAddOperations(options.fileInput);
77
+ if (operations.length > 0) {
78
+ const upload = await uploadTestingJobFiles({
79
+ ...options,
80
+ jobId: numericId(jobId, 'job'),
81
+ operations: [{ op: 'remove', path: 'tests.robot' }, ...operations],
82
+ projectId: options.projectId,
83
+ });
84
+ result.filesUploaded = upload.operations.length - 1;
85
+ }
86
+ }
87
+ return result;
88
+ }
89
+ export async function listTestingJobFiles(options) {
90
+ const response = await TestingGateway.call({ endpoint: testingJobFilesEndpoint(options.projectId, options.jobId), method: 'GET', service: 'pace' }, options);
91
+ return normalizeDownloadedFiles(response);
92
+ }
93
+ export async function uploadTestingJobFiles(options) {
94
+ const body = {
95
+ author: options.author ?? DEFAULT_TESTING_AUTHOR,
96
+ operations: options.operations,
97
+ };
98
+ const response = await TestingGateway.call({
99
+ body,
100
+ endpoint: testingJobFilesUploadEndpoint(options.projectId, options.jobId, options.branch),
101
+ method: 'POST',
102
+ service: 'pace',
103
+ }, options);
104
+ return { operations: options.operations, response: normalizeTestingRecord(response) };
105
+ }
106
+ export async function downloadTestingJobFiles(options) {
107
+ const response = await TestingGateway.call({
108
+ body: { files: options.files },
109
+ endpoint: testingJobFilesDownloadEndpoint(options.projectId, options.jobId, options.branch),
110
+ method: 'POST',
111
+ service: 'pace',
112
+ }, options);
113
+ const files = normalizeDownloadedFiles(response);
114
+ if (options.outputDir !== undefined) {
115
+ writeDownloadedFiles(options.outputDir, files);
116
+ }
117
+ return {
118
+ files,
119
+ jobId: options.jobId,
120
+ outputDir: options.outputDir,
121
+ projectId: options.projectId,
122
+ response,
123
+ };
124
+ }
125
+ export async function runTestingBuild(options) {
126
+ const build = await TestingGateway.call({ body: {}, endpoint: testingJobBuildsEndpoint(options.projectId, options.jobId), method: 'POST', service: 'pace' }, options);
127
+ return { build, jobId: options.jobId, projectId: options.projectId };
128
+ }
129
+ export async function listTestingBuilds(options) {
130
+ const endpoint = options.jobId === undefined
131
+ ? testingProjectBuildsEndpoint(options.projectId, { resultSize: options.resultSize, status: options.status })
132
+ : testingJobBuildsEndpoint(options.projectId, options.jobId, { resultSize: options.resultSize, status: options.status });
133
+ const response = await TestingGateway.call({ endpoint, method: 'GET', service: 'pace' }, options);
134
+ return normalizeTestingArray(response);
135
+ }
136
+ export async function getTestingBuildLogs(options) {
137
+ const log = await TestingGateway.call({
138
+ endpoint: testingBuildLogsEndpoint(options.projectId, options.jobId, options.buildId),
139
+ method: 'GET',
140
+ responseType: 'text',
141
+ service: 'pace',
142
+ }, options);
143
+ if (options.output !== undefined) {
144
+ mkdirSync(dirname(resolve(options.output)), { recursive: true });
145
+ writeFileSync(options.output, log, 'utf8');
146
+ }
147
+ return {
148
+ buildId: options.buildId,
149
+ jobId: options.jobId,
150
+ log,
151
+ output: options.output,
152
+ projectId: options.projectId,
153
+ };
154
+ }
155
+ export async function listTestingVariables(options) {
156
+ const response = await TestingGateway.call({ endpoint: testingVariablesEndpoint(options.projectId), method: 'GET', service: 'pace' }, options);
157
+ const variables = normalizeTestingArray(response)
158
+ .filter((variable) => options.jobId === undefined || variable.jobId?.toString() === options.jobId.toString())
159
+ .filter((variable) => options.robotId === undefined || variable.robotId?.toString() === options.robotId.toString());
160
+ return redactTestingVariables(variables);
161
+ }
162
+ export async function createTestingVariable(options) {
163
+ const body = [omitUndefined({
164
+ description: options.description,
165
+ jobId: options.jobId,
166
+ key: options.key,
167
+ robotId: options.robotId,
168
+ sensitive: options.sensitive,
169
+ type: options.type,
170
+ userSpecific: options.userSpecific,
171
+ value: options.value,
172
+ })];
173
+ const response = await TestingGateway.call({ body, endpoint: testingVariablesEndpoint(options.projectId), method: 'POST', service: 'pace' }, options);
174
+ return redactTestingVariables(response);
175
+ }
176
+ export async function deleteTestingVariable(options) {
177
+ await TestingGateway.call({ endpoint: testingVariableEndpoint(options.projectId, options.variableId), method: 'DELETE', service: 'pace' }, options);
178
+ return { projectId: options.projectId, variableId: options.variableId };
179
+ }
180
+ export function buildFileAddOperations(input) {
181
+ const operations = [];
182
+ for (const file of input.files ?? []) {
183
+ operations.push(fileOperationFromLocalFile(file, basenameForPath(file), 'add'));
184
+ }
185
+ for (const dir of input.dirs ?? []) {
186
+ const root = resolve(dir);
187
+ for (const file of collectFiles(root)) {
188
+ operations.push(fileOperationFromLocalFile(file, relative(root, file).split(sep).join('/'), 'add'));
189
+ }
190
+ }
191
+ return operations;
192
+ }
193
+ export function buildFileOperationsFromSpecs(specs) {
194
+ return [
195
+ ...(specs.add ?? []).map((spec) => fileOperationFromSpec(spec, 'add')),
196
+ ...(specs.replace ?? []).map((spec) => fileOperationFromSpec(spec, 'replace')),
197
+ ...(specs.remove ?? []).map((path) => ({ op: 'remove', path: normalizeRemotePath(path) })),
198
+ ];
199
+ }
200
+ function fileOperationFromSpec(spec, op) {
201
+ const separator = spec.indexOf(':');
202
+ const localPath = separator === -1 ? spec : spec.slice(0, separator);
203
+ const remotePath = separator === -1 ? basenameForPath(localPath) : spec.slice(separator + 1);
204
+ return fileOperationFromLocalFile(localPath, remotePath, op);
205
+ }
206
+ function fileOperationFromLocalFile(localPath, remotePath, op) {
207
+ const path = normalizeRemotePath(remotePath);
208
+ return {
209
+ encoding: 'utf-8',
210
+ op,
211
+ path,
212
+ value: readFileSync(localPath, 'utf8'),
213
+ };
214
+ }
215
+ function collectFiles(root) {
216
+ if (!existsSync(root))
217
+ throw new Error(`Directory does not exist: ${root}`);
218
+ const entries = readdirSync(root).sort();
219
+ const files = [];
220
+ for (const entry of entries) {
221
+ const path = join(root, entry);
222
+ const stat = statSync(path);
223
+ if (stat.isDirectory())
224
+ files.push(...collectFiles(path));
225
+ else if (stat.isFile())
226
+ files.push(path);
227
+ }
228
+ return files;
229
+ }
230
+ function normalizeRemotePath(path) {
231
+ const normalized = path.trim().replaceAll('\\', '/').replace(/^\/+/u, '');
232
+ if (normalized.length === 0 || normalized.includes('..')) {
233
+ throw new Error(`Invalid CRT file path: ${path}`);
234
+ }
235
+ return normalized;
236
+ }
237
+ function writeDownloadedFiles(outputDir, files) {
238
+ const root = resolve(outputDir);
239
+ mkdirSync(root, { recursive: true });
240
+ for (const file of files) {
241
+ const remotePath = normalizeRemotePath(file.path ?? '');
242
+ const target = resolve(root, remotePath);
243
+ if (!target.startsWith(`${root}${sep}`) && target !== root) {
244
+ throw new Error(`Refusing to write CRT file outside output directory: ${remotePath}`);
245
+ }
246
+ mkdirSync(dirname(target), { recursive: true });
247
+ const value = file.value ?? '';
248
+ const contents = file.encoding === 'base64' ? Buffer.from(value, 'base64') : Buffer.from(value, 'utf8');
249
+ writeFileSync(target, contents);
250
+ }
251
+ }
252
+ function basenameForPath(path) {
253
+ const segments = path.replaceAll('\\', '/').split('/').filter(Boolean);
254
+ return segments.at(-1) ?? path;
255
+ }
256
+ function filterByName(records, name, insensitive) {
257
+ if (name === undefined || name.trim().length === 0)
258
+ return records;
259
+ const expected = insensitive ? name.toLowerCase() : name;
260
+ return records.filter((record) => {
261
+ const actual = record.name ?? '';
262
+ return insensitive ? actual.toLowerCase() === expected : actual === expected;
263
+ });
264
+ }
265
+ function findTestingRecord(records, id, label) {
266
+ const expected = id.toString();
267
+ const record = records.find((candidate) => candidate.id?.toString() === expected);
268
+ if (record === undefined)
269
+ throw new Error(`CRT ${label} not found: ${id}`);
270
+ return record;
271
+ }
272
+ function numericId(value, label) {
273
+ const parsed = typeof value === 'number' ? value : Number.parseInt(value, 10);
274
+ if (!Number.isSafeInteger(parsed))
275
+ throw new Error(`CRT ${label} ID must be numeric: ${value}`);
276
+ return parsed;
277
+ }
278
+ function omitUndefined(record) {
279
+ return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
280
+ }
281
+ function resolveOptions(options) {
282
+ return { orgId: resolveTestingCredentials(options).orgId };
283
+ }
284
+ //# sourceMappingURL=testing-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-operations.js","sourceRoot":"","sources":["../../src/lib/testing-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ export declare const TESTING_BUILD_STATUSES: readonly ["aborted", "executing", "failed", "finished", "queued", "succeeded"];
2
+ export declare const TESTING_VARIABLE_TYPES: readonly ["clp", "dataset", "secret"];
3
+ export declare const TESTING_FILE_OPERATIONS: readonly ["add", "replace", "remove"];
4
+ export type TestingBuildStatus = (typeof TESTING_BUILD_STATUSES)[number];
5
+ export type TestingVariableType = (typeof TESTING_VARIABLE_TYPES)[number];
6
+ export type TestingFileOperationName = (typeof TESTING_FILE_OPERATIONS)[number];
7
+ export type TestingRecord = Record<string, unknown>;
8
+ export type TestingProject = TestingRecord & {
9
+ id?: number | string;
10
+ name?: string;
11
+ permission?: {
12
+ edit?: boolean;
13
+ };
14
+ };
15
+ export type TestingRobot = TestingRecord & {
16
+ id?: number | string;
17
+ name?: string;
18
+ runEnvironment?: string;
19
+ };
20
+ export type TestingJob = TestingRecord & {
21
+ id?: number | string;
22
+ name?: string;
23
+ status?: string;
24
+ };
25
+ export type TestingBuild = TestingRecord & {
26
+ id?: number | string;
27
+ jobId?: number | string;
28
+ status?: string;
29
+ };
30
+ export type TestingVariable = TestingRecord & {
31
+ id?: number | string;
32
+ jobId?: number | string;
33
+ key?: string;
34
+ robotId?: number | string;
35
+ sensitive?: boolean;
36
+ value?: string;
37
+ };
38
+ export type TestingFileEntry = TestingRecord & {
39
+ encoding?: 'base64' | 'utf-8' | string;
40
+ path?: string;
41
+ value?: string;
42
+ };
43
+ export type TestingAuthor = {
44
+ email: string;
45
+ name: string;
46
+ };
47
+ export type TestingFileOperation = {
48
+ encoding?: 'base64' | 'utf-8';
49
+ op: TestingFileOperationName;
50
+ path: string;
51
+ value?: string;
52
+ };
53
+ export type TestingFileUploadRequest = {
54
+ author: TestingAuthor;
55
+ operations: TestingFileOperation[];
56
+ };
57
+ export type TestingCreateProjectRequest = {
58
+ description?: string;
59
+ name: string;
60
+ projectType: 'ta';
61
+ };
62
+ export type TestingCreateRobotRequest = {
63
+ description: string;
64
+ fwVersion: string;
65
+ name: string;
66
+ os: string;
67
+ robotType: string;
68
+ runEnvironment: 'cloud' | 'paceconnect';
69
+ };
70
+ export type TestingCreateJobRequest = {
71
+ description?: string;
72
+ name: string;
73
+ storage: {
74
+ contentsBase64: string;
75
+ kind: 'snapshot';
76
+ };
77
+ };
78
+ export type TestingCreateVariableRequest = {
79
+ description?: string;
80
+ jobId?: number;
81
+ key: string;
82
+ robotId?: number;
83
+ sensitive?: boolean;
84
+ type?: TestingVariableType;
85
+ userSpecific?: boolean;
86
+ value?: string;
87
+ };
88
+ export type TestingJobCreateResult = {
89
+ filesUploaded: number;
90
+ job: TestingRecord;
91
+ jobId?: number | string;
92
+ projectId: number;
93
+ };
94
+ export type TestingBuildRunResult = {
95
+ build: unknown;
96
+ jobId: number;
97
+ projectId: number;
98
+ };
99
+ export type TestingLogResult = {
100
+ buildId: number;
101
+ jobId: number;
102
+ log: string;
103
+ output?: string;
104
+ projectId: number;
105
+ };
106
+ export type TestingDownloadResult = {
107
+ files: TestingFileEntry[];
108
+ jobId: number;
109
+ outputDir?: string;
110
+ projectId: number;
111
+ response: unknown;
112
+ };
113
+ export declare function testingProjectsEndpoint(orgId: number): string;
114
+ export declare function testingRobotsEndpoint(projectId: number): string;
115
+ export declare function testingJobsEndpoint(projectId: number): string;
116
+ export declare function testingRobotJobsEndpoint(projectId: number, robotId: number | string): string;
117
+ export declare function testingJobFilesEndpoint(projectId: number, jobId: number): string;
118
+ export declare function testingJobFilesUploadEndpoint(projectId: number, jobId: number, branch?: string): string;
119
+ export declare function testingJobFilesDownloadEndpoint(projectId: number, jobId: number, branch?: string): string;
120
+ export declare function testingJobBuildsEndpoint(projectId: number, jobId: number, options?: {
121
+ resultSize?: 'compact';
122
+ status?: TestingBuildStatus;
123
+ }): string;
124
+ export declare function testingProjectBuildsEndpoint(projectId: number, options?: {
125
+ resultSize?: 'compact';
126
+ status?: TestingBuildStatus;
127
+ }): string;
128
+ export declare function testingBuildLogsEndpoint(projectId: number, jobId: number, buildId: number): string;
129
+ export declare function testingVariablesEndpoint(projectId: number): string;
130
+ export declare function testingVariableEndpoint(projectId: number, variableId: string): string;
131
+ export declare function normalizeTestingArray<T extends TestingRecord = TestingRecord>(response: unknown): T[];
132
+ export declare function normalizeTestingRecord<T extends TestingRecord = TestingRecord>(response: unknown): T;
133
+ export declare function normalizeTestingId(response: unknown): number | string | undefined;
134
+ export declare function normalizeDownloadedFiles(response: unknown): TestingFileEntry[];
135
+ export declare function redactTestingVariables<T>(value: T): T;
136
+ export declare function formatTestingTable(records: TestingRecord[]): string;
137
+ export declare function formatTestingRecord(record: TestingRecord): string;
138
+ export declare function createDefaultRobotSnapshotBase64(): string;
@@ -0,0 +1,190 @@
1
+ /* eslint-disable no-bitwise, unicorn/text-encoding-identifier-case -- CRT file APIs use the literal utf-8 enum and ZIP CRC32 uses bitwise math. */
2
+ import { cellValue, table } from './format.js';
3
+ export const TESTING_BUILD_STATUSES = ['aborted', 'executing', 'failed', 'finished', 'queued', 'succeeded'];
4
+ export const TESTING_VARIABLE_TYPES = ['clp', 'dataset', 'secret'];
5
+ export const TESTING_FILE_OPERATIONS = ['add', 'replace', 'remove'];
6
+ export function testingProjectsEndpoint(orgId) {
7
+ return `/organizations/${orgId}/projects`;
8
+ }
9
+ export function testingRobotsEndpoint(projectId) {
10
+ return `/pace/v4/projects/${projectId}/robots`;
11
+ }
12
+ export function testingJobsEndpoint(projectId) {
13
+ return `/pace/v4/projects/${projectId}/jobs`;
14
+ }
15
+ export function testingRobotJobsEndpoint(projectId, robotId) {
16
+ return `/pace/v4/projects/${projectId}/robots/${robotId}/jobs`;
17
+ }
18
+ export function testingJobFilesEndpoint(projectId, jobId) {
19
+ return `/pace/v4/projects/${projectId}/jobs/${jobId}/files`;
20
+ }
21
+ export function testingJobFilesUploadEndpoint(projectId, jobId, branch) {
22
+ const endpoint = `/pace/v4/projects/${projectId}/jobs/${jobId}/files/upload`;
23
+ return appendOptionalBranch(endpoint, branch);
24
+ }
25
+ export function testingJobFilesDownloadEndpoint(projectId, jobId, branch) {
26
+ const endpoint = `/pace/v4/projects/${projectId}/jobs/${jobId}/files/download`;
27
+ return appendOptionalBranch(endpoint, branch);
28
+ }
29
+ export function testingJobBuildsEndpoint(projectId, jobId, options = {}) {
30
+ return appendBuildQuery(`/pace/v4/projects/${projectId}/jobs/${jobId}/builds`, options);
31
+ }
32
+ export function testingProjectBuildsEndpoint(projectId, options = {}) {
33
+ return appendBuildQuery(`/pace/v4/projects/${projectId}/builds`, options);
34
+ }
35
+ export function testingBuildLogsEndpoint(projectId, jobId, buildId) {
36
+ return `/pace/v4/projects/${projectId}/jobs/${jobId}/builds/${buildId}/logs`;
37
+ }
38
+ export function testingVariablesEndpoint(projectId) {
39
+ return `/pace/v3/projects/${projectId}/secrets`;
40
+ }
41
+ export function testingVariableEndpoint(projectId, variableId) {
42
+ return `/pace/v3/projects/${projectId}/secrets/${variableId}`;
43
+ }
44
+ function appendOptionalBranch(endpoint, branch) {
45
+ if (branch === undefined || branch.trim().length === 0)
46
+ return endpoint;
47
+ const params = new URLSearchParams({ branches: branch });
48
+ return `${endpoint}?${params.toString()}`;
49
+ }
50
+ function appendBuildQuery(endpoint, options = {}) {
51
+ const params = new URLSearchParams();
52
+ if (options.resultSize !== undefined)
53
+ params.set('resultSize', options.resultSize);
54
+ if (options.status !== undefined)
55
+ params.set('status', options.status);
56
+ const query = params.toString();
57
+ return query.length > 0 ? `${endpoint}?${query}` : endpoint;
58
+ }
59
+ function isRecord(value) {
60
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
61
+ }
62
+ function nestedData(value) {
63
+ if (!isRecord(value))
64
+ return value;
65
+ if ('data' in value)
66
+ return nestedData(value.data);
67
+ if ('result' in value)
68
+ return nestedData(value.result);
69
+ return value;
70
+ }
71
+ export function normalizeTestingArray(response) {
72
+ const normalized = nestedData(response);
73
+ if (Array.isArray(normalized))
74
+ return normalized;
75
+ if (isRecord(normalized)) {
76
+ for (const key of ['items', 'records', 'results', 'files', 'builds', 'jobs', 'robots', 'projects', 'secrets']) {
77
+ const candidate = normalized[key];
78
+ if (Array.isArray(candidate))
79
+ return candidate;
80
+ }
81
+ }
82
+ return [];
83
+ }
84
+ export function normalizeTestingRecord(response) {
85
+ const normalized = nestedData(response);
86
+ return isRecord(normalized) ? normalized : {};
87
+ }
88
+ export function normalizeTestingId(response) {
89
+ const record = normalizeTestingRecord(response);
90
+ const { id } = record;
91
+ return typeof id === 'number' || typeof id === 'string' ? id : undefined;
92
+ }
93
+ export function normalizeDownloadedFiles(response) {
94
+ const records = normalizeTestingArray(response);
95
+ if (records.length > 0)
96
+ return records;
97
+ const normalized = nestedData(response);
98
+ if (!isRecord(normalized))
99
+ return [];
100
+ return Object.entries(normalized)
101
+ .filter(([, value]) => typeof value === 'string')
102
+ .map(([path, value]) => ({ encoding: 'utf-8', path, value: value }));
103
+ }
104
+ export function redactTestingVariables(value) {
105
+ if (Array.isArray(value))
106
+ return value.map((entry) => redactTestingVariables(entry));
107
+ if (!isRecord(value))
108
+ return value;
109
+ const redacted = {};
110
+ for (const [key, entry] of Object.entries(value)) {
111
+ redacted[key] = key === 'value' ? '<masked>' : redactTestingVariables(entry);
112
+ }
113
+ return redacted;
114
+ }
115
+ export function formatTestingTable(records) {
116
+ return table([
117
+ { alias: 'ID', value: 'id' },
118
+ { alias: 'NAME', value: 'name' },
119
+ { alias: 'STATUS', value: 'status' },
120
+ { alias: 'TYPE', value: 'type' },
121
+ { alias: 'UPDATED', value: 'updatedAt' },
122
+ ], records.map((record) => ({
123
+ id: cellValue(record.id),
124
+ name: cellValue(record.name ?? record.key ?? record.path),
125
+ status: cellValue(record.status ?? record.runEnvironment),
126
+ type: cellValue(record.type ?? record.projectType),
127
+ updatedAt: cellValue(record.updatedAt ?? record.modifiedAt ?? record.createdAt),
128
+ })));
129
+ }
130
+ export function formatTestingRecord(record) {
131
+ return Object.entries(record)
132
+ .filter(([, value]) => value !== undefined && value !== null)
133
+ .map(([key, value]) => `${key}: ${typeof value === 'object' ? JSON.stringify(value) : cellValue(value)}`)
134
+ .join('\n');
135
+ }
136
+ export function createDefaultRobotSnapshotBase64() {
137
+ return createZipBase64('tests.robot', '*** Test Cases ***\nAgentia Placeholder\n Log Created by Agentia CLI\n');
138
+ }
139
+ function createZipBase64(path, content) {
140
+ const fileName = Buffer.from(path, 'utf8');
141
+ const bytes = Buffer.from(content, 'utf8');
142
+ const crc = crc32(bytes);
143
+ const localHeader = Buffer.alloc(30);
144
+ const centralHeader = Buffer.alloc(46);
145
+ const endHeader = Buffer.alloc(22);
146
+ localHeader.writeUInt32LE(0x04_03_4b_50, 0);
147
+ localHeader.writeUInt16LE(20, 4);
148
+ localHeader.writeUInt16LE(0, 6);
149
+ localHeader.writeUInt16LE(0, 8);
150
+ localHeader.writeUInt16LE(0, 10);
151
+ localHeader.writeUInt16LE(0, 12);
152
+ localHeader.writeUInt32LE(crc, 14);
153
+ localHeader.writeUInt32LE(bytes.length, 18);
154
+ localHeader.writeUInt32LE(bytes.length, 22);
155
+ localHeader.writeUInt16LE(fileName.length, 26);
156
+ const local = Buffer.concat([localHeader, fileName, bytes]);
157
+ centralHeader.writeUInt32LE(0x02_01_4b_50, 0);
158
+ centralHeader.writeUInt16LE(20, 4);
159
+ centralHeader.writeUInt16LE(20, 6);
160
+ centralHeader.writeUInt16LE(0, 8);
161
+ centralHeader.writeUInt16LE(0, 10);
162
+ centralHeader.writeUInt16LE(0, 12);
163
+ centralHeader.writeUInt16LE(0, 14);
164
+ centralHeader.writeUInt32LE(crc, 16);
165
+ centralHeader.writeUInt32LE(bytes.length, 20);
166
+ centralHeader.writeUInt32LE(bytes.length, 24);
167
+ centralHeader.writeUInt16LE(fileName.length, 28);
168
+ centralHeader.writeUInt32LE(0, 42);
169
+ const central = Buffer.concat([centralHeader, fileName]);
170
+ endHeader.writeUInt32LE(0x06_05_4b_50, 0);
171
+ endHeader.writeUInt16LE(0, 4);
172
+ endHeader.writeUInt16LE(0, 6);
173
+ endHeader.writeUInt16LE(1, 8);
174
+ endHeader.writeUInt16LE(1, 10);
175
+ endHeader.writeUInt32LE(central.length, 12);
176
+ endHeader.writeUInt32LE(local.length, 16);
177
+ endHeader.writeUInt16LE(0, 20);
178
+ return Buffer.concat([local, central, endHeader]).toString('base64');
179
+ }
180
+ function crc32(buffer) {
181
+ let crc = 0xff_ff_ff_ff;
182
+ for (const byte of buffer) {
183
+ crc ^= byte;
184
+ for (let index = 0; index < 8; index++) {
185
+ crc = (crc >>> 1) ^ (crc & 1 ? 0xed_b8_83_20 : 0);
186
+ }
187
+ }
188
+ return (crc ^ 0xff_ff_ff_ff) >>> 0;
189
+ }
190
+ //# sourceMappingURL=testing-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-types.js","sourceRoot":"","sources":["../../src/lib/testing-types.ts"],"names":[],"mappings":"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"}