@n8n/workflow-sdk 0.31.1 → 0.32.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.
Files changed (55) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/codegen/code-generator.d.ts +1 -0
  3. package/dist/codegen/code-generator.js +10 -9
  4. package/dist/codegen/code-generator.js.map +1 -1
  5. package/dist/codegen/index.d.ts +2 -1
  6. package/dist/codegen/index.js +5 -2
  7. package/dist/codegen/index.js.map +1 -1
  8. package/dist/codegen/locate-node-declarations.d.ts +6 -0
  9. package/dist/codegen/locate-node-declarations.js +65 -0
  10. package/dist/codegen/locate-node-declarations.js.map +1 -0
  11. package/dist/codegen/string-utils.d.ts +4 -0
  12. package/dist/codegen/string-utils.js +75 -0
  13. package/dist/codegen/string-utils.js.map +1 -1
  14. package/dist/codegen/subnode-generator.d.ts +1 -0
  15. package/dist/codegen/subnode-generator.js +30 -13
  16. package/dist/codegen/subnode-generator.js.map +1 -1
  17. package/dist/generate-types/generate-node-defs-cli.d.ts +1 -1
  18. package/dist/generate-types/generate-node-defs-cli.js +8 -3
  19. package/dist/generate-types/generate-node-defs-cli.js.map +1 -1
  20. package/dist/generate-types/generate-types.d.ts +5 -0
  21. package/dist/generate-types/generate-types.js +129 -36
  22. package/dist/generate-types/generate-types.js.map +1 -1
  23. package/dist/generate-types/schema-coverage-cli.d.ts +1 -0
  24. package/dist/generate-types/schema-coverage-cli.js +58 -0
  25. package/dist/generate-types/schema-coverage-cli.js.map +1 -0
  26. package/dist/generate-types/schema-coverage.d.ts +27 -0
  27. package/dist/generate-types/schema-coverage.js +101 -0
  28. package/dist/generate-types/schema-coverage.js.map +1 -0
  29. package/dist/generate-types/schema-harvest-cli.d.ts +1 -0
  30. package/dist/generate-types/schema-harvest-cli.js +65 -0
  31. package/dist/generate-types/schema-harvest-cli.js.map +1 -0
  32. package/dist/generate-types/schema-harvest.d.ts +26 -0
  33. package/dist/generate-types/schema-harvest.js +303 -0
  34. package/dist/generate-types/schema-harvest.js.map +1 -0
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.js +5 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/mock-data/ai-root-shapes.d.ts +1 -0
  39. package/dist/mock-data/ai-root-shapes.js +19 -0
  40. package/dist/mock-data/ai-root-shapes.js.map +1 -1
  41. package/dist/mock-data/index.d.ts +2 -1
  42. package/dist/mock-data/index.js +4 -1
  43. package/dist/mock-data/index.js.map +1 -1
  44. package/dist/mock-data/placeholder.d.ts +5 -0
  45. package/dist/mock-data/placeholder.js +187 -0
  46. package/dist/mock-data/placeholder.js.map +1 -0
  47. package/dist/node-deprecation.d.ts +2 -0
  48. package/dist/node-deprecation.js +11 -0
  49. package/dist/node-deprecation.js.map +1 -0
  50. package/dist/validation/validate-workflow-builder.js +5 -4
  51. package/dist/validation/validate-workflow-builder.js.map +1 -1
  52. package/dist/validation/validate-workflow.d.ts +1 -1
  53. package/dist/validation/validate-workflow.js +19 -0
  54. package/dist/validation/validate-workflow.js.map +1 -1
  55. package/package.json +11 -9
