@@ -20,7 +20,7 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
2020import { MultiStageOutput } from '@oclif/multi-stage-output' ;
2121import { Messages , Lifecycle , SfError } from '@salesforce/core' ;
2222import { 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' ;
2424import { ensureArray } from '@salesforce/kit' ;
2525import { FlaggablePrompt , promptForAgentFiles } from '../../../flags.js' ;
2626import { 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