n8nac 2.0.4-next.7 → 2.1.0-next.45

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.
Files changed (36) hide show
  1. package/README.md +108 -131
  2. package/dist/commands/base.d.ts +4 -1
  3. package/dist/commands/base.d.ts.map +1 -1
  4. package/dist/commands/base.js +76 -34
  5. package/dist/commands/base.js.map +1 -1
  6. package/dist/commands/promote.d.ts +38 -0
  7. package/dist/commands/promote.d.ts.map +1 -0
  8. package/dist/commands/promote.js +181 -0
  9. package/dist/commands/promote.js.map +1 -0
  10. package/dist/commands/update-ai.d.ts.map +1 -1
  11. package/dist/commands/update-ai.js +9 -5
  12. package/dist/commands/update-ai.js.map +1 -1
  13. package/dist/commands/workflow.d.ts +8 -0
  14. package/dist/commands/workflow.d.ts.map +1 -1
  15. package/dist/commands/workflow.js +82 -0
  16. package/dist/commands/workflow.js.map +1 -1
  17. package/dist/core/services/n8n-api-client.d.ts.map +1 -1
  18. package/dist/core/services/n8n-api-client.js +23 -9
  19. package/dist/core/services/n8n-api-client.js.map +1 -1
  20. package/dist/core/types.d.ts +6 -0
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/index.js +491 -34
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib.d.ts +2 -1
  25. package/dist/lib.d.ts.map +1 -1
  26. package/dist/lib.js +1 -0
  27. package/dist/lib.js.map +1 -1
  28. package/dist/services/config-service.d.ts +344 -3
  29. package/dist/services/config-service.d.ts.map +1 -1
  30. package/dist/services/config-service.js +1545 -13
  31. package/dist/services/config-service.js.map +1 -1
  32. package/dist/services/workspace-migration-facade.d.ts +21 -0
  33. package/dist/services/workspace-migration-facade.d.ts.map +1 -0
  34. package/dist/services/workspace-migration-facade.js +28 -0
  35. package/dist/services/workspace-migration-facade.js.map +1 -0
  36. package/package.json +3 -3
package/README.md CHANGED
@@ -1,39 +1,29 @@
1
1
  # <img src="https://raw.githubusercontent.com/EtienneLescot/n8n-as-code/main/res/logo.png" alt="n8n-as-code logo" width="32" height="32"> n8nac
2
2
 
3
- The main command-line interface for the **n8n-as-code** ecosystem. Manage, synchronize, and version-control your n8n workflows as TypeScript files.
3
+ The command-line interface for n8n-as-code. Use it to define workspace environments, sync workflows, validate changes, generate AI context, and automate CI flows.
4
4
 
5
- > This package also embeds the synchronization engine and exposes it as a library for the VS Code extension. It includes a `skills` subcommand group that forwards to `@n8n-as-code/skills` for AI agent tooling.
5
+ `n8nac` does not own local Docker instances or tunnels. Those are managed by `n8n-manager`.
6
6
 
7
7
  ## Installation
8
8
 
9
- No installation required — run directly with npx:
10
-
11
- ```bash
12
- npx n8nac <command>
13
- ```
14
-
15
- For CI, scripts, and AI agents, prefer `npx --yes` to avoid interactive install prompts:
16
-
17
9
  ```bash
18
10
  npx --yes n8nac <command>
19
11
  ```
20
12
 
21
- If you need fully repeatable automation, pin an explicit package version instead of relying on whatever `npx` resolves that day:
13
+ For repeatable automation, pin a version:
22
14
 
23
15
  ```bash
24
- npx --yes n8nac@1.8.0 <command>
16
+ npx --yes n8nac@<version> <command>
25
17
  ```
26
18
 
27
- For prerelease testing, use the `next` npm dist-tag consistently with any prerelease plugin or generated agent instructions:
19
+ For prerelease testing, keep every entry point on the same tag:
28
20
 
