@copado/agentia-cli 0.38.0-alpha.0 → 0.40.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 +244 -128
- package/dist/commands/auth/set.d.ts +2 -13
- package/dist/commands/auth/set.js +41 -108
- package/dist/commands/auth/set.js.map +1 -1
- package/dist/commands/auth/unset.d.ts +15 -0
- package/dist/commands/auth/unset.js +64 -0
- package/dist/commands/auth/unset.js.map +1 -0
- package/dist/commands/setup.d.ts +1 -1
- package/dist/commands/setup.js +16 -7
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/testing/job/create.d.ts +7 -0
- package/dist/commands/testing/job/create.js +11 -2
- package/dist/commands/testing/job/create.js.map +1 -1
- package/dist/commands/testing/job/update.d.ts +7 -0
- package/dist/commands/testing/job/update.js +14 -2
- package/dist/commands/testing/job/update.js.map +1 -1
- package/dist/lib/auth-config.d.ts +62 -0
- package/dist/lib/auth-config.js +246 -0
- package/dist/lib/auth-config.js.map +1 -0
- package/dist/lib/credential-store.d.ts +3 -0
- package/dist/lib/credential-store.js +9 -0
- package/dist/lib/credential-store.js.map +1 -1
- package/dist/lib/cursor-mcp-config.d.ts +62 -0
- package/dist/lib/cursor-mcp-config.js +173 -0
- package/dist/lib/cursor-mcp-config.js.map +1 -0
- package/dist/lib/mcp/testing-tools.d.ts +14 -0
- package/dist/lib/mcp/testing-tools.js +32 -4
- package/dist/lib/mcp/testing-tools.js.map +1 -1
- package/dist/lib/mcp/tools.d.ts +21 -0
- package/dist/lib/mcp/tools.js +10 -34
- package/dist/lib/mcp/tools.js.map +1 -1
- package/dist/lib/project-setup.d.ts +16 -14
- package/dist/lib/project-setup.js +101 -145
- package/dist/lib/project-setup.js.map +1 -1
- package/dist/lib/setup-prompts.d.ts +30 -0
- package/dist/lib/setup-prompts.js +13 -0
- package/dist/lib/setup-prompts.js.map +1 -0
- package/dist/lib/setup-wizard.d.ts +42 -0
- package/dist/lib/setup-wizard.js +422 -0
- package/dist/lib/setup-wizard.js.map +1 -0
- package/dist/lib/testing-config.d.ts +4 -2
- package/dist/lib/testing-config.js +23 -3
- package/dist/lib/testing-config.js.map +1 -1
- package/dist/lib/testing-flags.d.ts +9 -0
- package/dist/lib/testing-flags.js +24 -0
- package/dist/lib/testing-flags.js.map +1 -1
- package/dist/lib/testing-gateway.d.ts +13 -0
- package/dist/lib/testing-gateway.js +42 -1
- package/dist/lib/testing-gateway.js.map +1 -1
- package/dist/lib/testing-operations.d.ts +17 -1
- package/dist/lib/testing-operations.js +76 -5
- package/dist/lib/testing-operations.js.map +1 -1
- package/dist/lib/testing-types.d.ts +24 -4
- package/dist/lib/testing-types.js.map +1 -1
- package/oclif.manifest.json +557 -402
- package/package.json +2 -1
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import { AgentiaCommand } from '../../lib/agentia-command.js';
|
|
2
|
-
import { type
|
|
3
|
-
export type AuthSetResult = {
|
|
4
|
-
baseUrl?: string;
|
|
5
|
-
crt?: {
|
|
6
|
-
domain?: string;
|
|
7
|
-
orgId?: number;
|
|
8
|
-
};
|
|
9
|
-
stored: Array<{
|
|
10
|
-
label: string;
|
|
11
|
-
type: CredentialType;
|
|
12
|
-
}>;
|
|
13
|
-
};
|
|
2
|
+
import { type AuthSetResult } from '../../lib/auth-config.js';
|
|
14
3
|
export default class AuthSet extends AgentiaCommand {
|
|
15
4
|
static description: string;
|
|
16
5
|
static examples: string[];
|
|
@@ -23,5 +12,5 @@ export default class AuthSet extends AgentiaCommand {
|
|
|
23
12
|
region: import("@oclif/core/interfaces").OptionFlag<"na" | "emea" | "emea2" | "apac" | "apac2" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
13
|
};
|
|
25
14
|
run(): Promise<AuthSetResult>;
|
|
26
|
-
private
|
|
15
|
+
private withSpinnerForAuth;
|
|
27
16
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import { AgentiaCommand } from '../../lib/agentia-command.js';
|
|
3
|
-
import {
|
|
4
|
-
import { CICD_REGIONS
|
|
5
|
-
import { credentialLabel, setCicdBaseUrl, setCredential, setCrtDomain, setCrtOrgId, } from '../../lib/credential-store.js';
|
|
6
|
-
import { normalizeCrtDomain, normalizeCrtOrgId } from '../../lib/testing-config.js';
|
|
7
|
-
import { getUserContext } from '../../lib/user-context.js';
|
|
3
|
+
import { applyAuthSet, AuthSetError } from '../../lib/auth-config.js';
|
|
4
|
+
import { CICD_REGIONS } from '../../lib/cicd-region.js';
|
|
8
5
|
export default class AuthSet extends AgentiaCommand {
|
|
9
6
|
static description = 'Store authentication credentials securely in the system keychain';
|
|
10
7
|
static examples = [
|
|
@@ -12,6 +9,7 @@ export default class AuthSet extends AgentiaCommand {
|
|
|
12
9
|
'<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --custom-url https://dev.api.copado.com',
|
|
13
10
|
'<%= config.bin %> <%= command.id %> --cicd <copado-api-key>',
|
|
14
11
|
'<%= config.bin %> <%= command.id %> --crt <pat-token>',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> --crt <pat-token> --crt-org <crt-org-id>',
|
|
15
13
|
'<%= config.bin %> <%= command.id %> --crt <pat-token> --crt-domain robotic.copado.com --crt-org <crt-org-id>',
|
|
16
14
|
'<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --region na --crt <pat-token>',
|
|
17
15
|
'<%= config.bin %> <%= command.id %> --cicd <copado-api-key> --region na --json',
|
|
@@ -39,120 +37,55 @@ export default class AuthSet extends AgentiaCommand {
|
|
|
39
37
|
};
|
|
40
38
|
async run() {
|
|
41
39
|
const { flags } = await this.parse(AuthSet);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (credentials.length === 0 && flags['crt-domain'] === undefined && flags['crt-org'] === undefined) {
|
|
53
|
-
this.error('Must provide at least one of --cicd, --crt, --crt-domain, or --crt-org', {
|
|
54
|
-
exit: 2,
|
|
55
|
-
suggestions: [
|
|
56
|
-
`${this.config.bin} auth set --cicd <copado-api-key> --region na`,
|
|
57
|
-
`${this.config.bin} auth set --cicd <copado-api-key> --custom-url https://dev.api.copado.com`,
|
|
58
|
-
`${this.config.bin} auth set --crt <pat-token> --crt-domain robotic.copado.com --crt-org <crt-org-id>`,
|
|
59
|
-
],
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
if (flags.region !== undefined && !isCicdRegion(flags.region)) {
|
|
63
|
-
this.error(`Invalid region "${flags.region}"`, { exit: 2 });
|
|
64
|
-
}
|
|
65
|
-
if (flags['custom-url'] !== undefined) {
|
|
66
|
-
try {
|
|
67
|
-
normalizeCicdBaseUrl(flags['custom-url']);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
this.error(error.message, { exit: 2 });
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
for (const { type, value } of credentials) {
|
|
74
|
-
if (value.trim().length === 0) {
|
|
75
|
-
this.error(`--${type} value cannot be empty`, { exit: 2 });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
let resolvedBaseUrl;
|
|
79
|
-
let crtDomain;
|
|
80
|
-
let crtOrgId;
|
|
81
|
-
if (flags.cicd !== undefined) {
|
|
82
|
-
resolvedBaseUrl = await this.resolveCicdEndpoint(flags.cicd, flags.region, flags['custom-url']);
|
|
83
|
-
}
|
|
84
|
-
if (flags['crt-domain'] !== undefined) {
|
|
85
|
-
try {
|
|
86
|
-
crtDomain = normalizeCrtDomain(flags['crt-domain']);
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
this.error(error.message, { exit: 2 });
|
|
90
|
-
}
|
|
40
|
+
let result;
|
|
41
|
+
try {
|
|
42
|
+
result = await this.withSpinnerForAuth(flags, () => applyAuthSet({
|
|
43
|
+
cicd: flags.cicd,
|
|
44
|
+
crt: flags.crt,
|
|
45
|
+
crtDomain: flags['crt-domain'],
|
|
46
|
+
crtOrg: flags['crt-org'],
|
|
47
|
+
customUrl: flags['custom-url'],
|
|
48
|
+
region: flags.region,
|
|
49
|
+
}));
|
|
91
50
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
this.error(error.message, { exit: 2 });
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof AuthSetError) {
|
|
53
|
+
this.error(error.message, { exit: error.exitCode });
|
|
98
54
|
}
|
|
55
|
+
this.error(error.message, { exit: 1 });
|
|
99
56
|
}
|
|
100
|
-
const
|
|
101
|
-
label: credentialLabel(type),
|
|
102
|
-
type,
|
|
103
|
-
}));
|
|
104
|
-
if (resolvedBaseUrl !== undefined) {
|
|
105
|
-
setCicdBaseUrl(resolvedBaseUrl);
|
|
106
|
-
}
|
|
107
|
-
if (crtDomain !== undefined) {
|
|
108
|
-
setCrtDomain(crtDomain);
|
|
109
|
-
}
|
|
110
|
-
if (crtOrgId !== undefined) {
|
|
111
|
-
setCrtOrgId(crtOrgId.toString());
|
|
112
|
-
}
|
|
113
|
-
for (const { type, value } of credentials) {
|
|
114
|
-
setCredential(type, value);
|
|
115
|
-
}
|
|
116
|
-
if (flags.cicd !== undefined) {
|
|
117
|
-
await this.withSpinner('Fetching current user', () => getUserContext({
|
|
118
|
-
forceRefresh: true,
|
|
119
|
-
}));
|
|
120
|
-
}
|
|
121
|
-
for (const { label } of stored) {
|
|
57
|
+
for (const { label } of result.stored) {
|
|
122
58
|
this.log(`Stored ${label}.`);
|
|
123
59
|
}
|
|
124
|
-
if (
|
|
125
|
-
this.log(`Stored CICD endpoint: ${
|
|
60
|
+
if (result.baseUrl !== undefined) {
|
|
61
|
+
this.log(`Stored CICD endpoint: ${result.baseUrl}.`);
|
|
126
62
|
}
|
|
127
|
-
if (
|
|
128
|
-
this.log(`Stored CRT domain: ${
|
|
63
|
+
if (result.crt?.domain !== undefined) {
|
|
64
|
+
this.log(`Stored CRT domain: ${result.crt.domain}.`);
|
|
129
65
|
}
|
|
130
|
-
if (
|
|
131
|
-
this.log(`Stored CRT organization ID: ${
|
|
66
|
+
if (result.crt?.orgId !== undefined) {
|
|
67
|
+
this.log(`Stored CRT organization ID: ${result.crt.orgId}.`);
|
|
132
68
|
}
|
|
133
|
-
return
|
|
134
|
-
baseUrl: resolvedBaseUrl,
|
|
135
|
-
crt: crtDomain !== undefined || crtOrgId !== undefined ? { domain: crtDomain, orgId: crtOrgId } : undefined,
|
|
136
|
-
stored,
|
|
137
|
-
};
|
|
69
|
+
return result;
|
|
138
70
|
}
|
|
139
|
-
async
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return
|
|
149
|
-
customUrl,
|
|
150
|
-
region,
|
|
151
|
-
}));
|
|
71
|
+
async withSpinnerForAuth(flags, action) {
|
|
72
|
+
if (flags.cicd !== undefined) {
|
|
73
|
+
let spinnerMessage = 'Discovering CICD endpoint';
|
|
74
|
+
if (flags['custom-url'] !== undefined) {
|
|
75
|
+
spinnerMessage = 'Validating CICD API key for custom endpoint';
|
|
76
|
+
}
|
|
77
|
+
else if (flags.region !== undefined) {
|
|
78
|
+
spinnerMessage = `Validating CICD API key for region ${flags.region}`;
|
|
79
|
+
}
|
|
80
|
+
return this.withSpinner(spinnerMessage, action);
|
|
152
81
|
}
|
|
153
|
-
|
|
154
|
-
|
|
82
|
+
if (flags.crt !== undefined && flags['crt-org'] !== undefined) {
|
|
83
|
+
const spinnerMessage = flags['crt-domain'] === undefined
|
|
84
|
+
? 'Discovering CRT domain'
|
|
85
|
+
: 'Validating CRT credentials for custom domain';
|
|
86
|
+
return this.withSpinner(spinnerMessage, action);
|
|
155
87
|
}
|
|
88
|
+
return action();
|
|
156
89
|
}
|
|
157
90
|
}
|
|
158
91
|
//# sourceMappingURL=set.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/commands/auth/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/commands/auth/set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AgentiaCommand } from '../../lib/agentia-command.js';
|
|
2
|
+
import { type AuthUnsetResult } from '../../lib/auth-config.js';
|
|
3
|
+
export type AuthUnsetCommandResult = AuthUnsetResult & {
|
|
4
|
+
cancelled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export default class AuthUnset extends AgentiaCommand {
|
|
7
|
+
static description: string;
|
|
8
|
+
static examples: string[];
|
|
9
|
+
static flags: {
|
|
10
|
+
cicd: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
crt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<AuthUnsetCommandResult>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { stdin as input } from 'node:process';
|
|
3
|
+
import { AgentiaCommand } from '../../lib/agentia-command.js';
|
|
4
|
+
import { applyAuthUnset, confirmAuthUnset, hasAuthUnsetTestConfirm, resolveAuthUnsetTypes, } from '../../lib/auth-config.js';
|
|
5
|
+
import { isPromptCanceled } from '../../lib/setup-prompts.js';
|
|
6
|
+
export default class AuthUnset extends AgentiaCommand {
|
|
7
|
+
static description = 'Remove stored authentication credentials from the system keychain';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %>',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> --cicd',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --crt',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> --cicd --crt --yes',
|
|
13
|
+
'<%= config.bin %> <%= command.id %> --json --yes',
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
cicd: Flags.boolean({
|
|
17
|
+
description: 'Remove Copado API key and CICD endpoint configuration',
|
|
18
|
+
}),
|
|
19
|
+
crt: Flags.boolean({
|
|
20
|
+
description: 'Remove CRT PAT, domain, and organization configuration',
|
|
21
|
+
}),
|
|
22
|
+
yes: Flags.boolean({
|
|
23
|
+
char: 'y',
|
|
24
|
+
default: false,
|
|
25
|
+
description: 'Confirm removal without prompting (required for --json)',
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(AuthUnset);
|
|
30
|
+
const types = resolveAuthUnsetTypes(flags);
|
|
31
|
+
const requiresExplicitYes = (this.jsonEnabled() || !input.isTTY) && !hasAuthUnsetTestConfirm();
|
|
32
|
+
if (requiresExplicitYes && !flags.yes) {
|
|
33
|
+
this.error('Refusing to unset credentials without confirmation. Re-run with --yes.', { exit: 2 });
|
|
34
|
+
}
|
|
35
|
+
if (!flags.yes) {
|
|
36
|
+
try {
|
|
37
|
+
const confirmed = await confirmAuthUnset(types);
|
|
38
|
+
if (!confirmed) {
|
|
39
|
+
this.log('Auth unset cancelled. No credentials were removed.');
|
|
40
|
+
return {
|
|
41
|
+
cancelled: true,
|
|
42
|
+
removed: [],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (isPromptCanceled(error)) {
|
|
48
|
+
this.error('Auth unset cancelled.', { exit: 1 });
|
|
49
|
+
}
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const result = await applyAuthUnset(types);
|
|
54
|
+
for (const entry of result.removed) {
|
|
55
|
+
if (entry.removed) {
|
|
56
|
+
this.log(`Removed ${entry.label}.`);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
this.log(`No ${entry.label} was stored.`);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=unset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unset.js","sourceRoot":"","sources":["../../../src/commands/auth/unset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,KAAK,IAAI,KAAK,EAAC,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EACL,cAAc,EAEd,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAA;AAM3D,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,cAAc;IACnD,MAAM,CAAU,WAAW,GAAG,mEAAmE,CAAA;IACjG,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,4CAA4C;QAC5C,2CAA2C;QAC3C,wDAAwD;QACxD,kDAAkD;KACnD,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,uDAAuD;SACrE,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,WAAW,EAAE,wDAAwD;SACtE,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,yDAAyD;SACvE,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,mBAAmB,GACvB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAEpE,IAAI,mBAAmB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,wEAAwE,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;QACjG,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAA;gBAE/C,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;oBAC9D,OAAO;wBACL,SAAS,EAAE,IAAI;wBACf,OAAO,EAAE,EAAE;qBACZ,CAAA;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;gBAChD,CAAC;gBAED,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAA;QAE1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;gBACnC,SAAQ;YACV,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,cAAc,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AgentiaCommand } from '../lib/agentia-command.js';
|
|
2
|
-
import { type SetupResult } from '../lib/
|
|
2
|
+
import { type SetupResult } from '../lib/setup-wizard.js';
|
|
3
3
|
export default class Setup extends AgentiaCommand {
|
|
4
4
|
static description: string;
|
|
5
5
|
static examples: string[];
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import { AgentiaCommand } from '../lib/agentia-command.js';
|
|
3
|
-
import {
|
|
3
|
+
import { AuthSetError } from '../lib/auth-config.js';
|
|
4
|
+
import { isPromptCanceled } from '../lib/setup-prompts.js';
|
|
5
|
+
import { runSetupWizard } from '../lib/setup-wizard.js';
|
|
4
6
|
export default class Setup extends AgentiaCommand {
|
|
5
7
|
static description = [
|
|
6
|
-
'Prepare the current
|
|
7
|
-
'
|
|
8
|
-
'
|
|
8
|
+
'Prepare this machine and the current project for Agentia.',
|
|
9
|
+
'Guides CICD and CRT authentication, Cursor MCP, local quality gates, and AGENTS.md.',
|
|
10
|
+
'Git is optional: .gitignore is updated only inside a repository, and generated files are not committed.',
|
|
9
11
|
].join(' ');
|
|
10
12
|
static examples = [
|
|
11
13
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -16,11 +18,11 @@ export default class Setup extends AgentiaCommand {
|
|
|
16
18
|
static flags = {
|
|
17
19
|
'create-agents-md': Flags.boolean({
|
|
18
20
|
default: false,
|
|
19
|
-
description: 'Create or update AGENTS.md
|
|
21
|
+
description: 'Create or update AGENTS.md (skips the prompt)',
|
|
20
22
|
}),
|
|
21
23
|
'create-local-quality-gates': Flags.boolean({
|
|
22
24
|
default: false,
|
|
23
|
-
description: 'Create sample local quality gate scripts
|
|
25
|
+
description: 'Create sample local quality gate scripts (skips the prompt)',
|
|
24
26
|
}),
|
|
25
27
|
'no-prompt': Flags.boolean({
|
|
26
28
|
char: 'n',
|
|
@@ -32,7 +34,7 @@ export default class Setup extends AgentiaCommand {
|
|
|
32
34
|
const { flags } = await this.parse(Setup);
|
|
33
35
|
const noPrompt = flags['no-prompt'] || this.jsonEnabled();
|
|
34
36
|
try {
|
|
35
|
-
return await
|
|
37
|
+
return await runSetupWizard({
|
|
36
38
|
bin: this.config.bin,
|
|
37
39
|
createAgentsMd: flags['create-agents-md'],
|
|
38
40
|
createLocalQualityGates: flags['create-local-quality-gates'],
|
|
@@ -42,9 +44,16 @@ export default class Setup extends AgentiaCommand {
|
|
|
42
44
|
});
|
|
43
45
|
},
|
|
44
46
|
noPrompt,
|
|
47
|
+
withSpinner: (message, action) => this.withSpinner(message, action),
|
|
45
48
|
});
|
|
46
49
|
}
|
|
47
50
|
catch (error) {
|
|
51
|
+
if (isPromptCanceled(error)) {
|
|
52
|
+
this.error('Setup cancelled.', { exit: 1 });
|
|
53
|
+
}
|
|
54
|
+
if (error instanceof AuthSetError) {
|
|
55
|
+
this.error(error.message, { exit: error.exitCode });
|
|
56
|
+
}
|
|
48
57
|
this.error(error.message, { exit: 1 });
|
|
49
58
|
}
|
|
50
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAC,cAAc,EAAmB,MAAM,wBAAwB,CAAA;AAEvE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,cAAc;IAC/C,MAAM,CAAU,WAAW,GAAG;QAC5B,2DAA2D;QAC3D,qFAAqF;QACrF,yGAAyG;KAC1G,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,iDAAiD;QACjD,iGAAiG;QACjG,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC;YAChC,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,+CAA+C;SAC7D,CAAC;QACF,4BAA4B,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1C,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,6DAA6D;SAC3E,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,+EAA+E;SAC7F,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAA;QAEzD,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,CAAC;gBAC1B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;gBACpB,cAAc,EAAE,KAAK,CAAC,kBAAkB,CAAC;gBACzC,uBAAuB,EAAE,KAAK,CAAC,4BAA4B,CAAC;gBAC5D,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;oBACf,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;wBAChB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACnB,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,QAAQ;gBACR,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;aACpE,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;YAC3C,CAAC;YAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC,CAAA;YACnD,CAAC;YAED,IAAI,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;QACjD,CAAC;IACH,CAAC"}
|
|
@@ -7,6 +7,13 @@ export default class TestingJobCreate extends AgentiaCommand {
|
|
|
7
7
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
robot: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'git-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'git-domain-credential': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'git-password': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'git-tag': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'git-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'git-use-caller-credentials': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
17
|
dir: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
18
|
file: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
19
|
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { testingConnectionFlags, testingConnectionOptions, testingFileInputFlags, testingProjectFlag, } from '../../../lib/testing-flags.js';
|
|
3
|
+
import { testingConnectionFlags, testingConnectionOptions, testingFileInputFlags, testingGitStorageFlags, testingProjectFlag, } from '../../../lib/testing-flags.js';
|
|
4
4
|
import { createTestingJob } from '../../../lib/testing-operations.js';
|
|
5
5
|
import { formatTestingRecord } from '../../../lib/testing-types.js';
|
|
6
6
|
export default class TestingJobCreate extends AgentiaCommand {
|
|
7
|
-
static description = 'Create a Copado Robotic Testing job/test
|
|
7
|
+
static description = 'Create a Copado Robotic Testing job/test from uploaded files or Git storage';
|
|
8
8
|
static examples = [
|
|
9
9
|
'<%= config.bin %> <%= command.id %> --project <project-id> --robot <robot-id> --name "Smoke" --file tests.robot',
|
|
10
10
|
'<%= config.bin %> <%= command.id %> --project <project-id> --robot <robot-id> --name "Smoke" --dir tests --json',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --project <project-id> --robot <robot-id> --name "Smoke" --git-url https://github.com/acme/crt-tests.git --git-branch main',
|
|
11
12
|
];
|
|
12
13
|
static flags = {
|
|
13
14
|
...testingConnectionFlags,
|
|
14
15
|
...testingProjectFlag,
|
|
15
16
|
...testingFileInputFlags,
|
|
17
|
+
...testingGitStorageFlags,
|
|
16
18
|
description: Flags.string({
|
|
17
19
|
description: 'Job/test description.',
|
|
18
20
|
}),
|
|
@@ -31,6 +33,13 @@ export default class TestingJobCreate extends AgentiaCommand {
|
|
|
31
33
|
...testingConnectionOptions(flags),
|
|
32
34
|
description: flags.description,
|
|
33
35
|
fileInput: { dirs: flags.dir, files: flags.file },
|
|
36
|
+
gitBranch: flags['git-branch'],
|
|
37
|
+
gitDomainCredentialId: flags['git-domain-credential'],
|
|
38
|
+
gitPassword: flags['git-password'],
|
|
39
|
+
gitTag: flags['git-tag'],
|
|
40
|
+
gitUrl: flags['git-url'],
|
|
41
|
+
gitUseCallerCredentials: flags['git-use-caller-credentials'],
|
|
42
|
+
gitUsername: flags['git-username'],
|
|
34
43
|
name: flags.name,
|
|
35
44
|
projectId: flags.project,
|
|
36
45
|
robotId: flags.robot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAC,mBAAmB,EAA8B,MAAM,+BAA+B,CAAA;AAE9F,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D,MAAM,CAAU,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAC,mBAAmB,EAA8B,MAAM,+BAA+B,CAAA;AAE9F,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D,MAAM,CAAU,WAAW,GAAG,6EAA6E,CAAA;IAC3G,MAAM,CAAU,QAAQ,GAAG;QACzB,iHAAiH;QACjH,iHAAiH;QACjH,gKAAgK;KACjK,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,sBAAsB;QACzB,GAAG,kBAAkB;QACrB,GAAG,qBAAqB;QACxB,GAAG,sBAAsB;QACzB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,uBAAuB;SACrC,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,gBAAgB;YAC7B,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,GAAG,EAAE,CACjE,gBAAgB,CAAC;YACf,GAAG,wBAAwB,CAAC,KAAK,CAAC;YAClC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAC;YAC/C,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;YAC9B,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;YAClC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;YACxB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;YACxB,uBAAuB,EAAE,KAAK,CAAC,4BAA4B,CAAC;YAC5D,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;YAClC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,OAAO,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC,CACH,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACzC,IAAI,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -23,6 +23,13 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
23
23
|
'show-video-params': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
24
|
'suite-type': import("@oclif/core/interfaces").OptionFlag<"default" | "bitbar" | "browserstack" | "browserstackdesktop" | "lambdatest" | "lambdatestdesktop" | "mobile" | "paceconnectmobile" | "privatemobile" | "rpa" | "selenese" | "zap" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
25
|
timeout: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
+
'git-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
+
'git-domain-credential': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
+
'git-password': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
+
'git-tag': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
+
'git-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
|
+
'git-use-caller-credentials': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
33
|
project: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
34
|
domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
35
|
org: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Args, Flags } from '@oclif/core';
|
|
2
2
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
|
-
import { testingConnectionFlags, testingConnectionOptions, testingProjectFlag, } from '../../../lib/testing-flags.js';
|
|
4
|
-
import { updateTestingJob } from '../../../lib/testing-operations.js';
|
|
3
|
+
import { testingConnectionFlags, testingConnectionOptions, testingGitStorageFlags, testingProjectFlag, } from '../../../lib/testing-flags.js';
|
|
4
|
+
import { buildTestingGitStorageUpdate, updateTestingJob } from '../../../lib/testing-operations.js';
|
|
5
5
|
import { formatTestingRecord, TESTING_JOB_PARALLEL_MODES, TESTING_JOB_SUITE_TYPES, } from '../../../lib/testing-types.js';
|
|
6
6
|
export default class TestingJobUpdate extends AgentiaCommand {
|
|
7
7
|
static args = {
|
|
@@ -13,11 +13,14 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
13
13
|
static description = 'Update Copado Robotic Testing job/test metadata';
|
|
14
14
|
static examples = [
|
|
15
15
|
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --name "Smoke"',
|
|
16
|
+
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --git-url https://github.com/acme/crt-tests.git --git-branch main',
|
|
17
|
+
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --git-branch feature/login-smoke',
|
|
16
18
|
'<%= config.bin %> <%= command.id %> <job-id> --project <project-id> --timeout 10m --parallel-mode enabled --json',
|
|
17
19
|
];
|
|
18
20
|
static flags = {
|
|
19
21
|
...testingConnectionFlags,
|
|
20
22
|
...testingProjectFlag,
|
|
23
|
+
...testingGitStorageFlags,
|
|
21
24
|
'case-duration-change-detection': Flags.boolean({
|
|
22
25
|
description: 'Enable case duration change detection analytics.',
|
|
23
26
|
}),
|
|
@@ -69,6 +72,7 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
69
72
|
...testingConnectionOptions(flags),
|
|
70
73
|
analytics: caseDurationChangeDetection === undefined ? undefined : { caseDurationChangeDetection },
|
|
71
74
|
description: flags.description,
|
|
75
|
+
domainCredentialId: flags['git-domain-credential'],
|
|
72
76
|
jobId: args.id,
|
|
73
77
|
name: flags.name,
|
|
74
78
|
parallelExecution: flags['parallel-mode'],
|
|
@@ -76,6 +80,14 @@ export default class TestingJobUpdate extends AgentiaCommand {
|
|
|
76
80
|
robotId: flags.robot,
|
|
77
81
|
screen,
|
|
78
82
|
showVideoParams,
|
|
83
|
+
storage: buildTestingGitStorageUpdate({
|
|
84
|
+
gitBranch: flags['git-branch'],
|
|
85
|
+
gitPassword: flags['git-password'],
|
|
86
|
+
gitTag: flags['git-tag'],
|
|
87
|
+
gitUrl: flags['git-url'],
|
|
88
|
+
gitUseCallerCredentials: flags['git-use-caller-credentials'],
|
|
89
|
+
gitUsername: flags['git-username'],
|
|
90
|
+
}),
|
|
79
91
|
suiteType: flags['suite-type'],
|
|
80
92
|
timeout: flags.timeout,
|
|
81
93
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/testing/job/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type CredentialType } from './credential-store.js';
|
|
2
|
+
export declare const COPADO_ACCOUNT_SUMMARY_LOGIN_URL = "https://login.salesforce.com/?startURL=%2Flightning%2Fn%2Fcopado__Account_Summary";
|
|
3
|
+
export type AuthSetResult = {
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
crt?: {
|
|
6
|
+
domain?: string;
|
|
7
|
+
orgId?: number;
|
|
8
|
+
};
|
|
9
|
+
stored: Array<{
|
|
10
|
+
label: string;
|
|
11
|
+
type: CredentialType;
|
|
12
|
+
}>;
|
|
13
|
+
};
|
|
14
|
+
export type AuthUnsetCredentialResult = {
|
|
15
|
+
label: string;
|
|
16
|
+
removed: boolean;
|
|
17
|
+
type: CredentialType;
|
|
18
|
+
};
|
|
19
|
+
export type AuthUnsetResult = {
|
|
20
|
+
removed: AuthUnsetCredentialResult[];
|
|
21
|
+
};
|
|
22
|
+
export type ApplyAuthSetInput = {
|
|
23
|
+
cicd?: string;
|
|
24
|
+
crt?: string;
|
|
25
|
+
crtDomain?: string;
|
|
26
|
+
crtOrg?: number;
|
|
27
|
+
customUrl?: string;
|
|
28
|
+
region?: string;
|
|
29
|
+
};
|
|
30
|
+
export type CicdAuthStatus = {
|
|
31
|
+
baseUrl?: null | string;
|
|
32
|
+
local?: boolean;
|
|
33
|
+
masked?: string;
|
|
34
|
+
set: boolean;
|
|
35
|
+
};
|
|
36
|
+
export type CrtAuthStatus = {
|
|
37
|
+
domain?: null | string;
|
|
38
|
+
masked?: string;
|
|
39
|
+
orgId?: null | string;
|
|
40
|
+
set: boolean;
|
|
41
|
+
};
|
|
42
|
+
export declare class AuthSetError extends Error {
|
|
43
|
+
readonly exitCode: number;
|
|
44
|
+
constructor(message: string, exitCode?: number);
|
|
45
|
+
}
|
|
46
|
+
export declare function formatTerminalHyperlink(label: string, url: string): string;
|
|
47
|
+
export declare function formatCicdApiKeyHelp(): string;
|
|
48
|
+
export declare function getCicdAuthStatus(): CicdAuthStatus;
|
|
49
|
+
export declare function getCrtAuthStatus(): CrtAuthStatus;
|
|
50
|
+
export declare function isCicdConfigured(): boolean;
|
|
51
|
+
export declare function resolveAuthUnsetTypes(options: {
|
|
52
|
+
cicd?: boolean;
|
|
53
|
+
crt?: boolean;
|
|
54
|
+
}): CredentialType[];
|
|
55
|
+
export declare function formatAuthUnsetConfirmation(types: CredentialType[]): string;
|
|
56
|
+
export type AuthUnsetConfirmFn = (message: string) => Promise<boolean>;
|
|
57
|
+
export declare function setAuthUnsetConfirmForTests(fn: AuthUnsetConfirmFn | undefined): void;
|
|
58
|
+
export declare function resetAuthUnsetConfirmForTests(): void;
|
|
59
|
+
export declare function hasAuthUnsetTestConfirm(): boolean;
|
|
60
|
+
export declare function confirmAuthUnset(types: CredentialType[]): Promise<boolean>;
|
|
61
|
+
export declare function applyAuthUnset(types: CredentialType[]): Promise<AuthUnsetResult>;
|
|
62
|
+
export declare function applyAuthSet(input: ApplyAuthSetInput): Promise<AuthSetResult>;
|