@exulu/backend 1.35.0 → 1.36.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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- # [1.35.0](https://github.com/Qventu/exulu-backend/compare/v1.34.1...v1.35.0) (2025-11-18)
1
+ # [1.36.0](https://github.com/Qventu/exulu-backend/compare/v1.35.0...v1.36.0) (2025-11-19)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * add Google Vertex AI agent support and enhance embedder configuration system ([9668c10](https://github.com/Qventu/exulu-backend/commit/9668c1093e9bc00f64a4a0b2e1137625ca0b2396))
6
+ * upgrade AI SDK to v5.0.95 and add Gemini 3 Pro support with parameterized context sources ([163c8e1](https://github.com/Qventu/exulu-backend/commit/163c8e161fe29d2c70cecb0db4e86eee7c177300))
package/dist/index.cjs CHANGED
@@ -3958,7 +3958,8 @@ type PageInfo {
3958
3958
  schedule: source.config?.schedule,
3959
3959
  queue: queueName,
3960
3960
  retries: source.config?.retries,
3961
- backoff: source.config?.backoff
3961
+ backoff: source.config?.backoff,
3962
+ params: source.config?.params
3962
3963
  }
3963
3964
  };
3964
3965
  }));
@@ -4013,7 +4014,8 @@ type PageInfo {
4013
4014
  schedule: source.config?.schedule,
4014
4015
  queue: queueName,
4015
4016
  retries: source.config?.retries,
4016
- backoff: source.config?.backoff
4017
+ backoff: source.config?.backoff,
4018
+ params: source.config?.params
4017
4019
  }
4018
4020
  };
4019
4021
  }));
@@ -4270,6 +4272,13 @@ type ContextSourceConfig {
4270
4272
  queue: String
4271
4273
  retries: Int
4272
4274
  backoff: ContextSourceBackoff
4275
+ params: [ContextSourceParam!]
4276
+ }
4277
+
4278
+ type ContextSourceParam {
4279
+ name: String!
4280
+ description: String!
4281
+ default: String
4273
4282
  }
4274
4283
 
