@jterrats/smart-deployment 1.1.0 → 1.2.1

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.
@@ -0,0 +1,14 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { type SpecialDeploymentPlan } from '../deployment/special-deployment-plan.js';
3
+ export default class CiPublish extends SfCommand<SpecialDeploymentPlan> {
4
+ static readonly summary = "Build a coordinated metadata, Agentforce, LWR, and OmniStudio publish plan for CI.";
5
+ static readonly examples: string[];
6
+ static readonly flags: {
7
+ 'source-path': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ since: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ 'auto-activate': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<SpecialDeploymentPlan>;
13
+ private reportPlan;
14
+ }
@@ -0,0 +1,69 @@
1
+ import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { SpecialDeploymentPlanService } from '../deployment/special-deployment-plan.js';
3
+ import { getLogger } from '../utils/logger.js';
4
+ const logger = getLogger('CiPublishCommand');
5
+ export default class CiPublish extends SfCommand {
6
+ static summary = 'Build a coordinated metadata, Agentforce, LWR, and OmniStudio publish plan for CI.';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %> --since origin/main --dry-run',
9
+ '<%= config.bin %> <%= command.id %> --source-path force-app --since HEAD~1 --json',
10
+ ];
11
+ static flags = {
12
+ 'source-path': Flags.string({
13
+ summary: 'Path inside a Salesforce DX project to scan.',
14
+ }),
15
+ since: Flags.string({
16
+ summary: 'Git revision used as the previous green deploy SHA for change detection.',
17
+ }),
18
+ 'dry-run': Flags.boolean({
19
+ summary: 'Print the coordinated publish plan without executing external commands.',
20
+ default: true,
21
+ allowNo: true,
22
+ }),
23
+ 'auto-activate': Flags.boolean({
24
+ summary: 'Include Agentforce activation commands after authoring bundle publish.',
25
+ default: false,
26
+ }),
27
+ };
28
+ async run() {
29
+ const { flags } = await this.parse(CiPublish);
30
+ const sourcePath = typeof flags['source-path'] === 'string' ? flags['source-path'] : undefined;
31
+ const since = typeof flags.since === 'string' ? flags.since : undefined;
32
+ const dryRun = flags['dry-run'] !== false;
33
+ const autoActivate = flags['auto-activate'] === true;
34
+ logger.info('Building CI publish plan', { sourcePath, since, dryRun, autoActivate });
35
+ const plan = await new SpecialDeploymentPlanService().buildPlan({
36
+ sourcePath,
37
+ since,
38
+ dryRun,
39
+ autoActivate,
40
+ });
41
+ this.reportPlan(plan);
42
+ return plan;
43
+ }
44
+ reportPlan(plan) {
45
+ this.log('Coordinated publish plan');
46
+ this.log(`Project: ${plan.projectRoot}`);
47
+ this.log(`Mode: ${plan.dryRun ? 'dry-run' : 'plan-only'}`);
48
+ if (plan.since) {
49
+ this.log(`Since: ${plan.since}`);
50
+ }
51
+ for (const phase of plan.phases) {
52
+ this.log('');
53
+ this.log(`${phase.label}${phase.skipped ? ' (skipped)' : ''}`);
54
+ if (phase.skipReason) {
55
+ this.log(` ${phase.skipReason}`);
56
+ }
57
+ for (const command of phase.commands) {
58
+ this.log(` ${command.tool} ${command.args.join(' ')}`);
59
+ }
60
+ }
61
+ if (plan.warnings.length > 0) {
62
+ this.log('');
63
+ for (const warning of plan.warnings) {
64
+ this.warn(warning);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=ci-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-publish.js","sourceRoot":"","sources":["../../src/commands/ci-publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { MetadataScannerService } from '../services/metadata-scanner-service.js';
2
+ export type SpecialDeploymentPhaseKind = 'core-metadata' | 'agentforce-publish' | 'agentforce-activate' | 'ai-evaluations' | 'community-publish' | 'omnistudio-vlocity';
3
+ export type SpecialDeploymentCommand = {
4
+ tool: 'sf' | 'vlocity';
5
+ args: string[];
6
+ reason: string;
7
+ };
8
+ export type SpecialDeploymentPhase = {
9
+ kind: SpecialDeploymentPhaseKind;
10
+ label: string;
11
+ components: string[];
12
+ excludedTypes?: string[];
13
+ changedPaths?: string[];
14
+ commands: SpecialDeploymentCommand[];
15
+ skipped: boolean;
16
+ skipReason?: string;
17
+ errors?: string[];
18
+ warnings?: string[];
19
+ };
20
+ export type SpecialDeploymentPlan = {
21
+ success: boolean;
22
+ projectRoot: string;
23
+ apiVersion: string;
24
+ since?: string;
25
+ dryRun: boolean;
26
+ autoActivate: boolean;
27
+ phases: SpecialDeploymentPhase[];
28
+ warnings: string[];
29
+ errors: string[];
30
+ };
31
+ export type SpecialDeploymentPlanOptions = {
32
+ sourcePath?: string;
33
+ since?: string;
34
+ dryRun?: boolean;
35
+ autoActivate?: boolean;
36
+ scanner?: Pick<MetadataScannerService, 'scan'>;
37
+ changedPathProvider?: (projectRoot: string, since?: string) => Promise<string[]>;
38
+ };
39
+ export declare class SpecialDeploymentPlanService {
40
+ buildPlan(options?: SpecialDeploymentPlanOptions): Promise<SpecialDeploymentPlan>;
41
+ }
@@ -0,0 +1,265 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { readFile } from 'node:fs/promises';
3
+ import * as path from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ import { XMLParser } from 'fast-xml-parser';
6
+ import { glob } from 'glob';
7
+ import { MetadataScannerService } from '../services/metadata-scanner-service.js';
8
+ const execFileAsync = promisify(execFile);
9
+ const CORE_EXCLUDED_TYPES = ['Bot', 'BotVersion', 'GenAiPlannerBundle', 'AiAuthoringBundle'];
10
+ export class SpecialDeploymentPlanService {
11
+ async buildPlan(options = {}) {
12
+ const scanner = options.scanner ?? new MetadataScannerService();
13
+ const scanResult = await scanner.scan({ sourcePath: options.sourcePath });
14
+ const projectRoot = scanResult.projectRoot;
15
+ const changedPathProvider = options.changedPathProvider ?? getChangedPaths;
16
+ const changedPaths = await changedPathProvider(projectRoot, options.since);
17
+ const context = {
18
+ projectRoot,
19
+ apiVersion: scanResult.apiVersion,
20
+ components: scanResult.components,
21
+ changedPaths,
22
+ since: options.since,
23
+ dryRun: options.dryRun ?? true,
24
+ autoActivate: options.autoActivate ?? false,
25
+ };
26
+ const providers = [
27
+ new CoreMetadataProvider(),
28
+ new AgentforcePublishProvider(),
29
+ new AgentforceActivationProvider(),
30
+ new AiEvaluationProvider(),
31
+ new CommunityPublishProvider(),
32
+ new OmniStudioVlocityProvider(),
33
+ ];
34
+ const phases = await Promise.all(providers.map(async (provider) => provider.plan(context)));
35
+ const phaseErrors = phases.flatMap((phase) => phase.errors ?? []);
36
+ const warnings = [...scanResult.warnings, ...phases.flatMap((phase) => phase.warnings ?? [])];
37
+ if (!context.dryRun) {
38
+ warnings.push('Execution is not implemented in this release slice; generated plan only.');
39
+ }
40
+ return {
41
+ success: scanResult.errors.length === 0 && phaseErrors.length === 0,
42
+ projectRoot,
43
+ apiVersion: scanResult.apiVersion,
44
+ since: options.since,
45
+ dryRun: context.dryRun,
46
+ autoActivate: context.autoActivate,
47
+ phases,
48
+ warnings,
49
+ errors: [...scanResult.errors, ...phaseErrors],
50
+ };
51
+ }
52
+ }
53
+ class CoreMetadataProvider {
54
+ async plan(context) {
55
+ const components = context.components
56
+ .filter((component) => !CORE_EXCLUDED_TYPES.includes(component.type))
57
+ .map(toComponentKey)
58
+ .sort();
59
+ return {
60
+ kind: 'core-metadata',
61
+ label: 'Phase 1: Core metadata deploy',
62
+ components,
63
+ excludedTypes: [...CORE_EXCLUDED_TYPES],
64
+ commands: [
65
+ {
66
+ tool: 'sf',
67
+ args: ['project', 'deploy', 'start', '--manifest', '<generated-core-manifest>'],
68
+ reason: 'Deploy regular Salesforce metadata after excluding lifecycle-owned provider artifacts.',
69
+ },
70
+ ],
71
+ skipped: components.length === 0,
72
+ skipReason: components.length === 0 ? 'No core metadata components detected.' : undefined,
73
+ };
74
+ }
75
+ }
76
+ class AgentforcePublishProvider {
77
+ async plan(context) {
78
+ const bundles = findChangedNames(context, /(?:^|\/)aiAuthoringBundles\/([^/]+)\//u);
79
+ return {
80
+ kind: 'agentforce-publish',
81
+ label: 'Phase 2: Agentforce authoring bundle publish',
82
+ components: bundles.map((name) => `AiAuthoringBundle:${name}`),
83
+ changedPaths: changedPathsFor(context.changedPaths, 'aiAuthoringBundles/'),
84
+ commands: bundles.map((name) => ({
85
+ tool: 'sf',
86
+ args: ['agent', 'publish', 'authoring-bundle', '-n', name, '--skip-retrieve'],
87
+ reason: 'Publish changed Agentforce authoring bundle without retrieving generated version artifacts.',
88
+ })),
89
+ skipped: bundles.length === 0,
90
+ skipReason: bundles.length === 0 ? 'No changed aiAuthoringBundles detected.' : undefined,
91
+ };
92
+ }
93
+ }
94
+ class AgentforceActivationProvider {
95
+ async plan(context) {
96
+ const bundles = context.autoActivate ? findChangedNames(context, /(?:^|\/)aiAuthoringBundles\/([^/]+)\//u) : [];
97
+ return {
98
+ kind: 'agentforce-activate',
99
+ label: 'Phase 3: Agentforce activation',
100
+ components: bundles.map((name) => `AiAuthoringBundle:${name}`),
101
+ changedPaths: changedPathsFor(context.changedPaths, 'aiAuthoringBundles/'),
102
+ commands: bundles.map((name) => ({
103
+ tool: 'sf',
104
+ args: ['agent', 'activate', '-n', name, '--version', '<published-version>'],
105
+ reason: 'Activate the newly published Agentforce version only when explicitly requested.',
106
+ })),
107
+ skipped: bundles.length === 0,
108
+ skipReason: context.autoActivate
109
+ ? 'No changed aiAuthoringBundles detected.'
110
+ : 'Activation is disabled by default.',
111
+ };
112
+ }
113
+ }
114
+ class AiEvaluationProvider {
115
+ async plan(context) {
116
+ const files = await glob('**/aiEvaluationDefinitions/**/*.xml', {
117
+ cwd: context.projectRoot,
118
+ nodir: true,
119
+ ignore: ['**/node_modules/**', '**/.git/**'],
120
+ });
121
+ const changedFiles = files.filter((file) => isChanged(context, file)).sort();
122
+ const sourceSubjects = new Set(context.components
123
+ .filter((component) => component.type === 'AiAuthoringBundle' || component.type === 'Bot')
124
+ .map((component) => component.name));
125
+ const precheckErrors = await findMissingEvaluationSubjects(context.projectRoot, changedFiles, sourceSubjects);
126
+ return {
127
+ kind: 'ai-evaluations',
128
+ label: 'Phase 4: AI evaluation metadata deploy',
129
+ components: changedFiles.map((file) => `AiEvaluationDefinition:${path.basename(file, '.xml')}`),
130
+ changedPaths: changedFiles,
131
+ commands: changedFiles.length > 0
132
+ ? [
133
+ {
134
+ tool: 'sf',
135
+ args: ['project', 'deploy', 'start', '--manifest', '<generated-ai-evaluation-manifest>'],
136
+ reason: 'Deploy AI evaluations after Agentforce bundle publish/precheck ordering.',
137
+ },
138
+ ]
139
+ : [],
140
+ skipped: changedFiles.length === 0,
141
+ skipReason: changedFiles.length === 0 ? 'No changed AiEvaluationDefinition files detected.' : undefined,
142
+ errors: precheckErrors,
143
+ warnings: changedFiles.length > 0
144
+ ? ['AiEvaluationDefinition target-org subject lookup is not executed in dry-run planning mode.']
145
+ : undefined,
146
+ };
147
+ }
148
+ }
149
+ class CommunityPublishProvider {
150
+ async plan(context) {
151
+ const sites = findChangedNames(context, /(?:^|\/)digitalExperiences\/site\/([^/]+)\//u);
152
+ return {
153
+ kind: 'community-publish',
154
+ label: 'Phase 5: Experience Cloud community publish',
155
+ components: sites.map((name) => `DigitalExperience:${name}`),
156
+ changedPaths: changedPathsFor(context.changedPaths, 'digitalExperiences/site/'),
157
+ commands: sites.map((name) => ({
158
+ tool: 'sf',
159
+ args: ['community', 'publish', '-n', name],
160
+ reason: 'Publish changed LWR site to register route/view bindings after metadata deployment.',
161
+ })),
162
+ skipped: sites.length === 0,
163
+ skipReason: sites.length === 0 ? 'No changed digitalExperiences/site directories detected.' : undefined,
164
+ };
165
+ }
166
+ }
167
+ class OmniStudioVlocityProvider {
168
+ omniPathPattern = /(?:^|\/)(vlocity|omnistudio|omniScripts|dataRaptors|integrationProcedures|flexCards)(?:\/|$)/iu;
169
+ async plan(context) {
170
+ const changedPaths = context.changedPaths.filter((filePath) => this.omniPathPattern.test(filePath)).sort();
171
+ return {
172
+ kind: 'omnistudio-vlocity',
173
+ label: 'Optional phase: OmniStudio managed-package DataPacks',
174
+ components: [...new Set(changedPaths.map((filePath) => firstPathSegment(filePath)))].sort(),
175
+ changedPaths,
176
+ commands: changedPaths.length > 0
177
+ ? [
178
+ {
179
+ tool: 'vlocity',
180
+ args: ['packDeploy', '--job', '<generated-vlocity-job.yaml>'],
181
+ reason: 'Deploy managed-package OmniStudio DataPacks outside Salesforce core metadata deploy.',
182
+ },
183
+ ]
184
+ : [],
185
+ skipped: changedPaths.length === 0,
186
+ skipReason: changedPaths.length === 0 ? 'No changed OmniStudio managed-package/DataPack paths detected.' : undefined,
187
+ };
188
+ }
189
+ }
190
+ async function getChangedPaths(projectRoot, since) {
191
+ if (!since) {
192
+ const files = await glob('**/*', {
193
+ cwd: projectRoot,
194
+ nodir: true,
195
+ ignore: ['**/node_modules/**', '**/.git/**', '**/lib/**'],
196
+ });
197
+ return files.sort();
198
+ }
199
+ const { stdout } = await execFileAsync('git', ['diff', '--name-only', since, 'HEAD', '--'], { cwd: projectRoot });
200
+ return stdout
201
+ .split(/\r?\n/u)
202
+ .map((line) => line.trim())
203
+ .filter(Boolean)
204
+ .sort();
205
+ }
206
+ function findChangedNames(context, pattern) {
207
+ const names = new Set();
208
+ for (const changedPath of context.changedPaths) {
209
+ const match = pattern.exec(normalizePath(changedPath));
210
+ if (match?.[1]) {
211
+ names.add(match[1]);
212
+ }
213
+ }
214
+ return [...names].sort();
215
+ }
216
+ function changedPathsFor(changedPaths, segment) {
217
+ return changedPaths.filter((changedPath) => normalizePath(changedPath).includes(segment)).sort();
218
+ }
219
+ function isChanged(context, filePath) {
220
+ if (!context.since) {
221
+ return true;
222
+ }
223
+ return context.changedPaths.includes(filePath);
224
+ }
225
+ function toComponentKey(component) {
226
+ return `${component.type}:${component.name}`;
227
+ }
228
+ function normalizePath(filePath) {
229
+ return filePath.split(path.sep).join('/');
230
+ }
231
+ function firstPathSegment(filePath) {
232
+ return normalizePath(filePath).split('/')[0] ?? filePath;
233
+ }
234
+ async function findMissingEvaluationSubjects(projectRoot, files, sourceSubjects) {
235
+ const parser = new XMLParser({ ignoreAttributes: false });
236
+ const errors = [];
237
+ for (const file of files) {
238
+ const absolutePath = path.join(projectRoot, file);
239
+ const content = await readFile(absolutePath, 'utf8');
240
+ const parsed = parser.parse(content);
241
+ const subjectName = findXmlValue(parsed, 'subjectName');
242
+ if (subjectName && !sourceSubjects.has(subjectName)) {
243
+ errors.push(`${file}: subjectName "${subjectName}" was not found in source Agentforce bundles or Bots.`);
244
+ }
245
+ }
246
+ return errors;
247
+ }
248
+ function findXmlValue(value, key) {
249
+ if (!value || typeof value !== 'object') {
250
+ return undefined;
251
+ }
252
+ const record = value;
253
+ const directValue = record[key];
254
+ if (typeof directValue === 'string') {
255
+ return directValue;
256
+ }
257
+ for (const nested of Object.values(record)) {
258
+ const found = findXmlValue(nested, key);
259
+ if (found) {
260
+ return found;
261
+ }
262
+ }
263
+ return undefined;
264
+ }
265
+ //# sourceMappingURL=special-deployment-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"special-deployment-plan.js","sourceRoot":"","sources":["../../src/deployment/special-deployment-plan.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@jterrats/smart-deployment",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@jterrats/smart-deployment",
9
- "version": "1.1.0",
9
+ "version": "1.2.1",
10
10
  "hasInstallScript": true,
11
11
  "license": "BSD-3-Clause",
12
12
  "dependencies": {
@@ -109,6 +109,76 @@
109
109
  "analyze"
110
110
  ]
111
111
  },
112
+ "ci-publish": {
113
+ "aliases": [],
114
+ "args": {},
115
+ "examples": [
116
+ "<%= config.bin %> <%= command.id %> --since origin/main --dry-run",
117
+ "<%= config.bin %> <%= command.id %> --source-path force-app --since HEAD~1 --json"
118
+ ],
119
+ "flags": {
120
+ "json": {
121
+ "description": "Format output as json.",
122
+ "helpGroup": "GLOBAL",
123
+ "name": "json",
124
+ "allowNo": false,
125
+ "type": "boolean"
126
+ },
127
+ "flags-dir": {
128
+ "helpGroup": "GLOBAL",
129
+ "name": "flags-dir",
130
+ "summary": "Import flag values from a directory.",
131
+ "hasDynamicHelp": false,
132
+ "multiple": false,
133
+ "type": "option"
134
+ },
135
+ "source-path": {
136
+ "name": "source-path",
137
+ "summary": "Path inside a Salesforce DX project to scan.",
138
+ "hasDynamicHelp": false,
139
+ "multiple": false,
140
+ "type": "option"
141
+ },
142
+ "since": {
143
+ "name": "since",
144
+ "summary": "Git revision used as the previous green deploy SHA for change detection.",
145
+ "hasDynamicHelp": false,
146
+ "multiple": false,
147
+ "type": "option"
148
+ },
149
+ "dry-run": {
150
+ "name": "dry-run",
151
+ "summary": "Print the coordinated publish plan without executing external commands.",
152
+ "allowNo": true,
153
+ "type": "boolean"
154
+ },
155
+ "auto-activate": {
156
+ "name": "auto-activate",
157
+ "summary": "Include Agentforce activation commands after authoring bundle publish.",
158
+ "allowNo": false,
159
+ "type": "boolean"
160
+ }
161
+ },
162
+ "hasDynamicHelp": false,
163
+ "hiddenAliases": [],
164
+ "id": "ci-publish",
165
+ "pluginAlias": "@jterrats/smart-deployment",
166
+ "pluginName": "@jterrats/smart-deployment",
167
+ "pluginType": "core",
168
+ "strict": true,
169
+ "summary": "Build a coordinated metadata, Agentforce, LWR, and OmniStudio publish plan for CI.",
170
+ "enableJsonFlag": true,
171
+ "isESM": true,
172
+ "relativePath": [
173
+ "lib",
174
+ "commands",
175
+ "ci-publish.js"
176
+ ],
177
+ "aliasPermutations": [],
178
+ "permutations": [
179
+ "ci-publish"
180
+ ]
181
+ },
112
182
  "config": {
113
183
  "aliases": [],
114
184
  "args": {},
@@ -585,5 +655,5 @@
585
655
  ]
586
656
  }
587
657
  },
588
- "version": "1.1.0"
658
+ "version": "1.2.1"
589
659
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jterrats/smart-deployment",
3
3
  "description": "Intelligent Salesforce metadata deployment plugin that automatically analyzes dependencies, generates optimal deployment",
4
- "version": "1.1.0",
4
+ "version": "1.2.1",
5
5
  "dependencies": {
6
6
  "@oclif/core": "4.11.2",
7
7
  "@salesforce/core": "^8.29.0",