@salesforce/plugin-agent 1.36.0 → 1.37.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 +129 -24
- package/lib/agentTestCache.d.ts +4 -1
- package/lib/agentTestCache.js +2 -2
- package/lib/agentTestCache.js.map +1 -1
- package/lib/commands/agent/test/list.js +6 -1
- package/lib/commands/agent/test/list.js.map +1 -1
- package/lib/commands/agent/test/results.d.ts +3 -2
- package/lib/commands/agent/test/results.js +5 -3
- package/lib/commands/agent/test/results.js.map +1 -1
- package/lib/commands/agent/test/resume.d.ts +1 -0
- package/lib/commands/agent/test/resume.js +12 -4
- package/lib/commands/agent/test/resume.js.map +1 -1
- package/lib/commands/agent/test/run-eval.d.ts +1 -5
- package/lib/commands/agent/test/run-eval.js +54 -149
- package/lib/commands/agent/test/run-eval.js.map +1 -1
- package/lib/commands/agent/test/run.d.ts +1 -0
- package/lib/commands/agent/test/run.js +21 -8
- package/lib/commands/agent/test/run.js.map +1 -1
- package/lib/flags.d.ts +6 -1
- package/lib/flags.js +21 -4
- package/lib/flags.js.map +1 -1
- package/lib/handleTestResults.d.ts +4 -2
- package/lib/handleTestResults.js +137 -5
- package/lib/handleTestResults.js.map +1 -1
- package/lib/testRunnerFactory.d.ts +7 -0
- package/lib/testRunnerFactory.js +30 -0
- package/lib/testRunnerFactory.js.map +1 -0
- package/lib/testStages.d.ts +4 -3
- package/lib/testStages.js.map +1 -1
- package/messages/agent.test.list.md +1 -1
- package/messages/agent.test.run-eval.md +0 -4
- package/messages/shared.md +8 -0
- package/oclif.manifest.json +506 -481
- package/package.json +5 -5
- package/schemas/agent-activate.json +5 -2
- package/schemas/agent-create.json +39 -8
- package/schemas/agent-deactivate.json +5 -2
- package/schemas/agent-generate-agent__spec.json +18 -4
- package/schemas/agent-generate-authoring__bundle.json +6 -2
- package/schemas/agent-generate-template.json +5 -2
- package/schemas/agent-preview-end.json +5 -2
- package/schemas/agent-preview-send.json +6 -2
- package/schemas/agent-preview-sessions.json +10 -3
- package/schemas/agent-preview-start.json +5 -2
- package/schemas/agent-preview.json +1 -1
- package/schemas/agent-test-create.json +5 -2
- package/schemas/agent-test-list.json +1 -1
- package/schemas/agent-test-results.json +111 -10
- package/schemas/agent-test-resume.json +113 -10
- package/schemas/agent-test-run.json +113 -10
- package/schemas/agent-test-run__eval.json +17 -4
- package/schemas/agent-validate-authoring__bundle.json +4 -2
- package/lib/evalFormatter.d.ts +0 -30
- package/lib/evalFormatter.js +0 -263
- package/lib/evalFormatter.js.map +0 -1
- package/lib/evalNormalizer.d.ts +0 -57
- package/lib/evalNormalizer.js +0 -431
- package/lib/evalNormalizer.js.map +0 -1
- package/lib/yamlSpecTranslator.d.ts +0 -20
- package/lib/yamlSpecTranslator.js +0 -227
- package/lib/yamlSpecTranslator.js.map +0 -1
|
@@ -16,100 +16,35 @@
|
|
|
16
16
|
import { readFile } from 'node:fs/promises';
|
|
17
17
|
import { Flags, SfCommand, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
18
18
|
import { EnvironmentVariable, Messages, SfError } from '@salesforce/core';
|
|
19
|
-
import { normalizePayload, splitIntoBatches } from '
|
|
20
|
-
import { formatResults } from '../../../evalFormatter.js';
|
|
19
|
+
import { normalizePayload, splitIntoBatches, formatResults, isYamlTestSpec, parseTestSpec, translateTestSpec, resolveAgent, executeBatches, buildResultSummary, } from '@salesforce/agents';
|
|
21
20
|
import { resultFormatFlag } from '../../../flags.js';
|
|
22
|
-
import { isYamlTestSpec, parseTestSpec, translateTestSpec } from '../../../yamlSpecTranslator.js';
|
|
23
21
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
24
22
|
const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.test.run-eval');
|
|
25
|
-
async function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
userId: userInfo.user_id,
|
|
31
|
-
instanceUrl: conn.instanceUrl,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
async function callEvalApi(org, payload, headers) {
|
|
35
|
-
const conn = org.getConnection();
|
|
36
|
-
return conn.request({
|
|
37
|
-
url: 'https://api.salesforce.com/einstein/evaluation/v1/tests',
|
|
38
|
-
method: 'POST',
|
|
39
|
-
headers: {
|
|
40
|
-
'Content-Type': 'application/json',
|
|
41
|
-
'x-sfdc-core-tenant-id': `core/prod/${headers.orgId}`,
|
|
42
|
-
'x-org-id': headers.orgId,
|
|
43
|
-
'x-sfdc-core-instance-url': headers.instanceUrl,
|
|
44
|
-
'x-sfdc-user-id': headers.userId,
|
|
45
|
-
'x-client-feature-id': 'AIPlatformEvaluation',
|
|
46
|
-
'x-sfdc-app-context': 'EinsteinGPT',
|
|
47
|
-
},
|
|
48
|
-
body: JSON.stringify(payload),
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
async function resolveAgent(org, apiName) {
|
|
52
|
-
const conn = org.getConnection();
|
|
53
|
-
// Escape single quotes to prevent SOQL injection
|
|
54
|
-
const escapedApiName = apiName.replace(/'/g, "\\'");
|
|
55
|
-
const botResult = await conn.query(`SELECT Id FROM BotDefinition WHERE DeveloperName = '${escapedApiName}'`);
|
|
56
|
-
if (!botResult.records.length) {
|
|
57
|
-
throw messages.createError('error.agentNotFound', [apiName]);
|
|
23
|
+
async function resolveAndInjectAgent(org, agentApiName, payload) {
|
|
24
|
+
let agentId;
|
|
25
|
+
let versionId;
|
|
26
|
+
try {
|
|
27
|
+
({ agentId, versionId } = await resolveAgent(org, agentApiName));
|
|
58
28
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (!versionResult.records.length) {
|
|
63
|
-
throw messages.createError('error.agentVersionNotFound', [apiName]);
|
|
29
|
+
catch (e) {
|
|
30
|
+
const wrapped = SfError.wrap(e);
|
|
31
|
+
throw new SfError(`Agent '${agentApiName}' not found.`, 'AgentNotFound', [], 2, wrapped);
|
|
64
32
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
const batchPromises = batches.map(async (batch) => {
|
|
76
|
-
const batchPayload = { tests: batch };
|
|
77
|
-
const resultObj = await callEvalApi(org, batchPayload, headers);
|
|
78
|
-
return resultObj.results ?? [];
|
|
79
|
-
});
|
|
80
|
-
const batchResults = await Promise.all(batchPromises);
|
|
81
|
-
return batchResults.flat();
|
|
82
|
-
}
|
|
83
|
-
function buildResultSummary(mergedResponse) {
|
|
84
|
-
const summary = { passed: 0, failed: 0, scored: 0, errors: 0 };
|
|
85
|
-
const testSummaries = [];
|
|
86
|
-
for (const testResult of mergedResponse.results ?? []) {
|
|
87
|
-
const tr = testResult;
|
|
88
|
-
const testId = tr.id ?? 'unknown';
|
|
89
|
-
const evalResults = tr.evaluation_results ?? [];
|
|
90
|
-
const testErrors = tr.errors ?? [];
|
|
91
|
-
const passed = evalResults.filter((e) => e.is_pass === true).length;
|
|
92
|
-
const failed = evalResults.filter((e) => e.is_pass === false).length;
|
|
93
|
-
const scored = evalResults.filter((e) => e.score != null && e.is_pass == null).length;
|
|
94
|
-
summary.passed += passed;
|
|
95
|
-
summary.failed += failed;
|
|
96
|
-
summary.scored += scored;
|
|
97
|
-
summary.errors += testErrors.length;
|
|
98
|
-
testSummaries.push({
|
|
99
|
-
id: testId,
|
|
100
|
-
status: failed > 0 || testErrors.length > 0 ? 'failed' : 'passed',
|
|
101
|
-
evaluations: evalResults,
|
|
102
|
-
outputs: tr.outputs ?? [],
|
|
103
|
-
});
|
|
33
|
+
for (const test of payload.tests) {
|
|
34
|
+
for (const step of test.steps) {
|
|
35
|
+
if (step.type === 'agent.create_session') {
|
|
36
|
+
// eslint-disable-next-line camelcase
|
|
37
|
+
step.agent_id = agentId;
|
|
38
|
+
// eslint-disable-next-line camelcase
|
|
39
|
+
step.agent_version_id = versionId;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
104
42
|
}
|
|
105
|
-
return { summary, testSummaries };
|
|
106
43
|
}
|
|
107
44
|
export default class AgentTestRunEval extends SfCommand {
|
|
108
45
|
static summary = messages.getMessage('summary');
|
|
109
46
|
static description = messages.getMessage('description');
|
|
110
47
|
static examples = messages.getMessages('examples');
|
|
111
|
-
static state = 'beta';
|
|
112
|
-
static hidden = true;
|
|
113
48
|
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
114
49
|
static errorCodes = toHelpSection('ERROR CODES', {
|
|
115
50
|
'Succeeded (0)': 'Tests completed successfully. Test results (passed/failed) are in the JSON output.',
|
|
@@ -130,11 +65,6 @@ export default class AgentTestRunEval extends SfCommand {
|
|
|
130
65
|
char: 'n',
|
|
131
66
|
summary: messages.getMessage('flags.api-name.summary'),
|
|
132
67
|
}),
|
|
133
|
-
wait: Flags.integer({
|
|
134
|
-
char: 'w',
|
|
135
|
-
default: 10,
|
|
136
|
-
summary: messages.getMessage('flags.wait.summary'),
|
|
137
|
-
}),
|
|
138
68
|
'result-format': resultFormatFlag(),
|
|
139
69
|
'batch-size': Flags.integer({
|
|
140
70
|
default: 5,
|
|
@@ -150,40 +80,39 @@ export default class AgentTestRunEval extends SfCommand {
|
|
|
150
80
|
const org = flags['target-org'];
|
|
151
81
|
// 1. Get spec content (from file or stdin via allowStdin)
|
|
152
82
|
let rawContent = flags.spec;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
// Try to detect if it's actual content vs a file path
|
|
156
|
-
// If it's a valid YAML/JSON, it's content; otherwise treat as file path
|
|
157
|
-
if (!isYamlTestSpec(rawContent)) {
|
|
158
|
-
JSON.parse(rawContent);
|
|
159
|
-
}
|
|
160
|
-
// If we got here, it's valid content
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
// Not valid content, must be a file path - read it
|
|
83
|
+
let isYaml = isYamlTestSpec(rawContent);
|
|
84
|
+
if (!isYaml) {
|
|
164
85
|
try {
|
|
165
|
-
rawContent
|
|
86
|
+
JSON.parse(rawContent);
|
|
166
87
|
}
|
|
167
|
-
catch
|
|
168
|
-
|
|
169
|
-
|
|
88
|
+
catch {
|
|
89
|
+
try {
|
|
90
|
+
rawContent = await readFile(flags.spec, 'utf-8');
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
const wrapped = SfError.wrap(e);
|
|
94
|
+
throw new SfError(`Spec file not found: ${flags.spec}`, 'SpecFileNotFound', [], 2, wrapped);
|
|
95
|
+
}
|
|
96
|
+
isYaml = isYamlTestSpec(rawContent);
|
|
170
97
|
}
|
|
171
98
|
}
|
|
172
99
|
// 2. Detect format and parse
|
|
173
100
|
let payload;
|
|
174
101
|
let agentApiName = flags['api-name'];
|
|
175
|
-
if (
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
102
|
+
if (isYaml) {
|
|
103
|
+
try {
|
|
104
|
+
const spec = parseTestSpec(rawContent);
|
|
105
|
+
payload = translateTestSpec(spec);
|
|
106
|
+
if (!agentApiName) {
|
|
107
|
+
agentApiName = spec.subjectName;
|
|
108
|
+
this.log(messages.getMessage('info.yamlDetected', [spec.subjectName, spec.testCases.length.toString()]));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
throw messages.createError('error.invalidPayload', [e.message]);
|
|
183
113
|
}
|
|
184
114
|
}
|
|
185
115
|
else {
|
|
186
|
-
// JSON EvalPayload (original behavior)
|
|
187
116
|
try {
|
|
188
117
|
payload = JSON.parse(rawContent);
|
|
189
118
|
}
|
|
@@ -194,56 +123,32 @@ export default class AgentTestRunEval extends SfCommand {
|
|
|
194
123
|
if (!payload.tests || !Array.isArray(payload.tests) || payload.tests.length === 0) {
|
|
195
124
|
throw messages.createError('error.invalidPayload', ['missing or empty "tests" array']);
|
|
196
125
|
}
|
|
126
|
+
for (const test of payload.tests) {
|
|
127
|
+
if (!Array.isArray(test.steps)) {
|
|
128
|
+
throw messages.createError('error.invalidPayload', [`test '${test.id}' has missing or invalid 'steps' array`]);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
197
131
|
// 3. If --api-name (or auto-inferred from YAML), resolve IDs and inject
|
|
198
132
|
if (agentApiName) {
|
|
199
|
-
|
|
200
|
-
let versionId;
|
|
201
|
-
try {
|
|
202
|
-
const resolved = await resolveAgent(org, agentApiName);
|
|
203
|
-
agentId = resolved.agentId;
|
|
204
|
-
versionId = resolved.versionId;
|
|
205
|
-
}
|
|
206
|
-
catch (e) {
|
|
207
|
-
const wrapped = SfError.wrap(e);
|
|
208
|
-
throw new SfError(`Agent '${agentApiName}' not found.`, 'AgentNotFound', [], 2, wrapped);
|
|
209
|
-
}
|
|
210
|
-
for (const test of payload.tests) {
|
|
211
|
-
for (const step of test.steps) {
|
|
212
|
-
if (step.type === 'agent.create_session') {
|
|
213
|
-
// eslint-disable-next-line camelcase
|
|
214
|
-
step.agent_id = agentId;
|
|
215
|
-
// eslint-disable-next-line camelcase
|
|
216
|
-
step.agent_version_id = versionId;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
133
|
+
await resolveAndInjectAgent(org, agentApiName, payload);
|
|
220
134
|
}
|
|
221
135
|
// 4. Normalize payload unless --no-normalize
|
|
222
136
|
if (!flags['no-normalize']) {
|
|
223
137
|
payload = normalizePayload(payload);
|
|
224
138
|
}
|
|
225
|
-
// 5. Clamp batch size
|
|
139
|
+
// 5. Clamp batch size and split into batches
|
|
226
140
|
const batchSize = Math.min(Math.max(flags['batch-size'], 1), 5);
|
|
227
|
-
// 6. Split into batches
|
|
228
141
|
const batches = splitIntoBatches(payload.tests, batchSize);
|
|
229
|
-
//
|
|
230
|
-
|
|
231
|
-
try {
|
|
232
|
-
allResults = await executeBatches(org, batches, (msg) => this.log(msg));
|
|
233
|
-
}
|
|
234
|
-
catch (e) {
|
|
142
|
+
// 6. Execute batches
|
|
143
|
+
const allResults = await executeBatches(org, batches, (msg) => this.log(msg)).catch((e) => {
|
|
235
144
|
const wrapped = SfError.wrap(e);
|
|
236
145
|
throw new SfError(`Failed to execute tests: ${wrapped.message}`, 'TestExecutionFailed', [wrapped.message], 4, wrapped);
|
|
237
|
-
}
|
|
146
|
+
});
|
|
238
147
|
const mergedResponse = { results: allResults };
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
this.log(formatted);
|
|
243
|
-
// 10. Build structured result for --json
|
|
148
|
+
// 7. Format output
|
|
149
|
+
this.log(formatResults(mergedResponse, (flags['result-format'] ?? 'human')));
|
|
150
|
+
// 8. Build structured result for --json
|
|
244
151
|
const { summary, testSummaries } = buildResultSummary(mergedResponse);
|
|
245
|
-
// Set exit code to 1 only for execution errors (tests couldn't run)
|
|
246
|
-
// Test failures (assertions failed) are business logic and should not affect exit code
|
|
247
152
|
if (summary.errors > 0) {
|
|
248
153
|
process.exitCode = 1;
|
|
249
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-eval.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/run-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"run-eval.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/run-eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export default class AgentTestRun extends SfCommand<AgentTestRunResult> {
|
|
|
12
12
|
wait: import("@oclif/core/interfaces").OptionFlag<import("@salesforce/kit").Duration, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'result-format': import("@oclif/core/interfaces").OptionFlag<"json" | "human" | "junit" | "tap", import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'test-runner': import("@oclif/core/interfaces").OptionFlag<"agentforce-studio" | "testing-center" | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
16
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
"api-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
18
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { SfCommand, Flags, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
17
17
|
import { EnvironmentVariable, Messages, SfError } from '@salesforce/core';
|
|
18
|
-
import { AgentTester } from '@salesforce/agents';
|
|
19
18
|
import { colorize } from '@oclif/core/ux';
|
|
20
|
-
import { makeFlags,
|
|
19
|
+
import { makeFlags, promptForTestDefinitionApiName, resultFormatFlag, testOutputDirFlag, testRunnerFlag, verboseFlag, } from '../../../flags.js';
|
|
21
20
|
import { AgentTestCache } from '../../../agentTestCache.js';
|
|
22
21
|
import { TestStages } from '../../../testStages.js';
|
|
23
22
|
import { handleTestResults } from '../../../handleTestResults.js';
|
|
23
|
+
import { createTestRunner } from '../../../testRunnerFactory.js';
|
|
24
24
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
25
25
|
const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.test.run');
|
|
26
26
|
const FLAGGABLE_PROMPTS = {
|
|
@@ -69,6 +69,7 @@ export default class AgentTestRun extends SfCommand {
|
|
|
69
69
|
}),
|
|
70
70
|
'result-format': resultFormatFlag(),
|
|
71
71
|
'output-dir': testOutputDirFlag(),
|
|
72
|
+
'test-runner': testRunnerFlag,
|
|
72
73
|
verbose: verboseFlag,
|
|
73
74
|
};
|
|
74
75
|
mso;
|
|
@@ -78,10 +79,19 @@ export default class AgentTestRun extends SfCommand {
|
|
|
78
79
|
if (this.jsonEnabled() && !flags['api-name']) {
|
|
79
80
|
throw messages.createError('error.missingRequiredFlags', ['api-name']);
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
+
let apiName;
|
|
83
|
+
let promptedTestRunner;
|
|
84
|
+
if (flags['api-name']) {
|
|
85
|
+
apiName = flags['api-name'];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const selection = await promptForTestDefinitionApiName(FLAGGABLE_PROMPTS['api-name'], connection);
|
|
89
|
+
apiName = selection.apiName;
|
|
90
|
+
promptedTestRunner = selection.testRunner;
|
|
91
|
+
}
|
|
82
92
|
this.mso = new TestStages({ title: `Agent Test Run: ${apiName}`, jsonEnabled: this.jsonEnabled() });
|
|
83
93
|
this.mso.start();
|
|
84
|
-
const agentTester =
|
|
94
|
+
const { runner: agentTester, type: runnerType } = await createTestRunner(connection, flags['test-runner'] ?? promptedTestRunner, apiName);
|
|
85
95
|
let response;
|
|
86
96
|
try {
|
|
87
97
|
response = await agentTester.start(apiName);
|
|
@@ -90,7 +100,8 @@ export default class AgentTestRun extends SfCommand {
|
|
|
90
100
|
const wrapped = SfError.wrap(e);
|
|
91
101
|
// Check for test definition not found
|
|
92
102
|
if (wrapped.message.includes('Invalid AiEvalDefinitionVersion identifier') ||
|
|
93
|
-
wrapped.message.toLowerCase().includes('not found')
|
|
103
|
+
wrapped.message.toLowerCase().includes('not found') ||
|
|
104
|
+
wrapped.message.includes('Failed to run test suite')) {
|
|
94
105
|
throw new SfError(`Test definition '${apiName}' not found.`, 'TestNotFound', [`Try running "sf agent test list -o ${flags['target-org'].getUsername() ?? ''}" to see available options`], 2, wrapped);
|
|
95
106
|
}
|
|
96
107
|
// API/network failures
|
|
@@ -98,7 +109,7 @@ export default class AgentTestRun extends SfCommand {
|
|
|
98
109
|
}
|
|
99
110
|
this.mso.update({ id: response.runId });
|
|
100
111
|
const agentTestCache = await AgentTestCache.create();
|
|
101
|
-
await agentTestCache.createCacheEntry(response.runId, apiName, flags['output-dir'], flags['result-format']);
|
|
112
|
+
await agentTestCache.createCacheEntry(response.runId, apiName, flags['output-dir'], flags['result-format'], runnerType);
|
|
102
113
|
if (flags.wait?.minutes) {
|
|
103
114
|
let completed;
|
|
104
115
|
let detailsResponse;
|
|
@@ -124,10 +135,12 @@ export default class AgentTestRun extends SfCommand {
|
|
|
124
135
|
});
|
|
125
136
|
// Set exit code to 1 only for execution errors (tests couldn't run properly)
|
|
126
137
|
// Test assertion failures are business logic and should not affect exit code
|
|
127
|
-
|
|
138
|
+
// Only applicable to legacy responses (Agentforce Studio doesn't have test case status)
|
|
139
|
+
if (detailsResponse &&
|
|
140
|
+
'subjectName' in detailsResponse &&
|
|
141
|
+
detailsResponse.testCases.some((tc) => 'status' in tc && tc.status === 'ERROR')) {
|
|
128
142
|
process.exitCode = 1;
|
|
129
143
|
}
|
|
130
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
131
144
|
return { ...detailsResponse, status: 'COMPLETED', runId: response.runId };
|
|
132
145
|
}
|
|
133
146
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/run.ts"],"names":[],"mappings":"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"}
|
package/lib/flags.d.ts
CHANGED
|
@@ -29,11 +29,16 @@ export declare const testOutputDirFlag: Interfaces.FlagDefinition<string, Interf
|
|
|
29
29
|
requiredOrDefaulted: false;
|
|
30
30
|
}>;
|
|
31
31
|
export declare const verboseFlag: Interfaces.BooleanFlag<boolean>;
|
|
32
|
+
export declare const testRunnerFlag: Interfaces.OptionFlag<"agentforce-studio" | "testing-center" | undefined, Interfaces.CustomOptions>;
|
|
32
33
|
export declare function makeFlags<T extends Record<string, FlaggablePrompt>>(flaggablePrompts: T): FlagsOfPrompts<T>;
|
|
33
34
|
export declare function getHiddenDirs(projectRoot?: string): Promise<string[]>;
|
|
34
35
|
export declare function traverseForFiles(dir: string, suffixes: string[], excludeDirs?: string[]): string[];
|
|
35
36
|
export declare function traverseForFiles(dirs: string[], suffixes: string[], excludeDirs?: string[]): string[];
|
|
36
|
-
export
|
|
37
|
+
export type TestDefinitionSelection = {
|
|
38
|
+
apiName: string;
|
|
39
|
+
testRunner?: 'agentforce-studio' | 'testing-center';
|
|
40
|
+
};
|
|
41
|
+
export declare const promptForTestDefinitionApiName: (flagDef: FlaggablePrompt, connection: Connection) => Promise<TestDefinitionSelection>;
|
|
37
42
|
export declare const promptForFileByExtensions: (flagDef: FlaggablePrompt, extensions: string[], fileNameOnly?: boolean, dirs?: string[]) => Promise<string>;
|
|
38
43
|
export declare const promptForYamlFile: (flagDef: FlaggablePrompt) => Promise<string>;
|
|
39
44
|
export declare const promptForSpecYaml: (flagDef: FlaggablePrompt) => Promise<string | undefined>;
|
package/lib/flags.js
CHANGED
|
@@ -39,6 +39,11 @@ export const verboseFlag = Flags.boolean({
|
|
|
39
39
|
summary: messages.getMessage('flags.verbose.summary'),
|
|
40
40
|
description: messages.getMessage('flags.verbose.description'),
|
|
41
41
|
});
|
|
42
|
+
export const testRunnerFlag = Flags.custom({
|
|
43
|
+
options: ['agentforce-studio', 'testing-center'],
|
|
44
|
+
summary: messages.getMessage('flags.test-runner.summary'),
|
|
45
|
+
description: messages.getMessage('flags.test-runner.description'),
|
|
46
|
+
})();
|
|
42
47
|
function validateInput(input, validate) {
|
|
43
48
|
const result = validate(input);
|
|
44
49
|
if (typeof result === 'string')
|
|
@@ -87,8 +92,17 @@ export function traverseForFiles(dirOrDirs, suffixes, excludeDirs) {
|
|
|
87
92
|
}
|
|
88
93
|
return results;
|
|
89
94
|
}
|
|
90
|
-
export const
|
|
95
|
+
export const promptForTestDefinitionApiName = async (flagDef, connection) => {
|
|
91
96
|
const aiDefFiles = await AgentTest.list(connection);
|
|
97
|
+
const duplicateNames = new Set(aiDefFiles
|
|
98
|
+
.filter((o, i) => aiDefFiles.some((other, j) => i !== j && o.fullName === other.fullName))
|
|
99
|
+
.map((o) => o.fullName));
|
|
100
|
+
// Map each entry to a value that encodes the runner type for duplicates
|
|
101
|
+
const choicesByValue = new Map(aiDefFiles.map((o) => {
|
|
102
|
+
const runner = o.type === 'AiEvaluationDefinition' ? 'testing-center' : 'agentforce-studio';
|
|
103
|
+
const valueKey = duplicateNames.has(o.fullName) ? `${o.fullName}::${runner}` : o.fullName;
|
|
104
|
+
return [valueKey, { apiName: o.fullName, testRunner: duplicateNames.has(o.fullName) ? runner : undefined }];
|
|
105
|
+
}));
|
|
92
106
|
let id;
|
|
93
107
|
const timeout = new Promise((_, reject) => {
|
|
94
108
|
id = setTimeout(() => {
|
|
@@ -100,16 +114,19 @@ export const promptForAiEvaluationDefinitionApiName = async (flagDef, connection
|
|
|
100
114
|
message: flagDef.promptMessage ?? flagDef.message,
|
|
101
115
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
102
116
|
source: async (input) => {
|
|
103
|
-
const arr =
|
|
117
|
+
const arr = [...choicesByValue.entries()].map(([valueKey, { apiName, testRunner }]) => ({
|
|
118
|
+
name: testRunner ? `${apiName} (${testRunner})` : apiName,
|
|
119
|
+
value: valueKey,
|
|
120
|
+
}));
|
|
104
121
|
if (!input)
|
|
105
122
|
return arr;
|
|
106
123
|
return arr.filter((o) => o.name.includes(input));
|
|
107
124
|
},
|
|
108
125
|
}),
|
|
109
126
|
timeout,
|
|
110
|
-
]).then((
|
|
127
|
+
]).then((valueKey) => {
|
|
111
128
|
clearTimeout(id);
|
|
112
|
-
return
|
|
129
|
+
return choicesByValue.get(valueKey) ?? { apiName: valueKey };
|
|
113
130
|
});
|
|
114
131
|
};
|
|
115
132
|
export const promptForFileByExtensions = async (flagDef, extensions, fileNameOnly = false, dirs) => {
|
package/lib/flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { AgentTestResultsResponse } from '@salesforce/agents';
|
|
1
|
+
import { AgentTestResultsResponse, AgentforceStudioTestResultsResponse } from '@salesforce/agents';
|
|
2
|
+
type TestResultsResponse = AgentTestResultsResponse | AgentforceStudioTestResultsResponse;
|
|
2
3
|
export declare function truncate(value: number, decimals?: number): string;
|
|
3
4
|
export declare function readableTime(time: number, decimalPlaces?: number): string;
|
|
4
5
|
export declare function humanFormat(results: AgentTestResultsResponse, verbose?: boolean): string;
|
|
5
6
|
export declare function handleTestResults({ id, format, results, jsonEnabled, outputDir, verbose, }: {
|
|
6
7
|
id: string;
|
|
7
8
|
format: 'human' | 'json' | 'junit' | 'tap';
|
|
8
|
-
results:
|
|
9
|
+
results: TestResultsResponse | undefined;
|
|
9
10
|
jsonEnabled: boolean;
|
|
10
11
|
outputDir?: string;
|
|
11
12
|
verbose?: boolean;
|
|
12
13
|
}): Promise<void>;
|
|
14
|
+
export {};
|