@@ -0,0 +1,27 @@
1
+ import { type NodeTypeDescription } from './generate-types';
2
+ export interface UncoveredCombo {
3
+ resource: string;
4
+ operation: string;
5
+ }
6
+ export interface NodeSchemaCoverage {
7
+ nodeName: string;
8
+ latestVersion: number;
9
+ latestTotalCombos: number;
10
+ latestCoveredCombos: number;
11
+ allTotalCombos: number;
12
+ allCoveredCombos: number;
13
+ uncovered: UncoveredCombo[];
14
+ }
15
+ interface CoverageTotals {
16
+ totalCombos: number;
17
+ coveredCombos: number;
18
+ coveragePercent: number;
19
+ }
20
+ export interface SchemaCoverageReport {
21
+ latest: CoverageTotals;
22
+ allVersions: CoverageTotals;
23
+ nodes: NodeSchemaCoverage[];
24
+ }
25
+ export declare function computeSchemaCoverage(nodes: NodeTypeDescription[]): SchemaCoverageReport;
26
+ export declare function formatCoverageMarkdown(report: SchemaCoverageReport): string;
27
+ export {};
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeSchemaCoverage = computeSchemaCoverage;
4
+ exports.formatCoverageMarkdown = formatCoverageMarkdown;
5
+ const generate_types_1 = require("./generate-types");
6
+ function resourceOperationCombos(node) {
7
+ const combos = [];
8
+ for (const combo of (0, generate_types_1.extractDiscriminatorCombinations)(node)) {
9
+ if (combo.resource !== undefined &&
10
+ combo.operation !== undefined &&
11
+ !(0, generate_types_1.isCustomApiCall)(combo.operation)) {
12
+ combos.push({ resource: combo.resource, operation: combo.operation });
13
+ }
14
+ }
15
+ return combos;
16
+ }
17
+ function isLegacyDescription(node, versions) {
18
+ return node.defaultVersion !== undefined && !versions.includes(node.defaultVersion);
19
+ }
20
+ function computeSchemaCoverage(nodes) {
21
+ const nodeReports = [];
22
+ for (const node of nodes) {
23
+ const combos = resourceOperationCombos(node);
24
+ if (combos.length === 0)
25
+ continue;
26
+ const versions = Array.isArray(node.version) ? node.version : [node.version];
27
+ if (isLegacyDescription(node, versions))
28
+ continue;
29
+ const latestVersion = Math.max(...versions);
30
+ const uncovered = [];
31
+ let latestCoveredCombos = 0;
32
+ let allCoveredCombos = 0;
33
+ for (const version of versions) {
34
+ const schemas = (0, generate_types_1.discoverSchemasForNode)(node.name, version, node.schemaPath);
35
+ for (const combo of combos) {
36
+ if ((0, generate_types_1.findSchemaForOperation)(schemas, combo.resource, combo.operation)) {
37
+ allCoveredCombos++;
38
+ if (version === latestVersion)
39
+ latestCoveredCombos++;
40
+ }
41
+ else if (version === latestVersion) {
42
+ uncovered.push(combo);
43
+ }
44
+ }
45
+ }
46
+ nodeReports.push({
47
+ nodeName: node.name,
48
+ latestVersion,
49
+ latestTotalCombos: combos.length,
50
+ latestCoveredCombos,
51
+ allTotalCombos: combos.length * versions.length,
52
+ allCoveredCombos,
53
+ uncovered,
54
+ });
55
+ }
56
+ return {
57
+ latest: sumTotals(nodeReports, (n) => [n.latestTotalCombos, n.latestCoveredCombos]),
58
+ allVersions: sumTotals(nodeReports, (n) => [n.allTotalCombos, n.allCoveredCombos]),
59
+ nodes: nodeReports.sort((a, b) => b.uncovered.length - a.uncovered.length),
60
+ };
61
+ }
62
+ function sumTotals(nodes, pick) {
63
+ let totalCombos = 0;
64
+ let coveredCombos = 0;
65
+ for (const node of nodes) {
66
+ const [total, covered] = pick(node);
67
+ totalCombos += total;
68
+ coveredCombos += covered;
69
+ }
70
+ return {
71
+ totalCombos,
72
+ coveredCombos,
73
+ coveragePercent: totalCombos === 0 ? 0 : roundToOneDecimal((coveredCombos / totalCombos) * 100),
74
+ };
75
+ }
76
+ function roundToOneDecimal(value) {
77
+ return Math.round(value * 10) / 10;
78
+ }
79
+ function formatCoverageMarkdown(report) {
80
+ const lines = [
81
+ '# Output schema coverage',
82
+ '',
83
+ `Covered (latest node version): ${report.latest.coveragePercent}% (${report.latest.coveredCombos}/${report.latest.totalCombos})`,
84
+ `Covered (all node versions): ${report.allVersions.coveragePercent}% (${report.allVersions.coveredCombos}/${report.allVersions.totalCombos})`,
85
+ '',
86
+ '| Node | Latest version | Covered / Total | % | Top uncovered combos |',
87
+ '| --- | --- | --- | --- | --- |',
88
+ ];
89
+ for (const node of report.nodes) {
90
+ if (node.latestTotalCombos === 0)
91
+ continue;
92
+ const percent = roundToOneDecimal((node.latestCoveredCombos / node.latestTotalCombos) * 100);
93
+ const topUncovered = node.uncovered
94
+ .slice(0, 5)
95
+ .map((combo) => `${combo.resource}/${combo.operation}`)
96
+ .join(', ');
97
+ lines.push(`| ${node.nodeName} | ${node.latestVersion} | ${node.latestCoveredCombos}/${node.latestTotalCombos} | ${percent}% | ${topUncovered} |`);
98
+ }
99
+ return lines.join('\n');
100
+ }
101
+ //# sourceMappingURL=schema-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-coverage.js","sourceRoot":"","sources":["../../src/generate-types/schema-coverage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const path = __importStar(require("path"));
37
+ const schema_harvest_1 = require("./schema-harvest");
38
+ const NODES_BASE_NODES_DIR = path.resolve(__dirname, '../../../../nodes-base/nodes');
39
+ function main() {
40
+ const dryRun = process.argv.includes('--dry-run');
41
+ const result = (0, schema_harvest_1.harvestOutputSchemas)({ nodesRootDir: NODES_BASE_NODES_DIR, dryRun });
42
+ console.log(`${dryRun ? 'Would write' : 'Wrote'} ${result.written.length} schema file(s) from ${result.written.length + result.skippedExisting.length + result.unmapped.length} fixture(s) scanned.`);
43
+ console.log(`Skipped (already covered): ${result.skippedExisting.length}`);
44
+ console.log(`Unmapped (could not derive a schema): ${result.unmapped.length}`);
45
+ if (result.written.length > 0) {
46
+ console.log('\nWritten:');
47
+ for (const entry of result.written) {
48
+ console.log(` ${path.relative(NODES_BASE_NODES_DIR, entry.filePath)}`);
49
+ }
50
+ }
51
+ if (result.unmapped.length > 0) {
52
+ const byReason = new Map();
53
+ for (const entry of result.unmapped) {
54
+ byReason.set(entry.reason, (byReason.get(entry.reason) ?? 0) + 1);
55
+ }
56
+ console.log('\nUnmapped reasons:');
57
+ for (const [reason, count] of byReason) {
58
+ console.log(` ${reason}: ${count}`);
59
+ }
60
+ }
61
+ }
62
+ if (require.main === module) {
63
+ main();
64
+ }
65
+ //# sourceMappingURL=schema-harvest-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-harvest-cli.js","sourceRoot":"","sources":["../../src/generate-types/schema-harvest-cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAY,IAAI,iCAAa;AAE7B,qDAAwD;AAExD,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAErF,SAAS,IAAI;IACZ,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpF,OAAO,CAAC,GAAG,CACV,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,wBAAwB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,sBAAsB,CACxL,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;AACF,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC;AACR,CAAC"}
@@ -0,0 +1,26 @@
1
+ export interface HarvestedSchema {
2
+ fixturePath: string;
3
+ filePath: string;
4
+ nodeName: string;
5
+ version: number;
6
+ resource: string;
7
+ operation: string;
8
+ }
9
+ export interface SkippedExisting {
10
+ fixturePath: string;
11
+ filePath: string;
12
+ }
13
+ export interface UnmappedFixture {
14
+ fixturePath: string;
15
+ reason: 'no-node-path-segment' | 'unexpected-path-shape' | 'parse-error' | 'no-unique-target-node' | 'no-operation-determined' | 'no-output-sample' | 'superseded-major' | 'user-shaped-output';
16
+ }
17
+ export interface HarvestResult {
18
+ written: HarvestedSchema[];
19
+ skippedExisting: SkippedExisting[];
20
+ unmapped: UnmappedFixture[];
21
+ }
22
+ export interface HarvestOptions {
23
+ nodesRootDir: string;
24
+ dryRun?: boolean;
25
+ }
26
+ export declare function harvestOutputSchemas(options: HarvestOptions): HarvestResult;
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.harvestOutputSchemas = harvestOutputSchemas;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const generate_types_1 = require("./generate-types");
40
+ const json_schema_from_data_1 = require("./json-schema-from-data");
41
+ const VERSION_SEGMENT = /^v[\d.]+$/;
42
+ function maxSchemaMajor(schemaDir) {
43
+ let entries;
44
+ try {
45
+ entries = fs.readdirSync(schemaDir, { withFileTypes: true });
46
+ }
47
+ catch {
48
+ return 0;
49
+ }
50
+ let max = 0;
51
+ for (const entry of entries) {
52
+ if (!entry.isDirectory() || !VERSION_SEGMENT.test(entry.name))
53
+ continue;
54
+ const major = Number(entry.name.slice(1).split('.')[0]);
55
+ if (major > max)
56
+ max = major;
57
+ }
58
+ return max;
59
+ }
60
+ function findWorkflowFixtures(dir, results) {
61
+ let entries;
62
+ try {
63
+ entries = fs.readdirSync(dir, { withFileTypes: true });
64
+ }
65
+ catch {
66
+ return;
67
+ }
68
+ for (const entry of entries) {
69
+ const entryPath = path.join(dir, entry.name);
70
+ if (entry.isDirectory()) {
71
+ findWorkflowFixtures(entryPath, results);
72
+ }
73
+ else if (entry.name.endsWith('.workflow.json')) {
74
+ results.push(entryPath);
75
+ }
76
+ }
77
+ }
78
+ function parseFixturePath(nodesRootDir, fixturePath) {
79
+ const relative = path.relative(nodesRootDir, fixturePath);
80
+ const parts = relative.split(path.sep);
81
+ const testIndex = parts.indexOf('test');
82
+ if (testIndex === -1)
83
+ return undefined;
84
+ const nodeFolderSegments = parts.slice(0, testIndex);
85
+ const afterTest = parts.slice(testIndex + 1);
86
+ const nodeIndex = afterTest.indexOf('node');
87
+ if (nodeIndex === -1)
88
+ return undefined;
89
+ let rest = afterTest.slice(nodeIndex + 1);
90
+ if (rest.length > 0 && VERSION_SEGMENT.test(rest[0])) {
91
+ rest = rest.slice(1);
92
+ }
93
+ if (rest.length !== 1 && rest.length !== 2)
94
+ return undefined;
95
+ const filename = rest[rest.length - 1];
96
+ const pathOperation = filename.split('.')[0];
97
+ const pathResource = rest.length === 2 ? rest[0] : undefined;
98
+ return { nodeFolderSegments, pathResource, pathOperation };
99
+ }
100
+ function findTargetNode(nodes, nodeFolderSegments) {
101
+ const folderKey = nodeFolderSegments.join('').toLowerCase();
102
+ const candidates = nodes.filter((node) => node.type.split('.').pop()?.toLowerCase() === folderKey);
103
+ return candidates.length === 1 ? candidates[0] : undefined;
104
+ }
105
+ function findOutputSample(fixture, targetNode) {
106
+ const directPin = fixture.pinData?.[targetNode.name];
107
+ if (directPin && directPin.length > 0)
108
+ return directPin[0].json;
109
+ const connections = fixture.connections?.[targetNode.name]?.main?.[0] ?? [];
110
+ for (const connection of connections) {
111
+ const downstream = fixture.nodes?.find((node) => node.name === connection.node);
112
+ if (downstream?.type !== 'n8n-nodes-base.noOp')
113
+ continue;
114
+ const downstreamPin = fixture.pinData?.[downstream.name];
115
+ if (downstreamPin && downstreamPin.length > 0)
116
+ return downstreamPin[0].json;
117
+ }
118
+ return undefined;
119
+ }
120
+ function isStringParam(value) {
121
+ return typeof value === 'string';
122
+ }
123
+ function stringifySorted(value) {
124
+ return JSON.stringify(value, sortKeysReplacer, 4) + '\n';
125
+ }
126
+ function sortKeysReplacer(_key, value) {
127
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
128
+ return value;
129
+ const sorted = {};
130
+ for (const key of Object.keys(value).sort()) {
131
+ sorted[key] = value[key];
132
+ }
133
+ return sorted;
134
+ }
135
+ const USER_SHAPED_OPERATIONS = new Set([
136
+ 'n8n-nodes-base.microsoftExcel:table:append',
137
+ 'n8n-nodes-base.microsoftExcel:table:getRows',
138
+ 'n8n-nodes-base.microsoftExcel:table:lookup',
139
+ 'n8n-nodes-base.microsoftExcel:worksheet:append',
140
+ 'n8n-nodes-base.microsoftExcel:worksheet:readRows',
141
+ 'n8n-nodes-base.microsoftExcel:worksheet:update',
142
+ 'n8n-nodes-base.microsoftExcel:worksheet:upsert',
143
+ ]);
144
+ const OPAQUE_OUTPUT_PROPERTIES = new Set(['custom_fields']);
145
+ const OPAQUE_KEY = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|[0-9a-f]{32,})$/i;
146
+ function relaxInferredSchema(schema) {
147
+ if (schema.type === 'null')
148
+ return {};
149
+ if (schema.type === 'array') {
150
+ return { type: 'array', items: schema.items ? relaxInferredSchema(schema.items) : {} };
151
+ }
152
+ if (schema.type === 'object' && schema.properties) {
153
+ const named = {};
154
+ const keyedByRecordId = [];
155
+ for (const [key, value] of Object.entries(schema.properties)) {
156
+ const relaxed = OPAQUE_OUTPUT_PROPERTIES.has(key) && value.type === 'object'
157
+ ? { type: 'object' }
158
+ : relaxInferredSchema(value);
159
+ if (OPAQUE_KEY.test(key))
160
+ keyedByRecordId.push(relaxed);
161
+ else
162
+ named[key] = relaxed;
163
+ }
164
+ if (keyedByRecordId.length > 0 && Object.keys(named).length === 0) {
165
+ return { type: 'object', additionalProperties: keyedByRecordId.reduce(mergeSchemas) };
166
+ }
167
+ return { type: 'object', properties: named };
168
+ }
169
+ return schema;
170
+ }
171
+ function unionTypes(a, b) {
172
+ const types = [...new Set([a ?? [], b ?? []].flat())].sort();
173
+ return types.length === 1 ? types[0] : types;
174
+ }
175
+ function isSchemaValue(value) {
176
+ return typeof value === 'object';
177
+ }
178
+ function mergeSchemas(a, b) {
179
+ if (a.type === undefined)
180
+ return b;
181
+ if (b.type === undefined)
182
+ return a;
183
+ if (a.type === 'object' && b.type === 'object') {
184
+ return mergeObjectSchemas(a, b);
185
+ }
186
+ if (a.type === 'array' && b.type === 'array') {
187
+ return { type: 'array', items: mergeSchemas(a.items ?? {}, b.items ?? {}) };
188
+ }
189
+ return a.type === b.type ? a : { type: unionTypes(a.type, b.type) };
190
+ }
191
+ function mergeObjectSchemas(a, b) {
192
+ const properties = { ...a.properties };
193
+ for (const [key, value] of Object.entries(b.properties ?? {})) {
194
+ const existing = properties[key];
195
+ properties[key] = existing ? mergeSchemas(existing, value) : value;
196
+ }
197
+ const maps = [a.additionalProperties, b.additionalProperties].filter(isSchemaValue);
198
+ if (maps.length === 0)
199
+ return { type: 'object', properties };
200
+ const additionalProperties = maps.reduce(mergeSchemas);
201
+ return Object.keys(properties).length === 0
202
+ ? { type: 'object', additionalProperties }
203
+ : { type: 'object', properties, additionalProperties };
204
+ }
205
+ function isCoveredBySameMajor(schemaDir, major, relativeFile) {
206
+ let entries;
207
+ try {
208
+ entries = fs.readdirSync(schemaDir, { withFileTypes: true });
209
+ }
210
+ catch {
211
+ return false;
212
+ }
213
+ return entries.some((entry) => entry.isDirectory() &&
214
+ VERSION_SEGMENT.test(entry.name) &&
215
+ Number(entry.name.slice(1).split('.')[0]) === major &&
216
+ fs.existsSync(path.join(schemaDir, entry.name, relativeFile)));
217
+ }
218
+ function harvestOutputSchemas(options) {
219
+ const { nodesRootDir, dryRun = false } = options;
220
+ const fixturePaths = [];
221
+ findWorkflowFixtures(nodesRootDir, fixturePaths);
222
+ fixturePaths.sort();
223
+ const result = { written: [], skippedExisting: [], unmapped: [] };
224
+ const claims = new Map();
225
+ for (const fixturePath of fixturePaths) {
226
+ const parsed = parseFixturePath(nodesRootDir, fixturePath);
227
+ if (!parsed) {
228
+ result.unmapped.push({ fixturePath, reason: 'no-node-path-segment' });
229
+ continue;
230
+ }
231
+ const { nodeFolderSegments, pathResource, pathOperation } = parsed;
232
+ let fixture;
233
+ try {
234
+ fixture = JSON.parse(fs.readFileSync(fixturePath, 'utf-8'));
235
+ }
236
+ catch {
237
+ result.unmapped.push({ fixturePath, reason: 'parse-error' });
238
+ continue;
239
+ }
240
+ const targetNode = findTargetNode(fixture.nodes ?? [], nodeFolderSegments);
241
+ if (!targetNode) {
242
+ result.unmapped.push({ fixturePath, reason: 'no-unique-target-node' });
243
+ continue;
244
+ }
245
+ const params = targetNode.parameters ?? {};
246
+ const operation = isStringParam(params.operation)
247
+ ? params.operation
248
+ : pathResource !== undefined
249
+ ? pathOperation
250
+ : undefined;
251
+ if (operation === undefined) {
252
+ result.unmapped.push({ fixturePath, reason: 'no-operation-determined' });
253
+ continue;
254
+ }
255
+ const resource = isStringParam(params.resource) ? params.resource : (pathResource ?? '');
256
+ if (USER_SHAPED_OPERATIONS.has(`${targetNode.type}:${resource}:${operation}`)) {
257
+ result.unmapped.push({ fixturePath, reason: 'user-shaped-output' });
258
+ continue;
259
+ }
260
+ const sample = findOutputSample(fixture, targetNode);
261
+ if (sample === undefined) {
262
+ result.unmapped.push({ fixturePath, reason: 'no-output-sample' });
263
+ continue;
264
+ }
265
+ const inferredSchema = relaxInferredSchema((0, json_schema_from_data_1.generateJsonSchemaFromData)(sample));
266
+ const targetVersion = targetNode.typeVersion ?? 1;
267
+ const versionDir = `v${(0, generate_types_1.padVersion)(targetVersion)}`;
268
+ const schemaDir = path.join(nodesRootDir, ...nodeFolderSegments, '__schema__');
269
+ if (Math.floor(targetVersion) < maxSchemaMajor(schemaDir)) {
270
+ result.unmapped.push({ fixturePath, reason: 'superseded-major' });
271
+ continue;
272
+ }
273
+ const relativeFile = resource ? path.join(resource, `${operation}.json`) : `${operation}.json`;
274
+ const filePath = path.join(schemaDir, versionDir, relativeFile);
275
+ const claim = claims.get(filePath);
276
+ if (claim) {
277
+ claims.set(filePath, mergeSchemas(claim, inferredSchema));
278
+ result.skippedExisting.push({ fixturePath, filePath });
279
+ continue;
280
+ }
281
+ if (isCoveredBySameMajor(schemaDir, Math.floor(targetVersion), relativeFile)) {
282
+ result.skippedExisting.push({ fixturePath, filePath });
283
+ continue;
284
+ }
285
+ claims.set(filePath, inferredSchema);
286
+ result.written.push({
287
+ fixturePath,
288
+ filePath,
289
+ nodeName: targetNode.type,
290
+ version: targetNode.typeVersion ?? 1,
291
+ resource,
292
+ operation,
293
+ });
294
+ }
295
+ if (!dryRun) {
296
+ for (const [filePath, schema] of claims) {
297
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
298
+ fs.writeFileSync(filePath, stringifySorted(schema));
299
+ }
300
+ }
301
+ return result;
302
+ }
303
+ //# sourceMappingURL=schema-harvest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-harvest.js","sourceRoot":"","sources":["../../src/generate-types/schema-harvest.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,8 +19,9 @@ export { lintPythonCode } from './lint/code-node/python';
19
19
  export type { SourceLintIssue } from './lint/types';
