| import { Type } from "@sinclair/typebox"; |
| import { optionalStringEnum, stringEnum } from "../schema/typebox.js"; |
|
|
| const BROWSER_ACT_KINDS = [ |
| "click", |
| "type", |
| "press", |
| "hover", |
| "drag", |
| "select", |
| "fill", |
| "resize", |
| "wait", |
| "evaluate", |
| "close", |
| ] as const; |
|
|
| const BROWSER_TOOL_ACTIONS = [ |
| "status", |
| "start", |
| "stop", |
| "profiles", |
| "tabs", |
| "open", |
| "focus", |
| "close", |
| "snapshot", |
| "screenshot", |
| "navigate", |
| "console", |
| "pdf", |
| "upload", |
| "dialog", |
| "act", |
| ] as const; |
|
|
| const BROWSER_TARGETS = ["sandbox", "host", "node"] as const; |
|
|
| const BROWSER_SNAPSHOT_FORMATS = ["aria", "ai"] as const; |
| const BROWSER_SNAPSHOT_MODES = ["efficient"] as const; |
| const BROWSER_SNAPSHOT_REFS = ["role", "aria"] as const; |
|
|
| const BROWSER_IMAGE_TYPES = ["png", "jpeg"] as const; |
|
|
| |
| |
| |
| const BrowserActSchema = Type.Object({ |
| kind: stringEnum(BROWSER_ACT_KINDS), |
| |
| targetId: Type.Optional(Type.String()), |
| ref: Type.Optional(Type.String()), |
| |
| doubleClick: Type.Optional(Type.Boolean()), |
| button: Type.Optional(Type.String()), |
| modifiers: Type.Optional(Type.Array(Type.String())), |
| |
| text: Type.Optional(Type.String()), |
| submit: Type.Optional(Type.Boolean()), |
| slowly: Type.Optional(Type.Boolean()), |
| |
| key: Type.Optional(Type.String()), |
| delayMs: Type.Optional(Type.Number()), |
| |
| startRef: Type.Optional(Type.String()), |
| endRef: Type.Optional(Type.String()), |
| |
| values: Type.Optional(Type.Array(Type.String())), |
| |
| fields: Type.Optional(Type.Array(Type.Object({}, { additionalProperties: true }))), |
| |
| width: Type.Optional(Type.Number()), |
| height: Type.Optional(Type.Number()), |
| |
| timeMs: Type.Optional(Type.Number()), |
| selector: Type.Optional(Type.String()), |
| url: Type.Optional(Type.String()), |
| loadState: Type.Optional(Type.String()), |
| textGone: Type.Optional(Type.String()), |
| timeoutMs: Type.Optional(Type.Number()), |
| |
| fn: Type.Optional(Type.String()), |
| }); |
|
|
| |
| |
| |
| export const BrowserToolSchema = Type.Object({ |
| action: stringEnum(BROWSER_TOOL_ACTIONS), |
| target: optionalStringEnum(BROWSER_TARGETS), |
| node: Type.Optional(Type.String()), |
| profile: Type.Optional(Type.String()), |
| targetUrl: Type.Optional(Type.String()), |
| url: Type.Optional(Type.String()), |
| targetId: Type.Optional(Type.String()), |
| limit: Type.Optional(Type.Number()), |
| maxChars: Type.Optional(Type.Number()), |
| mode: optionalStringEnum(BROWSER_SNAPSHOT_MODES), |
| snapshotFormat: optionalStringEnum(BROWSER_SNAPSHOT_FORMATS), |
| refs: optionalStringEnum(BROWSER_SNAPSHOT_REFS), |
| interactive: Type.Optional(Type.Boolean()), |
| compact: Type.Optional(Type.Boolean()), |
| depth: Type.Optional(Type.Number()), |
| selector: Type.Optional(Type.String()), |
| frame: Type.Optional(Type.String()), |
| labels: Type.Optional(Type.Boolean()), |
| fullPage: Type.Optional(Type.Boolean()), |
| ref: Type.Optional(Type.String()), |
| element: Type.Optional(Type.String()), |
| type: optionalStringEnum(BROWSER_IMAGE_TYPES), |
| level: Type.Optional(Type.String()), |
| paths: Type.Optional(Type.Array(Type.String())), |
| inputRef: Type.Optional(Type.String()), |
| timeoutMs: Type.Optional(Type.Number()), |
| accept: Type.Optional(Type.Boolean()), |
| promptText: Type.Optional(Type.String()), |
| |
| kind: Type.Optional(stringEnum(BROWSER_ACT_KINDS)), |
| doubleClick: Type.Optional(Type.Boolean()), |
| button: Type.Optional(Type.String()), |
| modifiers: Type.Optional(Type.Array(Type.String())), |
| text: Type.Optional(Type.String()), |
| submit: Type.Optional(Type.Boolean()), |
| slowly: Type.Optional(Type.Boolean()), |
| key: Type.Optional(Type.String()), |
| delayMs: Type.Optional(Type.Number()), |
| startRef: Type.Optional(Type.String()), |
| endRef: Type.Optional(Type.String()), |
| values: Type.Optional(Type.Array(Type.String())), |
| fields: Type.Optional(Type.Array(Type.Object({}, { additionalProperties: true }))), |
| width: Type.Optional(Type.Number()), |
| height: Type.Optional(Type.Number()), |
| timeMs: Type.Optional(Type.Number()), |
| textGone: Type.Optional(Type.String()), |
| loadState: Type.Optional(Type.String()), |
| fn: Type.Optional(Type.String()), |
| request: Type.Optional(BrowserActSchema), |
| }); |
|
|