n8n-nodes-truefoundry 0.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,46 @@
1
+ # n8n-nodes-truefoundry
2
+
3
+ This is an n8n community node. It lets you use _app/service name_ in your n8n workflows.
4
+
5
+ _App/service name_ is _one or two sentences describing the service this node integrates with_.
6
+
7
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
8
+
9
+ [Installation](#installation)
10
+ [Operations](#operations)
11
+ [Credentials](#credentials)
12
+ [Compatibility](#compatibility)
13
+ [Usage](#usage)
14
+ [Resources](#resources)
15
+ [Version history](#version-history)
16
+
17
+ ## Installation
18
+
19
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
20
+
21
+ ## Operations
22
+
23
+ _List the operations supported by your node._
24
+
25
+ ## Credentials
26
+
27
+ _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._
28
+
29
+ ## Compatibility
30
+
31
+ _State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._
32
+
33
+ ## Usage
34
+
35
+ _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._
36
+
37
+ _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._
38
+
39
+ ## Resources
40
+
41
+ * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
42
+ * _Link to app/service documentation._
43
+
44
+ ## Version history
45
+
46
+ _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class TruefoundryApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ icon: "file:../nodes/LmChatTruefoundry/icons/truefoundry.svg";
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TruefoundryApi = void 0;
4
+ class TruefoundryApi {
5
+ constructor() {
6
+ this.name = 'truefoundryApi';
7
+ this.displayName = 'Truefoundry API';
8
+ this.documentationUrl = 'https://truefoundry.com/docs/ai-gateway/n8n';
9
+ this.icon = 'file:../nodes/LmChatTruefoundry/icons/truefoundry.svg';
10
+ this.properties = [
11
+ {
12
+ displayName: 'API Key',
13
+ name: 'apiKey',
14
+ type: 'string',
15
+ typeOptions: {
16
+ password: true,
17
+ },
18
+ required: true,
19
+ default: '',
20
+ description: 'Your API key for the AI Gateway',
21
+ },
22
+ {
23
+ displayName: 'Gateway URL',
24
+ name: 'gatewayURL',
25
+ type: 'string',
26
+ default: 'https://gateway.truefoundry.ai/',
27
+ required: true,
28
+ description: 'The base URL of the AI Gateway',
29
+ },
30
+ ];
31
+ this.authenticate = {
32
+ type: 'generic',
33
+ properties: {
34
+ headers: {
35
+ Authorization: '=Bearer {{$credentials.apiKey}}',
36
+ },
37
+ },
38
+ };
39
+ this.test = {
40
+ request: {
41
+ baseURL: '={{$credentials.gatewayURL}}',
42
+ url: '/models',
43
+ method: 'GET',
44
+ },
45
+ };
46
+ }
47
+ }
48
+ exports.TruefoundryApi = TruefoundryApi;
49
+ //# sourceMappingURL=TruefoundryApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TruefoundryApi.credentials.js","sourceRoot":"","sources":["../../credentials/TruefoundryApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,qBAAgB,GAAG,6CAA6C,CAAA;QAChE,SAAI,GAAG,uDAAgE,CAAC;QACxE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,iCAAiC;aAC9C;YACK;gBACI,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,iCAAiC;gBAC1C,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,gCAAgC;aAChD;SACP,CAAC;QAGF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,iCAAiC;iBAChD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YACxB,OAAO,EAAE;gBACL,OAAO,EAAE,8BAA8B;gBACvC,GAAG,EAAE,SAAS;gBACd,MAAM,EAAE,KAAK;aAChB;SACJ,CAAC;IACN,CAAC;CAAA;AA5CD,wCA4CC"}
@@ -0,0 +1,31 @@
1
+ import { type INodeType, type INodeTypeDescription, type ISupplyDataFunctions, type SupplyData } from 'n8n-workflow';
2
+ import { searchModels } from './methods/loadModels';
3
+ export interface AttributionSettings {
4
+ applicationName?: string;
5
+ costCenter?: string;
6
+ department?: string;
7
+ environment?: string;
8
+ fallbackUserEmail?: string;
9
+ }
10
+ export interface TruefoundryMetadata {
11
+ user_id: string;
12
+ user_id_source: string;
13
+ workflow_id: string;
14
+ workflow_name: string;
15
+ execution_id: string;
16
+ execution_mode: string;
17
+ project_id: string;
18
+ environment: string;
19
+ n8n_app_name: string;
20
+ cost_center?: string;
21
+ }
22
+ export declare function getTruefoundryMetadata(node: ISupplyDataFunctions, attributionSettings: AttributionSettings): TruefoundryMetadata;
23
+ export declare class LmChatTruefoundry implements INodeType {
24
+ methods: {
25
+ listSearch: {
26
+ searchModels: typeof searchModels;
27
+ };
28
+ };
29
+ description: INodeTypeDescription;
30
+ supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
31
+ }
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LmChatTruefoundry = void 0;
4
+ exports.getTruefoundryMetadata = getTruefoundryMetadata;
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ const loadModels_1 = require("./methods/loadModels");
7
+ const sharedFields_1 = require("./utils/sharedFields");
8
+ const openai_1 = require("@langchain/openai");
9
+ const INCLUDE_JSON_WARNING = {
10
+ displayName: 'If using JSON response format, you must include word "json" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.',
11
+ name: 'notice',
12
+ type: 'notice',
13
+ default: '',
14
+ };
15
+ function getTruefoundryMetadata(node, attributionSettings) {
16
+ var _a, _b;
17
+ const rawUserId = (_a = node.additionalData) === null || _a === void 0 ? void 0 : _a.userId;
18
+ const projectId = ((_b = node.additionalData) === null || _b === void 0 ? void 0 : _b.projectId) || 'unknown-project';
19
+ const fallbackUserEmail = attributionSettings.fallbackUserEmail || '';
20
+ const userId = rawUserId || fallbackUserEmail || 'unknown-user';
21
+ const userIdSource = rawUserId ? 'n8n-context' : (fallbackUserEmail ? 'fallback-email' : 'unknown');
22
+ const workflow = node.getWorkflow();
23
+ const workflowId = workflow.id || 'unknown-workflow';
24
+ const workflowName = workflow.name || 'unknown-workflow-name';
25
+ const executionId = node.getExecutionId() || 'unknown-execution';
26
+ const executionMode = node.getMode();
27
+ const department = attributionSettings.department || '';
28
+ const costCenter = attributionSettings.costCenter || '';
29
+ const applicationName = attributionSettings.applicationName || '';
30
+ const environment = attributionSettings.environment || 'production';
31
+ const metadata = {
32
+ user_id: String(userId),
33
+ user_id_source: userIdSource,
34
+ workflow_id: String(workflowId),
35
+ workflow_name: String(workflowName),
36
+ execution_id: String(executionId),
37
+ execution_mode: executionMode,
38
+ project_id: String(projectId),
39
+ environment: environment,
40
+ n8n_app_name: applicationName || 'n8n-ai-agent',
41
+ };
42
+ if (department && costCenter) {
43
+ metadata.cost_center = `${costCenter}, ${department}`;
44
+ }
45
+ else if (costCenter) {
46
+ metadata.cost_center = costCenter;
47
+ }
48
+ else if (department) {
49
+ metadata.cost_center = department;
50
+ }
51
+ return metadata;
52
+ }
53
+ function createTfyFetch(tfyMetadata) {
54
+ return async (input, init) => {
55
+ const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
56
+ headers.set('X-TFY-METADATA', JSON.stringify(tfyMetadata));
57
+ const newInit = {
58
+ ...init,
59
+ headers,
60
+ };
61
+ const response = await fetch(input, newInit);
62
+ return response;
63
+ };
64
+ }
65
+ class LmChatTruefoundry {
66
+ constructor() {
67
+ this.methods = {
68
+ listSearch: {
69
+ searchModels: loadModels_1.searchModels
70
+ },
71
+ };
72
+ this.description = {
73
+ usableAsTool: true,
74
+ displayName: 'Truefoundry Chat Model',
75
+ name: 'lmChatTruefoundry',
76
+ icon: 'file:icons/truefoundry.svg',
77
+ group: ['transform'],
78
+ version: 1,
79
+ description: 'Truefoundry Chat Model with automatic user attribution',
80
+ defaults: {
81
+ name: 'Truefoundry Chat Model',
82
+ },
83
+ codex: {
84
+ categories: ['AI'],
85
+ subcategories: {
86
+ AI: ['Language Models', 'Root Nodes'],
87
+ 'Language Models': ['Chat Models(Recommended)'],
88
+ },
89
+ resources: {
90
+ primaryDocumentation: [
91
+ {
92
+ url: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/',
93
+ },
94
+ ],
95
+ },
96
+ },
97
+ inputs: [],
98
+ outputs: [n8n_workflow_1.NodeConnectionTypes.AiLanguageModel],
99
+ credentials: [
100
+ {
101
+ name: 'truefoundryApi',
102
+ required: true,
103
+ },
104
+ ],
105
+ requestDefaults: {
106
+ ignoreHttpStatusErrors: true,
107
+ baseURL: '={{ $parameter.options?.baseURL?.split("/").slice(0,-1).join("/") || $credentials?.gatewayURL?.split("/").slice(0,-1).join("/") || "https://api.openai.com" }}',
108
+ },
109
+ properties: [
110
+ (0, sharedFields_1.getConnectionHintNoticeField)([n8n_workflow_1.NodeConnectionTypes.AiChain, n8n_workflow_1.NodeConnectionTypes.AiAgent]),
111
+ {
112
+ ...INCLUDE_JSON_WARNING,
113
+ displayOptions: {
114
+ show: {
115
+ '/options.responseFormat': ['json_object'],
116
+ },
117
+ },
118
+ },
119
+ {
120
+ ...INCLUDE_JSON_WARNING,
121
+ displayOptions: {
122
+ show: {
123
+ '/options.textFormat.textOptions.type': ['json_object'],
124
+ },
125
+ },
126
+ },
127
+ {
128
+ displayName: 'Model',
129
+ name: 'model',
130
+ type: 'resourceLocator',
131
+ default: { mode: 'list', value: '' },
132
+ required: true,
133
+ description: 'The model to use for generating completions. Models are loaded from your AI gateway.',
134
+ modes: [
135
+ {
136
+ displayName: 'From List',
137
+ name: 'list',
138
+ type: 'list',
139
+ typeOptions: {
140
+ searchListMethod: 'searchModels',
141
+ searchable: true,
142
+ },
143
+ },
144
+ {
145
+ displayName: 'ID',
146
+ name: 'id',
147
+ type: 'string',
148
+ placeholder: 'gpt-4o-mini',
149
+ },
150
+ ],
151
+ },
152
+ {
153
+ displayName: 'Attribution Settings',
154
+ name: 'attributionSettings',
155
+ type: 'collection',
156
+ placeholder: 'Add Attribution Option',
157
+ default: {},
158
+ description: 'Configure fallback attribution values for when n8n context is unavailable (e.g., webhook triggers, scheduled executions)',
159
+ options: [
160
+ {
161
+ displayName: 'Application/Feature Name',
162
+ name: 'applicationName',
163
+ type: 'string',
164
+ default: '',
165
+ placeholder: 'customer-support-bot',
166
+ description: 'Optional application or feature name for categorization',
167
+ },
168
+ {
169
+ displayName: 'Cost Center',
170
+ name: 'costCenter',
171
+ type: 'string',
172
+ default: '',
173
+ placeholder: 'CC-12345',
174
+ description: 'Optional cost center code for billing attribution',
175
+ },
176
+ {
177
+ displayName: 'Department/Team',
178
+ name: 'department',
179
+ type: 'string',
180
+ default: '',
181
+ placeholder: 'engineering',
182
+ description: 'Optional team identifier for cost allocation and reporting',
183
+ },
184
+ {
185
+ displayName: 'Environment',
186
+ name: 'environment',
187
+ type: 'options',
188
+ default: 'production',
189
+ options: [
190
+ { name: 'Production', value: 'production' },
191
+ { name: 'Staging', value: 'staging' },
192
+ { name: 'Development', value: 'development' },
193
+ { name: 'Test', value: 'test' },
194
+ ],
195
+ description: 'Environment identifier for the workflow',
196
+ },
197
+ {
198
+ displayName: 'Fallback User Email',
199
+ name: 'fallbackUserEmail',
200
+ type: 'string',
201
+ default: '',
202
+ placeholder: 'workflow-owner@company.com',
203
+ description: 'Used when n8n userId is unavailable (production webhooks, scheduled triggers). Provides guaranteed attribution.',
204
+ },
205
+ ],
206
+ },
207
+ {
208
+ displayName: 'Options',
209
+ name: 'options',
210
+ type: 'collection',
211
+ placeholder: 'Add Option',
212
+ default: {},
213
+ options: [
214
+ {
215
+ displayName: 'Frequency Penalty',
216
+ name: 'frequencyPenalty',
217
+ type: 'number',
218
+ typeOptions: { minValue: -2, maxValue: 2, numberPrecision: 1 },
219
+ default: 0,
220
+ description: 'Penalize frequent tokens',
221
+ },
222
+ {
223
+ displayName: 'Maximum Number of Tokens',
224
+ name: 'maxTokens',
225
+ type: 'number',
226
+ default: -1,
227
+ description: 'The maximum number of tokens to generate. -1 for no limit.',
228
+ },
229
+ {
230
+ displayName: 'Presence Penalty',
231
+ name: 'presencePenalty',
232
+ type: 'number',
233
+ typeOptions: { minValue: -2, maxValue: 2, numberPrecision: 1 },
234
+ default: 0,
235
+ description: 'Penalize tokens based on presence',
236
+ },
237
+ {
238
+ displayName: 'Sampling Temperature',
239
+ name: 'temperature',
240
+ type: 'number',
241
+ typeOptions: { minValue: 0, maxValue: 2, numberPrecision: 1 },
242
+ default: 0.7,
243
+ description: 'Controls randomness. Lower is more deterministic.',
244
+ },
245
+ {
246
+ displayName: 'Timeout',
247
+ name: 'timeout',
248
+ type: 'number',
249
+ default: 60000,
250
+ description: 'Request timeout in milliseconds',
251
+ },
252
+ {
253
+ displayName: 'Top P',
254
+ name: 'topP',
255
+ type: 'number',
256
+ typeOptions: { minValue: 0, maxValue: 1, numberPrecision: 1 },
257
+ default: 1,
258
+ description: 'Nucleus sampling parameter',
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ };
264
+ }
265
+ async supplyData(itemIndex) {
266
+ const credentials = await this.getCredentials('truefoundryApi');
267
+ const modelParameter = this.getNodeParameter('model', itemIndex);
268
+ const modelName = typeof modelParameter === 'string' ? modelParameter : modelParameter.value;
269
+ const options = this.getNodeParameter('options', itemIndex, {});
270
+ const attributionSettings = this.getNodeParameter('attributionSettings', itemIndex, {});
271
+ const tfyMetadata = getTruefoundryMetadata(this, attributionSettings);
272
+ const configuration = {
273
+ apiKey: credentials.apiKey,
274
+ baseURL: credentials.gatewayURL,
275
+ fetch: createTfyFetch(tfyMetadata),
276
+ defaultHeaders: {
277
+ 'X-TFY-METADATA': JSON.stringify(tfyMetadata),
278
+ },
279
+ };
280
+ const modelKwargs = {
281
+ user: `n8n-user-${tfyMetadata.user_id}-workflow-${tfyMetadata.workflow_id}`,
282
+ };
283
+ const model = new openai_1.ChatOpenAI({
284
+ modelName,
285
+ apiKey: credentials.apiKey,
286
+ maxTokens: options.maxTokens && options.maxTokens > 0 ? options.maxTokens : undefined,
287
+ temperature: options.temperature,
288
+ topP: options.topP,
289
+ frequencyPenalty: options.frequencyPenalty,
290
+ presencePenalty: options.presencePenalty,
291
+ timeout: options.timeout || 60000,
292
+ maxRetries: options.maxRetries || 2,
293
+ configuration,
294
+ modelKwargs,
295
+ });
296
+ return {
297
+ response: model,
298
+ };
299
+ }
300
+ }
301
+ exports.LmChatTruefoundry = LmChatTruefoundry;
302
+ //# sourceMappingURL=LmChatTruefoundry.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LmChatTruefoundry.node.js","sourceRoot":"","sources":["../../../nodes/LmChatTruefoundry/LmChatTruefoundry.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ <svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_350_19975)">
3
+ <path d="M154.656 43.0859C154.761 43.6597 154.957 44.2343 154.957 44.8081C154.972 68.6679 154.96 92.5277 155 116.387C155.002 117.677 154.508 118.293 153.461 118.872C143.787 124.223 134.138 129.623 124.484 135.011C123.958 135.304 123.444 135.621 122.925 135.926C122.788 135.166 122.532 134.406 122.531 133.646C122.505 122.753 122.515 111.859 122.508 100.966C122.508 100.264 122.447 99.5614 122.408 98.7232C121.922 98.908 121.667 98.9707 121.444 99.0953C111.104 104.865 100.767 110.641 90.4299 116.416C90.3012 116.379 90.1717 116.341 90.043 116.303C90.0463 104.913 90.0405 93.5236 90.0705 82.1344C90.0731 81.0665 90.3079 79.9986 90.435 78.9316C93.952 76.9873 97.4749 75.0524 100.986 73.0971C115.5 65.0151 130.012 56.9313 144.519 48.8365C147.912 46.9431 151.278 45.0039 154.656 43.0859Z" fill="#1F009D"/>
4
+ <path d="M90.0456 116.303C90.1743 116.341 90.3039 116.378 90.4326 116.416C90.2947 117.207 90.0631 117.994 90.0389 118.788C89.9804 120.679 90.0188 122.573 90.0188 124.466C90.0188 133.39 90.0255 142.314 90.008 151.237C90.0063 152.144 90.2721 153.182 89.2265 153.78C79.1058 148.127 68.9892 142.467 58.8643 136.822C50.1435 131.96 41.4085 127.126 32.6919 122.256C30.2389 120.885 27.8292 119.433 25.4004 118.018C25.4121 116.934 25.433 115.85 25.4338 114.766C25.4347 92.0675 25.4347 69.3696 25.4347 46.671C25.4347 46.0607 25.3979 45.448 25.453 44.8428C25.4923 44.4131 25.6578 43.9961 25.8216 43.3613C26.9884 44.0114 27.9688 44.5606 28.9509 45.1047C33.7568 47.766 38.5685 50.4154 43.3668 53.0885C48.1067 55.7286 52.8348 58.3924 57.5679 61.046C57.5554 73.0335 57.5379 85.021 57.5504 97.0094C57.5512 97.5781 57.827 98.1468 57.9741 98.7155C68.1116 104.377 78.2482 110.042 88.3932 115.69C88.9014 115.972 89.4931 116.102 90.0456 116.303Z" fill="#6DCAFF"/>
5
+ <path d="M57.9743 98.7152C57.8264 98.1465 57.5514 97.5778 57.5506 97.0091C57.5381 85.0215 57.5564 73.034 57.5681 61.0456C64.563 57.2139 71.5662 53.3966 78.551 49.5463C82.1265 47.5749 85.6712 45.5451 89.2292 43.5423C89.953 43.205 90.6985 42.9075 91.3981 42.5253C101.098 37.2282 110.804 31.9413 120.474 26.5891C121.768 25.8729 122.767 25.7661 124.135 26.5111C133.664 31.7006 143.249 36.7841 152.81 41.9134C153.45 42.2566 154.042 42.6931 154.655 43.0864C151.278 45.0043 147.912 46.9435 144.52 48.836C130.014 56.9308 115.501 65.0146 100.987 73.0967C97.4761 75.052 93.9532 76.9869 90.4361 78.9312C89.6814 78.6794 88.8698 78.5354 88.1828 78.159C83.4847 75.5808 78.8118 72.9535 74.1304 70.3431C69.5076 67.7649 64.8881 65.1808 60.2569 62.6178C59.6443 62.2788 58.9723 62.0508 58.2961 61.7567C57.7921 63.7518 57.625 87.487 57.9743 98.7152Z" fill="#5429FF"/>
6
+ <path d="M89.2256 153.779C90.2703 153.182 90.0054 152.144 90.0071 151.237C90.0246 142.313 90.0179 133.389 90.0179 124.466C90.0179 122.573 89.9795 120.679 90.038 118.787C90.0631 117.993 90.2946 117.206 90.4317 116.416C100.769 110.641 111.106 104.865 121.446 99.0947C121.668 98.971 121.924 98.9074 122.409 98.7227C122.449 99.5609 122.509 100.263 122.51 100.965C122.516 111.859 122.506 122.752 122.532 133.645C122.534 134.406 122.789 135.165 122.927 135.925C116.746 139.359 110.565 142.791 104.386 146.228C100.012 148.66 95.6446 151.104 91.2683 153.532C90.6322 153.884 89.9778 154.31 89.2256 153.779Z" fill="#B9E5FF"/>
7
+ <path d="M89.229 43.5432C85.6701 45.5468 82.1263 47.5758 78.5508 49.5472C71.566 53.3975 64.5636 57.2157 57.5679 61.0465C52.8348 58.3929 48.1075 55.7291 43.3668 53.089C38.5676 50.4159 33.7559 47.7665 28.9509 45.1052C27.9688 44.5611 26.9884 44.0128 25.8216 43.3619C25.6578 43.9967 25.4923 44.4136 25.453 44.8433C25.3979 45.4493 25.4346 46.0629 25.4346 46.6723C25.4346 69.371 25.4346 92.0688 25.433 114.768C25.433 115.852 25.4112 116.936 25.3995 118.02C25.2767 117.228 25.0468 116.435 25.046 115.644C25.0276 92.1968 25.046 68.7498 25 45.3036C24.9967 43.5822 25.575 42.6381 27.0879 41.8405C36.5124 36.874 45.9009 31.8345 55.2603 26.7434C56.8441 25.8814 58.0418 25.895 59.665 26.8214C68.4543 31.8371 77.338 36.6833 86.1791 41.6075C87.2289 42.1923 88.2143 42.8957 89.229 43.5432Z" fill="#99DAFF"/>
8
+ <path d="M57.974 98.7152C57.6246 87.487 57.7918 63.751 58.2949 61.7559C58.9719 62.05 59.6439 62.2779 60.2557 62.617C64.8869 65.1799 69.5064 67.764 74.1292 70.3422C78.8105 72.9526 83.4835 75.58 88.1824 78.1582C88.8694 78.5354 89.6818 78.6786 90.4357 78.9303C90.3087 79.9982 90.0747 81.0652 90.0713 82.1331C90.0412 93.5223 90.0471 104.912 90.0437 116.302C89.4913 116.101 88.9004 115.971 88.3922 115.688C78.2481 110.042 68.1123 104.377 57.974 98.7152Z" fill="#2900CE"/>
9
+ </g>
10
+ <defs>
11
+ <clipPath id="clip0_350_19975">
12
+ <rect width="130" height="128.03" fill="white" transform="translate(25 26)"/>
13
+ </clipPath>
14
+ </defs>
15
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_350_19975)">
3
+ <path d="M154.656 43.0859C154.761 43.6597 154.957 44.2343 154.957 44.8081C154.972 68.6679 154.96 92.5277 155 116.387C155.002 117.677 154.508 118.293 153.461 118.872C143.787 124.223 134.138 129.623 124.484 135.011C123.958 135.304 123.444 135.621 122.925 135.926C122.788 135.166 122.532 134.406 122.531 133.646C122.505 122.753 122.515 111.859 122.508 100.966C122.508 100.264 122.447 99.5614 122.408 98.7232C121.922 98.908 121.667 98.9707 121.444 99.0953C111.104 104.865 100.767 110.641 90.4299 116.416C90.3012 116.379 90.1717 116.341 90.043 116.303C90.0463 104.913 90.0405 93.5236 90.0705 82.1344C90.0731 81.0665 90.3079 79.9986 90.435 78.9316C93.952 76.9873 97.4749 75.0524 100.986 73.0971C115.5 65.0151 130.012 56.9313 144.519 48.8365C147.912 46.9431 151.278 45.0039 154.656 43.0859Z" fill="#1F009D"/>
4
+ <path d="M90.0456 116.303C90.1743 116.341 90.3039 116.378 90.4326 116.416C90.2947 117.207 90.0631 117.994 90.0389 118.788C89.9804 120.679 90.0188 122.573 90.0188 124.466C90.0188 133.39 90.0255 142.314 90.008 151.237C90.0063 152.144 90.2721 153.182 89.2265 153.78C79.1058 148.127 68.9892 142.467 58.8643 136.822C50.1435 131.96 41.4085 127.126 32.6919 122.256C30.2389 120.885 27.8292 119.433 25.4004 118.018C25.4121 116.934 25.433 115.85 25.4338 114.766C25.4347 92.0675 25.4347 69.3696 25.4347 46.671C25.4347 46.0607 25.3979 45.448 25.453 44.8428C25.4923 44.4131 25.6578 43.9961 25.8216 43.3613C26.9884 44.0114 27.9688 44.5606 28.9509 45.1047C33.7568 47.766 38.5685 50.4154 43.3668 53.0885C48.1067 55.7286 52.8348 58.3924 57.5679 61.046C57.5554 73.0335 57.5379 85.021 57.5504 97.0094C57.5512 97.5781 57.827 98.1468 57.9741 98.7155C68.1116 104.377 78.2482 110.042 88.3932 115.69C88.9014 115.972 89.4931 116.102 90.0456 116.303Z" fill="#6DCAFF"/>
5
+ <path d="M57.9743 98.7152C57.8264 98.1465 57.5514 97.5778 57.5506 97.0091C57.5381 85.0215 57.5564 73.034 57.5681 61.0456C64.563 57.2139 71.5662 53.3966 78.551 49.5463C82.1265 47.5749 85.6712 45.5451 89.2292 43.5423C89.953 43.205 90.6985 42.9075 91.3981 42.5253C101.098 37.2282 110.804 31.9413 120.474 26.5891C121.768 25.8729 122.767 25.7661 124.135 26.5111C133.664 31.7006 143.249 36.7841 152.81 41.9134C153.45 42.2566 154.042 42.6931 154.655 43.0864C151.278 45.0043 147.912 46.9435 144.52 48.836C130.014 56.9308 115.501 65.0146 100.987 73.0967C97.4761 75.052 93.9532 76.9869 90.4361 78.9312C89.6814 78.6794 88.8698 78.5354 88.1828 78.159C83.4847 75.5808 78.8118 72.9535 74.1304 70.3431C69.5076 67.7649 64.8881 65.1808 60.2569 62.6178C59.6443 62.2788 58.9723 62.0508 58.2961 61.7567C57.7921 63.7518 57.625 87.487 57.9743 98.7152Z" fill="#5429FF"/>
6
+ <path d="M89.2256 153.779C90.2703 153.182 90.0054 152.144 90.0071 151.237C90.0246 142.313 90.0179 133.389 90.0179 124.466C90.0179 122.573 89.9795 120.679 90.038 118.787C90.0631 117.993 90.2946 117.206 90.4317 116.416C100.769 110.641 111.106 104.865 121.446 99.0947C121.668 98.971 121.924 98.9074 122.409 98.7227C122.449 99.5609 122.509 100.263 122.51 100.965C122.516 111.859 122.506 122.752 122.532 133.645C122.534 134.406 122.789 135.165 122.927 135.925C116.746 139.359 110.565 142.791 104.386 146.228C100.012 148.66 95.6446 151.104 91.2683 153.532C90.6322 153.884 89.9778 154.31 89.2256 153.779Z" fill="#B9E5FF"/>
7
+ <path d="M89.229 43.5432C85.6701 45.5468 82.1263 47.5758 78.5508 49.5472C71.566 53.3975 64.5636 57.2157 57.5679 61.0465C52.8348 58.3929 48.1075 55.7291 43.3668 53.089C38.5676 50.4159 33.7559 47.7665 28.9509 45.1052C27.9688 44.5611 26.9884 44.0128 25.8216 43.3619C25.6578 43.9967 25.4923 44.4136 25.453 44.8433C25.3979 45.4493 25.4346 46.0629 25.4346 46.6723C25.4346 69.371 25.4346 92.0688 25.433 114.768C25.433 115.852 25.4112 116.936 25.3995 118.02C25.2767 117.228 25.0468 116.435 25.046 115.644C25.0276 92.1968 25.046 68.7498 25 45.3036C24.9967 43.5822 25.575 42.6381 27.0879 41.8405C36.5124 36.874 45.9009 31.8345 55.2603 26.7434C56.8441 25.8814 58.0418 25.895 59.665 26.8214C68.4543 31.8371 77.338 36.6833 86.1791 41.6075C87.2289 42.1923 88.2143 42.8957 89.229 43.5432Z" fill="#99DAFF"/>
8
+ <path d="M57.974 98.7152C57.6246 87.487 57.7918 63.751 58.2949 61.7559C58.9719 62.05 59.6439 62.2779 60.2557 62.617C64.8869 65.1799 69.5064 67.764 74.1292 70.3422C78.8105 72.9526 83.4835 75.58 88.1824 78.1582C88.8694 78.5354 89.6818 78.6786 90.4357 78.9303C90.3087 79.9982 90.0747 81.0652 90.0713 82.1331C90.0412 93.5223 90.0471 104.912 90.0437 116.302C89.4913 116.101 88.9004 115.971 88.3922 115.688C78.2481 110.042 68.1123 104.377 57.974 98.7152Z" fill="#2900CE"/>
9
+ </g>
10
+ <defs>
11
+ <clipPath id="clip0_350_19975">
12
+ <rect width="130" height="128.03" fill="white" transform="translate(25 26)"/>
13
+ </clipPath>
14
+ </defs>
15
+ </svg>
@@ -0,0 +1,2 @@
1
+ import type { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
2
+ export declare function searchModels(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchModels = searchModels;
4
+ const openai_1 = require("openai");
5
+ async function searchModels(filter) {
6
+ var _a;
7
+ const credentials = await this.getCredentials('truefoundryApi');
8
+ const baseURL = (_a = credentials.gatewayURL) !== null && _a !== void 0 ? _a : 'https://gateway.truefoundry.ai/';
9
+ const openai = new openai_1.OpenAI({
10
+ baseURL,
11
+ apiKey: credentials.apiKey,
12
+ });
13
+ const { data: models = [] } = await openai.models.list();
14
+ let results = [];
15
+ if (filter) {
16
+ for (const model of models) {
17
+ if (model.id.toLowerCase().includes(filter.toLowerCase())) {
18
+ results.push({
19
+ name: model.id,
20
+ value: model.id,
21
+ });
22
+ }
23
+ }
24
+ }
25
+ else {
26
+ for (const model of models) {
27
+ results.push({
28
+ name: model.id,
29
+ value: model.id,
30
+ });
31
+ }
32
+ }
33
+ results = results.sort((a, b) => {
34
+ const modelA = models.find((m) => m.id === a.value);
35
+ const modelB = models.find((m) => m.id === b.value);
36
+ if (!modelA || !modelB)
37
+ return 0;
38
+ const dateA = new Date(modelA.created);
39
+ const dateB = new Date(modelB.created);
40
+ return dateB.getTime() - dateA.getTime();
41
+ });
42
+ return { results };
43
+ }
44
+ //# sourceMappingURL=loadModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadModels.js","sourceRoot":"","sources":["../../../../nodes/LmChatTruefoundry/methods/loadModels.ts"],"names":[],"mappings":";;AAQA,oCA8CC;AArDD,mCAAgC;AAOzB,KAAK,UAAU,YAAY,CAA8B,MAAe;;IAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,UAAoB,mCAAI,iCAAiC,CAAC;IAEtF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;QACtB,OAAO;QACP,MAAM,EAAE,WAAW,CAAC,MAAgB;KACvC,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAGzD,IAAI,OAAO,GAA2B,EAAE,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,KAAK,CAAC,EAAE;oBACd,KAAK,EAAE,KAAK,CAAC,EAAE;iBAClB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,KAAK,CAAC,EAAE;gBACd,KAAK,EAAE,KAAK,CAAC,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAGD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAGjC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { OpenAIClient } from '@langchain/openai';
2
+ export type BuiltInTools = {
3
+ webSearch?: {
4
+ searchContextSize?: 'low' | 'medium' | 'high';
5
+ allowedDomains?: string;
6
+ country?: string;
7
+ city?: string;
8
+ region?: string;
9
+ };
10
+ fileSearch?: {
11
+ vectorStoreIds?: string;
12
+ filters?: string;
13
+ maxResults?: number;
14
+ };
15
+ codeInterpreter?: boolean;
16
+ };
17
+ export type ModelOptions = {
18
+ baseURL?: string;
19
+ frequencyPenalty?: number;
20
+ maxTokens?: number;
21
+ responseFormat?: 'text' | 'json_object';
22
+ presencePenalty?: number;
23
+ temperature?: number;
24
+ reasoningEffort?: 'low' | 'medium' | 'high';
25
+ timeout?: number;
26
+ maxRetries?: number;
27
+ topP?: number;
28
+ conversationId?: string;
29
+ metadata?: string;
30
+ promptCacheKey?: string;
31
+ safetyIdentifier?: string;
32
+ serviceTier?: 'auto' | 'flex' | 'default' | 'priority';
33
+ topLogprobs?: number;
34
+ textFormat?: {
35
+ textOptions?: TextOptions;
36
+ };
37
+ promptConfig?: {
38
+ promptOptions?: PromptOptions;
39
+ };
40
+ };
41
+ export type PromptOptions = {
42
+ promptId?: string;
43
+ version?: string;
44
+ variables?: string;
45
+ };
46
+ export type TextOptions = {
47
+ type?: 'text' | 'json_schema' | 'json_object';
48
+ verbosity?: 'low' | 'medium' | 'high';
49
+ name?: string;
50
+ schema?: string;
51
+ description?: string;
52
+ strict?: boolean;
53
+ };
54
+ export type ChatResponseRequest = OpenAIClient.Responses.ResponseCreateParamsNonStreaming & {
55
+ conversation?: {
56
+ id: string;
57
+ } | string;
58
+ top_logprobs?: number;
59
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../nodes/LmChatTruefoundry/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { NodeConnectionTypes } from 'n8n-workflow';
2
+ import type { IDisplayOptions, INodeProperties } from 'n8n-workflow';
3
+ export declare const metadataFilterField: INodeProperties;
4
+ export declare function getTemplateNoticeField(templateId: number): INodeProperties;
5
+ export declare function getBatchingOptionFields(displayOptions: IDisplayOptions | undefined, defaultBatchSize?: number): INodeProperties;
6
+ type AllowedConnectionTypes = typeof NodeConnectionTypes.AiAgent | typeof NodeConnectionTypes.AiChain | typeof NodeConnectionTypes.AiDocument | typeof NodeConnectionTypes.AiVectorStore | typeof NodeConnectionTypes.AiRetriever;
7
+ export declare function getConnectionHintNoticeField(connectionTypes: AllowedConnectionTypes[]): INodeProperties;
8
+ export {};