@copado/agentia-cli 0.106.0-alpha.0 → 0.108.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 +182 -182
- package/dist/commands/auth/get.d.ts +6 -0
- package/dist/commands/auth/get.js +45 -23
- package/dist/commands/auth/get.js.map +1 -1
- package/dist/lib/auth-config.d.ts +4 -0
- package/dist/lib/auth-config.js +24 -12
- package/dist/lib/auth-config.js.map +1 -1
- package/dist/lib/mcp/tools.d.ts +13 -0
- package/dist/lib/setup-wizard.js +30 -12
- package/dist/lib/setup-wizard.js.map +1 -1
- package/dist/lib/testing-config.d.ts +19 -0
- package/dist/lib/testing-config.js +81 -13
- package/dist/lib/testing-config.js.map +1 -1
- package/oclif.manifest.json +1139 -1139
- package/package.json +1 -1
- package/templates/skills/agentia-testing/references/tests.md +1 -1
|
@@ -21,6 +21,24 @@ export const CRT_DISCOVERY_DOMAINS = [
|
|
|
21
21
|
'au-robotic.copado.com',
|
|
22
22
|
];
|
|
23
23
|
const CRT_HOSTNAME_PATTERN = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))+$/u;
|
|
24
|
+
const TESTING_CONFIGURATION_FIELD_LABELS = {
|
|
25
|
+
domain: 'domain',
|
|
26
|
+
org: 'organization ID',
|
|
27
|
+
pak: 'PAK',
|
|
28
|
+
};
|
|
29
|
+
const TESTING_CONFIGURATION_REMEDIATION = 'Configure all required values with `agentia auth set --crt <pak> --crt-domain <domain> --crt-org <org-id>` or set AGENTIA_CRT_DOMAIN, AGENTIA_CRT_ORG, and AGENTIA_CRT_PAK. Verify with `agentia auth get --crt --json`.';
|
|
30
|
+
export class TestingConfigurationError extends Error {
|
|
31
|
+
invalidFields;
|
|
32
|
+
issues;
|
|
33
|
+
missingFields;
|
|
34
|
+
constructor(issues) {
|
|
35
|
+
super(formatTestingConfigurationError(issues));
|
|
36
|
+
this.invalidFields = issues.filter((issue) => issue.kind === 'invalid').map((issue) => issue.field);
|
|
37
|
+
this.issues = issues;
|
|
38
|
+
this.missingFields = issues.filter((issue) => issue.kind === 'missing').map((issue) => issue.field);
|
|
39
|
+
this.name = 'TestingConfigurationError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
24
42
|
export function isCrtAllowedDomain(value) {
|
|
25
43
|
return CRT_ALLOWED_DOMAINS.includes(value);
|
|
26
44
|
}
|
|
@@ -60,6 +78,61 @@ function envValue(...keys) {
|
|
|
60
78
|
}
|
|
61
79
|
return undefined;
|
|
62
80
|
}
|
|
81
|
+
function formatIssueList(issues) {
|
|
82
|
+
return issues
|
|
83
|
+
.map((issue) => {
|
|
84
|
+
const label = TESTING_CONFIGURATION_FIELD_LABELS[issue.field];
|
|
85
|
+
return issue.message === undefined ? label : `${label} (${issue.message})`;
|
|
86
|
+
})
|
|
87
|
+
.join(', ');
|
|
88
|
+
}
|
|
89
|
+
export function formatTestingConfigurationFieldList(fields) {
|
|
90
|
+
return fields.map((field) => TESTING_CONFIGURATION_FIELD_LABELS[field]).join(', ');
|
|
91
|
+
}
|
|
92
|
+
export function formatTestingConfigurationError(issues) {
|
|
93
|
+
const missing = issues.filter((issue) => issue.kind === 'missing');
|
|
94
|
+
const invalid = issues.filter((issue) => issue.kind === 'invalid');
|
|
95
|
+
const details = [];
|
|
96
|
+
if (missing.length > 0) {
|
|
97
|
+
details.push(`Missing required CRT configuration: ${formatIssueList(missing)}.`);
|
|
98
|
+
}
|
|
99
|
+
if (invalid.length > 0) {
|
|
100
|
+
details.push(`Invalid CRT configuration: ${formatIssueList(invalid)}.`);
|
|
101
|
+
}
|
|
102
|
+
return `CRT authentication configuration is incomplete or invalid. ${details.join(' ')} ${TESTING_CONFIGURATION_REMEDIATION}`;
|
|
103
|
+
}
|
|
104
|
+
function hasText(value) {
|
|
105
|
+
return value !== null && value !== undefined && value.toString().trim().length > 0;
|
|
106
|
+
}
|
|
107
|
+
export function collectTestingConfigurationIssues(input) {
|
|
108
|
+
const issues = [];
|
|
109
|
+
if (hasText(input.domain)) {
|
|
110
|
+
try {
|
|
111
|
+
normalizeCrtDomain(input.domain);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
issues.push({ field: 'domain', kind: 'invalid', message: error.message });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
issues.push({ field: 'domain', kind: 'missing' });
|
|
119
|
+
}
|
|
120
|
+
if (hasText(input.org)) {
|
|
121
|
+
try {
|
|
122
|
+
normalizeCrtOrgId(input.org);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
issues.push({ field: 'org', kind: 'invalid', message: error.message });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
issues.push({ field: 'org', kind: 'missing' });
|
|
130
|
+
}
|
|
131
|
+
if (!hasText(input.pak)) {
|
|
132
|
+
issues.push({ field: 'pak', kind: 'missing' });
|
|
133
|
+
}
|
|
134
|
+
return issues;
|
|
135
|
+
}
|
|
63
136
|
export function resolveTestingCredentials(overrides = {}) {
|
|
64
137
|
loadEnvFile();
|
|
65
138
|
const local = readAuthProfile('local');
|
|
@@ -67,25 +140,20 @@ export function resolveTestingCredentials(overrides = {}) {
|
|
|
67
140
|
const globalCrt = readAuthProfile('global')?.crt;
|
|
68
141
|
const localConfigured = localCrt !== undefined;
|
|
69
142
|
const metadata = localConfigured ? localCrt : globalCrt;
|
|
70
|
-
if (localConfigured && (metadata?.domain === undefined || metadata.orgId === undefined)) {
|
|
71
|
-
throw new Error('Local CRT authentication profile is incomplete. Configure --crt-domain and --crt-org for this project.');
|
|
72
|
-
}
|
|
73
143
|
const domain = overrides.domain ?? envValue('AGENTIA_CRT_DOMAIN', 'COPADO_ROBOTIC_DOMAIN', 'CRT_DOMAIN') ?? metadata?.domain ?? (localConfigured ? undefined : getCrtDomain());
|
|
74
144
|
const org = overrides.org ?? envValue('AGENTIA_CRT_ORG', 'COPADO_ROBOTIC_ORG_ID', 'CRT_ORG') ?? metadata?.orgId ?? (localConfigured ? undefined : getCrtOrgId());
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (pak === null || pak === undefined || pak.trim().length === 0) {
|
|
83
|
-
throw new Error('CRT PAK is not configured. Run `agentia auth set --crt <pak>` or set AGENTIA_CRT_PAK.');
|
|
145
|
+
const scopedPak = localConfigured && local?.keychainId !== undefined
|
|
146
|
+
? getCredentialForKey('crt', local.keychainId)
|
|
147
|
+
: undefined;
|
|
148
|
+
const pak = overrides.pak ?? overrides.pat ?? envValue('AGENTIA_CRT_PAK', 'AGENTIA_CRT_PAT', 'COPADO_ROBOTIC_API_KEY', 'CRT_AI_KEY') ?? (localConfigured ? scopedPak : getCredential('crt'));
|
|
149
|
+
const issues = collectTestingConfigurationIssues({ domain, org, pak });
|
|
150
|
+
if (issues.length > 0) {
|
|
151
|
+
throw new TestingConfigurationError(issues);
|
|
84
152
|
}
|
|
85
153
|
return {
|
|
86
154
|
domain: normalizeCrtDomain(domain),
|
|
87
155
|
orgId: normalizeCrtOrgId(org),
|
|
88
|
-
pak,
|
|
156
|
+
pak: pak,
|
|
89
157
|
pat: pak,
|
|
90
158
|
};
|
|
91
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-config.js","sourceRoot":"","sources":["../../src/lib/testing-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACnG,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,oBAAoB;CACZ,CAAA;AAIV,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;CACuB,CAAA;AAEhD,MAAM,oBAAoB,GACxB,4FAA4F,CAAA;
|
|
1
|
+
{"version":3,"file":"testing-config.js","sourceRoot":"","sources":["../../src/lib/testing-config.ts"],"names":[],"mappings":"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"}
|