29
21
  ```bash
30
22
  npx --yes n8nac@next <command>
31
23
  npx --yes @n8n-as-code/n8n-manager@next <command>
32
24
  ```
33
25
 
34
- Do not use `npx --yes n8nac` for a workspace whose plugin or `AGENTS.md` was generated from the `next` branch; that resolves npm `latest` and may expose older stable commands.
35
-
36
- Or install globally if you prefer:
26
+ Global install is optional:
37
27
 
38
28
  ```bash
39
29
  npm install -g n8nac
@@ -41,181 +31,168 @@ npm install -g n8nac
41
31
 
42
32
  Full documentation: [CLI guide](https://n8nascode.dev/docs/usage/cli/) · [n8n-manager guide](https://n8nascode.dev/docs/usage/n8n-manager/)
43
33
 
44
- ## Commands
34
+ ## Command Model
45
35
 
46
- ### v2 migration note
36
+ | Group | Command | Purpose |
37
+ |---|---|---|
38
+ | Usage Principal | `n8nac env` | Workspace environments: n8n URL or managed instance, project, sync folder, active environment |
39
+ | Maintenance Workspace | `n8nac workspace` | Readiness, unified migration, upgrade |
40
+ | Instances Managées | `n8n-manager` | Local managed instances, Docker lifecycle, tunnels, local secrets |
41
+ | Compat Cachée | `instance-target`, `target`, `setup`, old `workspace` mutations | Compatibility only |
47
42
 
48
- Version 2 moves runtime ownership out of workspace-local `n8nac-config.json` instance libraries and into the global `n8n-manager` store. The legacy `init`, `switch`, and `instance` command flows are replaced by `n8n-manager` for instance/auth/project state and `n8nac workspace` for explicit workspace overrides.
43
+ ## Workspace Environments
49
44
 
50
- ### Runtime setup
51
- `n8nac` does not manage n8n instances or API keys. Use `n8n-manager` for global n8n runtime state, then use `n8nac workspace` for local workspace overrides.
45
+ Create an environment for an existing n8n URL:
52
46
 
53
47
  ```bash
54
- n8n-manager auth set --url http://localhost:5678 --api-key-stdin
55
- n8n-manager projects list
56
- n8n-manager projects select <project-id-or-name>
57
- n8nac workspace set-sync-folder workflows
58
- n8nac update-ai
48
+ n8nac env add Dev --base-url https://n8n.example.com --sync-folder workflows/dev
49
+ printf '%s' "$N8N_API_KEY" | n8nac env auth set Dev --api-key-stdin
50
+ n8nac env use Dev
59
51
  ```
60
52
 
61
- If a repository should always use a specific registered instance, pin it locally after listing the global instances:
53
+ Create an environment from a local managed instance:
62
54
 
63
55
  ```bash
64
- n8n-manager instances list
65
- n8nac workspace pin-instance --instance-id <instanceId>
66
- n8nac workspace status --json
56
+ n8n-manager instance list
57
+ n8nac env add Local --managed-instance <id> --sync-folder workflows/local
58
+ n8nac env use Local
67
59
  ```
68
60
 
69
- ---
70
-
71
- ### `workspace`
72
- Manage explicit workspace overrides over the global n8n-manager defaults.
61
+ Inspect environments:
73
62
 
74
63
  ```bash
75
- n8nac workspace status --json
76
- n8nac workspace pin-instance --instance-id <instanceId>
77
- n8nac workspace clear-instance
78
- n8nac workspace set-sync-folder workflows
79
- n8nac workspace clear-sync-folder
80
- n8nac workspace set-project --project-id <id> --project-name <name>
81
- n8nac workspace clear-project
64
+ n8nac env list
65
+ n8nac env status
66
+ n8nac workspace status
82
67
  ```
83
68
 
84
- The workspace config stays minimal: project selection, optional pinned instance, optional sync folder override, and related workflow settings. It does not store an instance library or API keys.
85
-
86
- Project defaults are selected with `n8n-manager projects select`. Workspace-specific project overrides use `n8nac workspace set-project`.
87
-
88
- Effective context is resolved in this order: explicit command options, workspace overrides from `n8nac-config.json`, then global `n8n-manager` defaults.
89
-
90
- ---
91
-
92
- ### `list`
93
- Display workflow status in a git-like model. By default shows combined local and remote workflows.
69
+ Remove an environment mapping:
94
70
 
95
71
  ```bash
