@salesforce/plugin-agent 1.32.13 → 1.32.15
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 +30 -30
- package/lib/commands/agent/activate.d.ts +2 -0
- package/lib/commands/agent/activate.js +33 -4
- package/lib/commands/agent/activate.js.map +1 -1
- package/lib/commands/agent/deactivate.d.ts +2 -0
- package/lib/commands/agent/deactivate.js +33 -4
- package/lib/commands/agent/deactivate.js.map +1 -1
- package/lib/commands/agent/preview/end.d.ts +2 -0
- package/lib/commands/agent/preview/end.js +49 -12
- package/lib/commands/agent/preview/end.js.map +1 -1
- package/lib/commands/agent/preview/send.d.ts +2 -0
- package/lib/commands/agent/preview/send.js +47 -9
- package/lib/commands/agent/preview/send.js.map +1 -1
- package/lib/commands/agent/preview/sessions.d.ts +1 -0
- package/lib/commands/agent/preview/sessions.js +4 -1
- package/lib/commands/agent/preview/sessions.js.map +1 -1
- package/lib/commands/agent/preview/start.d.ts +2 -0
- package/lib/commands/agent/preview/start.js +55 -6
- package/lib/commands/agent/preview/start.js.map +1 -1
- package/lib/commands/agent/test/create.d.ts +2 -0
- package/lib/commands/agent/test/create.js +34 -6
- package/lib/commands/agent/test/create.js.map +1 -1
- package/lib/commands/agent/test/list.d.ts +2 -0
- package/lib/commands/agent/test/list.js +15 -3
- package/lib/commands/agent/test/list.js.map +1 -1
- package/lib/commands/agent/test/results.d.ts +2 -0
- package/lib/commands/agent/test/results.js +23 -3
- package/lib/commands/agent/test/results.js.map +1 -1
- package/lib/commands/agent/test/resume.d.ts +6 -0
- package/lib/commands/agent/test/resume.js +55 -7
- package/lib/commands/agent/test/resume.js.map +1 -1
- package/lib/commands/agent/test/run-eval.d.ts +2 -0
- package/lib/commands/agent/test/run-eval.js +38 -7
- package/lib/commands/agent/test/run-eval.js.map +1 -1
- package/lib/commands/agent/test/run.d.ts +2 -0
- package/lib/commands/agent/test/run.js +32 -8
- package/lib/commands/agent/test/run.js.map +1 -1
- package/lib/commands/agent/validate/authoring-bundle.d.ts +2 -0
- package/lib/commands/agent/validate/authoring-bundle.js +9 -2
- package/lib/commands/agent/validate/authoring-bundle.js.map +1 -1
- package/lib/previewSessionStore.js +0 -6
- package/lib/previewSessionStore.js.map +1 -1
- package/messages/agent.activate.md +8 -0
- package/messages/agent.deactivate.md +8 -0
- package/messages/agent.preview.end.md +18 -6
- package/messages/agent.preview.send.md +16 -4
- package/messages/agent.preview.start.md +19 -7
- package/oclif.manifest.json +447 -94
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,6 @@ export default class AgentPreviewSessions extends SfCommand<AgentPreviewSessions
|
|
|
9
9
|
static readonly description: string;
|
|
10
10
|
static readonly examples: string[];
|
|
11
11
|
static readonly requiresProject = true;
|
|
12
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
12
13
|
run(): Promise<AgentPreviewSessionsResult>;
|
|
13
14
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
16
|
+
import { SfCommand, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
17
17
|
import { Messages } from '@salesforce/core';
|
|
18
18
|
import { listCachedSessions } from '../../../previewSessionStore.js';
|
|
19
19
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
@@ -23,6 +23,9 @@ export default class AgentPreviewSessions extends SfCommand {
|
|
|
23
23
|
static description = messages.getMessage('description');
|
|
24
24
|
static examples = messages.getMessages('examples');
|
|
25
25
|
static requiresProject = true;
|
|
26
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
27
|
+
'Succeeded (0)': 'Sessions listed successfully (or empty list if no active sessions).',
|
|
28
|
+
});
|
|
26
29
|
async run() {
|
|
27
30
|
const entries = await listCachedSessions(this.project);
|
|
28
31
|
const rows = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,wBAAwB,CAAC,CAAC;AAI7F,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,SAAqC;IAC9E,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,eAAe,GAAG,IAAI,CAAC;IAEvC,MAAM,CAAU,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE;QAC/D,eAAe,EAAE,qEAAqE;KACvF,CAAC,CAAC;IAEI,KAAK,CAAC,GAAG;QACd,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,GAA+B,EAAE,CAAC;QAC5C,KAAK,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC;YAC3D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO;YACjC,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,KAAK,CAAC;YACT,IAAI,EAAE,SAAS;YACf,OAAO,EAAE;gBACP,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE;gBACzC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;aAC5C;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
@@ -7,6 +7,8 @@ export default class AgentPreviewStart extends SfCommand<AgentPreviewStartResult
|
|
|
7
7
|
static readonly description: string;
|
|
8
8
|
static readonly examples: string[];
|
|
9
9
|
static readonly requiresProject = true;
|
|
10
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
11
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
10
12
|
static readonly flags: {
|
|
11
13
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
14
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
|
|
17
|
-
import { Lifecycle, Messages } from '@salesforce/core';
|
|
16
|
+
import { Flags, SfCommand, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
17
|
+
import { Lifecycle, Messages, SfError, EnvironmentVariable } from '@salesforce/core';
|
|
18
18
|
import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents';
|
|
19
19
|
import { createCache } from '../../../previewSessionStore.js';
|
|
20
|
+
import { COMPILATION_API_EXIT_CODES } from '../../../common.js';
|
|
20
21
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
21
22
|
const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.start');
|
|
22
23
|
export default class AgentPreviewStart extends SfCommand {
|
|
@@ -24,6 +25,14 @@ export default class AgentPreviewStart extends SfCommand {
|
|
|
24
25
|
static description = messages.getMessage('description');
|
|
25
26
|
static examples = messages.getMessages('examples');
|
|
26
27
|
static requiresProject = true;
|
|
28
|
+
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
29
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
30
|
+
'Succeeded (0)': 'Preview session started successfully.',
|
|
31
|
+
'Failed (1)': 'Agent Script compilation failed (syntax errors in the script).',
|
|
32
|
+
'NotFound (2)': 'Agent not found, or compilation API returned HTTP 404 (endpoint may not be available in your org or region).',
|
|
33
|
+
'ServerError (3)': 'Compilation API returned HTTP 500 (server error during compilation).',
|
|
34
|
+
'PreviewStartFailed (4)': 'Preview session failed to start due to API or network errors.',
|
|
35
|
+
});
|
|
27
36
|
static flags = {
|
|
28
37
|
'target-org': Flags.requiredOrg(),
|
|
29
38
|
'api-version': Flags.orgApiVersion(),
|
|
@@ -45,18 +54,58 @@ export default class AgentPreviewStart extends SfCommand {
|
|
|
45
54
|
const { flags } = await this.parse(AgentPreviewStart);
|
|
46
55
|
const conn = flags['target-org'].getConnection(flags['api-version']);
|
|
47
56
|
const useLiveActions = flags['use-live-actions'];
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
const agentIdentifier = flags['authoring-bundle'] ?? flags['api-name'];
|
|
58
|
+
// Track telemetry for agent initialization
|
|
59
|
+
let agent;
|
|
60
|
+
try {
|
|
61
|
+
agent = flags['authoring-bundle']
|
|
62
|
+
? await Agent.init({ connection: conn, project: this.project, aabName: flags['authoring-bundle'] })
|
|
63
|
+
: await Agent.init({ connection: conn, project: this.project, apiNameOrId: flags['api-name'] });
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const wrapped = SfError.wrap(error);
|
|
67
|
+
// Check for agent not found errors
|
|
68
|
+
if (wrapped.message.toLowerCase().includes('not found') || wrapped.code === 'ENOENT') {
|
|
69
|
+
const notFoundError = new SfError(messages.getMessage('error.agentNotFound', [agentIdentifier]), 'AgentNotFound', [], 2);
|
|
70
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_agent_not_found' });
|
|
71
|
+
throw notFoundError;
|
|
72
|
+
}
|
|
73
|
+
// Check for compilation API errors (404/500 handled by @salesforce/agents)
|
|
74
|
+
if (wrapped.exitCode === COMPILATION_API_EXIT_CODES.NOT_FOUND) {
|
|
75
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_compilation_not_found' });
|
|
76
|
+
throw wrapped;
|
|
77
|
+
}
|
|
78
|
+
if (wrapped.exitCode === COMPILATION_API_EXIT_CODES.SERVER_ERROR) {
|
|
79
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_compilation_server_error' });
|
|
80
|
+
throw wrapped;
|
|
81
|
+
}
|
|
82
|
+
// Check for compilation failure (exit code 1)
|
|
83
|
+
if (wrapped.exitCode === 1 && wrapped.name === 'CompileAgentScriptError') {
|
|
84
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_compilation_failed' });
|
|
85
|
+
throw wrapped;
|
|
86
|
+
}
|
|
87
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_agent_init_failed' });
|
|
88
|
+
throw wrapped;
|
|
89
|
+
}
|
|
51
90
|
if (agent instanceof ScriptAgent) {
|
|
52
91
|
agent.preview.setMockMode(useLiveActions ? 'Live Test' : 'Mock');
|
|
53
92
|
}
|
|
54
93
|
if (useLiveActions && agent instanceof ProductionAgent) {
|
|
55
94
|
void Lifecycle.getInstance().emitWarning('Published agents always use real actions; --use-live-actions has no effect for published agents.');
|
|
56
95
|
}
|
|
57
|
-
|
|
96
|
+
// Track telemetry for preview start
|
|
97
|
+
let session;
|
|
98
|
+
try {
|
|
99
|
+
session = await agent.preview.start();
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const wrapped = SfError.wrap(error);
|
|
103
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_failed' });
|
|
104
|
+
throw new SfError(messages.getMessage('error.previewStartFailed', [wrapped.message]), 'PreviewStartFailed', [wrapped.message], 4, wrapped);
|
|
105
|
+
}
|
|
58
106
|
const displayName = flags['authoring-bundle'] ?? flags['api-name'];
|
|
59
107
|
await createCache(agent, { displayName });
|
|
108
|
+
await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_start_success' });
|
|
60
109
|
const result = { sessionId: session.sessionId };
|
|
61
110
|
this.log(messages.getMessage('output.sessionId', [session.sessionId]));
|
|
62
111
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/commands/agent/preview/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export default class AgentTestCreate extends SfCommand<AgentTestCreateResult> {
|
|
|
9
9
|
static readonly summary: string;
|
|
10
10
|
static readonly description: string;
|
|
11
11
|
static readonly examples: string[];
|
|
12
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
13
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
12
14
|
static readonly flags: {
|
|
13
15
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
16
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { join, resolve } from 'node:path';
|
|
17
17
|
import { existsSync } from 'node:fs';
|
|
18
|
-
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
19
|
-
import { Lifecycle, Messages } from '@salesforce/core';
|
|
18
|
+
import { SfCommand, Flags, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
19
|
+
import { Lifecycle, Messages, SfError, EnvironmentVariable } from '@salesforce/core';
|
|
20
20
|
import { AgentTest, AgentTestCreateLifecycleStages } from '@salesforce/agents';
|
|
21
21
|
import { MultiStageOutput } from '@oclif/multi-stage-output';
|
|
22
22
|
import { makeFlags, promptForFlag, promptForYamlFile } from '../../../flags.js';
|
|
@@ -74,6 +74,13 @@ export default class AgentTestCreate extends SfCommand {
|
|
|
74
74
|
static summary = messages.getMessage('summary');
|
|
75
75
|
static description = messages.getMessage('description');
|
|
76
76
|
static examples = messages.getMessages('examples');
|
|
77
|
+
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
78
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
79
|
+
'Succeeded (0)': 'Test created and deployed successfully.',
|
|
80
|
+
'Failed (1)': 'Test validation errors or metadata format issues.',
|
|
81
|
+
'NotFound (2)': 'Test spec file not found or org connection failed.',
|
|
82
|
+
'DeploymentFailed (4)': 'Deployment failed due to API or network errors.',
|
|
83
|
+
});
|
|
77
84
|
static flags = {
|
|
78
85
|
...makeFlags(FLAGGABLE_PROMPTS),
|
|
79
86
|
'target-org': Flags.requiredOrg(),
|
|
@@ -135,10 +142,31 @@ export default class AgentTestCreate extends SfCommand {
|
|
|
135
142
|
}
|
|
136
143
|
return Promise.resolve();
|
|
137
144
|
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
145
|
+
let path;
|
|
146
|
+
let contents;
|
|
147
|
+
try {
|
|
148
|
+
const result = await AgentTest.create(connection, apiName, spec, {
|
|
149
|
+
outputDir: join('force-app', 'main', 'default', 'aiEvaluationDefinitions'),
|
|
150
|
+
preview: flags.preview,
|
|
151
|
+
});
|
|
152
|
+
path = result.path;
|
|
153
|
+
contents = result.contents;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const wrapped = SfError.wrap(error);
|
|
157
|
+
// Check for file not found errors
|
|
158
|
+
if (wrapped.message.toLowerCase().includes('not found') ||
|
|
159
|
+
wrapped.message.toLowerCase().includes('enoent') ||
|
|
160
|
+
wrapped.code === 'ENOENT') {
|
|
161
|
+
throw new SfError(`Test spec file not found: ${spec}`, 'SpecFileNotFound', [], 2, wrapped);
|
|
162
|
+
}
|
|
163
|
+
// Check for deployment failures (API/network)
|
|
164
|
+
if (wrapped.message.toLowerCase().includes('deploy') || wrapped.message.toLowerCase().includes('api')) {
|
|
165
|
+
throw new SfError(`Deployment failed: ${wrapped.message}`, 'DeploymentFailed', [wrapped.message], 4, wrapped);
|
|
166
|
+
}
|
|
167
|
+
// Other errors (validation, format issues) use exit 1
|
|
168
|
+
throw wrapped;
|
|
169
|
+
}
|
|
142
170
|
if (flags.preview) {
|
|
143
171
|
this.mso?.skipTo(AgentTestCreateLifecycleStages.Done);
|
|
144
172
|
this.mso?.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export default class AgentTestList extends SfCommand<AgentTestListResult> {
|
|
|
5
5
|
static readonly summary: string;
|
|
6
6
|
static readonly description: string;
|
|
7
7
|
static readonly examples: string[];
|
|
8
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
9
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
8
10
|
static readonly flags: {
|
|
9
11
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
12
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -14,21 +14,33 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { AgentTest } from '@salesforce/agents';
|
|
17
|
-
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
-
import { Messages } from '@salesforce/core';
|
|
17
|
+
import { SfCommand, Flags, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
18
|
+
import { Messages, EnvironmentVariable, SfError } from '@salesforce/core';
|
|
19
19
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
20
20
|
const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.test.list');
|
|
21
21
|
export default class AgentTestList extends SfCommand {
|
|
22
22
|
static summary = messages.getMessage('summary');
|
|
23
23
|
static description = messages.getMessage('description');
|
|
24
24
|
static examples = messages.getMessages('examples');
|
|
25
|
+
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
26
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
27
|
+
'Succeeded (0)': 'Agent tests listed successfully.',
|
|
28
|
+
'Failed (4)': 'Failed to retrieve agent tests due to API or network errors.',
|
|
29
|
+
});
|
|
25
30
|
static flags = {
|
|
26
31
|
'target-org': Flags.requiredOrg(),
|
|
27
32
|
'api-version': Flags.orgApiVersion(),
|
|
28
33
|
};
|
|
29
34
|
async run() {
|
|
30
35
|
const { flags } = await this.parse(AgentTestList);
|
|
31
|
-
|
|
36
|
+
let results;
|
|
37
|
+
try {
|
|
38
|
+
results = await AgentTest.list(flags['target-org'].getConnection(flags['api-version']));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const wrapped = SfError.wrap(error);
|
|
42
|
+
throw new SfError(`Failed to retrieve agent tests: ${wrapped.message}`, 'ListRetrievalFailed', [wrapped.message], 4, wrapped);
|
|
43
|
+
}
|
|
32
44
|
this.table({
|
|
33
45
|
data: results,
|
|
34
46
|
columns: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAA4B,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAA4B,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE1E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;AAItF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAA8B;IAChE,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,mBAAmB,GAAG,aAAa,CACxD,uBAAuB,EACvB,mBAAmB,CAAC,aAAa,CAClC,CAAC;IAEK,MAAM,CAAU,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE;QAC/D,eAAe,EAAE,kCAAkC;QACnD,YAAY,EAAE,8DAA8D;KAC7E,CAAC,CAAC;IAEI,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;KACrC,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CACf,mCAAmC,OAAO,CAAC,OAAO,EAAE,EACpD,qBAAqB,EACrB,CAAC,OAAO,CAAC,OAAO,CAAC,EACjB,CAAC,EACD,OAAO,CACR,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC;YACT,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBACrC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;aAC7C;YACD,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC"}
|
|
@@ -5,6 +5,8 @@ export default class AgentTestResults extends SfCommand<AgentTestResultsResult>
|
|
|
5
5
|
static readonly summary: string;
|
|
6
6
|
static readonly description: string;
|
|
7
7
|
static readonly examples: string[];
|
|
8
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
9
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
8
10
|
static readonly flags: {
|
|
9
11
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
12
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
17
|
-
import { Messages } from '@salesforce/core';
|
|
16
|
+
import { SfCommand, Flags, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
17
|
+
import { EnvironmentVariable, Messages, SfError } from '@salesforce/core';
|
|
18
18
|
import { AgentTester } from '@salesforce/agents';
|
|
19
19
|
import { resultFormatFlag, testOutputDirFlag, verboseFlag } from '../../../flags.js';
|
|
20
20
|
import { handleTestResults } from '../../../handleTestResults.js';
|
|
@@ -24,6 +24,12 @@ export default class AgentTestResults extends SfCommand {
|
|
|
24
24
|
static summary = messages.getMessage('summary');
|
|
25
25
|
static description = messages.getMessage('description');
|
|
26
26
|
static examples = messages.getMessages('examples');
|
|
27
|
+
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
28
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
29
|
+
'Succeeded (0)': 'Results retrieved successfully. Test results (passed/failed) are in the output.',
|
|
30
|
+
'NotFound (2)': 'Job ID not found or invalid.',
|
|
31
|
+
'Failed (4)': 'Failed to retrieve results due to API or network errors.',
|
|
32
|
+
});
|
|
27
33
|
static flags = {
|
|
28
34
|
'target-org': Flags.requiredOrg(),
|
|
29
35
|
'api-version': Flags.orgApiVersion(),
|
|
@@ -39,7 +45,21 @@ export default class AgentTestResults extends SfCommand {
|
|
|
39
45
|
async run() {
|
|
40
46
|
const { flags } = await this.parse(AgentTestResults);
|
|
41
47
|
const agentTester = new AgentTester(flags['target-org'].getConnection(flags['api-version']));
|
|
42
|
-
|
|
48
|
+
let response;
|
|
49
|
+
try {
|
|
50
|
+
response = await agentTester.results(flags['job-id']);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const wrapped = SfError.wrap(error);
|
|
54
|
+
// Check for job not found errors
|
|
55
|
+
if (wrapped.message.toLowerCase().includes('not found') ||
|
|
56
|
+
wrapped.message.toLowerCase().includes('invalid') ||
|
|
57
|
+
wrapped.code === 'ENOENT') {
|
|
58
|
+
throw new SfError(`Job ID '${flags['job-id']}' not found or invalid.`, 'JobNotFound', [], 2, wrapped);
|
|
59
|
+
}
|
|
60
|
+
// API/network failures
|
|
61
|
+
throw new SfError(`Failed to retrieve results: ${wrapped.message}`, 'ResultsRetrievalFailed', [wrapped.message], 4, wrapped);
|
|
62
|
+
}
|
|
43
63
|
await handleTestResults({
|
|
44
64
|
id: flags['job-id'],
|
|
45
65
|
format: flags['result-format'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/results.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { SfError } from '@salesforce/core';
|
|
3
|
+
import { CLIError } from '@oclif/core/errors';
|
|
2
4
|
import { AgentTestRunResult } from '../../../flags.js';
|
|
3
5
|
export default class AgentTestResume extends SfCommand<AgentTestRunResult> {
|
|
4
6
|
static readonly summary: string;
|
|
5
7
|
static readonly description: string;
|
|
6
8
|
static readonly examples: string[];
|
|
9
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
10
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
7
11
|
static readonly flags: {
|
|
8
12
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
13
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -14,5 +18,7 @@ export default class AgentTestResume extends SfCommand<AgentTestRunResult> {
|
|
|
14
18
|
'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
19
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
20
|
};
|
|
21
|
+
private mso;
|
|
17
22
|
run(): Promise<AgentTestRunResult>;
|
|
23
|
+
protected catch(error: Error | SfError | CLIError): Promise<never>;
|
|
18
24
|
}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
17
|
-
import { Messages } from '@salesforce/core';
|
|
16
|
+
import { SfCommand, Flags, toHelpSection } from '@salesforce/sf-plugins-core';
|
|
17
|
+
import { EnvironmentVariable, Messages, SfError } from '@salesforce/core';
|
|
18
18
|
import { AgentTester } from '@salesforce/agents';
|
|
19
19
|
import { AgentTestCache } from '../../../agentTestCache.js';
|
|
20
20
|
import { TestStages } from '../../../testStages.js';
|
|
@@ -26,6 +26,13 @@ export default class AgentTestResume extends SfCommand {
|
|
|
26
26
|
static summary = messages.getMessage('summary');
|
|
27
27
|
static description = messages.getMessage('description');
|
|
28
28
|
static examples = messages.getMessages('examples');
|
|
29
|
+
static envVariablesSection = toHelpSection('ENVIRONMENT VARIABLES', EnvironmentVariable.SF_TARGET_ORG);
|
|
30
|
+
static errorCodes = toHelpSection('ERROR CODES', {
|
|
31
|
+
'Succeeded (0)': 'Test completed successfully (with test results in the output).',
|
|
32
|
+
'Failed (1)': 'Tests encountered execution errors (test cases with ERROR status).',
|
|
33
|
+
'NotFound (2)': 'Job ID not found or invalid.',
|
|
34
|
+
'OperationFailed (4)': 'Failed to poll test due to API or network errors.',
|
|
35
|
+
});
|
|
29
36
|
static flags = {
|
|
30
37
|
'target-org': Flags.requiredOrg(),
|
|
31
38
|
'api-version': Flags.orgApiVersion(),
|
|
@@ -50,20 +57,51 @@ export default class AgentTestResume extends SfCommand {
|
|
|
50
57
|
'output-dir': testOutputDirFlag(),
|
|
51
58
|
verbose: verboseFlag,
|
|
52
59
|
};
|
|
60
|
+
mso;
|
|
53
61
|
async run() {
|
|
54
62
|
const { flags } = await this.parse(AgentTestResume);
|
|
55
63
|
const agentTestCache = await AgentTestCache.create();
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
let name;
|
|
65
|
+
let runId;
|
|
66
|
+
let outputDir;
|
|
67
|
+
let resultFormat;
|
|
68
|
+
try {
|
|
69
|
+
const cacheEntry = agentTestCache.useIdOrMostRecent(flags['job-id'], flags['use-most-recent']);
|
|
70
|
+
name = cacheEntry.name;
|
|
71
|
+
runId = cacheEntry.runId;
|
|
72
|
+
outputDir = cacheEntry.outputDir;
|
|
73
|
+
resultFormat = cacheEntry.resultFormat;
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
const wrapped = SfError.wrap(e);
|
|
77
|
+
// Check for job not found
|
|
78
|
+
if (wrapped.message.toLowerCase().includes('not found') ||
|
|
79
|
+
wrapped.message.toLowerCase().includes('no test') ||
|
|
80
|
+
wrapped.message.toLowerCase().includes('invalid')) {
|
|
81
|
+
throw new SfError(`Job ID '${flags['job-id'] ?? 'most recent'}' not found.`, 'JobNotFound', [], 2, wrapped);
|
|
82
|
+
}
|
|
83
|
+
throw wrapped;
|
|
84
|
+
}
|
|
85
|
+
this.mso = new TestStages({
|
|
58
86
|
title: `Agent Test Run: ${name ?? runId}`,
|
|
59
87
|
jsonEnabled: this.jsonEnabled(),
|
|
60
88
|
});
|
|
61
|
-
mso.start({ id: runId });
|
|
89
|
+
this.mso.start({ id: runId });
|
|
62
90
|
const agentTester = new AgentTester(flags['target-org'].getConnection(flags['api-version']));
|
|
63
|
-
|
|
91
|
+
let completed;
|
|
92
|
+
let response;
|
|
93
|
+
try {
|
|
94
|
+
const pollResult = await this.mso.poll(agentTester, runId, flags.wait);
|
|
95
|
+
completed = pollResult.completed;
|
|
96
|
+
response = pollResult.response;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const wrapped = SfError.wrap(error);
|
|
100
|
+
throw new SfError(`Failed to poll test results: ${wrapped.message}`, 'TestPollFailed', [wrapped.message], 4, wrapped);
|
|
101
|
+
}
|
|
64
102
|
if (completed)
|
|
65
103
|
await agentTestCache.removeCacheEntry(runId);
|
|
66
|
-
mso.stop();
|
|
104
|
+
this.mso.stop();
|
|
67
105
|
await handleTestResults({
|
|
68
106
|
id: runId,
|
|
69
107
|
format: resultFormat ?? flags['result-format'],
|
|
@@ -72,7 +110,17 @@ export default class AgentTestResume extends SfCommand {
|
|
|
72
110
|
outputDir: outputDir ?? flags['output-dir'],
|
|
73
111
|
verbose: flags.verbose,
|
|
74
112
|
});
|
|
113
|
+
// Set exit code to 1 only for execution errors (tests couldn't run properly)
|
|
114
|
+
// Test assertion failures are business logic and should not affect exit code
|
|
115
|
+
if (response?.testCases.some((tc) => tc.status === 'ERROR')) {
|
|
116
|
+
process.exitCode = 1;
|
|
117
|
+
}
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
75
119
|
return { ...response, runId, status: 'COMPLETED' };
|
|
76
120
|
}
|
|
121
|
+
catch(error) {
|
|
122
|
+
this.mso?.error();
|
|
123
|
+
return super.catch(error);
|
|
124
|
+
}
|
|
77
125
|
}
|
|
78
126
|
//# sourceMappingURL=resume.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/commands/agent/test/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export default class AgentTestRunEval extends SfCommand<RunEvalResult> {
|
|
|
20
20
|
static readonly examples: string[];
|
|
21
21
|
static state: string;
|
|
22
22
|
static readonly hidden = true;
|
|
23
|
+
static readonly envVariablesSection: import("@oclif/core").HelpSection;
|
|
24
|
+
static readonly errorCodes: import("@oclif/core").HelpSection;
|
|
23
25
|
static readonly flags: {
|
|
24
26
|
'target-org': import("@oclif/core/interfaces").OptionFlag<Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
27
|
'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|