diff --git a/packages/core/src/PageAgentCore.ts b/packages/core/src/PageAgentCore.ts index 804d8e2..a61eda3 100644 --- a/packages/core/src/PageAgentCore.ts +++ b/packages/core/src/PageAgentCore.ts @@ -21,7 +21,7 @@ import type { MacroToolInput, MacroToolResult, } from './types' -import { assert, fetchLlmsTxt, normalizeResponse, uid, waitFor } from './utils' +import { assert, fetchLlmsTxt, normalizeResponse, suppress, uid, waitFor } from './utils' export { tool, type PageAgentTool } from './tools' export type * from './types' @@ -244,10 +244,10 @@ export class PageAgentCore extends EventTarget { let taskResult: ExecutionResult let finalStatus: AgentStatus = 'error' + await suppress(() => this.pageController.showMask()) + // graceful exit try { - await this.pageController.showMask() - await onBeforeTask?.(this) while (true) { @@ -368,8 +368,8 @@ export class PageAgentCore extends EventTarget { finalStatus = 'error' throw error } finally { - this.pageController.cleanUpHighlights() - this.pageController.hideMask() + suppress(() => this.pageController.cleanUpHighlights()) + suppress(() => this.pageController.hideMask()) this.#abortController.abort() settleRun(finalStatus) } diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index f030864..cecbaa9 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -129,3 +129,15 @@ export function assert(condition: unknown, message?: string, silent?: boolean): throw new Error(errorMessage) } } + +/** + * Suppress errors from a function. + */ +export function suppress(fn: () => T): T | undefined { + try { + return fn() + } catch (error) { + console.error(error) + return undefined + } +}