20
20
  export type { CodeExecutionMode } from './lint/code-node/extract-snippets';
21
21
  export { generateWorkflowCode } from './codegen/index';
22
- export { emitInstanceAi, SDK_IMPORTABLE_FUNCTIONS, type EmitInstanceAiOptions, } from './codegen/index';
22
+ export { emitInstanceAi, buildImports, SDK_IMPORTABLE_FUNCTIONS, type EmitInstanceAiOptions, } from './codegen/index';
23
23
  export { parseWorkflowCode, parseWorkflowCodeToBuilder } from './codegen/parse-workflow-code';
24
+ export { locateNodeDeclarations, type NodeDeclarationLocation, } from './codegen/locate-node-declarations';
24
25
  export * from './generate-types';
25
26
  export * from './mock-data';
26
27
  export { PluginRegistry, pluginRegistry, registerDefaultPlugins, type ValidationIssue, type PluginContext, type MutablePluginContext, type ValidatorPlugin, type CompositeHandlerPlugin, type SerializerPlugin, } from './workflow-builder/plugins';
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SDK_IMPORTABLE_FUNCTIONS = exports.emitInstanceAi = exports.generateWorkflowCode = exports.lintPythonCode = exports.validateWorkflowBuilder = exports.partitionValidationIssues = exports.isInformationalIssue = exports.validateNodeConfig = exports.setSchemaBaseDirs = exports.getSchemaBaseDirs = exports.ValidationWarning = exports.ValidationError = exports.validateWorkflow = exports.hasProperty = exports.getProperty = exports.isPlainObject = exports.toGroupValidationNodes = exports.toEngineConnections = exports.dropInvalidWorkflowJsonGroups = exports.runOnceForEachItem = exports.runOnceForAllItems = exports.createFromAIExpression = exports.nodeJson = exports.expr = exports.isExpression = exports.parseExpression = exports.nextBatch = exports.splitInBatches = exports.fromAi = exports.textSplitter = exports.documentLoader = exports.retriever = exports.vectorStore = exports.embeddings = exports.embedding = exports.outputParser = exports.tool = exports.memory = exports.languageModel = exports.merge = exports.switchCase = exports.ifElse = exports.newCredential = exports.placeholder = exports.sticky = exports.trigger = exports.node = exports.workflow = exports.isNodeInstance = exports.isNodeChain = void 0;
18
- exports.NODE_Y_SPACING = exports.NODE_X_SPACING = exports.DEFAULT_NODE_SIZE = exports.GRID_SIZE = exports.isDataTableType = exports.isWebhookType = exports.isHttpRequestType = exports.isSplitInBatchesType = exports.isStickyNoteType = exports.isMergeNodeType = exports.isSwitchNodeType = exports.isIfNodeType = exports.NODE_TYPES = exports.matchesDisplayOptions = exports.normalizePinData = exports.inferSchemasFromRunData = exports.discoverOutputSchemaForNode = exports.needsPinData = exports.registerDefaultPlugins = exports.pluginRegistry = exports.PluginRegistry = exports.parseWorkflowCodeToBuilder = exports.parseWorkflowCode = void 0;
17
+ exports.buildImports = exports.emitInstanceAi = exports.generateWorkflowCode = exports.lintPythonCode = exports.validateWorkflowBuilder = exports.partitionValidationIssues = exports.isInformationalIssue = exports.validateNodeConfig = exports.setSchemaBaseDirs = exports.getSchemaBaseDirs = exports.ValidationWarning = exports.ValidationError = exports.validateWorkflow = exports.hasProperty = exports.getProperty = exports.isPlainObject = exports.toGroupValidationNodes = exports.toEngineConnections = exports.dropInvalidWorkflowJsonGroups = exports.runOnceForEachItem = exports.runOnceForAllItems = exports.createFromAIExpression = exports.nodeJson = exports.expr = exports.isExpression = exports.parseExpression = exports.nextBatch = exports.splitInBatches = exports.fromAi = exports.textSplitter = exports.documentLoader = exports.retriever = exports.vectorStore = exports.embeddings = exports.embedding = exports.outputParser = exports.tool = exports.memory = exports.languageModel = exports.merge = exports.switchCase = exports.ifElse = exports.newCredential = exports.placeholder = exports.sticky = exports.trigger = exports.node = exports.workflow = exports.isNodeInstance = exports.isNodeChain = void 0;
18
+ exports.NODE_Y_SPACING = exports.NODE_X_SPACING = exports.DEFAULT_NODE_SIZE = exports.GRID_SIZE = exports.isDataTableType = exports.isWebhookType = exports.isHttpRequestType = exports.isSplitInBatchesType = exports.isStickyNoteType = exports.isMergeNodeType = exports.isSwitchNodeType = exports.isIfNodeType = exports.NODE_TYPES = exports.matchesDisplayOptions = exports.normalizePinData = exports.inferSchemasFromRunData = exports.discoverOutputSchemaForNode = exports.needsPinData = exports.registerDefaultPlugins = exports.pluginRegistry = exports.PluginRegistry = exports.locateNodeDeclarations = exports.parseWorkflowCodeToBuilder = exports.parseWorkflowCode = exports.SDK_IMPORTABLE_FUNCTIONS = void 0;
19
19
  var base_1 = require("./types/base");
