@jterrats/smart-deployment 1.3.1 → 1.5.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 +38 -0
- package/lib/analysis/metadata-capability-definitions.d.ts +2 -0
- package/lib/analysis/metadata-capability-definitions.js +284 -0
- package/lib/analysis/metadata-capability-definitions.js.map +1 -0
- package/lib/analysis/metadata-capability-registry.d.ts +11 -0
- package/lib/analysis/metadata-capability-registry.js +142 -0
- package/lib/analysis/metadata-capability-registry.js.map +1 -0
- package/lib/analysis/metadata-gap-analysis-service.d.ts +51 -0
- package/lib/analysis/metadata-gap-analysis-service.js +277 -0
- package/lib/analysis/metadata-gap-analysis-service.js.map +1 -0
- package/lib/commands/ci/preset.js +2 -1
- package/lib/commands/ci/preset.js.map +1 -1
- package/lib/commands/ci-publish.d.ts +6 -2
- package/lib/commands/ci-publish.js +23 -8
- package/lib/commands/ci-publish.js.map +1 -1
- package/lib/commands/metadata/gaps.d.ts +15 -0
- package/lib/commands/metadata/gaps.js +84 -0
- package/lib/commands/metadata/gaps.js.map +1 -0
- package/lib/commands/resume.d.ts +7 -0
- package/lib/commands/resume.js +59 -6
- package/lib/commands/resume.js.map +1 -1
- package/lib/commands/start.d.ts +9 -0
- package/lib/commands/start.js +89 -29
- package/lib/commands/start.js.map +1 -1
- package/lib/commands/status.js +10 -4
- package/lib/commands/status.js.map +1 -1
- package/lib/commands/validate.d.ts +7 -0
- package/lib/commands/validate.js +26 -3
- package/lib/commands/validate.js.map +1 -1
- package/lib/config/repo-config.d.ts +3 -0
- package/lib/config/repo-config.js +12 -0
- package/lib/config/repo-config.js.map +1 -1
- package/lib/constants/deployment-order.js +1 -0
- package/lib/constants/deployment-order.js.map +1 -1
- package/lib/deployment/ci-preset-service.d.ts +2 -0
- package/lib/deployment/ci-preset-service.js +7 -0
- package/lib/deployment/ci-preset-service.js.map +1 -1
- package/lib/deployment/commit-scope-service.d.ts +7 -0
- package/lib/deployment/commit-scope-service.js +104 -21
- package/lib/deployment/commit-scope-service.js.map +1 -1
- package/lib/deployment/deployment-runner.d.ts +18 -4
- package/lib/deployment/deployment-runner.js +135 -33
- package/lib/deployment/deployment-runner.js.map +1 -1
- package/lib/deployment/deployment-state-summary.d.ts +7 -1
- package/lib/deployment/deployment-state-summary.js +24 -6
- package/lib/deployment/deployment-state-summary.js.map +1 -1
- package/lib/deployment/deployment-status-service.d.ts +15 -8
- package/lib/deployment/deployment-status-service.js +53 -28
- package/lib/deployment/deployment-status-service.js.map +1 -1
- package/lib/deployment/deployment-validation-service.d.ts +2 -0
- package/lib/deployment/deployment-validation-service.js +2 -0
- package/lib/deployment/deployment-validation-service.js.map +1 -1
- package/lib/deployment/resume-deployment-service.d.ts +24 -4
- package/lib/deployment/resume-deployment-service.js +108 -23
- package/lib/deployment/resume-deployment-service.js.map +1 -1
- package/lib/deployment/sf-cli-integration.d.ts +5 -2
- package/lib/deployment/sf-cli-integration.js +26 -14
- package/lib/deployment/sf-cli-integration.js.map +1 -1
- package/lib/deployment/special-deployment-plan.js +36 -49
- package/lib/deployment/special-deployment-plan.js.map +1 -1
- package/lib/deployment/start-execution-service.d.ts +11 -1
- package/lib/deployment/start-execution-service.js +13 -5
- package/lib/deployment/start-execution-service.js.map +1 -1
- package/lib/deployment/state-manager.d.ts +22 -0
- package/lib/deployment/state-manager.js +40 -5
- package/lib/deployment/state-manager.js.map +1 -1
- package/lib/presentation/release-report-presenter.d.ts +10 -0
- package/lib/presentation/release-report-presenter.js +35 -0
- package/lib/presentation/release-report-presenter.js.map +1 -0
- package/lib/presentation/validate-command-presenter.js +13 -0
- package/lib/presentation/validate-command-presenter.js.map +1 -1
- package/lib/reports/deployment-plan-report-service.d.ts +3 -0
- package/lib/reports/deployment-plan-report-service.js +9 -0
- package/lib/reports/deployment-plan-report-service.js.map +1 -1
- package/lib/reports/release-report-builder.d.ts +6 -0
- package/lib/reports/release-report-builder.js +115 -0
- package/lib/reports/release-report-builder.js.map +1 -0
- package/lib/reports/release-report-command-adapter.d.ts +14 -0
- package/lib/reports/release-report-command-adapter.js +28 -0
- package/lib/reports/release-report-command-adapter.js.map +1 -0
- package/lib/reports/release-report-facts-factory.d.ts +14 -0
- package/lib/reports/release-report-facts-factory.js +140 -0
- package/lib/reports/release-report-facts-factory.js.map +1 -0
- package/lib/reports/release-report-sanitizer.d.ts +5 -0
- package/lib/reports/release-report-sanitizer.js +120 -0
- package/lib/reports/release-report-sanitizer.js.map +1 -0
- package/lib/reports/release-report-service.d.ts +43 -0
- package/lib/reports/release-report-service.js +80 -0
- package/lib/reports/release-report-service.js.map +1 -0
- package/lib/reports/release-report-store.d.ts +30 -0
- package/lib/reports/release-report-store.js +57 -0
- package/lib/reports/release-report-store.js.map +1 -0
- package/lib/reports/start-release-report-coordinator.d.ts +15 -0
- package/lib/reports/start-release-report-coordinator.js +23 -0
- package/lib/reports/start-release-report-coordinator.js.map +1 -0
- package/lib/services/metadata-scanner-service.js +12 -2
- package/lib/services/metadata-scanner-service.js.map +1 -1
- package/lib/services/scanners/additional-metadata-scanner.js +37 -3
- package/lib/services/scanners/additional-metadata-scanner.js.map +1 -1
- package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +2 -1
- package/lib/services/scanners/automation-ai-metadata-scanner.js +48 -0
- package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -1
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -1
- package/lib/types/manual-checkpoint.d.ts +27 -0
- package/lib/types/manual-checkpoint.js +89 -0
- package/lib/types/manual-checkpoint.js.map +1 -0
- package/lib/types/metadata-capability.d.ts +39 -0
- package/lib/types/metadata-capability.js +2 -0
- package/lib/types/metadata-capability.js.map +1 -0
- package/lib/types/metadata.d.ts +7 -1
- package/lib/types/release-report.d.ts +89 -0
- package/lib/types/release-report.js +42 -0
- package/lib/types/release-report.js.map +1 -0
- package/lib/waves/wave-priority-policy.js +2 -25
- package/lib/waves/wave-priority-policy.js.map +1 -1
- package/messages/metadata.gaps.json +12 -0
- package/messages/resume.json +5 -3
- package/messages/start.json +2 -0
- package/messages/validate.json +3 -1
- package/npm-shrinkwrap.json +417 -901
- package/oclif.lock +415 -718
- package/oclif.manifest.json +103 -12
- package/package.json +18 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-status-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-status-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAEL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAyB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,MAAM,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"deployment-status-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-status-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,8 @@ export class DeploymentValidationService {
|
|
|
103
103
|
issues: issues.length,
|
|
104
104
|
});
|
|
105
105
|
return {
|
|
106
|
+
projectRoot: scanResult.projectRoot,
|
|
107
|
+
componentIds: scanResult.components.map((component) => `${component.type}:${component.name}`).sort(),
|
|
106
108
|
valid,
|
|
107
109
|
components: scanResult.components.length,
|
|
108
110
|
dependencies: scanResult.dependencyResult.stats.totalDependencies,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-validation-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-validation-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,MAAM,GAAG,SAAS,CAAC,6BAA6B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"deployment-validation-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-validation-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import type { DeploymentConfig } from '../config/repo-config.js';
|
|
1
2
|
import { StateManager } from './state-manager.js';
|
|
2
3
|
import { SfCliIntegration } from './sf-cli-integration.js';
|
|
4
|
+
import { DeploymentContextService } from './deployment-context-service.js';
|
|
5
|
+
import { StartExecutionService, type StartExecutionResult } from './start-execution-service.js';
|
|
3
6
|
export type ResumeRetryStrategy = 'standard' | 'quick' | 'validate-only';
|
|
4
7
|
export type ResumePreparation = {
|
|
5
8
|
deploymentId: string;
|
|
@@ -8,11 +11,28 @@ export type ResumePreparation = {
|
|
|
8
11
|
remainingWaves: number;
|
|
9
12
|
failureReason?: string;
|
|
10
13
|
};
|
|
14
|
+
export type ResumeOptions = {
|
|
15
|
+
targetOrg?: string;
|
|
16
|
+
sourcePath?: string;
|
|
17
|
+
approveCheckpoint?: string;
|
|
18
|
+
};
|
|
19
|
+
type ResumeDeploymentServiceDependencies = {
|
|
20
|
+
deploymentContextService?: DeploymentContextService;
|
|
21
|
+
startExecutionService?: StartExecutionService;
|
|
22
|
+
loadConfig?: (sourcePath: string) => Promise<DeploymentConfig>;
|
|
23
|
+
};
|
|
11
24
|
export declare class ResumeDeploymentService {
|
|
12
25
|
private readonly stateManager;
|
|
13
26
|
private readonly sfCli;
|
|
14
|
-
constructor(stateManager?: StateManager, sfCli?:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
constructor(stateManager?: StateManager, sfCli?: SfCliIntegration, dependencies?: ResumeDeploymentServiceDependencies);
|
|
28
|
+
private readonly deploymentContextService;
|
|
29
|
+
private readonly startExecutionService;
|
|
30
|
+
private readonly loadConfig;
|
|
31
|
+
prepareResume(retryStrategy: ResumeRetryStrategy, options?: ResumeOptions): Promise<ResumePreparation>;
|
|
32
|
+
resumeCheckpoint(options: ResumeOptions & {
|
|
33
|
+
approveCheckpoint: string;
|
|
34
|
+
}): Promise<StartExecutionResult>;
|
|
35
|
+
resumeFailedWaves(options?: ResumeOptions): Promise<StartExecutionResult>;
|
|
36
|
+
private continueLocalExecution;
|
|
18
37
|
}
|
|
38
|
+
export {};
|
|
@@ -1,41 +1,48 @@
|
|
|
1
|
+
import { createDeploymentPlanFingerprint, createSourceFingerprint } from '../types/manual-checkpoint.js';
|
|
2
|
+
import { loadRepoConfigStrict } from '../config/repo-config.js';
|
|
1
3
|
import { createResumedState, summarizeDeploymentState } from './deployment-state-summary.js';
|
|
2
4
|
import { StateManager } from './state-manager.js';
|
|
3
5
|
import { SfCliIntegration } from './sf-cli-integration.js';
|
|
6
|
+
import { DeploymentContextService } from './deployment-context-service.js';
|
|
7
|
+
import { StartExecutionService } from './start-execution-service.js';
|
|
4
8
|
export class ResumeDeploymentService {
|
|
5
9
|
stateManager;
|
|
6
10
|
sfCli;
|
|
7
|
-
constructor(stateManager = new StateManager(), sfCli = new SfCliIntegration()) {
|
|
11
|
+
constructor(stateManager = new StateManager(), sfCli = new SfCliIntegration(), dependencies = {}) {
|
|
8
12
|
this.stateManager = stateManager;
|
|
9
13
|
this.sfCli = sfCli;
|
|
14
|
+
this.deploymentContextService = dependencies.deploymentContextService ?? new DeploymentContextService();
|
|
15
|
+
this.startExecutionService = dependencies.startExecutionService ?? new StartExecutionService();
|
|
16
|
+
this.loadConfig = dependencies.loadConfig ?? loadRepoConfigStrict;
|
|
10
17
|
}
|
|
18
|
+
deploymentContextService;
|
|
19
|
+
startExecutionService;
|
|
20
|
+
loadConfig;
|
|
11
21
|
async prepareResume(retryStrategy, options = {}) {
|
|
12
22
|
const state = await this.stateManager.loadState();
|
|
13
23
|
if (!state?.failedWave) {
|
|
14
24
|
throw new Error('No failed deployment state found to resume');
|
|
15
25
|
}
|
|
16
26
|
const summary = summarizeDeploymentState(state);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
metadata
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
}
|
|
38
|
-
: state, retryStrategy);
|
|
27
|
+
const targetOrg = options.targetOrg ?? state.targetOrg;
|
|
28
|
+
const remoteResume = options.targetOrg ? await this.sfCli.resumeDeployment(state.deploymentId) : undefined;
|
|
29
|
+
if (remoteResume && !remoteResume.success) {
|
|
30
|
+
throw new Error(remoteResume.output);
|
|
31
|
+
}
|
|
32
|
+
const resumedState = createResumedState({
|
|
33
|
+
...state,
|
|
34
|
+
deploymentId: remoteResume?.deploymentId ?? state.deploymentId,
|
|
35
|
+
targetOrg,
|
|
36
|
+
metadata: {
|
|
37
|
+
...(state.metadata ?? {}),
|
|
38
|
+
remoteResumeStatus: remoteResume?.status,
|
|
39
|
+
remoteComponentSuccesses: remoteResume?.componentSuccesses,
|
|
40
|
+
remoteComponentFailures: remoteResume?.componentFailures,
|
|
41
|
+
remoteTestsRun: remoteResume?.testsRun,
|
|
42
|
+
remoteTestFailures: remoteResume?.testFailures,
|
|
43
|
+
remoteResumeCheckedAt: remoteResume ? new Date().toISOString() : undefined,
|
|
44
|
+
},
|
|
45
|
+
}, retryStrategy);
|
|
39
46
|
await this.stateManager.saveState(resumedState);
|
|
40
47
|
return {
|
|
41
48
|
deploymentId: summary.deploymentId,
|
|
@@ -45,5 +52,83 @@ export class ResumeDeploymentService {
|
|
|
45
52
|
failureReason: summary.failureReason,
|
|
46
53
|
};
|
|
47
54
|
}
|
|
55
|
+
async resumeCheckpoint(options) {
|
|
56
|
+
const state = await this.stateManager.loadState();
|
|
57
|
+
if (!state?.pausedCheckpoint || !state.execution) {
|
|
58
|
+
throw new Error('No paused deployment checkpoint found to resume');
|
|
59
|
+
}
|
|
60
|
+
if (options.approveCheckpoint !== state.pausedCheckpoint.id) {
|
|
61
|
+
throw new Error(`Checkpoint approval does not match ${state.pausedCheckpoint.id}.`);
|
|
62
|
+
}
|
|
63
|
+
return this.continueLocalExecution({ ...state, execution: state.execution }, options, options.approveCheckpoint);
|
|
64
|
+
}
|
|
65
|
+
async resumeFailedWaves(options = {}) {
|
|
66
|
+
const state = await this.stateManager.loadState();
|
|
67
|
+
if (!state?.failedWave || !state.execution) {
|
|
68
|
+
throw new Error('No locally resumable failed deployment state found');
|
|
69
|
+
}
|
|
70
|
+
return this.continueLocalExecution({ ...state, execution: state.execution }, options);
|
|
71
|
+
}
|
|
72
|
+
async continueLocalExecution(state, options, approvedCheckpoint) {
|
|
73
|
+
const targetOrg = options.targetOrg ?? state.targetOrg;
|
|
74
|
+
if (targetOrg !== state.targetOrg) {
|
|
75
|
+
throw new Error(`Checkpoint target org mismatch: expected ${state.targetOrg}, received ${targetOrg}.`);
|
|
76
|
+
}
|
|
77
|
+
const sourcePath = options.sourcePath ?? state.execution.sourcePath;
|
|
78
|
+
const currentConfig = await this.loadConfig(sourcePath);
|
|
79
|
+
if (JSON.stringify(currentConfig.checkpoints ?? []) !== JSON.stringify(state.execution.checkpoints)) {
|
|
80
|
+
throw new Error('Manual checkpoint configuration changed after the deployment was paused.');
|
|
81
|
+
}
|
|
82
|
+
if (state.pausedCheckpoint !== undefined &&
|
|
83
|
+
(state.pausedCheckpoint.planFingerprint !== state.execution.planFingerprint ||
|
|
84
|
+
state.pausedCheckpoint.executionIndex !== state.execution.nextExecutionIndex)) {
|
|
85
|
+
throw new Error('Paused deployment state is internally inconsistent.');
|
|
86
|
+
}
|
|
87
|
+
const deploymentContext = await this.deploymentContextService.buildContext({
|
|
88
|
+
sourcePath,
|
|
89
|
+
...state.execution.contextOptions,
|
|
90
|
+
});
|
|
91
|
+
const executionWaves = state.execution.destructive
|
|
92
|
+
? [...deploymentContext.orderedWaves].reverse()
|
|
93
|
+
: deploymentContext.orderedWaves;
|
|
94
|
+
const fingerprint = createDeploymentPlanFingerprint({
|
|
95
|
+
waves: executionWaves,
|
|
96
|
+
checkpoints: state.execution.checkpoints,
|
|
97
|
+
destructive: state.execution.destructive,
|
|
98
|
+
skipTests: state.execution.skipTests,
|
|
99
|
+
apiVersion: deploymentContext.scanResult.apiVersion,
|
|
100
|
+
sourceFingerprint: await createSourceFingerprint(deploymentContext.scanResult.dependencyResult.components),
|
|
101
|
+
});
|
|
102
|
+
if (fingerprint !== state.execution.planFingerprint) {
|
|
103
|
+
throw new Error(`Deployment plan changed after the checkpoint was created (${state.execution.planFingerprint} != ${fingerprint}). Regenerate and restart the deployment.`);
|
|
104
|
+
}
|
|
105
|
+
if (executionWaves.map((wave) => wave.number).join(',') !== state.execution.orderedWaveNumbers.join(',')) {
|
|
106
|
+
throw new Error('Deployment wave order changed after the checkpoint was created.');
|
|
107
|
+
}
|
|
108
|
+
const expectedCompleted = state.execution.orderedWaveNumbers.slice(0, state.execution.nextExecutionIndex);
|
|
109
|
+
if (expectedCompleted.join(',') !== state.completedWaves.join(',')) {
|
|
110
|
+
throw new Error('Completed waves do not match the persisted execution position.');
|
|
111
|
+
}
|
|
112
|
+
return this.startExecutionService.execute({
|
|
113
|
+
dryRun: false,
|
|
114
|
+
validateOnly: false,
|
|
115
|
+
allowCycleRemediation: false,
|
|
116
|
+
skipTests: state.execution.skipTests,
|
|
117
|
+
destructive: state.execution.destructive,
|
|
118
|
+
targetOrg,
|
|
119
|
+
sourcePath,
|
|
120
|
+
deploymentContext,
|
|
121
|
+
log: () => undefined,
|
|
122
|
+
checkpoints: state.execution.checkpoints,
|
|
123
|
+
approvedCheckpointIds: new Set([
|
|
124
|
+
...(state.approvedCheckpointIds ?? []),
|
|
125
|
+
...(approvedCheckpoint === undefined ? [] : [approvedCheckpoint]),
|
|
126
|
+
]),
|
|
127
|
+
startExecutionIndex: state.execution.nextExecutionIndex,
|
|
128
|
+
deploymentId: state.deploymentId,
|
|
129
|
+
planFingerprint: fingerprint,
|
|
130
|
+
contextOptions: state.execution.contextOptions,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
48
133
|
}
|
|
49
134
|
//# sourceMappingURL=resume-deployment-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-deployment-service.js","sourceRoot":"","sources":["../../src/deployment/resume-deployment-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"resume-deployment-service.js","sourceRoot":"","sources":["../../src/deployment/resume-deployment-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ export type DeploymentOptions = {
|
|
|
19
19
|
testLevel?: TestLevel;
|
|
20
20
|
tests?: string[];
|
|
21
21
|
checkOnly?: boolean;
|
|
22
|
-
|
|
22
|
+
destructiveChangesPath?: string;
|
|
23
|
+
destructiveChangesTiming?: 'pre' | 'post';
|
|
23
24
|
};
|
|
24
25
|
export type DeploymentResult = {
|
|
25
26
|
success: boolean;
|
|
@@ -43,5 +44,7 @@ export declare class SfCliIntegration {
|
|
|
43
44
|
private buildDeployCommand;
|
|
44
45
|
private parseDeploymentOutput;
|
|
45
46
|
checkDeploymentStatus(deploymentId: string, targetOrg: string): Promise<DeploymentResult>;
|
|
46
|
-
resumeDeployment(deploymentId: string
|
|
47
|
+
resumeDeployment(deploymentId: string): Promise<DeploymentResult>;
|
|
48
|
+
private buildResumeCommand;
|
|
49
|
+
private collectExecOutput;
|
|
47
50
|
}
|
|
@@ -37,7 +37,7 @@ export class SfCliIntegration {
|
|
|
37
37
|
}
|
|
38
38
|
catch (error) {
|
|
39
39
|
logger.error('Deployment failed', { error });
|
|
40
|
-
const output =
|
|
40
|
+
const output = this.collectExecOutput(error);
|
|
41
41
|
return this.parseDeploymentOutput(output, true);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -49,9 +49,6 @@ export class SfCliIntegration {
|
|
|
49
49
|
'--json',
|
|
50
50
|
'--wait 60',
|
|
51
51
|
];
|
|
52
|
-
if (options.postDestructiveChangesPath) {
|
|
53
|
-
parts.push(`--post-destructive-changes ${options.postDestructiveChangesPath}`);
|
|
54
|
-
}
|
|
55
52
|
if (options.testLevel) {
|
|
56
53
|
parts.push(`--test-level ${options.testLevel}`);
|
|
57
54
|
}
|
|
@@ -61,6 +58,9 @@ export class SfCliIntegration {
|
|
|
61
58
|
if (options.checkOnly) {
|
|
62
59
|
parts.push('--dry-run');
|
|
63
60
|
}
|
|
61
|
+
if (options.destructiveChangesPath) {
|
|
62
|
+
parts.push(options.destructiveChangesTiming === 'pre' ? '--pre-destructive-changes' : '--post-destructive-changes', options.destructiveChangesPath);
|
|
63
|
+
}
|
|
64
64
|
return parts.join(' ');
|
|
65
65
|
}
|
|
66
66
|
parseDeploymentOutput(output, failed = false) {
|
|
@@ -79,7 +79,7 @@ export class SfCliIntegration {
|
|
|
79
79
|
testsRun: parsed.result?.numberTestsTotal,
|
|
80
80
|
testFailures: parsed.result?.numberTestErrors,
|
|
81
81
|
output,
|
|
82
|
-
diagnostics: success ?
|
|
82
|
+
diagnostics: success ? [] : normalizeDeploymentDiagnostics(output),
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -87,14 +87,13 @@ export class SfCliIntegration {
|
|
|
87
87
|
logger.warn('Failed to parse deployment output', { parseError });
|
|
88
88
|
}
|
|
89
89
|
// Fallback for non-JSON output
|
|
90
|
-
const success = !failed;
|
|
91
90
|
return {
|
|
92
|
-
success,
|
|
91
|
+
success: !failed,
|
|
93
92
|
status: failed ? 'Failed' : 'Unknown',
|
|
94
93
|
componentSuccesses: 0,
|
|
95
94
|
componentFailures: failed ? 1 : 0,
|
|
96
95
|
output,
|
|
97
|
-
diagnostics:
|
|
96
|
+
diagnostics: failed ? normalizeDeploymentDiagnostics(output) : [],
|
|
98
97
|
};
|
|
99
98
|
}
|
|
100
99
|
async checkDeploymentStatus(deploymentId, targetOrg) {
|
|
@@ -105,21 +104,34 @@ export class SfCliIntegration {
|
|
|
105
104
|
}
|
|
106
105
|
catch (error) {
|
|
107
106
|
logger.error('Failed to check deployment status', { error, deploymentId });
|
|
108
|
-
const output =
|
|
107
|
+
const output = this.collectExecOutput(error);
|
|
109
108
|
return this.parseDeploymentOutput(output, true);
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
|
-
async resumeDeployment(deploymentId
|
|
113
|
-
const command =
|
|
111
|
+
async resumeDeployment(deploymentId) {
|
|
112
|
+
const command = this.buildResumeCommand(deploymentId);
|
|
114
113
|
try {
|
|
115
|
-
const { stdout
|
|
116
|
-
return this.parseDeploymentOutput(stdout
|
|
114
|
+
const { stdout } = await execAsync(command);
|
|
115
|
+
return this.parseDeploymentOutput(stdout);
|
|
117
116
|
}
|
|
118
117
|
catch (error) {
|
|
119
118
|
logger.error('Failed to resume deployment', { error, deploymentId });
|
|
120
|
-
const output =
|
|
119
|
+
const output = this.collectExecOutput(error);
|
|
121
120
|
return this.parseDeploymentOutput(output, true);
|
|
122
121
|
}
|
|
123
122
|
}
|
|
123
|
+
buildResumeCommand(deploymentId) {
|
|
124
|
+
return `sf project deploy resume --job-id ${deploymentId} --json`;
|
|
125
|
+
}
|
|
126
|
+
collectExecOutput(error) {
|
|
127
|
+
if (error instanceof Error) {
|
|
128
|
+
const execFailure = error;
|
|
129
|
+
const output = [execFailure.stdout, execFailure.stderr, execFailure.message]
|
|
130
|
+
.filter((value) => typeof value === 'string' && value.length > 0)
|
|
131
|
+
.join('\n');
|
|
132
|
+
return output.length > 0 ? output : error.message;
|
|
133
|
+
}
|
|
134
|
+
return String(error);
|
|
135
|
+
}
|
|
124
136
|
}
|
|
125
137
|
//# sourceMappingURL=sf-cli-integration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-cli-integration.js","sourceRoot":"","sources":["../../src/deployment/sf-cli-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAA6B,MAAM,mCAAmC,CAAC;AAE9G,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sf-cli-integration.js","sourceRoot":"","sources":["../../src/deployment/sf-cli-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
2
|
import * as path from 'node:path';
|
|
4
3
|
import { promisify } from 'node:util';
|
|
5
|
-
import { XMLParser } from 'fast-xml-parser';
|
|
6
4
|
import { glob } from 'glob';
|
|
7
5
|
import { MetadataScannerService } from '../services/metadata-scanner-service.js';
|
|
8
6
|
import { SfCliSpecialDeploymentTargetLookup, } from './special-deployment-target-lookup.js';
|
|
9
7
|
const execFileAsync = promisify(execFile);
|
|
10
|
-
const CORE_EXCLUDED_TYPES = ['Bot', 'BotVersion', 'AiAuthoringBundle'];
|
|
8
|
+
const CORE_EXCLUDED_TYPES = ['Bot', 'BotVersion', 'AiAuthoringBundle', 'AiEvaluationDefinition'];
|
|
11
9
|
export class SpecialDeploymentPlanService {
|
|
12
10
|
async buildPlan(options = {}) {
|
|
13
11
|
const scanner = options.scanner ?? new MetadataScannerService();
|
|
@@ -114,22 +112,21 @@ class AgentforceActivationProvider {
|
|
|
114
112
|
}
|
|
115
113
|
class AiEvaluationProvider {
|
|
116
114
|
async plan(context) {
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const precheckErrors = await findMissingEvaluationSubjects(context.projectRoot, changedFiles, sourceSubjects, context.targetOrg, context.targetLookup);
|
|
115
|
+
const changedPaths = new Set(context.changedPaths.map(normalizePath));
|
|
116
|
+
const evaluations = context.components
|
|
117
|
+
.filter(isAiEvaluationDefinition)
|
|
118
|
+
.map((component) => ({ component, relativePath: projectRelativePath(context.projectRoot, component.filePath) }))
|
|
119
|
+
.filter(({ relativePath }) => !context.since || changedPaths.has(relativePath))
|
|
120
|
+
.sort((left, right) => left.relativePath.localeCompare(right.relativePath) ||
|
|
121
|
+
toComponentKey(left.component).localeCompare(toComponentKey(right.component)));
|
|
122
|
+
const sourceSubjects = evaluationSourceSubjects(context, changedPaths);
|
|
123
|
+
const precheckErrors = await findMissingEvaluationSubjects(evaluations, sourceSubjects, context.targetOrg, context.targetLookup);
|
|
127
124
|
return {
|
|
128
125
|
kind: 'ai-evaluations',
|
|
129
126
|
label: 'Phase 4: AI evaluation metadata deploy',
|
|
130
|
-
components:
|
|
131
|
-
changedPaths:
|
|
132
|
-
commands:
|
|
127
|
+
components: evaluations.map(({ component }) => toComponentKey(component)),
|
|
128
|
+
changedPaths: evaluations.map(({ relativePath }) => relativePath),
|
|
129
|
+
commands: evaluations.length > 0
|
|
133
130
|
? [
|
|
134
131
|
{
|
|
135
132
|
tool: 'sf',
|
|
@@ -138,10 +135,10 @@ class AiEvaluationProvider {
|
|
|
138
135
|
},
|
|
139
136
|
]
|
|
140
137
|
: [],
|
|
141
|
-
skipped:
|
|
142
|
-
skipReason:
|
|
138
|
+
skipped: evaluations.length === 0,
|
|
139
|
+
skipReason: evaluations.length === 0 ? 'No changed AiEvaluationDefinition files detected.' : undefined,
|
|
143
140
|
errors: precheckErrors,
|
|
144
|
-
warnings:
|
|
141
|
+
warnings: evaluations.length > 0 && !context.targetOrg
|
|
145
142
|
? ['AiEvaluationDefinition target-org subject lookup requires --target-org.']
|
|
146
143
|
: undefined,
|
|
147
144
|
};
|
|
@@ -217,18 +214,15 @@ function findChangedNames(context, pattern) {
|
|
|
217
214
|
function changedPathsFor(changedPaths, segment) {
|
|
218
215
|
return changedPaths.filter((changedPath) => normalizePath(changedPath).includes(segment)).sort();
|
|
219
216
|
}
|
|
220
|
-
function isChanged(context, filePath) {
|
|
221
|
-
if (!context.since) {
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
return context.changedPaths.includes(filePath);
|
|
225
|
-
}
|
|
226
217
|
function toComponentKey(component) {
|
|
227
218
|
return `${component.type}:${component.name}`;
|
|
228
219
|
}
|
|
229
220
|
function normalizePath(filePath) {
|
|
230
221
|
return filePath.split(path.sep).join('/');
|
|
231
222
|
}
|
|
223
|
+
function projectRelativePath(projectRoot, filePath) {
|
|
224
|
+
return normalizePath(path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath).replace(/^\.\//u, '');
|
|
225
|
+
}
|
|
232
226
|
function firstPathSegment(filePath) {
|
|
233
227
|
return normalizePath(filePath).split('/')[0] ?? filePath;
|
|
234
228
|
}
|
|
@@ -238,39 +232,32 @@ function withTargetOrg(args, context) {
|
|
|
238
232
|
}
|
|
239
233
|
return [...args, '--target-org', context.targetOrg];
|
|
240
234
|
}
|
|
241
|
-
async function findMissingEvaluationSubjects(
|
|
242
|
-
const parser = new XMLParser({ ignoreAttributes: false });
|
|
235
|
+
async function findMissingEvaluationSubjects(evaluations, sourceSubjects, targetOrg, targetLookup) {
|
|
243
236
|
const errors = [];
|
|
244
|
-
for (const
|
|
245
|
-
|
|
246
|
-
const content = await readFile(absolutePath, 'utf8');
|
|
247
|
-
const parsed = parser.parse(content);
|
|
248
|
-
const subjectName = findXmlValue(parsed, 'subjectName');
|
|
249
|
-
if (!subjectName || sourceSubjects.has(subjectName)) {
|
|
237
|
+
for (const { component, relativePath } of evaluations) {
|
|
238
|
+
if (sourceSubjects.has(component.subjectName)) {
|
|
250
239
|
continue;
|
|
251
240
|
}
|
|
252
|
-
const existsInTarget = targetOrg
|
|
241
|
+
const existsInTarget = targetOrg
|
|
242
|
+
? await targetLookup.hasEvaluationSubject(targetOrg, component.subjectName)
|
|
243
|
+
: false;
|
|
253
244
|
if (!existsInTarget) {
|
|
254
|
-
errors.push(`${
|
|
245
|
+
errors.push(`${relativePath}: subjectName "${component.subjectName}" was not found in source Agentforce bundles or Bots.`);
|
|
255
246
|
}
|
|
256
247
|
}
|
|
257
248
|
return errors;
|
|
258
249
|
}
|
|
259
|
-
function
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
for (const nested of Object.values(record)) {
|
|
269
|
-
const found = findXmlValue(nested, key);
|
|
270
|
-
if (found) {
|
|
271
|
-
return found;
|
|
250
|
+
function isAiEvaluationDefinition(component) {
|
|
251
|
+
return component.type === 'AiEvaluationDefinition';
|
|
252
|
+
}
|
|
253
|
+
function evaluationSourceSubjects(context, changedPaths) {
|
|
254
|
+
const subjects = new Set(context.components.filter((component) => component.type === 'Bot').map((component) => component.name));
|
|
255
|
+
for (const component of context.components) {
|
|
256
|
+
if (component.type === 'AiAuthoringBundle' &&
|
|
257
|
+
changedPaths.has(projectRelativePath(context.projectRoot, component.filePath))) {
|
|
258
|
+
subjects.add(component.name);
|
|
272
259
|
}
|
|
273
260
|
}
|
|
274
|
-
return
|
|
261
|
+
return subjects;
|
|
275
262
|
}
|
|
276
263
|
//# sourceMappingURL=special-deployment-plan.js.map
|