n8nac 0.11.0 → 0.11.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.
package/README.md CHANGED
@@ -21,13 +21,29 @@ npm install -g n8nac
21
21
  ## Commands
22
22
 
23
23
  ### `init`
24
- Interactive wizard — configure the connection to an n8n instance and pick the active project.
24
+ Interactive wizard by default — configure the connection to an n8n instance and pick the active project.
25
25
 
26
26
  ```bash
27
27
  n8nac init
28
28
  ```
29
29
 
30
- Creates `n8nac.json` in the current folder and stores the API key outside the repo.
30
+ Creates `n8nac-config.json` in the current folder and stores the API key outside the repo.
31
+
32
+ For automation and AI agents, `init` also supports a non-interactive mode:
33
+
34
+ ```bash
35
+ n8nac init --yes --host http://localhost:5678 --api-key "$N8N_API_KEY"
36
+ ```
37
+
38
+ If multiple projects are available, pass one of the project selectors:
39
+
40
+ ```bash
41
+ n8nac init --yes --host http://localhost:5678 --api-key "$N8N_API_KEY" --project-id <projectId>
42
+ n8nac init --yes --host http://localhost:5678 --api-key "$N8N_API_KEY" --project-name "Personal"
43
+ n8nac init --yes --host http://localhost:5678 --api-key "$N8N_API_KEY" --project-index 1
44
+ ```
45
+
46
+ If no project selector is provided, `init --yes` will auto-select the only available project, or the single personal project when that choice is unambiguous. Otherwise it fails with a list of available projects.
31
47
 
32
48
  ---
33
49
 
@@ -57,28 +73,14 @@ Status values:
57
73
  |---|---|---|
58
74
  | `TRACKED` | Workflow exists on both sides, in sync | Nothing to do |
59
75
  | `CONFLICT` | Both sides changed — detected at push/pull time | `n8nac resolve <id> --mode keep-current` (keep local) or `keep-incoming` (keep remote) |
60
- | `EXIST_ONLY_LOCALLY` | New local file not yet in n8n (or remote was deleted) | `n8nac push <id>` or `n8nac push --filename <file>` if brand-new |
76
+ | `EXIST_ONLY_LOCALLY` | New local file not yet in n8n (or remote was deleted) | `n8nac push <file>` |
61
77
  | `EXIST_ONLY_REMOTELY` | Remote workflow not yet local (or local was deleted) | `n8nac pull <workflowId>` to download |
62
78
 
63
- > **Git-like sync**: Status is a point-in-time observation. Use `fetch` to update remote state cache.
79
+ > **Git-like sync**: Status is a point-in-time observation. `n8nac` refreshes the remote state it needs under the hood.
64
80
  > **For agents**: always run `n8nac list` first to get workflow IDs and their current status before pulling or pushing.
65
81
 
66
82
  ---
67
83
 
68
- ### `fetch <workflowId>`
69
- Update remote state cache for a specific workflow (internal reference for comparison).
70
-
71
- ```bash
72
- n8nac fetch <workflowId> # Fetch specific workflow's remote state
73
- ```
74
-
75
- - Updates internal comparison cache for the specified workflow only
76
- - Use before `list` to ensure status reflects latest remote state for that workflow
77
- - Required for accurate conflict detection
78
- - For heavy instances, fetch individual workflows rather than all at once
79
-
80
- ---
81
-
82
84
  ### `pull <workflowId>`
83
85
  Download a single workflow from n8n and overwrite the local file.
84
86
 
@@ -94,15 +96,11 @@ n8nac pull <workflowId>
94
96
  Upload a single local workflow file to n8n.
95
97
 
96
98
  ```bash
97
- # Existing workflow (has an ID in n8nac list)
98
- n8nac push <workflowId>
99
-
100
- # Brand-new local file never pushed before (no remote ID yet)
101
- n8nac push --filename my-workflow.workflow.ts
99
+ n8nac push my-workflow.workflow.ts
102
100
  ```
103
101
 