4275
4284
  type ContextSourceBackoff {
@@ -8119,24 +8128,41 @@ var claudeSonnet45Agent = new ExuluAgent2({
8119
8128
 
8120
8129
  // src/templates/agents/google/vertex/index.ts
8121
8130
  var import_google_vertex = require("@ai-sdk/google-vertex");
8122
- var wrapperJsonGoogleAuth = `{
8123
- "project": "project-name",
8124
- "location": "europe-west1",
8125
- "googleAuthOptions": {
8126
- "credentials": {
8127
- "type": "service_account",
8128
- "project_id": "XX-XXXX",
8129
- "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8130
- "private_key": "-----BEGIN PRIVATE KEY-----
8131
- .... your private key ....
8132
- -----END PRIVATE KEY-----
8133
- ",
8134
- "client_email": "xxxx@xxxx.gserviceaccount.com",
8135
- "client_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8136
- "universe_domain": "googleapis.com"
8137
- }
8138
- }
8139
- }`;
8131
+ var import_google_vertex2 = require("@ai-sdk/google-vertex");
8132
+ var vertexAuthenticationInformation = `
8133
+ ### Vertex Authentication Setup (Google Auth)
8134
+
8135
+ Vertex uses **Google Auth**. To authenticate, follow these steps:
8136
+
8137
+ 1. Visit the Google Cloud Credentials page:
8138
+ **[https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)**
8139
+
8140
+ 2. Create a **Service Account**.
8141
+
8142
+ 3. Navigate to **Keys** \u2192 **Add Key** \u2192 **Create new key** \u2192 select **JSON**.
8143
+
8144
+ 4. Download the generated JSON key file.
8145
+
8146
+ 5. Copy the **entire contents** of the JSON file into an **encrypted authentication variable** in your IMP Agent Instance, using a structure like this:
8147
+
8148
+ \`\`\`json
8149
+ {
8150
+ "project": "project-name",
8151
+ "location": "europe-west1",
8152
+ "googleAuthOptions": {
8153
+ "credentials": {
8154
+ "type": "service_account",
8155
+ "project_id": "XX-XXXX",
8156
+ "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8157
+ "private_key": "-----BEGIN PRIVATE KEY-----.....-----END PRIVATE KEY-----",
8158
+ "client_email": "xxxx@xxxx.gserviceaccount.com",
8159
+ "client_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8160
+ "universe_domain": "googleapis.com"
8161
+ }
8162
+ }
8163
+ }
8164
+ \`\`\`
8165
+ `;
8140
8166
  var vertexGemini25FlashAgent = new ExuluAgent2({
8141
8167
  id: `default_vertex_gemini_2_5_flash_agent`,
8142
8168
  name: `GEMINI-2.5-FLASH`,
@@ -8150,10 +8176,7 @@ var vertexGemini25FlashAgent = new ExuluAgent2({
8150
8176
  audio: [".mpeg", ".mp3", ".m4a", ".wav", ".mp4"],
8151
8177
  video: [".mp4", ".mpeg"]
8152
8178
  },
8153
- authenticationInformation: `Vertex uses Google Auth, to authenticate you need to visit
8154
- https://console.cloud.google.com/apis/credentials, create a service account, go to 'keys'
8155
- and download the resulting JSON file, and copy the contents of the JSON file into an
8156
- encrypted authentication variable in your IMP Agent Instance like this: ${wrapperJsonGoogleAuth}.`,
8179
+ authenticationInformation: vertexAuthenticationInformation,
8157
8180
  maxContextLength: 1048576,
8158
8181
  config: {
8159
8182
  name: `GEMINI-2.5-FLASH`,
@@ -8171,8 +8194,46 @@ var vertexGemini25FlashAgent = new ExuluAgent2({
8171
8194
  if (!googleAuthPayload.location) {
8172
8195
  throw new Error("Location not set in authentication json for Google Vertex Gemini 2.5 Flash agent, should be for example 'europe-west1'");
8173
8196
  }
8174
- const vertex = (0, import_google_vertex.createVertex)(googleAuthPayload);
8175
- const model = vertex("gemini-2.5-flash");
8197
+ const vertex2 = (0, import_google_vertex.createVertex)(googleAuthPayload);
8198
+ const model = vertex2("gemini-2.5-flash");
8199
+ return model;
8200
+ }
8201
+ }
8202
+ }
8203
+ });
8204
+ var vertexGemini3ProAgent = new ExuluAgent2({
8205
+ id: `default_vertex_gemini_3_pro_agent`,
8206
+ name: `GEMINI-3-PRO`,
8207
+ provider: "vertex",
8208
+ description: `Google Vertex Gemini 3 Pro model. Very high intelligence and capability. Moderately Fast.`,
8209
+ type: "agent",
8210
+ capabilities: {
8211
+ text: true,
8212
+ images: [".png", ".jpg", ".jpeg", ".webp"],
8213
+ files: [".pdf", ".txt"],
8214
+ audio: [".mpeg", ".mp3", ".m4a", ".wav", ".mp4"],
8215
+ video: [".mp4", ".mpeg"]
8216
+ },
8217
+ authenticationInformation: vertexAuthenticationInformation,
8218
+ maxContextLength: 1048576,
8219
+ config: {
8220
+ name: `GEMINI-3-PRO`,
8221
+ instructions: "",
8222
+ model: {
8223
+ create: ({ apiKey }) => {
8224
+ console.log("[EXULU] apiKey", apiKey);
8225
+ if (!apiKey) {
8226
+ throw new Error("Auth credentials not found for Google Vertex agent, make sure you have set the provider api key to a valid google authentication json.");
8227
+ }
8228
+ const googleAuthPayload = JSON.parse(apiKey || "{}");
8229
+ if (!googleAuthPayload) {
8230
+ throw new Error("API key not found for Google Vertex Gemini 3 Pro agent.");
8231
+ }
8232
+ if (!googleAuthPayload.location) {
8233
+ throw new Error("Location not set in authentication json for Google Vertex Gemini 3 Pro agent, should be for example 'europe-west1'");
8234
+ }
8235
+ const vertex2 = (0, import_google_vertex.createVertex)(googleAuthPayload);
8236
+ const model = vertex2("gemini-3-pro-preview");
8176
8237
  return model;
8177
8238
  }
8178
8239
  }
@@ -9593,6 +9654,7 @@ var ExuluApp = class {
9593
9654
  claudeSonnet4Agent,
9594
9655
  claudeOpus4Agent,
9595
9656
  vertexGemini25FlashAgent,
9657
+ vertexGemini3ProAgent,
9596
9658
  claudeSonnet45Agent,
9597
9659
  gpt5MiniAgent,
9598
9660
  gpt5agent,
@@ -11332,7 +11394,8 @@ var ExuluDefaultAgents = {
11332
11394
  sonnet45: claudeSonnet45Agent
11333
11395
  },
11334
11396
  google: {
11335
- vertexGemini25Flash: vertexGemini25FlashAgent
11397
+ vertexGemini25Flash: vertexGemini25FlashAgent,
11398
+ vertexGemini3Pro: vertexGemini3ProAgent
11336
11399
  },
11337
11400
  openai: {
11338
11401
  gpt5Mini: gpt5MiniAgent,
package/dist/index.d.cts CHANGED
@@ -570,6 +570,11 @@ type ExuluContextSource = {
570
570
  type: 'exponential' | 'linear';
571
571
  delay: number;
572
572
  };
573
+ params?: {
574
+ name: string;
575
+ description: string;
576
+ default?: string;
577
+ }[];
573
578
  };
574
579
  execute: (inputs: any) => Promise<Item[]>;
575
580
  };
@@ -1610,6 +1615,7 @@ declare const ExuluDefaultAgents: {
1610
1615
  };
1611
1616
  google: {
1612
1617
  vertexGemini25Flash: ExuluAgent;
1618
+ vertexGemini3Pro: ExuluAgent;
1613
1619
  };
1614
1620
  openai: {
1615
1621
  gpt5Mini: ExuluAgent;
package/dist/index.d.ts CHANGED
@@ -570,6 +570,11 @@ type ExuluContextSource = {
570
570
  type: 'exponential' | 'linear';
571
571
  delay: number;
572
572
  };
573
+ params?: {
574
+ name: string;
575
+ description: string;
576
+ default?: string;
577
+ }[];
573
578
  };
574
579
  execute: (inputs: any) => Promise<Item[]>;
575
580
  };
@@ -1610,6 +1615,7 @@ declare const ExuluDefaultAgents: {
1610
1615
  };
1611
1616
  google: {
1612
1617
  vertexGemini25Flash: ExuluAgent;
1618
+ vertexGemini3Pro: ExuluAgent;
1613
1619
  };
1614
1620
  openai: {
1615
1621
  gpt5Mini: ExuluAgent;
package/dist/index.js CHANGED
@@ -3906,7 +3906,8 @@ type PageInfo {
3906
3906
  schedule: source.config?.schedule,
3907
3907
  queue: queueName,
3908
3908
  retries: source.config?.retries,
3909
- backoff: source.config?.backoff
3909
+ backoff: source.config?.backoff,
3910
+ params: source.config?.params
3910
3911
  }
3911
3912
  };
3912
3913
  }));
@@ -3961,7 +3962,8 @@ type PageInfo {
3961
3962
  schedule: source.config?.schedule,
3962
3963
  queue: queueName,
3963
3964
  retries: source.config?.retries,
3964
- backoff: source.config?.backoff
3965
+ backoff: source.config?.backoff,
3966
+ params: source.config?.params
3965
3967
  }
3966
3968
  };
3967
3969
  }));
