@n8n/workflow-sdk 0.25.1 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast-interpreter/index.d.ts +1 -1
- package/dist/ast-interpreter/index.js +2 -1
- package/dist/ast-interpreter/index.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/cli/index.js +19 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/node-definition-dirs.d.ts +6 -0
- package/dist/cli/node-definition-dirs.js +63 -0
- package/dist/cli/node-definition-dirs.js.map +1 -0
- package/dist/cli/validate.d.ts +5 -0
- package/dist/cli/validate.js +203 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/codegen/code-generator.js +4 -1
- package/dist/codegen/code-generator.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/lint/ast-walk.d.ts +7 -0
- package/dist/lint/ast-walk.js +43 -0
- package/dist/lint/ast-walk.js.map +1 -0
- package/dist/lint/code-node/extract-snippets.d.ts +13 -0
- package/dist/lint/code-node/extract-snippets.js +110 -0
- package/dist/lint/code-node/extract-snippets.js.map +1 -0
- package/dist/lint/code-node/js.d.ts +8 -0
- package/dist/lint/code-node/js.js +219 -0
- package/dist/lint/code-node/js.js.map +1 -0
- package/dist/lint/code-node/python.d.ts +5 -0
- package/dist/lint/code-node/python.js +25 -0
- package/dist/lint/code-node/python.js.map +1 -0
- package/dist/lint/index.d.ts +8 -0
- package/dist/lint/index.js +25 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/lint-workflow-source.d.ts +2 -0
- package/dist/lint/lint-workflow-source.js +47 -0
- package/dist/lint/lint-workflow-source.js.map +1 -0
- package/dist/lint/sdk/workflow-sdk-lint.d.ts +12 -0
- package/dist/lint/sdk/workflow-sdk-lint.js +271 -0
- package/dist/lint/sdk/workflow-sdk-lint.js.map +1 -0
- package/dist/lint/types.d.ts +15 -0
- package/dist/lint/types.js +7 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/mock-data/context.d.ts +5 -2
- package/dist/mock-data/context.js +109 -6
- package/dist/mock-data/context.js.map +1 -1
- package/dist/mock-data/index.d.ts +2 -1
- package/dist/mock-data/index.js +4 -1
- package/dist/mock-data/index.js.map +1 -1
- package/dist/mock-data/parse.js +23 -4
- package/dist/mock-data/parse.js.map +1 -1
- package/dist/mock-data/prompt.d.ts +1 -1
- package/dist/mock-data/prompt.js +11 -3
- package/dist/mock-data/prompt.js.map +1 -1
- package/dist/mock-data/types.d.ts +12 -0
- package/dist/mock-data/validate.d.ts +10 -0
- package/dist/mock-data/validate.js +77 -0
- package/dist/mock-data/validate.js.map +1 -0
- package/dist/prompts/sdk-reference/index.d.ts +1 -1
- package/dist/prompts/sdk-reference/index.js +2 -1
- package/dist/prompts/sdk-reference/index.js.map +1 -1
- package/dist/prompts/sdk-reference/sdk-language.d.ts +1 -0
- package/dist/prompts/sdk-reference/sdk-language.js +43 -20
- package/dist/prompts/sdk-reference/sdk-language.js.map +1 -1
- package/dist/types/base.d.ts +9 -1
- package/dist/validation/index.d.ts +7 -34
- package/dist/validation/index.js +22 -698
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/informational-validation-codes.d.ts +1 -0
- package/dist/validation/informational-validation-codes.js +7 -0
- package/dist/validation/informational-validation-codes.js.map +1 -0
- package/dist/validation/issue-severity.d.ts +6 -0
- package/dist/validation/issue-severity.js +24 -0
- package/dist/validation/issue-severity.js.map +1 -0
- package/dist/validation/{resolve-schema.d.ts → node-parameter-schema/resolve-schema.d.ts} +1 -1
- package/dist/validation/{resolve-schema.js → node-parameter-schema/resolve-schema.js} +1 -1
- package/dist/validation/node-parameter-schema/resolve-schema.js.map +1 -0
- package/dist/validation/{schema-helpers.d.ts → node-parameter-schema/schema-helpers.d.ts} +1 -1
- package/dist/validation/{schema-helpers.js → node-parameter-schema/schema-helpers.js} +1 -1
- package/dist/validation/node-parameter-schema/schema-helpers.js.map +1 -0
- package/dist/validation/{schema-validator.js → node-parameter-schema/schema-validator.js} +1 -1
- package/dist/validation/node-parameter-schema/schema-validator.js.map +1 -0
- package/dist/validation/{test-schema-setup.js → node-parameter-schema/test-schema-setup.js} +3 -3
- package/dist/validation/node-parameter-schema/test-schema-setup.js.map +1 -0
- package/dist/validation/{input-resolver.js → node-port-resolvers/resolve-main-input-count.js} +1 -1
- package/dist/validation/node-port-resolvers/resolve-main-input-count.js.map +1 -0
- package/dist/validation/{output-resolver.js → node-port-resolvers/resolve-main-output-count.js} +1 -1
- package/dist/validation/node-port-resolvers/resolve-main-output-count.js.map +1 -0
- package/dist/validation/validate-workflow-builder.d.ts +44 -0
- package/dist/validation/validate-workflow-builder.js +132 -0
- package/dist/validation/validate-workflow-builder.js.map +1 -0
- package/dist/validation/validate-workflow.d.ts +36 -0
- package/dist/validation/validate-workflow.js +723 -0
- package/dist/validation/validate-workflow.js.map +1 -0
- package/dist/validation.d.ts +2 -2
- package/dist/validation.js +6 -2
- package/dist/validation.js.map +1 -1
- package/dist/workflow-builder/plugins/serializers/json-serializer.js +12 -7
- package/dist/workflow-builder/plugins/serializers/json-serializer.js.map +1 -1
- package/dist/workflow-builder/plugins/types.d.ts +6 -7
- package/dist/workflow-builder/plugins/types.js.map +1 -1
- package/dist/workflow-builder/plugins/validators/disconnected-node-validator.js +1 -1
- package/dist/workflow-builder/plugins/validators/disconnected-node-validator.js.map +1 -1
- package/dist/workflow-builder/plugins/validators/missing-trigger-validator.js +1 -1
- package/dist/workflow-builder/plugins/validators/missing-trigger-validator.js.map +1 -1
- package/dist/workflow-builder/workflow-import.d.ts +2 -6
- package/dist/workflow-builder/workflow-import.js +5 -2
- package/dist/workflow-builder/workflow-import.js.map +1 -1
- package/dist/workflow-builder.js +7 -9
- package/dist/workflow-builder.js.map +1 -1
- package/package.json +14 -9
- package/dist/validation/input-resolver.js.map +0 -1
- package/dist/validation/output-resolver.js.map +0 -1
- package/dist/validation/resolve-schema.js.map +0 -1
- package/dist/validation/schema-helpers.js.map +0 -1
- package/dist/validation/schema-validator.js.map +0 -1
- package/dist/validation/test-schema-setup.js.map +0 -1
- /package/dist/validation/{schema-validator.d.ts → node-parameter-schema/schema-validator.d.ts} +0 -0
- /package/dist/validation/{test-schema-setup.d.ts → node-parameter-schema/test-schema-setup.d.ts} +0 -0
- /package/dist/validation/{input-resolver.d.ts → node-port-resolvers/resolve-main-input-count.d.ts} +0 -0
- /package/dist/validation/{output-resolver.d.ts → node-port-resolvers/resolve-main-output-count.d.ts} +0 -0
package/dist/mock-data/prompt.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.PIN_DATA_SYSTEM_PROMPT = `You are a test data generator for n8n workflow
|
|
|
10
10
|
|
|
11
11
|
RULES:
|
|
12
12
|
1. Data must be consistent across nodes. If node A creates an entity with id "abc-123", downstream nodes referencing that entity must use "abc-123". When a node's "Direct downstream consumers" are listed, emit EXACTLY the field names their parameters/expressions/code read (e.g. a Code node reading item.json.last_details requires a field named "last_details") — never rename or synonymize them.
|
|
13
|
-
2. Generate 1-2 items per node.
|
|
13
|
+
2. Generate 1-2 items per node — UNLESS the Test Scenario calls for zero items for a node (no stored data, empty list, nothing new, all already seen): then that node's value MUST be an empty array []. NEVER represent "no data" as a single item with no fields ({}): a phantom empty item flows downstream and corrupts the run; the empty array IS the correct representation.
|
|
14
14
|
3. When a JSON Schema is provided, follow its structure exactly.
|
|
15
15
|
4. When no schema is provided, generate a realistic response based on the node type, resource, and operation.
|
|
16
16
|
5. Use realistic but clearly fake values (e.g., "jane@example.com", "proj_abc123").
|
|
@@ -18,7 +18,7 @@ RULES:
|
|
|
18
18
|
7. AI root nodes (Agent/Chain) have NODE-TYPE-SPECIFIC output shapes — follow each node's schema or "AI ROOT OUTPUT SHAPE" instruction exactly and never invent a different envelope key. Summary: agent wraps in { "output": ... } (a parsed object matching the parser schema when one is attached, otherwise a plain text string — never a JSON-encoded string); chainLlm uses { "text": "<string>" } without a parser, or { "output": <parsed object> } like agent when a parser is attached; chainRetrievalQa uses { "response": "<string>" }; chainSummarization uses { "output": { "output_text": "<summary>" } }; informationExtractor wraps the extracted fields in { "output": <object> }; textClassifier passes the input item through unchanged; sentimentAnalysis is the input item plus a "sentimentAnalysis" object.
|
|
19
19
|
8. CRITICAL: If a "Test Scenario" section is provided, it is the authoritative test state and OVERRIDES everything else, including the general data context and your own sense of realism. When it describes stored/previous records (e.g. "the store already holds a record with status X"), exact values, counts, literal substrings, or that stored data matches current data, reproduce those constraints EXACTLY — never substitute more "interesting" or more typical data. A boring no-change/empty/matching case is usually the point of the test.
|
|
20
20
|
9. Return ONLY a valid JSON object, no explanation or markdown fencing.
|
|
21
|
-
10. CRITICAL: You MUST generate data for EVERY node listed in "Nodes Requiring Mock Data". Never skip a node, even if the test scenario describes an empty or error response. An empty response is still valid data.`;
|
|
21
|
+
10. CRITICAL: You MUST generate data for EVERY node listed in "Nodes Requiring Mock Data". Never skip a node, even if the test scenario describes an empty or error response. An empty response is still valid data — represent it as an empty array [], never as [{}].`;
|
|
22
22
|
const MAX_EMBEDDED_SCHEMA_CHARS = 3000;
|
|
23
23
|
function buildNodeSchemaSection(ctx) {
|
|
24
24
|
const lines = [];
|
|
@@ -36,7 +36,7 @@ function buildNodeSchemaSection(ctx) {
|
|
|
36
36
|
lines.push(`- AI ROOT OUTPUT SHAPE: every item MUST be ${(0, ai_root_shapes_1.describeAiRootShape)(ctx.nodeType)}`);
|
|
37
37
|
}
|
|
38
38
|
if (ctx.outputParser?.schemaText) {
|
|
39
|
-
const envelopeKey = (0,
|
|
39
|
+
const envelopeKey = (0, context_1.resolveEnvelopeKey)(ctx.nodeType, ctx.schema);
|
|
40
40
|
const target = envelopeKey ? `The \`${envelopeKey}\` object` : 'The top-level `json` fields';
|
|
41
41
|
const label = ctx.outputParser.schemaIsExample
|
|
42
42
|
? `- ${target} must have the same shape and field names as this example:`
|
|
@@ -51,6 +51,14 @@ function buildNodeSchemaSection(ctx) {
|
|
|
51
51
|
lines.push('```');
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
if (ctx.dataTableColumns && ctx.dataTableColumns.length > 0) {
|
|
55
|
+
const columnList = ctx.dataTableColumns.map((c) => `${c.name} (${c.type})`).join(', ');
|
|
56
|
+
lines.push('- REAL Data Table columns — every pinned row MUST contain exactly these keys plus ' +
|
|
57
|
+
'`id` (a NUMBER, auto-incremented: 1, 2, 3…), `createdAt`, `updatedAt` (ISO ' +
|
|
58
|
+
'timestamps), and no others (values may be empty/null when the scenario calls ' +
|
|
59
|
+
`for it): ${columnList}`);
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
54
62
|
if (ctx.schema) {
|
|
55
63
|
const schemaStr = JSON.stringify(ctx.schema, null, 2);
|
|
56
64
|
const truncated = schemaStr.length > MAX_EMBEDDED_SCHEMA_CHARS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/mock-data/prompt.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/mock-data/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,16 @@ export interface OutputParserContext {
|
|
|
10
10
|
schemaText?: string;
|
|
11
11
|
schemaIsExample: boolean;
|
|
12
12
|
}
|
|
13
|
+
export interface DataTableColumnInfo {
|
|
14
|
+
name: string;
|
|
15
|
+
type: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DeclaredFieldContract {
|
|
18
|
+
keys: string[];
|
|
19
|
+
envelopeKey?: string;
|
|
20
|
+
exact: boolean;
|
|
21
|
+
source: 'declared-schema' | 'data-table-columns';
|
|
22
|
+
}
|
|
13
23
|
export interface NodeSchemaContext {
|
|
14
24
|
nodeName: string;
|
|
15
25
|
nodeType: string;
|
|
@@ -18,6 +28,8 @@ export interface NodeSchemaContext {
|
|
|
18
28
|
operation?: string;
|
|
19
29
|
schema?: Record<string, unknown>;
|
|
20
30
|
outputParser?: OutputParserContext;
|
|
31
|
+
dataTableColumns?: DataTableColumnInfo[];
|
|
32
|
+
declaredFields?: DeclaredFieldContract;
|
|
21
33
|
}
|
|
22
34
|
export interface PinDataGenerationInstructions {
|
|
23
35
|
dataDescription: string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NodeSchemaContext, PinData } from './types';
|
|
2
|
+
export interface PinFieldViolation {
|
|
3
|
+
nodeName: string;
|
|
4
|
+
unknownKeys: string[];
|
|
5
|
+
missingKeys: string[];
|
|
6
|
+
declaredKeys: string[];
|
|
7
|
+
envelopeKey?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function collectPinFieldViolations(pinData: PinData, contexts: NodeSchemaContext[]): PinFieldViolation[];
|
|
10
|
+
export declare function buildFieldViolationRetryMessage(violations: PinFieldViolation[]): string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectPinFieldViolations = collectPinFieldViolations;
|
|
4
|
+
exports.buildFieldViolationRetryMessage = buildFieldViolationRetryMessage;
|
|
5
|
+
function collectPinFieldViolations(pinData, contexts) {
|
|
6
|
+
const violations = [];
|
|
7
|
+
for (const ctx of contexts) {
|
|
8
|
+
const contract = ctx.declaredFields;
|
|
9
|
+
if (!contract)
|
|
10
|
+
continue;
|
|
11
|
+
const items = pinData[ctx.nodeName];
|
|
12
|
+
if (!items || items.length === 0)
|
|
13
|
+
continue;
|
|
14
|
+
const declared = new Set(contract.keys);
|
|
15
|
+
const unknownKeys = new Set();
|
|
16
|
+
const missingKeySet = new Set();
|
|
17
|
+
for (const item of items) {
|
|
18
|
+
const json = item.json;
|
|
19
|
+
if (typeof json !== 'object' || json === null || Array.isArray(json)) {
|
|
20
|
+
if (contract.exact)
|
|
21
|
+
for (const key of contract.keys)
|
|
22
|
+
missingKeySet.add(key);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
let fields = json;
|
|
26
|
+
if (contract.envelopeKey) {
|
|
27
|
+
const enveloped = fields[contract.envelopeKey];
|
|
28
|
+
if (typeof enveloped !== 'object' || enveloped === null || Array.isArray(enveloped)) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
fields = enveloped;
|
|
32
|
+
}
|
|
33
|
+
for (const key of Object.keys(fields)) {
|
|
34
|
+
if (!declared.has(key))
|
|
35
|
+
unknownKeys.add(key);
|
|
36
|
+
}
|
|
37
|
+
if (contract.exact) {
|
|
38
|
+
for (const key of contract.keys) {
|
|
39
|
+
if (!(key in fields))
|
|
40
|
+
missingKeySet.add(key);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const missingKeys = [...missingKeySet];
|
|
45
|
+
if (unknownKeys.size > 0 || missingKeys.length > 0) {
|
|
46
|
+
violations.push({
|
|
47
|
+
nodeName: ctx.nodeName,
|
|
48
|
+
unknownKeys: [...unknownKeys],
|
|
49
|
+
missingKeys,
|
|
50
|
+
declaredKeys: contract.keys,
|
|
51
|
+
envelopeKey: contract.envelopeKey,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return violations;
|
|
56
|
+
}
|
|
57
|
+
function buildFieldViolationRetryMessage(violations) {
|
|
58
|
+
const lines = [
|
|
59
|
+
'Your previous response used field names that do not exist on the nodes below.',
|
|
60
|
+
'Regenerate the COMPLETE JSON object (every node, same format), keeping all values scenario-consistent, but use EXACTLY the declared field names — do not rename, synonymize, or invent fields.',
|
|
61
|
+
'Keep the SAME number of items per node as before — do not satisfy a correction by dropping items or returning an empty array unless the scenario itself requires zero items:',
|
|
62
|
+
'',
|
|
63
|
+
];
|
|
64
|
+
for (const v of violations) {
|
|
65
|
+
const location = v.envelopeKey ? ` (inside the \`${v.envelopeKey}\` object)` : '';
|
|
66
|
+
lines.push(`- ${v.nodeName}${location}:`);
|
|
67
|
+
if (v.unknownKeys.length > 0) {
|
|
68
|
+
lines.push(` - remove/rename these unknown fields: ${v.unknownKeys.join(', ')}`);
|
|
69
|
+
}
|
|
70
|
+
if (v.missingKeys.length > 0) {
|
|
71
|
+
lines.push(` - every item must also carry: ${v.missingKeys.join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
lines.push(` - the ONLY valid field names are: ${v.declaredKeys.join(', ')}`);
|
|
74
|
+
}
|
|
75
|
+
return lines.join('\n');
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/mock-data/validate.ts"],"names":[],"mappings":";;;;AAyBA,mCACC,OAAgB,EAChB,QAA6B;IAE7B,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAGtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAKtE,IAAI,QAAQ,CAAC,KAAK;oBAAE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI;wBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5E,SAAS;YACV,CAAC;YACD,IAAI,MAAM,GAAG,IAA+B,CAAC;YAC7C,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAG/C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrF,SAAS;gBACV,CAAC;gBACD,MAAM,GAAG,SAAoC,CAAC;YAC/C,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;wBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QAEvC,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;gBAC7B,WAAW;gBACX,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;aACjC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAGD,yCAAgD,UAA+B;IAC9E,MAAM,KAAK,GAAG;QACb,+EAA+E;QAC/E,gMAAgM;QAChM,8KAA8K;QAC9K,EAAE;KACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -3,4 +3,4 @@ export { ADDITIONAL_FUNCTIONS } from './additional-functions';
|
|
|
3
3
|
export { WORKFLOW_RULES } from './workflow-rules';
|
|
4
4
|
export { WORKFLOW_SDK_PATTERNS } from './workflow-patterns';
|
|
5
5
|
export { WORKFLOW_PATTERNS_DETAILED } from './workflow-patterns-detailed';
|
|
6
|
-
export { SDK_LANGUAGE_REFERENCE } from './sdk-language';
|
|
6
|
+
export { NODE_GROUPS_REFERENCE, SDK_LANGUAGE_REFERENCE } from './sdk-language';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SDK_LANGUAGE_REFERENCE = exports.WORKFLOW_PATTERNS_DETAILED = exports.WORKFLOW_SDK_PATTERNS = exports.WORKFLOW_RULES = exports.ADDITIONAL_FUNCTIONS = exports.EXPRESSION_REFERENCE = void 0;
|
|
3
|
+
exports.SDK_LANGUAGE_REFERENCE = exports.NODE_GROUPS_REFERENCE = exports.WORKFLOW_PATTERNS_DETAILED = exports.WORKFLOW_SDK_PATTERNS = exports.WORKFLOW_RULES = exports.ADDITIONAL_FUNCTIONS = exports.EXPRESSION_REFERENCE = void 0;
|
|
4
4
|
var expressions_1 = require("./expressions");
|
|
5
5
|
Object.defineProperty(exports, "EXPRESSION_REFERENCE", { enumerable: true, get: function () { return expressions_1.EXPRESSION_REFERENCE; } });
|
|
6
6
|
var additional_functions_1 = require("./additional-functions");
|
|
@@ -12,5 +12,6 @@ Object.defineProperty(exports, "WORKFLOW_SDK_PATTERNS", { enumerable: true, get:
|
|
|
12
12
|
var workflow_patterns_detailed_1 = require("./workflow-patterns-detailed");
|
|
13
13
|
Object.defineProperty(exports, "WORKFLOW_PATTERNS_DETAILED", { enumerable: true, get: function () { return workflow_patterns_detailed_1.WORKFLOW_PATTERNS_DETAILED; } });
|
|
14
14
|
var sdk_language_1 = require("./sdk-language");
|
|
15
|
+
Object.defineProperty(exports, "NODE_GROUPS_REFERENCE", { enumerable: true, get: function () { return sdk_language_1.NODE_GROUPS_REFERENCE; } });
|
|
15
16
|
Object.defineProperty(exports, "SDK_LANGUAGE_REFERENCE", { enumerable: true, get: function () { return sdk_language_1.SDK_LANGUAGE_REFERENCE; } });
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompts/sdk-reference/index.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAC7B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA;AAC9B,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompts/sdk-reference/index.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAC7B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA;AAC9B,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,+CAA+E;AAAtE,qHAAA,qBAAqB,OAAA;AAAE,sHAAA,sBAAsB,OAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SDK_LANGUAGE_REFERENCE = void 0;
|
|
3
|
+
exports.SDK_LANGUAGE_REFERENCE = exports.NODE_GROUPS_REFERENCE = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
4
5
|
const ast_interpreter_1 = require("../../ast-interpreter");
|
|
5
6
|
const GROUP_LABELS = {
|
|
6
7
|
workflow: 'Workflow builder',
|
|
@@ -9,6 +10,16 @@ const GROUP_LABELS = {
|
|
|
9
10
|
connection: 'Connection',
|
|
10
11
|
};
|
|
11
12
|
const PUBLIC_METHODS = ast_interpreter_1.SDK_METHODS.filter((m) => m.public);
|
|
13
|
+
function renderRulesLines() {
|
|
14
|
+
return [
|
|
15
|
+
...Object.values(n8n_workflow_1.NODE_GROUPING_RULES).map((r) => `- ${r.sdkReference}`),
|
|
16
|
+
'- **Unique identity.** Group names and ids must be unique within the workflow.',
|
|
17
|
+
'- **Non-empty.** A group needs at least one node.',
|
|
18
|
+
'',
|
|
19
|
+
'Prefer grouping a linear range of nodes — they read most clearly — but that is a',
|
|
20
|
+
'readability guideline, not a rule the server enforces.',
|
|
21
|
+
].join('\n');
|
|
22
|
+
}
|
|
12
23
|
function renderMethodLines() {
|
|
13
24
|
return Object.keys(GROUP_LABELS)
|
|
14
25
|
.map((group) => {
|
|
@@ -32,6 +43,36 @@ function renderInlineConstraintLines() {
|
|
|
32
43
|
const SAFE_METHODS_SENTENCE = `The only non-builder methods available are ${ast_interpreter_1.SAFE_JSON_METHOD_NAMES.map((n) => `\`JSON.${n}\``).join(', ')} ` +
|
|
33
44
|
`and the string methods ${ast_interpreter_1.SAFE_STRING_METHOD_NAMES.map((n) => `\`.${n}()\``).join(', ')}. ` +
|
|
34
45
|
'Native array/string methods such as `.join()`, `.map()`, `.filter()`, `.reduce()`, and `.split()` are NOT available.';
|
|
46
|
+
exports.NODE_GROUPS_REFERENCE = `## Node groups
|
|
47
|
+
|
|
48
|
+
A node group is a named, visual grouping of nodes (a frame on the canvas). It is
|
|
49
|
+
purely organisational — nothing about execution depends on it. Declare one with
|
|
50
|
+
\`.group(name, members, options?)\` on the workflow. Members are the node handles (the
|
|
51
|
+
\`const\` from \`node(...)\`) — the same way connections reference nodes:
|
|
52
|
+
|
|
53
|
+
\`\`\`typescript
|
|
54
|
+
const fetch = node({ /* ... name: 'Fetch data' */ });
|
|
55
|
+
const transform = node({ /* ... name: 'Transform' */ });
|
|
56
|
+
export default workflow('id', 'My workflow')
|
|
57
|
+
.add(fetch)
|
|
58
|
+
.to(transform)
|
|
59
|
+
.group('Ingestion', [fetch, transform], {
|
|
60
|
+
description: 'Pulls the CRM contacts and normalizes them',
|
|
61
|
+
});
|
|
62
|
+
\`\`\`
|
|
63
|
+
|
|
64
|
+
\`description\` is optional and shown when the group is collapsed. Keep it to one
|
|
65
|
+
sentence — anything past ${n8n_workflow_1.GROUP_DESCRIPTION_MAX_LENGTH} characters is cut off.
|
|
66
|
+
|
|
67
|
+
When editing an existing workflow, **keep the \`.group(...)\` calls and their descriptions
|
|
68
|
+
intact** unless the change is specifically about grouping.
|
|
69
|
+
|
|
70
|
+
An invalid group is rejected on save, so these following rules MUST be followed when
|
|
71
|
+
creating or editing groups.
|
|
72
|
+
|
|
73
|
+
Rules:
|
|
74
|
+
${renderRulesLines()}
|
|
75
|
+
`;
|
|
35
76
|
exports.SDK_LANGUAGE_REFERENCE = `# Workflow SDK language reference
|
|
36
77
|
|
|
37
78
|
SDK builder code is a **restricted subset of TypeScript**, not a Code node and
|
|
@@ -45,25 +86,7 @@ ${renderMethodLines()}
|
|
|
45
86
|
|
|
46
87
|
${SAFE_METHODS_SENTENCE}
|
|
47
88
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
A node group is a named, visual grouping of nodes (a frame on the canvas).
|
|
51
|
-
Declare one with \`.group(name, members)\` on the workflow. Members are the node
|
|
52
|
-
handles (the \`const\` from \`node(...)\`) — the same way connections reference nodes:
|
|
53
|
-
|
|
54
|
-
\`\`\`typescript
|
|
55
|
-
const fetch = node({ /* ... name: 'Fetch data' */ });
|
|
56
|
-
const transform = node({ /* ... name: 'Transform' */ });
|
|
57
|
-
export default workflow('id', 'My workflow')
|
|
58
|
-
.add(fetch)
|
|
59
|
-
.to(transform)
|
|
60
|
-
.group('Ingestion', [fetch, transform]);
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
When editing an existing workflow, **keep the \`.group(...)\` calls intact** unless
|
|
64
|
-
the change is specifically about grouping. Group members must form a single
|
|
65
|
-
connected section of the graph and cannot be trigger nodes; an invalid group is
|
|
66
|
-
rejected on save.
|
|
89
|
+
${exports.NODE_GROUPS_REFERENCE}
|
|
67
90
|
|
|
68
91
|
## Forbidden constructs
|
|
69
92
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-language.js","sourceRoot":"","sources":["../../../src/prompts/sdk-reference/sdk-language.ts"],"names":[],"mappings":";;;AAIA,2DAQ+B;AAE/B,MAAM,YAAY,GAAwD;IACzE,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,cAAc;IACpB,cAAc,EAAE,cAAc;IAC9B,UAAU,EAAE,YAAY;CACxB,CAAC;AAEF,MAAM,cAAc,GAAG,6BAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,SAAS,iBAAiB;IACzB,OAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAsC;SACpE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,sCAAoB,CAAC;SACxC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB;IACjC,OAAO,yCAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B;IACnC,OAAO,wCAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,qBAAqB,GAC1B,8CAA8C,wCAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IAC9G,0BAA0B,0CAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;IAC3F,sHAAsH,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-language.js","sourceRoot":"","sources":["../../../src/prompts/sdk-reference/sdk-language.ts"],"names":[],"mappings":"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"}
|
package/dist/types/base.d.ts
CHANGED
|
@@ -285,6 +285,14 @@ export interface ToJSONOptions {
|
|
|
285
285
|
existingGroupIdsByName?: Map<string, string>;
|
|
286
286
|
}
|
|
287
287
|
export type GroupMember = NodeInstance<string, string, unknown>;
|
|
288
|
+
export type GroupOptions = {
|
|
289
|
+
description?: string;
|
|
290
|
+
};
|
|
291
|
+
export type AuthoredNodeGroup = GroupOptions & {
|
|
292
|
+
id?: string;
|
|
293
|
+
name: string;
|
|
294
|
+
members: GroupMember[];
|
|
295
|
+
};
|
|
288
296
|
export interface WorkflowBuilder {
|
|
289
297
|
readonly id: string;
|
|
290
298
|
readonly name: string;
|
|
@@ -303,7 +311,7 @@ export interface WorkflowBuilder {
|
|
|
303
311
|
settings(settings: WorkflowSettings): WorkflowBuilder;
|
|
304
312
|
connect(source: NodeInstance<string, string, unknown>, sourceOutput: number, target: NodeInstance<string, string, unknown>, targetInput: number): WorkflowBuilder;
|
|
305
313
|
getNode(name: string): NodeInstance<string, string, unknown> | undefined;
|
|
306
|
-
group(name: string, members: GroupMember[]): WorkflowBuilder;
|
|
314
|
+
group(name: string, members: GroupMember[], options?: GroupOptions): WorkflowBuilder;
|
|
307
315
|
validate(options?: ValidationOptions): ValidationResult;
|
|
308
316
|
toJSON(options?: ToJSONOptions): WorkflowJSON;
|
|
309
317
|
toFormat<T>(format: string): T;
|
|
@@ -1,34 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly nodeName?: string;
|
|
9
|
-
readonly parameterName?: string;
|
|
10
|
-
readonly violationLevel?: 'critical' | 'major' | 'minor';
|
|
11
|
-
constructor(code: ValidationErrorCode, message: string, nodeName?: string, parameterName?: string, violationLevel?: 'critical' | 'major' | 'minor');
|
|
12
|
-
}
|
|
13
|
-
export declare class ValidationWarning {
|
|
14
|
-
readonly code: ValidationErrorCode;
|
|
15
|
-
readonly message: string;
|
|
16
|
-
readonly nodeName?: string;
|
|
17
|
-
readonly parameterPath?: string;
|
|
18
|
-
readonly originalName?: string;
|
|
19
|
-
readonly violationLevel?: 'critical' | 'major' | 'minor';
|
|
20
|
-
constructor(code: ValidationErrorCode, message: string, nodeName?: string, parameterPath?: string, originalName?: string, violationLevel?: 'critical' | 'major' | 'minor');
|
|
21
|
-
}
|
|
22
|
-
export interface ValidationResult {
|
|
23
|
-
valid: boolean;
|
|
24
|
-
errors: ValidationError[];
|
|
25
|
-
warnings: ValidationWarning[];
|
|
26
|
-
}
|
|
27
|
-
export interface ValidationOptions {
|
|
28
|
-
strictMode?: boolean;
|
|
29
|
-
allowDisconnectedNodes?: boolean;
|
|
30
|
-
allowNoTrigger?: boolean;
|
|
31
|
-
validateSchema?: boolean;
|
|
32
|
-
nodeTypesProvider?: INodeTypes;
|
|
33
|
-
}
|
|
34
|
-
export declare function validateWorkflow(workflowOrJson: WorkflowBuilder | WorkflowJSON, options?: ValidationOptions): ValidationResult;
|
|
1
|
+
export { validateWorkflow, ValidationError, ValidationWarning, type ValidationResult, type ValidationOptions, type ValidationErrorCode, } from './validate-workflow';
|
|
2
|
+
export { getSchemaBaseDirs, setSchemaBaseDirs, validateNodeConfig, type SchemaValidationResult, } from './node-parameter-schema/schema-validator';
|
|
3
|
+
export { type IssueSeverity, isInformationalIssue, partitionValidationIssues, } from './issue-severity';
|
|
4
|
+
export { validateWorkflowBuilder, buildUncheckedNotes, type ValidateWorkflowBuilderOptions, type ValidateWorkflowBuilderResult, type CollectedValidationIssue, type ValidationIssueSource, } from './validate-workflow-builder';
|
|
5
|
+
export { matchesDisplayOptions, checkConditions, type DisplayOptions, type DisplayOptionsContext, } from './display-options';
|
|
6
|
+
export { resolveMainInputCount } from './node-port-resolvers/resolve-main-input-count';
|
|
7
|
+
export { resolveMainOutputCount } from './node-port-resolvers/resolve-main-output-count';
|