@exulu/backend 1.47.0 → 1.48.1
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 -15
- package/dist/index.cjs +52 -51
- package/dist/index.js +52 -51
- package/ee/entitlements.ts +1 -1
- package/ee/schemas.ts +4 -3
- package/mintlify-docs/changelog.mdx +96 -2
- package/package.json +1 -1
- package/old-documentation/logging.md +0 -122
- package/old-documentation/otel.md +0 -145
- /package/{old-documentation → devops/documentation}/patch-older-releases.md +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
## [1.48.1](https://github.com/Qventu/exulu-backend/compare/v1.48.0...v1.48.1) (2026-03-15)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Bug Fixes
|
|
5
5
|
|
|
6
|
-
*
|
|
7
|
-
* import errors ([93f48db](https://github.com/Qventu/exulu-backend/commit/93f48dbb8cef4004e540455fcfcd49e4aa9aeb3f))
|
|
8
|
-
* lint errors ([a4fa265](https://github.com/Qventu/exulu-backend/commit/a4fa2651f4d6874952b275ee674b413d5334bc5d))
|
|
9
|
-
* linting errors ([0d8bce8](https://github.com/Qventu/exulu-backend/commit/0d8bce8122fb914055ca21ad3190185febc4b8f3))
|
|
10
|
-
* npm audit vulnerabilities ([95707bc](https://github.com/Qventu/exulu-backend/commit/95707bc909e1c1776ab470d691747dc56e2455ed))
|
|
11
|
-
* prettier ([8e15404](https://github.com/Qventu/exulu-backend/commit/8e154041b9de4b82cf36ef80980329e4a2fae49d))
|
|
12
|
-
* refactor classes.ts into individual modules ([7a71269](https://github.com/Qventu/exulu-backend/commit/7a71269139d59efce4d0ffbd70808e60c3cb26d6))
|
|
13
|
-
* src import references ([e349c30](https://github.com/Qventu/exulu-backend/commit/e349c309bbbb6bab90ead175db4968ea2b20f4aa))
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
### Features
|
|
17
|
-
|
|
18
|
-
* enterprise edition split and document processing system ([dd39da3](https://github.com/Qventu/exulu-backend/commit/dd39da3eaf3169d5b0906aab5cd65c7cf212f361))
|
|
19
|
-
* licensing and docs update ([1cec6ba](https://github.com/Qventu/exulu-backend/commit/1cec6ba817327ff8dd2090da31660c075b802963))
|
|
6
|
+
* remove old documentation ([ade8e7a](https://github.com/Qventu/exulu-backend/commit/ade8e7a2caa8169bdffe16fb9ad00eaaffce8d2c))
|
package/dist/index.cjs
CHANGED
|
@@ -31,7 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
33
|
EXULU_JOB_STATUS_ENUM: () => JOB_STATUS_ENUM,
|
|
34
|
-
EXULU_STATISTICS_TYPE_ENUM: () =>
|
|
34
|
+
EXULU_STATISTICS_TYPE_ENUM: () => STATISTICS_TYPE_ENUM,
|
|
35
35
|
ExuluApp: () => ExuluApp2,
|
|
36
36
|
ExuluAuthentication: () => ExuluAuthentication,
|
|
37
37
|
ExuluChunkers: () => ExuluChunkers,
|
|
@@ -523,7 +523,7 @@ var requestValidators = {
|
|
|
523
523
|
};
|
|
524
524
|
|
|
525
525
|
// types/enums/statistics.ts
|
|
526
|
-
var
|
|
526
|
+
var STATISTICS_TYPE_ENUM = {
|
|
527
527
|
CONTEXT_RETRIEVE: "CONTEXT_RETRIEVE",
|
|
528
528
|
SOURCE_UPDATE: "SOURCE_UPDATE",
|
|
529
529
|
EMBEDDER_UPSERT: "EMBEDDER_UPSERT",
|
|
@@ -1811,7 +1811,7 @@ var rolesSchema = {
|
|
|
1811
1811
|
type: "text"
|
|
1812
1812
|
},
|
|
1813
1813
|
{
|
|
1814
|
-
name:
|
|
1814
|
+
name: "agents",
|
|
1815
1815
|
type: "text"
|
|
1816
1816
|
// write | read access to agents
|
|
1817
1817
|
},
|
|
@@ -1825,12 +1825,12 @@ var rolesSchema = {
|
|
|
1825
1825
|
// write | read access to workflows
|
|
1826
1826
|
},
|
|
1827
1827
|
{
|
|
1828
|
-
name:
|
|
1828
|
+
name: "variables",
|
|
1829
1829
|
type: "text"
|
|
1830
1830
|
// write | read access to variables
|
|
1831
1831
|
},
|
|
1832
1832
|
{
|
|
1833
|
-
name:
|
|
1833
|
+
name: "users",
|
|
1834
1834
|
type: "text"
|
|
1835
1835
|
// write | read access to users
|
|
1836
1836
|
},
|
|
@@ -2178,7 +2178,7 @@ var agentSessionsSchema = {
|
|
|
2178
2178
|
}
|
|
2179
2179
|
]
|
|
2180
2180
|
};
|
|
2181
|
-
var
|
|
2181
|
+
var variablesSchema = {
|
|
2182
2182
|
type: "variables",
|
|
2183
2183
|
name: {
|
|
2184
2184
|
plural: "variables",
|
|
@@ -2234,7 +2234,7 @@ var projectsSchema = {
|
|
|
2234
2234
|
}
|
|
2235
2235
|
]
|
|
2236
2236
|
};
|
|
2237
|
-
var
|
|
2237
|
+
var agentsSchema = {
|
|
2238
2238
|
type: "agents",
|
|
2239
2239
|
name: {
|
|
2240
2240
|
plural: "agents",
|
|
@@ -2302,7 +2302,7 @@ var agentsSchema2 = {
|
|
|
2302
2302
|
}
|
|
2303
2303
|
]
|
|
2304
2304
|
};
|
|
2305
|
-
var
|
|
2305
|
+
var usersSchema = {
|
|
2306
2306
|
type: "users",
|
|
2307
2307
|
name: {
|
|
2308
2308
|
plural: "users",
|
|
@@ -2480,6 +2480,10 @@ var promptLibrarySchema = {
|
|
|
2480
2480
|
{
|
|
2481
2481
|
name: "assigned_agents",
|
|
2482
2482
|
type: "json"
|
|
2483
|
+
},
|
|
2484
|
+
{
|
|
2485
|
+
name: "history",
|
|
2486
|
+
type: "json"
|
|
2483
2487
|
}
|
|
2484
2488
|
]
|
|
2485
2489
|
};
|
|
@@ -2542,13 +2546,13 @@ var coreSchemas = {
|
|
|
2542
2546
|
get: () => {
|
|
2543
2547
|
const license = checkLicense();
|
|
2544
2548
|
const schemas = {
|
|
2545
|
-
agentsSchema: () => addCoreFields(
|
|
2549
|
+
agentsSchema: () => addCoreFields(agentsSchema),
|
|
2546
2550
|
agentMessagesSchema: () => addCoreFields(agentMessagesSchema),
|
|
2547
2551
|
agentSessionsSchema: () => addCoreFields(agentSessionsSchema),
|
|
2548
2552
|
projectsSchema: () => addCoreFields(projectsSchema),
|
|
2549
|
-
usersSchema: () => addCoreFields(
|
|
2553
|
+
usersSchema: () => addCoreFields(usersSchema),
|
|
2550
2554
|
statisticsSchema: () => addCoreFields(statisticsSchema),
|
|
2551
|
-
variablesSchema: () => addCoreFields(
|
|
2555
|
+
variablesSchema: () => addCoreFields(variablesSchema),
|
|
2552
2556
|
platformConfigurationsSchema: () => addCoreFields(platformConfigurationsSchema),
|
|
2553
2557
|
promptLibrarySchema: () => addCoreFields(promptLibrarySchema),
|
|
2554
2558
|
embedderSettingsSchema: () => addCoreFields(embedderSettingsSchema),
|
|
@@ -3093,7 +3097,7 @@ var vectorSearch = async ({
|
|
|
3093
3097
|
await updateStatistic({
|
|
3094
3098
|
name: "count",
|
|
3095
3099
|
label: table.name.singular,
|
|
3096
|
-
type:
|
|
3100
|
+
type: STATISTICS_TYPE_ENUM.CONTEXT_RETRIEVE,
|
|
3097
3101
|
trigger,
|
|
3098
3102
|
user: user?.id,
|
|
3099
3103
|
role
|
|
@@ -3702,7 +3706,7 @@ var convertExuluToolsToAiSdkTools = async (currentTools, approvedTools, allExulu
|
|
|
3702
3706
|
await updateStatistic({
|
|
3703
3707
|
name: "count",
|
|
3704
3708
|
label: cur.name,
|
|
3705
|
-
type:
|
|
3709
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
3706
3710
|
trigger: "agent",
|
|
3707
3711
|
count: 1,
|
|
3708
3712
|
user: user?.id,
|
|
@@ -4599,7 +4603,7 @@ var ExuluContext2 = class {
|
|
|
4599
4603
|
await updateStatistic({
|
|
4600
4604
|
name: "count",
|
|
4601
4605
|
label: this.name,
|
|
4602
|
-
type:
|
|
4606
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
4603
4607
|
trigger: "tool",
|
|
4604
4608
|
count: 1,
|
|
4605
4609
|
user: user?.id,
|
|
@@ -5709,9 +5713,6 @@ var finalizeRequestedFields = async ({
|
|
|
5709
5713
|
});
|
|
5710
5714
|
});
|
|
5711
5715
|
} else {
|
|
5712
|
-
console.log("[EXULU] table name singular", table.name.singular);
|
|
5713
|
-
console.log("[EXULU] requestedFields", requestedFields);
|
|
5714
|
-
console.log("[EXULU] result", result);
|
|
5715
5716
|
if (table.name.singular === "workflow_template") {
|
|
5716
5717
|
if (requestedFields.includes("variables")) {
|
|
5717
5718
|
const variables = [];
|
|
@@ -6944,7 +6945,7 @@ function createMutations(table, providers, contexts, rerankers, tools, config) {
|
|
|
6944
6945
|
await updateStatistic({
|
|
6945
6946
|
name: "count",
|
|
6946
6947
|
label: source.id,
|
|
6947
|
-
type:
|
|
6948
|
+
type: STATISTICS_TYPE_ENUM.SOURCE_UPDATE,
|
|
6948
6949
|
trigger: "api",
|
|
6949
6950
|
count: 1,
|
|
6950
6951
|
user: context?.user?.id,
|
|
@@ -7696,7 +7697,7 @@ var createWorkers = async (providers, queues2, config, contexts, rerankers, eval
|
|
|
7696
7697
|
await updateStatistic({
|
|
7697
7698
|
name: "count",
|
|
7698
7699
|
label: source.id,
|
|
7699
|
-
type:
|
|
7700
|
+
type: STATISTICS_TYPE_ENUM.SOURCE_UPDATE,
|
|
7700
7701
|
trigger: "api",
|
|
7701
7702
|
count: 1,
|
|
7702
7703
|
user: data?.user,
|
|
@@ -8079,7 +8080,7 @@ var processUiMessagesFlow = async ({
|
|
|
8079
8080
|
updateStatistic({
|
|
8080
8081
|
name: "count",
|
|
8081
8082
|
label: statistics.label,
|
|
8082
|
-
type:
|
|
8083
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8083
8084
|
trigger: statistics.trigger,
|
|
8084
8085
|
count: 1,
|
|
8085
8086
|
user: user.id,
|
|
@@ -8089,7 +8090,7 @@ var processUiMessagesFlow = async ({
|
|
|
8089
8090
|
updateStatistic({
|
|
8090
8091
|
name: "inputTokens",
|
|
8091
8092
|
label: statistics.label,
|
|
8092
|
-
type:
|
|
8093
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8093
8094
|
trigger: statistics.trigger,
|
|
8094
8095
|
count: metadata?.inputTokens,
|
|
8095
8096
|
user: user.id,
|
|
@@ -8100,7 +8101,7 @@ var processUiMessagesFlow = async ({
|
|
|
8100
8101
|
updateStatistic({
|
|
8101
8102
|
name: "outputTokens",
|
|
8102
8103
|
label: statistics.label,
|
|
8103
|
-
type:
|
|
8104
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8104
8105
|
trigger: statistics.trigger,
|
|
8105
8106
|
count: metadata?.outputTokens
|
|
8106
8107
|
})
|
|
@@ -9978,7 +9979,7 @@ var ExuluProvider = class {
|
|
|
9978
9979
|
await updateStatistic({
|
|
9979
9980
|
name: "count",
|
|
9980
9981
|
label: agent.name,
|
|
9981
|
-
type:
|
|
9982
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
9982
9983
|
trigger: "tool",
|
|
9983
9984
|
count: 1,
|
|
9984
9985
|
user: user?.id,
|
|
@@ -10210,7 +10211,7 @@ var ExuluProvider = class {
|
|
|
10210
10211
|
updateStatistic({
|
|
10211
10212
|
name: "count",
|
|
10212
10213
|
label: statistics.label,
|
|
10213
|
-
type:
|
|
10214
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10214
10215
|
trigger: statistics.trigger,
|
|
10215
10216
|
count: 1,
|
|
10216
10217
|
user: user?.id,
|
|
@@ -10220,7 +10221,7 @@ var ExuluProvider = class {
|
|
|
10220
10221
|
updateStatistic({
|
|
10221
10222
|
name: "inputTokens",
|
|
10222
10223
|
label: statistics.label,
|
|
10223
|
-
type:
|
|
10224
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10224
10225
|
trigger: statistics.trigger,
|
|
10225
10226
|
count: inputTokens
|
|
10226
10227
|
})
|
|
@@ -10229,7 +10230,7 @@ var ExuluProvider = class {
|
|
|
10229
10230
|
updateStatistic({
|
|
10230
10231
|
name: "outputTokens",
|
|
10231
10232
|
label: statistics.label,
|
|
10232
|
-
type:
|
|
10233
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10233
10234
|
trigger: statistics.trigger,
|
|
10234
10235
|
count: outputTokens
|
|
10235
10236
|
})
|
|
@@ -10275,7 +10276,7 @@ var ExuluProvider = class {
|
|
|
10275
10276
|
updateStatistic({
|
|
10276
10277
|
name: "count",
|
|
10277
10278
|
label: statistics.label,
|
|
10278
|
-
type:
|
|
10279
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10279
10280
|
trigger: statistics.trigger,
|
|
10280
10281
|
count: 1,
|
|
10281
10282
|
user: user?.id,
|
|
@@ -10285,7 +10286,7 @@ var ExuluProvider = class {
|
|
|
10285
10286
|
updateStatistic({
|
|
10286
10287
|
name: "inputTokens",
|
|
10287
10288
|
label: statistics.label,
|
|
10288
|
-
type:
|
|
10289
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10289
10290
|
trigger: statistics.trigger,
|
|
10290
10291
|
count: totalUsage?.inputTokens,
|
|
10291
10292
|
user: user?.id,
|
|
@@ -10296,7 +10297,7 @@ var ExuluProvider = class {
|
|
|
10296
10297
|
updateStatistic({
|
|
10297
10298
|
name: "outputTokens",
|
|
10298
10299
|
label: statistics.label,
|
|
10299
|
-
type:
|
|
10300
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10300
10301
|
trigger: statistics.trigger,
|
|
10301
10302
|
count: totalUsage?.outputTokens
|
|
10302
10303
|
})
|
|
@@ -10691,7 +10692,7 @@ var global_queues = {
|
|
|
10691
10692
|
eval_runs: "eval_runs"
|
|
10692
10693
|
};
|
|
10693
10694
|
var {
|
|
10694
|
-
agentsSchema:
|
|
10695
|
+
agentsSchema: agentsSchema2,
|
|
10695
10696
|
feedbackSchema: feedbackSchema2,
|
|
10696
10697
|
projectsSchema: projectsSchema2,
|
|
10697
10698
|
jobResultsSchema: jobResultsSchema2,
|
|
@@ -10702,8 +10703,8 @@ var {
|
|
|
10702
10703
|
agentSessionsSchema: agentSessionsSchema2,
|
|
10703
10704
|
agentMessagesSchema: agentMessagesSchema2,
|
|
10704
10705
|
rolesSchema: rolesSchema2,
|
|
10705
|
-
usersSchema:
|
|
10706
|
-
variablesSchema:
|
|
10706
|
+
usersSchema: usersSchema2,
|
|
10707
|
+
variablesSchema: variablesSchema2,
|
|
10707
10708
|
workflowTemplatesSchema: workflowTemplatesSchema2,
|
|
10708
10709
|
rbacSchema: rbacSchema2,
|
|
10709
10710
|
promptLibrarySchema: promptLibrarySchema2,
|
|
@@ -10746,9 +10747,9 @@ var createExpressRoutes = async (app, providers, tools, contexts, config, evals,
|
|
|
10746
10747
|
`);
|
|
10747
10748
|
const schema = createSDL(
|
|
10748
10749
|
[
|
|
10749
|
-
|
|
10750
|
+
usersSchema2(),
|
|
10750
10751
|
rolesSchema2(),
|
|
10751
|
-
|
|
10752
|
+
agentsSchema2(),
|
|
10752
10753
|
feedbackSchema2(),
|
|
10753
10754
|
projectsSchema2(),
|
|
10754
10755
|
jobResultsSchema2(),
|
|
@@ -10761,7 +10762,7 @@ var createExpressRoutes = async (app, providers, tools, contexts, config, evals,
|
|
|
10761
10762
|
testCasesSchema2(),
|
|
10762
10763
|
agentSessionsSchema2(),
|
|
10763
10764
|
agentMessagesSchema2(),
|
|
10764
|
-
|
|
10765
|
+
variablesSchema2(),
|
|
10765
10766
|
workflowTemplatesSchema2(),
|
|
10766
10767
|
statisticsSchema2(),
|
|
10767
10768
|
rbacSchema2()
|
|
@@ -11205,7 +11206,7 @@ Mood: friendly and intelligent.
|
|
|
11205
11206
|
updateStatistic({
|
|
11206
11207
|
name: "count",
|
|
11207
11208
|
label: statistics.label,
|
|
11208
|
-
type:
|
|
11209
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11209
11210
|
trigger: statistics.trigger,
|
|
11210
11211
|
count: 1,
|
|
11211
11212
|
user: user?.id,
|
|
@@ -11215,7 +11216,7 @@ Mood: friendly and intelligent.
|
|
|
11215
11216
|
updateStatistic({
|
|
11216
11217
|
name: "inputTokens",
|
|
11217
11218
|
label: statistics.label,
|
|
11218
|
-
type:
|
|
11219
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11219
11220
|
trigger: statistics.trigger,
|
|
11220
11221
|
count: metadata?.inputTokens,
|
|
11221
11222
|
user: user?.id,
|
|
@@ -11226,7 +11227,7 @@ Mood: friendly and intelligent.
|
|
|
11226
11227
|
updateStatistic({
|
|
11227
11228
|
name: "outputTokens",
|
|
11228
11229
|
label: statistics.label,
|
|
11229
|
-
type:
|
|
11230
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11230
11231
|
trigger: statistics.trigger,
|
|
11231
11232
|
count: metadata?.outputTokens
|
|
11232
11233
|
})
|
|
@@ -11296,7 +11297,7 @@ Mood: friendly and intelligent.
|
|
|
11296
11297
|
const user = authenticationResult.user;
|
|
11297
11298
|
let agentQuery = db2("agents");
|
|
11298
11299
|
agentQuery.select("*");
|
|
11299
|
-
agentQuery = applyAccessControl(
|
|
11300
|
+
agentQuery = applyAccessControl(agentsSchema2(), agentQuery, authenticationResult.user);
|
|
11300
11301
|
agentQuery.where({ id: req.params.agent });
|
|
11301
11302
|
const agent = await agentQuery.first();
|
|
11302
11303
|
if (!agent) {
|
|
@@ -11493,7 +11494,7 @@ data: ${JSON.stringify(event)}
|
|
|
11493
11494
|
updateStatistic({
|
|
11494
11495
|
name: "count",
|
|
11495
11496
|
label: statistics.label,
|
|
11496
|
-
type:
|
|
11497
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11497
11498
|
trigger: statistics.trigger,
|
|
11498
11499
|
count: 1,
|
|
11499
11500
|
user: user.id,
|
|
@@ -11504,7 +11505,7 @@ data: ${JSON.stringify(event)}
|
|
|
11504
11505
|
updateStatistic({
|
|
11505
11506
|
name: "inputTokens",
|
|
11506
11507
|
label: statistics.label,
|
|
11507
|
-
type:
|
|
11508
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11508
11509
|
trigger: statistics.trigger,
|
|
11509
11510
|
count: totalInputTokens,
|
|
11510
11511
|
user: user.id,
|
|
@@ -11516,7 +11517,7 @@ data: ${JSON.stringify(event)}
|
|
|
11516
11517
|
updateStatistic({
|
|
11517
11518
|
name: "outputTokens",
|
|
11518
11519
|
label: statistics.label,
|
|
11519
|
-
type:
|
|
11520
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11520
11521
|
trigger: statistics.trigger,
|
|
11521
11522
|
count: totalInputTokens,
|
|
11522
11523
|
user: user.id,
|
|
@@ -14595,7 +14596,7 @@ var ExuluEmbedder = class {
|
|
|
14595
14596
|
await updateStatistic({
|
|
14596
14597
|
name: "count",
|
|
14597
14598
|
label: statistics.label,
|
|
14598
|
-
type:
|
|
14599
|
+
type: STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,
|
|
14599
14600
|
trigger: statistics.trigger,
|
|
14600
14601
|
count: 1,
|
|
14601
14602
|
user,
|
|
@@ -14623,7 +14624,7 @@ var ExuluEmbedder = class {
|
|
|
14623
14624
|
await updateStatistic({
|
|
14624
14625
|
name: "count",
|
|
14625
14626
|
label: statistics.label,
|
|
14626
|
-
type:
|
|
14627
|
+
type: STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,
|
|
14627
14628
|
trigger: statistics.trigger,
|
|
14628
14629
|
count: 1,
|
|
14629
14630
|
user,
|
|
@@ -15044,7 +15045,7 @@ var SentenceChunker = class _SentenceChunker extends BaseChunker {
|
|
|
15044
15045
|
|
|
15045
15046
|
// src/postgres/init-db.ts
|
|
15046
15047
|
var {
|
|
15047
|
-
agentsSchema:
|
|
15048
|
+
agentsSchema: agentsSchema3,
|
|
15048
15049
|
feedbackSchema: feedbackSchema3,
|
|
15049
15050
|
testCasesSchema: testCasesSchema3,
|
|
15050
15051
|
evalSetsSchema: evalSetsSchema3,
|
|
@@ -15053,9 +15054,9 @@ var {
|
|
|
15053
15054
|
platformConfigurationsSchema: platformConfigurationsSchema3,
|
|
15054
15055
|
agentMessagesSchema: agentMessagesSchema3,
|
|
15055
15056
|
rolesSchema: rolesSchema3,
|
|
15056
|
-
usersSchema:
|
|
15057
|
+
usersSchema: usersSchema3,
|
|
15057
15058
|
statisticsSchema: statisticsSchema3,
|
|
15058
|
-
variablesSchema:
|
|
15059
|
+
variablesSchema: variablesSchema3,
|
|
15059
15060
|
workflowTemplatesSchema: workflowTemplatesSchema3,
|
|
15060
15061
|
rbacSchema: rbacSchema3,
|
|
15061
15062
|
projectsSchema: projectsSchema3,
|
|
@@ -15101,9 +15102,9 @@ var up = async function(knex) {
|
|
|
15101
15102
|
embedderSettingsSchema3(),
|
|
15102
15103
|
promptFavoritesSchema3(),
|
|
15103
15104
|
rbacSchema3(),
|
|
15104
|
-
|
|
15105
|
+
agentsSchema3(),
|
|
15105
15106
|
feedbackSchema3(),
|
|
15106
|
-
|
|
15107
|
+
variablesSchema3(),
|
|
15107
15108
|
workflowTemplatesSchema3()
|
|
15108
15109
|
];
|
|
15109
15110
|
const createTable = async (schema) => {
|
|
@@ -15150,7 +15151,7 @@ var up = async function(knex) {
|
|
|
15150
15151
|
table.string("email", 255);
|
|
15151
15152
|
table.timestamp("emailVerified", { useTz: true });
|
|
15152
15153
|
table.text("image");
|
|
15153
|
-
for (const field of
|
|
15154
|
+
for (const field of usersSchema3().fields) {
|
|
15154
15155
|
console.log("[EXULU] field", field);
|
|
15155
15156
|
const { type, name, default: defaultValue, unique } = field;
|
|
15156
15157
|
if (name === "id" || name === "name" || name === "email" || name === "emailVerified" || name === "image" || name === "password") {
|
|
@@ -15163,7 +15164,7 @@ var up = async function(knex) {
|
|
|
15163
15164
|
}
|
|
15164
15165
|
});
|
|
15165
15166
|
} else {
|
|
15166
|
-
await addMissingFields(knex, "users",
|
|
15167
|
+
await addMissingFields(knex, "users", usersSchema3().fields, [
|
|
15167
15168
|
"id",
|
|
15168
15169
|
"name",
|
|
15169
15170
|
"email",
|
package/dist/index.js
CHANGED
|
@@ -473,7 +473,7 @@ var requestValidators = {
|
|
|
473
473
|
};
|
|
474
474
|
|
|
475
475
|
// types/enums/statistics.ts
|
|
476
|
-
var
|
|
476
|
+
var STATISTICS_TYPE_ENUM = {
|
|
477
477
|
CONTEXT_RETRIEVE: "CONTEXT_RETRIEVE",
|
|
478
478
|
SOURCE_UPDATE: "SOURCE_UPDATE",
|
|
479
479
|
EMBEDDER_UPSERT: "EMBEDDER_UPSERT",
|
|
@@ -1778,7 +1778,7 @@ var rolesSchema = {
|
|
|
1778
1778
|
type: "text"
|
|
1779
1779
|
},
|
|
1780
1780
|
{
|
|
1781
|
-
name:
|
|
1781
|
+
name: "agents",
|
|
1782
1782
|
type: "text"
|
|
1783
1783
|
// write | read access to agents
|
|
1784
1784
|
},
|
|
@@ -1792,12 +1792,12 @@ var rolesSchema = {
|
|
|
1792
1792
|
// write | read access to workflows
|
|
1793
1793
|
},
|
|
1794
1794
|
{
|
|
1795
|
-
name:
|
|
1795
|
+
name: "variables",
|
|
1796
1796
|
type: "text"
|
|
1797
1797
|
// write | read access to variables
|
|
1798
1798
|
},
|
|
1799
1799
|
{
|
|
1800
|
-
name:
|
|
1800
|
+
name: "users",
|
|
1801
1801
|
type: "text"
|
|
1802
1802
|
// write | read access to users
|
|
1803
1803
|
},
|
|
@@ -2145,7 +2145,7 @@ var agentSessionsSchema = {
|
|
|
2145
2145
|
}
|
|
2146
2146
|
]
|
|
2147
2147
|
};
|
|
2148
|
-
var
|
|
2148
|
+
var variablesSchema = {
|
|
2149
2149
|
type: "variables",
|
|
2150
2150
|
name: {
|
|
2151
2151
|
plural: "variables",
|
|
@@ -2201,7 +2201,7 @@ var projectsSchema = {
|
|
|
2201
2201
|
}
|
|
2202
2202
|
]
|
|
2203
2203
|
};
|
|
2204
|
-
var
|
|
2204
|
+
var agentsSchema = {
|
|
2205
2205
|
type: "agents",
|
|
2206
2206
|
name: {
|
|
2207
2207
|
plural: "agents",
|
|
@@ -2269,7 +2269,7 @@ var agentsSchema2 = {
|
|
|
2269
2269
|
}
|
|
2270
2270
|
]
|
|
2271
2271
|
};
|
|
2272
|
-
var
|
|
2272
|
+
var usersSchema = {
|
|
2273
2273
|
type: "users",
|
|
2274
2274
|
name: {
|
|
2275
2275
|
plural: "users",
|
|
@@ -2447,6 +2447,10 @@ var promptLibrarySchema = {
|
|
|
2447
2447
|
{
|
|
2448
2448
|
name: "assigned_agents",
|
|
2449
2449
|
type: "json"
|
|
2450
|
+
},
|
|
2451
|
+
{
|
|
2452
|
+
name: "history",
|
|
2453
|
+
type: "json"
|
|
2450
2454
|
}
|
|
2451
2455
|
]
|
|
2452
2456
|
};
|
|
@@ -2509,13 +2513,13 @@ var coreSchemas = {
|
|
|
2509
2513
|
get: () => {
|
|
2510
2514
|
const license = checkLicense();
|
|
2511
2515
|
const schemas = {
|
|
2512
|
-
agentsSchema: () => addCoreFields(
|
|
2516
|
+
agentsSchema: () => addCoreFields(agentsSchema),
|
|
2513
2517
|
agentMessagesSchema: () => addCoreFields(agentMessagesSchema),
|
|
2514
2518
|
agentSessionsSchema: () => addCoreFields(agentSessionsSchema),
|
|
2515
2519
|
projectsSchema: () => addCoreFields(projectsSchema),
|
|
2516
|
-
usersSchema: () => addCoreFields(
|
|
2520
|
+
usersSchema: () => addCoreFields(usersSchema),
|
|
2517
2521
|
statisticsSchema: () => addCoreFields(statisticsSchema),
|
|
2518
|
-
variablesSchema: () => addCoreFields(
|
|
2522
|
+
variablesSchema: () => addCoreFields(variablesSchema),
|
|
2519
2523
|
platformConfigurationsSchema: () => addCoreFields(platformConfigurationsSchema),
|
|
2520
2524
|
promptLibrarySchema: () => addCoreFields(promptLibrarySchema),
|
|
2521
2525
|
embedderSettingsSchema: () => addCoreFields(embedderSettingsSchema),
|
|
@@ -3060,7 +3064,7 @@ var vectorSearch = async ({
|
|
|
3060
3064
|
await updateStatistic({
|
|
3061
3065
|
name: "count",
|
|
3062
3066
|
label: table.name.singular,
|
|
3063
|
-
type:
|
|
3067
|
+
type: STATISTICS_TYPE_ENUM.CONTEXT_RETRIEVE,
|
|
3064
3068
|
trigger,
|
|
3065
3069
|
user: user?.id,
|
|
3066
3070
|
role
|
|
@@ -3669,7 +3673,7 @@ var convertExuluToolsToAiSdkTools = async (currentTools, approvedTools, allExulu
|
|
|
3669
3673
|
await updateStatistic({
|
|
3670
3674
|
name: "count",
|
|
3671
3675
|
label: cur.name,
|
|
3672
|
-
type:
|
|
3676
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
3673
3677
|
trigger: "agent",
|
|
3674
3678
|
count: 1,
|
|
3675
3679
|
user: user?.id,
|
|
@@ -4566,7 +4570,7 @@ var ExuluContext2 = class {
|
|
|
4566
4570
|
await updateStatistic({
|
|
4567
4571
|
name: "count",
|
|
4568
4572
|
label: this.name,
|
|
4569
|
-
type:
|
|
4573
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
4570
4574
|
trigger: "tool",
|
|
4571
4575
|
count: 1,
|
|
4572
4576
|
user: user?.id,
|
|
@@ -5676,9 +5680,6 @@ var finalizeRequestedFields = async ({
|
|
|
5676
5680
|
});
|
|
5677
5681
|
});
|
|
5678
5682
|
} else {
|
|
5679
|
-
console.log("[EXULU] table name singular", table.name.singular);
|
|
5680
|
-
console.log("[EXULU] requestedFields", requestedFields);
|
|
5681
|
-
console.log("[EXULU] result", result);
|
|
5682
5683
|
if (table.name.singular === "workflow_template") {
|
|
5683
5684
|
if (requestedFields.includes("variables")) {
|
|
5684
5685
|
const variables = [];
|
|
@@ -6911,7 +6912,7 @@ function createMutations(table, providers, contexts, rerankers, tools, config) {
|
|
|
6911
6912
|
await updateStatistic({
|
|
6912
6913
|
name: "count",
|
|
6913
6914
|
label: source.id,
|
|
6914
|
-
type:
|
|
6915
|
+
type: STATISTICS_TYPE_ENUM.SOURCE_UPDATE,
|
|
6915
6916
|
trigger: "api",
|
|
6916
6917
|
count: 1,
|
|
6917
6918
|
user: context?.user?.id,
|
|
@@ -7663,7 +7664,7 @@ var createWorkers = async (providers, queues2, config, contexts, rerankers, eval
|
|
|
7663
7664
|
await updateStatistic({
|
|
7664
7665
|
name: "count",
|
|
7665
7666
|
label: source.id,
|
|
7666
|
-
type:
|
|
7667
|
+
type: STATISTICS_TYPE_ENUM.SOURCE_UPDATE,
|
|
7667
7668
|
trigger: "api",
|
|
7668
7669
|
count: 1,
|
|
7669
7670
|
user: data?.user,
|
|
@@ -8046,7 +8047,7 @@ var processUiMessagesFlow = async ({
|
|
|
8046
8047
|
updateStatistic({
|
|
8047
8048
|
name: "count",
|
|
8048
8049
|
label: statistics.label,
|
|
8049
|
-
type:
|
|
8050
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8050
8051
|
trigger: statistics.trigger,
|
|
8051
8052
|
count: 1,
|
|
8052
8053
|
user: user.id,
|
|
@@ -8056,7 +8057,7 @@ var processUiMessagesFlow = async ({
|
|
|
8056
8057
|
updateStatistic({
|
|
8057
8058
|
name: "inputTokens",
|
|
8058
8059
|
label: statistics.label,
|
|
8059
|
-
type:
|
|
8060
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8060
8061
|
trigger: statistics.trigger,
|
|
8061
8062
|
count: metadata?.inputTokens,
|
|
8062
8063
|
user: user.id,
|
|
@@ -8067,7 +8068,7 @@ var processUiMessagesFlow = async ({
|
|
|
8067
8068
|
updateStatistic({
|
|
8068
8069
|
name: "outputTokens",
|
|
8069
8070
|
label: statistics.label,
|
|
8070
|
-
type:
|
|
8071
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
8071
8072
|
trigger: statistics.trigger,
|
|
8072
8073
|
count: metadata?.outputTokens
|
|
8073
8074
|
})
|
|
@@ -9952,7 +9953,7 @@ var ExuluProvider = class {
|
|
|
9952
9953
|
await updateStatistic({
|
|
9953
9954
|
name: "count",
|
|
9954
9955
|
label: agent.name,
|
|
9955
|
-
type:
|
|
9956
|
+
type: STATISTICS_TYPE_ENUM.TOOL_CALL,
|
|
9956
9957
|
trigger: "tool",
|
|
9957
9958
|
count: 1,
|
|
9958
9959
|
user: user?.id,
|
|
@@ -10184,7 +10185,7 @@ var ExuluProvider = class {
|
|
|
10184
10185
|
updateStatistic({
|
|
10185
10186
|
name: "count",
|
|
10186
10187
|
label: statistics.label,
|
|
10187
|
-
type:
|
|
10188
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10188
10189
|
trigger: statistics.trigger,
|
|
10189
10190
|
count: 1,
|
|
10190
10191
|
user: user?.id,
|
|
@@ -10194,7 +10195,7 @@ var ExuluProvider = class {
|
|
|
10194
10195
|
updateStatistic({
|
|
10195
10196
|
name: "inputTokens",
|
|
10196
10197
|
label: statistics.label,
|
|
10197
|
-
type:
|
|
10198
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10198
10199
|
trigger: statistics.trigger,
|
|
10199
10200
|
count: inputTokens
|
|
10200
10201
|
})
|
|
@@ -10203,7 +10204,7 @@ var ExuluProvider = class {
|
|
|
10203
10204
|
updateStatistic({
|
|
10204
10205
|
name: "outputTokens",
|
|
10205
10206
|
label: statistics.label,
|
|
10206
|
-
type:
|
|
10207
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10207
10208
|
trigger: statistics.trigger,
|
|
10208
10209
|
count: outputTokens
|
|
10209
10210
|
})
|
|
@@ -10249,7 +10250,7 @@ var ExuluProvider = class {
|
|
|
10249
10250
|
updateStatistic({
|
|
10250
10251
|
name: "count",
|
|
10251
10252
|
label: statistics.label,
|
|
10252
|
-
type:
|
|
10253
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10253
10254
|
trigger: statistics.trigger,
|
|
10254
10255
|
count: 1,
|
|
10255
10256
|
user: user?.id,
|
|
@@ -10259,7 +10260,7 @@ var ExuluProvider = class {
|
|
|
10259
10260
|
updateStatistic({
|
|
10260
10261
|
name: "inputTokens",
|
|
10261
10262
|
label: statistics.label,
|
|
10262
|
-
type:
|
|
10263
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10263
10264
|
trigger: statistics.trigger,
|
|
10264
10265
|
count: totalUsage?.inputTokens,
|
|
10265
10266
|
user: user?.id,
|
|
@@ -10270,7 +10271,7 @@ var ExuluProvider = class {
|
|
|
10270
10271
|
updateStatistic({
|
|
10271
10272
|
name: "outputTokens",
|
|
10272
10273
|
label: statistics.label,
|
|
10273
|
-
type:
|
|
10274
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
10274
10275
|
trigger: statistics.trigger,
|
|
10275
10276
|
count: totalUsage?.outputTokens
|
|
10276
10277
|
})
|
|
@@ -10665,7 +10666,7 @@ var global_queues = {
|
|
|
10665
10666
|
eval_runs: "eval_runs"
|
|
10666
10667
|
};
|
|
10667
10668
|
var {
|
|
10668
|
-
agentsSchema:
|
|
10669
|
+
agentsSchema: agentsSchema2,
|
|
10669
10670
|
feedbackSchema: feedbackSchema2,
|
|
10670
10671
|
projectsSchema: projectsSchema2,
|
|
10671
10672
|
jobResultsSchema: jobResultsSchema2,
|
|
@@ -10676,8 +10677,8 @@ var {
|
|
|
10676
10677
|
agentSessionsSchema: agentSessionsSchema2,
|
|
10677
10678
|
agentMessagesSchema: agentMessagesSchema2,
|
|
10678
10679
|
rolesSchema: rolesSchema2,
|
|
10679
|
-
usersSchema:
|
|
10680
|
-
variablesSchema:
|
|
10680
|
+
usersSchema: usersSchema2,
|
|
10681
|
+
variablesSchema: variablesSchema2,
|
|
10681
10682
|
workflowTemplatesSchema: workflowTemplatesSchema2,
|
|
10682
10683
|
rbacSchema: rbacSchema2,
|
|
10683
10684
|
promptLibrarySchema: promptLibrarySchema2,
|
|
@@ -10720,9 +10721,9 @@ var createExpressRoutes = async (app, providers, tools, contexts, config, evals,
|
|
|
10720
10721
|
`);
|
|
10721
10722
|
const schema = createSDL(
|
|
10722
10723
|
[
|
|
10723
|
-
|
|
10724
|
+
usersSchema2(),
|
|
10724
10725
|
rolesSchema2(),
|
|
10725
|
-
|
|
10726
|
+
agentsSchema2(),
|
|
10726
10727
|
feedbackSchema2(),
|
|
10727
10728
|
projectsSchema2(),
|
|
10728
10729
|
jobResultsSchema2(),
|
|
@@ -10735,7 +10736,7 @@ var createExpressRoutes = async (app, providers, tools, contexts, config, evals,
|
|
|
10735
10736
|
testCasesSchema2(),
|
|
10736
10737
|
agentSessionsSchema2(),
|
|
10737
10738
|
agentMessagesSchema2(),
|
|
10738
|
-
|
|
10739
|
+
variablesSchema2(),
|
|
10739
10740
|
workflowTemplatesSchema2(),
|
|
10740
10741
|
statisticsSchema2(),
|
|
10741
10742
|
rbacSchema2()
|
|
@@ -11179,7 +11180,7 @@ Mood: friendly and intelligent.
|
|
|
11179
11180
|
updateStatistic({
|
|
11180
11181
|
name: "count",
|
|
11181
11182
|
label: statistics.label,
|
|
11182
|
-
type:
|
|
11183
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11183
11184
|
trigger: statistics.trigger,
|
|
11184
11185
|
count: 1,
|
|
11185
11186
|
user: user?.id,
|
|
@@ -11189,7 +11190,7 @@ Mood: friendly and intelligent.
|
|
|
11189
11190
|
updateStatistic({
|
|
11190
11191
|
name: "inputTokens",
|
|
11191
11192
|
label: statistics.label,
|
|
11192
|
-
type:
|
|
11193
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11193
11194
|
trigger: statistics.trigger,
|
|
11194
11195
|
count: metadata?.inputTokens,
|
|
11195
11196
|
user: user?.id,
|
|
@@ -11200,7 +11201,7 @@ Mood: friendly and intelligent.
|
|
|
11200
11201
|
updateStatistic({
|
|
11201
11202
|
name: "outputTokens",
|
|
11202
11203
|
label: statistics.label,
|
|
11203
|
-
type:
|
|
11204
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11204
11205
|
trigger: statistics.trigger,
|
|
11205
11206
|
count: metadata?.outputTokens
|
|
11206
11207
|
})
|
|
@@ -11270,7 +11271,7 @@ Mood: friendly and intelligent.
|
|
|
11270
11271
|
const user = authenticationResult.user;
|
|
11271
11272
|
let agentQuery = db2("agents");
|
|
11272
11273
|
agentQuery.select("*");
|
|
11273
|
-
agentQuery = applyAccessControl(
|
|
11274
|
+
agentQuery = applyAccessControl(agentsSchema2(), agentQuery, authenticationResult.user);
|
|
11274
11275
|
agentQuery.where({ id: req.params.agent });
|
|
11275
11276
|
const agent = await agentQuery.first();
|
|
11276
11277
|
if (!agent) {
|
|
@@ -11467,7 +11468,7 @@ data: ${JSON.stringify(event)}
|
|
|
11467
11468
|
updateStatistic({
|
|
11468
11469
|
name: "count",
|
|
11469
11470
|
label: statistics.label,
|
|
11470
|
-
type:
|
|
11471
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11471
11472
|
trigger: statistics.trigger,
|
|
11472
11473
|
count: 1,
|
|
11473
11474
|
user: user.id,
|
|
@@ -11478,7 +11479,7 @@ data: ${JSON.stringify(event)}
|
|
|
11478
11479
|
updateStatistic({
|
|
11479
11480
|
name: "inputTokens",
|
|
11480
11481
|
label: statistics.label,
|
|
11481
|
-
type:
|
|
11482
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11482
11483
|
trigger: statistics.trigger,
|
|
11483
11484
|
count: totalInputTokens,
|
|
11484
11485
|
user: user.id,
|
|
@@ -11490,7 +11491,7 @@ data: ${JSON.stringify(event)}
|
|
|
11490
11491
|
updateStatistic({
|
|
11491
11492
|
name: "outputTokens",
|
|
11492
11493
|
label: statistics.label,
|
|
11493
|
-
type:
|
|
11494
|
+
type: STATISTICS_TYPE_ENUM.AGENT_RUN,
|
|
11494
11495
|
trigger: statistics.trigger,
|
|
11495
11496
|
count: totalInputTokens,
|
|
11496
11497
|
user: user.id,
|
|
@@ -14569,7 +14570,7 @@ var ExuluEmbedder = class {
|
|
|
14569
14570
|
await updateStatistic({
|
|
14570
14571
|
name: "count",
|
|
14571
14572
|
label: statistics.label,
|
|
14572
|
-
type:
|
|
14573
|
+
type: STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,
|
|
14573
14574
|
trigger: statistics.trigger,
|
|
14574
14575
|
count: 1,
|
|
14575
14576
|
user,
|
|
@@ -14597,7 +14598,7 @@ var ExuluEmbedder = class {
|
|
|
14597
14598
|
await updateStatistic({
|
|
14598
14599
|
name: "count",
|
|
14599
14600
|
label: statistics.label,
|
|
14600
|
-
type:
|
|
14601
|
+
type: STATISTICS_TYPE_ENUM.EMBEDDER_GENERATE,
|
|
14601
14602
|
trigger: statistics.trigger,
|
|
14602
14603
|
count: 1,
|
|
14603
14604
|
user,
|
|
@@ -15018,7 +15019,7 @@ var SentenceChunker = class _SentenceChunker extends BaseChunker {
|
|
|
15018
15019
|
|
|
15019
15020
|
// src/postgres/init-db.ts
|
|
15020
15021
|
var {
|
|
15021
|
-
agentsSchema:
|
|
15022
|
+
agentsSchema: agentsSchema3,
|
|
15022
15023
|
feedbackSchema: feedbackSchema3,
|
|
15023
15024
|
testCasesSchema: testCasesSchema3,
|
|
15024
15025
|
evalSetsSchema: evalSetsSchema3,
|
|
@@ -15027,9 +15028,9 @@ var {
|
|
|
15027
15028
|
platformConfigurationsSchema: platformConfigurationsSchema3,
|
|
15028
15029
|
agentMessagesSchema: agentMessagesSchema3,
|
|
15029
15030
|
rolesSchema: rolesSchema3,
|
|
15030
|
-
usersSchema:
|
|
15031
|
+
usersSchema: usersSchema3,
|
|
15031
15032
|
statisticsSchema: statisticsSchema3,
|
|
15032
|
-
variablesSchema:
|
|
15033
|
+
variablesSchema: variablesSchema3,
|
|
15033
15034
|
workflowTemplatesSchema: workflowTemplatesSchema3,
|
|
15034
15035
|
rbacSchema: rbacSchema3,
|
|
15035
15036
|
projectsSchema: projectsSchema3,
|
|
@@ -15075,9 +15076,9 @@ var up = async function(knex) {
|
|
|
15075
15076
|
embedderSettingsSchema3(),
|
|
15076
15077
|
promptFavoritesSchema3(),
|
|
15077
15078
|
rbacSchema3(),
|
|
15078
|
-
|
|
15079
|
+
agentsSchema3(),
|
|
15079
15080
|
feedbackSchema3(),
|
|
15080
|
-
|
|
15081
|
+
variablesSchema3(),
|
|
15081
15082
|
workflowTemplatesSchema3()
|
|
15082
15083
|
];
|
|
15083
15084
|
const createTable = async (schema) => {
|
|
@@ -15124,7 +15125,7 @@ var up = async function(knex) {
|
|
|
15124
15125
|
table.string("email", 255);
|
|
15125
15126
|
table.timestamp("emailVerified", { useTz: true });
|
|
15126
15127
|
table.text("image");
|
|
15127
|
-
for (const field of
|
|
15128
|
+
for (const field of usersSchema3().fields) {
|
|
15128
15129
|
console.log("[EXULU] field", field);
|
|
15129
15130
|
const { type, name, default: defaultValue, unique } = field;
|
|
15130
15131
|
if (name === "id" || name === "name" || name === "email" || name === "emailVerified" || name === "image" || name === "password") {
|
|
@@ -15137,7 +15138,7 @@ var up = async function(knex) {
|
|
|
15137
15138
|
}
|
|
15138
15139
|
});
|
|
15139
15140
|
} else {
|
|
15140
|
-
await addMissingFields(knex, "users",
|
|
15141
|
+
await addMissingFields(knex, "users", usersSchema3().fields, [
|
|
15141
15142
|
"id",
|
|
15142
15143
|
"name",
|
|
15143
15144
|
"email",
|
|
@@ -16214,7 +16215,7 @@ var ExuluChunkers = {
|
|
|
16214
16215
|
};
|
|
16215
16216
|
export {
|
|
16216
16217
|
JOB_STATUS_ENUM as EXULU_JOB_STATUS_ENUM,
|
|
16217
|
-
|
|
16218
|
+
STATISTICS_TYPE_ENUM as EXULU_STATISTICS_TYPE_ENUM,
|
|
16218
16219
|
ExuluApp2 as ExuluApp,
|
|
16219
16220
|
ExuluAuthentication,
|
|
16220
16221
|
ExuluChunkers,
|
package/ee/entitlements.ts
CHANGED
|
@@ -8,7 +8,7 @@ export const ENTITLEMENTS: {
|
|
|
8
8
|
"template-conversations": boolean,
|
|
9
9
|
"agent-feedback": boolean,
|
|
10
10
|
"multi-agent-tooling": boolean,
|
|
11
|
-
"advanced-document-processing": boolean
|
|
11
|
+
"advanced-document-processing": boolean,
|
|
12
12
|
} = {
|
|
13
13
|
"rbac": false,
|
|
14
14
|
"advanced-markdown-chunker": false,
|
package/ee/schemas.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Ee edition specific schemas
|
|
2
2
|
|
|
3
|
+
import { STATISTICS_TYPE_ENUM } from "@EXULU_TYPES/enums/statistics";
|
|
3
4
|
import type { ExuluTableDefinition } from "@EXULU_TYPES/exulu-table-definition";
|
|
4
5
|
|
|
5
6
|
export const feedbackSchema: ExuluTableDefinition = {
|
|
@@ -49,7 +50,7 @@ export const rolesSchema: ExuluTableDefinition = {
|
|
|
49
50
|
type: "text",
|
|
50
51
|
},
|
|
51
52
|
{
|
|
52
|
-
name:
|
|
53
|
+
name: "agents",
|
|
53
54
|
type: "text", // write | read access to agents
|
|
54
55
|
},
|
|
55
56
|
{
|
|
@@ -61,11 +62,11 @@ export const rolesSchema: ExuluTableDefinition = {
|
|
|
61
62
|
type: "text", // write | read access to workflows
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
|
-
name:
|
|
65
|
+
name: "variables",
|
|
65
66
|
type: "text", // write | read access to variables
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
|
-
name:
|
|
69
|
+
name: "users",
|
|
69
70
|
type: "text", // write | read access to users
|
|
70
71
|
},
|
|
71
72
|
{
|
|
@@ -3,7 +3,101 @@ title: "Changelog"
|
|
|
3
3
|
description: "Product updates and release notes for Exulu IMP"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<Update label="March 2026">
|
|
6
|
+
<Update label="March 2026 - Enterprise Edition">
|
|
7
|
+
**Release Date:** March 11, 2026
|
|
8
|
+
|
|
9
|
+
This release introduces a major architectural change with the separation of Community and Enterprise Edition features, along with a powerful new document processing system.
|
|
10
|
+
|
|
11
|
+
### Versions
|
|
12
|
+
- **Backend NPM package:** 1.48.0
|
|
13
|
+
|
|
14
|
+
<Info>This release includes breaking changes if you were using enterprise features. Please review the migration guide for Enterprise Edition.</Info>
|
|
15
|
+
|
|
16
|
+
## What's New
|
|
17
|
+
|
|
18
|
+
### Enterprise Edition Separation
|
|
19
|
+
We've established a clear separation between Community Edition (CE) and Enterprise Edition (EE) features:
|
|
20
|
+
|
|
21
|
+
- **EE Directory Structure:** All enterprise features now organized in dedicated `ee/` directory
|
|
22
|
+
- **License-based Entitlements:** New entitlements system with license checking for premium features
|
|
23
|
+
- **Feature Differentiation:** Clear documentation of CE vs EE feature sets
|
|
24
|
+
- **Moved to EE:** Agentic retrieval, BullMQ queues, RBAC, workers, and tokenizer are now enterprise features
|
|
25
|
+
|
|
26
|
+
### Advanced Document Processing System
|
|
27
|
+
Powerful new document processing pipeline with VLM-powered validation:
|
|
28
|
+
|
|
29
|
+
- **Multi-format Support:** Process PDF, DOCX, DOC, TXT, and MD files
|
|
30
|
+
- **Python-based PDF Processor:** Uses MIT-licensed Docling library for accurate extraction
|
|
31
|
+
- **VLM Validation:** Vision Language Model validates and corrects OCR results
|
|
32
|
+
- **Smart Chunking:** Page-aware markdown chunking with heading hierarchy preservation
|
|
33
|
+
- **Table Extraction:** Automatic table detection and normalization in markdown format
|
|
34
|
+
- **Hybrid Chunking:** Combines semantic understanding with token-based splitting
|
|
35
|
+
- **Standalone Executable:** Build script creates portable PDF processor executable
|
|
36
|
+
|
|
37
|
+
### Code Architecture Improvements
|
|
38
|
+
Significant refactoring for better maintainability and clarity:
|
|
39
|
+
|
|
40
|
+
- **Provider-Agent Separation:** Clear distinction between `ExuluProvider` (LLM configuration) and `ExuluAgent` (provider + tools + contexts)
|
|
41
|
+
- **Code-defined Agents:** Support for defining agents in code, not just via database/API/UI
|
|
42
|
+
- **Refactored Load Logic:** Agent loading logic moved into ExuluApp as methods
|
|
43
|
+
- **Shared Utilities:** Extracted `withRetry` utility for reusable retry logic across codebase
|
|
44
|
+
- **Consolidated Schemas:** Updated GraphQL resolvers and schemas for better organization
|
|
45
|
+
|
|
46
|
+
## Documentation Updates
|
|
47
|
+
|
|
48
|
+
- **CE vs EE Comparison:** New pages documenting feature differences
|
|
49
|
+
- **Partners Program:** Documentation for licensing and partnerships
|
|
50
|
+
- **Enhanced API Reference:** Expanded with EE features
|
|
51
|
+
- **Migration Guides:** Clear instructions for upgrading to new architecture
|
|
52
|
+
|
|
53
|
+
## Bug Fixes
|
|
54
|
+
|
|
55
|
+
- **Import Errors:** Fixed import path issues after EE separation
|
|
56
|
+
- **TypeScript Paths:** Updated configuration for EE modules
|
|
57
|
+
- **Queue Structure:** Updated validators for new queue organization
|
|
58
|
+
|
|
59
|
+
## Dependency Updates
|
|
60
|
+
|
|
61
|
+
### New Dependencies
|
|
62
|
+
- `docling` - Python library for document processing
|
|
63
|
+
- `mammoth` - DOCX to markdown conversion
|
|
64
|
+
- `turndown` - HTML to markdown conversion
|
|
65
|
+
|
|
66
|
+
## Breaking Changes
|
|
67
|
+
|
|
68
|
+
<Warning>
|
|
69
|
+
If you were using any of the following features, they now require an Enterprise Edition license:
|
|
70
|
+
- Agentic retrieval system
|
|
71
|
+
- BullMQ-based queues
|
|
72
|
+
- RBAC (Role-Based Access Control)
|
|
73
|
+
- Worker processes
|
|
74
|
+
- Custom tokenizer features
|
|
75
|
+
</Warning>
|
|
76
|
+
|
|
77
|
+
## Migration Guide
|
|
78
|
+
|
|
79
|
+
For users upgrading from previous versions:
|
|
80
|
+
|
|
81
|
+
1. Update to `@exulu/backend@latest`
|
|
82
|
+
2. Review your usage of enterprise features
|
|
83
|
+
3. Update import paths if you're importing from internal modules
|
|
84
|
+
4. Check the CE vs EE documentation to understand feature availability
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm install @exulu/backend@latest
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## What This Means For You
|
|
91
|
+
|
|
92
|
+
- **Clear Licensing:** Understand exactly which features are available in each edition
|
|
93
|
+
- **Better Architecture:** Cleaner separation of concerns between providers and agents
|
|
94
|
+
- **Advanced Processing:** Extract structured content from complex documents with high accuracy
|
|
95
|
+
- **VLM Validation:** Leverage vision models to improve OCR quality
|
|
96
|
+
- **Code-first Agents:** Define agents programmatically for better version control and deployment
|
|
97
|
+
- **Improved Maintainability:** Clearer code structure makes customization easier
|
|
98
|
+
</Update>
|
|
99
|
+
|
|
100
|
+
<Update label="March 2026 - Q1 Winter Release">
|
|
7
101
|
**Release Date:** March 5, 2026
|
|
8
102
|
|
|
9
103
|
We're excited to share the latest updates to Exulu IMP! This release focuses on intelligent retrieval capabilities, code quality improvements, and expanded AI model support.
|
|
@@ -132,7 +226,7 @@ description: "Product updates and release notes for Exulu IMP"
|
|
|
132
226
|
```
|
|
133
227
|
</Update>
|
|
134
228
|
|
|
135
|
-
<Update label="January 2026">
|
|
229
|
+
<Update label="January 2026 - Q4 Winter Release">
|
|
136
230
|
**Release Date:** January 10, 2026
|
|
137
231
|
|
|
138
232
|
We're excited to announce a major platform update bringing significant workflow enhancements, a significantly improved chat experience, and substantial architectural improvements. This release represents our most comprehensive update to date, with a focus on developer productivity, system performance, and user experience.
|
package/package.json
CHANGED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# Winston Logger Implementation
|
|
2
|
-
|
|
3
|
-
This document describes how winston logging has been integrated into the Exulu backend across Express server, MCP server, and worker instances.
|
|
4
|
-
|
|
5
|
-
## Architecture Overview
|
|
6
|
-
|
|
7
|
-
The logging system is centralized through a logger factory function in `src/exulu/logger.ts` that creates winston logger instances with conditional OpenTelemetry integration.
|
|
8
|
-
|
|
9
|
-
## Logger Configuration
|
|
10
|
-
|
|
11
|
-
### Core Logger Setup (`src/registry/logger.ts`)
|
|
12
|
-
|
|
13
|
-
The `createLogger` function accepts an `enableOtel` boolean parameter to conditionally enable OpenTelemetry transport:
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
const createLogger = ({ enableOtel }: { enableOtel: boolean }) => {
|
|
17
|
-
const logger = winston.createLogger({
|
|
18
|
-
level: 'debug',
|
|
19
|
-
format: winston.format.combine(
|
|
20
|
-
winston.format.timestamp(),
|
|
21
|
-
winston.format.errors({ stack: true }),
|
|
22
|
-
winston.format.metadata(),
|
|
23
|
-
winston.format.json()
|
|
24
|
-
),
|
|
25
|
-
defaultMeta: {
|
|
26
|
-
service: 'Exulu',
|
|
27
|
-
environment: process.env.NODE_ENV || 'development',
|
|
28
|
-
},
|
|
29
|
-
transports: [
|
|
30
|
-
new winston.transports.Console(),
|
|
31
|
-
...(enableOtel ? [new OpenTelemetryTransportV3()] : []),
|
|
32
|
-
],
|
|
33
|
-
})
|
|
34
|
-
return logger;
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Configuration-Driven Telemetry
|
|
39
|
-
|
|
40
|
-
The ExuluApp class manages telemetry configuration through the `ExuluConfig` type:
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
export type ExuluConfig = {
|
|
44
|
-
telemetry?: {
|
|
45
|
-
enabled: boolean,
|
|
46
|
-
}
|
|
47
|
-
workers: {
|
|
48
|
-
enabled: boolean,
|
|
49
|
-
logsDir?: string,
|
|
50
|
-
telemetry?: {
|
|
51
|
-
enabled: boolean,
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// ...
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Integration Points
|
|
59
|
-
|
|
60
|
-
### 1. Express Server Logging
|
|
61
|
-
|
|
62
|
-
In `src/exulu/app/index`, the Express server creates a logger instance:
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
const logger = createLogger({
|
|
66
|
-
enableOtel: this._config?.telemetry?.enabled ?? false
|
|
67
|
-
})
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
The logger is then passed to `createExpressRoutes()` for use throughout the Express application.
|
|
71
|
-
|
|
72
|
-
### 2. BullMQ Workers Logging
|
|
73
|
-
|
|
74
|
-
In `src/exulu/app`, workers create their own logger instance:
|
|
75
|
-
|
|
76
|
-
```typescript
|
|
77
|
-
const logger = createLogger({
|
|
78
|
-
enableOtel: this._config?.workers?.telemetry?.enabled ?? false
|
|
79
|
-
})
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Workers have separate telemetry configuration allowing independent control of logging transport.
|
|
83
|
-
|
|
84
|
-
### 3. MCP Server Logging
|
|
85
|
-
|
|
86
|
-
The MCP server receives the logger instance via dependency injection in `src/mcp/index.ts:31`:
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
create = async ({ express, contexts, agents, config, tools, tracer, logger }: {
|
|
90
|
-
// ... other params
|
|
91
|
-
logger: Logger
|
|
92
|
-
}) => {
|
|
93
|
-
// Logger is passed in and used throughout MCP server
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Features
|
|
98
|
-
|
|
99
|
-
- **Structured JSON Logging**: All logs are formatted as JSON with timestamps and metadata
|
|
100
|
-
- **Error Stack Traces**: Automatic stack trace capture for error objects
|
|
101
|
-
- **Environment Context**: Automatic service name and environment labeling
|
|
102
|
-
- **Conditional OpenTelemetry**: OTel transport enabled based on configuration
|
|
103
|
-
- **Console Fallback**: Always includes console transport for development
|
|
104
|
-
- **Instance-Level Control**: Express, Workers, and MCP can have independent telemetry settings
|
|
105
|
-
|
|
106
|
-
## Usage
|
|
107
|
-
|
|
108
|
-
Configure telemetry in your ExuluApp config:
|
|
109
|
-
|
|
110
|
-
```typescript
|
|
111
|
-
const config: ExuluConfig = {
|
|
112
|
-
telemetry: {
|
|
113
|
-
enabled: true // Enables OTel for Express and MCP
|
|
114
|
-
},
|
|
115
|
-
workers: {
|
|
116
|
-
enabled: true,
|
|
117
|
-
telemetry: {
|
|
118
|
-
enabled: false // Workers use console-only logging
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
```
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# OpenTelemetry (OTEL) Implementation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Exulu has built-in OpenTelemetry support for distributed tracing and logging. OTEL can be enabled/disabled individually for different components (workers, MCP, and Express server) through configuration.
|
|
6
|
-
|
|
7
|
-
**Current Support**: The implementation currently supports SigNoz (both Cloud and self-hosted) as the observability backend. Future versions may include support for other OTEL-compatible backends.
|
|
8
|
-
|
|
9
|
-
## Architecture
|
|
10
|
-
|
|
11
|
-
### Core Components
|
|
12
|
-
|
|
13
|
-
1. **ExuluOtel Class** (`src/registry/otel.ts`)
|
|
14
|
-
- Factory function that creates a NodeSDK instance
|
|
15
|
-
- Configures trace and log exporters for SigNoz
|
|
16
|
-
- Sets up automatic instrumentation
|
|
17
|
-
- Handles graceful shutdown
|
|
18
|
-
|
|
19
|
-
2. **Configuration** (`src/registry/index.ts`)
|
|
20
|
-
- Telemetry can be enabled at the app level and component level
|
|
21
|
-
- Each component (workers, MCP, Express) has individual telemetry controls
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
|
|
25
|
-
### Basic Setup
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import { ExuluOtel } from "@exulu/backend";
|
|
29
|
-
|
|
30
|
-
const otel = ExuluOtel.create({
|
|
31
|
-
SIGNOZ_TRACES_URL: process.env.SIGNOZ_TRACES_URL!,
|
|
32
|
-
SIGNOZ_LOGS_URL: process.env.SIGNOZ_LOGS_URL!,
|
|
33
|
-
SIGNOZ_ACCESS_TOKEN: process.env.SIGNOZ_ACCESS_TOKEN!
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
otel.start();
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Configuration
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
const config: ExuluConfig = {
|
|
43
|
-
telemetry: {
|
|
44
|
-
enabled: true // Global telemetry switch
|
|
45
|
-
},
|
|
46
|
-
workers: {
|
|
47
|
-
enabled: true,
|
|
48
|
-
telemetry: {
|
|
49
|
-
enabled: true // Worker-specific telemetry
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
MCP: {
|
|
53
|
-
enabled: true
|
|
54
|
-
// MCP uses global telemetry setting
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Implementation Details
|
|
60
|
-
|
|
61
|
-
### Trace Generation
|
|
62
|
-
|
|
63
|
-
When telemetry is enabled, Exulu automatically generates trace spans for:
|
|
64
|
-
|
|
65
|
-
- **Express Server Routes** (`src/registry/routes.ts:166`)
|
|
66
|
-
- **BullMQ Workers** (`src/registry/workers.ts:133`)
|
|
67
|
-
- **MCP Operations** (`src/registry/index.ts:176`)
|
|
68
|
-
|
|
69
|
-
### Tracer Initialization
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
// Tracer is created when telemetry is enabled
|
|
73
|
-
let tracer: Tracer | undefined;
|
|
74
|
-
if (config?.telemetry?.enabled) {
|
|
75
|
-
tracer = trace.getTracer("exulu", "1.0.0");
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### SigNoz Integration
|
|
80
|
-
|
|
81
|
-
The current implementation is specifically designed for SigNoz integration (supports both SigNoz Cloud and self-hosted deployments):
|
|
82
|
-
|
|
83
|
-
- **Service Name**: `Exulu`
|
|
84
|
-
- **Traces**: Exported to `SIGNOZ_TRACES_URL`
|
|
85
|
-
- **Logs**: Exported to `SIGNOZ_LOGS_URL`
|
|
86
|
-
- **Authentication**: Uses `signoz-access-token` header
|
|
87
|
-
- **Protocol**: OTLP over HTTP with SigNoz-specific headers
|
|
88
|
-
|
|
89
|
-
### Auto-Instrumentation
|
|
90
|
-
|
|
91
|
-
Uses `@opentelemetry/auto-instrumentations-node` for automatic instrumentation of:
|
|
92
|
-
- HTTP requests/responses
|
|
93
|
-
- Database queries
|
|
94
|
-
- File system operations
|
|
95
|
-
- And more Node.js modules
|
|
96
|
-
|
|
97
|
-
### Graceful Shutdown
|
|
98
|
-
|
|
99
|
-
OTEL SDK automatically shuts down on `SIGTERM` signal:
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
process.on('SIGTERM', () => {
|
|
103
|
-
sdk.shutdown()
|
|
104
|
-
.then(() => console.log('Tracing terminated'))
|
|
105
|
-
.catch((error) => console.log('Error terminating tracing', error))
|
|
106
|
-
.finally(() => process.exit(0));
|
|
107
|
-
});
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Environment Variables
|
|
111
|
-
|
|
112
|
-
Required environment variables for SigNoz integration:
|
|
113
|
-
|
|
114
|
-
- `SIGNOZ_TRACES_URL`: URL for trace export
|
|
115
|
-
- `SIGNOZ_LOGS_URL`: URL for log export
|
|
116
|
-
- `SIGNOZ_ACCESS_TOKEN`: Authentication token
|
|
117
|
-
|
|
118
|
-
## Component-Level Control
|
|
119
|
-
|
|
120
|
-
### Workers
|
|
121
|
-
- Controlled by `config.workers.telemetry.enabled`
|
|
122
|
-
- Creates tracer instance when enabled
|
|
123
|
-
- Passes tracer to worker creation
|
|
124
|
-
|
|
125
|
-
### Express Server
|
|
126
|
-
- Controlled by `config.telemetry.enabled`
|
|
127
|
-
- Creates tracer for route instrumentation
|
|
128
|
-
- Integrates with logger for structured logging
|
|
129
|
-
|
|
130
|
-
### MCP Server
|
|
131
|
-
- Uses global `config.telemetry.enabled` setting
|
|
132
|
-
- Receives tracer instance from parent ExuluApp
|
|
133
|
-
- Traces MCP protocol operations
|
|
134
|
-
|
|
135
|
-
## Logger Integration
|
|
136
|
-
|
|
137
|
-
Each component creates an OTEL-aware logger:
|
|
138
|
-
|
|
139
|
-
```typescript
|
|
140
|
-
const logger = createLogger({
|
|
141
|
-
enableOtel: config?.telemetry?.enabled ?? false
|
|
142
|
-
});
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
This enables correlation between traces and structured logs.
|
|
File without changes
|