96
- n8nac list # Combined view (default)
97
- n8nac list --local # Show only local workflows
98
- n8nac list --remote # Show only remote workflows (alias: --distant)
99
- n8nac list --search billing # Filter by partial name, ID, or filename
100
- n8nac list --sort name # Strict alphabetical sorting
101
- n8nac find billing --limit 5 # Search-oriented shortcut
72
+ n8nac env remove Dev
102
73
  ```
103
74
 
104
- Output columns: `Status` · `ID` · `Name` · `Local Path`
105
-
106
- Search and filter options:
75
+ Removing an environment does not delete remote workflows, local workflow files, or local managed instances.
107
76
 
108
- - `--search <query>`: case-insensitive partial match against workflow name, ID, or local filename
109
- - `--sort <status|name>`: keep the default sync-oriented status ordering, or switch to alphabetical name sorting
110
- - `--limit <n>`: cap the number of results returned
111
- - `--raw`: output the filtered result set as JSON for scripts and pipes
77
+ ## Migration And Upgrade
112
78
 
113
- Status values:
114
-
115
- | Status | Meaning | Action |
116
- |---|---|---|
117
- | `TRACKED` | Workflow exists on both sides, in sync | Nothing to do |
118
- | `CONFLICT` | Both sides changed — detected at push/pull time | `n8nac resolve <id> --mode keep-current` (keep local) or `keep-incoming` (keep remote) |
119
- | `EXIST_ONLY_LOCALLY` | New local file not yet in n8n (or remote was deleted) | `n8nac push <file>` |
120
- | `EXIST_ONLY_REMOTELY` | Remote workflow not yet local (or local was deleted) | `n8nac pull <workflowId>` to download |
121
-
122
- > **Git-like sync**: Status is a point-in-time observation. `n8nac` refreshes the remote state it needs under the hood.
123
- > **For agents**: always run `n8nac list` first to get workflow IDs and their current status before pulling or pushing.
124
-
125
- ---
126
-
127
- ### `pull <workflowId>`
128
- Download a single workflow from n8n and overwrite the local file.
79
+ Legacy V1/V2 config:
129
80
 
130
81
  ```bash
131
- n8nac pull <workflowId>
82
+ n8nac workspace migrate --json
83
+ n8nac workspace migrate --write
84
+ n8nac workspace migrate --json
85
+ n8nac env status --json
132
86
  ```
133
87
 
134
- > Recommended for agents and scripts. Targets exactly one workflow.
135
-
136
- ---
137
-
138
- ### `push`
139
- Upload a single local workflow file to n8n.
88
+ Previous V3/`next` config model:
140
89
 
141
90
  ```bash
142
- n8nac push workflows/etiennel_cloud_etienne_l/personal/my-workflow.workflow.ts
91
+ n8nac workspace upgrade
92
+ n8nac workspace upgrade --write
143
93
  ```
144
94
 
145
- > Provide the relative path to the workflow file. The file **must** reside within the active sync scope defined by your configuration. Any path outside this scope will be rejected for safety.
146
- > The path is the local entry point; the workflow ID remains the remote source of truth.
147
-
148
- ---
95
+ 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`.
149
96
 
150
- ### `resolve <id> --mode <mode>`
151
- Explicitly resolve a conflict for a specific workflow.
97
+ ## Sync Commands
152
98
 
153
99
  ```bash
154
- n8nac resolve <id> --mode keep-current # Force-push local version
155
- n8nac resolve <id> --mode keep-incoming # Force-pull remote version
100
+ n8nac list
101
+ n8nac pull <workflow-id>
102
+ n8nac push workflows/dev/my-workflow.workflow.ts --verify
103
+ n8nac resolve <workflow-id> --mode keep-current
104
+ n8nac resolve <workflow-id> --mode keep-incoming
156
105
  ```