20
20
  Object.defineProperty(exports, "isNodeChain", { enumerable: true, get: function () { return base_1.isNodeChain; } });
21
21
  Object.defineProperty(exports, "isNodeInstance", { enumerable: true, get: function () { return base_1.isNodeInstance; } });
@@ -79,10 +79,13 @@ var index_1 = require("./codegen/index");
79
79
  Object.defineProperty(exports, "generateWorkflowCode", { enumerable: true, get: function () { return index_1.generateWorkflowCode; } });
80
80
  var index_2 = require("./codegen/index");
81
81
  Object.defineProperty(exports, "emitInstanceAi", { enumerable: true, get: function () { return index_2.emitInstanceAi; } });
82
+ Object.defineProperty(exports, "buildImports", { enumerable: true, get: function () { return index_2.buildImports; } });
82
83
  Object.defineProperty(exports, "SDK_IMPORTABLE_FUNCTIONS", { enumerable: true, get: function () { return index_2.SDK_IMPORTABLE_FUNCTIONS; } });
83
84
  var parse_workflow_code_1 = require("./codegen/parse-workflow-code");
84
85
  Object.defineProperty(exports, "parseWorkflowCode", { enumerable: true, get: function () { return parse_workflow_code_1.parseWorkflowCode; } });
85
86
  Object.defineProperty(exports, "parseWorkflowCodeToBuilder", { enumerable: true, get: function () { return parse_workflow_code_1.parseWorkflowCodeToBuilder; } });
