n8nac 1.2.0 → 1.3.0-next.13
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/dist/commands/base.d.ts +2 -0
- package/dist/commands/base.d.ts.map +1 -1
- package/dist/commands/base.js +40 -0
- package/dist/commands/base.js.map +1 -1
- package/dist/commands/credential.d.ts +48 -0
- package/dist/commands/credential.d.ts.map +1 -0
- package/dist/commands/credential.js +219 -0
- package/dist/commands/credential.js.map +1 -0
- package/dist/commands/execution.d.ts +18 -0
- package/dist/commands/execution.d.ts.map +1 -0
- package/dist/commands/execution.js +57 -0
- package/dist/commands/execution.js.map +1 -0
- package/dist/commands/init-ai.d.ts.map +1 -1
- package/dist/commands/init-ai.js +4 -1
- package/dist/commands/init-ai.js.map +1 -1
- package/dist/commands/test-plan.d.ts.map +1 -1
- package/dist/commands/test-plan.js +7 -0
- package/dist/commands/test-plan.js.map +1 -1
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +36 -12
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/workflow.d.ts +33 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +143 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/core/services/n8n-api-client.d.ts +23 -1
- package/dist/core/services/n8n-api-client.d.ts.map +1 -1
- package/dist/core/services/n8n-api-client.js +96 -2
- package/dist/core/services/n8n-api-client.js.map +1 -1
- package/dist/core/types.d.ts +24 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +165 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/commands/base.d.ts
CHANGED
|
@@ -15,5 +15,7 @@ export declare class BaseCommand {
|
|
|
15
15
|
* Validates that required project fields are present; exits with a clear error if not.
|
|
16
16
|
*/
|
|
17
17
|
protected getSyncConfig(): Promise<any>;
|
|
18
|
+
protected formatErrorDetails(error: unknown): string;
|
|
19
|
+
protected exitWithError(message: string, error?: unknown): never;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -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;AAE9D,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,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;;IA4CnD;;OAEG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAS3D;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;
|
|
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;AAE9D,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,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;;IA4CnD;;OAEG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAS3D;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IA2B7C,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"}
|
package/dist/commands/base.js
CHANGED
|
@@ -80,5 +80,45 @@ export class BaseCommand {
|
|
|
80
80
|
projectName: localConfig.projectName
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
+
formatErrorDetails(error) {
|
|
84
|
+
if (error && typeof error === 'object') {
|
|
85
|
+
const response = error.response;
|
|
86
|
+
const status = response?.status;
|
|
87
|
+
const responseData = response?.data;
|
|
88
|
+
let remoteMessage = '';
|
|
89
|
+
if (typeof responseData?.message === 'string' && responseData.message.trim().length > 0) {
|
|
90
|
+
remoteMessage = responseData.message.trim();
|
|
91
|
+
}
|
|
92
|
+
else if (typeof responseData === 'string' && responseData.trim().length > 0) {
|
|
93
|
+
remoteMessage = responseData.trim();
|
|
94
|
+
}
|
|
95
|
+
else if (responseData && typeof responseData === 'object') {
|
|
96
|
+
remoteMessage = JSON.stringify(responseData);
|
|
97
|
+
}
|
|
98
|
+
if (status && remoteMessage) {
|
|
99
|
+
return `HTTP ${status}: ${remoteMessage}`;
|
|
100
|
+
}
|
|
101
|
+
if (remoteMessage) {
|
|
102
|
+
return remoteMessage;
|
|
103
|
+
}
|
|
104
|
+
if (status) {
|
|
105
|
+
return `HTTP ${status}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (error instanceof Error) {
|
|
109
|
+
return error.message;
|
|
110
|
+
}
|
|
111
|
+
return String(error);
|
|
112
|
+
}
|
|
113
|
+
exitWithError(message, error) {
|
|
114
|
+
if (error !== undefined) {
|
|
115
|
+
const details = this.formatErrorDetails(error);
|
|
116
|
+
console.error(chalk.red(`❌ ${message}: ${details}`));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.error(chalk.red(`❌ ${message}`));
|
|
120
|
+
}
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
83
123
|
}
|
|
84
124
|
//# sourceMappingURL=base.js.map
|
|
@@ -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,48 @@
|
|
|
1
|
+
import { BaseCommand } from './base.js';
|
|
2
|
+
export declare class CredentialCommand extends BaseCommand {
|
|
3
|
+
private isObject;
|
|
4
|
+
private parseCredentialInput;
|
|
5
|
+
private inferConditionalBooleanDefaults;
|
|
6
|
+
private shouldRetryWithSchemaDefaults;
|
|
7
|
+
private createWithSchemaFallback;
|
|
8
|
+
/**
|
|
9
|
+
* n8nac credential schema <type>
|
|
10
|
+
* Print the JSON Schema for a credential type so the caller knows what fields are required.
|
|
11
|
+
*/
|
|
12
|
+
schema(typeName: string, options?: {
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* n8nac credential list
|
|
17
|
+
* List all credentials (metadata only — secrets are never returned by the API).
|
|
18
|
+
*/
|
|
19
|
+
list(options?: {
|
|
20
|
+
json?: boolean;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* n8nac credential get <id>
|
|
24
|
+
* Print full credential metadata (no secrets) as JSON.
|
|
25
|
+
*/
|
|
26
|
+
get(id: string, options?: {
|
|
27
|
+
json?: boolean;
|
|
28
|
+
}): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* n8nac credential create --type <type> --name <name> [--data <json>|--file <path>]
|
|
31
|
+
* Create a new credential from inline JSON or a file.
|
|
32
|
+
* Prefer --file over --data to avoid secrets appearing in shell history.
|
|
33
|
+
*/
|
|
34
|
+
create(options: {
|
|
35
|
+
type: string;
|
|
36
|
+
name: string;
|
|
37
|
+
data?: string;
|
|
38
|
+
file?: string;
|
|
39
|
+
projectId?: string;
|
|
40
|
+
json?: boolean;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* n8nac credential delete <id>
|
|
44
|
+
* Permanently delete a credential.
|
|
45
|
+
*/
|
|
46
|
+
delete(id: string): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,+BAA+B;IAmCvC,OAAO,CAAC,6BAA6B;YASvB,wBAAwB;IA+BtC;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/E;;;OAGG;IACG,IAAI,CAAC,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3D;;;OAGG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DjB;;;OAGG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY1C"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import Table from 'cli-table3';
|
|
4
|
+
import { BaseCommand } from './base.js';
|
|
5
|
+
export class CredentialCommand extends BaseCommand {
|
|
6
|
+
isObject(value) {
|
|
7
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
8
|
+
}
|
|
9
|
+
parseCredentialInput(raw, source, filePath) {
|
|
10
|
+
let parsed;
|
|
11
|
+
try {
|
|
12
|
+
parsed = JSON.parse(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
if (source === '--file') {
|
|
16
|
+
console.error(chalk.red(`❌ Could not read or parse file: ${filePath}`));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.error(chalk.red('❌ --data is not valid JSON'));
|
|
20
|
+
}
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (!this.isObject(parsed)) {
|
|
24
|
+
const label = source === '--file' ? `JSON in ${filePath}` : '--data';
|
|
25
|
+
console.error(chalk.red(`❌ ${label} must be a JSON object.`));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
inferConditionalBooleanDefaults(schema, input) {
|
|
31
|
+
const next = { ...input };
|
|
32
|
+
const applied = [];
|
|
33
|
+
const properties = this.isObject(schema.properties) ? schema.properties : {};
|
|
34
|
+
const allOf = Array.isArray(schema.allOf) ? schema.allOf : [];
|
|
35
|
+
for (const condition of allOf) {
|
|
36
|
+
if (!this.isObject(condition))
|
|
37
|
+
continue;
|
|
38
|
+
const ifBlock = this.isObject(condition.if) ? condition.if : null;
|
|
39
|
+
const ifProperties = ifBlock && this.isObject(ifBlock.properties) ? ifBlock.properties : {};
|
|
40
|
+
for (const [field, fieldRule] of Object.entries(ifProperties)) {
|
|
41
|
+
if (field in next)
|
|
42
|
+
continue;
|
|
43
|
+
if (!this.isObject(fieldRule))
|
|
44
|
+
continue;
|
|
45
|
+
const propertySchema = properties[field];
|
|
46
|
+
if (!this.isObject(propertySchema) || propertySchema.type !== 'boolean')
|
|
47
|
+
continue;
|
|
48
|
+
const enumValues = Array.isArray(fieldRule.enum) ? fieldRule.enum : [];
|
|
49
|
+
if (enumValues.length === 1 && enumValues[0] === true) {
|
|
50
|
+
next[field] = false;
|
|
51
|
+
applied.push({ field, value: false });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { data: next, applied };
|
|
56
|
+
}
|
|
57
|
+
shouldRetryWithSchemaDefaults(error) {
|
|
58
|
+
if (!error || typeof error !== 'object')
|
|
59
|
+
return false;
|
|
60
|
+
const status = error.response?.status;
|
|
61
|
+
const message = this.formatErrorDetails(error);
|
|
62
|
+
return status === 400 && /does not match allOf schema|requires property/i.test(message);
|
|
63
|
+
}
|
|
64
|
+
async createWithSchemaFallback(payload, error) {
|
|
65
|
+
if (!this.shouldRetryWithSchemaDefaults(error)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const schema = await this.client.getCredentialSchema(payload.type);
|
|
69
|
+
const normalized = this.inferConditionalBooleanDefaults(schema, payload.data);
|
|
70
|
+
if (normalized.applied.length === 0) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const result = await this.client.createCredential({
|
|
74
|
+
...payload,
|
|
75
|
+
data: normalized.data,
|
|
76
|
+
});
|
|
77
|
+
return { result, applied: normalized.applied };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* n8nac credential schema <type>
|
|
81
|
+
* Print the JSON Schema for a credential type so the caller knows what fields are required.
|
|
82
|
+
*/
|
|
83
|
+
async schema(typeName, options = {}) {
|
|
84
|
+
try {
|
|
85
|
+
const schema = await this.client.getCredentialSchema(typeName);
|
|
86
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this.exitWithError(`Failed to fetch credential schema for type "${typeName}"`, error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* n8nac credential list
|
|
94
|
+
* List all credentials (metadata only — secrets are never returned by the API).
|
|
95
|
+
*/
|
|
96
|
+
async list(options = {}) {
|
|
97
|
+
try {
|
|
98
|
+
const credentials = await this.client.listCredentials();
|
|
99
|
+
if (options.json) {
|
|
100
|
+
console.log(JSON.stringify(credentials, null, 2));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (credentials.length === 0) {
|
|
104
|
+
console.log(chalk.yellow('No credentials found.'));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const table = new Table({
|
|
108
|
+
head: [chalk.white('ID'), chalk.white('Name'), chalk.white('Type')],
|
|
109
|
+
style: { head: [], border: [] },
|
|
110
|
+
});
|
|
111
|
+
for (const cred of credentials) {
|
|
112
|
+
table.push([
|
|
113
|
+
String(cred['id'] ?? ''),
|
|
114
|
+
String(cred['name'] ?? ''),
|
|
115
|
+
String(cred['type'] ?? ''),
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
118
|
+
console.log(table.toString());
|
|
119
|
+
console.log(chalk.dim(`\nTotal: ${credentials.length} credential(s)`));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.exitWithError('Failed to list credentials', error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* n8nac credential get <id>
|
|
127
|
+
* Print full credential metadata (no secrets) as JSON.
|
|
128
|
+
*/
|
|
129
|
+
async get(id, options = {}) {
|
|
130
|
+
try {
|
|
131
|
+
const credential = await this.client.getCredential(id);
|
|
132
|
+
console.log(JSON.stringify(credential, null, 2));
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
this.exitWithError(`Failed to fetch credential ${id}`, error);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* n8nac credential create --type <type> --name <name> [--data <json>|--file <path>]
|
|
140
|
+
* Create a new credential from inline JSON or a file.
|
|
141
|
+
* Prefer --file over --data to avoid secrets appearing in shell history.
|
|
142
|
+
*/
|
|
143
|
+
async create(options) {
|
|
144
|
+
let credData;
|
|
145
|
+
if (options.file) {
|
|
146
|
+
let rawFile;
|
|
147
|
+
try {
|
|
148
|
+
rawFile = readFileSync(options.file, 'utf-8');
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
console.error(chalk.red(`❌ Could not read or parse file: ${options.file}`));
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
credData = this.parseCredentialInput(rawFile, '--file', options.file);
|
|
155
|
+
}
|
|
156
|
+
else if (options.data) {
|
|
157
|
+
credData = this.parseCredentialInput(options.data, '--data');
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.error(chalk.red('❌ Provide --data <json> or --file <path> with the credential data.'));
|
|
161
|
+
console.error(chalk.yellow(`Tip: run \`n8nac credential schema ${options.type}\` to see required fields.`));
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const payload = {
|
|
165
|
+
type: options.type,
|
|
166
|
+
name: options.name,
|
|
167
|
+
data: credData,
|
|
168
|
+
...(options.projectId ? { projectId: options.projectId } : {}),
|
|
169
|
+
};
|
|
170
|
+
try {
|
|
171
|
+
const result = await this.client.createCredential(payload);
|
|
172
|
+
if (options.json) {
|
|
173
|
+
console.log(JSON.stringify(result, null, 2));
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
console.log(chalk.green(`✅ Credential "${options.name}" created (ID: ${result['id']})`));
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
try {
|
|
180
|
+
const fallback = await this.createWithSchemaFallback(payload, error);
|
|
181
|
+
if (fallback) {
|
|
182
|
+
if (options.json) {
|
|
183
|
+
console.log(JSON.stringify(fallback.result, null, 2));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const defaultsText = fallback.applied
|
|
187
|
+
.map(({ field, value }) => `${field}=${String(value)}`)
|
|
188
|
+
.join(', ');
|
|
189
|
+
console.log(chalk.dim(`ℹ Applied schema defaults before retrying credential creation: ${defaultsText}`));
|
|
190
|
+
console.log(chalk.green(`✅ Credential "${options.name}" created (ID: ${fallback.result['id']})`));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Preserve the original validation error when schema discovery or retry fails.
|
|
196
|
+
}
|
|
197
|
+
this.exitWithError(`Failed to create credential "${options.name}"`, error);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* n8nac credential delete <id>
|
|
202
|
+
* Permanently delete a credential.
|
|
203
|
+
*/
|
|
204
|
+
async delete(id) {
|
|
205
|
+
try {
|
|
206
|
+
const ok = await this.client.deleteCredential(id);
|
|
207
|
+
if (ok) {
|
|
208
|
+
console.log(chalk.green(`✅ Credential ${id} deleted.`));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this.exitWithError(`Failed to delete credential ${id}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
this.exitWithError(`Failed to delete credential ${id}`, error);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../../src/commands/credential.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseCommand } from './base.js';
|
|
2
|
+
import { ExecutionStatus } from '../core/index.js';
|
|
3
|
+
export declare class ExecutionCommand extends BaseCommand {
|
|
4
|
+
list(options?: {
|
|
5
|
+
workflowId?: string;
|
|
6
|
+
status?: ExecutionStatus;
|
|
7
|
+
projectId?: string;
|
|
8
|
+
limit?: number;
|
|
9
|
+
cursor?: string;
|
|
10
|
+
includeData?: boolean;
|
|
11
|
+
json?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
get(id: string, options?: {
|
|
14
|
+
includeData?: boolean;
|
|
15
|
+
json?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/commands/execution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,gBAAiB,SAAQ,WAAW;IACvC,IAAI,CAAC,OAAO,GAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;KACb,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ChB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAQhG"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
import { BaseCommand } from './base.js';
|
|
4
|
+
export class ExecutionCommand extends BaseCommand {
|
|
5
|
+
async list(options = {}) {
|
|
6
|
+
try {
|
|
7
|
+
const result = await this.client.listExecutions(options);
|
|
8
|
+
if (options.json) {
|
|
9
|
+
console.log(JSON.stringify(result, null, 2));
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (result.data.length === 0) {
|
|
13
|
+
console.log(chalk.yellow('No executions found.'));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const table = new Table({
|
|
17
|
+
head: [
|
|
18
|
+
chalk.bold('ID'),
|
|
19
|
+
chalk.bold('Status'),
|
|
20
|
+
chalk.bold('Mode'),
|
|
21
|
+
chalk.bold('Workflow'),
|
|
22
|
+
chalk.bold('Started'),
|
|
23
|
+
chalk.bold('Stopped'),
|
|
24
|
+
],
|
|
25
|
+
wordWrap: true,
|
|
26
|
+
});
|
|
27
|
+
for (const execution of result.data) {
|
|
28
|
+
table.push([
|
|
29
|
+
execution.id,
|
|
30
|
+
execution.status,
|
|
31
|
+
execution.mode,
|
|
32
|
+
execution.workflowId,
|
|
33
|
+
execution.startedAt || '-',
|
|
34
|
+
execution.stoppedAt || '-',
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
console.log(`\n${table.toString()}\n`);
|
|
38
|
+
console.log(chalk.dim(`Total returned: ${result.data.length}`));
|
|
39
|
+
if (result.nextCursor) {
|
|
40
|
+
console.log(chalk.dim(`Next cursor: ${result.nextCursor}`));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
this.exitWithError('Failed to list executions', error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async get(id, options = {}) {
|
|
48
|
+
try {
|
|
49
|
+
const execution = await this.client.getExecution(id, { includeData: options.includeData });
|
|
50
|
+
console.log(JSON.stringify(execution, null, 2));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
this.exitWithError(`Failed to fetch execution ${id}`, error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/commands/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAC7C,KAAK,CAAC,IAAI,CAAC,UAQP,EAAE;QACF,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACX,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAClD,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;gBACpB,IAAI,EAAE;oBACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;iBACxB;gBACD,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC;oBACP,SAAS,CAAC,EAAE;oBACZ,SAAS,CAAC,MAAM;oBAChB,SAAS,CAAC,IAAI;oBACd,SAAS,CAAC,UAAU;oBACpB,SAAS,CAAC,SAAS,IAAI,GAAG;oBAC1B,SAAS,CAAC,SAAS,IAAI,GAAG;iBAC7B,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,UAAqD,EAAE;QACzE,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-ai.d.ts","sourceRoot":"","sources":["../../src/commands/init-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAEH,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAkB1B,qBAAa,eAAe;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"init-ai.d.ts","sourceRoot":"","sources":["../../src/commands/init-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAEH,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAkB1B,qBAAa,eAAe;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAUvB,GAAG,CAAC,OAAO,GAAE,GAAQ,EAAE,mBAAmB,CAAC,EAAE,eAAe;CA+C5E;AAGD,qBAAa,aAAc,SAAQ,eAAe;CAAI"}
|
package/dist/commands/init-ai.js
CHANGED
|
@@ -24,6 +24,7 @@ export class UpdateAiCommand {
|
|
|
24
24
|
this.program
|
|
25
25
|
.command('update-ai')
|
|
26
26
|
.description('Update AI Context (AGENTS.md and snippets)')
|
|
27
|
+
.option('--cli-cmd <command>', 'Override the generated n8nac command in AGENTS.md (for local dev builds)')
|
|
27
28
|
.action(async (options) => {
|
|
28
29
|
await this.run(options);
|
|
29
30
|
});
|
|
@@ -55,7 +56,9 @@ export class UpdateAiCommand {
|
|
|
55
56
|
// 2. Generate Context (AGENTS.md)
|
|
56
57
|
console.log(chalk.gray('\n - Generating AI context files (AGENTS.md)...'));
|
|
57
58
|
const aiContextGenerator = new AiContextGenerator();
|
|
58
|
-
await aiContextGenerator.generate(projectRoot, version, getDistTag()
|
|
59
|
+
await aiContextGenerator.generate(projectRoot, version, getDistTag(), {
|
|
60
|
+
cliCommandOverride: options.cliCmd,
|
|
61
|
+
});
|
|
59
62
|
console.log(chalk.green(' ✅ AI context files created.'));
|
|
60
63
|
console.log(chalk.green('\n✨ AI Context Updated Successfully!'));
|
|
61
64
|
console.log(chalk.gray(' ✔ AGENTS.md: Complete AI agent guidelines'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-ai.js","sourceRoot":"","sources":["../../src/commands/init-ai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EACH,YAAY,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,kBAAkB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;iFACiF;AACjF,SAAS,UAAU;IACf,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,eAAe;IACJ;IAApB,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAChC,IAAI,CAAC,OAAO;aACP,OAAO,CAAC,WAAW,CAAC;aACpB,WAAW,CAAC,4CAA4C,CAAC;aACzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,UAAe,EAAE,EAAE,mBAAqC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAEpE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,CAAC;YACD,uDAAuD;YACvD,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,WAAW,GAAoB,mBAAmB,IAAI;gBACxD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE;gBAChC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;aACxC,CAAC;YACF,IAAI,MAAgC,CAAC;YACrC,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,oCAAoC;YACpC,IAAI,OAAO,GAAG,SAAS,CAAC;YACxB,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBACxC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC,CAAC,6BAA6B;YAC7C,CAAC;YAED,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC7E,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACpD,MAAM,kBAAkB,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"init-ai.js","sourceRoot":"","sources":["../../src/commands/init-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../src/commands/test-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,qBAAa,eAAgB,SAAQ,WAAW;IAC5C;;;;;;;;OAQG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../src/commands/test-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,qBAAa,eAAgB,SAAQ,WAAW;IAC5C;;;;;;;;OAQG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAgF9E"}
|
|
@@ -55,6 +55,13 @@ export class TestPlanCommand extends BaseCommand {
|
|
|
55
55
|
console.log(chalk.dim('\nSuggested payload:'));
|
|
56
56
|
console.log(chalk.white(JSON.stringify(plan.payload.inferred, null, 2)));
|
|
57
57
|
console.log(chalk.dim(`Confidence: ${plan.payload.confidence}`));
|
|
58
|
+
const httpMethod = (trigger.httpMethod ?? 'POST').toUpperCase();
|
|
59
|
+
if (httpMethod === 'GET' || httpMethod === 'HEAD') {
|
|
60
|
+
console.log(chalk.dim('\nRequest hint:'));
|
|
61
|
+
console.log(chalk.dim(`- This trigger uses ${httpMethod}.`));
|
|
62
|
+
console.log(chalk.dim(`- Run \`n8nac test ${workflowId} --query '<json>'\` for explicit query params.`));
|
|
63
|
+
console.log(chalk.dim(`- \`--data\` also maps to query params for ${httpMethod} requests.`));
|
|
64
|
+
}
|
|
58
65
|
if (plan.payload.fields.length > 0) {
|
|
59
66
|
console.log(chalk.dim('\nObserved fields:'));
|
|
60
67
|
for (const field of plan.payload.fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.js","sourceRoot":"","sources":["../../src/commands/test-plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-plan.js","sourceRoot":"","sources":["../../src/commands/test-plan.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/test.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { BaseCommand } from './base.js';
|
|
2
2
|
export declare class TestCommand extends BaseCommand {
|
|
3
|
+
private isObject;
|
|
4
|
+
private parseJsonOption;
|
|
3
5
|
/**
|
|
4
6
|
* `n8nac test <workflowId>`
|
|
5
7
|
*
|
|
@@ -17,6 +19,7 @@ export declare class TestCommand extends BaseCommand {
|
|
|
17
19
|
*/
|
|
18
20
|
run(workflowId: string, options: {
|
|
19
21
|
data?: string;
|
|
22
|
+
query?: string;
|
|
20
23
|
prod?: boolean;
|
|
21
24
|
}): Promise<number>;
|
|
22
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAKxC,qBAAa,WAAY,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAKxC,qBAAa,WAAY,SAAQ,WAAW;IACxC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAmBvB;;;;;;;;;;;;;;OAcG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAiH7G"}
|
package/dist/commands/test.js
CHANGED
|
@@ -2,6 +2,26 @@ import { BaseCommand } from './base.js';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import ora from 'ora';
|
|
4
4
|
export class TestCommand extends BaseCommand {
|
|
5
|
+
isObject(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
parseJsonOption(label, raw) {
|
|
9
|
+
if (!raw)
|
|
10
|
+
return undefined;
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = JSON.parse(raw);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
console.error(chalk.red(`❌ ${label} must be valid JSON. Got: ${raw}`));
|
|
17
|
+
return Symbol.for('n8nac.invalid-json');
|
|
18
|
+
}
|
|
19
|
+
if (!this.isObject(parsed)) {
|
|
20
|
+
console.error(chalk.red(`❌ ${label} must be a JSON object.`));
|
|
21
|
+
return Symbol.for('n8nac.invalid-json');
|
|
22
|
+
}
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
5
25
|
/**
|
|
6
26
|
* `n8nac test <workflowId>`
|
|
7
27
|
*
|
|
@@ -18,23 +38,19 @@ export class TestCommand extends BaseCommand {
|
|
|
18
38
|
* 1 — fatal infrastructure error (workflow not found, no trigger, etc.)
|
|
19
39
|
*/
|
|
20
40
|
async run(workflowId, options) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
catch {
|
|
28
|
-
console.error(chalk.red(`❌ --data must be valid JSON. Got: ${options.data}`));
|
|
29
|
-
return 1;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
41
|
+
const parsedData = this.parseJsonOption('--data', options.data);
|
|
42
|
+
if (parsedData === Symbol.for('n8nac.invalid-json'))
|
|
43
|
+
return 1;
|
|
44
|
+
const parsedQuery = this.parseJsonOption('--query', options.query);
|
|
45
|
+
if (parsedQuery === Symbol.for('n8nac.invalid-json'))
|
|
46
|
+
return 1;
|
|
32
47
|
const mode = options.prod ? 'production' : 'test';
|
|
33
48
|
const spinner = ora(`Testing workflow ${workflowId} (${mode} mode)...`).start();
|
|
34
49
|
let result;
|
|
35
50
|
try {
|
|
36
51
|
result = await this.client.testWorkflow(workflowId, {
|
|
37
|
-
data: parsedData,
|
|
52
|
+
data: parsedData ?? {},
|
|
53
|
+
query: parsedQuery,
|
|
38
54
|
prod: options.prod ?? false,
|
|
39
55
|
});
|
|
40
56
|
}
|
|
@@ -67,6 +83,14 @@ export class TestCommand extends BaseCommand {
|
|
|
67
83
|
: String(result.responseData);
|
|
68
84
|
console.log(chalk.white(formatted));
|
|
69
85
|
}
|
|
86
|
+
console.log('');
|
|
87
|
+
console.log(chalk.dim(`To inspect the resulting server-side execution:`));
|
|
88
|
+
console.log(chalk.dim(` • n8nac execution list --workflow-id ${workflowId} --limit 5 --json`));
|
|
89
|
+
console.log(chalk.dim(` • n8nac execution get <executionId> --include-data --json`));
|
|
90
|
+
if (options.prod) {
|
|
91
|
+
console.log(chalk.dim(` • A 2xx production webhook response only confirms that n8n accepted the trigger.`));
|
|
92
|
+
console.log(chalk.dim(` The execution itself may still fail later on the server.`));
|
|
93
|
+
}
|
|
70
94
|
return 0;
|
|
71
95
|
}
|
|
72
96
|
// ── Not HTTP-triggerable (schedule, unknown, no trigger) ──────────────
|