@@ -4218,6 +4220,13 @@ type ContextSourceConfig {
4218
4220
  queue: String
4219
4221
  retries: Int
4220
4222
  backoff: ContextSourceBackoff
4223
+ params: [ContextSourceParam!]
4224
+ }
4225
+
4226
+ type ContextSourceParam {
4227
+ name: String!
4228
+ description: String!
4229
+ default: String
4221
4230
  }
4222
4231
 
4223
4232
  type ContextSourceBackoff {
@@ -8086,24 +8095,41 @@ var claudeSonnet45Agent = new ExuluAgent2({
8086
8095
 
8087
8096
  // src/templates/agents/google/vertex/index.ts
8088
8097
  import { createVertex } from "@ai-sdk/google-vertex";
8089
- var wrapperJsonGoogleAuth = `{
8090
- "project": "project-name",
8091
- "location": "europe-west1",
8092
- "googleAuthOptions": {
8093
- "credentials": {
8094
- "type": "service_account",
8095
- "project_id": "XX-XXXX",
8096
- "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8097
- "private_key": "-----BEGIN PRIVATE KEY-----
8098
- .... your private key ....
8099
- -----END PRIVATE KEY-----
8100
- ",
8101
- "client_email": "xxxx@xxxx.gserviceaccount.com",
8102
- "client_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8103
- "universe_domain": "googleapis.com"
8104
- }
8105
- }
8106
- }`;
8098
+ import "@ai-sdk/google-vertex";
8099
+ var vertexAuthenticationInformation = `
8100
+ ### Vertex Authentication Setup (Google Auth)
8101
+
8102
+ Vertex uses **Google Auth**. To authenticate, follow these steps:
8103
+
8104
+ 1. Visit the Google Cloud Credentials page:
8105
+ **[https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)**
8106
+
8107
+ 2. Create a **Service Account**.
8108
+
8109
+ 3. Navigate to **Keys** \u2192 **Add Key** \u2192 **Create new key** \u2192 select **JSON**.
8110
+
8111
+ 4. Download the generated JSON key file.
8112
+
8113
+ 5. Copy the **entire contents** of the JSON file into an **encrypted authentication variable** in your IMP Agent Instance, using a structure like this:
8114
+
8115
+ \`\`\`json
8116
+ {
8117
+ "project": "project-name",
8118
+ "location": "europe-west1",
8119
+ "googleAuthOptions": {
8120
+ "credentials": {
8121
+ "type": "service_account",
8122
+ "project_id": "XX-XXXX",
8123
+ "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8124
+ "private_key": "-----BEGIN PRIVATE KEY-----.....-----END PRIVATE KEY-----",
8125
+ "client_email": "xxxx@xxxx.gserviceaccount.com",
8126
+ "client_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8127
+ "universe_domain": "googleapis.com"
8128
+ }
8129
+ }
8130
+ }
8131
+ \`\`\`
8132
+ `;
8107
8133
  var vertexGemini25FlashAgent = new ExuluAgent2({
8108
8134
  id: `default_vertex_gemini_2_5_flash_agent`,
8109
8135
  name: `GEMINI-2.5-FLASH`,
@@ -8117,10 +8143,7 @@ var vertexGemini25FlashAgent = new ExuluAgent2({
8117
8143
  audio: [".mpeg", ".mp3", ".m4a", ".wav", ".mp4"],
8118
8144
  video: [".mp4", ".mpeg"]
8119
8145
  },
8120
- authenticationInformation: `Vertex uses Google Auth, to authenticate you need to visit
8121
- https://console.cloud.google.com/apis/credentials, create a service account, go to 'keys'
8122
- and download the resulting JSON file, and copy the contents of the JSON file into an
8123
- encrypted authentication variable in your IMP Agent Instance like this: ${wrapperJsonGoogleAuth}.`,
8146
+ authenticationInformation: vertexAuthenticationInformation,
8124
8147
  maxContextLength: 1048576,
8125
8148
  config: {
8126
8149
  name: `GEMINI-2.5-FLASH`,
@@ -8138,8 +8161,46 @@ var vertexGemini25FlashAgent = new ExuluAgent2({
8138
8161
  if (!googleAuthPayload.location) {
8139
8162
  throw new Error("Location not set in authentication json for Google Vertex Gemini 2.5 Flash agent, should be for example 'europe-west1'");
8140
8163
  }
8141
- const vertex = createVertex(googleAuthPayload);
8142
- const model = vertex("gemini-2.5-flash");
8164
+ const vertex2 = createVertex(googleAuthPayload);
8165
+ const model = vertex2("gemini-2.5-flash");
8166
+ return model;
8167
+ }
8168
+ }
8169
+ }
8170
+ });
8171
+ var vertexGemini3ProAgent = new ExuluAgent2({
8172
+ id: `default_vertex_gemini_3_pro_agent`,
8173
+ name: `GEMINI-3-PRO`,
8174
+ provider: "vertex",
8175
+ description: `Google Vertex Gemini 3 Pro model. Very high intelligence and capability. Moderately Fast.`,
8176
+ type: "agent",
8177
+ capabilities: {
8178
+ text: true,
8179
+ images: [".png", ".jpg", ".jpeg", ".webp"],
8180
+ files: [".pdf", ".txt"],
8181
+ audio: [".mpeg", ".mp3", ".m4a", ".wav", ".mp4"],
8182
+ video: [".mp4", ".mpeg"]
8183
+ },
8184
+ authenticationInformation: vertexAuthenticationInformation,
8185
+ maxContextLength: 1048576,
8186
+ config: {
8187
+ name: `GEMINI-3-PRO`,
8188
+ instructions: "",
8189
+ model: {
8190
+ create: ({ apiKey }) => {
8191
+ console.log("[EXULU] apiKey", apiKey);
8192
+ if (!apiKey) {
8193
+ throw new Error("Auth credentials not found for Google Vertex agent, make sure you have set the provider api key to a valid google authentication json.");
8194
+ }
8195
+ const googleAuthPayload = JSON.parse(apiKey || "{}");
8196
+ if (!googleAuthPayload) {
8197
+ throw new Error("API key not found for Google Vertex Gemini 3 Pro agent.");
8198
+ }
8199
+ if (!googleAuthPayload.location) {
8200
+ throw new Error("Location not set in authentication json for Google Vertex Gemini 3 Pro agent, should be for example 'europe-west1'");
8201
+ }
8202
+ const vertex2 = createVertex(googleAuthPayload);
8203
+ const model = vertex2("gemini-3-pro-preview");
8143
8204
  return model;
8144
8205
  }
8145
8206
  }
@@ -9560,6 +9621,7 @@ var ExuluApp = class {
9560
9621
  claudeSonnet4Agent,
9561
9622
  claudeOpus4Agent,
9562
9623
  vertexGemini25FlashAgent,
9624
+ vertexGemini3ProAgent,
9563
9625
  claudeSonnet45Agent,
9564
9626
  gpt5MiniAgent,
9565
9627
  gpt5agent,
@@ -11299,7 +11361,8 @@ var ExuluDefaultAgents = {
11299
11361
  sonnet45: claudeSonnet45Agent
11300
11362
  },
11301
11363
  google: {
11302
- vertexGemini25Flash: vertexGemini25FlashAgent
11364
+ vertexGemini25Flash: vertexGemini25FlashAgent,
11365
+ vertexGemini3Pro: vertexGemini3ProAgent
11303
11366
  },
11304
11367
  openai: {
11305
11368
  gpt5Mini: gpt5MiniAgent,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@exulu/backend",
3
3
  "author": "Qventu Bv.",
4
- "version": "1.35.0",
4
+ "version": "1.36.0",
5
5
  "main": "./dist/index.js",
6
6
  "private": false,
7
7
  "publishConfig": {
@@ -67,7 +67,7 @@
67
67
  "@opentelemetry/sdk-node": "^0.203.0",
68
68
  "@opentelemetry/semantic-conventions": "^1.36.0",
69
69
  "@opentelemetry/winston-transport": "^0.14.1",
70
- "ai": "^5.0.56",
70
+ "ai": "^5.0.95",
71
71
  "apollo-server": "^3.13.0",
72
72
  "bcryptjs": "^3.0.2",
73
73
  "body-parser": "^2.2.0",
@@ -24,6 +24,11 @@ export interface Context {
24
24
  schedule?: string
25
25
  queue?: string
26
26
  retries?: number
27
+ params?: {
28
+ name: string,
29
+ description: string,
30
+ default: string
31
+ }[]
27
32
  backoff?: {
28
33
  type: 'exponential' | 'linear'
29
34
  delay: number