n8n-nodes-openui 0.1.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/README.md ADDED
@@ -0,0 +1,116 @@
1
+ # n8n-nodes-openui
2
+
3
+ n8n community nodes for OpenUI generative UI integration. Enables AI agents to output structured UI using OpenUI Lang instead of fragile JSON.
4
+
5
+ ## Installation
6
+
7
+ 1. Open n8n
8
+ 2. Go to **Settings > Community Nodes**
9
+ 3. Enter `n8n-nodes-openui`
10
+ 4. Click **Install**
11
+
12
+ ## Nodes
13
+
14
+ ### OpenUI Prompt Generator
15
+
16
+ Generates system prompts with OpenUI Lang component library for AI agents.
17
+
18
+ **Inputs:**
19
+ - `componentLibrary` (JSON, optional) - Custom component definitions. Uses built-in defaults if empty.
20
+ - `additionalInstructions` (string, optional) - Extra instructions to include.
21
+ - `outputFormat` (options) - `systemPrompt` or `json`.
22
+
23
+ **Output:**
24
+ ```json
25
+ {
26
+ "systemPrompt": "You are a helpful assistant...",
27
+ "componentLibrary": [...]
28
+ }
29
+ ```
30
+
31
+ ### OpenUI Parser
32
+
33
+ Parses OpenUI Lang output from AI into structured data for rendering.
34
+
35
+ **Inputs:**
36
+ - `inputField` (string) - Field containing AI output (default: `text`).
37
+ - `outputFormat` (options) - `openui`, `legacy`, or `both`.
38
+ - `fallbackToLegacy` (boolean) - Try parsing as JSON if not OpenUI Lang.
39
+
40
+ **Output:**
41
+ ```json
42
+ {
43
+ "openui": { "type": "Root", "props": {...}, "children": [...] },
44
+ "legacy": { "products": [...], "booking": {...} },
45
+ "format": "openui",
46
+ "error": null
47
+ }
48
+ ```
49
+
50
+ ## Example Workflow
51
+
52
+ ```
53
+ Webhook
54
+
55
+ OpenUI Prompt Generator (generates system prompt)
56
+
57
+ AI Agent (uses system prompt, outputs OpenUI Lang)
58
+
59
+ OpenUI Parser (converts to structured data)
60
+
61
+ Respond to Webhook
62
+ ```
63
+
64
+ ## Component Library
65
+
66
+ Built-in components:
67
+
68
+ | Component | Description | Required Props |
69
+ |-----------|-------------|----------------|
70
+ | `ProductCard` | Product display | title, image, price, handle |
71
+ | `BookingCard` | Calendar booking | summary, start, end, status |
72
+ | `EventCard` | Calendar event | summary, start, end, status |
73
+ | `TaskCard` | Task item | title |
74
+ | `OrderCard` | Order summary | id, name, total_price, created_at, status |
75
+ | `Stack` | Layout container | children |
76
+ | `Text` | Text content | content |
77
+ | `Card` | Generic card | children |
78
+
79
+ ## Custom Components
80
+
81
+ Pass custom component definitions to the Prompt Generator:
82
+
83
+ ```json
84
+ [
85
+ {
86
+ "name": "InvoiceCard",
87
+ "description": "Displays an invoice",
88
+ "props": [
89
+ { "name": "id", "type": "string", "required": true },
90
+ { "name": "total", "type": "string", "required": true }
91
+ ],
92
+ "example": "invoice = InvoiceCard(\"INV-001\", \"$500\")"
93
+ }
94
+ ]
95
+ ```
96
+
97
+ ## Why OpenUI Lang?
98
+
99
+ | Feature | JSON | OpenUI Lang |
100
+ |---------|------|-------------|
101
+ | Token usage | 100% | ~50% |
102
+ | Streaming | Wait for complete | Progressive |
103
+ | Malformed output | Breaks everything | Drops invalid lines |
104
+ | Model adherence | Inconsistent | Better (simpler syntax) |
105
+
106
+ ## Development
107
+
108
+ ```bash
109
+ npm install
110
+ npm run build
111
+ npm run dev # watch mode
112
+ ```
113
+
114
+ ## License
115
+
116
+ MIT
@@ -0,0 +1,6 @@
1
+ import { INodeType, INodeTypeDescription, INodeExecutionData, IExecuteFunctions } from 'n8n-workflow';
2
+ export declare class OpenUiParser implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
6
+ //# sourceMappingURL=OpenUiParser.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenUiParser.node.d.ts","sourceRoot":"","sources":["../../../nodes/OpenUiParser/OpenUiParser.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,qBAAa,YAAa,YAAW,SAAS;IAC5C,WAAW,EAAE,oBAAoB,CAkD/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA0DxE"}
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenUiParser = void 0;
4
+ class OpenUiParser {
5
+ constructor() {
6
+ this.description = {
7
+ displayName: 'OpenUI Parser',
8
+ name: 'openUiParser',
9
+ group: ['transform'],
10
+ version: 1,
11
+ description: 'Parses OpenUI Lang output into structured data for rendering',
12
+ defaults: {
13
+ name: 'OpenUI Parser',
14
+ },
15
+ inputs: ['main'],
16
+ outputs: ['main'],
17
+ properties: [
18
+ {
19
+ displayName: 'Input Field',
20
+ name: 'inputField',
21
+ type: 'string',
22
+ default: 'text',
23
+ description: 'Field containing the OpenUI Lang output from the AI',
24
+ },
25
+ {
26
+ displayName: 'Output Format',
27
+ name: 'outputFormat',
28
+ type: 'options',
29
+ options: [
30
+ {
31
+ name: 'OpenUI Components',
32
+ value: 'openui',
33
+ description: 'Output parsed OpenUI component tree',
34
+ },
35
+ {
36
+ name: 'Legacy JSON',
37
+ value: 'legacy',
38
+ description: 'Convert to legacy JSON format for backward compatibility',
39
+ },
40
+ {
41
+ name: 'Both',
42
+ value: 'both',
43
+ description: 'Output both OpenUI and legacy formats',
44
+ },
45
+ ],
46
+ default: 'both',
47
+ },
48
+ {
49
+ displayName: 'Fallback to Legacy',
50
+ name: 'fallbackToLegacy',
51
+ type: 'boolean',
52
+ default: true,
53
+ description: 'If input is not valid OpenUI Lang, try to parse as legacy JSON',
54
+ },
55
+ ],
56
+ };
57
+ }
58
+ async execute() {
59
+ const items = this.getInputData();
60
+ const returnData = [];
61
+ for (let i = 0; i < items.length; i++) {
62
+ const inputField = this.getNodeParameter('inputField', i, 'text');
63
+ const outputFormat = this.getNodeParameter('outputFormat', i, 'both');
64
+ const fallbackToLegacy = this.getNodeParameter('fallbackToLegacy', i, true);
65
+ const inputText = items[i].json[inputField] || '';
66
+ let result;
67
+ // Try OpenUI Lang first
68
+ if (isOpenUILang(inputText)) {
69
+ result = parseOpenUILang(inputText);
70
+ }
71
+ else if (fallbackToLegacy) {
72
+ // Try legacy JSON parsing
73
+ result = parseLegacyJson(inputText);
74
+ }
75
+ else {
76
+ result = {
77
+ openui: null,
78
+ legacy: null,
79
+ error: 'Input is not valid OpenUI Lang',
80
+ format: 'unknown',
81
+ };
82
+ }
83
+ if (outputFormat === 'openui') {
84
+ returnData.push({
85
+ json: {
86
+ openui: result.openui,
87
+ format: result.format,
88
+ error: result.error,
89
+ },
90
+ });
91
+ }
92
+ else if (outputFormat === 'legacy') {
93
+ returnData.push({
94
+ json: {
95
+ ...result.legacy,
96
+ format: result.format,
97
+ error: result.error,
98
+ },
99
+ });
100
+ }
101
+ else {
102
+ returnData.push({
103
+ json: {
104
+ openui: result.openui,
105
+ legacy: result.legacy,
106
+ format: result.format,
107
+ error: result.error,
108
+ },
109
+ });
110
+ }
111
+ }
112
+ return [returnData];
113
+ }
114
+ }
115
+ exports.OpenUiParser = OpenUiParser;
116
+ function isOpenUILang(text) {
117
+ if (!text || typeof text !== 'string')
118
+ return false;
119
+ const lines = text.trim().split('\n').filter(l => l.trim());
120
+ // Check for OpenUI Lang patterns
121
+ const assignmentPattern = /^\s*\w+\s*=\s*\w+\(/;
122
+ const hasRoot = lines.some(l => l.includes('root = Root('));
123
+ // Must have at least one assignment
124
+ if (lines.length === 0)
125
+ return false;
126
+ // Check if most lines look like assignments
127
+ const assignmentCount = lines.filter(l => assignmentPattern.test(l)).length;
128
+ const ratio = assignmentCount / lines.length;
129
+ // If we have root and >50% assignments, likely OpenUI Lang
130
+ return hasRoot || ratio > 0.5;
131
+ }
132
+ function parseOpenUILang(text) {
133
+ try {
134
+ const lines = text.trim().split('\n').filter(l => l.trim());
135
+ const components = {};
136
+ let rootComponent = null;
137
+ for (const line of lines) {
138
+ const trimmed = line.trim();
139
+ if (!trimmed || trimmed.startsWith('//'))
140
+ continue;
141
+ // Parse assignment: identifier = Component(args...)
142
+ const match = trimmed.match(/^(\w+)\s*=\s*(\w+)\((.*)?\)$/);
143
+ if (!match)
144
+ continue;
145
+ const [, id, type, argsStr] = match;
146
+ const args = parseArgs(argsStr || '');
147
+ components[id] = {
148
+ type,
149
+ props: args,
150
+ };
151
+ if (id === 'root') {
152
+ rootComponent = components[id];
153
+ }
154
+ }
155
+ // Resolve children references
156
+ for (const comp of Object.values(components)) {
157
+ if (comp.props.children && Array.isArray(comp.props.children)) {
158
+ comp.children = comp.props.children
159
+ .map((ref) => typeof ref === 'string' ? components[ref] : null)
160
+ .filter((c) => c !== null);
161
+ }
162
+ }
163
+ return {
164
+ openui: rootComponent,
165
+ legacy: convertToLegacy(rootComponent, components),
166
+ format: 'openui',
167
+ };
168
+ }
169
+ catch (error) {
170
+ return {
171
+ openui: null,
172
+ legacy: null,
173
+ format: 'unknown',
174
+ error: `Failed to parse OpenUI Lang: ${error instanceof Error ? error.message : 'Unknown error'}`,
175
+ };
176
+ }
177
+ }
178
+ function parseArgs(argsStr) {
179
+ if (!argsStr.trim())
180
+ return {};
181
+ const args = [];
182
+ let depth = 0;
183
+ let current = '';
184
+ // Split by commas, respecting nested brackets
185
+ for (const char of argsStr) {
186
+ if (char === '(' || char === '[' || char === '{')
187
+ depth++;
188
+ if (char === ')' || char === ']' || char === '}')
189
+ depth--;
190
+ if (char === ',' && depth === 0) {
191
+ args.push(parseValue(current.trim()));
192
+ current = '';
193
+ }
194
+ else {
195
+ current += char;
196
+ }
197
+ }
198
+ if (current.trim()) {
199
+ args.push(parseValue(current.trim()));
200
+ }
201
+ // Map positional args to props based on component type
202
+ return { children: args };
203
+ }
204
+ function parseValue(value) {
205
+ if (!value)
206
+ return null;
207
+ // String
208
+ if ((value.startsWith('"') && value.endsWith('"')) ||
209
+ (value.startsWith("'") && value.endsWith("'"))) {
210
+ return value.slice(1, -1);
211
+ }
212
+ // Number
213
+ if (/^-?\d+(\.\d+)?$/.test(value)) {
214
+ return Number(value);
215
+ }
216
+ // Boolean
217
+ if (value === 'true')
218
+ return true;
219
+ if (value === 'false')
220
+ return false;
221
+ // Array
222
+ if (value.startsWith('[') && value.endsWith(']')) {
223
+ try {
224
+ return JSON.parse(value);
225
+ }
226
+ catch {
227
+ return value;
228
+ }
229
+ }
230
+ // Reference to another component
231
+ return value;
232
+ }
233
+ function convertToLegacy(root, components) {
234
+ if (!root)
235
+ return null;
236
+ const legacy = {};
237
+ // Walk the component tree and extract data
238
+ function walk(comp) {
239
+ switch (comp.type) {
240
+ case 'ProductCard':
241
+ if (!legacy.products)
242
+ legacy.products = [];
243
+ legacy.products.push({
244
+ title: String(comp.props[0] || ''),
245
+ image: String(comp.props[1] || ''),
246
+ price: String(comp.props[2] || ''),
247
+ handle: String(comp.props[3] || ''),
248
+ description: String(comp.props[4] || ''),
249
+ });
250
+ break;
251
+ case 'BookingCard':
252
+ legacy.booking = {
253
+ summary: String(comp.props[0] || ''),
254
+ start: String(comp.props[1] || ''),
255
+ end: String(comp.props[2] || ''),
256
+ status: String(comp.props[3] || ''),
257
+ attendees: comp.props[4] ? String(comp.props[4]) : undefined,
258
+ meet_url: comp.props[5] ? String(comp.props[5]) : undefined,
259
+ };
260
+ break;
261
+ case 'EventCard':
262
+ if (!legacy.events)
263
+ legacy.events = [];
264
+ legacy.events.push({
265
+ summary: String(comp.props[0] || ''),
266
+ start: String(comp.props[1] || ''),
267
+ end: String(comp.props[2] || ''),
268
+ status: String(comp.props[3] || ''),
269
+ });
270
+ break;
271
+ case 'TaskCard':
272
+ legacy.task = {
273
+ title: String(comp.props[0] || ''),
274
+ notes: comp.props[1] ? String(comp.props[1]) : undefined,
275
+ };
276
+ break;
277
+ case 'OrderCard':
278
+ if (!legacy.orders)
279
+ legacy.orders = [];
280
+ legacy.orders.push({
281
+ id: String(comp.props[0] || ''),
282
+ name: String(comp.props[1] || ''),
283
+ total_price: String(comp.props[2] || ''),
284
+ created_at: String(comp.props[3] || ''),
285
+ status: String(comp.props[4] || ''),
286
+ });
287
+ break;
288
+ case 'Text':
289
+ if (!legacy.message) {
290
+ legacy.message = String(comp.props[0] || '');
291
+ }
292
+ break;
293
+ }
294
+ // Walk children
295
+ if (comp.children) {
296
+ for (const child of comp.children) {
297
+ walk(child);
298
+ }
299
+ }
300
+ }
301
+ walk(root);
302
+ return Object.keys(legacy).length > 0 ? legacy : null;
303
+ }
304
+ function parseLegacyJson(text) {
305
+ try {
306
+ // Try to extract JSON from markdown code blocks
307
+ const jsonMatch = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
308
+ const jsonStr = jsonMatch ? jsonMatch[1] : text;
309
+ // Try to parse as JSON
310
+ const parsed = JSON.parse(jsonStr.trim());
311
+ // Validate it looks like our expected format
312
+ if (parsed.products || parsed.booking || parsed.events || parsed.task || parsed.orders) {
313
+ return {
314
+ openui: convertLegacyToOpenUI(parsed),
315
+ legacy: parsed,
316
+ format: 'legacy',
317
+ };
318
+ }
319
+ return {
320
+ openui: null,
321
+ legacy: null,
322
+ format: 'unknown',
323
+ error: 'JSON does not contain expected fields',
324
+ };
325
+ }
326
+ catch {
327
+ return {
328
+ openui: null,
329
+ legacy: null,
330
+ format: 'unknown',
331
+ error: 'Failed to parse as JSON',
332
+ };
333
+ }
334
+ }
335
+ function convertLegacyToOpenUI(legacy) {
336
+ const children = [];
337
+ if (legacy.message) {
338
+ children.push({
339
+ type: 'Text',
340
+ props: { content: legacy.message, variant: 'body' },
341
+ });
342
+ }
343
+ if (legacy.products) {
344
+ const productComps = legacy.products.map(p => ({
345
+ type: 'ProductCard',
346
+ props: { title: p.title, image: p.image, price: p.price, handle: p.handle, description: p.description },
347
+ }));
348
+ children.push({
349
+ type: 'Stack',
350
+ props: { children: productComps, direction: 'row', gap: 'm' },
351
+ });
352
+ }
353
+ if (legacy.booking) {
354
+ children.push({
355
+ type: 'BookingCard',
356
+ props: {
357
+ summary: legacy.booking.summary,
358
+ start: legacy.booking.start,
359
+ end: legacy.booking.end,
360
+ status: legacy.booking.status,
361
+ attendees: legacy.booking.attendees,
362
+ meet_url: legacy.booking.meet_url,
363
+ },
364
+ });
365
+ }
366
+ if (legacy.events) {
367
+ const eventComps = legacy.events.map(e => ({
368
+ type: 'EventCard',
369
+ props: { summary: e.summary, start: e.start, end: e.end, status: e.status },
370
+ }));
371
+ children.push({
372
+ type: 'Stack',
373
+ props: { children: eventComps },
374
+ });
375
+ }
376
+ if (legacy.task) {
377
+ children.push({
378
+ type: 'TaskCard',
379
+ props: { title: legacy.task.title, notes: legacy.task.notes },
380
+ });
381
+ }
382
+ if (legacy.orders) {
383
+ const orderComps = legacy.orders.map(o => ({
384
+ type: 'OrderCard',
385
+ props: { id: o.id, name: o.name, total_price: o.total_price, created_at: o.created_at, status: o.status },
386
+ }));
387
+ children.push({
388
+ type: 'Stack',
389
+ props: { children: orderComps },
390
+ });
391
+ }
392
+ return {
393
+ type: 'Root',
394
+ props: { children },
395
+ children,
396
+ };
397
+ }
398
+ //# sourceMappingURL=OpenUiParser.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenUiParser.node.js","sourceRoot":"","sources":["../../../nodes/OpenUiParser/OpenUiParser.node.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAAzB;QACE,gBAAW,GAAyB;YAClC,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,8DAA8D;YAC3E,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;aACtB;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE;gBACV;oBACE,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,MAAM;oBACf,WAAW,EAAE,qDAAqD;iBACnE;gBACD;oBACE,WAAW,EAAE,eAAe;oBAC5B,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,mBAAmB;4BACzB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,qCAAqC;yBACnD;wBACD;4BACE,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,0DAA0D;yBACxE;wBACD;4BACE,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,uCAAuC;yBACrD;qBACF;oBACD,OAAO,EAAE,MAAM;iBAChB;gBACD;oBACE,WAAW,EAAE,oBAAoB;oBACjC,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,gEAAgE;iBAC9E;aACF;SACF,CAAC;IA4DJ,CAAC;IA1DC,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAW,CAAC;YAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,CAAW,CAAC;YAChF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAY,CAAC;YAEvF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAW,IAAI,EAAE,CAAC;YAE5D,IAAI,MAAmB,CAAC;YAExB,wBAAwB;YACxB,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC5B,0BAA0B;gBAC1B,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG;oBACP,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,gCAAgC;oBACvC,MAAM,EAAE,SAAS;iBAClB,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE;wBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE;wBACJ,GAAG,MAAM,CAAC,MAAM;wBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE;wBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;CACF;AA/GD,oCA+GC;AAmDD,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5D,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAE5D,oCAAoC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,4CAA4C;IAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,KAAK,GAAG,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IAE7C,2DAA2D;IAC3D,OAAO,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAoC,EAAE,CAAC;QACvD,IAAI,aAAa,GAA2B,IAAI,CAAC;QAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEnD,oDAAoD;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAEtC,UAAU,CAAC,EAAE,CAAC,GAAG;gBACf,IAAI;gBACJ,KAAK,EAAE,IAAI;aACZ,CAAC;YAEF,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBAClB,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;qBAChC,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBACvE,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC;YAClD,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;SAClG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,8CAA8C;IAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;QAC1D,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,uDAAuD;IACvD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,SAAS;IACT,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS;IACT,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,UAAU;IACV,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEpC,QAAQ;IACR,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAA4B,EAAE,UAA2C;IAChG,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,2CAA2C;IAC3C,SAAS,IAAI,CAAC,IAAqB;QACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,aAAa;gBAChB,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACzC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,CAAC,OAAO,GAAG;oBACf,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC5D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC5D,CAAC;gBACF,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,CAAC,IAAI,GAAG;oBACZ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzD,CAAC;gBACF,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACxC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,MAAM;QACV,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC;IAEX,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhD,uBAAuB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1C,6CAA6C;QAC7C,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACvF,OAAO;gBACL,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC;gBACrC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,QAAQ;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,uCAAuC;SAC/C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,yBAAyB;SACjC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAmB;IAChD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;SACxG,CAAC,CAAC,CAAC;QACJ,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;gBACvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC7B,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;gBACnC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5E,CAAC,CAAC,CAAC;QACJ,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1G,CAAC,CAAC,CAAC;QACJ,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { INodeType, INodeTypeDescription, INodeExecutionData, IExecuteFunctions } from 'n8n-workflow';
2
+ export declare class OpenUiPromptGenerator implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
6
+ //# sourceMappingURL=OpenUiPromptGenerator.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenUiPromptGenerator.node.d.ts","sourceRoot":"","sources":["../../../nodes/OpenUiPromptGenerator/OpenUiPromptGenerator.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,qBAAa,qBAAsB,YAAW,SAAS;IACrD,WAAW,EAAE,oBAAoB,CAiD/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAgCxE"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenUiPromptGenerator = void 0;
4
+ class OpenUiPromptGenerator {
5
+ constructor() {
6
+ this.description = {
7
+ displayName: 'OpenUI Prompt Generator',
8
+ name: 'openUiPromptGenerator',
9
+ group: ['transform'],
10
+ version: 1,
11
+ description: 'Generates system prompts with OpenUI Lang component library',
12
+ defaults: {
13
+ name: 'OpenUI Prompt Generator',
14
+ },
15
+ inputs: ['main'],
16
+ outputs: ['main'],
17
+ properties: [
18
+ {
19
+ displayName: 'Component Library',
20
+ name: 'componentLibrary',
21
+ type: 'json',
22
+ default: '',
23
+ description: 'JSON array of component definitions. Leave empty to use built-in defaults.',
24
+ placeholder: '[{"name": "ProductCard", "props": ["title", "image", "price"]}]',
25
+ },
26
+ {
27
+ displayName: 'Additional Instructions',
28
+ name: 'additionalInstructions',
29
+ type: 'string',
30
+ default: '',
31
+ description: 'Extra instructions to include in the system prompt',
32
+ typeOptions: {
33
+ rows: 3,
34
+ },
35
+ },
36
+ {
37
+ displayName: 'Output Format',
38
+ name: 'outputFormat',
39
+ type: 'options',
40
+ options: [
41
+ {
42
+ name: 'System Prompt',
43
+ value: 'systemPrompt',
44
+ description: 'Output a complete system prompt string',
45
+ },
46
+ {
47
+ name: 'JSON',
48
+ value: 'json',
49
+ description: 'Output the component library as JSON for inspection',
50
+ },
51
+ ],
52
+ default: 'systemPrompt',
53
+ },
54
+ ],
55
+ };
56
+ }
57
+ async execute() {
58
+ const items = this.getInputData();
59
+ const returnData = [];
60
+ for (let i = 0; i < items.length; i++) {
61
+ const componentLibrary = this.getNodeParameter('componentLibrary', i, '');
62
+ const additionalInstructions = this.getNodeParameter('additionalInstructions', i, '');
63
+ const outputFormat = this.getNodeParameter('outputFormat', i, 'systemPrompt');
64
+ const library = componentLibrary
65
+ ? JSON.parse(componentLibrary)
66
+ : getDefaultComponentLibrary();
67
+ if (outputFormat === 'json') {
68
+ returnData.push({
69
+ json: {
70
+ componentLibrary: library,
71
+ },
72
+ });
73
+ }
74
+ else {
75
+ const systemPrompt = generateSystemPrompt(library, additionalInstructions);
76
+ returnData.push({
77
+ json: {
78
+ systemPrompt,
79
+ componentLibrary: library,
80
+ },
81
+ });
82
+ }
83
+ }
84
+ return [returnData];
85
+ }
86
+ }
87
+ exports.OpenUiPromptGenerator = OpenUiPromptGenerator;
88
+ function getDefaultComponentLibrary() {
89
+ return [
90
+ {
91
+ name: 'ProductCard',
92
+ description: 'Displays a product with image, title, price, and optional description',
93
+ props: [
94
+ { name: 'title', type: 'string', description: 'Product name', required: true },
95
+ { name: 'image', type: 'string', description: 'Image URL', required: true },
96
+ { name: 'price', type: 'string', description: 'Price display text', required: true },
97
+ { name: 'handle', type: 'string', description: 'Product handle/slug', required: true },
98
+ { name: 'description', type: 'string', description: 'Short description', required: false },
99
+ ],
100
+ example: 'product = ProductCard("Summer Tee", "https://example.com/img.jpg", "$29.99", "summer-tee")',
101
+ },
102
+ {
103
+ name: 'BookingCard',
104
+ description: 'Displays a calendar booking with time, attendees, and status',
105
+ props: [
106
+ { name: 'summary', type: 'string', description: 'Booking title', required: true },
107
+ { name: 'start', type: 'string', description: 'Start datetime ISO string', required: true },
108
+ { name: 'end', type: 'string', description: 'End datetime ISO string', required: true },
109
+ { name: 'status', type: 'string', description: 'Status: confirmed, pending, cancelled', required: true },
110
+ { name: 'attendees', type: 'string', description: 'Comma-separated attendee list', required: false },
111
+ { name: 'meet_url', type: 'string', description: 'Meeting URL', required: false },
112
+ ],
113
+ example: 'booking = BookingCard("Team Sync", "2024-01-15T10:00:00Z", "2024-01-15T11:00:00Z", "confirmed")',
114
+ },
115
+ {
116
+ name: 'EventCard',
117
+ description: 'Displays a calendar event with time and status',
118
+ props: [
119
+ { name: 'summary', type: 'string', description: 'Event title', required: true },
120
+ { name: 'start', type: 'string', description: 'Start datetime ISO string', required: true },
121
+ { name: 'end', type: 'string', description: 'End datetime ISO string', required: true },
122
+ { name: 'status', type: 'string', description: 'Status: confirmed, tentative, cancelled', required: true },
123
+ ],
124
+ example: 'event = EventCard("Product Launch", "2024-02-01T14:00:00Z", "2024-02-01T16:00:00Z", "confirmed")',
125
+ },
126
+ {
127
+ name: 'TaskCard',
128
+ description: 'Displays a task with title and optional notes',
129
+ props: [
130
+ { name: 'title', type: 'string', description: 'Task title', required: true },
131
+ { name: 'notes', type: 'string', description: 'Additional notes', required: false },
132
+ ],
133
+ example: 'task = TaskCard("Review PR", "Check for security issues")',
134
+ },
135
+ {
136
+ name: 'OrderCard',
137
+ description: 'Displays an order with ID, total, and status',
138
+ props: [
139
+ { name: 'id', type: 'string', description: 'Order ID', required: true },
140
+ { name: 'name', type: 'string', description: 'Order/customer name', required: true },
141
+ { name: 'total_price', type: 'string', description: 'Total price display', required: true },
142
+ { name: 'created_at', type: 'string', description: 'Creation date ISO string', required: true },
143
+ { name: 'status', type: 'string', description: 'Status: pending, processing, shipped, delivered', required: true },
144
+ ],
145
+ example: 'order = OrderCard("ORD-123", "John Doe", "$149.99", "2024-01-10T09:00:00Z", "shipped")',
146
+ },
147
+ {
148
+ name: 'Stack',
149
+ description: 'Vertical or horizontal layout container',
150
+ props: [
151
+ { name: 'children', type: 'array', description: 'Child components', required: true },
152
+ { name: 'direction', type: 'string', description: 'row or column (default)', required: false },
153
+ { name: 'gap', type: 'string', description: 'Gap size: s, m, l', required: false },
154
+ ],
155
+ example: 'layout = Stack([product1, product2], "row", "m")',
156
+ },
157
+ {
158
+ name: 'Text',
159
+ description: 'Text content with optional markdown',
160
+ props: [
161
+ { name: 'content', type: 'string', description: 'Text content', required: true },
162
+ { name: 'variant', type: 'string', description: 'heading, body, caption', required: false },
163
+ ],
164
+ example: 'heading = Text("Here are your products:", "heading")',
165
+ },
166
+ {
167
+ name: 'Card',
168
+ description: 'Generic card container with optional title',
169
+ props: [
170
+ { name: 'children', type: 'array', description: 'Child components', required: true },
171
+ { name: 'title', type: 'string', description: 'Optional card title', required: false },
172
+ ],
173
+ example: 'card = Card([product1, product2], "Recommended Products")',
174
+ },
175
+ ];
176
+ }
177
+ function generateSystemPrompt(library, additionalInstructions) {
178
+ const componentDefs = library.map(c => {
179
+ const propsList = c.props
180
+ .map(p => ` - ${p.name} (${p.type}${p.required ? ', required' : ''}): ${p.description}`)
181
+ .join('\n');
182
+ return `### ${c.name}\n${c.description}\nProps:\n${propsList}\nExample: ${c.example}`;
183
+ }).join('\n\n');
184
+ return `You are a helpful assistant that responds with structured UI using OpenUI Lang.
185
+
186
+ ## OpenUI Lang Syntax
187
+
188
+ OpenUI Lang is a line-oriented language for generating UI. Each line is an assignment:
189
+ \`\`\`
190
+ identifier = Component(args...)
191
+ \`\`\`
192
+
193
+ ### Core Rules
194
+ 1. One statement per line
195
+ 2. Root entry point: \`root = Root([children])\`
196
+ 3. Positional arguments map to props in order
197
+ 4. Forward references are allowed (define root first, then components)
198
+ 5. Use strings for text values, numbers for numeric values
199
+ 6. Arrays use square brackets: [item1, item2]
200
+
201
+ ### Available Components
202
+
203
+ ${componentDefs}
204
+
205
+ ### Output Format
206
+
207
+ Always output OpenUI Lang, not JSON or markdown. Start with the root component, then define each component on its own line.
208
+
209
+ Example response for showing 2 products:
210
+ \`\`\`
211
+ root = Stack([heading, productGrid])
212
+ heading = Text("Here are the products you requested:", "heading")
213
+ productGrid = Stack([product1, product2], "row", "m")
214
+ product1 = ProductCard("Summer Tee", "https://example.com/tee.jpg", "$29.99", "summer-tee", "A comfortable cotton tee")
215
+ product2 = ProductCard("Classic Hoodie", "https://example.com/hoodie.jpg", "$49.99", "classic-hoodie", "Warm fleece hoodie")
216
+ \`\`\`
217
+
218
+ ### Important Rules
219
+ - Always include a root component
220
+ - Use only the components defined above
221
+ - Provide all required props
222
+ - Keep responses concise and relevant to the user's query
223
+ - Do NOT output JSON, markdown code blocks, or plain text - only OpenUI Lang
224
+
225
+ ${additionalInstructions ? `\n## Additional Instructions\n${additionalInstructions}` : ''}`;
226
+ }
227
+ //# sourceMappingURL=OpenUiPromptGenerator.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenUiPromptGenerator.node.js","sourceRoot":"","sources":["../../../nodes/OpenUiPromptGenerator/OpenUiPromptGenerator.node.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "n8n-nodes-openui",
3
+ "version": "0.1.0",
4
+ "description": "n8n nodes for OpenUI generative UI integration",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "dev": "tsc --watch",
11
+ "clean": "rm -rf dist",
12
+ "lint": "eslint nodes/ --ext .ts",
13
+ "test": "vitest run"
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "n8n": {
19
+ "nodes": [
20
+ "dist/nodes/OpenUiPromptGenerator/OpenUiPromptGenerator.node.js",
21
+ "dist/nodes/OpenUiParser/OpenUiParser.node.js"
22
+ ],
23
+ "credentials": []
24
+ },
25
+ "peerDependencies": {
26
+ "n8n-workflow": "*"
27
+ },
28
+ "dependencies": {
29
+ "@openuidev/react-lang": "^0.1.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^20.0.0",
33
+ "n8n-workflow": "latest",
34
+ "typescript": "^5.5.0",
35
+ "vitest": "^2.0.0"
36
+ },
37
+ "keywords": [
38
+ "n8n",
39
+ "n8n-community-node",
40
+ "openui",
41
+ "generative-ui",
42
+ "ai"
43
+ ]
44
+ }