Skip to content

Commit fc927f3

Browse files
committed
update google sdk for gemini. Better frame context cleanup
1 parent 18f225d commit fc927f3

3 files changed

Lines changed: 43 additions & 6 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hyperbrowser/agent",
3-
"version": "1.0.5",
3+
"version": "1.0.6",
44
"description": "Hyperbrowsers Web Agent",
55
"author": "",
66
"main": "dist/index.js",
@@ -38,7 +38,7 @@
3838
],
3939
"dependencies": {
4040
"@anthropic-ai/sdk": "^0.69.0",
41-
"@google/genai": "^1.28.0",
41+
"@google/genai": "^1.30.0",
4242
"@hyperbrowser/sdk": "0.78.0",
4343
"@inquirer/prompts": "^7.4.1",
4444
"@modelcontextprotocol/sdk": "^1.9.0",

src/cdp/frame-context-manager.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,38 @@ export class FrameContextManager {
9292
}
9393

9494
removeFrame(frameId: string): void {
95+
// 1. Clean execution contexts
96+
const contextId = this.frameExecutionContexts.get(frameId);
97+
if (contextId !== undefined) {
98+
this.executionContextToFrame.delete(contextId);
99+
this.frameExecutionContexts.delete(frameId);
100+
}
101+
102+
const waiters = this.executionContextWaiters.get(frameId);
103+
if (waiters) {
104+
for (const waiter of waiters) {
105+
if (waiter.timeoutId) clearTimeout(waiter.timeoutId);
106+
waiter.resolve(undefined);
107+
}
108+
this.executionContextWaiters.delete(frameId);
109+
}
110+
111+
// 2. Clean session listeners
112+
const session = this.sessions.get(frameId);
113+
if (session) {
114+
const listeners = this.sessionListeners.get(session);
115+
if (listeners) {
116+
for (const { event, handler } of listeners) {
117+
session.off?.(event, handler);
118+
}
119+
this.sessionListeners.delete(session);
120+
}
121+
}
122+
123+
// 3. Clean OOPIF set
124+
this.oopifFrameIds.delete(frameId);
125+
126+
// 4. Remove from graph and sessions
95127
this.graph.removeFrame(frameId);
96128
this.sessions.delete(frameId);
97129
}
@@ -388,7 +420,11 @@ export class FrameContextManager {
388420
this.log(
389421
`[FrameContext] Frame ${frame.url()} is detached, removing cached record`
390422
);
423+
const frameId = cachedRecord.frameId;
391424
this.removeCachedPlaywrightFrame(frame);
425+
if (frameId) {
426+
this.removeFrame(frameId);
427+
}
392428
return null;
393429
}
394430
cachedRecord.url = frame.url();
@@ -439,6 +475,7 @@ export class FrameContextManager {
439475
};
440476
const detachHandler = (): void => {
441477
this.removeCachedPlaywrightFrame(frame);
478+
this.removeFrame(frameId);
442479
oopifSession?.off?.("Detached", detachHandler);
443480
};
444481
record.detachHandler = detachHandler;

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,10 @@
219219
"@eslint/core" "^0.16.0"
220220
levn "^0.4.1"
221221

222-
"@google/genai@^1.28.0":
223-
version "1.28.0"
224-
resolved "https://registry.yarnpkg.com/@google/genai/-/genai-1.28.0.tgz#0d0563ccf9cac3021a3deffc08549ef4a8d975f8"
225-
integrity sha512-0pfZ1EWQsM9kINsL+mFKJvpzM6NRHS9t360S1MzKq4JtIwTj/RbsPpC/K5wpKiPy9PC+J+bsz/9gvaL51++KrA==
222+
"@google/genai@^1.30.0":
223+
version "1.30.0"
224+
resolved "https://registry.yarnpkg.com/@google/genai/-/genai-1.30.0.tgz#11fc12ab64e7e7c559b41835a5c237b3dfcd1348"
225+
integrity sha512-3MRcgczBFbUat1wIlZoLJ0vCCfXgm7Qxjh59cZi2X08RgWLtm9hKOspzp7TOg1TV2e26/MLxR2GR5yD5GmBV2w==
226226
dependencies:
227227
google-auth-library "^10.3.0"
228228
ws "^8.18.0"

0 commit comments

Comments
 (0)