@exulu/backend 1.6.1 → 1.6.2
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 +1 -129
- package/dist/index.js +1 -129
- package/package.json +2 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
## [1.6.
|
|
1
|
+
## [1.6.2](https://github.com/Qventu/exulu-backend/compare/v1.6.1...v1.6.2) (2025-08-05)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Bug Fixes
|
|
5
5
|
|
|
6
|
-
*
|
|
6
|
+
* remove browserbase from core repo ([371031b](https://github.com/Qventu/exulu-backend/commit/371031ba330b89d619b0b4cfe935521e249d6b29))
|
|
7
7
|
|
|
8
8
|
# [1.1.0](https://github.com/Qventu/exulu-backend/compare/v1.0.1...v1.1.0) (2025-07-30)
|
|
9
9
|
|
package/dist/index.cjs
CHANGED
|
@@ -4605,129 +4605,6 @@ var defaultAgent = new ExuluAgent({
|
|
|
4605
4605
|
}
|
|
4606
4606
|
});
|
|
4607
4607
|
|
|
4608
|
-
// src/templates/tools/browserbase.ts
|
|
4609
|
-
var import_zod5 = require("zod");
|
|
4610
|
-
var import_stagehand = require("@browserbasehq/stagehand");
|
|
4611
|
-
var import_sdk = require("@browserbasehq/sdk");
|
|
4612
|
-
var PROJECT_ID = "811444dd-6e6d-40b5-bd90-541c93e44be6";
|
|
4613
|
-
process.env.BROWSERBASE_PROJECT_ID = PROJECT_ID;
|
|
4614
|
-
var BB_API_KEY = "bb_live_LwMwNgZB5cIEKcBwMuAugrgNkFM";
|
|
4615
|
-
async function createContext() {
|
|
4616
|
-
const bb = new import_sdk.Browserbase({ apiKey: BB_API_KEY });
|
|
4617
|
-
const context = await bb.contexts.create({
|
|
4618
|
-
projectId: PROJECT_ID
|
|
4619
|
-
});
|
|
4620
|
-
return context;
|
|
4621
|
-
}
|
|
4622
|
-
async function createAuthSession(contextId) {
|
|
4623
|
-
const bb = new import_sdk.Browserbase({ apiKey: BB_API_KEY });
|
|
4624
|
-
const session = await bb.sessions.create({
|
|
4625
|
-
projectId: PROJECT_ID,
|
|
4626
|
-
browserSettings: {
|
|
4627
|
-
context: {
|
|
4628
|
-
id: contextId,
|
|
4629
|
-
persist: true
|
|
4630
|
-
}
|
|
4631
|
-
}
|
|
4632
|
-
/* proxies: [{ // not included in the free tier
|
|
4633
|
-
type: "browserbase",
|
|
4634
|
-
geolocation: {
|
|
4635
|
-
city: CITY,
|
|
4636
|
-
country: COUNTRY
|
|
4637
|
-
}
|
|
4638
|
-
}] */
|
|
4639
|
-
});
|
|
4640
|
-
const liveViewLinks = await bb.sessions.debug(session.id);
|
|
4641
|
-
const liveViewLink = liveViewLinks.debuggerFullscreenUrl;
|
|
4642
|
-
console.log(`\u{1F50D} Live View Link: ${liveViewLink}`);
|
|
4643
|
-
console.log("Session URL: https://browserbase.com/sessions/" + session.id);
|
|
4644
|
-
return {
|
|
4645
|
-
url: liveViewLink,
|
|
4646
|
-
id: session.id
|
|
4647
|
-
};
|
|
4648
|
-
}
|
|
4649
|
-
var createSession = new ExuluTool({
|
|
4650
|
-
id: `1234-5178-9423-4267`,
|
|
4651
|
-
type: "function",
|
|
4652
|
-
name: "Create a browserbase session.",
|
|
4653
|
-
description: `
|
|
4654
|
-
Creates a browserbase session and returns the live view url as well as
|
|
4655
|
-
the session id as a JSON object. A browserbase session is a headless browser
|
|
4656
|
-
that can be used to to visit websites and perform actions.
|
|
4657
|
-
`,
|
|
4658
|
-
execute: async () => {
|
|
4659
|
-
const { id } = await createContext();
|
|
4660
|
-
return await createAuthSession(id);
|
|
4661
|
-
}
|
|
4662
|
-
});
|
|
4663
|
-
var askChatgpt = new ExuluTool({
|
|
4664
|
-
id: `1234-5178-9423-4268`,
|
|
4665
|
-
type: "function",
|
|
4666
|
-
name: "ChatGPT browserbase operation.",
|
|
4667
|
-
inputSchema: import_zod5.z.object({
|
|
4668
|
-
session: import_zod5.z.string().describe("The session id of the browserbase session."),
|
|
4669
|
-
question: import_zod5.z.string().describe("The question to ask ChatGPT.")
|
|
4670
|
-
}),
|
|
4671
|
-
description: `Uses an existing, authenticated browserbase session to visit ChatGPT and perform actions such as asking questions.`,
|
|
4672
|
-
execute: async ({ session, question }) => {
|
|
4673
|
-
const stagehand = new import_stagehand.Stagehand({
|
|
4674
|
-
// With npx create-browser-app, this config is found
|
|
4675
|
-
// in a separate stagehand.config.ts file
|
|
4676
|
-
env: "BROWSERBASE",
|
|
4677
|
-
// set to "LOCAL" for local development
|
|
4678
|
-
apiKey: BB_API_KEY,
|
|
4679
|
-
// todo make this a config variable the admin can set in the UI
|
|
4680
|
-
modelName: "openai/gpt-4.1-mini",
|
|
4681
|
-
// todo change to claude || optionally make configurable?
|
|
4682
|
-
browserbaseSessionID: session,
|
|
4683
|
-
modelClientOptions: {
|
|
4684
|
-
apiKey: process.env.OPENAI_API_KEY
|
|
4685
|
-
// todo make this a config variable the admin can set in the UI
|
|
4686
|
-
}
|
|
4687
|
-
});
|
|
4688
|
-
await stagehand.init();
|
|
4689
|
-
const page = stagehand.page;
|
|
4690
|
-
await page.goto("https://chatgpt.com");
|
|
4691
|
-
await page.act(`Type in '${question}' into the search bar`);
|
|
4692
|
-
const { answer } = await page.extract({
|
|
4693
|
-
instruction: "The answer to the question generated by ChatGPT.",
|
|
4694
|
-
schema: import_zod5.z.object({
|
|
4695
|
-
answer: import_zod5.z.string()
|
|
4696
|
-
})
|
|
4697
|
-
});
|
|
4698
|
-
console.log(answer);
|
|
4699
|
-
await stagehand.close();
|
|
4700
|
-
return {
|
|
4701
|
-
answer
|
|
4702
|
-
};
|
|
4703
|
-
}
|
|
4704
|
-
});
|
|
4705
|
-
|
|
4706
|
-
// src/templates/tools/jira.ts
|
|
4707
|
-
var import_zod6 = require("zod");
|
|
4708
|
-
var getTicket = new ExuluTool({
|
|
4709
|
-
id: `1414-5179-1423-1269`,
|
|
4710
|
-
name: "JIRA ticket retrieval.",
|
|
4711
|
-
type: "function",
|
|
4712
|
-
inputSchema: import_zod6.z.object({
|
|
4713
|
-
ticketId: import_zod6.z.string().describe("The id of the ticket to retrieve.")
|
|
4714
|
-
}),
|
|
4715
|
-
description: `Retrieves a ticket from Jira.`,
|
|
4716
|
-
execute: async ({ session, question }) => {
|
|
4717
|
-
return {
|
|
4718
|
-
name: "BYD-1234",
|
|
4719
|
-
id: "12345678",
|
|
4720
|
-
status: "Open",
|
|
4721
|
-
description: "This is a test ticket",
|
|
4722
|
-
assignee: "John Doe",
|
|
4723
|
-
createdAt: "2021-01-01",
|
|
4724
|
-
updatedAt: "2021-01-01",
|
|
4725
|
-
dueDate: "2021-01-01",
|
|
4726
|
-
priority: "High"
|
|
4727
|
-
};
|
|
4728
|
-
}
|
|
4729
|
-
});
|
|
4730
|
-
|
|
4731
4608
|
// src/registry/index.ts
|
|
4732
4609
|
var ExuluApp = class {
|
|
4733
4610
|
_agents = [];
|
|
@@ -4755,12 +4632,7 @@ var ExuluApp = class {
|
|
|
4755
4632
|
// Add contexts as tools
|
|
4756
4633
|
...Object.values(contexts || {}).map((context) => context.tool()),
|
|
4757
4634
|
// Add agents as tools
|
|
4758
|
-
...(agents || []).map((agent) => agent.tool())
|
|
4759
|
-
...[
|
|
4760
|
-
createSession,
|
|
4761
|
-
askChatgpt,
|
|
4762
|
-
getTicket
|
|
4763
|
-
]
|
|
4635
|
+
...(agents || []).map((agent) => agent.tool())
|
|
4764
4636
|
];
|
|
4765
4637
|
const contextsArray = Object.values(contexts || {});
|
|
4766
4638
|
const queues2 = [
|
package/dist/index.js
CHANGED
|
@@ -4562,129 +4562,6 @@ var defaultAgent = new ExuluAgent({
|
|
|
4562
4562
|
}
|
|
4563
4563
|
});
|
|
4564
4564
|
|
|
4565
|
-
// src/templates/tools/browserbase.ts
|
|
4566
|
-
import { z as z4 } from "zod";
|
|
4567
|
-
import { Stagehand } from "@browserbasehq/stagehand";
|
|
4568
|
-
import { Browserbase } from "@browserbasehq/sdk";
|
|
4569
|
-
var PROJECT_ID = "811444dd-6e6d-40b5-bd90-541c93e44be6";
|
|
4570
|
-
process.env.BROWSERBASE_PROJECT_ID = PROJECT_ID;
|
|
4571
|
-
var BB_API_KEY = "bb_live_LwMwNgZB5cIEKcBwMuAugrgNkFM";
|
|
4572
|
-
async function createContext() {
|
|
4573
|
-
const bb = new Browserbase({ apiKey: BB_API_KEY });
|
|
4574
|
-
const context = await bb.contexts.create({
|
|
4575
|
-
projectId: PROJECT_ID
|
|
4576
|
-
});
|
|
4577
|
-
return context;
|
|
4578
|
-
}
|
|
4579
|
-
async function createAuthSession(contextId) {
|
|
4580
|
-
const bb = new Browserbase({ apiKey: BB_API_KEY });
|
|
4581
|
-
const session = await bb.sessions.create({
|
|
4582
|
-
projectId: PROJECT_ID,
|
|
4583
|
-
browserSettings: {
|
|
4584
|
-
context: {
|
|
4585
|
-
id: contextId,
|
|
4586
|
-
persist: true
|
|
4587
|
-
}
|
|
4588
|
-
}
|
|
4589
|
-
/* proxies: [{ // not included in the free tier
|
|
4590
|
-
type: "browserbase",
|
|
4591
|
-
geolocation: {
|
|
4592
|
-
city: CITY,
|
|
4593
|
-
country: COUNTRY
|
|
4594
|
-
}
|
|
4595
|
-
}] */
|
|
4596
|
-
});
|
|
4597
|
-
const liveViewLinks = await bb.sessions.debug(session.id);
|
|
4598
|
-
const liveViewLink = liveViewLinks.debuggerFullscreenUrl;
|
|
4599
|
-
console.log(`\u{1F50D} Live View Link: ${liveViewLink}`);
|
|
4600
|
-
console.log("Session URL: https://browserbase.com/sessions/" + session.id);
|
|
4601
|
-
return {
|
|
4602
|
-
url: liveViewLink,
|
|
4603
|
-
id: session.id
|
|
4604
|
-
};
|
|
4605
|
-
}
|
|
4606
|
-
var createSession = new ExuluTool({
|
|
4607
|
-
id: `1234-5178-9423-4267`,
|
|
4608
|
-
type: "function",
|
|
4609
|
-
name: "Create a browserbase session.",
|
|
4610
|
-
description: `
|
|
4611
|
-
Creates a browserbase session and returns the live view url as well as
|
|
4612
|
-
the session id as a JSON object. A browserbase session is a headless browser
|
|
4613
|
-
that can be used to to visit websites and perform actions.
|
|
4614
|
-
`,
|
|
4615
|
-
execute: async () => {
|
|
4616
|
-
const { id } = await createContext();
|
|
4617
|
-
return await createAuthSession(id);
|
|
4618
|
-
}
|
|
4619
|
-
});
|
|
4620
|
-
var askChatgpt = new ExuluTool({
|
|
4621
|
-
id: `1234-5178-9423-4268`,
|
|
4622
|
-
type: "function",
|
|
4623
|
-
name: "ChatGPT browserbase operation.",
|
|
4624
|
-
inputSchema: z4.object({
|
|
4625
|
-
session: z4.string().describe("The session id of the browserbase session."),
|
|
4626
|
-
question: z4.string().describe("The question to ask ChatGPT.")
|
|
4627
|
-
}),
|
|
4628
|
-
description: `Uses an existing, authenticated browserbase session to visit ChatGPT and perform actions such as asking questions.`,
|
|
4629
|
-
execute: async ({ session, question }) => {
|
|
4630
|
-
const stagehand = new Stagehand({
|
|
4631
|
-
// With npx create-browser-app, this config is found
|
|
4632
|
-
// in a separate stagehand.config.ts file
|
|
4633
|
-
env: "BROWSERBASE",
|
|
4634
|
-
// set to "LOCAL" for local development
|
|
4635
|
-
apiKey: BB_API_KEY,
|
|
4636
|
-
// todo make this a config variable the admin can set in the UI
|
|
4637
|
-
modelName: "openai/gpt-4.1-mini",
|
|
4638
|
-
// todo change to claude || optionally make configurable?
|
|
4639
|
-
browserbaseSessionID: session,
|
|
4640
|
-
modelClientOptions: {
|
|
4641
|
-
apiKey: process.env.OPENAI_API_KEY
|
|
4642
|
-
// todo make this a config variable the admin can set in the UI
|
|
4643
|
-
}
|
|
4644
|
-
});
|
|
4645
|
-
await stagehand.init();
|
|
4646
|
-
const page = stagehand.page;
|
|
4647
|
-
await page.goto("https://chatgpt.com");
|
|
4648
|
-
await page.act(`Type in '${question}' into the search bar`);
|
|
4649
|
-
const { answer } = await page.extract({
|
|
4650
|
-
instruction: "The answer to the question generated by ChatGPT.",
|
|
4651
|
-
schema: z4.object({
|
|
4652
|
-
answer: z4.string()
|
|
4653
|
-
})
|
|
4654
|
-
});
|
|
4655
|
-
console.log(answer);
|
|
4656
|
-
await stagehand.close();
|
|
4657
|
-
return {
|
|
4658
|
-
answer
|
|
4659
|
-
};
|
|
4660
|
-
}
|
|
4661
|
-
});
|
|
4662
|
-
|
|
4663
|
-
// src/templates/tools/jira.ts
|
|
4664
|
-
import { z as z5 } from "zod";
|
|
4665
|
-
var getTicket = new ExuluTool({
|
|
4666
|
-
id: `1414-5179-1423-1269`,
|
|
4667
|
-
name: "JIRA ticket retrieval.",
|
|
4668
|
-
type: "function",
|
|
4669
|
-
inputSchema: z5.object({
|
|
4670
|
-
ticketId: z5.string().describe("The id of the ticket to retrieve.")
|
|
4671
|
-
}),
|
|
4672
|
-
description: `Retrieves a ticket from Jira.`,
|
|
4673
|
-
execute: async ({ session, question }) => {
|
|
4674
|
-
return {
|
|
4675
|
-
name: "BYD-1234",
|
|
4676
|
-
id: "12345678",
|
|
4677
|
-
status: "Open",
|
|
4678
|
-
description: "This is a test ticket",
|
|
4679
|
-
assignee: "John Doe",
|
|
4680
|
-
createdAt: "2021-01-01",
|
|
4681
|
-
updatedAt: "2021-01-01",
|
|
4682
|
-
dueDate: "2021-01-01",
|
|
4683
|
-
priority: "High"
|
|
4684
|
-
};
|
|
4685
|
-
}
|
|
4686
|
-
});
|
|
4687
|
-
|
|
4688
4565
|
// src/registry/index.ts
|
|
4689
4566
|
var ExuluApp = class {
|
|
4690
4567
|
_agents = [];
|
|
@@ -4712,12 +4589,7 @@ var ExuluApp = class {
|
|
|
4712
4589
|
// Add contexts as tools
|
|
4713
4590
|
...Object.values(contexts || {}).map((context) => context.tool()),
|
|
4714
4591
|
// Add agents as tools
|
|
4715
|
-
...(agents || []).map((agent) => agent.tool())
|
|
4716
|
-
...[
|
|
4717
|
-
createSession,
|
|
4718
|
-
askChatgpt,
|
|
4719
|
-
getTicket
|
|
4720
|
-
]
|
|
4592
|
+
...(agents || []).map((agent) => agent.tool())
|
|
4721
4593
|
];
|
|
4722
4594
|
const contextsArray = Object.values(contexts || {});
|
|
4723
4595
|
const queues2 = [
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exulu/backend",
|
|
3
3
|
"author": "Qventu Bv.",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.2",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"private": false,
|
|
7
7
|
"publishConfig": {
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"@commitlint/cli": "^19.8.1",
|
|
32
32
|
"@commitlint/config-conventional": "^19.8.1",
|
|
33
33
|
"@semantic-release/changelog": "^6.0.3",
|
|
34
|
-
"semantic-release": "^24.2.7",
|
|
35
34
|
"@types/bun": "latest",
|
|
36
35
|
"@types/node": "^22.14.0",
|
|
37
36
|
"@types/pg": "^8.15.1",
|
|
38
37
|
"conventional-changelog-atom": "^5.0.0",
|
|
39
38
|
"husky": "^9.1.7",
|
|
39
|
+
"semantic-release": "^24.2.7",
|
|
40
40
|
"tsup": "^8.5.0",
|
|
41
41
|
"tsx": "^4.19.3"
|
|
42
42
|
},
|
|
@@ -50,8 +50,6 @@
|
|
|
50
50
|
"@aws-sdk/client-s3": "^3.338.0",
|
|
51
51
|
"@aws-sdk/client-sts": "^3.338.0",
|
|
52
52
|
"@aws-sdk/s3-request-presigner": "^3.338.0",
|
|
53
|
-
"@browserbasehq/sdk": "^2.6.0",
|
|
54
|
-
"@browserbasehq/stagehand": "^2.4.1",
|
|
55
53
|
"@inkjs/ui": "^2.0.0",
|
|
56
54
|
"@modelcontextprotocol/sdk": "^1.14.0",
|
|
57
55
|
"@types/bcrypt": "^5.0.2",
|