Skip to content

Commit a4993ef

Browse files
fix: add mso step for deployment event on publish agent command
1 parent ef21b23 commit a4993ef

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

src/commands/agent/publish/authoring-bundle.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
2020
import { MultiStageOutput } from '@oclif/multi-stage-output';
2121
import { Messages, Lifecycle, SfError } from '@salesforce/core';
2222
import { Agent, findAuthoringBundle } from '@salesforce/agents';
23-
import { RequestStatus, type ScopedPostRetrieve } from '@salesforce/source-deploy-retrieve';
23+
import { RequestStatus, ScopedPostDeploy, type ScopedPostRetrieve } from '@salesforce/source-deploy-retrieve';
2424
import { ensureArray } from '@salesforce/kit';
2525
import { FlaggablePrompt, promptForAgentFiles } from '../../../flags.js';
2626
import { throwAgentCompilationError } from '../../../common.js';
@@ -85,7 +85,7 @@ export default class AgentPublishAuthoringBundle extends SfCommand<AgentPublishA
8585
}
8686
// Create multi-stage output
8787
const mso = new MultiStageOutput<{ agentName: string }>({
88-
stages: ['Validate Bundle', 'Publish Agent', 'Retrieve Metadata'],
88+
stages: ['Validate Bundle', 'Publish Agent', 'Retrieve Metadata', 'Deploy Metadata'],
8989
title: 'Publishing Agent',
9090
data: { agentName: apiName },
9191
jsonEnabled: this.jsonEnabled(),
@@ -120,11 +120,14 @@ export default class AgentPublishAuthoringBundle extends SfCommand<AgentPublishA
120120
mso.skipTo('Retrieve Metadata');
121121
return Promise.resolve();
122122
});
123+
// Set up lifecycle listeners for deploy events
124+
Lifecycle.getInstance().on('scopedPreDeploy', () => {
125+
mso.skipTo('Deploy Metadata');
126+
return Promise.resolve();
127+
});
123128

124129
Lifecycle.getInstance().on('scopedPostRetrieve', (result: ScopedPostRetrieve) => {
125-
if (result.retrieveResult.response.status === RequestStatus.Succeeded) {
126-
mso.stop();
127-
} else {
130+
if (result.retrieveResult.response.status !== RequestStatus.Succeeded) {
128131
const errorMessage = `Metadata retrieval failed: ${ensureArray(
129132
// @ts-expect-error I saw errorMessages populated with useful information during testing
130133
result?.retrieveResult.response?.messages ?? result?.retrieveResult?.response?.errorMessage
@@ -135,6 +138,20 @@ export default class AgentPublishAuthoringBundle extends SfCommand<AgentPublishA
135138
return Promise.resolve();
136139
});
137140

141+
Lifecycle.getInstance().on('scopedPostDeploy', (result: ScopedPostDeploy) => {
142+
if (result.deployResult.response.status === RequestStatus.Succeeded) {
143+
mso.stop();
144+
} else {
145+
const errorMessage = `Metadata deployment failed: ${ensureArray(
146+
// @ts-expect-error I saw errorMessages populated with useful information during testing
147+
result?.deployResult.response?.messages ?? result?.deployResult?.response?.errorMessage
148+
).join(EOL)}`;
149+
mso.error();
150+
throw new SfError(errorMessage);
151+
}
152+
return Promise.resolve();
153+
});
154+
138155
const result = await Agent.publishAgentJson(conn, this.project!, compileResponse.compiledArtifact);
139156
mso.stop();
140157

0 commit comments

Comments
 (0)