@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 +2 -2
- package/dist/index.cjs +90 -27
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +90 -27
- package/package.json +2 -2
- package/types/models/context.ts +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# [1.
|
|
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
|
|
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
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
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:
|
|
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
|
|
8175
|
-
const model =
|
|
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
|
-
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
|
|
8094
|
-
|
|
8095
|
-
|
|
8096
|
-
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
|
|
8100
|
-
|
|
8101
|
-
|
|
8102
|
-
|
|
8103
|
-
|
|
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:
|
|
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
|
|
8142
|
-
const model =
|
|
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.
|
|
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.
|
|
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",
|
package/types/models/context.ts
CHANGED