@0xmaxma/claude-gateway 2.0.10 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/config.template.json +1 -1
- package/dist/agent/runner.d.ts +119 -11
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +58 -8
- package/dist/agent/runner.js.map +1 -1
- package/dist/api/browser-bindings-router.d.ts +6 -0
- package/dist/api/browser-bindings-router.d.ts.map +1 -0
- package/dist/api/browser-bindings-router.js +150 -0
- package/dist/api/browser-bindings-router.js.map +1 -0
- package/dist/api/connectors-router.js +1 -1
- package/dist/api/connectors-router.js.map +1 -1
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +30 -2
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/jev-router.d.ts +8 -0
- package/dist/api/jev-router.d.ts.map +1 -0
- package/dist/api/jev-router.js +128 -0
- package/dist/api/jev-router.js.map +1 -0
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +53 -6
- package/dist/api/router.js.map +1 -1
- package/dist/api/voice-router.d.ts.map +1 -1
- package/dist/api/voice-router.js +42 -3
- package/dist/api/voice-router.js.map +1 -1
- package/dist/automation/browser-command.d.ts +79 -0
- package/dist/automation/browser-command.d.ts.map +1 -0
- package/dist/automation/browser-command.js +118 -0
- package/dist/automation/browser-command.js.map +1 -0
- package/dist/automation/browser-outcome.d.ts +3 -0
- package/dist/automation/browser-outcome.d.ts.map +1 -0
- package/dist/automation/browser-outcome.js +78 -0
- package/dist/automation/browser-outcome.js.map +1 -0
- package/dist/automation/browser-steps.d.ts +33 -0
- package/dist/automation/browser-steps.d.ts.map +1 -0
- package/dist/automation/browser-steps.js +293 -0
- package/dist/automation/browser-steps.js.map +1 -0
- package/dist/automation/browser-trace.d.ts +60 -0
- package/dist/automation/browser-trace.d.ts.map +1 -0
- package/dist/automation/browser-trace.js +24 -0
- package/dist/automation/browser-trace.js.map +1 -0
- package/dist/automation/browser-use.d.ts +210 -0
- package/dist/automation/browser-use.d.ts.map +1 -0
- package/dist/automation/browser-use.js +1271 -0
- package/dist/automation/browser-use.js.map +1 -0
- package/dist/automation/command-speech.d.ts +33 -0
- package/dist/automation/command-speech.d.ts.map +1 -0
- package/dist/automation/command-speech.js +117 -0
- package/dist/automation/command-speech.js.map +1 -0
- package/dist/automation/command-steps.d.ts +35 -0
- package/dist/automation/command-steps.d.ts.map +1 -0
- package/dist/automation/command-steps.js +155 -0
- package/dist/automation/command-steps.js.map +1 -0
- package/dist/automation/computer-choice-ids.d.ts +7 -0
- package/dist/automation/computer-choice-ids.d.ts.map +1 -0
- package/dist/automation/computer-choice-ids.js +24 -0
- package/dist/automation/computer-choice-ids.js.map +1 -0
- package/dist/automation/computer-command.d.ts +126 -0
- package/dist/automation/computer-command.d.ts.map +1 -0
- package/dist/automation/computer-command.js +313 -0
- package/dist/automation/computer-command.js.map +1 -0
- package/dist/automation/computer-outcome.d.ts +8 -0
- package/dist/automation/computer-outcome.d.ts.map +1 -0
- package/dist/automation/computer-outcome.js +82 -0
- package/dist/automation/computer-outcome.js.map +1 -0
- package/dist/automation/computer-policy.d.ts +84 -0
- package/dist/automation/computer-policy.d.ts.map +1 -0
- package/dist/automation/computer-policy.js +56 -0
- package/dist/automation/computer-policy.js.map +1 -0
- package/dist/automation/computer-safety.d.ts +27 -0
- package/dist/automation/computer-safety.d.ts.map +1 -0
- package/dist/automation/computer-safety.js +47 -0
- package/dist/automation/computer-safety.js.map +1 -0
- package/dist/automation/computer-steps.d.ts +20 -0
- package/dist/automation/computer-steps.d.ts.map +1 -0
- package/dist/automation/computer-steps.js +251 -0
- package/dist/automation/computer-steps.js.map +1 -0
- package/dist/automation/computer-use.d.ts +315 -0
- package/dist/automation/computer-use.d.ts.map +1 -0
- package/dist/automation/computer-use.js +864 -0
- package/dist/automation/computer-use.js.map +1 -0
- package/dist/automation/direct-command.d.ts +51 -0
- package/dist/automation/direct-command.d.ts.map +1 -0
- package/dist/automation/direct-command.js +152 -0
- package/dist/automation/direct-command.js.map +1 -0
- package/dist/automation/interrupt.d.ts +4 -0
- package/dist/automation/interrupt.d.ts.map +1 -0
- package/dist/automation/interrupt.js +26 -0
- package/dist/automation/interrupt.js.map +1 -0
- package/dist/build-provenance.json +4 -4
- package/dist/child-env-exclusions.d.ts +4 -0
- package/dist/child-env-exclusions.d.ts.map +1 -0
- package/dist/child-env-exclusions.js +23 -0
- package/dist/child-env-exclusions.js.map +1 -0
- package/dist/cli/startup-diagnostics.d.ts.map +1 -1
- package/dist/cli/startup-diagnostics.js +19 -0
- package/dist/cli/startup-diagnostics.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +4 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/reload-policy.d.ts.map +1 -1
- package/dist/config/reload-policy.js +2 -1
- package/dist/config/reload-policy.js.map +1 -1
- package/dist/jev/automatic-browser-bindings.d.ts +15 -0
- package/dist/jev/automatic-browser-bindings.d.ts.map +1 -0
- package/dist/jev/automatic-browser-bindings.js +115 -0
- package/dist/jev/automatic-browser-bindings.js.map +1 -0
- package/dist/jev/browser-connector.d.ts +29 -0
- package/dist/jev/browser-connector.d.ts.map +1 -0
- package/dist/jev/browser-connector.js +347 -0
- package/dist/jev/browser-connector.js.map +1 -0
- package/dist/jev/browser-consent.d.ts +6 -0
- package/dist/jev/browser-consent.d.ts.map +1 -0
- package/dist/jev/browser-consent.js +50 -0
- package/dist/jev/browser-consent.js.map +1 -0
- package/dist/jev/browser-contract.d.ts +215 -0
- package/dist/jev/browser-contract.d.ts.map +1 -0
- package/dist/jev/browser-contract.js +10 -0
- package/dist/jev/browser-contract.js.map +1 -0
- package/dist/jev/browser-evidence-summary.d.ts +73 -0
- package/dist/jev/browser-evidence-summary.d.ts.map +1 -0
- package/dist/jev/browser-evidence-summary.js +22 -0
- package/dist/jev/browser-evidence-summary.js.map +1 -0
- package/dist/jev/browser-module-import.d.ts +3 -0
- package/dist/jev/browser-module-import.d.ts.map +1 -0
- package/dist/jev/browser-module-import.js +6 -0
- package/dist/jev/browser-module-import.js.map +1 -0
- package/dist/jev/child-env.d.ts +11 -0
- package/dist/jev/child-env.d.ts.map +1 -0
- package/dist/jev/child-env.js +60 -0
- package/dist/jev/child-env.js.map +1 -0
- package/dist/jev/computer-connector.d.ts +34 -0
- package/dist/jev/computer-connector.d.ts.map +1 -0
- package/dist/jev/computer-connector.js +82 -0
- package/dist/jev/computer-connector.js.map +1 -0
- package/dist/jev/computer-inputs.d.ts +41 -0
- package/dist/jev/computer-inputs.d.ts.map +1 -0
- package/dist/jev/computer-inputs.js +7 -0
- package/dist/jev/computer-inputs.js.map +1 -0
- package/dist/jev/index.d.ts +6 -0
- package/dist/jev/index.d.ts.map +1 -0
- package/dist/jev/index.js +25 -0
- package/dist/jev/index.js.map +1 -0
- package/dist/jev/relay-grants.d.ts +9 -0
- package/dist/jev/relay-grants.d.ts.map +1 -0
- package/dist/jev/relay-grants.js +49 -0
- package/dist/jev/relay-grants.js.map +1 -0
- package/dist/jev/service.d.ts +27 -0
- package/dist/jev/service.d.ts.map +1 -0
- package/dist/jev/service.js +264 -0
- package/dist/jev/service.js.map +1 -0
- package/dist/jev/thinking-provider.d.ts +7 -0
- package/dist/jev/thinking-provider.d.ts.map +1 -0
- package/dist/jev/thinking-provider.js +25 -0
- package/dist/jev/thinking-provider.js.map +1 -0
- package/dist/jev/types.d.ts +124 -0
- package/dist/jev/types.d.ts.map +1 -0
- package/dist/jev/types.js +13 -0
- package/dist/jev/types.js.map +1 -0
- package/dist/jev/validation.d.ts +45 -0
- package/dist/jev/validation.d.ts.map +1 -0
- package/dist/jev/validation.js +179 -0
- package/dist/jev/validation.js.map +1 -0
- package/dist/load-dotenv.d.ts.map +1 -1
- package/dist/load-dotenv.js +5 -1
- package/dist/load-dotenv.js.map +1 -1
- package/dist/orchestration/agent-tool-schemas.d.ts.map +1 -1
- package/dist/orchestration/agent-tool-schemas.js +12 -7
- package/dist/orchestration/agent-tool-schemas.js.map +1 -1
- package/dist/orchestration/background-work.d.ts +1 -0
- package/dist/orchestration/background-work.d.ts.map +1 -1
- package/dist/orchestration/background-work.js +1 -0
- package/dist/orchestration/background-work.js.map +1 -1
- package/dist/orchestration/bridge.d.ts +4 -0
- package/dist/orchestration/bridge.d.ts.map +1 -1
- package/dist/orchestration/bridge.js +176 -41
- package/dist/orchestration/bridge.js.map +1 -1
- package/dist/orchestration/browser-fields.d.ts +25 -0
- package/dist/orchestration/browser-fields.d.ts.map +1 -0
- package/dist/orchestration/browser-fields.js +23 -0
- package/dist/orchestration/browser-fields.js.map +1 -0
- package/dist/orchestration/browser-routing.d.ts +1 -1
- package/dist/orchestration/browser-routing.d.ts.map +1 -1
- package/dist/orchestration/browser-routing.js +7 -3
- package/dist/orchestration/browser-routing.js.map +1 -1
- package/dist/orchestration/capabilities.d.ts +4 -1
- package/dist/orchestration/capabilities.d.ts.map +1 -1
- package/dist/orchestration/capabilities.js +15 -9
- package/dist/orchestration/capabilities.js.map +1 -1
- package/dist/orchestration/channel-controls.js +1 -1
- package/dist/orchestration/channel-controls.js.map +1 -1
- package/dist/orchestration/cli-skills.d.ts.map +1 -1
- package/dist/orchestration/cli-skills.js +3 -2
- package/dist/orchestration/cli-skills.js.map +1 -1
- package/dist/orchestration/computer-end-screenshot.d.ts +11 -0
- package/dist/orchestration/computer-end-screenshot.d.ts.map +1 -0
- package/dist/orchestration/computer-end-screenshot.js +37 -0
- package/dist/orchestration/computer-end-screenshot.js.map +1 -0
- package/dist/orchestration/computer-prompt.d.ts +6 -0
- package/dist/orchestration/computer-prompt.d.ts.map +1 -0
- package/dist/orchestration/computer-prompt.js +24 -0
- package/dist/orchestration/computer-prompt.js.map +1 -0
- package/dist/orchestration/config.d.ts +17 -0
- package/dist/orchestration/config.d.ts.map +1 -1
- package/dist/orchestration/config.js +10 -4
- package/dist/orchestration/config.js.map +1 -1
- package/dist/orchestration/container-tool-schemas.d.ts +47 -3
- package/dist/orchestration/container-tool-schemas.d.ts.map +1 -1
- package/dist/orchestration/container-tool-schemas.js +41 -6
- package/dist/orchestration/container-tool-schemas.js.map +1 -1
- package/dist/orchestration/container.d.ts +4 -1
- package/dist/orchestration/container.d.ts.map +1 -1
- package/dist/orchestration/container.js +48 -29
- package/dist/orchestration/container.js.map +1 -1
- package/dist/orchestration/context-footprint.d.ts +1 -1
- package/dist/orchestration/context-footprint.d.ts.map +1 -1
- package/dist/orchestration/context-footprint.js +5 -5
- package/dist/orchestration/context-footprint.js.map +1 -1
- package/dist/orchestration/control-notification.d.ts +6 -0
- package/dist/orchestration/control-notification.d.ts.map +1 -0
- package/dist/orchestration/control-notification.js +23 -0
- package/dist/orchestration/control-notification.js.map +1 -0
- package/dist/orchestration/dashboard-reader-worker.js +2 -2
- package/dist/orchestration/dashboard-reader-worker.js.map +1 -1
- package/dist/orchestration/execution-observation.d.ts +3 -0
- package/dist/orchestration/execution-observation.d.ts.map +1 -1
- package/dist/orchestration/execution-observation.js.map +1 -1
- package/dist/orchestration/gateway-tasks/browser.d.ts +59 -0
- package/dist/orchestration/gateway-tasks/browser.d.ts.map +1 -0
- package/dist/orchestration/gateway-tasks/browser.js +426 -0
- package/dist/orchestration/gateway-tasks/browser.js.map +1 -0
- package/dist/orchestration/gateway-tasks/computer-context.d.ts +6 -0
- package/dist/orchestration/gateway-tasks/computer-context.d.ts.map +1 -0
- package/dist/orchestration/gateway-tasks/computer-context.js +19 -0
- package/dist/orchestration/gateway-tasks/computer-context.js.map +1 -0
- package/dist/orchestration/gateway-tasks/computer.d.ts +123 -0
- package/dist/orchestration/gateway-tasks/computer.d.ts.map +1 -0
- package/dist/orchestration/gateway-tasks/computer.js +519 -0
- package/dist/orchestration/gateway-tasks/computer.js.map +1 -0
- package/dist/orchestration/gateway-tasks/controller.d.ts +40 -6
- package/dist/orchestration/gateway-tasks/controller.d.ts.map +1 -1
- package/dist/orchestration/gateway-tasks/controller.js +118 -12
- package/dist/orchestration/gateway-tasks/controller.js.map +1 -1
- package/dist/orchestration/gateway-tasks/safemode.d.ts.map +1 -1
- package/dist/orchestration/gateway-tasks/safemode.js +2 -1
- package/dist/orchestration/gateway-tasks/safemode.js.map +1 -1
- package/dist/orchestration/jev-gateway.d.ts +25 -0
- package/dist/orchestration/jev-gateway.d.ts.map +1 -0
- package/dist/orchestration/jev-gateway.js +103 -0
- package/dist/orchestration/jev-gateway.js.map +1 -0
- package/dist/orchestration/jev-tool.d.ts +45 -0
- package/dist/orchestration/jev-tool.d.ts.map +1 -0
- package/dist/orchestration/jev-tool.js +10 -0
- package/dist/orchestration/jev-tool.js.map +1 -0
- package/dist/orchestration/live-execution-input.d.ts +26 -0
- package/dist/orchestration/live-execution-input.d.ts.map +1 -0
- package/dist/orchestration/live-execution-input.js +70 -0
- package/dist/orchestration/live-execution-input.js.map +1 -0
- package/dist/orchestration/notification-mailbox.d.ts.map +1 -1
- package/dist/orchestration/notification-mailbox.js +5 -2
- package/dist/orchestration/notification-mailbox.js.map +1 -1
- package/dist/orchestration/process-platform.d.ts +0 -3
- package/dist/orchestration/process-platform.d.ts.map +1 -1
- package/dist/orchestration/process-platform.js +0 -4
- package/dist/orchestration/process-platform.js.map +1 -1
- package/dist/orchestration/process-turn.d.ts +8 -0
- package/dist/orchestration/process-turn.d.ts.map +1 -1
- package/dist/orchestration/process-turn.js +65 -8
- package/dist/orchestration/process-turn.js.map +1 -1
- package/dist/orchestration/response-errors.d.ts.map +1 -1
- package/dist/orchestration/response-errors.js +1 -0
- package/dist/orchestration/response-errors.js.map +1 -1
- package/dist/orchestration/runtime.d.ts +51 -1
- package/dist/orchestration/runtime.d.ts.map +1 -1
- package/dist/orchestration/runtime.js +383 -27
- package/dist/orchestration/runtime.js.map +1 -1
- package/dist/orchestration/skill-catalog-budget.d.ts +6 -0
- package/dist/orchestration/skill-catalog-budget.d.ts.map +1 -0
- package/dist/orchestration/skill-catalog-budget.js +9 -0
- package/dist/orchestration/skill-catalog-budget.js.map +1 -0
- package/dist/orchestration/skills.d.ts +4 -2
- package/dist/orchestration/skills.d.ts.map +1 -1
- package/dist/orchestration/skills.js +44 -3
- package/dist/orchestration/skills.js.map +1 -1
- package/dist/orchestration/store.d.ts +1 -0
- package/dist/orchestration/store.d.ts.map +1 -1
- package/dist/orchestration/store.js +2 -0
- package/dist/orchestration/store.js.map +1 -1
- package/dist/orchestration/task-controls.d.ts +78 -8
- package/dist/orchestration/task-controls.d.ts.map +1 -1
- package/dist/orchestration/task-controls.js +6 -1
- package/dist/orchestration/task-controls.js.map +1 -1
- package/dist/orchestration/tasks/automation-session.d.ts +25 -0
- package/dist/orchestration/tasks/automation-session.d.ts.map +1 -0
- package/dist/orchestration/tasks/automation-session.js +68 -0
- package/dist/orchestration/tasks/automation-session.js.map +1 -0
- package/dist/orchestration/tasks/driver.d.ts.map +1 -1
- package/dist/orchestration/tasks/driver.js +3 -2
- package/dist/orchestration/tasks/driver.js.map +1 -1
- package/dist/orchestration/tasks/service.d.ts +68 -7
- package/dist/orchestration/tasks/service.d.ts.map +1 -1
- package/dist/orchestration/tasks/service.js +646 -44
- package/dist/orchestration/tasks/service.js.map +1 -1
- package/dist/orchestration/types.d.ts +82 -3
- package/dist/orchestration/types.d.ts.map +1 -1
- package/dist/orchestration/types.js.map +1 -1
- package/dist/session/codex-extension-discovery.d.ts.map +1 -1
- package/dist/session/codex-extension-discovery.js +4 -2
- package/dist/session/codex-extension-discovery.js.map +1 -1
- package/dist/session/codex-native-mcp-client.d.ts.map +1 -1
- package/dist/session/codex-native-mcp-client.js +2 -1
- package/dist/session/codex-native-mcp-client.js.map +1 -1
- package/dist/session/codex-process.d.ts.map +1 -1
- package/dist/session/codex-process.js +9 -4
- package/dist/session/codex-process.js.map +1 -1
- package/dist/session/process.d.ts +16 -4
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +153 -75
- package/dist/session/process.js.map +1 -1
- package/dist/session/runtime-profile.d.ts +10 -5
- package/dist/session/runtime-profile.d.ts.map +1 -1
- package/dist/session/runtime-profile.js +5 -5
- package/dist/session/runtime-profile.js.map +1 -1
- package/dist/session/worker-extensions.d.ts.map +1 -1
- package/dist/session/worker-extensions.js +2 -1
- package/dist/session/worker-extensions.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/dashboard-client.d.ts.map +1 -1
- package/dist/ui/dashboard-client.js +33 -3
- package/dist/ui/dashboard-client.js.map +1 -1
- package/dist/ui/web-ui.js +1 -1
- package/lib/automation/browser-thinking.cjs +9 -0
- package/lib/automation/browser-thinking.d.cts +2 -0
- package/lib/automation/computer-thinking.cjs +10 -0
- package/lib/automation/computer-thinking.d.cts +2 -0
- package/lib/automation/index.cjs +47 -0
- package/lib/automation/index.d.cts +3 -0
- package/lib/automation/reasoning-instructions.cjs +5 -0
- package/lib/automation/thinking.cjs +35 -0
- package/lib/automation/thinking.d.cts +2 -0
- package/mcp/capability-catalog.ts +2 -2
- package/mcp/server.ts +1 -1
- package/mcp/tools/tasks/module.ts +9 -0
- package/package.json +5 -3
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runBrowserStepsWith = runBrowserStepsWith;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const command_steps_1 = require("./command-steps");
|
|
7
|
+
/**
|
|
8
|
+
* Remote Browser step mode: an explicit user step list runs step after step on
|
|
9
|
+
* one tab lease without returning to the parent agent between steps. Each part
|
|
10
|
+
* is one direct command of the single-command runner, so its fast paths,
|
|
11
|
+
* confidence gate, write-ahead receipt and never-replay rules are unchanged.
|
|
12
|
+
* This file adds sequencing, per-step effect verification and the same caps
|
|
13
|
+
* as Computer Use step mode. The user's own list is their authorization.
|
|
14
|
+
*/
|
|
15
|
+
const STEP_RETRY_MAX = 2;
|
|
16
|
+
const LOADING_DELAY_MS = 800;
|
|
17
|
+
const SETTLE_OBSERVATIONS = 4;
|
|
18
|
+
const SETTLE_DELAY_MS = 400;
|
|
19
|
+
const SCROLL_NO_EFFECT_MAX = 3;
|
|
20
|
+
// Settling a newly loaded document: at most ~2.4 s of reads before moving on.
|
|
21
|
+
const STABLE_OBSERVATIONS = 8;
|
|
22
|
+
const STABLE_DELAY_MS = 300;
|
|
23
|
+
// The previous step's page may still be loading (results absent right after Enter).
|
|
24
|
+
const PART_ACTIONS = 3, PART_EVALUATIONS = 6;
|
|
25
|
+
const LOADING_REASONS = new Set(['NO_SUPPORTED_ACTION', 'LOW_TARGET_CONFIDENCE', 'LOW_OPERATION_CONFIDENCE', 'PAGE_CONTENT_UNAVAILABLE']);
|
|
26
|
+
// Steps whose effect may legitimately be invisible in a structured observation.
|
|
27
|
+
const TOLERANT_KINDS = new Set(['scroll', 'key']);
|
|
28
|
+
const StepsInput = zod_1.z.object({
|
|
29
|
+
contractVersion: zod_1.z.literal(1).default(1),
|
|
30
|
+
steps: zod_1.z.array(zod_1.z.string().min(1).max(command_steps_1.STEP_TEXT_MAX)).min(2).max(command_steps_1.COMMAND_STEPS_MAX),
|
|
31
|
+
scope: zod_1.z.object({ device_id: zod_1.z.string().min(1).max(120), grant_id: zod_1.z.string().min(1).max(120), tab_id: zod_1.z.string().min(1).max(120) }).strict(),
|
|
32
|
+
interactionContext: zod_1.z.string().max(8000).optional(),
|
|
33
|
+
/** Opened before the first step, as in a single-command run. */
|
|
34
|
+
startUrl: zod_1.z.string().max(8192).optional(),
|
|
35
|
+
fields: zod_1.z.array(zod_1.z.object({ label: zod_1.z.string().min(1).max(250), text: zod_1.z.string().max(2000) }).strict()).max(60).default([]),
|
|
36
|
+
timeoutMs: zod_1.z.number().int().min(1000).max(600000).default(command_steps_1.COMMAND_STEPS_TIMEOUT_MS),
|
|
37
|
+
/** Whole-run budgets from the binding; each step part still gets at most 3 actions / 6 decisions. */
|
|
38
|
+
maxSteps: zod_1.z.number().int().min(1).max(100).optional(), maxEvaluations: zod_1.z.number().int().min(1).max(150).optional(), maxTextCalls: zod_1.z.number().int().min(0).max(60).optional(),
|
|
39
|
+
maxStaleRetries: zod_1.z.number().int().min(0).max(10).optional(), operationConfidence: zod_1.z.number().min(0).max(1).optional(), targetConfidence: zod_1.z.number().min(0).max(1).optional(),
|
|
40
|
+
}).strict();
|
|
41
|
+
const fingerprint = (p) => p && JSON.stringify([p.url, p.title, p.text, p.elements.map(({ ref: _, ...e }) => e), p.scroll, p.navigation]);
|
|
42
|
+
const delay = (ms, signal) => new Promise((resolve, reject) => {
|
|
43
|
+
const stop = () => { clearTimeout(timer); reject(Error('TASK_CANCELLED')); };
|
|
44
|
+
const timer = setTimeout(() => { signal.removeEventListener('abort', stop); resolve(); }, ms);
|
|
45
|
+
signal.addEventListener('abort', stop, { once: true });
|
|
46
|
+
if (signal.aborted)
|
|
47
|
+
stop();
|
|
48
|
+
});
|
|
49
|
+
async function runBrowserStepsWith(runOne, parse, raw, deps, signal) {
|
|
50
|
+
const input = StepsInput.parse(raw);
|
|
51
|
+
const timeoutMs = Math.min(input.timeoutMs, command_steps_1.COMMAND_STEPS_TIMEOUT_MS);
|
|
52
|
+
const deadline = Date.now() + timeoutMs;
|
|
53
|
+
const runSignal = AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
|
|
54
|
+
const events = [];
|
|
55
|
+
let sequence = 0, actions = 0, evaluations = 0, completed = 0, scrollNoEffect = 0;
|
|
56
|
+
let lease, prefetched, before, last;
|
|
57
|
+
// The run's last dispatched and confirmed actions, across parts: a later part
|
|
58
|
+
// that dispatched nothing must not hide them from the host's receipt check.
|
|
59
|
+
let lastAction, lastConfirmedAction;
|
|
60
|
+
const unverified = [], notes = [];
|
|
61
|
+
let doneParts = [];
|
|
62
|
+
// One lease for the whole run: the per-part runner sees an idempotent
|
|
63
|
+
// acquire and a deferred release. Mutations still pass the host fence.
|
|
64
|
+
const inner = {
|
|
65
|
+
...deps,
|
|
66
|
+
call: async (name, args, callSignal) => {
|
|
67
|
+
if (name === 'browser_task_acquire' && lease)
|
|
68
|
+
return { state: 'completed', result: { protocol_version: 1, lease_token: lease } };
|
|
69
|
+
if (name === 'browser_task_release')
|
|
70
|
+
return { state: 'completed', result: {} };
|
|
71
|
+
if (name === 'page_observe' && prefetched) {
|
|
72
|
+
const page = prefetched;
|
|
73
|
+
prefetched = undefined;
|
|
74
|
+
before ?? (before = page);
|
|
75
|
+
return structuredClone(page);
|
|
76
|
+
}
|
|
77
|
+
const value = await deps.call(name, args, callSignal);
|
|
78
|
+
if (name === 'browser_task_acquire') {
|
|
79
|
+
const parsed = zod_1.z.object({ state: zod_1.z.literal('completed'), result: zod_1.z.object({ lease_token: zod_1.z.string() }).passthrough() }).safeParse(value);
|
|
80
|
+
if (parsed.success)
|
|
81
|
+
lease = parsed.data.result.lease_token;
|
|
82
|
+
}
|
|
83
|
+
if (name === 'page_observe') {
|
|
84
|
+
const parsed = safeParse(parse, value);
|
|
85
|
+
if (parsed)
|
|
86
|
+
before ?? (before = parsed);
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
},
|
|
90
|
+
trace: event => {
|
|
91
|
+
const entry = { ...event, sequence: ++sequence };
|
|
92
|
+
if (events.length < 1024)
|
|
93
|
+
events.push(entry);
|
|
94
|
+
try {
|
|
95
|
+
deps.trace?.(structuredClone(entry));
|
|
96
|
+
}
|
|
97
|
+
catch { /* Diagnostic sinks cannot change an outcome. */ }
|
|
98
|
+
},
|
|
99
|
+
progress: event => deps.progress?.({ ...event, steps: actions + event.steps, evaluations: evaluations + event.evaluations }),
|
|
100
|
+
};
|
|
101
|
+
const observe = async () => {
|
|
102
|
+
try {
|
|
103
|
+
const value = await deps.call('page_observe', { ...input.scope, lease_token: lease, detail: 'full' }, runSignal);
|
|
104
|
+
if (value?.error)
|
|
105
|
+
return undefined;
|
|
106
|
+
return safeParse(parse, value);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
runSignal.throwIfAborted();
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const stop = (index, stopReason, detail, remainingFrom = index) => ({
|
|
114
|
+
total: input.steps.length, completed, stopReason, stoppedAt: index + 1, stoppedStep: input.steps[index], ...(detail ? { detail } : {}),
|
|
115
|
+
remaining: input.steps.slice(remainingFrom), ...(unverified.length ? { unverifiedSteps: [...unverified] } : {}),
|
|
116
|
+
...(doneParts.length ? { doneParts: [...doneParts] } : {}), ...(notes.length ? { notes: [...notes] } : {}),
|
|
117
|
+
});
|
|
118
|
+
const finish = (status, reason, stepRun) => ({
|
|
119
|
+
contractVersion: 1, status, reason, steps: actions, evaluations, staleRetries: 0, textCalls: 0, stepRun,
|
|
120
|
+
trace: { version: 1, events: [...events], truncated: sequence > events.length, sinkFailed: false },
|
|
121
|
+
...(lastAction ? { lastAction } : {}), ...(lastConfirmedAction ? { lastConfirmedAction } : {}),
|
|
122
|
+
...(last?.lastEvaluation ? { lastEvaluation: last.lastEvaluation } : {}), ...(last?.fieldRequest ? { fieldRequest: last.fieldRequest } : {}),
|
|
123
|
+
...(last?.observation ? { observation: last.observation } : {}),
|
|
124
|
+
});
|
|
125
|
+
const waiting = (stepRun) => finish('needs_verification', 'COMMAND_WAITING_INPUT', stepRun);
|
|
126
|
+
const timedOut = () => runSignal.aborted && !signal.aborted && !deps.interruptSignal?.aborted;
|
|
127
|
+
let index = 0;
|
|
128
|
+
try {
|
|
129
|
+
for (; index < input.steps.length; index++) {
|
|
130
|
+
const step = input.steps[index];
|
|
131
|
+
const parts = (0, command_steps_1.stepParts)(step);
|
|
132
|
+
let stepChanged = true, lastKind;
|
|
133
|
+
doneParts = [];
|
|
134
|
+
for (const part of parts) {
|
|
135
|
+
let result;
|
|
136
|
+
for (let attempt = 0; attempt <= STEP_RETRY_MAX; attempt++) {
|
|
137
|
+
runSignal.throwIfAborted();
|
|
138
|
+
const actionsLeft = Math.min(PART_ACTIONS, (input.maxSteps ?? Infinity) - actions), evaluationsLeft = Math.min(PART_EVALUATIONS, (input.maxEvaluations ?? Infinity) - evaluations);
|
|
139
|
+
if (actionsLeft < 1 || evaluationsLeft < 1)
|
|
140
|
+
return waiting(stop(index, 'STEP_NOT_EXECUTED', actionsLeft < 1 ? 'ACTION_BUDGET' : 'EVALUATION_BUDGET'));
|
|
141
|
+
before = undefined;
|
|
142
|
+
const context = [input.interactionContext, index ? 'Completed steps in this run: ' + input.steps.slice(0, index).map((s, i) => `${i + 1}) ${s}`).join('; ') : ''].filter(Boolean).join('\n').slice(-8000);
|
|
143
|
+
result = await runOne({ contractVersion: 1, goal: part, scope: input.scope, command: true, yieldAfterAction: true, stepPart: true,
|
|
144
|
+
fields: input.fields, maxSteps: actionsLeft, maxEvaluations: evaluationsLeft, timeoutMs: Math.max(1000, deadline - Date.now()),
|
|
145
|
+
...(input.maxTextCalls !== undefined ? { maxTextCalls: input.maxTextCalls } : {}), ...(input.maxStaleRetries !== undefined ? { maxStaleRetries: input.maxStaleRetries } : {}),
|
|
146
|
+
...(input.operationConfidence !== undefined ? { operationConfidence: input.operationConfidence } : {}), ...(input.targetConfidence !== undefined ? { targetConfidence: input.targetConfidence } : {}),
|
|
147
|
+
...(input.startUrl && index === 0 && part === parts[0] && attempt === 0 ? { startUrl: input.startUrl } : {}),
|
|
148
|
+
...(context ? { interactionContext: context } : {}) }, inner, runSignal);
|
|
149
|
+
last = result;
|
|
150
|
+
actions += result.steps;
|
|
151
|
+
evaluations += result.evaluations;
|
|
152
|
+
lastAction = result.lastAction ?? lastAction;
|
|
153
|
+
lastConfirmedAction = result.lastConfirmedAction ?? lastConfirmedAction;
|
|
154
|
+
const reason = result.commandOutcome?.done === false ? result.commandOutcome.reason : undefined;
|
|
155
|
+
// Only a part that dispatched nothing is retried, on a fresh observation.
|
|
156
|
+
const retryable = !result.steps && reason !== undefined && LOADING_REASONS.has(reason) && (index > 0 || part !== parts[0]);
|
|
157
|
+
if (!retryable || attempt === STEP_RETRY_MAX)
|
|
158
|
+
break;
|
|
159
|
+
prefetched = undefined;
|
|
160
|
+
await delay(LOADING_DELAY_MS, runSignal);
|
|
161
|
+
}
|
|
162
|
+
if (!result)
|
|
163
|
+
break;
|
|
164
|
+
if (result.lastAction?.outcome === 'unknown' || result.reason === 'OUTCOME_UNKNOWN')
|
|
165
|
+
return finish('blocked', 'OUTCOME_UNKNOWN', stop(index, 'OUTCOME_UNKNOWN'));
|
|
166
|
+
if (result.status === 'cancelled' || timedOut())
|
|
167
|
+
return timedOut() ? finish('blocked', 'TASK_DEADLINE', stop(index, 'TIMEOUT')) : finish('cancelled', result.reason, stop(index, 'CANCELLED'));
|
|
168
|
+
const outcome = result.commandOutcome;
|
|
169
|
+
if (!outcome) {
|
|
170
|
+
// Field requests keep their own lifecycle; anything else returns control.
|
|
171
|
+
if (result.status === 'blocked' && result.reason === 'FIELD_TEXT_REQUIRED')
|
|
172
|
+
return finish('blocked', 'FIELD_TEXT_REQUIRED', stop(index, 'STEP_NOT_EXECUTED', result.reason));
|
|
173
|
+
if (result.status === 'failed' || result.status === 'blocked')
|
|
174
|
+
return finish(result.status, result.reason, stop(index, 'FAILED', result.reason));
|
|
175
|
+
return waiting(stop(index, 'STEP_NOT_EXECUTED', result.reason));
|
|
176
|
+
}
|
|
177
|
+
if (outcome.action?.kind === 'new_tab') {
|
|
178
|
+
// Scope stays on the approved tab; the following steps run there.
|
|
179
|
+
notes.push(`Step ${index + 1}: stayed in the approved tab (no new tab is opened).`);
|
|
180
|
+
lastKind = 'new_tab';
|
|
181
|
+
doneParts.push(part);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (!outcome.done && outcome.reason === 'SCROLL_LIMIT') {
|
|
185
|
+
stepChanged = false;
|
|
186
|
+
lastKind = 'scroll';
|
|
187
|
+
doneParts.push(part);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (!outcome.done)
|
|
191
|
+
return waiting(stop(index, 'STEP_NOT_EXECUTED', outcome.reason));
|
|
192
|
+
// Verify the observable effect before the next part decides; a
|
|
193
|
+
// navigation may still be committing, so poll a few fresh reads.
|
|
194
|
+
let after = result.observation;
|
|
195
|
+
let changed = fingerprint(before) !== fingerprint(after);
|
|
196
|
+
for (let poll = 0; poll < SETTLE_OBSERVATIONS && !changed; poll++) {
|
|
197
|
+
await delay(SETTLE_DELAY_MS, runSignal);
|
|
198
|
+
const fresh = await observe();
|
|
199
|
+
if (fresh) {
|
|
200
|
+
after = fresh;
|
|
201
|
+
changed = fingerprint(before) !== fingerprint(fresh);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Opening the address the tab already shows leaves the page unchanged,
|
|
205
|
+
// yet the requested state holds (E2E: start_url was already google.com).
|
|
206
|
+
if (!changed && outcome.action?.kind === 'navigate' && sameAddress(after?.url, outcome.action.url))
|
|
207
|
+
changed = true;
|
|
208
|
+
// A new document (search results, a followed link) keeps rendering after
|
|
209
|
+
// it commits; deciding on it too early meets FORM_STATE_CHANGED rejections
|
|
210
|
+
// (E2E: three stale clicks on Google results). Wait, bounded, until two
|
|
211
|
+
// consecutive reads match before the next part decides.
|
|
212
|
+
if (changed && after && before && after.url !== before.url) {
|
|
213
|
+
for (let poll = 0; poll < STABLE_OBSERVATIONS; poll++) {
|
|
214
|
+
await delay(STABLE_DELAY_MS, runSignal);
|
|
215
|
+
const fresh = await observe();
|
|
216
|
+
if (!fresh)
|
|
217
|
+
continue;
|
|
218
|
+
const stable = fingerprint(fresh) === fingerprint(after);
|
|
219
|
+
after = fresh;
|
|
220
|
+
if (stable)
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
prefetched = after;
|
|
225
|
+
lastKind = outcome.action?.kind;
|
|
226
|
+
if (!changed && (!TOLERANT_KINDS.has(lastKind ?? '') || parts.length > 1)) {
|
|
227
|
+
prefetched = undefined;
|
|
228
|
+
return waiting(stop(index, 'STEP_NO_EFFECT', 'dispatched without an observable change', index + 1));
|
|
229
|
+
}
|
|
230
|
+
stepChanged = changed;
|
|
231
|
+
doneParts.push(part);
|
|
232
|
+
}
|
|
233
|
+
doneParts = [];
|
|
234
|
+
if (lastKind === 'new_tab' && parts.length === 1) {
|
|
235
|
+
completed++;
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
scrollNoEffect = stepChanged ? 0 : scrollNoEffect + 1;
|
|
239
|
+
if (!stepChanged && scrollNoEffect >= SCROLL_NO_EFFECT_MAX)
|
|
240
|
+
return waiting(stop(index, 'STEP_NO_EFFECT', 'dispatched without an observable change', index + 1));
|
|
241
|
+
if (!stepChanged)
|
|
242
|
+
unverified.push(index + 1);
|
|
243
|
+
completed++;
|
|
244
|
+
}
|
|
245
|
+
return waiting({ total: input.steps.length, completed, stopReason: 'ALL_STEPS_DONE', remaining: [],
|
|
246
|
+
...(unverified.length ? { unverifiedSteps: [...unverified] } : {}), ...(notes.length ? { notes: [...notes] } : {}) });
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
const safeIndex = Math.min(index, input.steps.length - 1);
|
|
250
|
+
if (lastAction?.outcome === 'unknown')
|
|
251
|
+
return finish('blocked', 'OUTCOME_UNKNOWN', stop(safeIndex, 'OUTCOME_UNKNOWN'));
|
|
252
|
+
if (signal.aborted || deps.interruptSignal?.aborted)
|
|
253
|
+
return finish('cancelled', deps.interruptSignal?.aborted ? 'REVISION_SUPERSEDED' : 'TASK_CANCELLED', stop(safeIndex, 'CANCELLED'));
|
|
254
|
+
if (timedOut())
|
|
255
|
+
return finish('blocked', 'TASK_DEADLINE', stop(safeIndex, 'TIMEOUT'));
|
|
256
|
+
const code = error instanceof Error && /^[A-Z][A-Z_0-9]{2,79}$/.test(error.message) ? error.message : 'ADAPTER_FAILURE';
|
|
257
|
+
return finish('failed', code, stop(safeIndex, 'FAILED', code));
|
|
258
|
+
}
|
|
259
|
+
finally {
|
|
260
|
+
if (lease) {
|
|
261
|
+
// Release the shared lease once; retry so it is not left held.
|
|
262
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
263
|
+
try {
|
|
264
|
+
await deps.call('browser_task_release', { ...input.scope, lease_token: lease, operation_id: (0, node_crypto_1.randomUUID)() }, AbortSignal.timeout(3000));
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
catch { /* Lease expiry (60 s) bounds a failed release. */ }
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/** Same page address, ignoring scheme, a leading www., a trailing slash and the fragment. */
|
|
273
|
+
function sameAddress(current, requested) {
|
|
274
|
+
const key = (value) => {
|
|
275
|
+
const u = new URL(value);
|
|
276
|
+
return u.hostname.replace(/^www\./u, '') + u.pathname.replace(/\/+$/u, '') + u.search;
|
|
277
|
+
};
|
|
278
|
+
try {
|
|
279
|
+
return Boolean(current && requested) && key(current) === key(requested);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function safeParse(parse, value) {
|
|
286
|
+
try {
|
|
287
|
+
return parse(value);
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=browser-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-steps.js","sourceRoot":"","sources":["../../src/automation/browser-steps.ts"],"names":[],"mappings":";;AAqDA,kDAyKC;AA9ND,6BAAsB;AACtB,6CAAuC;AACvC,mDAAkJ;AAIlJ;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,oFAAoF;AACpF,MAAM,YAAY,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAC,uBAAuB,EAAC,0BAA0B,EAAC,0BAA0B,CAAC,CAAC,CAAC;AACvI,gFAAgF;AAChF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAC,KAAK,CAAC,CAAC,CAAC;AAEjD,MAAM,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1B,eAAe,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAiB,CAAC;IAClF,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,EAAC,SAAS,EAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE;IACtI,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACnD,gEAAgE;IAChE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC,EAAC,KAAK,EAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,IAAI,EAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACpH,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wCAAwB,CAAC;IACnF,qGAAqG;IACrG,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5K,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7K,CAAC,CAAC,MAAM,EAAE,CAAC;AAKZ,MAAM,WAAW,GAAG,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACjK,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,MAAmB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IACvF,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,OAAO;QAAE,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEI,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAsC,EAAE,GAAsB,EAAE,IAA4B,EAAE,MAAmB;IACzK,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,wCAAwB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;IAClF,IAAI,KAAyB,EAAE,UAAmC,EAAE,MAA+B,EAAE,IAAkC,CAAC;IACxI,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,UAA0C,EAAE,mBAA4D,CAAC;IAC7G,MAAM,UAAU,GAAa,EAAE,EAAE,KAAK,GAAa,EAAE,CAAC;IACtD,IAAI,SAAS,GAAa,EAAE,CAAC;IAE7B,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,KAAK,GAA2B;QACpC,GAAG,IAAI;QACP,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;YACrC,IAAI,IAAI,KAAK,sBAAsB,IAAI,KAAK;gBAAE,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAC,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAC,EAAC,CAAC;YAC7H,IAAI,IAAI,KAAK,sBAAsB;gBAAE,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;YAC7E,IAAI,IAAI,KAAK,cAAc,IAAI,UAAU,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,UAAU,CAAC;gBAAC,UAAU,GAAG,SAAS,CAAC;gBAAC,MAAM,KAAN,MAAM,GAAK,IAAI,EAAC;gBAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrI,IAAI,MAAM,CAAC,OAAO;oBAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC7D,CAAC;YACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACvC,IAAI,MAAM;oBAAE,MAAM,KAAN,MAAM,GAAK,MAAM,EAAC;YAChC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,EAAE,KAAK,CAAC,EAAE;YACb,MAAM,KAAK,GAAG,EAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC;gBAAA,IAAI,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YAAA,CAAC;YAAC,MAAM,CAAC,CAAA,gDAAgD,CAAA,CAAC;QACtG,CAAC;QACD,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAC,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,WAAW,EAAC,CAAC;KAC3H,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,IAAsC,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE,SAAS,CAA4B,CAAC;YAC1I,IAAI,KAAK,EAAE,KAAK;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YAAA,SAAS,CAAC,cAAc,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAA,CAAC;IACzD,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,UAAiC,EAAE,MAAe,EAAE,aAAa,GAAG,KAAK,EAAkB,EAAE,CAAC,CAAC;QAC1H,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpI,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,eAAe,EAAE,CAAC,GAAG,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvG,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,MAAkC,EAAE,MAAc,EAAE,OAAuB,EAAsB,EAAE,CAAC,CAAC;QACnH,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO;QACvG,KAAK,EAAE,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC;QAChG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxI,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;IAE9F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,IAAA,yBAAS,EAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,WAAW,GAAG,IAAI,EAAE,QAA4B,CAAC;YACrD,SAAS,GAAG,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,MAAoC,CAAC;gBACzC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC;oBAC3D,SAAS,CAAC,cAAc,EAAE,CAAC;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC;oBACnL,IAAI,WAAW,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC;wBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBACtJ,MAAM,GAAG,SAAS,CAAC;oBACnB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,+BAA+B,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1M,MAAM,GAAG,MAAM,MAAM,CAAC,EAAC,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;wBAC9H,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC9H,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,YAAY,EAAE,KAAK,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,eAAe,EAAE,KAAK,CAAC,eAAe,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzK,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjM,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1G,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,kBAAkB,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBACxE,IAAI,GAAG,MAAM,CAAC;oBAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;oBAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;oBAC1E,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC;oBAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,mBAAmB,CAAC;oBACtH,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;oBAChG,0EAA0E;oBAC1E,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3H,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,cAAc;wBAAE,MAAM;oBACpD,UAAU,GAAG,SAAS,CAAC;oBACvB,MAAM,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,MAAM;oBAAE,MAAM;gBACnB,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB;oBAAE,OAAO,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACjK,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,EAAE;oBAAE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC/L,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;gBACtC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,0EAA0E;oBAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB;wBAAE,OAAO,MAAM,CAAC,SAAS,EAAE,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7K,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjJ,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvC,kEAAkE;oBAClE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,sDAAsD,CAAC,CAAC;oBACpF,QAAQ,GAAG,SAAS,CAAC;oBAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBACvD,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;oBAAA,WAAW,GAAG,KAAK,CAAC;oBAAC,QAAQ,GAAG,QAAQ,CAAC;oBAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBAAA,CAAC;gBACnI,IAAI,CAAC,OAAO,CAAC,IAAI;oBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpF,+DAA+D;gBAC/D,iEAAiE;gBACjE,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC/B,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,mBAAmB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;oBAClE,MAAM,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;oBACxC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;oBAC9B,IAAI,KAAK,EAAE,CAAC;wBAAA,KAAK,GAAG,KAAK,CAAC;wBAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;oBAAA,CAAC;gBACnF,CAAC;gBACD,uEAAuE;gBACvE,yEAAyE;gBACzE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;gBACnH,yEAAyE;gBACzE,2EAA2E;gBAC3E,wEAAwE;gBACxE,wDAAwD;gBACxD,IAAI,OAAO,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC3D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,mBAAmB,EAAE,IAAI,EAAE,EAAE,CAAC;wBACtD,MAAM,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;wBACxC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;wBAC9B,IAAI,CAAC,KAAK;4BAAE,SAAS;wBACrB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;wBACzD,KAAK,GAAG,KAAK,CAAC;wBACd,IAAI,MAAM;4BAAE,MAAM;oBACpB,CAAC;gBACH,CAAC;gBACD,UAAU,GAAG,KAAK,CAAC;gBACnB,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1E,UAAU,GAAG,SAAS,CAAC;oBACvB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,yCAAyC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC;gBACD,WAAW,GAAG,OAAO,CAAC;gBAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,SAAS,GAAG,EAAE,CAAC;YACf,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAA,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAA,CAAC;YAC1E,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,IAAI,cAAc,IAAI,oBAAoB;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,yCAAyC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAChK,IAAI,CAAC,WAAW;gBAAE,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,SAAS,EAAE,CAAC;QACd,CAAC;QACD,OAAO,OAAO,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE;YAC/F,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,eAAe,EAAE,CAAC,GAAG,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;IACrH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,OAAO,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACvH,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,OAAO;YAAE,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACxL,IAAI,QAAQ,EAAE;YAAE,OAAO,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACxH,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,EAAE,CAAC;YACV,+DAA+D;YAC/D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBAAA,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAC,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAA,wBAAU,GAAE,EAAC,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAC,MAAM;gBAAA,CAAC;gBAAC,MAAM,CAAC,CAAA,kDAAkD,CAAA,CAAC;YAC/M,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AACD,6FAA6F;AAC7F,SAAS,WAAW,CAAC,OAA2B,EAAE,SAA6B;IAC7E,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxF,CAAC,CAAC;IACF,IAAI,CAAC;QAAA,OAAO,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,OAAQ,CAAC,KAAK,GAAG,CAAC,SAAU,CAAC,CAAC;IAAA,CAAC;IAAC,MAAM,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;AACxG,CAAC;AACD,SAAS,SAAS,CAAC,KAAsC,EAAE,KAAc;IACvE,IAAI,CAAC;QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAAC,MAAM,CAAC;QAAA,OAAO,SAAS,CAAC;IAAA,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Safe structural events. Rich target labels and typed values remain ephemeral. */
|
|
3
|
+
export declare const TraceEvent: z.ZodObject<{
|
|
4
|
+
version: z.ZodLiteral<1>;
|
|
5
|
+
sequence: z.ZodNumber;
|
|
6
|
+
at: z.ZodNumber;
|
|
7
|
+
phase: z.ZodEnum<{
|
|
8
|
+
action: "action";
|
|
9
|
+
decision: "decision";
|
|
10
|
+
dispatch: "dispatch";
|
|
11
|
+
effect: "effect";
|
|
12
|
+
field: "field";
|
|
13
|
+
recovery: "recovery";
|
|
14
|
+
terminal: "terminal";
|
|
15
|
+
}>;
|
|
16
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
17
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
18
|
+
operation: z.ZodOptional<z.ZodString>;
|
|
19
|
+
model: z.ZodOptional<z.ZodString>;
|
|
20
|
+
elapsedMs: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
outcome: z.ZodOptional<z.ZodEnum<{
|
|
22
|
+
unknown: "unknown";
|
|
23
|
+
confirmed: "confirmed";
|
|
24
|
+
not_executed: "not_executed";
|
|
25
|
+
}>>;
|
|
26
|
+
targetRef: z.ZodOptional<z.ZodString>;
|
|
27
|
+
cause: z.ZodOptional<z.ZodString>;
|
|
28
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
29
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
blocked: "blocked";
|
|
31
|
+
succeeded: "succeeded";
|
|
32
|
+
cancelled: "cancelled";
|
|
33
|
+
failed: "failed";
|
|
34
|
+
needs_verification: "needs_verification";
|
|
35
|
+
}>>;
|
|
36
|
+
steps: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
evaluations: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
staleRetries: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
consecutiveStale: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
effect: z.ZodOptional<z.ZodEnum<{
|
|
41
|
+
"value-changed": "value-changed";
|
|
42
|
+
"selection-changed": "selection-changed";
|
|
43
|
+
"expanded-changed": "expanded-changed";
|
|
44
|
+
}>>;
|
|
45
|
+
pageChanged: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
valueMatched: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
optionCount: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
recoveryCalls: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
fieldsUpdated: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
effectObserved: z.ZodOptional<z.ZodBoolean>;
|
|
51
|
+
verified: z.ZodOptional<z.ZodBoolean>;
|
|
52
|
+
}, z.core.$strict>;
|
|
53
|
+
export type BrowserTraceEvent = z.infer<typeof TraceEvent>;
|
|
54
|
+
export type BrowserTrace = {
|
|
55
|
+
version: 1;
|
|
56
|
+
events: BrowserTraceEvent[];
|
|
57
|
+
truncated: boolean;
|
|
58
|
+
sinkFailed: boolean;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=browser-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-trace.d.ts","sourceRoot":"","sources":["../../src/automation/browser-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,oFAAoF;AACpF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBZ,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACzD,MAAM,MAAM,YAAY,GAAC;IAAC,OAAO,EAAC,CAAC,CAAC;IAAA,MAAM,EAAC,iBAAiB,EAAE,CAAC;IAAA,SAAS,EAAC,OAAO,CAAC;IAAA,UAAU,EAAC,OAAO,CAAA;CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TraceEvent = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/** Safe structural events. Rich target labels and typed values remain ephemeral. */
|
|
6
|
+
exports.TraceEvent = zod_1.z.object({
|
|
7
|
+
version: zod_1.z.literal(1), sequence: zod_1.z.number().int().positive(), at: zod_1.z.number().int().nonnegative(),
|
|
8
|
+
phase: zod_1.z.enum(['decision', 'dispatch', 'action', 'effect', 'field', 'recovery', 'terminal']),
|
|
9
|
+
requestId: zod_1.z.string().uuid().optional(), operationId: zod_1.z.string().uuid().optional(),
|
|
10
|
+
operation: zod_1.z.string().regex(/^[A-Z_]{1,32}$/).optional(),
|
|
11
|
+
model: zod_1.z.string().max(200).optional(), elapsedMs: zod_1.z.number().nonnegative().optional(),
|
|
12
|
+
outcome: zod_1.z.enum(['confirmed', 'unknown', 'not_executed']).optional(),
|
|
13
|
+
targetRef: zod_1.z.string().max(100).optional(),
|
|
14
|
+
cause: zod_1.z.string().regex(/^[A-Z][A-Z_0-9]{2,80}$/).optional(),
|
|
15
|
+
reason: zod_1.z.string().regex(/^[A-Z][A-Z_0-9]{2,80}$/).optional(),
|
|
16
|
+
status: zod_1.z.enum(['succeeded', 'blocked', 'cancelled', 'failed', 'needs_verification']).optional(),
|
|
17
|
+
steps: zod_1.z.number().int().nonnegative().optional(), evaluations: zod_1.z.number().int().nonnegative().optional(),
|
|
18
|
+
staleRetries: zod_1.z.number().int().nonnegative().optional(), consecutiveStale: zod_1.z.number().int().nonnegative().optional(),
|
|
19
|
+
effect: zod_1.z.enum(['value-changed', 'selection-changed', 'expanded-changed']).optional(),
|
|
20
|
+
pageChanged: zod_1.z.boolean().optional(), valueMatched: zod_1.z.boolean().optional(), optionCount: zod_1.z.number().int().nonnegative().optional(),
|
|
21
|
+
recoveryCalls: zod_1.z.number().int().nonnegative().optional(), fieldsUpdated: zod_1.z.number().int().nonnegative().optional(),
|
|
22
|
+
effectObserved: zod_1.z.boolean().optional(), verified: zod_1.z.boolean().optional(),
|
|
23
|
+
}).strict();
|
|
24
|
+
//# sourceMappingURL=browser-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-trace.js","sourceRoot":"","sources":["../../src/automation/browser-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { BrowserTraceEvent, BrowserTrace } from "./browser-trace";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { type BrowserStepsInput } from "./browser-steps";
|
|
4
|
+
import { type BrowserCommandOutcome } from "./browser-command";
|
|
5
|
+
export declare const BROWSER_USE_CONTRACT_VERSION: 1;
|
|
6
|
+
/** Optional inputs this runner accepts within contract v1; hosts pass them only when advertised. */
|
|
7
|
+
export declare const BROWSER_USE_FEATURES: readonly ["direct_command", "steps"];
|
|
8
|
+
export declare class BrowserUseInputError extends Error {
|
|
9
|
+
readonly code = "INVALID_INPUT";
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
export declare const BrowserObservation: z.ZodObject<{
|
|
13
|
+
protocol_version: z.ZodLiteral<1>;
|
|
14
|
+
generation: z.ZodString;
|
|
15
|
+
url: z.ZodString;
|
|
16
|
+
title: z.ZodString;
|
|
17
|
+
text: z.ZodString;
|
|
18
|
+
viewport_text: z.ZodOptional<z.ZodString>;
|
|
19
|
+
elements: z.ZodArray<z.ZodObject<{
|
|
20
|
+
ref: z.ZodString;
|
|
21
|
+
label: z.ZodString;
|
|
22
|
+
context: z.ZodOptional<z.ZodString>;
|
|
23
|
+
value_now: z.ZodOptional<z.ZodString>;
|
|
24
|
+
value_text: z.ZodOptional<z.ZodString>;
|
|
25
|
+
type: z.ZodOptional<z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | undefined, string | null | undefined>>>;
|
|
26
|
+
tag: z.ZodString;
|
|
27
|
+
role: z.ZodOptional<z.ZodString>;
|
|
28
|
+
value: z.ZodOptional<z.ZodString>;
|
|
29
|
+
value_truncated: z.ZodOptional<z.ZodBoolean>;
|
|
30
|
+
checked: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
31
|
+
selected: z.ZodOptional<z.ZodString>;
|
|
32
|
+
expanded: z.ZodOptional<z.ZodString>;
|
|
33
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
readonly: z.ZodOptional<z.ZodBoolean>;
|
|
35
|
+
sensitive: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
operations: z.ZodArray<z.ZodEnum<{
|
|
37
|
+
TYPE_TEXT: "TYPE_TEXT";
|
|
38
|
+
CLICK: "CLICK";
|
|
39
|
+
SELECT: "SELECT";
|
|
40
|
+
}>>;
|
|
41
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
42
|
+
ref: z.ZodString;
|
|
43
|
+
label: z.ZodString;
|
|
44
|
+
disabled: z.ZodBoolean;
|
|
45
|
+
selected: z.ZodBoolean;
|
|
46
|
+
}, z.core.$strip>>>;
|
|
47
|
+
options_truncated: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
in_viewport: z.ZodOptional<z.ZodBoolean>;
|
|
49
|
+
}, z.core.$strip>>;
|
|
50
|
+
scroll: z.ZodObject<{
|
|
51
|
+
y: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
up: z.ZodBoolean;
|
|
53
|
+
down: z.ZodBoolean;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
truncated: z.ZodObject<{
|
|
56
|
+
text: z.ZodBoolean;
|
|
57
|
+
elements: z.ZodBoolean;
|
|
58
|
+
viewport_elements: z.ZodOptional<z.ZodBoolean>;
|
|
59
|
+
title: z.ZodOptional<z.ZodBoolean>;
|
|
60
|
+
url: z.ZodOptional<z.ZodBoolean>;
|
|
61
|
+
}, z.core.$strip>;
|
|
62
|
+
navigation: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
can_go_back: z.ZodBoolean;
|
|
64
|
+
can_go_forward: z.ZodBoolean;
|
|
65
|
+
}, z.core.$strip>>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export type Observation = z.infer<typeof BrowserObservation>;
|
|
68
|
+
export type ChoiceQuestion = {
|
|
69
|
+
type: "choice";
|
|
70
|
+
instructions: string;
|
|
71
|
+
criteria: Record<string, string>;
|
|
72
|
+
};
|
|
73
|
+
export type JsonValue = null | boolean | number | string | JsonValue[] | {
|
|
74
|
+
[key: string]: JsonValue;
|
|
75
|
+
};
|
|
76
|
+
export type EvaluationRequest = {
|
|
77
|
+
requestId: string;
|
|
78
|
+
state: {
|
|
79
|
+
[key: string]: JsonValue;
|
|
80
|
+
};
|
|
81
|
+
questions: Record<string, ChoiceQuestion>;
|
|
82
|
+
};
|
|
83
|
+
export type EvaluationResponse = {
|
|
84
|
+
model: string;
|
|
85
|
+
answers: Record<string, unknown>;
|
|
86
|
+
};
|
|
87
|
+
export type BrowserScope = {
|
|
88
|
+
device_id: string;
|
|
89
|
+
grant_id: string;
|
|
90
|
+
tab_id: string;
|
|
91
|
+
};
|
|
92
|
+
export type BrowserToolCall = (name: string, args: Record<string, unknown>, signal: AbortSignal) => Promise<unknown>;
|
|
93
|
+
export type FieldTextRequest = {
|
|
94
|
+
goal: string;
|
|
95
|
+
field: Observation["elements"][number];
|
|
96
|
+
page: {
|
|
97
|
+
url: string;
|
|
98
|
+
title: string;
|
|
99
|
+
text: string;
|
|
100
|
+
};
|
|
101
|
+
recent_actions?: unknown[];
|
|
102
|
+
};
|
|
103
|
+
export type BrowserUseDependencies = {
|
|
104
|
+
/** Private host sink; events contain no page text, labels or field values. */
|
|
105
|
+
trace?: (event: BrowserTraceEvent) => void;
|
|
106
|
+
interruptSignal?: AbortSignal;
|
|
107
|
+
call: BrowserToolCall;
|
|
108
|
+
evaluate: (request: EvaluationRequest, signal: AbortSignal) => Promise<EvaluationResponse>;
|
|
109
|
+
/** Host-owned Thinking implementation; no provider credentials live in this adapter. */
|
|
110
|
+
resolveFieldText?: (request: FieldTextRequest, signal: AbortSignal) => Promise<{
|
|
111
|
+
text: string | null;
|
|
112
|
+
}>;
|
|
113
|
+
/** Trusted code, independent of the chooser. No verifier means needs_verification. */
|
|
114
|
+
verify?: (observation: Observation, signal: AbortSignal) => Promise<boolean>;
|
|
115
|
+
progress?: (event: BrowserUseProgress) => void | Promise<void>;
|
|
116
|
+
};
|
|
117
|
+
export type BrowserUseProgress = {
|
|
118
|
+
contractVersion: 1;
|
|
119
|
+
phase: "evaluating" | "decided" | "acting" | "acted";
|
|
120
|
+
steps: number;
|
|
121
|
+
evaluations: number;
|
|
122
|
+
requestId?: string;
|
|
123
|
+
operationId?: string;
|
|
124
|
+
model?: string;
|
|
125
|
+
decision_ms?: number;
|
|
126
|
+
operation_confidence?: number;
|
|
127
|
+
target_confidence?: number;
|
|
128
|
+
};
|
|
129
|
+
declare const Input: z.ZodObject<{
|
|
130
|
+
contractVersion: z.ZodDefault<z.ZodLiteral<1>>;
|
|
131
|
+
goal: z.ZodString;
|
|
132
|
+
startUrl: z.ZodOptional<z.ZodString>;
|
|
133
|
+
scope: z.ZodObject<{
|
|
134
|
+
device_id: z.ZodString;
|
|
135
|
+
grant_id: z.ZodString;
|
|
136
|
+
tab_id: z.ZodString;
|
|
137
|
+
}, z.core.$strict>;
|
|
138
|
+
fields: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
139
|
+
label: z.ZodString;
|
|
140
|
+
text: z.ZodString;
|
|
141
|
+
}, z.core.$strict>>>;
|
|
142
|
+
maxStaleRetries: z.ZodDefault<z.ZodNumber>;
|
|
143
|
+
maxTextCalls: z.ZodDefault<z.ZodNumber>;
|
|
144
|
+
yieldAfterAction: z.ZodDefault<z.ZodBoolean>;
|
|
145
|
+
command: z.ZodDefault<z.ZodBoolean>;
|
|
146
|
+
interactionContext: z.ZodOptional<z.ZodString>;
|
|
147
|
+
stepPart: z.ZodDefault<z.ZodBoolean>;
|
|
148
|
+
agentCommand: z.ZodDefault<z.ZodBoolean>;
|
|
149
|
+
sessionStart: z.ZodDefault<z.ZodBoolean>;
|
|
150
|
+
confirmation: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
command: z.ZodString;
|
|
152
|
+
label: z.ZodString;
|
|
153
|
+
}, z.core.$strict>>;
|
|
154
|
+
maxSteps: z.ZodDefault<z.ZodNumber>;
|
|
155
|
+
maxEvaluations: z.ZodDefault<z.ZodNumber>;
|
|
156
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
157
|
+
operationConfidence: z.ZodDefault<z.ZodNumber>;
|
|
158
|
+
targetConfidence: z.ZodDefault<z.ZodNumber>;
|
|
159
|
+
}, z.core.$strict>;
|
|
160
|
+
export type BrowserUseInput = z.input<typeof Input>;
|
|
161
|
+
export type BrowserUseResult = {
|
|
162
|
+
contractVersion: 1;
|
|
163
|
+
trace?: BrowserTrace;
|
|
164
|
+
lastEvaluation?: {
|
|
165
|
+
requestId: string;
|
|
166
|
+
model?: string;
|
|
167
|
+
};
|
|
168
|
+
lastConfirmedAction?: {
|
|
169
|
+
operationId: string;
|
|
170
|
+
operation: string;
|
|
171
|
+
outcome: "confirmed";
|
|
172
|
+
};
|
|
173
|
+
fieldRequest?: {
|
|
174
|
+
ref: string;
|
|
175
|
+
label: string;
|
|
176
|
+
reason: "missing" | "ambiguous";
|
|
177
|
+
};
|
|
178
|
+
status: "succeeded" | "blocked" | "cancelled" | "failed" | "needs_verification";
|
|
179
|
+
reason: string;
|
|
180
|
+
steps: number;
|
|
181
|
+
evaluations: number;
|
|
182
|
+
staleRetries: number;
|
|
183
|
+
textCalls: number;
|
|
184
|
+
lastAction?: {
|
|
185
|
+
operationId: string;
|
|
186
|
+
operation: string;
|
|
187
|
+
outcome: "confirmed" | "unknown" | "not_executed";
|
|
188
|
+
};
|
|
189
|
+
observation?: Observation;
|
|
190
|
+
commandOutcome?: BrowserCommandOutcome;
|
|
191
|
+
};
|
|
192
|
+
export declare const STALE_RETRY_DELAY_MS = 1000;
|
|
193
|
+
export declare function decisionQuestions(page: Observation, goal?: string, exhaustedTextFields?: Set<string>, command?: boolean, readRequest?: boolean, navigate?: boolean, agentCommand?: boolean): {
|
|
194
|
+
questions: Record<string, ChoiceQuestion>;
|
|
195
|
+
targets: Map<string, {
|
|
196
|
+
element: Observation["elements"][number];
|
|
197
|
+
option?: string;
|
|
198
|
+
}>;
|
|
199
|
+
};
|
|
200
|
+
/** Run inside the gateway-owned task lifecycle; this function creates no queue or key store. */
|
|
201
|
+
export declare function runBrowserUse(raw: BrowserUseInput, deps: BrowserUseDependencies, signal: AbortSignal): Promise<BrowserUseResult>;
|
|
202
|
+
/** Step mode on one lease; see browser-steps.ts. */
|
|
203
|
+
export declare function runBrowserSteps(raw: BrowserStepsInput, deps: BrowserUseDependencies, signal: AbortSignal): Promise<import("./browser-steps").BrowserStepsResult>;
|
|
204
|
+
/** Adapt an authenticated MCP client. Principal scope and cancellation stay with its owner. */
|
|
205
|
+
export declare function mcpBrowserTransport(invoke: (name: string, args: Record<string, unknown>, signal: AbortSignal) => Promise<{
|
|
206
|
+
content: unknown[];
|
|
207
|
+
isError?: boolean;
|
|
208
|
+
}>): BrowserToolCall;
|
|
209
|
+
export {};
|
|
210
|
+
//# sourceMappingURL=browser-use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-use.d.ts","sourceRoot":"","sources":["../../src/automation/browser-use.ts"],"names":[],"mappings":"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"}
|