@banumeow/n8n-nodes-oci-generativeai-agent 0.1.2 → 0.1.3
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.
|
@@ -1,6 +1,45 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.OciGenAIAgent = void 0;
|
|
37
|
+
const common = __importStar(require("oci-common"));
|
|
38
|
+
const oci_generativeaiagentruntime_1 = require("oci-generativeaiagentruntime");
|
|
39
|
+
function normalizePrivateKey(key) {
|
|
40
|
+
// Allow users to paste keys with \n and turn into real newlines
|
|
41
|
+
return key.replace(/\\n/g, '\n').trim();
|
|
42
|
+
}
|
|
4
43
|
class OciGenAIAgent {
|
|
5
44
|
constructor() {
|
|
6
45
|
this.description = {
|
|
@@ -17,140 +56,197 @@ class OciGenAIAgent {
|
|
|
17
56
|
outputs: ['main'],
|
|
18
57
|
credentials: [],
|
|
19
58
|
properties: [
|
|
59
|
+
// Operation selector
|
|
20
60
|
{
|
|
21
61
|
displayName: 'Operation',
|
|
22
62
|
name: 'operation',
|
|
23
63
|
type: 'options',
|
|
24
64
|
noDataExpression: true,
|
|
25
65
|
options: [
|
|
26
|
-
{ name: 'Create session', value: 'createSession'
|
|
27
|
-
{ name: 'Get session', value: 'getSession'
|
|
28
|
-
{ name: 'Delete session', value: 'deleteSession'
|
|
29
|
-
{ name: 'Chat
|
|
66
|
+
{ name: 'Create session', value: 'createSession' },
|
|
67
|
+
{ name: 'Get session', value: 'getSession' },
|
|
68
|
+
{ name: 'Delete session', value: 'deleteSession' },
|
|
69
|
+
{ name: 'Chat', value: 'chat' },
|
|
30
70
|
],
|
|
31
71
|
default: 'chat',
|
|
32
72
|
},
|
|
33
|
-
//
|
|
73
|
+
// OCI Auth (inline simple credential fields for now)
|
|
74
|
+
{
|
|
75
|
+
displayName: 'Tenancy OCID',
|
|
76
|
+
name: 'tenancyOcid',
|
|
77
|
+
type: 'string',
|
|
78
|
+
default: '',
|
|
79
|
+
required: true,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
displayName: 'User OCID',
|
|
83
|
+
name: 'userOcid',
|
|
84
|
+
type: 'string',
|
|
85
|
+
default: '',
|
|
86
|
+
required: true,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'API Key Fingerprint',
|
|
90
|
+
name: 'fingerprint',
|
|
91
|
+
type: 'string',
|
|
92
|
+
default: '',
|
|
93
|
+
required: true,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
displayName: 'Private Key (PEM)',
|
|
97
|
+
name: 'privateKey',
|
|
98
|
+
type: 'string',
|
|
99
|
+
typeOptions: { rows: 4 },
|
|
100
|
+
default: '',
|
|
101
|
+
required: true,
|
|
102
|
+
},
|
|
34
103
|
{
|
|
35
|
-
displayName: '
|
|
36
|
-
name: '
|
|
104
|
+
displayName: 'Private Key Passphrase',
|
|
105
|
+
name: 'passphrase',
|
|
37
106
|
type: 'string',
|
|
38
107
|
default: '',
|
|
39
|
-
description: '
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
108
|
+
description: 'Optional passphrase for the private key',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
displayName: 'Region ID',
|
|
112
|
+
name: 'regionId',
|
|
113
|
+
type: 'string',
|
|
114
|
+
default: 'us-phoenix-1',
|
|
115
|
+
description: "OCI region, e.g. 'us-phoenix-1'",
|
|
45
116
|
required: true,
|
|
46
117
|
},
|
|
47
118
|
{
|
|
48
|
-
displayName: 'Agent
|
|
49
|
-
name: '
|
|
119
|
+
displayName: 'Agent Endpoint OCID',
|
|
120
|
+
name: 'agentEndpointId',
|
|
50
121
|
type: 'string',
|
|
51
122
|
default: '',
|
|
52
|
-
description: 'The OCID of the Generative AI Agent',
|
|
53
|
-
displayOptions: {
|
|
54
|
-
show: {
|
|
55
|
-
operation: ['createSession'],
|
|
56
|
-
},
|
|
57
|
-
},
|
|
123
|
+
description: 'The OCID of the Generative AI Agent Endpoint to use',
|
|
58
124
|
required: true,
|
|
59
125
|
},
|
|
60
|
-
//
|
|
126
|
+
// Create session parameters
|
|
127
|
+
{
|
|
128
|
+
displayName: 'Display Name',
|
|
129
|
+
name: 'displayName',
|
|
130
|
+
type: 'string',
|
|
131
|
+
default: '',
|
|
132
|
+
displayOptions: { show: { operation: ['createSession'] } },
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
displayName: 'Description',
|
|
136
|
+
name: 'description',
|
|
137
|
+
type: 'string',
|
|
138
|
+
typeOptions: { rows: 3 },
|
|
139
|
+
default: '',
|
|
140
|
+
displayOptions: { show: { operation: ['createSession'] } },
|
|
141
|
+
},
|
|
142
|
+
// Get/Delete/Chat common: Session ID
|
|
61
143
|
{
|
|
62
144
|
displayName: 'Session ID',
|
|
63
145
|
name: 'sessionId',
|
|
64
146
|
type: 'string',
|
|
65
147
|
default: '',
|
|
66
|
-
|
|
67
|
-
displayOptions: {
|
|
68
|
-
show: {
|
|
69
|
-
operation: ['getSession', 'deleteSession', 'chat'],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
required: true,
|
|
148
|
+
displayOptions: { show: { operation: ['getSession', 'deleteSession', 'chat'] } },
|
|
73
149
|
},
|
|
74
150
|
// Chat parameters
|
|
75
151
|
{
|
|
76
|
-
displayName: 'Message',
|
|
77
|
-
name: '
|
|
152
|
+
displayName: 'User Message',
|
|
153
|
+
name: 'userMessage',
|
|
78
154
|
type: 'string',
|
|
79
155
|
default: '',
|
|
80
156
|
placeholder: 'Hello, world',
|
|
81
|
-
description: 'Message to send
|
|
82
|
-
displayOptions: {
|
|
83
|
-
show: {
|
|
84
|
-
operation: ['chat'],
|
|
85
|
-
},
|
|
86
|
-
},
|
|
157
|
+
description: 'Message to send to the agent',
|
|
158
|
+
displayOptions: { show: { operation: ['chat'] } },
|
|
87
159
|
required: true,
|
|
88
160
|
},
|
|
161
|
+
{
|
|
162
|
+
displayName: 'Stream Response',
|
|
163
|
+
name: 'shouldStream',
|
|
164
|
+
type: 'boolean',
|
|
165
|
+
default: false,
|
|
166
|
+
description: 'If true, response may be a stream (not fully supported by n8n output)',
|
|
167
|
+
displayOptions: { show: { operation: ['chat'] } },
|
|
168
|
+
},
|
|
89
169
|
],
|
|
90
170
|
};
|
|
91
171
|
}
|
|
92
172
|
async execute() {
|
|
173
|
+
var _a;
|
|
93
174
|
const items = this.getInputData();
|
|
94
175
|
const returnData = [];
|
|
95
176
|
for (let i = 0; i < items.length; i++) {
|
|
96
177
|
const operation = this.getNodeParameter('operation', i);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
178
|
+
// Common auth/connection params
|
|
179
|
+
const tenancyOcid = this.getNodeParameter('tenancyOcid', i);
|
|
180
|
+
const userOcid = this.getNodeParameter('userOcid', i);
|
|
181
|
+
const fingerprint = this.getNodeParameter('fingerprint', i);
|
|
182
|
+
const privateKeyRaw = this.getNodeParameter('privateKey', i);
|
|
183
|
+
const passphrase = this.getNodeParameter('passphrase', i) || null;
|
|
184
|
+
const regionId = this.getNodeParameter('regionId', i);
|
|
185
|
+
const agentEndpointId = this.getNodeParameter('agentEndpointId', i);
|
|
186
|
+
const privateKey = normalizePrivateKey(privateKeyRaw);
|
|
187
|
+
try {
|
|
188
|
+
const provider = new common.SimpleAuthenticationDetailsProvider(tenancyOcid, userOcid, fingerprint, privateKey, passphrase);
|
|
189
|
+
const client = new oci_generativeaiagentruntime_1.GenerativeAiAgentRuntimeClient({ authenticationDetailsProvider: provider });
|
|
190
|
+
client.regionId = regionId;
|
|
191
|
+
switch (operation) {
|
|
192
|
+
case 'createSession': {
|
|
193
|
+
const displayName = this.getNodeParameter('displayName', i, '');
|
|
194
|
+
const description = this.getNodeParameter('description', i, '');
|
|
195
|
+
const resp = await client.createSession({
|
|
196
|
+
agentEndpointId,
|
|
197
|
+
createSessionDetails: {
|
|
198
|
+
displayName: displayName || undefined,
|
|
199
|
+
description: description || undefined,
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
// SDK returns { session: {...} }
|
|
203
|
+
// @ts-ignore
|
|
204
|
+
returnData.push({ json: resp.session || resp });
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 'getSession': {
|
|
208
|
+
const sessionId = this.getNodeParameter('sessionId', i);
|
|
209
|
+
const resp = await client.getSession({ agentEndpointId, sessionId });
|
|
210
|
+
// @ts-ignore
|
|
211
|
+
returnData.push({ json: resp.session || resp });
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
case 'deleteSession': {
|
|
215
|
+
const sessionId = this.getNodeParameter('sessionId', i);
|
|
216
|
+
const resp = await client.deleteSession({ agentEndpointId, sessionId });
|
|
217
|
+
returnData.push({ json: { ok: true, operation: 'deleteSession', agentEndpointId, sessionId, meta: resp } });
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case 'chat': {
|
|
221
|
+
const sessionId = this.getNodeParameter('sessionId', i, '');
|
|
222
|
+
const userMessage = this.getNodeParameter('userMessage', i);
|
|
223
|
+
const shouldStream = this.getNodeParameter('shouldStream', i);
|
|
224
|
+
const resp = await client.chat({
|
|
225
|
+
agentEndpointId,
|
|
226
|
+
chatDetails: {
|
|
227
|
+
userMessage,
|
|
228
|
+
shouldStream,
|
|
229
|
+
sessionId: sessionId || undefined,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
// If streaming, the SDK may return ReadableStream. n8n cannot render streams; surface info instead.
|
|
233
|
+
if (resp && typeof resp.getReader === 'function') {
|
|
234
|
+
returnData.push({ json: { streamed: true, note: 'Streaming responses are not directly supported in n8n output. Disable Stream Response to receive full JSON.' } });
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// @ts-ignore
|
|
238
|
+
const chatResult = (_a = resp.chatResult) !== null && _a !== void 0 ? _a : resp;
|
|
239
|
+
returnData.push({ json: chatResult });
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
default:
|
|
244
|
+
returnData.push({ json: { error: `Unsupported operation: ${operation}` } });
|
|
152
245
|
}
|
|
153
246
|
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
returnData.push({ json: { error: true, message: (err === null || err === void 0 ? void 0 : err.message) || String(err), stack: err === null || err === void 0 ? void 0 : err.stack } });
|
|
249
|
+
}
|
|
154
250
|
}
|
|
155
251
|
return [returnData];
|
|
156
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OciGenAIAgent.node.js","sourceRoot":"","sources":["../../../src/nodes/OciGenAIAgent/OciGenAIAgent.node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OciGenAIAgent.node.js","sourceRoot":"","sources":["../../../src/nodes/OciGenAIAgent/OciGenAIAgent.node.ts"],"names":[],"mappings":"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"}
|