104
- > **Which form to use?** If `n8nac list` shows a workflow with an ID, always use `push <id>`.
105
- > Only use `--filename` for files that have never been pushed and have no entry in `.n8n-state.json`.
102
+ > Pass only the workflow filename. Do not pass a path. `n8nac` resolves the real local path from `n8nac-config.json` and the active sync scope.
103
+ > The filename is the local entry point; the workflow ID remains the remote source of truth.
106
104
 
107
105
  ---
108
106
 
@@ -167,7 +165,7 @@ n8nac pull <workflowId>
167
165
  # 3. Edit the local .workflow.ts file
168
166
 
169
167
  # 4. Push it back
170
- n8nac push <workflowId>
168
+ n8nac push my-workflow.workflow.ts
171
169
  ```
172
170
 
173
171
  ---
@@ -1,6 +1,29 @@
1
+ export interface InitCommandOptions {
2
+ host?: string;
3
+ apiKey?: string;
4
+ syncFolder?: string;
5
+ projectId?: string;
6
+ projectName?: string;
7
+ projectIndex?: number;
8
+ yes?: boolean;
9
+ }
1
10
  export declare class InitCommand {
2
11
  private configService;
3
12
  constructor();
4
- run(): Promise<void>;
13
+ run(options?: InitCommandOptions): Promise<void>;
14
+ runAuthSetup(options?: InitCommandOptions): Promise<void>;
15
+ runProjectSetup(options?: InitCommandOptions): Promise<void>;
16
+ private resolveOptions;
17
+ private getEnvValue;
18
+ private shouldRunNonInteractive;
19
+ private validateHost;
20
+ private runInteractive;
21
+ private runNonInteractive;
22
+ private completeInitialization;
23
+ private finalizeProjectSetup;
24
+ private promptForProject;
25
+ private promptForSyncFolder;
26
+ private resolveProjectSelection;
27
+ private printAvailableProjects;
5
28
  }
6
29
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,qBAAa,WAAW;IACpB,OAAO,CAAC,aAAa,CAAgB;;IAM/B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyI7B"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,aAAa,CAAgB;;IAM/B,GAAG,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpD,YAAY,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwE7D,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwFtE,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;YASN,cAAc;YA+Bd,iBAAiB;YA8BjB,sBAAsB;YA8EtB,oBAAoB;YAsCpB,gBAAgB;YAgBhB,mBAAmB;IAajC,OAAO,CAAC,uBAAuB;IA6D/B,OAAO,CAAC,sBAAsB;CAOjC"}
@@ -2,6 +2,7 @@ import inquirer from 'inquirer';
2
2
  import chalk from 'chalk';
3
3
  import ora from 'ora';
4
4
  import { N8nApiClient } from '../core/index.js';
5
+ import { getDisplayProjectName } from '../core/helpers/project-helpers.js';
5
6
  import { ConfigService } from '../services/config-service.js';
6
7
  import { UpdateAiCommand } from './init-ai.js';
7
8
  import { Command } from 'commander';
@@ -10,26 +11,191 @@ export class InitCommand {
10
11
  constructor() {
11
12
  this.configService = new ConfigService();
12
13
  }
13
- async run() {
14
+ async run(options = {}) {
14
15
  console.log(chalk.cyan('\n🚀 Welcome to n8n-as-code initialization!'));
15
16
  console.log(chalk.gray('This tool will help you configure your local environment.\n'));
16
17
  const currentLocal = this.configService.getLocalConfig();
17
18
  const currentApiKey = currentLocal.host ? this.configService.getApiKey(currentLocal.host) : '';
19
+ const resolvedOptions = this.resolveOptions(options, currentLocal, currentApiKey);
20
+ if (this.shouldRunNonInteractive(options)) {
21
+ await this.runNonInteractive(resolvedOptions);
22
+ return;
23
+ }
24
+ await this.runInteractive(currentLocal, currentApiKey);
25
+ }
26
+ async runAuthSetup(options = {}) {
27
+ console.log(chalk.cyan('\n🔐 n8n-as-code authentication setup'));
28
+ console.log(chalk.gray('This step stores your n8n host and API key, then lists available projects.\n'));
29
+ const currentLocal = this.configService.getLocalConfig();
30
+ const currentApiKey = currentLocal.host ? this.configService.getApiKey(currentLocal.host) : '';
31
+ const resolvedOptions = this.resolveOptions(options, currentLocal, currentApiKey);
32
+ if (!resolvedOptions.host) {
33
+ console.error(chalk.red('❌ Missing n8n host. Pass --host <url> or set N8N_HOST.'));
34
+ process.exitCode = 1;
35
+ return;
36
+ }
37
+ const hostValidation = this.validateHost(resolvedOptions.host);
38
+ if (hostValidation !== true) {
39
+ console.error(chalk.red(`❌ ${hostValidation}`));
40
+ process.exitCode = 1;
41
+ return;
42
+ }
43
+ if (!resolvedOptions.apiKey) {
44
+ console.error(chalk.red('❌ Missing n8n API key. Pass --api-key <key> or set N8N_API_KEY.'));
45
+ process.exitCode = 1;
46
+ return;
47
+ }
48
+ const spinner = ora('Testing connection to n8n...').start();
49
+ try {
50
+ const client = new N8nApiClient({
51
+ host: resolvedOptions.host,
52
+ apiKey: resolvedOptions.apiKey,
53
+ });
54
+ const isConnected = await client.testConnection();
55
+ if (!isConnected) {
56
+ spinner.fail(chalk.red('Failed to connect to n8n. Please check your URL and API Key.'));
57
+ process.exitCode = 1;
58
+ return;
59
+ }
60
+ spinner.succeed(chalk.green('Successfully connected to n8n!'));
61
+ spinner.start('Fetching available projects...');
62
+ const projects = await client.getProjects();
63
+ spinner.succeed(chalk.green(`Found ${projects.length} project(s)`));
64
+ if (projects.length === 0) {
65
+ console.log(chalk.yellow('No projects found yet. Create a project in n8n, then run n8nac init-project.'));
66
+ }
67
+ this.configService.saveApiKey(resolvedOptions.host, resolvedOptions.apiKey);
68
+ this.configService.saveBootstrapState(resolvedOptions.host, resolvedOptions.syncFolder || 'workflows');
69
+ console.log(chalk.green('\n✔ Credentials saved successfully!'));
70
+ console.log(chalk.blue('📁 Workspace bootstrap:') + ' n8nac-config.json');
71
+ console.log(chalk.blue('🔑 API Key:') + ' Stored securely in global config\n');
72
+ if (projects.length > 0) {
73
+ this.printAvailableProjects(projects);
74
+ }
75
+ console.log(chalk.yellow('Next step:'));
76
+ console.log(`Run ${chalk.bold('n8nac init-project')} to select the project and sync folder.`);
77
+ console.log(chalk.gray('You can pass --project-id, --project-name, or --project-index for non-interactive project selection.\n'));
78
+ }
79
+ catch (error) {
80
+ spinner.fail(chalk.red(`An error occurred: ${error.message}`));
81
+ process.exitCode = 1;
82
+ }
83
+ }
84
+ async runProjectSetup(options = {}) {
85
+ console.log(chalk.cyan('\n📁 n8n-as-code project setup'));
86
+ console.log(chalk.gray('This step selects the active n8n project and the local sync folder.\n'));
87
+ const currentLocal = this.configService.getLocalConfig();
88
+ const currentApiKey = currentLocal.host ? this.configService.getApiKey(currentLocal.host) : '';
89
+ const resolvedOptions = this.resolveOptions(options, currentLocal, currentApiKey);
90
+ if (!resolvedOptions.host) {
91
+ console.error(chalk.red('❌ Missing saved n8n host. Run n8nac init-auth first, or pass --host <url>.'));
92
+ process.exitCode = 1;
93
+ return;
94
+ }
95
+ const hostValidation = this.validateHost(resolvedOptions.host);
96
+ if (hostValidation !== true) {
97
+ console.error(chalk.red(`❌ ${hostValidation}`));
98
+ process.exitCode = 1;
99
+ return;
100
+ }
101
+ if (!resolvedOptions.apiKey) {
102
+ console.error(chalk.red('❌ Missing saved n8n API key. Run n8nac init-auth first, or pass --api-key <key>.'));
103
+ process.exitCode = 1;
104
+ return;
105
+ }
106
+ const spinner = ora('Testing connection to n8n...').start();
107
+ try {
108
+ const client = new N8nApiClient({
109
+ host: resolvedOptions.host,
110
+ apiKey: resolvedOptions.apiKey,
111
+ });
112
+ const isConnected = await client.testConnection();
113
+ if (!isConnected) {
114
+ spinner.fail(chalk.red('Failed to connect to n8n. Please check your URL and API Key.'));
115
+ process.exitCode = 1;
116
+ return;
117
+ }
118
+ spinner.succeed(chalk.green('Successfully connected to n8n!'));
119
+ spinner.start('Fetching available projects...');
120
+ const projects = await client.getProjects();
121
+ spinner.succeed(chalk.green(`Found ${projects.length} project(s)`));
122
+ if (projects.length === 0) {
123
+ spinner.fail(chalk.red('No projects found. Please create a project in n8n first.'));
124
+ process.exitCode = 1;
125
+ return;
126
+ }
127
+ const nonInteractive = !!(options.yes ||
128
+ options.projectId ||
129
+ options.projectName ||
130
+ options.projectIndex !== undefined ||
131
+ options.syncFolder);
132
+ const selectedProject = nonInteractive
133
+ ? this.resolveProjectSelection(projects, resolvedOptions)
134
+ : await this.promptForProject(projects);
135
+ if (!selectedProject) {
136
+ spinner.fail(chalk.red('Project selection failed.'));
137
+ process.exitCode = 1;
138
+ return;
139
+ }
140
+ const syncFolder = nonInteractive
141
+ ? (resolvedOptions.syncFolder || 'workflows')
142
+ : await this.promptForSyncFolder(currentLocal.syncFolder || resolvedOptions.syncFolder || 'workflows');
143
+ await this.finalizeProjectSetup({
144
+ host: resolvedOptions.host,
145
+ apiKey: resolvedOptions.apiKey,
146
+ syncFolder,
147
+ selectedProject,
148
+ });
149
+ }
150
+ catch (error) {
151
+ spinner.fail(chalk.red(`An error occurred: ${error.message}`));
152
+ process.exitCode = 1;
153
+ }
154
+ }
155
+ resolveOptions(options, currentLocal, currentApiKey) {
156
+ return {
157
+ yes: !!options.yes,
158
+ host: options.host || this.getEnvValue('N8N_HOST') || currentLocal.host,
159
+ apiKey: options.apiKey || this.getEnvValue('N8N_API_KEY') || currentApiKey,
160
+ syncFolder: options.syncFolder || currentLocal.syncFolder || 'workflows',
161
+ projectId: options.projectId,
162
+ projectName: options.projectName,
163
+ projectIndex: options.projectIndex,
164
+ };
165
+ }
166
+ getEnvValue(name) {
167
+ const value = process.env[name];
168
+ if (!value) {
169
+ return undefined;
170
+ }
171
+ return value.trim().replace(/^['"]|['"]$/g, '');
172
+ }
173
+ shouldRunNonInteractive(options) {
174
+ return !!(options.yes ||
175
+ options.host ||
176
+ options.apiKey ||
177
+ options.syncFolder ||
178
+ options.projectId ||
179
+ options.projectName ||
180
+ options.projectIndex !== undefined);
181
+ }
182
+ validateHost(host) {
183
+ try {
184
+ new URL(host);
185
+ return true;
186
+ }
187
+ catch {
188
+ return 'Please enter a valid URL (e.g., http://localhost:5678)';
189
+ }
190
+ }
191
+ async runInteractive(currentLocal, currentApiKey) {
18
192
  const answers = await inquirer.prompt([
19
193
  {
20
194
  type: 'input',
21
195
  name: 'host',
22
196
  message: 'Enter your n8n instance URL:',
23
197
  default: currentLocal.host || 'http://localhost:5678',
24
- validate: (input) => {
25
- try {
26
- new URL(input);
27
- return true;
28
- }
29
- catch {
30
- return 'Please enter a valid URL (e.g., http://localhost:5678)';
31
- }
32
- }
198
+ validate: (input) => this.validateHost(input)
33
199
  },
34
200
  {
35
201
  type: 'password',
@@ -45,15 +211,52 @@ export class InitCommand {
45
211
  default: currentLocal.syncFolder || 'workflows'
46
212
  }
47
213
  ]);
214
+ await this.completeInitialization({
215
+ host: answers.host,
216
+ apiKey: answers.apiKey,
217
+ syncFolder: answers.syncFolder,
218
+ }, false);
219
+ }
220
+ async runNonInteractive(options) {
221
+ if (!options.host) {
222
+ console.error(chalk.red('❌ Missing n8n host. Pass --host <url> or set N8N_HOST.'));
223
+ process.exitCode = 1;
224
+ return;
225
+ }
226
+ const hostValidation = this.validateHost(options.host);
227
+ if (hostValidation !== true) {
228
+ console.error(chalk.red(`❌ ${hostValidation}`));
229
+ process.exitCode = 1;
230
+ return;
231
+ }
232
+ if (!options.apiKey) {
233
+ console.error(chalk.red('❌ Missing n8n API key. Pass --api-key <key> or set N8N_API_KEY.'));
234
+ process.exitCode = 1;
235
+ return;
236
+ }
237
+ await this.completeInitialization({
238
+ host: options.host,
239
+ apiKey: options.apiKey,
240
+ syncFolder: options.syncFolder || 'workflows',
241
+ projectId: options.projectId,
242
+ projectName: options.projectName,
243
+ projectIndex: options.projectIndex,
244
+ }, true);
245
+ }
246
+ async completeInitialization(input, nonInteractive) {
48
247
  const spinner = ora('Testing connection to n8n...').start();
49
248
  try {
50
249
  const client = new N8nApiClient({
51
- host: answers.host,
52
- apiKey: answers.apiKey
250
+ host: input.host,
251
+ apiKey: input.apiKey
53
252
  });
54
253
  const isConnected = await client.testConnection();
55
254
  if (!isConnected) {
56
255
  spinner.fail(chalk.red('Failed to connect to n8n. Please check your URL and API Key.'));
256
+ if (nonInteractive) {
257
+ process.exitCode = 1;
258
+ return;
259
+ }
57
260
  const { retry } = await inquirer.prompt([
58
261
  {
59
262
  type: 'confirm',
@@ -68,66 +271,143 @@ export class InitCommand {
68
271
  return;
69
272
  }
70
273
  spinner.succeed(chalk.green('Successfully connected to n8n!'));
71
- // Fetch available projects
72
274
  spinner.start('Fetching available projects...');
73
275
  const projects = await client.getProjects();
74
276
  spinner.succeed(chalk.green(`Found ${projects.length} project(s)`));
75
277
  if (projects.length === 0) {
76
278
  spinner.fail(chalk.red('No projects found. Please create a project in n8n first.'));
279
+ process.exitCode = 1;
77
280
  return;
78
281
  }
79
- // Let user select a project
80
- // We use 'rawlist' (numeric selection) for robustness across terminals.
81
- const { selectedProjectId } = await inquirer.prompt([
82
- {
83
- type: 'rawlist',
84
- name: 'selectedProjectId',
85
- message: 'Select a project to sync:',
86
- choices: projects.map((p, i) => {
87
- const displayName = p.type === 'personal' ? `${p.name} (Personal)` : p.name;
88
- return {
89
- name: `[${i + 1}] ${displayName}`,
90
- value: p.id
91
- };
92
- })
93
- }
94
- ]);
95
- const selectedProject = projects.find(p => p.id === selectedProjectId);
282
+ const selectedProject = nonInteractive
283
+ ? this.resolveProjectSelection(projects, input)
284
+ : await this.promptForProject(projects);
96
285
  if (!selectedProject) {
97
286
  spinner.fail(chalk.red('Project selection failed.'));
287
+ process.exitCode = 1;
98
288
  return;
99
289
  }
100
- const selectedProjectDisplayName = selectedProject.type === 'personal' ? 'Personal' : selectedProject.name;
101
- console.log(chalk.green(`\n✓ Selected project: ${selectedProjectDisplayName}\n`));
102
- // Save configurations (instance identifier will be handled by SyncManager automatically)
103
- const localConfig = {
104
- host: answers.host,
105
- syncFolder: answers.syncFolder,
106
- projectId: selectedProject.id,
107
- projectName: selectedProjectDisplayName
108
- };
109
- this.configService.saveLocalConfig(localConfig);
110
- this.configService.saveApiKey(answers.host, answers.apiKey);
111
- console.log('\n' + chalk.green('✔ Configuration saved successfully!'));
112
- console.log(chalk.blue('📁 Project config:') + ' n8nac-config.json');
113
- console.log(chalk.blue('🔑 API Key:') + ' Stored securely in global config\n');
114
- // Generate instance identifier (saved to n8n-as-code.json)
115
- spinner.start('Generating instance identifier...');
116
- const instanceIdentifier = await this.configService.getOrCreateInstanceIdentifier(answers.host);
117
- spinner.succeed(chalk.green(`Instance identifier: ${instanceIdentifier}`));
118
- console.log(chalk.gray('(n8nac-config.json will be kept up to date automatically)\n'));
119
- // Automatically initialize AI context (AI Bootstrap)
120
- console.log(chalk.cyan('🤖 Bootstrapping AI Context...'));
121
- const updateAi = new UpdateAiCommand(new Command());
122
- await updateAi.run({}, { host: answers.host, apiKey: answers.apiKey });
123
- console.log(chalk.yellow('\nNext steps:'));
124
- console.log(`1. Run ${chalk.bold('n8nac pull')} to download your workflows`);
125
- console.log(`2. Run ${chalk.bold('n8nac start')} to start real-time monitoring and synchronization`);
126
- console.log(chalk.gray(`(Legacy command 'n8n-as-code' is also available but deprecated)\n`));
290
+ const selectedProjectDisplayName = getDisplayProjectName(selectedProject);
291
+ await this.finalizeProjectSetup({
292
+ host: input.host,
293
+ apiKey: input.apiKey,
294
+ syncFolder: input.syncFolder,
295
+ selectedProject,
296
+ });
127
297
  }
128
298
  catch (error) {
129
299
  spinner.fail(chalk.red(`An error occurred: ${error.message}`));
300
+ process.exitCode = 1;
301
+ }
302
+ }
303
+ async finalizeProjectSetup(input) {
304
+ const selectedProjectDisplayName = getDisplayProjectName(input.selectedProject);
305
+ console.log(chalk.green(`\n✓ Selected project: ${selectedProjectDisplayName}\n`));
306
+ const localConfig = {
307
+ host: input.host,
308
+ syncFolder: input.syncFolder,
309
+ projectId: input.selectedProject.id,
310
+ projectName: selectedProjectDisplayName
311
+ };
312
+ this.configService.saveLocalConfig(localConfig);
313
+ this.configService.saveApiKey(input.host, input.apiKey);
314
+ console.log('\n' + chalk.green('✔ Configuration saved successfully!'));
315
+ console.log(chalk.blue('📁 Project config:') + ' n8nac-config.json');
316
+ console.log(chalk.blue('🔑 API Key:') + ' Stored securely in global config\n');
317
+ const spinner = ora('Generating instance identifier...').start();
318
+ const instanceIdentifier = await this.configService.getOrCreateInstanceIdentifier(input.host);
319
+ spinner.succeed(chalk.green(`Instance identifier: ${instanceIdentifier}`));
320
+ console.log(chalk.gray('(n8nac-config.json will be kept up to date automatically)\n'));
321
+ console.log(chalk.cyan('🤖 Bootstrapping AI Context...'));
322
+ const updateAi = new UpdateAiCommand(new Command());
323
+ await updateAi.run({}, { host: input.host, apiKey: input.apiKey });
324
+ console.log(chalk.yellow('\nNext steps:'));
325
+ console.log(`1. Run ${chalk.bold('n8nac pull')} to download your workflows`);
326
+ console.log(`2. Run ${chalk.bold('n8nac start')} to start real-time monitoring and synchronization`);
327
+ console.log(chalk.gray(`(Legacy command 'n8n-as-code' is also available but deprecated)\n`));
328
+ }
329
+ async promptForProject(projects) {
330
+ const { selectedProjectId } = await inquirer.prompt([
331
+ {
332
+ type: 'rawlist',
333
+ name: 'selectedProjectId',
334
+ message: 'Select a project to sync:',
335
+ choices: projects.map((project, index) => ({
336
+ name: `[${index + 1}] ${getDisplayProjectName(project)}`,
337
+ value: project.id
338
+ }))
339
+ }
340
+ ]);
341
+ return projects.find((project) => project.id === selectedProjectId);
342
+ }
343
+ async promptForSyncFolder(defaultSyncFolder) {
344
+ const { syncFolder } = await inquirer.prompt([
345
+ {
346
+ type: 'input',
347
+ name: 'syncFolder',
348
+ message: 'Local folder for workflows:',
349
+ default: defaultSyncFolder,
350
+ }
351
+ ]);
352
+ return syncFolder;
353
+ }
354
+ resolveProjectSelection(projects, options) {
355
+ if (options.projectId) {
356
+ const byId = projects.find((project) => project.id === options.projectId);
357
+ if (!byId) {
358
+ console.error(chalk.red(`❌ Project ID not found: ${options.projectId}`));
359
+ process.exitCode = 1;
360
+ this.printAvailableProjects(projects);
361
+ }
362
+ return byId;
363
+ }
364
+ if (options.projectName) {
365
+ const requestedName = options.projectName.toLowerCase();
366
+ const byName = projects.find((project) => {
367
+ return project.name.toLowerCase() === requestedName || getDisplayProjectName(project).toLowerCase() === requestedName;
368
+ });
369
+ if (!byName) {
370
+ console.error(chalk.red(`❌ Project name not found: ${options.projectName}`));
371
+ process.exitCode = 1;
372
+ this.printAvailableProjects(projects);
373
+ }
374
+ return byName;
130
375
  }
376
+ if (options.projectIndex !== undefined) {
377
+ if (!Number.isFinite(options.projectIndex) || !Number.isInteger(options.projectIndex) || options.projectIndex < 1) {
378
+ console.error(chalk.red(`❌ Invalid project index: ${options.projectIndex}`));
379
+ process.exitCode = 1;
380
+ this.printAvailableProjects(projects);
381
+ return undefined;
382
+ }
383
+ const index = options.projectIndex - 1;
384
+ if (index < 0 || index >= projects.length) {
385
+ console.error(chalk.red(`❌ Project index out of range: ${options.projectIndex}`));
386
+ process.exitCode = 1;
387
+ this.printAvailableProjects(projects);
388
+ return undefined;
389
+ }
390
+ return projects[index];
391
+ }
392
+ if (projects.length === 1) {
393
+ return projects[0];
394
+ }
395
+ const personalProjects = projects.filter((project) => project.type === 'personal');
396
+ if (personalProjects.length === 1) {
397
+ console.log(chalk.gray(`Auto-selected personal project: ${getDisplayProjectName(personalProjects[0])}`));
398
+ return personalProjects[0];
399
+ }
400
+ console.error(chalk.red('❌ Multiple projects are available. Re-run init with --project-id, --project-name, or --project-index.'));
401
+ process.exitCode = 1;
402
+ this.printAvailableProjects(projects);
403
+ return undefined;
404
+ }
405
+ printAvailableProjects(projects) {
406
+ console.log(chalk.yellow('\nAvailable projects:'));
407
+ projects.forEach((project, index) => {
408
+ console.log(` [${index + 1}] ${getDisplayProjectName(project)} (id: ${project.id})`);
409
+ });
410
+ console.log('');
131
411
  }
132
412
  }
133
413
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { BaseCommand } from './base.js';
2
2
  export declare class SyncCommand extends BaseCommand {
3
3
  pullOne(workflowId: string): Promise<void>;
4
- pushOne(workflowId?: string, filename?: string): Promise<void>;
4
+ pushOne(filename: string): Promise<string | undefined>;
5
5
  fetchOne(workflowId: string): Promise<void>;
6
6
  resolveOne(workflowId: string, resolution: 'keep-current' | 'keep-incoming'): Promise<void>;
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAOxC,qBAAa,WAAY,SAAQ,WAAW;IAElC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC1C,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD9D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjG;;;;OAIG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAsD3D"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAOxC,qBAAa,WAAY,SAAQ,WAAW;IAElC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC1C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2CtD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjG;;;;OAIG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAsD3D"}