87
+ var locate_node_declarations_1 = require("./codegen/locate-node-declarations");
88
+ Object.defineProperty(exports, "locateNodeDeclarations", { enumerable: true, get: function () { return locate_node_declarations_1.locateNodeDeclarations; } });
86
89
  __exportStar(require("./generate-types"), exports);
87
90
  __exportStar(require("./mock-data"), exports);
88
91
  var plugins_1 = require("./workflow-builder/plugins");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA6EA,qCAA2D;AAAlD,mGAAA,WAAW,OAAA;AAAE,sGAAA,cAAc,OAAA;AAMpC,uDAA8C;AAArC,4GAAA,QAAQ,OAAA;AAGjB,8EASuD;AARtD,oGAAA,IAAI,OAAA;AACJ,uGAAA,OAAO,OAAA;AACP,sGAAA,MAAM,OAAA;AACN,2GAAA,WAAW,OAAA;AACX,6GAAA,aAAa,OAAA;AACb,sGAAA,MAAM,OAAA;AACN,0GAAA,UAAU,OAAA;AACV,qGAAA,KAAK,OAAA;AAON,sFAY2D;AAX1D,iHAAA,aAAa,OAAA;AACb,0GAAA,MAAM,OAAA;AACN,wGAAA,IAAI,OAAA;AACJ,gHAAA,YAAY,OAAA;AACZ,6GAAA,SAAS,OAAA;AACT,8GAAA,UAAU,OAAA;AACV,+GAAA,WAAW,OAAA;AACX,6GAAA,SAAS,OAAA;AACT,kHAAA,cAAc,OAAA;AACd,gHAAA,YAAY,OAAA;AACZ,0GAAA,MAAM,OAAA;AAaP,8FAA2F;AAAlF,kHAAA,cAAc,OAAA;AAOvB,kFAAgF;AAAvE,uGAAA,SAAS,OAAA;AAGlB,2CAMsB;AALrB,6GAAA,eAAe,OAAA;AACf,0GAAA,YAAY,OAAA;AACZ,kGAAA,IAAI,OAAA;AACJ,sGAAA,QAAQ,OAAA;AACR,oHAAA,sBAAsB,OAAA;AAIvB,qDAA8E;AAArE,kHAAA,kBAAkB,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAC/C,qFAI8C;AAH7C,6IAAA,6BAA6B,OAAA;AAC7B,mIAAA,mBAAmB,OAAA;AACnB,sIAAA,sBAAsB,OAAA;AAIvB,mDAA8E;AAArE,4GAAA,aAAa,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,0GAAA,WAAW,OAAA;AAGhD,2CAkBsB;AAjBrB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,+GAAA,iBAAiB,OAAA;AACjB,+GAAA,iBAAiB,OAAA;AAIjB,gHAAA,kBAAkB,OAAA;AAGlB,kHAAA,oBAAoB,OAAA;AACpB,uHAAA,yBAAyB,OAAA;AACzB,qHAAA,uBAAuB,OAAA;AAaxB,kDAAyD;AAAhD,wGAAA,cAAc,OAAA;AAKvB,yCAAuD;AAA9C,6GAAA,oBAAoB,OAAA;AAC7B,yCAIyB;AAHxB,uGAAA,cAAc,OAAA;AACd,iHAAA,wBAAwB,OAAA;AAGzB,qEAA8F;AAArF,wHAAA,iBAAiB,OAAA;AAAE,iIAAA,0BAA0B,OAAA;AAGtD,mDAAiC;AAGjC,8CAA4B;AAG5B,sDAaoC;AAXnC,yGAAA,cAAc,OAAA;AACd,yGAAA,cAAc,OAAA;AAEd,iHAAA,sBAAsB,OAAA;AAWvB,mDAM0B;AALzB,8GAAA,YAAY,OAAA;AACZ,6HAAA,2BAA2B,OAAA;AAC3B,yHAAA,uBAAuB,OAAA;AACvB,kHAAA,gBAAgB,OAAA;AAKjB,gEAIsC;AAHrC,wHAAA,qBAAqB,OAAA;AAMtB,yCAWqB;AAVpB,uGAAA,UAAU,OAAA;AAEV,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,iHAAA,oBAAoB,OAAA;AACpB,8GAAA,iBAAiB,OAAA;AACjB,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AAKhB,0DAKsC;AAJrC,sGAAA,SAAS,OAAA;AACT,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA6EA,qCAA2D;AAAlD,mGAAA,WAAW,OAAA;AAAE,sGAAA,cAAc,OAAA;AAMpC,uDAA8C;AAArC,4GAAA,QAAQ,OAAA;AAGjB,8EASuD;AARtD,oGAAA,IAAI,OAAA;AACJ,uGAAA,OAAO,OAAA;AACP,sGAAA,MAAM,OAAA;AACN,2GAAA,WAAW,OAAA;AACX,6GAAA,aAAa,OAAA;AACb,sGAAA,MAAM,OAAA;AACN,0GAAA,UAAU,OAAA;AACV,qGAAA,KAAK,OAAA;AAON,sFAY2D;AAX1D,iHAAA,aAAa,OAAA;AACb,0GAAA,MAAM,OAAA;AACN,wGAAA,IAAI,OAAA;AACJ,gHAAA,YAAY,OAAA;AACZ,6GAAA,SAAS,OAAA;AACT,8GAAA,UAAU,OAAA;AACV,+GAAA,WAAW,OAAA;AACX,6GAAA,SAAS,OAAA;AACT,kHAAA,cAAc,OAAA;AACd,gHAAA,YAAY,OAAA;AACZ,0GAAA,MAAM,OAAA;AAaP,8FAA2F;AAAlF,kHAAA,cAAc,OAAA;AAOvB,kFAAgF;AAAvE,uGAAA,SAAS,OAAA;AAGlB,2CAMsB;AALrB,6GAAA,eAAe,OAAA;AACf,0GAAA,YAAY,OAAA;AACZ,kGAAA,IAAI,OAAA;AACJ,sGAAA,QAAQ,OAAA;AACR,oHAAA,sBAAsB,OAAA;AAIvB,qDAA8E;AAArE,kHAAA,kBAAkB,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAC/C,qFAI8C;AAH7C,6IAAA,6BAA6B,OAAA;AAC7B,mIAAA,mBAAmB,OAAA;AACnB,sIAAA,sBAAsB,OAAA;AAIvB,mDAA8E;AAArE,4GAAA,aAAa,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,0GAAA,WAAW,OAAA;AAGhD,2CAkBsB;AAjBrB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,+GAAA,iBAAiB,OAAA;AACjB,+GAAA,iBAAiB,OAAA;AAIjB,gHAAA,kBAAkB,OAAA;AAGlB,kHAAA,oBAAoB,OAAA;AACpB,uHAAA,yBAAyB,OAAA;AACzB,qHAAA,uBAAuB,OAAA;AAaxB,kDAAyD;AAAhD,wGAAA,cAAc,OAAA;AAKvB,yCAAuD;AAA9C,6GAAA,oBAAoB,OAAA;AAC7B,yCAKyB;AAJxB,uGAAA,cAAc,OAAA;AACd,qGAAA,YAAY,OAAA;AACZ,iHAAA,wBAAwB,OAAA;AAGzB,qEAA8F;AAArF,wHAAA,iBAAiB,OAAA;AAAE,iIAAA,0BAA0B,OAAA;AACtD,+EAG4C;AAF3C,kIAAA,sBAAsB,OAAA;AAKvB,mDAAiC;AAGjC,8CAA4B;AAG5B,sDAaoC;AAXnC,yGAAA,cAAc,OAAA;AACd,yGAAA,cAAc,OAAA;AAEd,iHAAA,sBAAsB,OAAA;AAWvB,mDAM0B;AALzB,8GAAA,YAAY,OAAA;AACZ,6HAAA,2BAA2B,OAAA;AAC3B,yHAAA,uBAAuB,OAAA;AACvB,kHAAA,gBAAgB,OAAA;AAKjB,gEAIsC;AAHrC,wHAAA,qBAAqB,OAAA;AAMtB,yCAWqB;AAVpB,uGAAA,UAAU,OAAA;AAEV,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,iHAAA,oBAAoB,OAAA;AACpB,8GAAA,iBAAiB,OAAA;AACjB,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AAKhB,0DAKsC;AAJrC,sGAAA,SAAS,OAAA;AACT,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA"}
@@ -2,3 +2,4 @@ export declare const AGENT_NODE_TYPE = "@n8n/n8n-nodes-langchain.agent";
2
2
  export declare function isAiRootNodeType(nodeType: string): boolean;
3
3
  export declare function describeAiRootShape(nodeType: string): string;
4
4
  export declare function findEnvelopeKey(schema: Record<string, unknown> | undefined): string | undefined;
5
+ export declare function buildAiRootPlaceholder(nodeType: string, filler: string): Record<string, unknown> | undefined;