157
106
 
158
- ---
107
+ Sync is Git-like and explicit. `pull` and `push` block on conflicts instead of silently overwriting work.
159
108
 
160
- ### `update-ai`
161
- Generate or refresh AI context files in the project root. This command creates `AGENTS.md` and VS Code snippets.
109
+ ## Workflow Helpers
162
110
 
163
111
  ```bash
164
- n8nac update-ai
165
- # or equivalently:
166
- n8nac skills update-ai
112
+ n8nac verify <workflow-id>
113
+ n8nac workflow credential-required <workflow-id> --json
114
+ n8nac workflow activate <workflow-id>
115
+ n8nac test-plan <workflow-id> --json
116
+ n8nac test <workflow-id> --data '{"foo":"bar"}'
117
+ n8nac execution list --workflow-id <workflow-id> --limit 5 --json
118
+ n8nac execution get <execution-id> --include-data --json
167
119
  ```
168
120
 
169
- AI tooling commands are available as `n8nac skills <command>` — powered by `@n8n-as-code/skills`. Run via npx (no global install needed):
121
+ Credential readiness helpers are exposed through the facade:
170
122
 
171
123
  ```bash
172
- npx n8nac skills --help
173
- npx n8nac skills search "google sheets"
174
- npx n8nac skills node-info googleSheets
124
+ n8nac credentials recipes
125
+ n8nac credentials starter-kits
126
+ n8nac credentials inventory --json
127
+ n8nac credentials ensure http-bearer --value token=... --json
128
+ n8nac credentials test http-bearer --json
175
129
  ```
176
130
 
177
- ---
178
-
179
- ### `convert`
180
- Convert a single workflow between JSON and TypeScript formats.
131
+ ## AI Context And Skills
181
132
 
182
133
  ```bash
183
- n8nac convert <file>
184
- n8nac convert my-workflow.json --format typescript
185
- n8nac convert my-workflow.workflow.ts --format json
134
+ n8nac update-ai
135
+ n8nac skills search "google sheets"
136
+ n8nac skills node-info googleSheets
137
+ n8nac skills validate workflows/dev/my-workflow.workflow.ts
186
138
  ```
187
139
 
188
- ### `convert-batch`
189
- Batch-convert all workflows in a directory.
140
+ `update-ai` refreshes `AGENTS.md`, VS Code agent files, portable skill copies, snippets, and schema context used by local agents.
141
+
142
+ ## Conversion
190
143
 
191
144
  ```bash
145
+ n8nac convert workflow.json --format typescript
146
+ n8nac convert workflow.workflow.ts --format json
192
147
  n8nac convert-batch workflows/ --format typescript
193
148
  ```
194
149
 
195
- ---
150
+ ## Configuration File
196
151
 
197
- ## 🤖 Agent workflow
152
+ Current workspace config is environment-based:
198
153
 
199
- The intended flow for an AI agent editing a workflow:
154
+ ```json
155
+ {
156
+ "version": 4,
157
+ "activeEnvironmentId": "dev",
158
+ "environments": [
159
+ {
160
+ "id": "dev",
161
+ "name": "Dev",
162
+ "environmentTargetId": "dev",
163
+ "projectId": "personal",
164
+ "projectName": "Personal",
165
+ "syncFolder": "workflows/dev"
166
+ }
167
+ ],
168
+ "environmentTargets": [
169
+ {
170
+ "id": "dev",
171
+ "name": "Dev",
172
+ "kind": "external-instance",
173
+ "url": "https://n8n.example.com"
174
+ }
175
+ ]
176
+ }
177
+ ```
200
178
 
