@n8n/workflow-sdk 0.25.0 → 0.26.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/build.tsbuildinfo +1 -1
- package/dist/mock-data/parse.js +12 -2
- package/dist/mock-data/parse.js.map +1 -1
- package/dist/mock-data/prompt.d.ts +1 -1
- package/dist/mock-data/prompt.js +2 -2
- package/dist/mock-data/prompt.js.map +1 -1
- 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 +38 -20
- package/dist/prompts/sdk-reference/sdk-language.js.map +1 -1
- package/dist/workflow-builder/plugins/serializers/json-serializer.js +1 -1
- package/dist/workflow-builder/plugins/serializers/json-serializer.js.map +1 -1
- package/package.json +9 -9
package/dist/mock-data/parse.js
CHANGED
|
@@ -21,15 +21,25 @@ function parsePinDataResponse(responseText, expectedNodes) {
|
|
|
21
21
|
const nodeData = parsed[nodeName];
|
|
22
22
|
if (!Array.isArray(nodeData))
|
|
23
23
|
continue;
|
|
24
|
-
pinData[nodeName] = nodeData
|
|
24
|
+
pinData[nodeName] = nodeData
|
|
25
|
+
.map((item) => {
|
|
25
26
|
if (typeof item === 'object' && item !== null && 'json' in item) {
|
|
26
27
|
return item;
|
|
27
28
|
}
|
|
28
29
|
return { json: item ?? {} };
|
|
29
|
-
})
|
|
30
|
+
})
|
|
31
|
+
.filter((item) => !isEmptyFixtureItem(item));
|
|
30
32
|
}
|
|
31
33
|
return pinData;
|
|
32
34
|
}
|
|
35
|
+
function isEmptyFixtureItem(item) {
|
|
36
|
+
const json = item.json;
|
|
37
|
+
if (typeof json !== 'object' || json === null)
|
|
38
|
+
return false;
|
|
39
|
+
if (Object.keys(json).length > 0)
|
|
40
|
+
return false;
|
|
41
|
+
return !Object.keys(item).some((key) => key !== 'json' && key !== 'pairedItem');
|
|
42
|
+
}
|
|
33
43
|
function tryParseJsonContainer(text) {
|
|
34
44
|
const trimmed = text.trim();
|
|
35
45
|
if (!trimmed.startsWith('{') && !trimmed.startsWith('['))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/mock-data/parse.ts"],"names":[],"mappings":";;;;AAAA,qDAAmD;AACnD,uCAAoD;AAQpD,8BAAqC,YAAoB,EAAE,aAAuB;IACjF,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAY,EAAE,CAAC;IAE5B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/mock-data/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NodeSchemaContext, PinDataGenerationInstructions } from './types';
|
|
2
2
|
import type { WorkflowJSON } from '../types/base';
|
|
3
|
-
export declare const PIN_DATA_SYSTEM_PROMPT = "You are a test data generator for n8n workflow automation. Generate realistic mock API response data for service nodes in a workflow.\n\nRULES:\n1. 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\") \u2014 never rename or synonymize them.\n2. Generate 1-2 items per node.\n3. When a JSON Schema is provided, follow its structure exactly.\n4. When no schema is provided, generate a realistic response based on the node type, resource, and operation.\n5. Use realistic but clearly fake values (e.g., \"jane@example.com\", \"proj_abc123\").\n6. Dates and timestamps MUST be derived from the \"## Date anchors\" block at the end of the prompt \u2014 never from training data. Workflows compare pinned data against the real execution clock ($now, Date.now()); values months in the past get silently filtered out, and HTTP mocks generated later use the same anchors, so stale years make \"stored matches current\" comparisons impossible. When the data description mentions a relative window (\"last 24 hours\", \"past 2 weeks\"), place timestamps safely INSIDE it, never on the boundary.\n7. AI root nodes (Agent/Chain) have NODE-TYPE-SPECIFIC output shapes \u2014 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 \u2014 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.\n8. 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 \u2014 never substitute more \"interesting\" or more typical data. A boring no-change/empty/matching case is usually the point of the test.\n9. Return ONLY a valid JSON object, no explanation or markdown fencing.\n10. 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.";
|
|
3
|
+
export declare const PIN_DATA_SYSTEM_PROMPT = "You are a test data generator for n8n workflow automation. Generate realistic mock API response data for service nodes in a workflow.\n\nRULES:\n1. 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\") \u2014 never rename or synonymize them.\n2. Generate 1-2 items per node \u2014 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.\n3. When a JSON Schema is provided, follow its structure exactly.\n4. When no schema is provided, generate a realistic response based on the node type, resource, and operation.\n5. Use realistic but clearly fake values (e.g., \"jane@example.com\", \"proj_abc123\").\n6. Dates and timestamps MUST be derived from the \"## Date anchors\" block at the end of the prompt \u2014 never from training data. Workflows compare pinned data against the real execution clock ($now, Date.now()); values months in the past get silently filtered out, and HTTP mocks generated later use the same anchors, so stale years make \"stored matches current\" comparisons impossible. When the data description mentions a relative window (\"last 24 hours\", \"past 2 weeks\"), place timestamps safely INSIDE it, never on the boundary.\n7. AI root nodes (Agent/Chain) have NODE-TYPE-SPECIFIC output shapes \u2014 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 \u2014 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.\n8. 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 \u2014 never substitute more \"interesting\" or more typical data. A boring no-change/empty/matching case is usually the point of the test.\n9. Return ONLY a valid JSON object, no explanation or markdown fencing.\n10. 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 \u2014 represent it as an empty array [], never as [{}].";
|
|
4
4
|
export declare function buildNodeSchemaSection(ctx: NodeSchemaContext): string[];
|
|
5
5
|
export interface BuildPinDataUserPromptOptions {
|
|
6
6
|
instructions?: PinDataGenerationInstructions;
|
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 = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/mock-data/prompt.ts"],"names":[],"mappings":";;;;;AAAA,qDAA0F;AAC1F,uCAAuD;AACvD,uCAA8C;AAIjC,QAAA,sBAAsB,GAAG;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/mock-data/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,31 @@ 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)\` 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
|
+
\`\`\`
|
|
61
|
+
|
|
62
|
+
When editing an existing workflow, **keep the \`.group(...)\` calls intact** unless
|
|
63
|
+
the change is specifically about grouping.
|
|
64
|
+
|
|
65
|
+
an invalid group is rejected on save, so these following rules MUST be followed when
|
|
66
|
+
creating or editing groups.
|
|
67
|
+
|
|
68
|
+
Rules:
|
|
69
|
+
${renderRulesLines()}
|
|
70
|
+
`;
|
|
35
71
|
exports.SDK_LANGUAGE_REFERENCE = `# Workflow SDK language reference
|
|
36
72
|
|
|
37
73
|
SDK builder code is a **restricted subset of TypeScript**, not a Code node and
|
|
@@ -45,25 +81,7 @@ ${renderMethodLines()}
|
|
|
45
81
|
|
|
46
82
|
${SAFE_METHODS_SENTENCE}
|
|
47
83
|
|
|
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.
|
|
84
|
+
${exports.NODE_GROUPS_REFERENCE}
|
|
67
85
|
|
|
68
86
|
## Forbidden constructs
|
|
69
87
|
|
|
@@ -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":";;;AAIA,+CAAmD;AAEnD,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,gBAAgB;IACxB,OAAO;QACN,GAAG,MAAM,CAAC,MAAM,CAAC,kCAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;QACvE,gFAAgF;QAChF,mDAAmD;QACnD,EAAE;QACF,kFAAkF;QAClF,wDAAwD;KACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,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;AAmB3G,QAAA,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBnC,gBAAgB,EAAE;CACnB,CAAC;AAGW,QAAA,sBAAsB,GAAG;;;;;;;;;EASpC,iBAAiB,EAAE;;EAEnB,qBAAqB;;EAErB,QAAA,qBAAqB;;;;EAIrB,oBAAoB,EAAE;;;;EAItB,2BAA2B,EAAE;;;;;;EAM7B,yBAAyB,EAAE;;;;;;;;;;;CAW5B,CAAC"}
|
|
@@ -100,7 +100,7 @@ function serializeNode(mapKey, graphNode, nodePositions) {
|
|
|
100
100
|
if (config.extendsCredential) {
|
|
101
101
|
n8nNode.extendsCredential = config.extendsCredential;
|
|
102
102
|
}
|
|
103
|
-
return n8nNode;
|
|
103
|
+
return (0, n8n_workflow_1.normalizeNodeShape)(n8nNode);
|
|
104
104
|
}
|
|
105
105
|
function serializeNodeConnections(graphNode, nodeName) {
|
|
106
106
|
let hasConnections = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-serializer.js","sourceRoot":"","sources":["../../../../src/workflow-builder/plugins/serializers/json-serializer.ts"],"names":[],"mappings":";;;AAMA,+
|
|
1
|
+
{"version":3,"file":"json-serializer.js","sourceRoot":"","sources":["../../../../src/workflow-builder/plugins/serializers/json-serializer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/workflow-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "TypeScript SDK for programmatically creating n8n workflows",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -63,20 +63,20 @@
|
|
|
63
63
|
},
|
|
64
64
|
"files": [
|
|
65
65
|
"dist/**/*",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
66
|
+
"LICENSE.md",
|
|
67
|
+
"LICENSE_EE.md"
|
|
68
68
|
],
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@types/adm-zip": "^0.5.7",
|
|
71
71
|
"@types/estree": "^1.0.8",
|
|
72
72
|
"@types/lodash": "4.17.17",
|
|
73
73
|
"@vitest/coverage-v8": "4.1.9",
|
|
74
|
-
"adm-zip": "^0.
|
|
74
|
+
"adm-zip": "^0.6.0",
|
|
75
75
|
"typescript": "7.0.2",
|
|
76
76
|
"vitest": "^4.1.9",
|
|
77
|
-
"@n8n/eslint-plugin-community-nodes": "0.
|
|
78
|
-
"@n8n/
|
|
79
|
-
"@n8n/
|
|
77
|
+
"@n8n/eslint-plugin-community-nodes": "0.27.0",
|
|
78
|
+
"@n8n/typescript-config": "1.9.0",
|
|
79
|
+
"@n8n/vitest-config": "1.19.0"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@dagrejs/dagre": "^1.1.4",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"lodash": "4.18.1",
|
|
85
85
|
"uuid": "11.1.1",
|
|
86
86
|
"zod": "3.25.67",
|
|
87
|
-
"n8n
|
|
88
|
-
"
|
|
87
|
+
"@n8n/utils": "1.41.0",
|
|
88
|
+
"n8n-workflow": "2.33.0"
|
|
89
89
|
},
|
|
90
90
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
91
91
|
"homepage": "https://n8n.io",
|