@exulu/backend 1.29.0 → 1.30.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 +64 -6
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +64 -6
- package/package.json +1 -1
- package/types/models/tool.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# [1.
|
|
1
|
+
# [1.30.0](https://github.com/Qventu/exulu-backend/compare/v1.29.0...v1.30.0) (2025-10-28)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Features
|
|
5
5
|
|
|
6
|
-
* add
|
|
6
|
+
* add tool categorization system with search and pagination ([686b125](https://github.com/Qventu/exulu-backend/commit/686b1259001e7464e7fca8a5ab900170376db02b))
|
package/dist/index.cjs
CHANGED
|
@@ -2532,11 +2532,14 @@ var addAgentFields = async (requestedFields, agents, result, tools, user) => {
|
|
|
2532
2532
|
} else {
|
|
2533
2533
|
hydrated = tools.find((t) => t.id === tool2.id);
|
|
2534
2534
|
}
|
|
2535
|
-
|
|
2535
|
+
const hydratedTool = {
|
|
2536
2536
|
...tool2,
|
|
2537
2537
|
name: hydrated?.name || "",
|
|
2538
|
-
description: hydrated?.description || ""
|
|
2538
|
+
description: hydrated?.description || "",
|
|
2539
|
+
category: tool2?.category || "default"
|
|
2539
2540
|
};
|
|
2541
|
+
console.log("[EXULU] hydratedTool", hydratedTool);
|
|
2542
|
+
return hydratedTool;
|
|
2540
2543
|
}));
|
|
2541
2544
|
result.tools = result.tools.filter((tool2) => tool2 !== null);
|
|
2542
2545
|
} else {
|
|
@@ -3480,7 +3483,8 @@ type PageInfo {
|
|
|
3480
3483
|
deleteJob(queue: QueueEnum!, id: String!): JobActionReturnPayload
|
|
3481
3484
|
`;
|
|
3482
3485
|
typeDefs += `
|
|
3483
|
-
tools: ToolPaginationResult
|
|
3486
|
+
tools(search: String, category: String, limit: Int, page: Int): ToolPaginationResult
|
|
3487
|
+
toolCategories: [String!]!
|
|
3484
3488
|
`;
|
|
3485
3489
|
typeDefs += `
|
|
3486
3490
|
jobs(queue: QueueEnum!, statusses: [JobStateEnum!]): JobPaginationResult
|
|
@@ -3800,6 +3804,7 @@ type PageInfo {
|
|
|
3800
3804
|
};
|
|
3801
3805
|
resolvers.Query["tools"] = async (_, args, context, info) => {
|
|
3802
3806
|
const requestedFields = getRequestedFields(info);
|
|
3807
|
+
const { search, category, limit = 100, page = 0 } = args;
|
|
3803
3808
|
const instances = await loadAgents();
|
|
3804
3809
|
let agentTools = await Promise.all(
|
|
3805
3810
|
instances.map(async (instance) => {
|
|
@@ -3811,16 +3816,39 @@ type PageInfo {
|
|
|
3811
3816
|
})
|
|
3812
3817
|
);
|
|
3813
3818
|
const filtered = agentTools.filter((tool2) => tool2 !== null);
|
|
3819
|
+
let allTools = [...filtered, ...tools];
|
|
3820
|
+
if (search && search.trim()) {
|
|
3821
|
+
const searchTerm = search.toLowerCase().trim();
|
|
3822
|
+
allTools = allTools.filter(
|
|
3823
|
+
(tool2) => tool2.name?.toLowerCase().includes(searchTerm) || tool2.description?.toLowerCase().includes(searchTerm)
|
|
3824
|
+
);
|
|
3825
|
+
}
|
|
3826
|
+
if (category && category.trim()) {
|
|
3827
|
+
allTools = allTools.filter((tool2) => tool2.category === category);
|
|
3828
|
+
}
|
|
3829
|
+
const total = allTools.length;
|
|
3830
|
+
const start = page * limit;
|
|
3831
|
+
const end = start + limit;
|
|
3832
|
+
const paginatedTools = allTools.slice(start, end);
|
|
3814
3833
|
return {
|
|
3815
|
-
items:
|
|
3834
|
+
items: paginatedTools.map((tool2) => {
|
|
3816
3835
|
const object = {};
|
|
3817
3836
|
requestedFields.forEach((field) => {
|
|
3818
3837
|
object[field] = tool2[field];
|
|
3819
3838
|
});
|
|
3820
3839
|
return object;
|
|
3821
|
-
})
|
|
3840
|
+
}),
|
|
3841
|
+
total,
|
|
3842
|
+
page,
|
|
3843
|
+
limit
|
|
3822
3844
|
};
|
|
3823
3845
|
};
|
|
3846
|
+
resolvers.Query["toolCategories"] = async () => {
|
|
3847
|
+
const array = tools.map((tool2) => tool2.category).filter((category) => category && typeof category === "string");
|
|
3848
|
+
array.push("contexts");
|
|
3849
|
+
array.push("agents");
|
|
3850
|
+
return [...new Set(array)].sort();
|
|
3851
|
+
};
|
|
3824
3852
|
modelDefs += `
|
|
3825
3853
|
type ProviderPaginationResult {
|
|
3826
3854
|
items: [Provider]!
|
|
@@ -3859,6 +3887,9 @@ type PageInfo {
|
|
|
3859
3887
|
modelDefs += `
|
|
3860
3888
|
type ToolPaginationResult {
|
|
3861
3889
|
items: [Tool]!
|
|
3890
|
+
total: Int!
|
|
3891
|
+
page: Int!
|
|
3892
|
+
limit: Int!
|
|
3862
3893
|
}
|
|
3863
3894
|
`;
|
|
3864
3895
|
modelDefs += `
|
|
@@ -3968,6 +3999,7 @@ type Tool {
|
|
|
3968
3999
|
id: ID!
|
|
3969
4000
|
name: String!
|
|
3970
4001
|
description: String
|
|
4002
|
+
category: String
|
|
3971
4003
|
type: String
|
|
3972
4004
|
config: JSON
|
|
3973
4005
|
}
|
|
@@ -4856,6 +4888,7 @@ var ExuluAgent2 = class {
|
|
|
4856
4888
|
id: agentInstance.id,
|
|
4857
4889
|
name: `${agentInstance.name}`,
|
|
4858
4890
|
type: "agent",
|
|
4891
|
+
category: "agents",
|
|
4859
4892
|
inputSchema: import_zod.z.object({
|
|
4860
4893
|
prompt: import_zod.z.string().describe("The prompt (usually a question for the agent) to send to the agent."),
|
|
4861
4894
|
information: import_zod.z.string().describe("A summary of relevant context / information from the current session")
|
|
@@ -5284,13 +5317,15 @@ var ExuluTool2 = class {
|
|
|
5284
5317
|
id;
|
|
5285
5318
|
name;
|
|
5286
5319
|
description;
|
|
5320
|
+
category;
|
|
5287
5321
|
inputSchema;
|
|
5288
5322
|
type;
|
|
5289
5323
|
tool;
|
|
5290
5324
|
config;
|
|
5291
|
-
constructor({ id, name, description, inputSchema, type, execute: execute2, config }) {
|
|
5325
|
+
constructor({ id, name, description, category, inputSchema, type, execute: execute2, config }) {
|
|
5292
5326
|
this.id = id;
|
|
5293
5327
|
this.config = config;
|
|
5328
|
+
this.category = category || "default";
|
|
5294
5329
|
this.name = name;
|
|
5295
5330
|
this.description = description;
|
|
5296
5331
|
this.inputSchema = inputSchema;
|
|
@@ -5719,6 +5754,7 @@ var ExuluContext = class {
|
|
|
5719
5754
|
id: this.id,
|
|
5720
5755
|
name: `${this.name}`,
|
|
5721
5756
|
type: "context",
|
|
5757
|
+
category: "contexts",
|
|
5722
5758
|
inputSchema: import_zod.z.object({
|
|
5723
5759
|
query: import_zod.z.string()
|
|
5724
5760
|
}),
|
|
@@ -8104,6 +8140,7 @@ var additionTool = new ExuluTool2({
|
|
|
8104
8140
|
name: "Addition",
|
|
8105
8141
|
description: "Adds two numbers together",
|
|
8106
8142
|
type: "function",
|
|
8143
|
+
category: "math",
|
|
8107
8144
|
config: [],
|
|
8108
8145
|
inputSchema: import_zod4.z.object({
|
|
8109
8146
|
firstNumber: import_zod4.z.number().describe("The first addend"),
|
|
@@ -8119,6 +8156,7 @@ var subtractionTool = new ExuluTool2({
|
|
|
8119
8156
|
name: "Subtraction",
|
|
8120
8157
|
description: "Subtracts the second number from the first number",
|
|
8121
8158
|
type: "function",
|
|
8159
|
+
category: "math",
|
|
8122
8160
|
config: [],
|
|
8123
8161
|
inputSchema: import_zod4.z.object({
|
|
8124
8162
|
minuend: import_zod4.z.number().describe("The number to subtract from (minuend)"),
|
|
@@ -8134,6 +8172,7 @@ var multiplicationTool = new ExuluTool2({
|
|
|
8134
8172
|
name: "Multiplication",
|
|
8135
8173
|
description: "Multiplies two numbers together",
|
|
8136
8174
|
type: "function",
|
|
8175
|
+
category: "math",
|
|
8137
8176
|
config: [],
|
|
8138
8177
|
inputSchema: import_zod4.z.object({
|
|
8139
8178
|
firstNumber: import_zod4.z.number().describe("The first number"),
|
|
@@ -8149,6 +8188,7 @@ var divisionTool = new ExuluTool2({
|
|
|
8149
8188
|
name: "Division",
|
|
8150
8189
|
description: "Divides the first number by the second number",
|
|
8151
8190
|
type: "function",
|
|
8191
|
+
category: "math",
|
|
8152
8192
|
config: [],
|
|
8153
8193
|
inputSchema: import_zod4.z.object({
|
|
8154
8194
|
numerator: import_zod4.z.number().describe("The number being divided (numerator)"),
|
|
@@ -8164,6 +8204,7 @@ var sumTool = new ExuluTool2({
|
|
|
8164
8204
|
name: "Sum",
|
|
8165
8205
|
description: "Adds any number of numbers together",
|
|
8166
8206
|
type: "function",
|
|
8207
|
+
category: "math",
|
|
8167
8208
|
config: [],
|
|
8168
8209
|
inputSchema: import_zod4.z.object({
|
|
8169
8210
|
numbers: import_zod4.z.array(import_zod4.z.number()).min(1).describe("Array of numbers to sum")
|
|
@@ -8178,6 +8219,7 @@ var moduloTool = new ExuluTool2({
|
|
|
8178
8219
|
name: "Modulo",
|
|
8179
8220
|
description: "Divides two numbers and returns the remainder",
|
|
8180
8221
|
type: "function",
|
|
8222
|
+
category: "math",
|
|
8181
8223
|
config: [],
|
|
8182
8224
|
inputSchema: import_zod4.z.object({
|
|
8183
8225
|
numerator: import_zod4.z.number().describe("The number being divided (numerator)"),
|
|
@@ -8193,6 +8235,7 @@ var meanTool = new ExuluTool2({
|
|
|
8193
8235
|
name: "Mean",
|
|
8194
8236
|
description: "Calculates the arithmetic mean of a list of numbers",
|
|
8195
8237
|
type: "function",
|
|
8238
|
+
category: "math",
|
|
8196
8239
|
config: [],
|
|
8197
8240
|
inputSchema: import_zod4.z.object({
|
|
8198
8241
|
numbers: import_zod4.z.array(import_zod4.z.number()).min(1).describe("Array of numbers to find the mean of")
|
|
@@ -8207,6 +8250,7 @@ var medianTool = new ExuluTool2({
|
|
|
8207
8250
|
name: "Median",
|
|
8208
8251
|
description: "Calculates the median of a list of numbers",
|
|
8209
8252
|
type: "function",
|
|
8253
|
+
category: "math",
|
|
8210
8254
|
config: [],
|
|
8211
8255
|
inputSchema: import_zod4.z.object({
|
|
8212
8256
|
numbers: import_zod4.z.array(import_zod4.z.number()).min(1).describe("Array of numbers to find the median of")
|
|
@@ -8221,6 +8265,7 @@ var modeTool = new ExuluTool2({
|
|
|
8221
8265
|
name: "Mode",
|
|
8222
8266
|
description: "Finds the most common number in a list of numbers",
|
|
8223
8267
|
type: "function",
|
|
8268
|
+
category: "math",
|
|
8224
8269
|
config: [],
|
|
8225
8270
|
inputSchema: import_zod4.z.object({
|
|
8226
8271
|
numbers: import_zod4.z.array(import_zod4.z.number()).describe("Array of numbers to find the mode of")
|
|
@@ -8235,6 +8280,7 @@ var minTool = new ExuluTool2({
|
|
|
8235
8280
|
name: "Minimum",
|
|
8236
8281
|
description: "Finds the minimum value from a list of numbers",
|
|
8237
8282
|
type: "function",
|
|
8283
|
+
category: "math",
|
|
8238
8284
|
config: [],
|
|
8239
8285
|
inputSchema: import_zod4.z.object({
|
|
8240
8286
|
numbers: import_zod4.z.array(import_zod4.z.number()).describe("Array of numbers to find the minimum of")
|
|
@@ -8249,6 +8295,7 @@ var maxTool = new ExuluTool2({
|
|
|
8249
8295
|
name: "Maximum",
|
|
8250
8296
|
description: "Finds the maximum value from a list of numbers",
|
|
8251
8297
|
type: "function",
|
|
8298
|
+
category: "math",
|
|
8252
8299
|
config: [],
|
|
8253
8300
|
inputSchema: import_zod4.z.object({
|
|
8254
8301
|
numbers: import_zod4.z.array(import_zod4.z.number()).describe("Array of numbers to find the maximum of")
|
|
@@ -8263,6 +8310,7 @@ var floorTool = new ExuluTool2({
|
|
|
8263
8310
|
name: "Floor",
|
|
8264
8311
|
description: "Rounds a number down to the nearest integer",
|
|
8265
8312
|
type: "function",
|
|
8313
|
+
category: "math",
|
|
8266
8314
|
config: [],
|
|
8267
8315
|
inputSchema: import_zod4.z.object({
|
|
8268
8316
|
number: import_zod4.z.number().describe("The number to round down")
|
|
@@ -8277,6 +8325,7 @@ var ceilingTool = new ExuluTool2({
|
|
|
8277
8325
|
name: "Ceiling",
|
|
8278
8326
|
description: "Rounds a number up to the nearest integer",
|
|
8279
8327
|
type: "function",
|
|
8328
|
+
category: "math",
|
|
8280
8329
|
config: [],
|
|
8281
8330
|
inputSchema: import_zod4.z.object({
|
|
8282
8331
|
number: import_zod4.z.number().describe("The number to round up")
|
|
@@ -8291,6 +8340,7 @@ var roundTool = new ExuluTool2({
|
|
|
8291
8340
|
name: "Round",
|
|
8292
8341
|
description: "Rounds a number to the nearest integer",
|
|
8293
8342
|
type: "function",
|
|
8343
|
+
category: "math",
|
|
8294
8344
|
config: [],
|
|
8295
8345
|
inputSchema: import_zod4.z.object({
|
|
8296
8346
|
number: import_zod4.z.number().describe("The number to round")
|
|
@@ -8305,6 +8355,7 @@ var sinTool = new ExuluTool2({
|
|
|
8305
8355
|
name: "Sine",
|
|
8306
8356
|
description: "Calculates the sine of a number in radians",
|
|
8307
8357
|
type: "function",
|
|
8358
|
+
category: "math",
|
|
8308
8359
|
config: [],
|
|
8309
8360
|
inputSchema: import_zod4.z.object({
|
|
8310
8361
|
number: import_zod4.z.number().describe("The number in radians to find the sine of")
|
|
@@ -8319,6 +8370,7 @@ var arcsinTool = new ExuluTool2({
|
|
|
8319
8370
|
name: "Arcsine",
|
|
8320
8371
|
description: "Calculates the arcsine of a number in radians",
|
|
8321
8372
|
type: "function",
|
|
8373
|
+
category: "math",
|
|
8322
8374
|
config: [],
|
|
8323
8375
|
inputSchema: import_zod4.z.object({
|
|
8324
8376
|
number: import_zod4.z.number().describe("The number to find the arcsine of")
|
|
@@ -8333,6 +8385,7 @@ var cosTool = new ExuluTool2({
|
|
|
8333
8385
|
name: "Cosine",
|
|
8334
8386
|
description: "Calculates the cosine of a number in radians",
|
|
8335
8387
|
type: "function",
|
|
8388
|
+
category: "math",
|
|
8336
8389
|
config: [],
|
|
8337
8390
|
inputSchema: import_zod4.z.object({
|
|
8338
8391
|
number: import_zod4.z.number().describe("The number in radians to find the cosine of")
|
|
@@ -8347,6 +8400,7 @@ var arccosTool = new ExuluTool2({
|
|
|
8347
8400
|
name: "Arccosine",
|
|
8348
8401
|
description: "Calculates the arccosine of a number in radians",
|
|
8349
8402
|
type: "function",
|
|
8403
|
+
category: "math",
|
|
8350
8404
|
config: [],
|
|
8351
8405
|
inputSchema: import_zod4.z.object({
|
|
8352
8406
|
number: import_zod4.z.number().describe("The number to find the arccosine of")
|
|
@@ -8361,6 +8415,7 @@ var tanTool = new ExuluTool2({
|
|
|
8361
8415
|
name: "Tangent",
|
|
8362
8416
|
description: "Calculates the tangent of a number in radians",
|
|
8363
8417
|
type: "function",
|
|
8418
|
+
category: "math",
|
|
8364
8419
|
config: [],
|
|
8365
8420
|
inputSchema: import_zod4.z.object({
|
|
8366
8421
|
number: import_zod4.z.number().describe("The number in radians to find the tangent of")
|
|
@@ -8375,6 +8430,7 @@ var arctanTool = new ExuluTool2({
|
|
|
8375
8430
|
name: "Arctangent",
|
|
8376
8431
|
description: "Calculates the arctangent of a number in radians",
|
|
8377
8432
|
type: "function",
|
|
8433
|
+
category: "math",
|
|
8378
8434
|
config: [],
|
|
8379
8435
|
inputSchema: import_zod4.z.object({
|
|
8380
8436
|
number: import_zod4.z.number().describe("The number to find the arctangent of")
|
|
@@ -8389,6 +8445,7 @@ var radiansToDegreesTool = new ExuluTool2({
|
|
|
8389
8445
|
name: "Radians to Degrees",
|
|
8390
8446
|
description: "Converts a radian value to its equivalent in degrees",
|
|
8391
8447
|
type: "function",
|
|
8448
|
+
category: "math",
|
|
8392
8449
|
config: [],
|
|
8393
8450
|
inputSchema: import_zod4.z.object({
|
|
8394
8451
|
number: import_zod4.z.number().describe("The number in radians to convert to degrees")
|
|
@@ -8403,6 +8460,7 @@ var degreesToRadiansTool = new ExuluTool2({
|
|
|
8403
8460
|
name: "Degrees to Radians",
|
|
8404
8461
|
description: "Converts a degree value to its equivalent in radians",
|
|
8405
8462
|
type: "function",
|
|
8463
|
+
category: "math",
|
|
8406
8464
|
config: [],
|
|
8407
8465
|
inputSchema: import_zod4.z.object({
|
|
8408
8466
|
number: import_zod4.z.number().describe("The number in degrees to convert to radians")
|
package/dist/index.d.cts
CHANGED
|
@@ -469,6 +469,7 @@ declare class ExuluTool {
|
|
|
469
469
|
id: string;
|
|
470
470
|
name: string;
|
|
471
471
|
description: string;
|
|
472
|
+
category: string;
|
|
472
473
|
inputSchema?: z.ZodType;
|
|
473
474
|
type: "context" | "function" | "agent";
|
|
474
475
|
tool: Tool;
|
|
@@ -476,10 +477,11 @@ declare class ExuluTool {
|
|
|
476
477
|
name: string;
|
|
477
478
|
description: string;
|
|
478
479
|
}[];
|
|
479
|
-
constructor({ id, name, description, inputSchema, type, execute, config }: {
|
|
480
|
+
constructor({ id, name, description, category, inputSchema, type, execute, config }: {
|
|
480
481
|
id: string;
|
|
481
482
|
name: string;
|
|
482
483
|
description: string;
|
|
484
|
+
category?: string;
|
|
483
485
|
inputSchema?: z.ZodType;
|
|
484
486
|
type: "context" | "function" | "agent";
|
|
485
487
|
config: {
|
|
@@ -563,6 +565,7 @@ declare class ExuluContext {
|
|
|
563
565
|
fields: ExuluContextFieldDefinition[];
|
|
564
566
|
description: string;
|
|
565
567
|
embedder?: ExuluEmbedder;
|
|
568
|
+
category?: string;
|
|
566
569
|
active: boolean;
|
|
567
570
|
rateLimit?: RateLimiterRule;
|
|
568
571
|
queryRewriter?: (query: string) => Promise<string>;
|
package/dist/index.d.ts
CHANGED
|
@@ -469,6 +469,7 @@ declare class ExuluTool {
|
|
|
469
469
|
id: string;
|
|
470
470
|
name: string;
|
|
471
471
|
description: string;
|
|
472
|
+
category: string;
|
|
472
473
|
inputSchema?: z.ZodType;
|
|
473
474
|
type: "context" | "function" | "agent";
|
|
474
475
|
tool: Tool;
|
|
@@ -476,10 +477,11 @@ declare class ExuluTool {
|
|
|
476
477
|
name: string;
|
|
477
478
|
description: string;
|
|
478
479
|
}[];
|
|
479
|
-
constructor({ id, name, description, inputSchema, type, execute, config }: {
|
|
480
|
+
constructor({ id, name, description, category, inputSchema, type, execute, config }: {
|
|
480
481
|
id: string;
|
|
481
482
|
name: string;
|
|
482
483
|
description: string;
|
|
484
|
+
category?: string;
|
|
483
485
|
inputSchema?: z.ZodType;
|
|
484
486
|
type: "context" | "function" | "agent";
|
|
485
487
|
config: {
|
|
@@ -563,6 +565,7 @@ declare class ExuluContext {
|
|
|
563
565
|
fields: ExuluContextFieldDefinition[];
|
|
564
566
|
description: string;
|
|
565
567
|
embedder?: ExuluEmbedder;
|
|
568
|
+
category?: string;
|
|
566
569
|
active: boolean;
|
|
567
570
|
rateLimit?: RateLimiterRule;
|
|
568
571
|
queryRewriter?: (query: string) => Promise<string>;
|
package/dist/index.js
CHANGED
|
@@ -2480,11 +2480,14 @@ var addAgentFields = async (requestedFields, agents, result, tools, user) => {
|
|
|
2480
2480
|
} else {
|
|
2481
2481
|
hydrated = tools.find((t) => t.id === tool2.id);
|
|
2482
2482
|
}
|
|
2483
|
-
|
|
2483
|
+
const hydratedTool = {
|
|
2484
2484
|
...tool2,
|
|
2485
2485
|
name: hydrated?.name || "",
|
|
2486
|
-
description: hydrated?.description || ""
|
|
2486
|
+
description: hydrated?.description || "",
|
|
2487
|
+
category: tool2?.category || "default"
|
|
2487
2488
|
};
|
|
2489
|
+
console.log("[EXULU] hydratedTool", hydratedTool);
|
|
2490
|
+
return hydratedTool;
|
|
2488
2491
|
}));
|
|
2489
2492
|
result.tools = result.tools.filter((tool2) => tool2 !== null);
|
|
2490
2493
|
} else {
|
|
@@ -3428,7 +3431,8 @@ type PageInfo {
|
|
|
3428
3431
|
deleteJob(queue: QueueEnum!, id: String!): JobActionReturnPayload
|
|
3429
3432
|
`;
|
|
3430
3433
|
typeDefs += `
|
|
3431
|
-
tools: ToolPaginationResult
|
|
3434
|
+
tools(search: String, category: String, limit: Int, page: Int): ToolPaginationResult
|
|
3435
|
+
toolCategories: [String!]!
|
|
3432
3436
|
`;
|
|
3433
3437
|
typeDefs += `
|
|
3434
3438
|
jobs(queue: QueueEnum!, statusses: [JobStateEnum!]): JobPaginationResult
|
|
@@ -3748,6 +3752,7 @@ type PageInfo {
|
|
|
3748
3752
|
};
|
|
3749
3753
|
resolvers.Query["tools"] = async (_, args, context, info) => {
|
|
3750
3754
|
const requestedFields = getRequestedFields(info);
|
|
3755
|
+
const { search, category, limit = 100, page = 0 } = args;
|
|
3751
3756
|
const instances = await loadAgents();
|
|
3752
3757
|
let agentTools = await Promise.all(
|
|
3753
3758
|
instances.map(async (instance) => {
|
|
@@ -3759,16 +3764,39 @@ type PageInfo {
|
|
|
3759
3764
|
})
|
|
3760
3765
|
);
|
|
3761
3766
|
const filtered = agentTools.filter((tool2) => tool2 !== null);
|
|
3767
|
+
let allTools = [...filtered, ...tools];
|
|
3768
|
+
if (search && search.trim()) {
|
|
3769
|
+
const searchTerm = search.toLowerCase().trim();
|
|
3770
|
+
allTools = allTools.filter(
|
|
3771
|
+
(tool2) => tool2.name?.toLowerCase().includes(searchTerm) || tool2.description?.toLowerCase().includes(searchTerm)
|
|
3772
|
+
);
|
|
3773
|
+
}
|
|
3774
|
+
if (category && category.trim()) {
|
|
3775
|
+
allTools = allTools.filter((tool2) => tool2.category === category);
|
|
3776
|
+
}
|
|
3777
|
+
const total = allTools.length;
|
|
3778
|
+
const start = page * limit;
|
|
3779
|
+
const end = start + limit;
|
|
3780
|
+
const paginatedTools = allTools.slice(start, end);
|
|
3762
3781
|
return {
|
|
3763
|
-
items:
|
|
3782
|
+
items: paginatedTools.map((tool2) => {
|
|
3764
3783
|
const object = {};
|
|
3765
3784
|
requestedFields.forEach((field) => {
|
|
3766
3785
|
object[field] = tool2[field];
|
|
3767
3786
|
});
|
|
3768
3787
|
return object;
|
|
3769
|
-
})
|
|
3788
|
+
}),
|
|
3789
|
+
total,
|
|
3790
|
+
page,
|
|
3791
|
+
limit
|
|
3770
3792
|
};
|
|
3771
3793
|
};
|
|
3794
|
+
resolvers.Query["toolCategories"] = async () => {
|
|
3795
|
+
const array = tools.map((tool2) => tool2.category).filter((category) => category && typeof category === "string");
|
|
3796
|
+
array.push("contexts");
|
|
3797
|
+
array.push("agents");
|
|
3798
|
+
return [...new Set(array)].sort();
|
|
3799
|
+
};
|
|
3772
3800
|
modelDefs += `
|
|
3773
3801
|
type ProviderPaginationResult {
|
|
3774
3802
|
items: [Provider]!
|
|
@@ -3807,6 +3835,9 @@ type PageInfo {
|
|
|
3807
3835
|
modelDefs += `
|
|
3808
3836
|
type ToolPaginationResult {
|
|
3809
3837
|
items: [Tool]!
|
|
3838
|
+
total: Int!
|
|
3839
|
+
page: Int!
|
|
3840
|
+
limit: Int!
|
|
3810
3841
|
}
|
|
3811
3842
|
`;
|
|
3812
3843
|
modelDefs += `
|
|
@@ -3916,6 +3947,7 @@ type Tool {
|
|
|
3916
3947
|
id: ID!
|
|
3917
3948
|
name: String!
|
|
3918
3949
|
description: String
|
|
3950
|
+
category: String
|
|
3919
3951
|
type: String
|
|
3920
3952
|
config: JSON
|
|
3921
3953
|
}
|
|
@@ -4823,6 +4855,7 @@ var ExuluAgent2 = class {
|
|
|
4823
4855
|
id: agentInstance.id,
|
|
4824
4856
|
name: `${agentInstance.name}`,
|
|
4825
4857
|
type: "agent",
|
|
4858
|
+
category: "agents",
|
|
4826
4859
|
inputSchema: z.object({
|
|
4827
4860
|
prompt: z.string().describe("The prompt (usually a question for the agent) to send to the agent."),
|
|
4828
4861
|
information: z.string().describe("A summary of relevant context / information from the current session")
|
|
@@ -5251,13 +5284,15 @@ var ExuluTool2 = class {
|
|
|
5251
5284
|
id;
|
|
5252
5285
|
name;
|
|
5253
5286
|
description;
|
|
5287
|
+
category;
|
|
5254
5288
|
inputSchema;
|
|
5255
5289
|
type;
|
|
5256
5290
|
tool;
|
|
5257
5291
|
config;
|
|
5258
|
-
constructor({ id, name, description, inputSchema, type, execute: execute2, config }) {
|
|
5292
|
+
constructor({ id, name, description, category, inputSchema, type, execute: execute2, config }) {
|
|
5259
5293
|
this.id = id;
|
|
5260
5294
|
this.config = config;
|
|
5295
|
+
this.category = category || "default";
|
|
5261
5296
|
this.name = name;
|
|
5262
5297
|
this.description = description;
|
|
5263
5298
|
this.inputSchema = inputSchema;
|
|
@@ -5686,6 +5721,7 @@ var ExuluContext = class {
|
|
|
5686
5721
|
id: this.id,
|
|
5687
5722
|
name: `${this.name}`,
|
|
5688
5723
|
type: "context",
|
|
5724
|
+
category: "contexts",
|
|
5689
5725
|
inputSchema: z.object({
|
|
5690
5726
|
query: z.string()
|
|
5691
5727
|
}),
|
|
@@ -8071,6 +8107,7 @@ var additionTool = new ExuluTool2({
|
|
|
8071
8107
|
name: "Addition",
|
|
8072
8108
|
description: "Adds two numbers together",
|
|
8073
8109
|
type: "function",
|
|
8110
|
+
category: "math",
|
|
8074
8111
|
config: [],
|
|
8075
8112
|
inputSchema: z4.object({
|
|
8076
8113
|
firstNumber: z4.number().describe("The first addend"),
|
|
@@ -8086,6 +8123,7 @@ var subtractionTool = new ExuluTool2({
|
|
|
8086
8123
|
name: "Subtraction",
|
|
8087
8124
|
description: "Subtracts the second number from the first number",
|
|
8088
8125
|
type: "function",
|
|
8126
|
+
category: "math",
|
|
8089
8127
|
config: [],
|
|
8090
8128
|
inputSchema: z4.object({
|
|
8091
8129
|
minuend: z4.number().describe("The number to subtract from (minuend)"),
|
|
@@ -8101,6 +8139,7 @@ var multiplicationTool = new ExuluTool2({
|
|
|
8101
8139
|
name: "Multiplication",
|
|
8102
8140
|
description: "Multiplies two numbers together",
|
|
8103
8141
|
type: "function",
|
|
8142
|
+
category: "math",
|
|
8104
8143
|
config: [],
|
|
8105
8144
|
inputSchema: z4.object({
|
|
8106
8145
|
firstNumber: z4.number().describe("The first number"),
|
|
@@ -8116,6 +8155,7 @@ var divisionTool = new ExuluTool2({
|
|
|
8116
8155
|
name: "Division",
|
|
8117
8156
|
description: "Divides the first number by the second number",
|
|
8118
8157
|
type: "function",
|
|
8158
|
+
category: "math",
|
|
8119
8159
|
config: [],
|
|
8120
8160
|
inputSchema: z4.object({
|
|
8121
8161
|
numerator: z4.number().describe("The number being divided (numerator)"),
|
|
@@ -8131,6 +8171,7 @@ var sumTool = new ExuluTool2({
|
|
|
8131
8171
|
name: "Sum",
|
|
8132
8172
|
description: "Adds any number of numbers together",
|
|
8133
8173
|
type: "function",
|
|
8174
|
+
category: "math",
|
|
8134
8175
|
config: [],
|
|
8135
8176
|
inputSchema: z4.object({
|
|
8136
8177
|
numbers: z4.array(z4.number()).min(1).describe("Array of numbers to sum")
|
|
@@ -8145,6 +8186,7 @@ var moduloTool = new ExuluTool2({
|
|
|
8145
8186
|
name: "Modulo",
|
|
8146
8187
|
description: "Divides two numbers and returns the remainder",
|
|
8147
8188
|
type: "function",
|
|
8189
|
+
category: "math",
|
|
8148
8190
|
config: [],
|
|
8149
8191
|
inputSchema: z4.object({
|
|
8150
8192
|
numerator: z4.number().describe("The number being divided (numerator)"),
|
|
@@ -8160,6 +8202,7 @@ var meanTool = new ExuluTool2({
|
|
|
8160
8202
|
name: "Mean",
|
|
8161
8203
|
description: "Calculates the arithmetic mean of a list of numbers",
|
|
8162
8204
|
type: "function",
|
|
8205
|
+
category: "math",
|
|
8163
8206
|
config: [],
|
|
8164
8207
|
inputSchema: z4.object({
|
|
8165
8208
|
numbers: z4.array(z4.number()).min(1).describe("Array of numbers to find the mean of")
|
|
@@ -8174,6 +8217,7 @@ var medianTool = new ExuluTool2({
|
|
|
8174
8217
|
name: "Median",
|
|
8175
8218
|
description: "Calculates the median of a list of numbers",
|
|
8176
8219
|
type: "function",
|
|
8220
|
+
category: "math",
|
|
8177
8221
|
config: [],
|
|
8178
8222
|
inputSchema: z4.object({
|
|
8179
8223
|
numbers: z4.array(z4.number()).min(1).describe("Array of numbers to find the median of")
|
|
@@ -8188,6 +8232,7 @@ var modeTool = new ExuluTool2({
|
|
|
8188
8232
|
name: "Mode",
|
|
8189
8233
|
description: "Finds the most common number in a list of numbers",
|
|
8190
8234
|
type: "function",
|
|
8235
|
+
category: "math",
|
|
8191
8236
|
config: [],
|
|
8192
8237
|
inputSchema: z4.object({
|
|
8193
8238
|
numbers: z4.array(z4.number()).describe("Array of numbers to find the mode of")
|
|
@@ -8202,6 +8247,7 @@ var minTool = new ExuluTool2({
|
|
|
8202
8247
|
name: "Minimum",
|
|
8203
8248
|
description: "Finds the minimum value from a list of numbers",
|
|
8204
8249
|
type: "function",
|
|
8250
|
+
category: "math",
|
|
8205
8251
|
config: [],
|
|
8206
8252
|
inputSchema: z4.object({
|
|
8207
8253
|
numbers: z4.array(z4.number()).describe("Array of numbers to find the minimum of")
|
|
@@ -8216,6 +8262,7 @@ var maxTool = new ExuluTool2({
|
|
|
8216
8262
|
name: "Maximum",
|
|
8217
8263
|
description: "Finds the maximum value from a list of numbers",
|
|
8218
8264
|
type: "function",
|
|
8265
|
+
category: "math",
|
|
8219
8266
|
config: [],
|
|
8220
8267
|
inputSchema: z4.object({
|
|
8221
8268
|
numbers: z4.array(z4.number()).describe("Array of numbers to find the maximum of")
|
|
@@ -8230,6 +8277,7 @@ var floorTool = new ExuluTool2({
|
|
|
8230
8277
|
name: "Floor",
|
|
8231
8278
|
description: "Rounds a number down to the nearest integer",
|
|
8232
8279
|
type: "function",
|
|
8280
|
+
category: "math",
|
|
8233
8281
|
config: [],
|
|
8234
8282
|
inputSchema: z4.object({
|
|
8235
8283
|
number: z4.number().describe("The number to round down")
|
|
@@ -8244,6 +8292,7 @@ var ceilingTool = new ExuluTool2({
|
|
|
8244
8292
|
name: "Ceiling",
|
|
8245
8293
|
description: "Rounds a number up to the nearest integer",
|
|
8246
8294
|
type: "function",
|
|
8295
|
+
category: "math",
|
|
8247
8296
|
config: [],
|
|
8248
8297
|
inputSchema: z4.object({
|
|
8249
8298
|
number: z4.number().describe("The number to round up")
|
|
@@ -8258,6 +8307,7 @@ var roundTool = new ExuluTool2({
|
|
|
8258
8307
|
name: "Round",
|
|
8259
8308
|
description: "Rounds a number to the nearest integer",
|
|
8260
8309
|
type: "function",
|
|
8310
|
+
category: "math",
|
|
8261
8311
|
config: [],
|
|
8262
8312
|
inputSchema: z4.object({
|
|
8263
8313
|
number: z4.number().describe("The number to round")
|
|
@@ -8272,6 +8322,7 @@ var sinTool = new ExuluTool2({
|
|
|
8272
8322
|
name: "Sine",
|
|
8273
8323
|
description: "Calculates the sine of a number in radians",
|
|
8274
8324
|
type: "function",
|
|
8325
|
+
category: "math",
|
|
8275
8326
|
config: [],
|
|
8276
8327
|
inputSchema: z4.object({
|
|
8277
8328
|
number: z4.number().describe("The number in radians to find the sine of")
|
|
@@ -8286,6 +8337,7 @@ var arcsinTool = new ExuluTool2({
|
|
|
8286
8337
|
name: "Arcsine",
|
|
8287
8338
|
description: "Calculates the arcsine of a number in radians",
|
|
8288
8339
|
type: "function",
|
|
8340
|
+
category: "math",
|
|
8289
8341
|
config: [],
|
|
8290
8342
|
inputSchema: z4.object({
|
|
8291
8343
|
number: z4.number().describe("The number to find the arcsine of")
|
|
@@ -8300,6 +8352,7 @@ var cosTool = new ExuluTool2({
|
|
|
8300
8352
|
name: "Cosine",
|
|
8301
8353
|
description: "Calculates the cosine of a number in radians",
|
|
8302
8354
|
type: "function",
|
|
8355
|
+
category: "math",
|
|
8303
8356
|
config: [],
|
|
8304
8357
|
inputSchema: z4.object({
|
|
8305
8358
|
number: z4.number().describe("The number in radians to find the cosine of")
|
|
@@ -8314,6 +8367,7 @@ var arccosTool = new ExuluTool2({
|
|
|
8314
8367
|
name: "Arccosine",
|
|
8315
8368
|
description: "Calculates the arccosine of a number in radians",
|
|
8316
8369
|
type: "function",
|
|
8370
|
+
category: "math",
|
|
8317
8371
|
config: [],
|
|
8318
8372
|
inputSchema: z4.object({
|
|
8319
8373
|
number: z4.number().describe("The number to find the arccosine of")
|
|
@@ -8328,6 +8382,7 @@ var tanTool = new ExuluTool2({
|
|
|
8328
8382
|
name: "Tangent",
|
|
8329
8383
|
description: "Calculates the tangent of a number in radians",
|
|
8330
8384
|
type: "function",
|
|
8385
|
+
category: "math",
|
|
8331
8386
|
config: [],
|
|
8332
8387
|
inputSchema: z4.object({
|
|
8333
8388
|
number: z4.number().describe("The number in radians to find the tangent of")
|
|
@@ -8342,6 +8397,7 @@ var arctanTool = new ExuluTool2({
|
|
|
8342
8397
|
name: "Arctangent",
|
|
8343
8398
|
description: "Calculates the arctangent of a number in radians",
|
|
8344
8399
|
type: "function",
|
|
8400
|
+
category: "math",
|
|
8345
8401
|
config: [],
|
|
8346
8402
|
inputSchema: z4.object({
|
|
8347
8403
|
number: z4.number().describe("The number to find the arctangent of")
|
|
@@ -8356,6 +8412,7 @@ var radiansToDegreesTool = new ExuluTool2({
|
|
|
8356
8412
|
name: "Radians to Degrees",
|
|
8357
8413
|
description: "Converts a radian value to its equivalent in degrees",
|
|
8358
8414
|
type: "function",
|
|
8415
|
+
category: "math",
|
|
8359
8416
|
config: [],
|
|
8360
8417
|
inputSchema: z4.object({
|
|
8361
8418
|
number: z4.number().describe("The number in radians to convert to degrees")
|
|
@@ -8370,6 +8427,7 @@ var degreesToRadiansTool = new ExuluTool2({
|
|
|
8370
8427
|
name: "Degrees to Radians",
|
|
8371
8428
|
description: "Converts a degree value to its equivalent in radians",
|
|
8372
8429
|
type: "function",
|
|
8430
|
+
category: "math",
|
|
8373
8431
|
config: [],
|
|
8374
8432
|
inputSchema: z4.object({
|
|
8375
8433
|
number: z4.number().describe("The number in degrees to convert to radians")
|
package/package.json
CHANGED