201
- ```bash
202
- # 1. Fetch current state and get workflow IDs
203
- n8nac list
179
+ Do not store API keys in this file. Use `n8nac env auth set <env> --api-key-stdin` for remote environments.
204
180
 
205
- # 2. Pull the target workflow
206
- n8nac pull <workflowId>
181
+ ## Compatibility Commands
207
182
 
208
- # 3. Edit the local .workflow.ts file
183
+ These commands may still be callable for old workspaces or scripts, but they are not the primary CLI surface:
209
184
 
210
- # 4. Push it back
211
- n8nac push my-workflow.workflow.ts
185
+ ```bash
186
+ n8nac instance-target ...
187
+ n8nac target ...
188
+ n8nac setup ...
189
+ n8nac setup-modes ...
190
+ n8nac workspace pin-instance ...
191
+ n8nac workspace set-sync-folder ...
212
192
  ```
213
193
 
214
- ---
194
+ Prefer `n8nac env` for all new workspace configuration.
215
195
 
216
- ## 🏗 Part of the Ecosystem
217
- - `@n8n-as-code/skills`: Internal AI-integration library (node search, schemas, context generation) — accessible via `n8nac skills`.
218
- - `vscode-extension`: Visual editing in VS Code (uses this package as its sync library).
196
+ ## License
219
197
 
220
- ## 📄 License
221
198
  MIT
@@ -1,13 +1,16 @@
1
1
  import { N8nApiClient } from '../core/index.js';
2
- import { ConfigService } from '../services/config-service.js';
2
+ import { ConfigService, type IResolvedWorkspaceEnvironment } from '../services/config-service.js';
3
3
  export declare class BaseCommand {
4
4
  protected client: N8nApiClient;
5
5
  protected config: any;
6
6
  protected configService: ConfigService;
7
7
  protected activeInstanceId?: string;
8
+ protected activeEnvironmentNameOrId?: string;
9
+ protected activeEnvironment?: IResolvedWorkspaceEnvironment;
8
10
  protected instanceIdentifier: string | null;
9
11
  private runtimePrepared;
10
12
  constructor();
13
+ private tryResolveEnvironment;
11
14
  /**
12
15
  * Get or create instance identifier and ensure it's in the config
13
16
  */
@@ -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,MAAM,+BAA+B,CAAC;AAK9D,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,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,OAAO,CAAC,eAAe,CAAS;;IA6GhC;;OAEG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAU3D;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;cAiC7B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BtD,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,OAAO,CAAC,eAAe,CAAS;;IA6GhC,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;IAsCtD,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"}
@@ -9,6 +9,8 @@ export class BaseCommand {
9
9
  config;
10
10
  configService;
11
11
  activeInstanceId;
12
+ activeEnvironmentNameOrId;
13
+ activeEnvironment;
12
14
  instanceIdentifier = null;
13
15
  runtimePrepared = false;
14
16
  constructor() {
@@ -18,40 +20,45 @@ export class BaseCommand {
18
20
  let directory;
19
21
  let folderSync;
20
22
  let envCredentialsProvided = false;
21
- // If --instance <name> was passed as a global option, resolve that instance;
22
- // otherwise fall back to the locally active instance / env vars.
23
+ // If --env <name> was passed as a global option, resolve the workspace
24
+ // environment; otherwise fall back to the locally active environment or legacy instance config.
25
+ const requestedEnvironment = process.env.N8NAC_ENVIRONMENT?.trim() || undefined;
23
26
  const requestedInstanceName = process.env.N8NAC_INSTANCE_NAME?.trim() || undefined;
24
27
  if (requestedInstanceName) {
25
- const matches = this.configService.listInstances().filter((i) => i.name.toLowerCase() === requestedInstanceName.toLowerCase());
26
- if (matches.length === 0) {
27
- console.error(chalk.red(`❌ Unknown instance: "${requestedInstanceName}". Run \`n8n-manager instances list\` to see available instances.`));
28
- process.exit(1);
29
- }
30
- if (matches.length > 1) {
31
- const duplicateInstances = matches
32
- .map((i) => `- ${i.name} (${i.id})`)
33
- .join('\n');
34
- console.error(chalk.red(`❌ Ambiguous instance name: "${requestedInstanceName}". Multiple global n8n-manager instances match this name:`));
35
- console.error(chalk.yellow(duplicateInstances));
36
- console.error(chalk.yellow('Please rename the instance(s) to use unique names, or use an `--instance-id` option if available.'));
37
- process.exit(1);
38
- }
39
- const match = matches[0];
40
- host = match.host || '';
41
- apiKey = host ? (this.configService.getApiKey(host, match.id) || '') : '';
42
- const effectiveContext = this.configService.getEffectiveContext(match.id);
43
- const canPrepareManagedRuntime = effectiveContext?.instance.mode === 'managed-local-docker' && Boolean(host);
28
+ console.error(chalk.red('❌ Direct instance targeting is no longer supported by n8nac.'));
29
+ console.error(chalk.yellow('Create a workspace environment with `n8nac env add <name> --base-url <url> --sync-folder workflows/<name>`, then use `--env <name>`.'));
30
+ process.exit(1);
31
+ }
32
+ const resolvedEnvironment = requestedEnvironment
33
+ ? this.configService.resolveEnvironment(requestedEnvironment)
34
+ : this.tryResolveEnvironment();
35
+ if (resolvedEnvironment) {
36
+ this.activeEnvironmentNameOrId = requestedEnvironment || resolvedEnvironment.environmentId;
37
+ this.activeEnvironment = resolvedEnvironment;
38
+ this.activeInstanceId = resolvedEnvironment.activeInstanceId;
39
+ host = resolvedEnvironment.host || '';
40
+ apiKey = resolvedEnvironment.apiKey || '';
41
+ const effectiveContext = this.activeInstanceId
42
+ ? (() => { try {
43
+ return this.configService.getEffectiveContext(this.activeInstanceId);
44
+ }
45
+ catch {
46
+ return undefined;
47
+ } })()
48
+ : undefined;
49
+ const canPrepareRuntime = resolvedEnvironment.sourceKind === 'managed-instance'
50
+ && (!host || !apiKey || effectiveContext?.instance.mode === 'managed-local-docker');
44
51
  if (!host || !apiKey) {
45
- if (!canPrepareManagedRuntime) {
46
- console.error(chalk.red(`❌ Instance "${requestedInstanceName}" has no host or API key configured.`));
52
+ if (!canPrepareRuntime) {
53
+ console.error(chalk.red(`❌ Environment "${resolvedEnvironment.environmentName}" needs a host and API key before this command can run.`));
54
+ console.error(chalk.yellow(`Configure a local API key with \`n8nac env auth set ${resolvedEnvironment.environmentName} --api-key-stdin\` or update the environment URL.`));
47
55
  process.exit(1);
48
56
  }
49
57
  apiKey = '';
50
58
  }
51
- this.activeInstanceId = match.id;
52
- const effectiveConfig = this.configService.getEffectiveInstanceConfig(match.id) ?? match;
53
- directory = this.configService.resolveWorkspacePath(effectiveConfig.syncFolder || './workflows');
54
- folderSync = effectiveConfig.folderSync ?? false;
59
+ directory = resolvedEnvironment.syncFolder || this.configService.resolveWorkspacePath('./workflows');
60
+ folderSync = resolvedEnvironment.folderSync ?? false;
61
+ this.instanceIdentifier = resolvedEnvironment.instanceIdentifier || null;
55
62
  }
56
63
  else {
57
64
  const localConfig = this.configService.getLocalConfig();
@@ -76,7 +83,7 @@ export class BaseCommand {
76
83
  if (!host || !apiKey) {
77
84
  if (!canPrepareManagedRuntime) {
78
85
  console.error(chalk.red('❌ CLI not configured.'));
79
- console.error(chalk.yellow('Configure n8n with `n8n-manager auth set` and set workspace context with `n8nac workspace ...`.'));
86
+ console.error(chalk.yellow('Create a workspace environment with `n8nac env add <name> --base-url <url> --sync-folder workflows/<name>` and store auth with `n8nac env auth set <name> --api-key-stdin`.'));
80
87
  process.exit(1);
81
88
  }
82
89
  apiKey = '';
@@ -93,7 +100,7 @@ export class BaseCommand {
93
100
  apiKeyConfigured: Boolean(apiKey),
94
101
  folderSync,
95
102
  };
96
- this.runtimePrepared = envCredentialsProvided;
103
+ this.runtimePrepared = envCredentialsProvided && !this.activeEnvironmentNameOrId;
97
104
  // Silently refresh AGENTS.md in the background if the installed n8nac version changed.
98
105
  // Spawned as a fully-detached child process so it never blocks the command, never
99
106
  // interleaves with stdout, and can't be killed by an early process.exit().
@@ -109,6 +116,19 @@ export class BaseCommand {
109
116
  }
110
117
  catch { /* never block the command */ }
111
118
  }
119
+ tryResolveEnvironment() {
120
+ try {
121
+ return this.configService.resolveEnvironment();
122
+ }
123
+ catch (error) {
124
+ if (this.configService.isWorkspaceConfigV4()) {
125
+ console.error(chalk.red(`❌ Workspace environment resolution failed: ${error?.message || error}`));
126
+ console.error(chalk.yellow('Fix the pinned workspace environment with `n8nac env pin <name>` or update the v4 environment config.'));
127
+ process.exit(1);
128
+ }
129
+ return undefined;
130
+ }
131
+ }
112
132
  /**
113
133
  * Get or create instance identifier and ensure it's in the config
114
134
  */
@@ -117,6 +137,13 @@ export class BaseCommand {
117
137
  if (this.instanceIdentifier) {
118
138
  return this.instanceIdentifier;
119
139
  }
140
+ if (this.activeEnvironment?.sourceKind === 'external-instance' && this.activeEnvironment.instanceIdentifier) {
141
+ this.instanceIdentifier = this.activeEnvironment.instanceIdentifier;
142
+ return this.instanceIdentifier;
143
+ }
144
+ if (this.activeEnvironment?.sourceKind === 'external-instance') {
145
+ this.exitWithError(`Environment "${this.activeEnvironment.environmentName}" needs a resolvable instance identifier before sync can run`);
146
+ }
120
147
  this.instanceIdentifier = await this.configService.getOrCreateInstanceIdentifier(this.config.host, this.activeInstanceId);
121
148
  return this.instanceIdentifier;
122
149
  }
@@ -127,9 +154,11 @@ export class BaseCommand {
127
154
  async getSyncConfig() {
128
155
  await this.prepareRuntimeContext();
129
156
  const instanceIdentifier = await this.ensureInstanceIdentifier();
130
- const localConfig = this.activeInstanceId
131
- ? (this.configService.getEffectiveInstanceConfig(this.activeInstanceId) ?? this.configService.getLocalConfig())
132
- : this.configService.getLocalConfig();
157
+ const localConfig = this.activeEnvironmentNameOrId
158
+ ? this.configService.getLocalConfig(this.activeEnvironmentNameOrId)
159
+ : this.activeInstanceId
160
+ ? (this.configService.getEffectiveInstanceConfig(this.activeInstanceId) ?? this.configService.getLocalConfig())
161
+ : this.configService.getLocalConfig();
133
162
  const missing = [];
134
163
  if (!localConfig.projectId)
135
164
  missing.push('projectId');
@@ -139,7 +168,7 @@ export class BaseCommand {
139
168
  missing.push('syncFolder');
140
169
  if (missing.length > 0) {
141
170
  console.error(chalk.red(`❌ Missing required project configuration: ${missing.join(', ')}.`));
142
- console.error(chalk.yellow('Set workspace context with `n8nac workspace set-sync-folder workflows`. For self-hosted n8n where the projects API is unavailable, use `n8nac workspace set-project --project-id personal --project-name Personal`; otherwise select a project with `n8n-manager projects select`.'));
171
+ console.error(chalk.yellow('Update the workspace environment with `n8nac env update <name> --project-id personal --project-name Personal --sync-folder workflows/<name>`.'));
143
172
  process.exit(1);
144
173
  }
145
174
  return {
@@ -154,6 +183,11 @@ export class BaseCommand {
154
183
  projectId: localConfig.projectId,
155
184
  projectName: localConfig.projectName,
156
185
  folderSync: localConfig.folderSync ?? false,
186
+ environmentId: this.activeEnvironment?.environmentId,
187
+ environmentName: this.activeEnvironment?.environmentName,
188
+ environmentTargetId: this.activeEnvironment?.environmentTargetId,
189
+ environmentTargetName: this.activeEnvironment?.environmentTargetName,
190
+ sourceKind: this.activeEnvironment?.sourceKind,
157
191
  };
158
192
  }
159
193
  async prepareRuntimeContext() {
@@ -161,10 +195,18 @@ export class BaseCommand {
161
195
  return;
162
196
  }
163
197
  try {
164
- const context = await this.configService.prepareWorkspaceContext(this.activeInstanceId);
198
+ const environment = this.activeEnvironmentNameOrId;
199
+ const preparedEnvironment = environment
200
+ ? await this.configService.prepareEnvironment(environment)
201
+ : undefined;
202
+ const context = preparedEnvironment
203
+ ? await this.configService.prepareWorkspaceContext({ environment })
204
+ : await this.configService.prepareWorkspaceContext(this.activeInstanceId);
165
205
  if (!context.host || !context.apiKey) {
166
206
  this.exitWithError(`Instance "${context.activeInstanceName}" needs a host and API key before this command can run`);
167
207
  }
208
+ this.activeEnvironment = preparedEnvironment || this.activeEnvironment;
209
+ this.instanceIdentifier = preparedEnvironment?.instanceIdentifier || this.instanceIdentifier;
168
210
  this.activeInstanceId = context.activeInstanceId;
169
211
  this.client = new N8nApiClient({ host: context.host, apiKey: context.apiKey });
170
212
  this.config = {
@@ -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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"}
@@ -0,0 +1,38 @@
1
+ import { ConfigService } from '../services/config-service.js';
2
+ export interface PromoteOptions {
3
+ from: string;
4
+ to: string;
5
+ dryRun?: boolean;
6
+ push?: boolean;
7
+ overwrite?: boolean;
8
+ json?: boolean;
9
+ }
10
+ export interface PromoteResult {
11
+ sourceEnvironmentId: string;
12
+ sourceEnvironmentName: string;
13
+ targetEnvironmentId: string;
14
+ targetEnvironmentName: string;
15
+ sourcePath: string;
16
+ targetPath: string;
17
+ pushed: boolean;
18
+ workflowId?: string;
19
+ credentialCheckCommand?: string;
20
+ dryRun: boolean;
21
+ }
22
+ export declare class PromoteCommand {
23
+ private readonly configService;
24
+ constructor(configService?: ConfigService);
25
+ run(sourceWorkflowPath: string, options: PromoteOptions): Promise<PromoteResult>;
26
+ private getEnvironmentWorkflowRoot;
27
+ private isPathInside;
28
+ private realpathExisting;
29
+ private realpathExistingParent;
30
+ private printResult;
31
+ }
32
+ export declare function adaptWorkflowForPromotion(content: string, options?: {
33
+ targetWorkflowId?: string;
34
+ targetProjectId?: string;
35
+ targetProjectName?: string;
36
+ }): string;
37
+ export declare function readWorkflowDecoratorProperty(content: string, property: string): string | undefined;
38
+ //# sourceMappingURL=promote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAsC,MAAM,+BAA+B,CAAC;AAGlG,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAc;IACX,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,gBAAsB;IAE1D,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAuFtF,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,WAAW;CAgBtB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAgBpK;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnG"}