all repos — sz-chrome-remote-cdp @ master

pi-browser-harness, patched to drive a Chrome on another host over CDP, with castle_cdp_search web search

src/domains/setup.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
import { Type } from "typebox";
import { Text } from "@mariozechner/pi-tui";
import type { Result } from "../util/result";
import { err, ok } from "../util/result";
import { defineBrowserTool, type ToolErr, type ToolOk } from "../util/tool";
import { performSetup } from "../setup";

const SetupArgs = Type.Object({});

export const setupTool = defineBrowserTool({
  name: "browser_setup",
  label: "Browser Setup",
  description:
    "Initialize browser control. Spawns the daemon, connects to Chrome, opens a test tab. " +
    "Call when browser tools fail with 'Browser harness not initialized'. Idempotent.",
  promptSnippet: "Initialize browser connection",
  promptGuidelines: [
    "After browser_setup succeeds, retry the browser tool that failed.",
  ],
  parameters: SetupArgs,
  concurrency: "parallel",
  ensureAlive: false,
  renderCall: () => new Text("🔧 Initializing browser...", 0, 0),
  async handler(_args, { client, extensionCtx }): Promise<Result<ToolOk, ToolErr>> {
    const result = await performSetup(client, extensionCtx);
    if (result.success) {
      return ok({ text: result.data });
    }
    return err({ kind: "internal", message: result.error });
  },
});