n8n-nodes-polycracker 1.0.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,73 @@
1
+ # Polycracker: Official n8n Client for the Polycracker Platform
2
+
3
+ This package provides the official **Workflow API** integration for the Polycracker AI Orchestration Platform. By installing these nodes, you are connecting your n8n workflows directly to the **Polycracker infrastructure**—a production-grade backend built to eliminate "workflow spaghetti" and enable stateful, multi-step AI execution.
4
+
5
+ ---
6
+
7
+ ## 🚀 The Polycracker Ecosystem
8
+ Polycracker is a unified AI orchestration ecosystem designed to power enterprise-grade sequences. Your n8n nodes act as the **Orchestration Client** for our platform, bridging your local canvas with our high-performance backend:
9
+
10
+ * **Workflow API:** Stateful, multi-step orchestration. Use our suite of nodes to plan and execute complex sequences that persist state across your n8n canvas.
11
+ * **Universal API:** High-performance, model-agnostic LLM execution. Access top-tier intelligence with built-in structured output.
12
+ * **Memory API:** Production-grade RAG. A tenant-isolated engine that injects long-term context into your AI, curing model amnesia.
13
+
14
+ ---
15
+
16
+ ## 📦 Node Suite: The Workflow API Plane
17
+ The following nodes comprise the core orchestration suite, enabling seamless state management and intelligent execution directly within your n8n workflows:
18
+
19
+ | Node | Purpose | API Pillar |
20
+ | :--- | :--- | :--- |
21
+ | **Parrot Integration** | The Handshake. Initializes and plans complex, multi-step orchestration sequences. | Workflow API |
22
+ | **Parrot Smart** | The Executor. Executes intelligent logic steps and manages session-bound AI state. | Workflow API |
23
+ | **Parrot Gate** | The Filter. Applies privacy-first schema healing and data scrubbing before processing. | Workflow API |
24
+
25
+ ---
26
+
27
+ ## ⚙️ Quick Start
28
+
29
+ 1. **Install:** `npm install n8n-nodes-polycracker`
30
+ 2. **Authenticate:** Sign up at [www.polycracker.dev](https://www.polycracker.dev), then generate your API key. Create a new **ParrotApi** credential in n8n and input your key.
31
+ 3. **Orchestrate:** Start your sequence with **Parrot Integration** to generate your `sequence_jwt`, then pass it through **Parrot Smart** to execute your logic steps.
32
+
33
+ ---
34
+
35
+ ## 💰 Billing & Transparency
36
+ Usage is billed via your Gateway balance:
37
+
38
+ | Operation | Default Cost | Marker |
39
+ | :--- | :--- | :--- |
40
+ | **Handshake** | $0.01 | Integration Request |
41
+ | **Smart-Hit (Guided)** | $0.05 | Sequence Step |
42
+ | **Smart-Hit (Chameleon)** | $0.20 | Sequence Step |
43
+
44
+ ---
45
+
46
+ ## 🌌 Beyond the Canvas: The Core Pillars
47
+ While our nodes represent the **Workflow API**, you can leverage the full platform power directly via HTTP requests for advanced use cases:
48
+
49
+ ### 🧠 Universal API (Stateless Intelligence)
50
+ Access the same high-performance LLM routing used by our "Chameleon" tier without n8n sequence machinery.
51
+ * **Best for:** Real-time structured JSON extraction and model-agnostic execution.
52
+ * **Implementation:** `POST /api/v1/universal/execute`
53
+
54
+ ### 💾 Memory API (Production-Grade RAG)
55
+ Our purpose-built, tenant-isolated vector store cures LLM amnesia.
56
+ * **Best for:** Retrieval-Augmented Generation (RAG) and domain-specific knowledge management.
57
+ * **Implementation:** Utilize `/ingest` and `/recall` endpoints via the HTTP Request node.
58
+
59
+ ---
60
+
61
+ ## 🛠 Advanced Integration
62
+ Because these nodes manage complex session state (JWT baton-passing) for you, they are the fastest way to build. However, for specialized needs:
63
+ * **Going Stateless?** Use the Universal API directly for single-shot, model-agnostic execution.
64
+ * **Need Memory?** Use the Memory API to anchor your workflows in your own proprietary data.
65
+
66
+ ---
67
+
68
+ ## 🛡 Support & License
69
+ * **Support:** For issues or feature requests, visit the Polycracker main page at [www.polycracker.dev](https://www.polycracker.dev) or contact our team at `access@polycracker.dev`.
70
+ * **License:** Copyright © 2026 Parrot Integrated Software Development. All rights reserved.
71
+ * **Terms:** This software is a proprietary component of the Polycracker platform, developed by Parrot Integrated Software Development. Unauthorized distribution or reproduction is prohibited.
72
+
73
+ *Engineered by the Polycracker Fleet. Orchestrating the future of AI automation.*
@@ -0,0 +1,7 @@
1
+ import type { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class ParrotApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParrotApi = void 0;
4
+ class ParrotApi {
5
+ constructor() {
6
+ this.name = 'parrotApi';
7
+ this.displayName = 'Parrot API';
8
+ this.documentationUrl = '';
9
+ this.properties = [
10
+ {
11
+ displayName: 'API Base URL',
12
+ name: 'baseUrl',
13
+ type: 'string',
14
+ default: 'https://api.polycracker.dev',
15
+ required: true,
16
+ },
17
+ {
18
+ displayName: 'API Key',
19
+ name: 'apiKey',
20
+ type: 'string',
21
+ typeOptions: {
22
+ password: true,
23
+ },
24
+ default: '',
25
+ required: true,
26
+ },
27
+ {
28
+ displayName: 'User ID',
29
+ name: 'userId',
30
+ type: 'string',
31
+ default: '',
32
+ required: true,
33
+ },
34
+ ];
35
+ }
36
+ }
37
+ exports.ParrotApi = ParrotApi;
38
+ //# sourceMappingURL=ParrotApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParrotApi.credentials.js","sourceRoot":"","sources":["../../credentials/ParrotApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,qBAAgB,GAAG,EAAE,CAAC;QACtB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6BAA6B;gBACtC,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;IACH,CAAC;CAAA;AA9BD,8BA8BC"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class ParrotGate implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParrotGate = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ function normalizeApiBaseUrl(raw) {
6
+ const base = String(raw !== null && raw !== void 0 ? raw : '').trim().replace(/\/$/, '');
7
+ if (!base) {
8
+ throw new Error('Parrot API credentials must include API Base URL.');
9
+ }
10
+ return base;
11
+ }
12
+ class ParrotGate {
13
+ constructor() {
14
+ this.description = {
15
+ displayName: 'Parrot Gate',
16
+ name: 'parrotGate',
17
+ icon: 'file:parrot-green.svg',
18
+ group: ['transform'],
19
+ version: 1,
20
+ description: 'Privacy-first gateway for Polycracker. Provides schema healing, data scrubbing, and secure API access.',
21
+ defaults: {
22
+ name: 'Parrot Gate',
23
+ },
24
+ inputs: ['main'],
25
+ outputs: ['main'],
26
+ credentials: [
27
+ {
28
+ name: 'parrotApi',
29
+ required: true,
30
+ },
31
+ ],
32
+ properties: [
33
+ {
34
+ displayName: 'First time? <a href="https://portal.polycracker.dev/dashboard?action=register" target="_blank" rel="noopener noreferrer" style="color:#2563eb;font-weight:700;text-decoration:underline">Register for Parrot Gate</a> to get your User ID and API Key.',
35
+ name: 'registerNotice',
36
+ type: 'notice',
37
+ typeOptions: {
38
+ clickable: true,
39
+ },
40
+ default: '',
41
+ },
42
+ {
43
+ displayName: '📖 **Parrot Gate Quick Start:**\n1. Select your **Action** (The AI&apos;s job).\n2. Set a **Privacy Guardrail** (Target Schema) if required.\n3. Map your **Payload** (or leave blank to auto-process incoming data).',
44
+ name: 'quickStartNotice',
45
+ type: 'notice',
46
+ default: '',
47
+ },
48
+ {
49
+ displayName: 'User ID',
50
+ name: 'user_id',
51
+ type: 'string',
52
+ default: '',
53
+ required: true,
54
+ description: 'Your Parrot Gate user id (required when you run this node)',
55
+ },
56
+ {
57
+ displayName: 'Action',
58
+ name: 'action',
59
+ type: 'options',
60
+ noDataExpression: true,
61
+ options: [
62
+ { name: 'Integrity Master (Heal + Scrub)', value: 'master' },
63
+ { name: 'Data Architect (Heal)', value: 'architect' },
64
+ { name: 'Custom Alchemist (Advanced)', value: 'alchemist' },
65
+ { name: 'Validation Sentry', value: 'sentry' },
66
+ { name: 'Privacy Scout (Scrub)', value: 'scout' },
67
+ { name: 'Basic Processing (Chirp)', value: 'chirp' },
68
+ { name: 'Audit Logs (Quick Look)', value: 'audit' },
69
+ ],
70
+ default: 'chirp',
71
+ },
72
+ {
73
+ displayName: 'Payload',
74
+ name: 'payload',
75
+ type: 'string',
76
+ default: '',
77
+ required: false,
78
+ displayOptions: {
79
+ hide: {
80
+ action: ['audit'],
81
+ },
82
+ },
83
+ description: 'Leave empty to process all incoming data',
84
+ },
85
+ {
86
+ displayName: 'Privacy Guardrail',
87
+ name: 'target_schema',
88
+ type: 'options',
89
+ displayOptions: {
90
+ hide: {
91
+ action: ['audit'],
92
+ },
93
+ },
94
+ options: [
95
+ { name: 'None (Manual Mode)', value: 'manual' },
96
+ { name: 'Lead Protection (Name + Email)', value: 'leads' },
97
+ { name: 'Financial Audit (Amount + Vendor)', value: 'invoices' },
98
+ { name: 'E-commerce Security (Total + SKU)', value: 'ecommerce' },
99
+ { name: 'HR Compliance (Salary + Role)', value: 'hr' },
100
+ { name: 'Support Optimization (Priority)', value: 'support' },
101
+ { name: 'Enterprise Standard (Strict Validation)', value: 'strict' },
102
+ ],
103
+ default: 'manual',
104
+ description: 'Select a pre-built data integrity profile',
105
+ },
106
+ {
107
+ displayName: 'Custom JSON Schema',
108
+ name: 'custom_schema',
109
+ type: 'string',
110
+ displayOptions: {
111
+ show: {
112
+ target_schema: ['manual'],
113
+ },
114
+ hide: {
115
+ action: ['audit'],
116
+ },
117
+ },
118
+ default: '',
119
+ description: 'Define custom validation parameters in JSON format',
120
+ },
121
+ ],
122
+ };
123
+ }
124
+ async execute() {
125
+ var _a;
126
+ const items = this.getInputData();
127
+ const returnData = [];
128
+ const credentials = await this.getCredentials('parrotApi');
129
+ const baseUrl = normalizeApiBaseUrl(credentials.baseUrl);
130
+ const apiKey = String((_a = credentials.apiKey) !== null && _a !== void 0 ? _a : '').trim();
131
+ if (!apiKey) {
132
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'A valid Parrot API Key is required. Please add it to your node credentials.');
133
+ }
134
+ for (let i = 0; i < items.length; i++) {
135
+ try {
136
+ const row = items[i].json;
137
+ const userId = (typeof row.user_id === 'string' && row.user_id) ||
138
+ (typeof row.userId === 'string' && row.userId) ||
139
+ this.getNodeParameter('user_id', i);
140
+ const action = this.getNodeParameter('action', i);
141
+ const sentryPreset = this.getNodeParameter('target_schema', i, 'manual');
142
+ const customSchema = this.getNodeParameter('custom_schema', i, '');
143
+ let payload = this.getNodeParameter('payload', i, '');
144
+ const isAudit = action === 'audit';
145
+ const finalUrl = isAudit
146
+ ? `${baseUrl}/parrot-gate/history?user_id=${userId}`
147
+ : `${baseUrl}/parrot-gate/use_api`;
148
+ if (!payload || payload === '') {
149
+ payload = items[i].json;
150
+ }
151
+ let finalSchema = sentryPreset;
152
+ if (sentryPreset === 'manual' && customSchema !== '') {
153
+ try {
154
+ finalSchema = JSON.parse(customSchema);
155
+ }
156
+ catch (e) {
157
+ finalSchema = customSchema;
158
+ }
159
+ }
160
+ const body = {
161
+ user_id: userId,
162
+ api_key: apiKey,
163
+ action: action,
164
+ payload: payload,
165
+ target_schema: finalSchema,
166
+ };
167
+ const options = isAudit
168
+ ? {
169
+ method: 'GET',
170
+ uri: finalUrl,
171
+ headers: {
172
+ 'X-API-Key': apiKey,
173
+ },
174
+ json: true,
175
+ }
176
+ : {
177
+ method: 'POST',
178
+ uri: finalUrl,
179
+ body,
180
+ headers: {
181
+ 'X-API-Key': apiKey,
182
+ },
183
+ json: true,
184
+ };
185
+ let responseData = await this.helpers.request(options);
186
+ if (!isAudit && (responseData === null || responseData === void 0 ? void 0 : responseData.status) === 'success' && (responseData === null || responseData === void 0 ? void 0 : responseData.data) !== undefined) {
187
+ responseData = responseData.data;
188
+ }
189
+ if (responseData.status === 'error') {
190
+ throw new Error(`Parrot Gate Denied: ${responseData.message}`);
191
+ }
192
+ returnData.push({ json: responseData });
193
+ }
194
+ catch (error) {
195
+ if (this.continueOnFail()) {
196
+ const message = error instanceof Error ? error.message : String(error);
197
+ returnData.push({ json: { error: message } });
198
+ continue;
199
+ }
200
+ throw error;
201
+ }
202
+ }
203
+ return [returnData];
204
+ }
205
+ }
206
+ exports.ParrotGate = ParrotGate;
207
+ //# sourceMappingURL=ParrotGate.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParrotGate.node.js","sourceRoot":"","sources":["../../../nodes/ParrotGate/ParrotGate.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "node": "n8n-nodes-base.parrotGate",
3
+ "nodeVersion": "1.0",
4
+ "codex": { "categories": ["Utility"] }
5
+ }
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="Parrot">
2
+ <path fill="#16a34a" d="M6 26c3-14 16-24 30-24 2 12-2 24-12 32-8 6-20 6-26-4-2-4 2-10 8-4z"/>
3
+ <path fill="#eab308" d="M34 4c8 4 12 14 10 24-4-8-12-16-22-18 4-8 10-10 12-6z"/>
4
+ <path fill="#15803d" d="M8 34c6 6 16 6 24 2-6 8-18 10-28 6 2-4 6-8 4-8z"/>
5
+ <circle cx="16" cy="16" r="3.5" fill="#0f172a"/>
6
+ <path fill="#fde047" d="M4 20c4 2 8 0 10-4-2 6-6 10-10 8v-4z"/>
7
+ </svg>
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class ParrotIntegration implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParrotIntegration = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const LEGACY_METADATA_KEYS = new Set([
6
+ 'workflow',
7
+ 'workflowId',
8
+ 'executionId',
9
+ 'user_id',
10
+ 'userId',
11
+ 'action',
12
+ ]);
13
+ function buildCleanMetadata(source) {
14
+ const clean = { ...source };
15
+ for (const key of LEGACY_METADATA_KEYS) {
16
+ delete clean[key];
17
+ }
18
+ return clean;
19
+ }
20
+ function asJsonObject(payload) {
21
+ return payload;
22
+ }
23
+ const PARROT_OUTPUT_STRIP_KEYS = [
24
+ 'parrot_string',
25
+ 'parrot_session_id',
26
+ 'session_id',
27
+ 'sessionId',
28
+ 'use_vault',
29
+ 'production_vault',
30
+ 'code_jwt',
31
+ 'instruction',
32
+ 'task_index',
33
+ 'total_tasks',
34
+ 'finished',
35
+ 'model',
36
+ ];
37
+ function buildCleanUserData(source) {
38
+ const clean = { ...source };
39
+ for (const key of PARROT_OUTPUT_STRIP_KEYS) {
40
+ delete clean[key];
41
+ }
42
+ return clean;
43
+ }
44
+ class ParrotIntegration {
45
+ constructor() {
46
+ this.description = {
47
+ displayName: 'Parrot Integration',
48
+ name: 'parrotIntegration',
49
+ icon: 'file:parrot.svg',
50
+ group: ['transform'],
51
+ version: 2,
52
+ description: 'High-performance session commander for Polycracker. Manages tier-aware routing and authentication for seamless API integration.',
53
+ defaults: { name: 'Parrot Integration' },
54
+ inputs: ['main'],
55
+ outputs: ['main'],
56
+ credentials: [
57
+ {
58
+ name: 'parrotApi',
59
+ required: true,
60
+ },
61
+ ],
62
+ properties: [
63
+ {
64
+ displayName: 'Mission Label',
65
+ name: 'mission_label',
66
+ type: 'string',
67
+ default: 'General_Park_Project',
68
+ required: true,
69
+ },
70
+ {
71
+ displayName: 'User Context',
72
+ name: 'userContext',
73
+ type: 'string',
74
+ default: '',
75
+ required: true,
76
+ placeholder: 'e.g., Summarize the incoming data and format it as a bulleted list.',
77
+ typeOptions: {
78
+ rows: 6,
79
+ },
80
+ description: 'Please insert the context or parameters of what you would like to see happen.',
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ async execute() {
86
+ var _a, _b, _c, _d, _e, _f, _g, _h;
87
+ const items = this.getInputData();
88
+ const returnData = [];
89
+ if (items.length === 0) {
90
+ return [returnData];
91
+ }
92
+ const firstItemIndex = 0;
93
+ let missionLabel;
94
+ let userContext;
95
+ try {
96
+ missionLabel = String(this.getNodeParameter('mission_label', firstItemIndex, '')).trim();
97
+ userContext = String(this.getNodeParameter('userContext', firstItemIndex, '')).trim();
98
+ if (!missionLabel) {
99
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject({ code: 'VALIDATION' }), {
100
+ message: 'Mission Label is required.',
101
+ itemIndex: firstItemIndex,
102
+ });
103
+ }
104
+ if (!userContext) {
105
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject({ code: 'VALIDATION' }), {
106
+ message: 'User Context is required.',
107
+ itemIndex: firstItemIndex,
108
+ });
109
+ }
110
+ const credentials = await this.getCredentials('parrotApi');
111
+ const apiKey = String((_a = credentials.apiKey) !== null && _a !== void 0 ? _a : '');
112
+ if (!apiKey) {
113
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject({ code: 'NO_API_KEY' }), {
114
+ message: 'parrotApi credential must include an API Key.',
115
+ itemIndex: firstItemIndex,
116
+ });
117
+ }
118
+ const baseUrl = String((_b = credentials.baseUrl) !== null && _b !== void 0 ? _b : '').trim().replace(/\/$/, '');
119
+ if (!baseUrl) {
120
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject({ code: 'NO_BASE_URL' }), {
121
+ message: 'parrotApi credential must include API Base URL.',
122
+ itemIndex: firstItemIndex,
123
+ });
124
+ }
125
+ const userId = String((_c = credentials.userId) !== null && _c !== void 0 ? _c : '').trim() || 'n8n_user';
126
+ const workflowId = (_d = this.getWorkflow().id) !== null && _d !== void 0 ? _d : 'n8n_workflow';
127
+ const highwayUrl = `${baseUrl}/highway/process`;
128
+ const firstSourceJson = ((_e = items[firstItemIndex].json) !== null && _e !== void 0 ? _e : {});
129
+ const cleanMetadata = buildCleanMetadata(firstSourceJson);
130
+ const goalStatement = userContext;
131
+ const taskParam = 'extract';
132
+ const tierParam = 'guided';
133
+ let rawResponse;
134
+ try {
135
+ rawResponse = await this.helpers.request({
136
+ method: 'POST',
137
+ url: highwayUrl,
138
+ headers: {
139
+ 'X-API-Key': apiKey,
140
+ 'Content-Type': 'application/json',
141
+ Accept: 'application/json',
142
+ },
143
+ body: {
144
+ user_id: userId,
145
+ workflow_id: workflowId,
146
+ goal_statement: goalStatement,
147
+ task: taskParam,
148
+ tier: tierParam,
149
+ payload: cleanMetadata,
150
+ },
151
+ json: true,
152
+ });
153
+ }
154
+ catch (error) {
155
+ const errorRecord = error !== null && typeof error === 'object'
156
+ ? error
157
+ : undefined;
158
+ const statusCode = typeof (errorRecord === null || errorRecord === void 0 ? void 0 : errorRecord.statusCode) === 'number'
159
+ ? errorRecord.statusCode
160
+ : typeof (errorRecord === null || errorRecord === void 0 ? void 0 : errorRecord.httpCode) === 'number'
161
+ ? errorRecord.httpCode
162
+ : undefined;
163
+ const errorMessage = typeof (errorRecord === null || errorRecord === void 0 ? void 0 : errorRecord.message) === 'string'
164
+ ? errorRecord.message
165
+ : error instanceof Error
166
+ ? error.message
167
+ : String(error);
168
+ if (statusCode === 401) {
169
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject(errorRecord !== null && errorRecord !== void 0 ? errorRecord : {}), {
170
+ message: 'Invalid API Key. Please check your credentials.',
171
+ itemIndex: firstItemIndex,
172
+ });
173
+ }
174
+ if (statusCode === 402) {
175
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject(errorRecord !== null && errorRecord !== void 0 ? errorRecord : {}), {
176
+ message: 'Out of Fuel. Please refill your Parrot compute credits to continue.',
177
+ itemIndex: firstItemIndex,
178
+ });
179
+ }
180
+ const lowerMessage = errorMessage.toLowerCase();
181
+ const isTimeoutOrNetwork = lowerMessage.includes('timed out') ||
182
+ lowerMessage.includes('timeout') ||
183
+ lowerMessage.includes('etimedout') ||
184
+ lowerMessage.includes('econnreset') ||
185
+ lowerMessage.includes('econnrefused') ||
186
+ lowerMessage.includes('enotfound') ||
187
+ lowerMessage.includes('network') ||
188
+ lowerMessage.includes('socket hang up');
189
+ if (isTimeoutOrNetwork) {
190
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject(errorRecord !== null && errorRecord !== void 0 ? errorRecord : {}), {
191
+ message: 'The Parrot AI took too long to respond. Please check your Gateway connection.',
192
+ itemIndex: firstItemIndex,
193
+ });
194
+ }
195
+ const errObj = error !== null && typeof error === 'object'
196
+ ? asJsonObject(error)
197
+ : asJsonObject({ message: String(error) });
198
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), errObj, {
199
+ message: (typeof (error === null || error === void 0 ? void 0 : error.message) === 'string' && error.message) ||
200
+ 'Highway process request failed. Check your API Base URL and network connectivity.',
201
+ itemIndex: firstItemIndex,
202
+ });
203
+ }
204
+ const parsed = typeof rawResponse === 'string'
205
+ ? (0, n8n_workflow_1.jsonParse)(rawResponse)
206
+ : rawResponse;
207
+ const codeJwt = parsed.code_jwt;
208
+ if (codeJwt === undefined || codeJwt === null || codeJwt === '') {
209
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), asJsonObject(parsed), {
210
+ message: 'Highway process succeeded but response did not include code_jwt.',
211
+ itemIndex: firstItemIndex,
212
+ });
213
+ }
214
+ const instruction = (_f = parsed.instruction) !== null && _f !== void 0 ? _f : null;
215
+ const totalTasks = (_g = parsed.total_tasks) !== null && _g !== void 0 ? _g : null;
216
+ for (let i = 0; i < items.length; i++) {
217
+ const sourceJson = ((_h = items[i].json) !== null && _h !== void 0 ? _h : {});
218
+ const userData = buildCleanUserData(sourceJson);
219
+ const outputJson = {
220
+ ...userData,
221
+ code_jwt: codeJwt,
222
+ instruction,
223
+ task_index: 0,
224
+ total_tasks: totalTasks,
225
+ finished: false,
226
+ };
227
+ returnData.push({
228
+ json: outputJson,
229
+ pairedItem: { item: i },
230
+ });
231
+ }
232
+ }
233
+ catch (error) {
234
+ if (error instanceof n8n_workflow_1.NodeApiError) {
235
+ throw error;
236
+ }
237
+ const errObj = error !== null && typeof error === 'object'
238
+ ? asJsonObject(error)
239
+ : asJsonObject({ message: String(error) });
240
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), errObj, {
241
+ message: error instanceof Error ? error.message : String(error),
242
+ itemIndex: firstItemIndex,
243
+ });
244
+ }
245
+ return [returnData];
246
+ }
247
+ }
248
+ exports.ParrotIntegration = ParrotIntegration;
249
+ //# sourceMappingURL=ParrotIntegration.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParrotIntegration.node.js","sourceRoot":"","sources":["../../../nodes/ParrotIntegration/ParrotIntegration.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ {
2
+ "node": "n8n-nodes-parrot-gate.parrotIntegration",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Miscellaneous"],
6
+ "resources": {
7
+ "primaryDocumentation": []
8
+ }
9
+ }