n8nac 2.4.0-next.123 → 2.4.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 CHANGED
@@ -36,9 +36,8 @@ Full documentation: [CLI guide](https://n8nascode.dev/docs/usage/cli/) · [n8n-m
36
36
  | Group | Command | Purpose |
37
37
  |---|---|---|
38
38
  | Primary Usage | `n8nac env` | Workspace environments: remote n8n URL or local managed instance, project, workflowsPath, active environment |
39
- | Workspace Maintenance | `n8nac workspace` | Readiness and unified workspace migration |
39
+ | Workspace Inspection | `n8nac workspace` | V4 workspace snapshot |
40
40
  | Managed Local Instances | `n8n-manager` | Local managed instances, Docker lifecycle, tunnels, local secrets |
41
- | Hidden Compatibility | `instance-target`, `target`, `setup`, old `workspace` mutations | Compatibility only |
42
41
 
43
42
  ## Workspace Environments
44
43
 
@@ -74,18 +73,14 @@ n8nac env remove Dev
74
73
 
75
74
  Removing a workspace environment does not delete remote workflows, local workflow files, or local managed instances.
76
75
 
77
- ## Workspace Migration
78
-
79
- Inspect and apply required workspace migrations explicitly:
76
+ ## Readiness
80
77
 
81
78
  ```bash
82
- n8nac workspace migrate --json
83
- n8nac workspace migrate --write
84
- n8nac workspace migrate --json
85
79
  n8nac env status --json
80
+ n8nac workspace status --json
86
81
  ```
87
82
 
88
- Dry-run with `--json` first, then apply with `--write` after reviewing the unified `operations` list. Applied migrations create a backup before replacing `n8nac-config.json`.
83
+ Use `env status --json` as the source of truth for active environment readiness.
89
84
 
90
85
  ## Sync Commands
91
86
 
@@ -199,21 +194,6 @@ Current workspace config is environment-based:
199
194
 
200
195
  In config examples, `kind: "external-instance"` is the persisted target kind for a remote n8n URL. Do not store API keys in this file. Use `n8nac env auth set <env> --api-key-stdin` for remote n8n environments.
201
196
 
202
- ## Compatibility Commands
203
-
204
- These commands may still be callable for old workspaces or scripts, but they are not the primary CLI surface:
205
-
206
- ```bash
207
- n8nac instance-target ...
208
- n8nac target ...
209
- n8nac setup ...
210
- n8nac setup-modes ...
211
- n8nac workspace pin-instance ...
212
- n8nac workspace set-sync-folder ...
213
- ```
214
-
215
- Prefer `n8nac env` for all new workspace configuration.
216
-
217
197
  ## License
218
198
 
219
199
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,KAAK,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAKlG,qBAAa,WAAW;IACpB,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC7C,SAAS,CAAC,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;IAC5D,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,SAAS,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvD,OAAO,CAAC,eAAe,CAAS;;IA8GhC,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB3D;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;cAgD7B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtD,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAiCpD,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK;CASnE"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,KAAK,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAKlG,qBAAa,WAAW;IACpB,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC7C,SAAS,CAAC,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;IAC5D,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,SAAS,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvD,OAAO,CAAC,eAAe,CAAS;;IAiEhC,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB3D;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;cAwC7B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtD,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAiCpD,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK;CASnE"}
@@ -20,79 +20,33 @@ export class BaseCommand {
20
20
  let apiKey;
21
21
  let directory;
22
22
  let folderSync;
23
- let envCredentialsProvided = false;
24
- // If --env <name> was passed as a global option, resolve the workspace
25
- // environment; otherwise fall back to the locally active environment or legacy instance config.
23
+ // If --env <name> was passed as a global option, resolve that workspace
24
+ // environment; otherwise use the V4 active environment.
26
25
  const requestedEnvironment = process.env.N8NAC_ENVIRONMENT?.trim() || undefined;
27
- const requestedInstanceName = process.env.N8NAC_INSTANCE_NAME?.trim() || undefined;
28
- if (requestedInstanceName) {
29
- console.error(chalk.red('❌ Direct instance targeting is no longer supported by n8nac.'));
30
- console.error(chalk.yellow('Create a workspace environment with `n8nac env add <name> --base-url <url> --workflows-path workflows/<name>`, then use `--env <name>`.'));
26
+ const resolvedEnvironment = this.tryResolveEnvironment(requestedEnvironment);
27
+ if (!resolvedEnvironment) {
28
+ console.error(chalk.red('❌ CLI not configured.'));
29
+ console.error(chalk.yellow('Create a V4 workspace environment with `n8nac env add <name> --base-url <url> --workflows-path workflows/<name>` and store auth with `n8nac env auth set <name> --api-key-stdin`.'));
31
30
  process.exit(1);
32
31
  }
33
- const resolvedEnvironment = requestedEnvironment
34
- ? this.configService.resolveEnvironment(requestedEnvironment)
35
- : this.tryResolveEnvironment();
36
- if (resolvedEnvironment) {
37
- this.activeEnvironmentNameOrId = requestedEnvironment || resolvedEnvironment.environmentId;
38
- this.activeEnvironment = resolvedEnvironment;
39
- this.activeInstanceId = resolvedEnvironment.activeInstanceId;
40
- host = resolvedEnvironment.host || '';
41
- apiKey = resolvedEnvironment.apiKey || '';
42
- const effectiveContext = this.activeInstanceId
43
- ? (() => { try {
44
- return this.configService.getEffectiveContext(this.activeInstanceId);
45
- }
46
- catch {
47
- return undefined;
48
- } })()
49
- : undefined;
50
- const canPrepareRuntime = resolvedEnvironment.sourceKind === 'managed-instance'
51
- && (!host || !apiKey || effectiveContext?.instance.mode === 'managed-local-docker');
52
- if (!host || !apiKey) {
53
- if (!canPrepareRuntime) {
54
- console.error(chalk.red(`❌ Environment "${resolvedEnvironment.environmentName}" needs a host and API key before this command can run.`));
55
- console.error(chalk.yellow(`Configure a local API key with \`n8nac env auth set ${resolvedEnvironment.environmentName} --api-key-stdin\` or update the environment URL.`));
56
- process.exit(1);
57
- }
58
- apiKey = '';
32
+ this.activeEnvironmentNameOrId = requestedEnvironment || resolvedEnvironment.environmentId;
33
+ this.activeEnvironment = resolvedEnvironment;
34
+ this.activeInstanceId = resolvedEnvironment.activeInstanceId;
35
+ host = resolvedEnvironment.host || '';
36
+ apiKey = resolvedEnvironment.apiKey || '';
37
+ const canPrepareRuntime = resolvedEnvironment.sourceKind === 'managed-instance';
38
+ if (!host || !apiKey) {
39
+ if (!canPrepareRuntime) {
40
+ console.error(chalk.red(`❌ Environment "${resolvedEnvironment.environmentName}" needs a host and API key before this command can run.`));
41
+ console.error(chalk.yellow(`Configure a local API key with \`n8nac env auth set ${resolvedEnvironment.environmentName} --api-key-stdin\` or update the environment URL.`));
42
+ process.exit(1);
59
43
  }
60
- directory = resolvedEnvironment.workflowsPath || resolvedEnvironment.workflowDir || this.configService.resolveWorkspacePath('./workflows');
61
- folderSync = resolvedEnvironment.folderSync ?? false;
62
- this.instanceIdentifier = resolvedEnvironment.instanceIdentifier || null;
63
- this.instanceUserIdentifier = resolvedEnvironment.instanceUserIdentifier || null;
64
- }
65
- else {
66
- const localConfig = this.configService.getLocalConfig();
67
- this.activeInstanceId = this.configService.getActiveInstanceId();
68
- const effectiveContext = this.configService.getEffectiveContext(this.activeInstanceId);
69
- // Resolve host: explicit env override → backend-resolved config.
70
- const rawEnvHost = process.env.N8N_HOST;
71
- const envHost = rawEnvHost
72
- ? rawEnvHost.trim().replace(/^['"]|['"]$/g, '')
73
- : '';
74
- host = envHost || localConfig.host || '';
75
- // Resolve API key: explicit env override → backend-resolved secret.
76
- const rawEnvApiKey = process.env.N8N_API_KEY;
77
- const envApiKey = rawEnvApiKey
78
- ? rawEnvApiKey.trim().replace(/^['"]|['"]$/g, '')
79
- : '';
80
- envCredentialsProvided = Boolean(envHost && envApiKey);
81
- apiKey = envApiKey
82
- || (host ? this.configService.getApiKey(host, this.activeInstanceId) : undefined)
83
- || '';
84
- const canPrepareManagedRuntime = effectiveContext?.instance.mode === 'managed-local-docker' && Boolean(host);
85
- if (!host || !apiKey) {
86
- if (!canPrepareManagedRuntime) {
87
- console.error(chalk.red('❌ CLI not configured.'));
88
- console.error(chalk.yellow('Create a workspace environment with `n8nac env add <name> --base-url <url> --workflows-path workflows/<name>` and store auth with `n8nac env auth set <name> --api-key-stdin`.'));
89
- process.exit(1);
90
- }
91
- apiKey = '';
92
- }
93
- directory = this.configService.resolveWorkspacePath(localConfig.syncFolder || './workflows');
94
- folderSync = localConfig.folderSync ?? false;
44
+ apiKey = '';
95
45
  }
46
+ directory = resolvedEnvironment.workflowsPath;
47
+ folderSync = resolvedEnvironment.folderSync ?? false;
48
+ this.instanceIdentifier = resolvedEnvironment.instanceIdentifier || null;
49
+ this.instanceUserIdentifier = resolvedEnvironment.instanceUserIdentifier || null;
96
50
  this.client = new N8nApiClient({ host, apiKey });
97
51
  this.config = {
98
52
  directory,
@@ -102,7 +56,7 @@ export class BaseCommand {
102
56
  apiKeyConfigured: Boolean(apiKey),
103
57
  folderSync,
104
58
  };
105
- this.runtimePrepared = envCredentialsProvided && !this.activeEnvironmentNameOrId;
59
+ this.runtimePrepared = false;
106
60
  // Silently refresh AGENTS.md in the background if the installed n8nac version changed.
107
61
  // Spawned as a fully-detached child process so it never blocks the command, never
108
62
  // interleaves with stdout, and can't be killed by an early process.exit().
@@ -118,12 +72,12 @@ export class BaseCommand {
118
72
  }
119
73
  catch { /* never block the command */ }
120
74
  }
121
- tryResolveEnvironment() {
75
+ tryResolveEnvironment(environmentNameOrId) {
122
76
  if (!this.configService.isWorkspaceConfigV4()) {
123
77
  return undefined;
124
78
  }
125
79
  try {
126
- return this.configService.resolveEnvironment();
80
+ return this.configService.resolveEnvironment(environmentNameOrId);
127
81
  }
128
82
  catch (error) {
129
83
  console.error(chalk.red(`❌ Workspace environment resolution failed: ${error?.message || error}`));
@@ -156,17 +110,13 @@ export class BaseCommand {
156
110
  async getSyncConfig() {
157
111
  await this.prepareRuntimeContext();
158
112
  const instanceIdentifier = await this.ensureInstanceIdentifier();
159
- const localConfig = this.activeEnvironmentNameOrId
160
- ? (this.activeEnvironment || this.configService.getLocalConfig(this.activeEnvironmentNameOrId))
161
- : this.activeInstanceId
162
- ? (this.configService.getEffectiveInstanceConfig(this.activeInstanceId) ?? this.configService.getLocalConfig())
163
- : this.configService.getLocalConfig();
113
+ const localConfig = this.activeEnvironment || this.configService.getLocalConfig(this.activeEnvironmentNameOrId);
164
114
  const missing = [];
165
115
  if (!localConfig.projectId)
166
116
  missing.push('projectId');
167
117
  if (!localConfig.projectName)
168
118
  missing.push('projectName');
169
- if (!localConfig.workflowsPath && !localConfig.workflowDir && !localConfig.syncFolder)
119
+ if (!localConfig.workflowsPath)
170
120
  missing.push('workflowsPath');
171
121
  if (missing.length > 0) {
172
122
  console.error(chalk.red(`❌ Missing required project configuration: ${missing.join(', ')}.`));
@@ -177,14 +127,10 @@ export class BaseCommand {
177
127
  directory: this.config.directory,
178
128
  workflowsPath: localConfig.workflowsPath
179
129
  ? this.configService.resolveWorkspacePath(localConfig.workflowsPath)
180
- : localConfig.workflowDir
181
- ? this.configService.resolveWorkspacePath(localConfig.workflowDir)
182
- : undefined,
130
+ : undefined,
183
131
  workflowDir: localConfig.workflowsPath
184
132
  ? this.configService.resolveWorkspacePath(localConfig.workflowsPath)
185
- : localConfig.workflowDir
186
- ? this.configService.resolveWorkspacePath(localConfig.workflowDir)
187
- : undefined,
133
+ : undefined,
188
134
  syncInactive: true,
189
135
  ignoredTags: [],
190
136
  instanceIdentifier: instanceIdentifier,
@@ -204,14 +150,14 @@ export class BaseCommand {
204
150
  if (this.runtimePrepared) {
205
151
  return;
206
152
  }
153
+ if (process.env.N8NAC_TEST_SKIP_RUNTIME_PREPARE === '1') {
154
+ this.runtimePrepared = true;
155
+ return;
156
+ }
207
157
  try {
208
158
  const environment = this.activeEnvironmentNameOrId;
209
- const preparedEnvironment = environment
210
- ? await this.configService.prepareEnvironment(environment)
211
- : undefined;
212
- const context = preparedEnvironment
213
- ? await this.configService.prepareWorkspaceContext({ environment })
214
- : await this.configService.prepareWorkspaceContext(this.activeInstanceId);
159
+ const preparedEnvironment = await this.configService.prepareEnvironment(environment);
160
+ const context = await this.configService.prepareWorkspaceContext({ environment });
215
161
  if (!context.host || !context.apiKey) {
216
162
  this.exitWithError(`Instance "${context.activeInstanceName}" needs a host and API key before this command can run`);
217
163
  }
@@ -222,7 +168,7 @@ export class BaseCommand {
222
168
  this.client = new N8nApiClient({ host: context.host, apiKey: context.apiKey });
223
169
  this.config = {
224
170
  ...this.config,
225
- directory: this.configService.resolveWorkspacePath(context.workflowsPath || context.workflowDir || context.syncFolder || './workflows'),
171
+ directory: this.configService.resolveWorkspacePath(context.workflowsPath),
226
172
  host: context.host,
227
173
  apiKeyConfigured: true,
228
174
  folderSync: context.folderSync ?? false,
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/commands/base.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface PromotionSubstitution {
18
18
  fromName?: string;
19
19
  toId?: string;
20
20
  toName?: string;
21
- status: 'mapped' | 'pending-create' | 'unchanged';
21
+ status: 'mapped' | 'pending-create' | 'unchanged' | 'omitted';
22
22
  }
23
23
  export interface PromotionProblem {
24
24
  kind: 'credential' | 'workflow' | 'target-file';
@@ -76,6 +76,8 @@ export interface CredentialMappingPromptContext {
76
76
  export type CredentialMappingPromptAnswer = {
77
77
  action: 'map';
78
78
  credential: Record<string, unknown>;
79
+ } | {
80
+ action: 'omit';
79
81
  } | {
80
82
  action: 'skip';
81
83
  } | {
@@ -114,8 +116,12 @@ export declare class PromoteCommand {
114
116
  private getTargetCredentialsByType;
115
117
  private askCredentialMapping;
116
118
  private resolveCredentialBindingReference;
119
+ private resolveCredentialFromInput;
117
120
  private credentialBindingKey;
118
121
  private parseCredentialBindingKey;
122
+ private getCredentialId;
123
+ private getCredentialName;
124
+ private getCredentialType;
119
125
  private remapWorkflowReferences;
120
126
  private resolveWorkflowReference;
121
127
  private ensureTargetWorkflowIndexes;
@@ -1 +1 @@
1
- {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"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"}
@@ -306,6 +306,23 @@ export class PromoteCommand {
306
306
  for (const [credentialType, credentialRef] of Object.entries(node.credentials)) {
307
307
  const sourceId = String(credentialRef?.id ?? '').trim();
308
308
  const sourceName = String(credentialRef?.name ?? '').trim();
309
+ const sourceBindingName = sourceName || sourceId;
310
+ const sourceBindingKey = sourceBindingName ? this.credentialBindingKey(sourceBindingName, credentialType) : undefined;
311
+ if (sourceBindingKey && indexes.omittedCredentialBindings?.has(sourceBindingKey)) {
312
+ delete node.credentials[credentialType];
313
+ if (Object.keys(node.credentials).length === 0)
314
+ delete node.credentials;
315
+ substitutions.push({
316
+ kind: 'credential',
317
+ nodeName: node.name,
318
+ field: credentialType,
319
+ fromId: sourceId || undefined,
320
+ fromName: sourceName || undefined,
321
+ toName: 'omitted',
322
+ status: 'omitted',
323
+ });
324
+ continue;
325
+ }
309
326
  const targetCredential = await this.resolveTargetCredential(target, route, indexes, credentialType, sourceId, sourceName);
310
327
  if (!targetCredential) {
311
328
  problems.push({
@@ -319,12 +336,10 @@ export class PromoteCommand {
319
336
  });
320
337
  continue;
321
338
  }
322
- const targetId = String(targetCredential.id ?? '').trim();
323
- const targetName = String(targetCredential.name ?? '').trim();
339
+ const targetId = this.getCredentialId(targetCredential);
340
+ const targetName = this.getCredentialName(targetCredential);
324
341
  node.credentials[credentialType] = { id: targetId, name: targetName };
325
- const sourceBindingName = sourceName || sourceId;
326
342
  if (sourceBindingName && targetName) {
327
- const sourceBindingKey = this.credentialBindingKey(sourceBindingName, credentialType);
328
343
  route.bindings.credentials[sourceBindingKey] ??= this.credentialBindingKey(targetName, credentialType);
329
344
  }
330
345
  substitutions.push({
@@ -394,9 +409,15 @@ export class PromoteCommand {
394
409
  return 'aborted';
395
410
  if (answer.action === 'skip')
396
411
  continue;
397
- const targetName = String(answer.credential.name ?? '').trim();
398
- const targetType = String(answer.credential.type ?? '').trim();
399
- const targetId = String(answer.credential.id ?? '').trim();
412
+ if (answer.action === 'omit') {
413
+ indexes.omittedCredentialBindings ??= new Set();
414
+ indexes.omittedCredentialBindings.add(this.credentialBindingKey(candidate.sourceName, candidate.credentialType));
415
+ mapped = true;
416
+ continue;
417
+ }
418
+ const targetName = this.getCredentialName(answer.credential);
419
+ const targetType = this.getCredentialType(answer.credential);
420
+ const targetId = this.getCredentialId(answer.credential);
400
421
  if (!targetName || targetType !== candidate.credentialType)
401
422
  continue;
402
423
  route.bindings.credentials[this.credentialBindingKey(candidate.sourceName, candidate.credentialType)] = targetId || this.credentialBindingKey(targetName, targetType);
@@ -439,9 +460,9 @@ export class PromoteCommand {
439
460
  });
440
461
  }
441
462
  getTargetCredentialsByType(indexes, credentialType) {
442
- return Array.from(indexes.targetCredentialsById?.values() ?? [])
443
- .filter((credential) => String(credential.type ?? '').trim() === credentialType)
444
- .sort((a, b) => String(a.name ?? '').localeCompare(String(b.name ?? '')));
463
+ return (indexes.targetCredentials ?? [])
464
+ .filter((credential) => this.getCredentialType(credential) === credentialType)
465
+ .sort((a, b) => this.getCredentialName(a).localeCompare(this.getCredentialName(b)));
445
466
  }
446
467
  async askCredentialMapping(candidate, targetCredentials, context) {
447
468
  if (this.dependencies.promptCredentialMapping) {
@@ -449,21 +470,36 @@ export class PromoteCommand {
449
470
  }
450
471
  const { default: inquirer } = await import('inquirer');
451
472
  const choices = targetCredentials.map((credential, index) => ({
452
- name: `${String(credential.name ?? 'Unnamed credential')} (${String(credential.id ?? 'no id')})`,
473
+ name: `${this.getCredentialName(credential) || 'Unnamed credential'} (${this.getCredentialId(credential) || 'no id'})`,
453
474
  value: `map:${index}`,
454
475
  }));
455
- choices.push({ name: 'Skip this credential', value: 'skip' }, { name: 'Abort promotion', value: 'abort' });
456
- const nodeLabel = candidate.nodeNames.length > 0 ? ` used by ${candidate.nodeNames.join(', ')}` : '';
476
+ choices.push({ name: 'Enter credential name or ID manually', value: 'manual' }, { name: 'Promote without this credential', value: 'omit' }, { name: 'Skip (promotion will fail)', value: 'skip' }, { name: 'Abort promotion', value: 'abort' });
477
+ const nodeLabel = candidate.nodeNames.length > 0 ? ` used by node ${candidate.nodeNames.join(', ')}` : '';
457
478
  const answer = await inquirer.prompt([{
458
- type: 'list',
479
+ type: 'select',
459
480
  name: 'selection',
460
- message: `Map "${candidate.sourceName}" (${candidate.credentialType})${nodeLabel} in ${context.targetEnvironmentName}`,
481
+ message: `Select target ${candidate.credentialType} credential for source credential "${candidate.sourceName}"${nodeLabel} in ${context.targetEnvironmentName}`,
461
482
  choices,
462
483
  }]);
463
484
  if (answer.selection === 'abort')
464
485
  return { action: 'abort' };
465
486
  if (answer.selection === 'skip')
466
487
  return { action: 'skip' };
488
+ if (answer.selection === 'omit')
489
+ return { action: 'omit' };
490
+ if (answer.selection === 'manual') {
491
+ const manual = await inquirer.prompt([{
492
+ type: 'input',
493
+ name: 'reference',
494
+ message: `Target credential name or ID for "${candidate.sourceName}" (${candidate.credentialType})`,
495
+ }]);
496
+ const credential = this.resolveCredentialFromInput(manual.reference, candidate.credentialType, targetCredentials);
497
+ if (!credential) {
498
+ console.log(chalk.yellow(`No ${candidate.credentialType} credential matched "${manual.reference}".`));
499
+ return { action: 'skip' };
500
+ }
501
+ return { action: 'map', credential };
502
+ }
467
503
  const index = Number(answer.selection.replace(/^map:/, ''));
468
504
  const credential = targetCredentials[index];
469
505
  return credential ? { action: 'map', credential } : { action: 'skip' };
@@ -474,10 +510,34 @@ export class PromoteCommand {
474
510
  const byId = indexes.targetCredentialsById.get(boundRef);
475
511
  if (byId)
476
512
  return byId;
513
+ const byName = unique(indexes.targetCredentialsByKey.get(`${credentialType}::${boundRef}`));
514
+ if (byName)
515
+ return byName;
477
516
  const parsed = this.parseCredentialBindingKey(boundRef);
517
+ if (parsed) {
518
+ if (parsed.type !== credentialType)
519
+ return undefined;
520
+ return unique(indexes.targetCredentialsByKey.get(`${parsed.type}::${parsed.name}`));
521
+ }
522
+ return undefined;
523
+ }
524
+ resolveCredentialFromInput(reference, credentialType, targetCredentials) {
525
+ const value = String(reference ?? '').trim();
526
+ if (!value)
527
+ return undefined;
528
+ const idMatch = targetCredentials.find((credential) => this.getCredentialId(credential) === value &&
529
+ this.getCredentialType(credential) === credentialType);
530
+ if (idMatch)
531
+ return idMatch;
532
+ const nameMatch = unique(targetCredentials.filter((credential) => this.getCredentialName(credential) === value &&
533
+ this.getCredentialType(credential) === credentialType));
534
+ if (nameMatch)
535
+ return nameMatch;
536
+ const parsed = this.parseCredentialBindingKey(value);
478
537
  if (!parsed || parsed.type !== credentialType)
479
538
  return undefined;
480
- return unique(indexes.targetCredentialsByKey.get(`${parsed.type}::${parsed.name}`));
539
+ return unique(targetCredentials.filter((credential) => this.getCredentialName(credential) === parsed.name &&
540
+ this.getCredentialType(credential) === credentialType));
481
541
  }
482
542
  credentialBindingKey(name, credentialType) {
483
543
  return `${name}:${credentialType}`;
@@ -491,6 +551,15 @@ export class PromoteCommand {
491
551
  type: value.slice(delimiterIndex + 1),
492
552
  };
493
553
  }
554
+ getCredentialId(credential) {
555
+ return String(credential.id ?? credential.credentialId ?? '').trim();
556
+ }
557
+ getCredentialName(credential) {
558
+ return String(credential.name ?? '').trim();
559
+ }
560
+ getCredentialType(credential) {
561
+ return String(credential.type ?? credential.credentialType ?? credential.credentialTypeName ?? '').trim();
562
+ }
494
563
  async remapWorkflowReferences(node, target, route, indexes, substitutions, problems, pendingWorkflowSourceKeys) {
495
564
  const nodeType = String(node.type ?? '').toLowerCase().split('.').pop();
496
565
  if (nodeType !== EXECUTE_WORKFLOW_TYPE_SUFFIX)
@@ -570,11 +639,17 @@ export class PromoteCommand {
570
639
  if (indexes.targetCredentialsById && indexes.targetCredentialsByKey)
571
640
  return;
572
641
  const credentials = await this.getTargetCredentials(target);
573
- indexes.targetCredentialsById = new Map(credentials.map((credential) => [String(credential.id ?? ''), credential]));
642
+ indexes.targetCredentials = credentials;
643
+ indexes.targetCredentialsById = new Map();
574
644
  indexes.targetCredentialsByKey = new Map();
575
645
  for (const credential of credentials) {
576
- const type = String(credential.type ?? '').trim();
577
- const name = String(credential.name ?? '').trim();
646
+ const id = this.getCredentialId(credential);
647
+ if (id)
648
+ indexes.targetCredentialsById.set(id, credential);
649
+ const type = this.getCredentialType(credential);
650
+ const name = this.getCredentialName(credential);
651
+ if (!type || !name)
652
+ continue;
578
653
  const key = `${type}::${name}`;
579
654
  const existing = indexes.targetCredentialsByKey.get(key) ?? [];
580
655
  existing.push(credential);