Skip to content

Commit 94e6668

Browse files
committed
fixes
1 parent a0a48ee commit 94e6668

File tree

8 files changed

+808
-414
lines changed

8 files changed

+808
-414
lines changed

libs/langgraph-cua/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"license": "MIT",
3434
"dependencies": {
3535
"@hyperbrowser/sdk": "^0.40.0",
36-
"playwright-core": "^1.51.1",
36+
"puppeteer-core": "^24.5.0",
3737
"scrapybara": "^2.4.4",
3838
"zod": "^3.23.8"
3939
},

libs/langgraph-cua/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
StateGraph,
88
} from "@langchain/langgraph";
99
import { SystemMessage } from "@langchain/core/messages";
10+
import { CreateSessionParams } from "@hyperbrowser/sdk/types";
1011
import { callModel } from "./nodes/call-model.js";
1112
import { createVMInstance } from "./nodes/create-vm-instance.js";
1213
import { takeComputerAction } from "./nodes/take-computer-action.js";
@@ -89,7 +90,7 @@ interface CreateCuaParams<
8990
* For more information on the available parameters, see the [Hyperbrowser API documentation](https://docs.hyperbrowser.ai/sessions/overview/session-parameters).
9091
* @default undefined
9192
*/
92-
sessionParams?: Record<string, unknown>;
93+
sessionParams?: CreateSessionParams;
9394

9495
/**
9596
* The number of hours to keep the virtual machine running before it times out.

libs/langgraph-cua/src/nodes/create-vm-instance.ts

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
11
import { LangGraphRunnableConfig } from "@langchain/langgraph";
2-
import { chromium } from "playwright-core";
2+
import type { Browser } from "puppeteer-core";
3+
import { connect } from "puppeteer-core";
34
import { UbuntuInstance, BrowserInstance, WindowsInstance } from "scrapybara";
45
import { SessionDetail } from "@hyperbrowser/sdk/types";
56
import { CUAState, CUAUpdate, getConfigurationWithDefaults } from "../types.js";
67
import { getHyperbrowserClient, getScrapybaraClient } from "../utils.js";
78

9+
export const getActivePage = async (browser: Browser) => {
10+
const pages = await browser.pages();
11+
for (const page of pages) {
12+
const isHidden = await page.evaluate("document.hidden");
13+
if (isHidden === false) {
14+
return page;
15+
}
16+
}
17+
return pages[0];
18+
};
19+
820
async function createHyperbrowserInstance(
921
state: CUAState,
1022
config: LangGraphRunnableConfig
1123
): Promise<CUAUpdate> {
1224
const { hyperbrowserApiKey, sessionParams } =
1325
getConfigurationWithDefaults(config);
14-
let { browserState } = state;
1526

1627
if (!hyperbrowserApiKey) {
1728
throw new Error(
@@ -22,18 +33,16 @@ async function createHyperbrowserInstance(
2233
const client = getHyperbrowserClient(hyperbrowserApiKey);
2334
const session: SessionDetail = await client.sessions.create(sessionParams);
2435

25-
if (!browserState && session.wsEndpoint) {
26-
const browser = await chromium.connectOverCDP(
27-
`${session.wsEndpoint}&keepAlive=true`
28-
);
29-
const currPage = browser.contexts()[0].pages()[0];
30-
if (currPage.url() === "about:blank") {
31-
await currPage.goto("https://www.google.com");
36+
if (session.wsEndpoint) {
37+
const browser = await connect({
38+
browserWSEndpoint: `${session.wsEndpoint}&keepAlive=true`,
39+
defaultViewport: null,
40+
});
41+
const page = await getActivePage(browser);
42+
43+
if (page.url() === "about:blank") {
44+
await page.goto("https://www.google.com");
3245
}
33-
browserState = {
34-
browser,
35-
currentPage: currPage,
36-
};
3746
}
3847

3948
if (!state.streamUrl) {
@@ -43,13 +52,11 @@ async function createHyperbrowserInstance(
4352
return {
4453
instanceId: session.id,
4554
streamUrl,
46-
browserState,
4755
};
4856
}
4957

5058
return {
5159
instanceId: session.id,
52-
browserState,
5360
};
5461
}
5562

0 commit comments

Comments
 (0)