opensteer 0.9.2 → 0.9.4

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.
Files changed (39) hide show
  1. package/README.md +158 -165
  2. package/dist/{chunk-HD6KVZ42.js → chunk-GEUHKPC2.js} +46 -16
  3. package/dist/chunk-GEUHKPC2.js.map +1 -0
  4. package/dist/{chunk-2TIVULZY.js → chunk-GSCQQKZZ.js} +53 -9
  5. package/dist/chunk-GSCQQKZZ.js.map +1 -0
  6. package/dist/{chunk-KPYLS2KQ.js → chunk-HQCMXRBE.js} +5 -4
  7. package/dist/chunk-HQCMXRBE.js.map +1 -0
  8. package/dist/{chunk-BMPUL66S.js → chunk-T5P2QGZ3.js} +58 -53
  9. package/dist/chunk-T5P2QGZ3.js.map +1 -0
  10. package/dist/{chunk-FIMNKEG5.js → chunk-ZRF7WMS3.js} +4 -4
  11. package/dist/{chunk-FIMNKEG5.js.map → chunk-ZRF7WMS3.js.map} +1 -1
  12. package/dist/cli/bin.cjs +160 -72
  13. package/dist/cli/bin.cjs.map +1 -1
  14. package/dist/cli/bin.js +17 -7
  15. package/dist/cli/bin.js.map +1 -1
  16. package/dist/index.cjs +149 -69
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +19 -2
  19. package/dist/index.d.ts +19 -2
  20. package/dist/index.js +4 -4
  21. package/dist/local-view/public/assets/app.css +219 -55
  22. package/dist/local-view/public/assets/app.js +58 -2
  23. package/dist/local-view/public/index.html +101 -26
  24. package/dist/local-view/serve-entry.cjs +106 -57
  25. package/dist/local-view/serve-entry.cjs.map +1 -1
  26. package/dist/local-view/serve-entry.js +2 -2
  27. package/dist/opensteer-PJI7VUIT.js +6 -0
  28. package/dist/{opensteer-MIQ43CY4.js.map → opensteer-PJI7VUIT.js.map} +1 -1
  29. package/dist/{session-control-IFE3IPS3.js → session-control-M3JD7ZKA.js} +4 -4
  30. package/dist/{session-control-IFE3IPS3.js.map → session-control-M3JD7ZKA.js.map} +1 -1
  31. package/package.json +5 -5
  32. package/skills/opensteer/SKILL.md +7 -8
  33. package/skills/recorder/SKILL.md +43 -48
  34. package/dist/chunk-2TIVULZY.js.map +0 -1
  35. package/dist/chunk-BMPUL66S.js.map +0 -1
  36. package/dist/chunk-HD6KVZ42.js.map +0 -1
  37. package/dist/chunk-KPYLS2KQ.js.map +0 -1
  38. package/dist/opensteer-MIQ43CY4.js +0 -6
  39. package/skills/recorder/references/recorder-reference.md +0 -71
@@ -1 +1 @@
1
- {"version":3,"sources":["../../package.json","../../src/cli/env-loader.ts","../../src/cli/help.ts","../../src/cli/commands.ts","../../src/cli/parse.ts","../../src/cli/operation-input.ts","../../src/cli/output.ts","../../src/cli/open-browser.ts","../../src/cli/record.ts","../../src/cli/skills-installer.ts","../../src/cli/status.ts","../../src/cli/exec.ts","../../src/cli/view.ts","../../src/cli/bin.ts"],"names":["process","path","summary","require","spawn"],"mappings":"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","file":"bin.js","sourcesContent":["{\n \"name\": \"opensteer\",\n \"version\": \"0.9.2\",\n \"description\": \"Opensteer browser automation, replay, and reverse-engineering toolkit.\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"sideEffects\": false,\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/steerlabs/opensteer.git\",\n \"directory\": \"packages/opensteer\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/steerlabs/opensteer/issues\"\n },\n \"homepage\": \"https://github.com/steerlabs/opensteer/tree/main/packages/opensteer#readme\",\n \"keywords\": [\n \"browser-automation\",\n \"playwright\",\n \"web-automation\",\n \"agents\",\n \"scraping\",\n \"reverse-engineering\"\n ],\n \"engines\": {\n \"node\": \">=22\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"opensteer\": \"./dist/cli/bin.js\"\n },\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n }\n },\n \"files\": [\n \"dist\",\n \"skills\"\n ],\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.27.1\",\n \"@opensteer/engine-playwright\": \"workspace:*\",\n \"@opensteer/runtime-core\": \"workspace:*\",\n \"cheerio\": \"^1.1.2\",\n \"css-select\": \"^6.0.0\",\n \"domhandler\": \"^5.0.3\",\n \"prettier\": \"^3.8.1\",\n \"sharp\": \"^0.34.5\",\n \"skills\": \"^1.4.6\",\n \"ws\": \"^8.18.0\"\n },\n \"optionalDependencies\": {\n \"webcrack\": \"^2.15.1\"\n },\n \"peerDependencies\": {\n \"@opensteer/engine-abp\": \"workspace:*\"\n },\n \"peerDependenciesMeta\": {\n \"@opensteer/engine-abp\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@opensteer/browser-core\": \"workspace:*\",\n \"@opensteer/engine-abp\": \"workspace:*\",\n \"@opensteer/protocol\": \"workspace:*\"\n },\n \"scripts\": {\n \"build\": \"tsup && node ../../scripts/copy-opensteer-local-view-assets.mjs && node ../../scripts/sync-package-skills.mjs\",\n \"clean\": \"rimraf dist skills\",\n \"prepack\": \"node ../../scripts/copy-opensteer-local-view-assets.mjs && node ../../scripts/sync-package-skills.mjs\",\n \"typecheck\": \"tsc --noEmit -p tsconfig.json\"\n }\n}\n","import { loadEnvironment } from \"../env.js\";\n\nexport async function loadCliEnvironment(cwd: string): Promise<void> {\n loadEnvironment(cwd);\n}\n","export function getHelpText(): string {\n return `Opensteer CLI\n\nSession:\n open <url> [--workspace <id>] [--headless] [--provider local|cloud]\n close\n status\n view [--workspace <id>] [--json]\n view stop [--json]\n view --auto [--json]\n view --no-auto [--json]\n\nNavigation:\n goto <url> [--capture-network <label>]\n\nDOM:\n snapshot [action|extraction]\n click <element> [--button left|middle|right] [--persist <key>] [--capture-network <label>]\n hover <element> [--persist <key>] [--capture-network <label>]\n input <element> <text> [--press-enter] [--persist <key>] [--capture-network <label>]\n scroll <direction> <amount> [--element <n>] [--persist <key>] [--capture-network <label>]\n extract <schema> [--persist <key>]\n evaluate <script>\n init-script <script>\n\nTabs:\n tab list\n tab new [url]\n tab <n>\n tab close [n]\n\nNetwork:\n network query [--capture <label>] [--url <pattern>] [--hostname <host>] [--path <path>] [--method <m>] [--status <code>] [--type <resourceType>] [--json] [--before <id>] [--after <id>] [--limit <n>]\n --json filters to JSON and GraphQL responses only\n network detail <recordId> [--probe]\n fetch <url> [--method <m>] [--header key=value ...] [--query key=value ...] [--body <json>] [--body-text <text>] [--transport auto|direct|matched-tls|context|page] [--cookies] [--follow-redirects]\n\nBrowser State:\n state [domain]\n\nSDK:\n exec <expression> Run JS with the Opensteer SDK as 'this'. Supports await.\n\nComputer:\n computer click <x> <y> [--button left|right|middle] [--count <n>] [--modifiers Shift,Control,Alt,Meta] [--capture-network <label>]\n computer type <text> [--capture-network <label>]\n computer key <key> [--modifiers Shift,Control,Alt,Meta] [--capture-network <label>]\n computer scroll <x> <y> --dx <n> --dy <n> [--capture-network <label>]\n computer move <x> <y> [--capture-network <label>]\n computer drag <x1> <y1> <x2> <y2> [--steps <n>] [--capture-network <label>]\n computer screenshot [--format png|jpeg|webp]\n computer wait <ms>\n\nAdvanced:\n captcha solve --provider 2captcha|capsolver --api-key <key> [--type recaptcha-v2|hcaptcha|turnstile] [--site-key <key>] [--page-url <url>] [--timeout <ms>]\n scripts capture [--url-filter <pattern>] [--persist] [--inline] [--external] [--dynamic] [--workers]\n scripts beautify <artifactId> [--persist]\n scripts deobfuscate <artifactId> [--persist]\n scripts sandbox <artifactId> [--fidelity minimal|standard|full] [--timeout <ms>] [--clock real|manual] [--cookies <json>] [--globals <json>] [--ajax-routes <json>]\n interaction capture [--key <name>] [--duration <ms>] [--script <js>] [--include-storage] [--include-session-storage] [--include-indexed-db] [--global-names <list>] [--case-id <id>] [--notes <text>] [--tags <list>]\n interaction get <traceId>\n interaction replay <traceId>\n interaction diff <leftTraceId> <rightTraceId>\n artifact read <artifactId>\n\nOptions:\n --workspace <id> Required for stateful commands (or set OPENSTEER_WORKSPACE)\n --capture-network <l> Record network traffic during an action\n --help, --version\n`;\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nconst OPERATION_ALIASES = new Map<string, OpensteerSemanticOperationName>([\n [\"open\", \"session.open\"],\n [\"close\", \"session.close\"],\n [\"goto\", \"page.goto\"],\n [\"snapshot\", \"page.snapshot\"],\n [\"evaluate\", \"page.evaluate\"],\n [\"init-script\", \"page.add-init-script\"],\n [\"click\", \"dom.click\"],\n [\"hover\", \"dom.hover\"],\n [\"input\", \"dom.input\"],\n [\"scroll\", \"dom.scroll\"],\n [\"extract\", \"dom.extract\"],\n [\"tab\", \"page.activate\"],\n [\"tab list\", \"page.list\"],\n [\"tab new\", \"page.new\"],\n [\"tab close\", \"page.close\"],\n [\"network query\", \"network.query\"],\n [\"network detail\", \"network.detail\"],\n [\"fetch\", \"session.fetch\"],\n [\"state\", \"session.state\"],\n [\"computer click\", \"computer.execute\"],\n [\"computer type\", \"computer.execute\"],\n [\"computer key\", \"computer.execute\"],\n [\"computer scroll\", \"computer.execute\"],\n [\"computer move\", \"computer.execute\"],\n [\"computer drag\", \"computer.execute\"],\n [\"computer screenshot\", \"computer.execute\"],\n [\"computer wait\", \"computer.execute\"],\n [\"captcha solve\", \"captcha.solve\"],\n [\"scripts capture\", \"scripts.capture\"],\n [\"scripts beautify\", \"scripts.beautify\"],\n [\"scripts deobfuscate\", \"scripts.deobfuscate\"],\n [\"scripts sandbox\", \"scripts.sandbox\"],\n [\"interaction capture\", \"interaction.capture\"],\n [\"interaction get\", \"interaction.get\"],\n [\"interaction diff\", \"interaction.diff\"],\n [\"interaction replay\", \"interaction.replay\"],\n [\"artifact read\", \"artifact.read\"],\n]);\n\nexport function resolveOperation(\n command: readonly string[],\n): OpensteerSemanticOperationName | undefined {\n for (let length = Math.min(3, command.length); length >= 1; length -= 1) {\n const key = command.slice(0, length).join(\" \");\n const operation = OPERATION_ALIASES.get(key);\n if (operation) {\n return operation;\n }\n }\n return undefined;\n}\n\nexport function resolveCommandLength(tokens: readonly string[]): number {\n if (tokens.length === 0) {\n return 0;\n }\n if (tokens[0] === \"browser\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"skills\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"view\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"status\" || tokens[0] === \"record\" || tokens[0] === \"exec\") {\n return 1;\n }\n for (let length = Math.min(3, tokens.length); length >= 1; length -= 1) {\n if (OPERATION_ALIASES.has(tokens.slice(0, length).join(\" \"))) {\n return length;\n }\n }\n return Math.min(tokens.length, 1);\n}\n","import process from \"node:process\";\n\nimport type { OpensteerBrowserOptions } from \"@opensteer/protocol\";\n\nimport { normalizeOpensteerProviderMode, type OpensteerProviderMode } from \"../provider/config.js\";\nimport { resolveCommandLength } from \"./commands.js\";\n\nexport interface ParsedCliOptions {\n readonly workspace?: string;\n readonly url?: string;\n readonly output?: string;\n readonly requestedEngineName?: string;\n readonly provider?: OpensteerProviderMode;\n readonly cloudBaseUrl?: string;\n readonly cloudApiKey?: string;\n readonly cloudAppBaseUrl?: string;\n readonly cloudProfileId?: string;\n readonly cloudProfileReuseIfActive?: boolean;\n readonly json?: boolean;\n readonly agents?: readonly string[];\n readonly skills?: readonly string[];\n readonly localViewMode?: \"auto\" | \"manual\";\n readonly global?: boolean;\n readonly yes?: boolean;\n readonly copy?: boolean;\n readonly all?: boolean;\n readonly list?: boolean;\n readonly browser?: OpensteerBrowserOptions;\n readonly launch?: {\n readonly headless?: boolean;\n readonly executablePath?: string;\n readonly args?: readonly string[];\n readonly timeoutMs?: number;\n };\n readonly context?: Record<string, unknown>;\n readonly attachEndpoint?: string;\n readonly attachHeaders?: Readonly<Record<string, string>>;\n readonly sourceUserDataDir?: string;\n readonly sourceProfileDirectory?: string;\n}\n\nexport interface ParsedCommandLine {\n readonly command: readonly string[];\n readonly rest: readonly string[];\n readonly rawOptions: ReadonlyMap<string, readonly string[]>;\n readonly options: ParsedCliOptions;\n}\n\nconst CLI_OPTION_SPECS = {\n workspace: { kind: \"value\" },\n url: { kind: \"value\" },\n output: { kind: \"value\" },\n engine: { kind: \"value\" },\n provider: { kind: \"value\" },\n \"cloud-base-url\": { kind: \"value\" },\n \"cloud-api-key\": { kind: \"value\" },\n \"cloud-app-base-url\": { kind: \"value\" },\n \"cloud-profile-id\": { kind: \"value\" },\n \"cloud-profile-reuse-if-active\": { kind: \"boolean\" },\n json: { kind: \"boolean\" },\n agent: { kind: \"value\", multiple: true },\n skill: { kind: \"value\", multiple: true },\n global: { kind: \"boolean\" },\n yes: { kind: \"boolean\" },\n copy: { kind: \"boolean\" },\n all: { kind: \"boolean\" },\n list: { kind: \"boolean\" },\n auto: { kind: \"boolean\" },\n \"no-auto\": { kind: \"boolean\" },\n \"attach-endpoint\": { kind: \"value\" },\n \"attach-header\": { kind: \"value\", multiple: true },\n \"fresh-tab\": { kind: \"boolean\" },\n headless: { kind: \"boolean\" },\n \"executable-path\": { kind: \"value\" },\n arg: { kind: \"value\", multiple: true },\n \"timeout-ms\": { kind: \"value\" },\n context: { kind: \"value\" },\n \"source-user-data-dir\": { kind: \"value\" },\n \"source-profile-directory\": { kind: \"value\" },\n element: { kind: \"value\" },\n persist: { kind: \"optional-value\" },\n button: { kind: \"value\" },\n count: { kind: \"value\" },\n modifiers: { kind: \"value\" },\n \"press-enter\": { kind: \"boolean\" },\n \"capture-network\": { kind: \"value\" },\n capture: { kind: \"value\" },\n hostname: { kind: \"value\" },\n path: { kind: \"value\" },\n method: { kind: \"value\" },\n status: { kind: \"value\" },\n type: { kind: \"value\" },\n before: { kind: \"value\" },\n after: { kind: \"value\" },\n limit: { kind: \"value\" },\n query: { kind: \"value\", multiple: true },\n header: { kind: \"value\", multiple: true },\n body: { kind: \"value\" },\n \"body-text\": { kind: \"value\" },\n variables: { kind: \"value\" },\n dx: { kind: \"value\" },\n dy: { kind: \"value\" },\n steps: { kind: \"value\" },\n format: { kind: \"value\" },\n transport: { kind: \"value\" },\n cookies: { kind: \"optional-value\" },\n \"follow-redirects\": { kind: \"boolean\" },\n probe: { kind: \"boolean\" },\n \"api-key\": { kind: \"value\" },\n \"site-key\": { kind: \"value\" },\n \"page-url\": { kind: \"value\" },\n timeout: { kind: \"value\" },\n \"url-filter\": { kind: \"value\" },\n inline: { kind: \"boolean\" },\n external: { kind: \"boolean\" },\n dynamic: { kind: \"boolean\" },\n workers: { kind: \"boolean\" },\n fidelity: { kind: \"value\" },\n clock: { kind: \"value\" },\n globals: { kind: \"value\" },\n \"ajax-routes\": { kind: \"value\" },\n key: { kind: \"value\" },\n duration: { kind: \"value\" },\n script: { kind: \"value\" },\n \"include-storage\": { kind: \"boolean\" },\n \"include-session-storage\": { kind: \"boolean\" },\n \"include-indexed-db\": { kind: \"boolean\" },\n \"global-names\": { kind: \"value\" },\n \"case-id\": { kind: \"value\" },\n notes: { kind: \"value\" },\n tags: { kind: \"value\" },\n} as const satisfies Record<\n string,\n { readonly kind: \"boolean\" | \"value\" | \"optional-value\"; readonly multiple?: true }\n>;\n\nexport function parseCommandLine(argv: readonly string[]): ParsedCommandLine {\n const leadingTokens: string[] = [];\n let index = 0;\n while (index < argv.length && !argv[index]!.startsWith(\"--\")) {\n leadingTokens.push(argv[index]!);\n index += 1;\n }\n\n const commandLength = resolveCommandLength(leadingTokens);\n const command = leadingTokens.slice(0, commandLength);\n const rest: string[] = leadingTokens.slice(commandLength);\n const rawOptions = new Map<string, string[]>();\n\n while (index < argv.length) {\n const token = argv[index]!;\n if (token === \"--\") {\n rest.push(...argv.slice(index + 1));\n break;\n }\n if (!token.startsWith(\"--\")) {\n rest.push(token);\n index += 1;\n continue;\n }\n\n const separator = token.indexOf(\"=\");\n const key = token.slice(2, separator === -1 ? undefined : separator);\n const spec = CLI_OPTION_SPECS[key as keyof typeof CLI_OPTION_SPECS];\n if (spec === undefined) {\n throw new Error(`Unknown option: --${key}.`);\n }\n\n if (separator !== -1) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), token.slice(separator + 1)]);\n index += 1;\n continue;\n }\n\n const next = argv[index + 1];\n if (spec.kind === \"boolean\") {\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n continue;\n }\n\n if (spec.kind === \"optional-value\") {\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n continue;\n }\n\n if (next === undefined || next.startsWith(\"--\")) {\n throw new Error(\n `Option \"--${key}\" requires a value.${next?.startsWith(\"--\") === true ? ` Use \"--${key}=<value>\" when the value begins with \"--\".` : ``}`,\n );\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n }\n\n const workspace = readSingle(rawOptions, \"workspace\") ?? process.env.OPENSTEER_WORKSPACE;\n const requestedEngineName = readSingle(rawOptions, \"engine\");\n const attachEndpoint = readSingle(rawOptions, \"attach-endpoint\");\n const attachHeaders = parseKeyValueList(rawOptions.get(\"attach-header\"));\n const freshTab = readOptionalBoolean(rawOptions, \"fresh-tab\");\n const headless = readOptionalBoolean(rawOptions, \"headless\");\n const executablePath = readSingle(rawOptions, \"executable-path\");\n const launchArgs = rawOptions.get(\"arg\");\n const timeoutMs = readOptionalNumber(rawOptions, \"timeout-ms\");\n const browser =\n attachEndpoint === undefined\n ? undefined\n : ({\n mode: \"attach\",\n endpoint: attachEndpoint,\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions);\n\n const launch = {\n ...(headless === undefined ? {} : { headless }),\n ...(executablePath === undefined ? {} : { executablePath }),\n ...(launchArgs === undefined ? {} : { args: launchArgs }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n };\n\n const providerValue = shouldParseRuntimeProvider(command)\n ? readSingle(rawOptions, \"provider\")\n : undefined;\n const provider =\n providerValue === undefined\n ? undefined\n : normalizeOpensteerProviderMode(providerValue, \"--provider\");\n\n const url = readSingle(rawOptions, \"url\");\n const output = readSingle(rawOptions, \"output\");\n const cloudBaseUrl = readSingle(rawOptions, \"cloud-base-url\");\n const cloudApiKey = readSingle(rawOptions, \"cloud-api-key\");\n const cloudAppBaseUrl = readSingle(rawOptions, \"cloud-app-base-url\");\n const cloudProfileId = readSingle(rawOptions, \"cloud-profile-id\");\n const cloudProfileReuseIfActive = readOptionalBoolean(\n rawOptions,\n \"cloud-profile-reuse-if-active\",\n );\n const json = readOptionalBoolean(rawOptions, \"json\");\n const agents = rawOptions.get(\"agent\");\n const skills = rawOptions.get(\"skill\");\n const autoLocalView = readOptionalBoolean(rawOptions, \"auto\");\n const noAutoLocalView = readOptionalBoolean(rawOptions, \"no-auto\");\n if (autoLocalView === true && noAutoLocalView === true) {\n throw new Error('Options \"--auto\" and \"--no-auto\" cannot be combined.');\n }\n if (command[0] !== \"view\" && (autoLocalView !== undefined || noAutoLocalView !== undefined)) {\n throw new Error('Options \"--auto\" and \"--no-auto\" are only supported with \"view\".');\n }\n const global = readOptionalBoolean(rawOptions, \"global\");\n const yes = readOptionalBoolean(rawOptions, \"yes\");\n const copy = readOptionalBoolean(rawOptions, \"copy\");\n const all = readOptionalBoolean(rawOptions, \"all\");\n const list = readOptionalBoolean(rawOptions, \"list\");\n const context = readJsonObject(rawOptions, \"context\");\n const sourceUserDataDir = readSingle(rawOptions, \"source-user-data-dir\");\n const sourceProfileDirectory = readSingle(rawOptions, \"source-profile-directory\");\n\n const options: ParsedCliOptions = {\n ...(workspace === undefined ? {} : { workspace }),\n ...(url === undefined ? {} : { url }),\n ...(output === undefined ? {} : { output }),\n ...(requestedEngineName === undefined ? {} : { requestedEngineName }),\n ...(provider === undefined ? {} : { provider }),\n ...(cloudBaseUrl === undefined ? {} : { cloudBaseUrl }),\n ...(cloudApiKey === undefined ? {} : { cloudApiKey }),\n ...(cloudAppBaseUrl === undefined ? {} : { cloudAppBaseUrl }),\n ...(cloudProfileId === undefined ? {} : { cloudProfileId }),\n ...(cloudProfileReuseIfActive === undefined ? {} : { cloudProfileReuseIfActive }),\n ...(json === undefined ? {} : { json }),\n ...(agents === undefined ? {} : { agents }),\n ...(skills === undefined ? {} : { skills }),\n ...(autoLocalView === true\n ? { localViewMode: \"auto\" as const }\n : noAutoLocalView === true\n ? { localViewMode: \"manual\" as const }\n : {}),\n ...(global === undefined ? {} : { global }),\n ...(yes === undefined ? {} : { yes }),\n ...(copy === undefined ? {} : { copy }),\n ...(all === undefined ? {} : { all }),\n ...(list === undefined ? {} : { list }),\n ...(browser === undefined ? {} : { browser }),\n ...(Object.keys(launch).length === 0 ? {} : { launch }),\n ...(context === undefined ? {} : { context }),\n ...(attachEndpoint === undefined ? {} : { attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { attachHeaders }),\n ...(sourceUserDataDir === undefined ? {} : { sourceUserDataDir }),\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n };\n\n return {\n command,\n rest,\n rawOptions,\n options,\n };\n}\n\nfunction shouldParseRuntimeProvider(command: readonly string[]): boolean {\n return !(command[0] === \"captcha\" && command[1] === \"solve\");\n}\n\nexport function parseKeyValueList(\n values: readonly string[] | undefined,\n): Readonly<Record<string, string>> | undefined {\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n values.map((entry) => {\n const separator = entry.indexOf(\"=\");\n if (separator <= 0) {\n throw new Error(`Expected NAME=VALUE, received \"${entry}\".`);\n }\n return [entry.slice(0, separator), entry.slice(separator + 1)];\n }),\n );\n}\n\nexport function parseCommaSeparatedList(value: string | undefined): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n const values = value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n return values.length === 0 ? undefined : values;\n}\n\nexport function readSingle(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): string | undefined {\n const values = options.get(name);\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[values.length - 1];\n}\n\nexport function readOptionalBoolean(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): boolean | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n throw new Error(`Option \"--${name}\" must be true or false.`);\n}\n\nexport function readOptionalNumber(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): number | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Option \"--${name}\" must be a number.`);\n }\n return parsed;\n}\n\nexport function readJsonValue(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): unknown {\n const value = readSingle(options, name);\n return value === undefined ? undefined : JSON.parse(value);\n}\n\nexport function readJsonObject(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): Record<string, unknown> | undefined {\n const parsed = readJsonValue(options, name);\n if (parsed === undefined) {\n return undefined;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`Option \"--${name}\" must be a JSON object.`);\n }\n return parsed as Record<string, unknown>;\n}\n\nexport function readJsonArray(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): readonly unknown[] | undefined {\n const parsed = readJsonValue(options, name);\n if (parsed === undefined) {\n return undefined;\n }\n if (!Array.isArray(parsed)) {\n throw new Error(`Option \"--${name}\" must be a JSON array.`);\n }\n return parsed;\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\nimport type { OpensteerSemanticRuntime } from \"@opensteer/runtime-core\";\n\nimport {\n parseCommaSeparatedList,\n parseKeyValueList,\n readJsonArray,\n readJsonObject,\n readJsonValue,\n readOptionalBoolean,\n readOptionalNumber,\n readSingle,\n type ParsedCommandLine,\n} from \"./parse.js\";\n\nconst CLICK_BUTTONS = new Set([\"left\", \"middle\", \"right\"]);\nconst FETCH_TRANSPORTS = new Set([\"auto\", \"direct\", \"matched-tls\", \"context\", \"page\"]);\nconst CAPTCHA_PROVIDERS = new Set([\"2captcha\", \"capsolver\"]);\nconst CAPTCHA_TYPES = new Set([\"recaptcha-v2\", \"hcaptcha\", \"turnstile\"]);\nconst SANDBOX_FIDELITIES = new Set([\"minimal\", \"standard\", \"full\"]);\nconst SANDBOX_CLOCK_MODES = new Set([\"real\", \"manual\"]);\nconst SCREENSHOT_FORMATS = new Set([\"png\", \"jpeg\", \"webp\"]);\nconst KEY_MODIFIERS = new Set([\"Shift\", \"Control\", \"Alt\", \"Meta\"]);\nconst SCROLL_DIRECTIONS = new Set([\"up\", \"down\", \"left\", \"right\"]);\n\nexport async function buildOperationInput(\n operation: OpensteerSemanticOperationName,\n parsed: ParsedCommandLine,\n runtime: OpensteerSemanticRuntime,\n): Promise<Record<string, unknown>> {\n switch (operation) {\n case \"session.open\": {\n const url = parsed.rest[0];\n if (url === undefined) {\n throw new Error(\"open requires a URL.\");\n }\n return {\n url,\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n };\n }\n case \"page.list\":\n return {};\n case \"page.new\":\n return parsed.rest[0] === undefined ? {} : { url: parsed.rest[0] };\n case \"page.activate\": {\n const index = readRequiredPositiveInteger(parsed.rest[0], \"tab requires an index.\");\n return {\n pageRef: await resolvePageRefByIndex(runtime, index),\n };\n }\n case \"page.close\": {\n if (parsed.rest[0] === undefined) {\n return {};\n }\n return {\n pageRef: await resolvePageRefByIndex(\n runtime,\n readRequiredPositiveInteger(parsed.rest[0], \"tab close requires an index.\"),\n ),\n };\n }\n case \"page.goto\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"goto requires a URL.\");\n }\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n url: parsed.rest[0],\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"page.snapshot\":\n return parsed.rest[0] === undefined ? {} : { mode: parsed.rest[0] };\n case \"page.evaluate\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"evaluate requires a script.\");\n }\n return {\n script: joinRest(parsed.rest, 0),\n };\n case \"page.add-init-script\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"init-script requires a script.\");\n }\n return {\n script: joinRest(parsed.rest, 0),\n };\n case \"dom.click\": {\n const button = readSingle(parsed.rawOptions, \"button\");\n return {\n ...buildElementTargetInput(parsed, \"click\"),\n ...(button === undefined ? {} : { button: readClickButton(button) }),\n };\n }\n case \"dom.hover\":\n return buildElementTargetInput(parsed, \"hover\");\n case \"dom.input\": {\n if (parsed.rest[1] === undefined) {\n throw new Error(\"input requires an element number and text.\");\n }\n const pressEnter = readOptionalBoolean(parsed.rawOptions, \"press-enter\");\n return {\n ...buildElementTargetInput(parsed, \"input\"),\n text: joinRest(parsed.rest, 1),\n ...(pressEnter === undefined ? {} : { pressEnter }),\n };\n }\n case \"dom.scroll\": {\n const direction = readSingleDirection(parsed.rest[0]);\n const amount = readRequiredPositiveInteger(parsed.rest[1], \"scroll requires an amount.\");\n const element = readOptionalNumber(parsed.rawOptions, \"element\");\n const persist = readPersistKey(parsed, \"scroll\");\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n target:\n element === undefined\n ? {\n kind: \"selector\",\n selector: \"html\",\n }\n : {\n kind: \"element\",\n element,\n },\n direction,\n amount,\n ...(persist === undefined ? {} : { persist }),\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"dom.extract\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"extract requires a schema.\");\n }\n const persist = readExtractPersistKey(parsed);\n return {\n schema: parseRequiredJsonObjectArgument(joinRest(parsed.rest, 0), \"extract schema\"),\n ...(persist === undefined ? {} : { persist }),\n };\n }\n case \"network.query\": {\n const capture = readSingle(parsed.rawOptions, \"capture\");\n const url = readSingle(parsed.rawOptions, \"url\");\n const hostname = readSingle(parsed.rawOptions, \"hostname\");\n const path = readSingle(parsed.rawOptions, \"path\");\n const method = readSingle(parsed.rawOptions, \"method\");\n const status = readOptionalNumber(parsed.rawOptions, \"status\");\n const resourceType = readSingle(parsed.rawOptions, \"type\");\n const json = readOptionalBoolean(parsed.rawOptions, \"json\");\n const before = readSingle(parsed.rawOptions, \"before\");\n const after = readSingle(parsed.rawOptions, \"after\");\n const limit = readOptionalNumber(parsed.rawOptions, \"limit\");\n return {\n ...(capture === undefined ? {} : { capture }),\n ...(url === undefined ? {} : { url }),\n ...(hostname === undefined ? {} : { hostname }),\n ...(path === undefined ? {} : { path }),\n ...(method === undefined ? {} : { method }),\n ...(status === undefined ? {} : { status }),\n ...(resourceType === undefined ? {} : { resourceType }),\n ...(json === true ? { json: true } : {}),\n ...(before === undefined ? {} : { before }),\n ...(after === undefined ? {} : { after }),\n ...(limit === undefined ? {} : { limit }),\n };\n }\n case \"network.detail\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"network detail requires a record id.\");\n }\n const probeFlag = readOptionalBoolean(parsed.rawOptions, \"probe\");\n return {\n recordId: parsed.rest[0],\n ...(probeFlag === undefined ? {} : { probe: probeFlag }),\n };\n }\n case \"session.fetch\": {\n const url = parsed.rest[0];\n if (url === undefined) {\n throw new Error(\"fetch requires a URL.\");\n }\n const bodyJson = readJsonValue(parsed.rawOptions, \"body\");\n const bodyText = readSingle(parsed.rawOptions, \"body-text\");\n const method = readSingle(parsed.rawOptions, \"method\");\n const query = parseKeyValueList(parsed.rawOptions.get(\"query\"));\n const headers = parseKeyValueList(parsed.rawOptions.get(\"header\"));\n if (bodyJson !== undefined && bodyText !== undefined) {\n throw new Error('Use either \"--body\" or \"--body-text\", not both.');\n }\n const transport = readSingle(parsed.rawOptions, \"transport\");\n const cookies = readOptionalBoolean(parsed.rawOptions, \"cookies\");\n const followRedirects = readOptionalBoolean(parsed.rawOptions, \"follow-redirects\");\n return {\n url,\n ...(method === undefined ? {} : { method }),\n ...(query === undefined ? {} : { query }),\n ...(headers === undefined ? {} : { headers }),\n ...(bodyJson === undefined ? {} : { body: { json: bodyJson } }),\n ...(bodyText === undefined ? {} : { body: { text: bodyText } }),\n ...(transport === undefined ? {} : { transport: readFetchTransport(transport) }),\n ...(cookies === undefined ? {} : { cookies }),\n ...(followRedirects === undefined ? {} : { followRedirects }),\n };\n }\n case \"session.cookies\":\n case \"session.storage\":\n case \"session.state\":\n return parsed.rest[0] === undefined ? {} : { domain: parsed.rest[0] };\n case \"computer.execute\":\n return buildComputerExecuteInput(parsed);\n case \"captcha.solve\": {\n const provider = readSingle(parsed.rawOptions, \"provider\");\n const apiKey = readSingle(parsed.rawOptions, \"api-key\");\n const timeoutMs =\n readOptionalNumber(parsed.rawOptions, \"timeout\") ??\n readOptionalNumber(parsed.rawOptions, \"timeout-ms\");\n const type = readSingle(parsed.rawOptions, \"type\");\n const siteKey = readSingle(parsed.rawOptions, \"site-key\");\n const pageUrl = readSingle(parsed.rawOptions, \"page-url\");\n if (provider === undefined || apiKey === undefined) {\n throw new Error('captcha solve requires \"--provider\" and \"--api-key\".');\n }\n return {\n provider: readCaptchaProvider(provider),\n apiKey,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(type === undefined ? {} : { type: readCaptchaType(type) }),\n ...(siteKey === undefined ? {} : { siteKey }),\n ...(pageUrl === undefined ? {} : { pageUrl }),\n };\n }\n case \"scripts.capture\": {\n const urlFilter = readSingle(parsed.rawOptions, \"url-filter\");\n const persist = readOptionalBoolean(parsed.rawOptions, \"persist\");\n const includeInline = readOptionalBoolean(parsed.rawOptions, \"inline\");\n const includeExternal = readOptionalBoolean(parsed.rawOptions, \"external\");\n const includeDynamic = readOptionalBoolean(parsed.rawOptions, \"dynamic\");\n const includeWorkers = readOptionalBoolean(parsed.rawOptions, \"workers\");\n return {\n ...(urlFilter === undefined ? {} : { urlFilter }),\n ...(persist === undefined ? {} : { persist }),\n ...(includeInline === undefined ? {} : { includeInline }),\n ...(includeExternal === undefined ? {} : { includeExternal }),\n ...(includeDynamic === undefined ? {} : { includeDynamic }),\n ...(includeWorkers === undefined ? {} : { includeWorkers }),\n };\n }\n case \"scripts.beautify\":\n case \"scripts.deobfuscate\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(`${parsed.command.join(\" \")} requires an artifact id.`);\n }\n const persist = readOptionalBoolean(parsed.rawOptions, \"persist\");\n return {\n artifactId: parsed.rest[0],\n ...(persist === undefined ? {} : { persist }),\n };\n }\n case \"scripts.sandbox\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"scripts sandbox requires an artifact id.\");\n }\n {\n const fidelity = readSingle(parsed.rawOptions, \"fidelity\");\n const timeoutMs =\n readOptionalNumber(parsed.rawOptions, \"timeout\") ??\n readOptionalNumber(parsed.rawOptions, \"timeout-ms\");\n const clock = readSingle(parsed.rawOptions, \"clock\");\n const cookies = readJsonObject(parsed.rawOptions, \"cookies\");\n const globals = readJsonObject(parsed.rawOptions, \"globals\");\n const ajaxRoutes = readJsonArray(parsed.rawOptions, \"ajax-routes\");\n return {\n artifactId: parsed.rest[0],\n ...(fidelity === undefined ? {} : { fidelity: readSandboxFidelity(fidelity) }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(clock === undefined ? {} : { clockMode: readSandboxClockMode(clock) }),\n ...(cookies === undefined ? {} : { cookies }),\n ...(globals === undefined ? {} : { globals }),\n ...(ajaxRoutes === undefined ? {} : { ajaxRoutes }),\n };\n }\n case \"interaction.capture\": {\n const key = readSingle(parsed.rawOptions, \"key\");\n const durationMs = readOptionalNumber(parsed.rawOptions, \"duration\");\n const script = readSingle(parsed.rawOptions, \"script\");\n const includeStorage = readOptionalBoolean(parsed.rawOptions, \"include-storage\");\n const includeSessionStorage = readOptionalBoolean(\n parsed.rawOptions,\n \"include-session-storage\",\n );\n const includeIndexedDb = readOptionalBoolean(parsed.rawOptions, \"include-indexed-db\");\n const globalNames = parseCommaSeparatedList(readSingle(parsed.rawOptions, \"global-names\"));\n const caseId = readSingle(parsed.rawOptions, \"case-id\");\n const notes = readSingle(parsed.rawOptions, \"notes\");\n const tags = parseCommaSeparatedList(readSingle(parsed.rawOptions, \"tags\"));\n return {\n ...(key === undefined ? {} : { key }),\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(script === undefined ? {} : { script }),\n ...(includeStorage === undefined ? {} : { includeStorage }),\n ...(includeSessionStorage === undefined ? {} : { includeSessionStorage }),\n ...(includeIndexedDb === undefined ? {} : { includeIndexedDb }),\n ...(globalNames === undefined ? {} : { globalNames }),\n ...(caseId === undefined ? {} : { caseId }),\n ...(notes === undefined ? {} : { notes }),\n ...(tags === undefined ? {} : { tags }),\n };\n }\n case \"interaction.get\":\n case \"interaction.replay\":\n if (parsed.rest[0] === undefined) {\n throw new Error(`${parsed.command.join(\" \")} requires a trace id.`);\n }\n return {\n traceId: parsed.rest[0],\n };\n case \"interaction.diff\":\n if (parsed.rest[0] === undefined || parsed.rest[1] === undefined) {\n throw new Error(\"interaction diff requires two trace ids.\");\n }\n return {\n leftTraceId: parsed.rest[0],\n rightTraceId: parsed.rest[1],\n };\n case \"artifact.read\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"artifact read requires an artifact id.\");\n }\n return {\n artifactId: parsed.rest[0],\n };\n case \"session.close\":\n return {};\n default:\n throw new Error(\n `${operation} does not have a direct CLI input shape. Use a supported command or the SDK.`,\n );\n }\n}\n\nfunction buildElementTargetInput(\n parsed: ParsedCommandLine,\n verb: \"click\" | \"hover\" | \"input\",\n): Record<string, unknown> {\n const element = readRequiredPositiveInteger(\n parsed.rest[0],\n `${verb} requires an element number.`,\n );\n const persist = readPersistKey(parsed, verb);\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n target: {\n kind: \"element\",\n element,\n },\n ...(persist === undefined ? {} : { persist }),\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n}\n\nfunction buildComputerExecuteInput(parsed: ParsedCommandLine): Record<string, unknown> {\n const subcommand = parsed.command[1];\n const screenshotFormat = readSingle(parsed.rawOptions, \"format\");\n const screenshot =\n screenshotFormat === undefined\n ? undefined\n : {\n format: readScreenshotFormat(screenshotFormat),\n };\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n\n switch (subcommand) {\n case \"click\": {\n const button = readSingle(parsed.rawOptions, \"button\");\n const clickCount = readOptionalNumber(parsed.rawOptions, \"count\");\n const modifiers = readKeyModifiers(readSingle(parsed.rawOptions, \"modifiers\"));\n return {\n action: {\n type: \"click\",\n x: readRequiredNumber(parsed.rest[0], \"computer click requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer click requires y.\"),\n ...(button === undefined ? {} : { button: readClickButton(button) }),\n ...(clickCount === undefined ? {} : { clickCount }),\n ...(modifiers === undefined ? {} : { modifiers }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"type\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"computer type requires text.\");\n }\n return {\n action: {\n type: \"type\",\n text: joinRest(parsed.rest, 0),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n case \"key\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"computer key requires a key.\");\n }\n const modifiers = readKeyModifiers(readSingle(parsed.rawOptions, \"modifiers\"));\n return {\n action: {\n type: \"key\",\n key: parsed.rest[0],\n ...(modifiers === undefined ? {} : { modifiers }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"scroll\": {\n const dx = readOptionalNumber(parsed.rawOptions, \"dx\");\n const dy = readOptionalNumber(parsed.rawOptions, \"dy\");\n if (dx === undefined || dy === undefined) {\n throw new Error('computer scroll requires \"--dx\" and \"--dy\".');\n }\n return {\n action: {\n type: \"scroll\",\n x: readRequiredNumber(parsed.rest[0], \"computer scroll requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer scroll requires y.\"),\n deltaX: dx,\n deltaY: dy,\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"move\":\n return {\n action: {\n type: \"move\",\n x: readRequiredNumber(parsed.rest[0], \"computer move requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer move requires y.\"),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n case \"drag\": {\n const steps = readOptionalNumber(parsed.rawOptions, \"steps\");\n return {\n action: {\n type: \"drag\",\n start: {\n x: readRequiredNumber(parsed.rest[0], \"computer drag requires start x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer drag requires start y.\"),\n },\n end: {\n x: readRequiredNumber(parsed.rest[2], \"computer drag requires end x.\"),\n y: readRequiredNumber(parsed.rest[3], \"computer drag requires end y.\"),\n },\n ...(steps === undefined ? {} : { steps }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"screenshot\":\n return {\n action: {\n type: \"screenshot\",\n },\n ...(screenshot === undefined ? {} : { screenshot }),\n };\n case \"wait\":\n return {\n action: {\n type: \"wait\",\n durationMs: readRequiredPositiveInteger(parsed.rest[0], \"computer wait requires ms.\"),\n },\n };\n default:\n throw new Error(`Unknown computer command: ${parsed.command.join(\" \")}`);\n }\n}\n\nasync function resolvePageRefByIndex(\n runtime: OpensteerSemanticRuntime,\n index: number,\n): Promise<string> {\n const pages = (await runtime.listPages({})).pages;\n const page = pages[index - 1];\n if (page === undefined) {\n throw new Error(`tab ${String(index)} does not exist.`);\n }\n return page.pageRef;\n}\n\nfunction readRequiredPositiveInteger(value: string | undefined, message: string): number {\n const parsed = readRequiredNumber(value, message);\n if (!Number.isInteger(parsed) || parsed < 1) {\n throw new Error(message);\n }\n return parsed;\n}\n\nfunction readRequiredNumber(value: string | undefined, message: string): number {\n if (value === undefined) {\n throw new Error(message);\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(message);\n }\n return parsed;\n}\n\nfunction readSingleDirection(value: string | undefined): \"up\" | \"down\" | \"left\" | \"right\" {\n if (value === undefined || !SCROLL_DIRECTIONS.has(value)) {\n throw new Error(\"scroll requires a direction: up, down, left, or right.\");\n }\n return value as \"up\" | \"down\" | \"left\" | \"right\";\n}\n\nfunction readClickButton(value: string | undefined): \"left\" | \"middle\" | \"right\" {\n if (value === undefined || !CLICK_BUTTONS.has(value)) {\n throw new Error('Expected \"--button\" to be one of: left, middle, right.');\n }\n return value as \"left\" | \"middle\" | \"right\";\n}\n\nfunction readFetchTransport(\n value: string | undefined,\n): \"auto\" | \"direct\" | \"matched-tls\" | \"context\" | \"page\" {\n if (value === undefined || !FETCH_TRANSPORTS.has(value)) {\n throw new Error(\n 'Expected \"--transport\" to be one of: auto, direct, matched-tls, context, page.',\n );\n }\n return value as \"auto\" | \"direct\" | \"matched-tls\" | \"context\" | \"page\";\n}\n\nfunction readCaptchaProvider(value: string | undefined): \"2captcha\" | \"capsolver\" {\n if (value === undefined || !CAPTCHA_PROVIDERS.has(value)) {\n throw new Error('Expected \"--provider\" to be one of: 2captcha, capsolver.');\n }\n return value as \"2captcha\" | \"capsolver\";\n}\n\nfunction readCaptchaType(value: string | undefined): \"recaptcha-v2\" | \"hcaptcha\" | \"turnstile\" {\n if (value === undefined || !CAPTCHA_TYPES.has(value)) {\n throw new Error('Expected \"--type\" to be one of: recaptcha-v2, hcaptcha, turnstile.');\n }\n return value as \"recaptcha-v2\" | \"hcaptcha\" | \"turnstile\";\n}\n\nfunction readSandboxFidelity(value: string | undefined): \"minimal\" | \"standard\" | \"full\" {\n if (value === undefined || !SANDBOX_FIDELITIES.has(value)) {\n throw new Error('Expected \"--fidelity\" to be one of: minimal, standard, full.');\n }\n return value as \"minimal\" | \"standard\" | \"full\";\n}\n\nfunction readSandboxClockMode(value: string | undefined): \"real\" | \"manual\" {\n if (value === undefined || !SANDBOX_CLOCK_MODES.has(value)) {\n throw new Error('Expected \"--clock\" to be one of: real, manual.');\n }\n return value as \"real\" | \"manual\";\n}\n\nfunction readScreenshotFormat(value: string | undefined): \"png\" | \"jpeg\" | \"webp\" {\n if (value === undefined || !SCREENSHOT_FORMATS.has(value)) {\n throw new Error('Expected \"--format\" to be one of: png, jpeg, webp.');\n }\n return value as \"png\" | \"jpeg\" | \"webp\";\n}\n\nfunction readKeyModifiers(\n value: string | undefined,\n): readonly (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[] | undefined {\n const modifiers = parseCommaSeparatedList(value);\n if (modifiers === undefined) {\n return undefined;\n }\n for (const modifier of modifiers) {\n if (!KEY_MODIFIERS.has(modifier)) {\n throw new Error('Expected \"--modifiers\" to contain only: Shift, Control, Alt, Meta.');\n }\n }\n return [...new Set(modifiers)] as readonly (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[];\n}\n\nfunction readPersistKey(\n parsed: ParsedCommandLine,\n verb: \"click\" | \"hover\" | \"input\" | \"scroll\",\n): string | undefined {\n const value = readSingle(parsed.rawOptions, \"persist\");\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\" || value === \"false\") {\n throw new Error(`${verb} requires \"--persist <key>\" when using --persist.`);\n }\n if (verb === \"scroll\" && readOptionalNumber(parsed.rawOptions, \"element\") === undefined) {\n throw new Error('scroll requires \"--element <n>\" when using \"--persist <key>\".');\n }\n return value;\n}\n\nfunction readExtractPersistKey(parsed: ParsedCommandLine): string | undefined {\n const value = readSingle(parsed.rawOptions, \"persist\");\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\" || value === \"false\") {\n throw new Error('extract requires \"--persist <key>\" when using --persist.');\n }\n return value;\n}\n\nfunction parseRequiredJsonObjectArgument(value: string, label: string): Record<string, unknown> {\n const parsed = JSON.parse(value);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction joinRest(rest: readonly string[], startIndex: number): string {\n return rest.slice(startIndex).join(\" \");\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nexport function renderOperationOutput(\n operation: OpensteerSemanticOperationName,\n result: unknown,\n input?: Record<string, unknown>,\n): string {\n switch (operation) {\n case \"session.open\":\n case \"page.goto\":\n return renderJson(formatNavigationOutput(result));\n case \"page.snapshot\":\n return formatSnapshotOutput(result);\n case \"dom.click\":\n case \"dom.hover\":\n case \"dom.input\":\n case \"dom.scroll\":\n return renderJson(formatActionOutput(result, input));\n case \"dom.extract\":\n return renderJson(formatExtractOutput(result));\n case \"page.list\":\n case \"page.new\":\n case \"page.activate\":\n case \"page.close\":\n return formatTabOutput(result);\n case \"network.query\":\n return formatNetworkQueryOutput(result, input);\n case \"network.detail\":\n return formatNetworkDetailOutput(result);\n case \"session.fetch\":\n return renderJson(formatTransportOutput(result, operation));\n case \"session.state\":\n return formatStateOutput(result);\n case \"computer.execute\":\n return renderJson(formatComputerOutput(result));\n case \"scripts.capture\":\n return formatScriptsCaptureOutput(result);\n case \"scripts.beautify\":\n return formatScriptTransformOutput(result, \"scripts.beautify\");\n case \"scripts.deobfuscate\":\n return formatScriptTransformOutput(result, \"scripts.deobfuscate\");\n case \"scripts.sandbox\":\n return renderJson(formatScriptSandboxOutput(result));\n case \"captcha.solve\":\n return renderJson(formatCaptchaSolveOutput(result));\n case \"interaction.capture\":\n case \"interaction.get\":\n return renderJson(formatInteractionTraceOutput(result));\n case \"interaction.diff\":\n return renderJson(formatInteractionDiffOutput(result));\n case \"interaction.replay\":\n return renderJson(formatInteractionReplayOutput(result));\n default:\n return renderJson(result);\n }\n}\n\nfunction formatNavigationOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readStringField(result, \"url\") === undefined\n ? {}\n : { url: readStringField(result, \"url\") }),\n ...(readStringField(result, \"title\") === undefined\n ? {}\n : { title: readStringField(result, \"title\") }),\n };\n}\n\nfunction formatSnapshotOutput(result: unknown): string {\n if (\n result !== null &&\n typeof result === \"object\" &&\n typeof (result as { readonly html?: unknown }).html === \"string\"\n ) {\n return `${(result as { readonly html: string }).html}\\n`;\n }\n return renderJson(result);\n}\n\nfunction formatActionOutput(\n result: unknown,\n input: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n const target = readObjectField(result, \"target\");\n const output: Record<string, unknown> = {\n ...(readStringField(target, \"tagName\") === undefined\n ? {}\n : { tagName: readStringField(target, \"tagName\") }),\n ...(readStringField(target, \"pathHint\") === undefined\n ? {}\n : { pathHint: readStringField(target, \"pathHint\") }),\n };\n\n const point = readObjectField(result, \"point\");\n if (point !== undefined) {\n output.point = {\n ...(readNumberField(point, \"x\") === undefined ? {} : { x: readNumberField(point, \"x\") }),\n ...(readNumberField(point, \"y\") === undefined ? {} : { y: readNumberField(point, \"y\") }),\n };\n }\n\n const persist = readStringField(target, \"persist\");\n if (persist !== undefined) {\n output.persist = persist;\n }\n\n const text = readStringField(input, \"text\");\n if (text !== undefined) {\n output.text = text;\n }\n\n const direction = readStringField(input, \"direction\");\n if (direction !== undefined) {\n output.direction = direction;\n }\n\n const amount = readNumberField(input, \"amount\");\n if (amount !== undefined) {\n output.amount = amount;\n }\n\n return output;\n}\n\nfunction formatExtractOutput(result: unknown): unknown {\n const data = readUnknownField(result, \"data\");\n return data === undefined ? result : data;\n}\n\nfunction formatTabOutput(result: unknown): string {\n const pages = readArrayField(result, \"pages\");\n const activePageRef = readStringField(result, \"activePageRef\");\n const lines = [`[tabs] ${pages.length} tab${pages.length === 1 ? \"\" : \"s\"}`];\n pages.forEach((page, index) => {\n const marker = readStringField(page, \"pageRef\") === activePageRef ? \"*\" : \" \";\n lines.push(\n `${marker} ${String(index + 1).padStart(2, \" \")} ${truncateInline(readStringField(page, \"title\") ?? \"(untitled)\", 48)} ${readStringField(page, \"url\") ?? \"\"}`,\n );\n });\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatNetworkQueryOutput(\n result: unknown,\n input: Record<string, unknown> | undefined,\n): string {\n const records = readArrayField(result, \"records\");\n const capture = summarizeCapture(records);\n const jsonOnly = readBooleanField(input, \"json\") === true;\n const lines = [\n `[network.query] ${records.length} record${records.length === 1 ? \"\" : \"s\"}${capture === undefined ? \"\" : ` from capture \"${capture}\"`}${jsonOnly ? \" (JSON/GraphQL only)\" : \"\"}`,\n ];\n for (const record of records) {\n const graphql = readObjectField(record, \"graphql\");\n const operationName = readStringField(graphql, \"operationName\");\n lines.push(\n `${readStringField(record, \"recordId\") ?? \"rec:unknown\"} ${readStringField(record, \"method\") ?? \"GET\"} ${readStatus(record)} ${readStringField(record, \"resourceType\") ?? \"unknown\"} ${readStringField(record, \"url\") ?? \"\"}${operationName === undefined ? \"\" : ` [query: ${operationName}]`}`,\n );\n const request = readObjectField(record, \"request\");\n const response = readObjectField(record, \"response\");\n const websocket = readObjectField(record, \"websocket\");\n if (request !== undefined) {\n lines.push(` request: ${formatBodySummary(request)}`);\n }\n if (response !== undefined) {\n lines.push(` response: ${formatBodySummary(response)}`);\n }\n const subprotocol = readStringField(websocket, \"subprotocol\");\n if (subprotocol !== undefined) {\n lines.push(` subprotocol: ${subprotocol}`);\n }\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatNetworkDetailOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n\n const lines = [`[network.detail] ${readStringField(result, \"recordId\") ?? \"unknown\"}`, \"\"];\n const summary = readObjectField(result, \"summary\");\n if (summary !== undefined) {\n lines.push(\n `${readStringField(summary, \"method\") ?? \"GET\"} ${readStatus(summary)} ${readStringField(summary, \"url\") ?? \"\"}`,\n );\n }\n\n const graphql = readObjectField(result, \"graphql\");\n if (graphql !== undefined) {\n const operationType = readStringField(graphql, \"operationType\");\n const operationName = readStringField(graphql, \"operationName\");\n lines.push(\n `${[\"GraphQL:\", operationType, operationName].filter((value) => value !== undefined).join(\" \")}`,\n );\n const variables = readUnknownField(graphql, \"variables\");\n if (variables !== undefined) {\n lines.push(\"Variables:\");\n lines.push(indentLines(stringifyValue(variables)));\n }\n }\n\n const requestHeaders = readArrayField(result, \"requestHeaders\");\n if (requestHeaders.length > 0) {\n lines.push(\"\", \"Request headers:\");\n lines.push(...requestHeaders.map((header) => formatHeaderLine(header)));\n }\n\n const responseHeaders = readArrayField(result, \"responseHeaders\");\n if (responseHeaders.length > 0) {\n lines.push(\"\", \"Response headers:\");\n lines.push(...responseHeaders.map((header) => formatHeaderLine(header)));\n }\n\n const cookiesSent = readArrayField(result, \"cookiesSent\");\n if (cookiesSent.length > 0) {\n lines.push(\"\", \"Cookies sent:\");\n lines.push(\n ...cookiesSent.map((cookie) => {\n const name = readStringField(cookie, \"name\") ?? \"cookie\";\n const value = readStringField(cookie, \"value\") ?? \"\";\n return ` ${name}: ${truncateInline(value, 80)}`;\n }),\n );\n }\n\n const requestBody = readObjectField(result, \"requestBody\");\n if (requestBody !== undefined) {\n lines.push(\"\", formatBodyPreview(\"Request body\", requestBody));\n }\n\n const responseBody = readObjectField(result, \"responseBody\");\n if (responseBody !== undefined) {\n lines.push(\"\", formatBodyPreview(\"Response body\", responseBody));\n }\n\n const redirectChain = readArrayField(result, \"redirectChain\");\n if (redirectChain.length > 0) {\n lines.push(\n \"\",\n `Redirect chain (${redirectChain.length} hop${redirectChain.length === 1 ? \"\" : \"s\"}):`,\n );\n redirectChain.forEach((hop, index) => {\n const location = readStringField(hop, \"location\");\n lines.push(\n ` ${index + 1}. ${readStringField(hop, \"method\") ?? \"GET\"} ${readStatus(hop)} ${readStringField(hop, \"url\") ?? \"\"}${location === undefined ? \"\" : ` -> Location: ${location}`}`,\n );\n });\n }\n\n const transportProbe = readObjectField(result, \"transportProbe\");\n if (transportProbe !== undefined) {\n const recommended = readStringField(transportProbe, \"recommended\");\n const probeAttempts = readArrayField(transportProbe, \"attempts\");\n lines.push(\n \"\",\n `Transport probe${recommended === undefined ? \"\" : ` (recommended: ${recommended})`}:`,\n );\n for (const attempt of probeAttempts) {\n const transport = readStringField(attempt, \"transport\") ?? \"?\";\n const ok = readBooleanField(attempt, \"ok\") === true;\n const status = readNumberField(attempt, \"status\");\n const durationMs = readNumberField(attempt, \"durationMs\");\n const error = readStringField(attempt, \"error\");\n const marker = ok ? \"ok\" : \"fail\";\n lines.push(\n ` ${transport}: ${marker}${status === undefined ? \"\" : ` ${String(status)}`}${durationMs === undefined ? \"\" : ` (${String(durationMs)}ms)`}${error === undefined ? \"\" : ` - ${error}`}`,\n );\n }\n if (recommended !== undefined) {\n const summary = readObjectField(result, \"summary\");\n const method = readStringField(summary, \"method\") ?? \"GET\";\n const url = readStringField(summary, \"url\") ?? \"\";\n lines.push(\"\", `-> SDK: await this.fetch(\"${url}\", { method: \"${method}\" })`);\n }\n }\n\n const notes = readArrayField(result, \"notes\")\n .map((entry) => (typeof entry === \"string\" ? entry : undefined))\n .filter((entry): entry is string => entry !== undefined);\n if (notes.length > 0) {\n lines.push(\"\", ...notes.map((note) => `Note: ${note}`));\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatTransportOutput(\n result: unknown,\n operation: \"session.fetch\",\n): Record<string, unknown> {\n if (result === null || typeof result !== \"object\") {\n return { result };\n }\n\n const response = readObjectField(result, \"response\");\n const attempts = readArrayField(result, \"attempts\").map((attempt) => ({\n ...(readStringField(attempt, \"transport\") === undefined\n ? {}\n : { transport: readStringField(attempt, \"transport\") }),\n ...(readNumberField(attempt, \"status\") === undefined\n ? {}\n : { status: readNumberField(attempt, \"status\") }),\n ...(readStringField(attempt, \"note\") === undefined\n ? {}\n : { note: readStringField(attempt, \"note\") }),\n ...(readStringField(attempt, \"error\") === undefined\n ? {}\n : { error: readStringField(attempt, \"error\") }),\n }));\n const contentType =\n response === undefined\n ? undefined\n : (findHeaderValue(readArrayField(response, \"headers\"), \"content-type\") ??\n readStringField(readObjectField(response, \"body\"), \"mimeType\"));\n const body = readObjectField(response, \"body\");\n const bodySize =\n body === undefined\n ? undefined\n : (readNumberField(body, \"originalByteLength\") ??\n readNumberField(body, \"capturedByteLength\"));\n const output: Record<string, unknown> = {\n ...(readStringField(result, \"transport\") === undefined\n ? {}\n : { transport: readStringField(result, \"transport\") }),\n ...(response === undefined ? {} : { status: readNumberField(response, \"status\") }),\n ...(contentType === undefined ? {} : { contentType }),\n ...(bodySize === undefined ? {} : { bodySize }),\n };\n\n const note = readStringField(result, \"note\");\n if (note !== undefined) {\n output.note = note;\n }\n\n const data = readUnknownField(result, \"data\");\n if (data !== undefined) {\n output.data = truncateDataShape(data);\n }\n\n if (attempts.length > 0) {\n output.attempts = attempts;\n }\n\n if (JSON.stringify(output).length > 4_096 && data !== undefined) {\n output.data = `... truncated, ${JSON.stringify(data).length.toLocaleString(\"en-US\")} chars total`;\n }\n\n return output;\n}\n\nfunction formatCookiesOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const cookies = readArrayField(result, \"cookies\");\n const domain = readStringField(result, \"domain\");\n const lines = [\n `[cookies] ${cookies.length} cookie${cookies.length === 1 ? \"\" : \"s\"}${domain === undefined ? \"\" : ` for ${domain}`}`,\n ];\n for (const cookie of cookies) {\n const flags = [\n readBooleanField(cookie, \"session\") === true ? \"session\" : undefined,\n readBooleanField(cookie, \"httpOnly\") === true ? \"httpOnly\" : undefined,\n readBooleanField(cookie, \"secure\") === true ? \"secure\" : undefined,\n readStringField(cookie, \"expiresAt\"),\n ].filter((value) => value !== undefined);\n lines.push(\n ` ${padRight(readStringField(cookie, \"name\") ?? \"cookie\", 20)} ${truncateInline(readStringField(cookie, \"value\") ?? \"\", 48)}${flags.length === 0 ? \"\" : ` ${flags.join(\" \")}`}`,\n );\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatStorageOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const domains = readArrayField(result, \"domains\");\n const lines: string[] = [];\n for (const domain of domains) {\n const domainName = readStringField(domain, \"domain\") ?? \"unknown\";\n const localStorage = readArrayField(domain, \"localStorage\");\n const sessionStorage = readArrayField(domain, \"sessionStorage\");\n lines.push(\n `[storage] localStorage for ${domainName} (${localStorage.length} key${localStorage.length === 1 ? \"\" : \"s\"})`,\n \"\",\n );\n lines.push(...localStorage.map((entry) => formatStorageEntry(entry)));\n lines.push(\n \"\",\n `[storage] sessionStorage for ${domainName} (${sessionStorage.length} key${sessionStorage.length === 1 ? \"\" : \"s\"})`,\n \"\",\n );\n lines.push(...sessionStorage.map((entry) => formatStorageEntry(entry)), \"\");\n }\n return `${lines.join(\"\\n\").trimEnd()}\\n`;\n}\n\nfunction formatStateOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const domains = readArrayField(result, \"domains\");\n const lines: string[] = [];\n for (const domain of domains) {\n const name = readStringField(domain, \"domain\") ?? \"unknown\";\n lines.push(`[state] ${name}`, \"\");\n const cookies = readArrayField(domain, \"cookies\");\n lines.push(`Cookies (${cookies.length}):`);\n lines.push(\n ...cookies.map(\n (cookie) =>\n ` ${padRight(readStringField(cookie, \"name\") ?? \"cookie\", 16)} ${truncateInline(readStringField(cookie, \"value\") ?? \"\", 36)}`,\n ),\n );\n const hiddenFields = readArrayField(domain, \"hiddenFields\");\n lines.push(\"\", `Hidden fields (${hiddenFields.length}):`);\n lines.push(\n ...hiddenFields.map(\n (field) =>\n ` ${readStringField(field, \"path\") ?? \"input\"} = ${JSON.stringify(readStringField(field, \"value\") ?? \"\")}`,\n ),\n );\n const localStorage = readArrayField(domain, \"localStorage\");\n lines.push(\n \"\",\n `localStorage (${localStorage.length} key${localStorage.length === 1 ? \"\" : \"s\"}):`,\n );\n lines.push(...localStorage.map((entry) => formatStorageEntry(entry)));\n const sessionStorage = readArrayField(domain, \"sessionStorage\");\n lines.push(\n \"\",\n `sessionStorage (${sessionStorage.length} key${sessionStorage.length === 1 ? \"\" : \"s\"}):`,\n );\n lines.push(...sessionStorage.map((entry) => formatStorageEntry(entry)));\n const globals = readObjectField(domain, \"globals\");\n if (globals !== undefined) {\n lines.push(\"\", \"Globals:\");\n for (const [key, value] of Object.entries(globals)) {\n lines.push(` ${key} = ${truncateInline(stringifyScalarLike(value), 80)}`);\n }\n }\n lines.push(\"\");\n }\n return `${lines.join(\"\\n\").trimEnd()}\\n`;\n}\n\nfunction formatComputerOutput(result: unknown): Record<string, unknown> {\n const action = readObjectField(result, \"action\");\n const screenshot = readObjectField(result, \"screenshot\");\n const payload = readObjectField(screenshot, \"payload\");\n const timing = readObjectField(result, \"timing\");\n return {\n ...(action === undefined ? {} : { action }),\n ...(payload === undefined\n ? {}\n : {\n screenshot: {\n ...(readStringField(payload, \"uri\") === undefined\n ? {}\n : { uri: readStringField(payload, \"uri\") }),\n ...(readStringField(screenshot, \"format\") === undefined\n ? {}\n : { format: readStringField(screenshot, \"format\") }),\n ...(readObjectField(screenshot, \"size\") === undefined\n ? {}\n : { size: readObjectField(screenshot, \"size\") }),\n },\n }),\n ...(timing === undefined ? {} : { timingMs: timing }),\n };\n}\n\nfunction formatScriptsCaptureOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const scripts = readArrayField(result, \"scripts\");\n const lines = [`[scripts.capture] ${scripts.length} script${scripts.length === 1 ? \"\" : \"s\"}`];\n for (const script of scripts) {\n const source = readStringField(script, \"source\") ?? \"unknown\";\n const url = readStringField(script, \"url\") ?? \"<inline>\";\n const artifactId = readStringField(script, \"artifactId\");\n const content = readStringField(script, \"content\") ?? \"\";\n lines.push(\n `${artifactId === undefined ? \"-\" : artifactId} ${source.padEnd(8, \" \")} ${truncateInline(url, 120)} (${content.length.toLocaleString(\"en-US\")} chars)`,\n );\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatScriptTransformOutput(\n result: unknown,\n label: \"scripts.beautify\" | \"scripts.deobfuscate\",\n): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const lines = [\n `[${label}] ${formatBytes(readNumberField(result, \"bytesBefore\"))} -> ${formatBytes(readNumberField(result, \"bytesAfter\"))}`,\n ];\n const artifactId = readStringField(result, \"artifactId\");\n if (artifactId !== undefined) {\n lines.push(`artifact: ${artifactId}`);\n }\n const transforms = readArrayField(result, \"transforms\")\n .map((value) => (typeof value === \"string\" ? value : undefined))\n .filter((value): value is string => value !== undefined);\n if (transforms.length > 0) {\n lines.push(`transforms: ${transforms.join(\", \")}`);\n }\n const content = readStringField(result, \"content\");\n if (content !== undefined) {\n lines.push(\"\", content);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatInteractionTraceOutput(result: unknown): Record<string, unknown> {\n const trace = readObjectField(result, \"trace\");\n if (trace === undefined) {\n return { result };\n }\n const payload = readObjectField(trace, \"payload\");\n return {\n ...(readStringField(trace, \"id\") === undefined ? {} : { id: readStringField(trace, \"id\") }),\n ...(readStringField(trace, \"key\") === undefined ? {} : { key: readStringField(trace, \"key\") }),\n ...(readStringField(trace, \"version\") === undefined\n ? {}\n : { version: readStringField(trace, \"version\") }),\n ...(readStringField(payload, \"mode\") === undefined\n ? {}\n : { mode: readStringField(payload, \"mode\") }),\n ...(readStringField(payload, \"url\") === undefined\n ? {}\n : { url: readStringField(payload, \"url\") }),\n ...(readArrayField(payload, \"events\").length === 0\n ? {}\n : { eventCount: readArrayField(payload, \"events\").length }),\n ...(readArrayField(payload, \"networkRecordIds\").length === 0\n ? {}\n : { networkRecordIds: readArrayField(payload, \"networkRecordIds\") }),\n };\n}\n\nfunction formatScriptSandboxOutput(result: unknown): Record<string, unknown> {\n if (result === null || typeof result !== \"object\") {\n return { result };\n }\n\n const capturedAjax = readArrayField(result, \"capturedAjax\").map((entry) => ({\n ...(readStringField(entry, \"method\") === undefined\n ? {}\n : { method: readStringField(entry, \"method\") }),\n ...(readStringField(entry, \"url\") === undefined ? {} : { url: readStringField(entry, \"url\") }),\n ...(readNumberField(entry, \"timestamp\") === undefined\n ? {}\n : { timestamp: readNumberField(entry, \"timestamp\") }),\n }));\n const errors = readArrayField(result, \"errors\")\n .map((entry) => (typeof entry === \"string\" ? entry : undefined))\n .filter((entry): entry is string => entry !== undefined);\n\n return {\n ...(readNumberField(result, \"durationMs\") === undefined\n ? {}\n : { durationMs: readNumberField(result, \"durationMs\") }),\n ...(capturedAjax.length === 0 ? {} : { capturedAjax }),\n ...(errors.length === 0 ? {} : { errors }),\n ...(readUnknownField(result, \"result\") === undefined\n ? {}\n : { result: truncateDataShape(readUnknownField(result, \"result\")) }),\n };\n}\n\nfunction formatCaptchaSolveOutput(result: unknown): Record<string, unknown> {\n const captcha = readObjectField(result, \"captcha\");\n return {\n ...(readStringField(result, \"provider\") === undefined\n ? {}\n : { provider: readStringField(result, \"provider\") }),\n ...(captcha === undefined\n ? {}\n : {\n captcha: {\n ...(readStringField(captcha, \"type\") === undefined\n ? {}\n : { type: readStringField(captcha, \"type\") }),\n ...(readStringField(captcha, \"siteKey\") === undefined\n ? {}\n : { siteKey: readStringField(captcha, \"siteKey\") }),\n ...(readStringField(captcha, \"pageUrl\") === undefined\n ? {}\n : { pageUrl: readStringField(captcha, \"pageUrl\") }),\n },\n }),\n ...(readStringField(result, \"token\") === undefined\n ? {}\n : { token: readStringField(result, \"token\") }),\n ...(readBooleanField(result, \"injected\") === undefined\n ? {}\n : { injected: readBooleanField(result, \"injected\") }),\n };\n}\n\nfunction formatInteractionDiffOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readObjectField(result, \"summary\") === undefined\n ? {}\n : { summary: readObjectField(result, \"summary\") }),\n ...(readArrayField(result, \"eventSequenceMismatches\").length === 0\n ? {}\n : { eventSequenceMismatches: readArrayField(result, \"eventSequenceMismatches\") }),\n ...(readArrayField(result, \"eventPropertyMismatches\").length === 0\n ? {}\n : { eventPropertyMismatches: readArrayField(result, \"eventPropertyMismatches\") }),\n ...(readArrayField(result, \"stateMismatches\").length === 0\n ? {}\n : { stateMismatches: readArrayField(result, \"stateMismatches\") }),\n ...(readArrayField(result, \"downstreamRequestMismatches\").length === 0\n ? {}\n : { downstreamRequestMismatches: readArrayField(result, \"downstreamRequestMismatches\") }),\n };\n}\n\nfunction formatInteractionReplayOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readStringField(result, \"traceId\") === undefined\n ? {}\n : { traceId: readStringField(result, \"traceId\") }),\n ...(readNumberField(result, \"replayedEventCount\") === undefined\n ? {}\n : { replayedEventCount: readNumberField(result, \"replayedEventCount\") }),\n ...(readBooleanField(result, \"success\") === undefined\n ? {}\n : { success: readBooleanField(result, \"success\") }),\n ...(readStringField(result, \"error\") === undefined\n ? {}\n : { error: readStringField(result, \"error\") }),\n };\n}\n\nfunction formatBodySummary(body: unknown): string {\n if (body === null || typeof body !== \"object\") {\n return \"unknown\";\n }\n if (readBooleanField(body, \"streaming\") === true) {\n return `streaming (${readStringField(body, \"contentType\") ?? \"unknown\"})`;\n }\n return `${formatBytes(readNumberField(body, \"bytes\"))} (${readStringField(body, \"contentType\") ?? \"unknown\"})`;\n}\n\nfunction formatBodyPreview(label: string, preview: unknown): string {\n const header = `${label} (${formatBytes(readNumberField(preview, \"bytes\"))}${readStringField(preview, \"contentType\") === undefined ? \"\" : `, ${readStringField(preview, \"contentType\")}`}${readBooleanField(preview, \"truncated\") === true ? \", truncated\" : \"\"}):`;\n const data = readUnknownField(preview, \"data\");\n if (data === undefined) {\n return header;\n }\n return `${header}\\n${indentLines(stringifyValue(data))}`;\n}\n\nfunction formatStorageEntry(entry: unknown): string {\n return ` ${padRight(readStringField(entry, \"key\") ?? \"key\", 18)} ${truncateInline(readStringField(entry, \"value\") ?? \"\", 80)}`;\n}\n\nfunction formatHeaderLine(header: unknown): string {\n return ` ${readStringField(header, \"name\") ?? \"header\"}: ${readStringField(header, \"value\") ?? \"\"}`;\n}\n\nfunction truncateDataShape(value: unknown, depth = 0): unknown {\n if (\n value === null ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n value === undefined\n ) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.length <= 200 ? value : `${value.slice(0, 200)}...${value.length} chars total`;\n }\n if (Array.isArray(value)) {\n if (depth >= 4) {\n return `... ${value.length} items`;\n }\n if (value.length > 3) {\n return [\n `... ${value.length} items, first 2 shown`,\n truncateDataShape(value[0], depth + 1),\n truncateDataShape(value[1], depth + 1),\n ];\n }\n return value.map((entry) => truncateDataShape(entry, depth + 1));\n }\n if (typeof value === \"object\") {\n const entries = Object.entries(value as Record<string, unknown>);\n if (depth >= 4) {\n return `... ${entries.length} keys`;\n }\n return Object.fromEntries(\n entries.map(([key, entry]) => [key, truncateDataShape(entry, depth + 1)]),\n );\n }\n return String(value);\n}\n\nfunction readArrayField(value: unknown, key: string): readonly unknown[] {\n if (value === null || typeof value !== \"object\") {\n return [];\n }\n const field = (value as Record<string, unknown>)[key];\n return Array.isArray(field) ? field : [];\n}\n\nfunction readObjectField(value: unknown, key: string): Record<string, unknown> | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return field !== null && typeof field === \"object\" && !Array.isArray(field)\n ? (field as Record<string, unknown>)\n : undefined;\n}\n\nfunction readUnknownField(value: unknown, key: string): unknown {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n return (value as Record<string, unknown>)[key];\n}\n\nfunction readStringField(value: unknown, key: string): string | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"string\" ? field : undefined;\n}\n\nfunction readNumberField(value: unknown, key: string): number | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"number\" ? field : undefined;\n}\n\nfunction readBooleanField(value: unknown, key: string): boolean | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"boolean\" ? field : undefined;\n}\n\nfunction readStatus(value: unknown): string {\n const status = readNumberField(value, \"status\");\n return status === undefined ? \"-\" : String(status);\n}\n\nfunction findHeaderValue(headers: readonly unknown[], name: string): string | undefined {\n const normalized = name.toLowerCase();\n for (const header of headers) {\n if (readStringField(header, \"name\")?.toLowerCase() === normalized) {\n return readStringField(header, \"value\");\n }\n }\n return undefined;\n}\n\nfunction formatBytes(bytes: number | undefined): string {\n if (bytes === undefined) {\n return \"unknown\";\n }\n return `${bytes.toLocaleString(\"en-US\")} bytes`;\n}\n\nfunction summarizeCapture(records: readonly unknown[]): string | undefined {\n const captures = new Set(\n records\n .map((record) => readStringField(record, \"capture\"))\n .filter((capture): capture is string => capture !== undefined),\n );\n return captures.size === 1 ? [...captures][0] : undefined;\n}\n\nfunction padRight(value: string, width: number): string {\n return value.length >= width ? value : `${value}${\" \".repeat(width - value.length)}`;\n}\n\nfunction truncateInline(value: string, limit: number): string {\n return value.length <= limit\n ? value\n : `${value.slice(0, Math.max(0, limit - 18))}...${value.length} chars`;\n}\n\nfunction stringifyValue(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value, null, 2);\n}\n\nfunction stringifyScalarLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction indentLines(value: string): string {\n return value\n .split(\"\\n\")\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n}\n\nfunction renderJson(value: unknown): string {\n return `${JSON.stringify(value, null, 2)}\\n`;\n}\n","import { spawn } from \"node:child_process\";\nimport os from \"node:os\";\nimport process from \"node:process\";\n\nexport type BrowserUrlOpener = (url: string) => Promise<void>;\n\nexport async function openBrowserUrl(url: string): Promise<void> {\n const command = resolveOpenBrowserCommand(url);\n await new Promise<void>((resolve, reject) => {\n const child = spawn(command.executable, command.args, {\n detached: process.platform !== \"win32\",\n stdio: \"ignore\",\n });\n child.once(\"error\", reject);\n child.once(\"spawn\", () => {\n child.unref();\n resolve();\n });\n });\n}\n\nfunction resolveOpenBrowserCommand(url: string): {\n readonly executable: string;\n readonly args: readonly string[];\n} {\n if (process.platform === \"darwin\") {\n return {\n executable: \"open\",\n args: [url],\n };\n }\n\n if (process.platform === \"win32\" || isWsl()) {\n return {\n executable: process.platform === \"win32\" ? \"cmd\" : \"cmd.exe\",\n args: [\"/c\", \"start\", \"\", url],\n };\n }\n\n return {\n executable: \"xdg-open\",\n args: [url],\n };\n}\n\nfunction isWsl(): boolean {\n return (\n process.platform === \"linux\" &&\n (process.env.WSL_DISTRO_NAME !== undefined || os.release().toLowerCase().includes(\"microsoft\"))\n );\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport {\n FlowRecorderCollector,\n generateReplayScript,\n type RecorderRuntimeAdapter,\n type RecordedAction,\n} from \"@opensteer/runtime-core\";\nimport type {\n CloudSessionRecordingState,\n OpensteerBrowserContextOptions,\n OpensteerBrowserLaunchOptions,\n OpensteerOpenOutput,\n OpensteerSessionInfo,\n PageRef,\n} from \"@opensteer/protocol\";\n\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport { requireCloudAppBaseUrl, type OpensteerCloudConfig } from \"../cloud/config.js\";\nimport { CloudSessionProxy } from \"../cloud/session-proxy.js\";\nimport type { OpensteerDisconnectableRuntime } from \"../sdk/semantic-runtime.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport { openBrowserUrl, type BrowserUrlOpener } from \"./open-browser.js\";\n\nexport interface OpensteerRecordCommandInput {\n readonly runtime: OpensteerDisconnectableRuntime;\n readonly closeSession?: () => Promise<void>;\n readonly workspace: string;\n readonly url: string;\n readonly rootDir: string;\n readonly outputPath?: string;\n readonly pollIntervalMs?: number;\n readonly stdout?: NodeJS.WritableStream;\n readonly stderr?: NodeJS.WritableStream;\n}\n\ninterface OpensteerCloudRecordRuntime {\n open(input: {\n readonly url?: string;\n readonly browser?: \"temporary\" | \"persistent\";\n readonly launch?: OpensteerBrowserLaunchOptions;\n readonly context?: OpensteerBrowserContextOptions;\n }): Promise<OpensteerOpenOutput>;\n info(): Promise<OpensteerSessionInfo>;\n close(): Promise<unknown>;\n}\n\ninterface OpensteerCloudRecordClient {\n startSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;\n getSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;\n}\n\nexport interface OpensteerCloudRecordCommandInput {\n readonly cloudConfig: OpensteerCloudConfig;\n readonly workspace: string;\n readonly url: string;\n readonly rootDir: string;\n readonly outputPath?: string;\n readonly browser?: \"temporary\" | \"persistent\";\n readonly launch?: OpensteerBrowserLaunchOptions;\n readonly context?: OpensteerBrowserContextOptions;\n readonly pollIntervalMs?: number;\n readonly stdout?: NodeJS.WritableStream;\n readonly stderr?: NodeJS.WritableStream;\n readonly runtime?: OpensteerCloudRecordRuntime;\n readonly client?: OpensteerCloudRecordClient;\n readonly sleep?: (ms: number) => Promise<void>;\n readonly openUrl?: BrowserUrlOpener;\n}\n\nexport async function runOpensteerRecordCommand(input: OpensteerRecordCommandInput): Promise<void> {\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const outputPath = resolveRecordOutputPath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n ...(input.outputPath === undefined ? {} : { outputPath: input.outputPath }),\n });\n const runtime = input.runtime;\n const collector = new FlowRecorderCollector(createRecorderRuntimeAdapter(runtime), {\n ...(input.pollIntervalMs === undefined ? {} : { pollIntervalMs: input.pollIntervalMs }),\n onAction: (action) => {\n stderr.write(`${formatRecordedAction(action)}\\n`);\n },\n });\n stderr.write(\n `Recording browser actions for workspace \"${input.workspace}\". Click \"Stop recording\" in the browser when you're done.\\n`,\n );\n let closed = false;\n\n try {\n const opened = await runtime.open({\n url: input.url,\n });\n await collector.install();\n collector.start();\n\n await collector.waitForStop();\n\n const actions = await collector.stop();\n const script = generateReplayScript({\n actions,\n workspace: input.workspace,\n startUrl: opened.url,\n });\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, script, \"utf8\");\n\n if (input.closeSession !== undefined) {\n await input.closeSession();\n closed = true;\n }\n\n stdout.write(`${outputPath}\\n`);\n stderr.write(`Wrote replay script to ${outputPath}\\n`);\n } finally {\n if (!closed) {\n await runtime.disconnect().catch(() => undefined);\n }\n }\n}\n\nexport async function runOpensteerCloudRecordCommand(\n input: OpensteerCloudRecordCommandInput,\n): Promise<void> {\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const cloudAppBaseUrl = requireCloudAppBaseUrl(input.cloudConfig);\n const outputPath = resolveRecordOutputPath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n ...(input.outputPath === undefined ? {} : { outputPath: input.outputPath }),\n });\n let cloud: OpensteerCloudClient | undefined;\n const resolveCloud = (): OpensteerCloudClient => {\n cloud ??= new OpensteerCloudClient(input.cloudConfig);\n return cloud;\n };\n const runtime =\n input.runtime ??\n new CloudSessionProxy(resolveCloud(), {\n rootDir: input.rootDir,\n workspace: input.workspace,\n });\n const client = input.client ?? resolveCloud();\n const sleep = input.sleep ?? delay;\n const openUrl = input.openUrl ?? openBrowserUrl;\n let closed = false;\n\n try {\n await runtime.open({\n url: input.url,\n ...(input.browser === undefined ? {} : { browser: input.browser }),\n ...(input.launch === undefined ? {} : { launch: input.launch }),\n ...(input.context === undefined ? {} : { context: input.context }),\n });\n const sessionId = await resolveCloudRecordingSessionId(runtime);\n const sessionUrl = buildCloudRecordingSessionUrl(cloudAppBaseUrl, sessionId);\n\n await client.startSessionRecording(sessionId);\n await tryOpenCloudRecordingSessionUrl({\n sessionUrl,\n stderr,\n openUrl,\n });\n stderr.write(\n `Recording browser actions for workspace \"${input.workspace}\". Open ${sessionUrl} and click \"Stop recording\" in the browser session toolbar when you're done.\\n`,\n );\n\n const completed = await waitForCloudRecordingCompletion({\n client,\n sessionId,\n ...(input.pollIntervalMs === undefined ? {} : { pollIntervalMs: input.pollIntervalMs }),\n sleep,\n });\n if (completed.result === undefined) {\n throw new Error(\"Cloud recording completed without a replay script.\");\n }\n\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, completed.result.script, \"utf8\");\n await runtime.close();\n closed = true;\n\n stdout.write(`${outputPath}\\n`);\n stderr.write(`Cloud browser session: ${sessionUrl}\\n`);\n stderr.write(`Wrote replay script to ${outputPath}\\n`);\n } finally {\n if (!closed) {\n await runtime.close().catch(() => undefined);\n }\n }\n}\n\nexport function resolveRecordOutputPath(input: {\n readonly rootDir: string;\n readonly workspace: string;\n readonly outputPath?: string;\n}): string {\n if (input.outputPath !== undefined) {\n return path.resolve(input.rootDir, input.outputPath);\n }\n return path.join(\n resolveFilesystemWorkspacePath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n }),\n \"recorded-flow.ts\",\n );\n}\n\nexport function createRecorderRuntimeAdapter(\n runtime: OpensteerDisconnectableRuntime,\n): RecorderRuntimeAdapter {\n return {\n addInitScript: (input) => runtime.addInitScript(input),\n evaluate: async (input) => {\n const output = await runtime.evaluate({\n script: input.script,\n ...(input.pageRef === undefined ? {} : { pageRef: input.pageRef as PageRef }),\n });\n return output.value;\n },\n listPages: async () => {\n const output = await runtime.listPages();\n return {\n pages: output.pages.map((page) => ({\n pageRef: page.pageRef,\n url: page.url,\n ...(page.openerPageRef === undefined ? {} : { openerPageRef: page.openerPageRef }),\n })),\n };\n },\n };\n}\n\nfunction buildCloudRecordingSessionUrl(appBaseUrl: string, sessionId: string): string {\n return `${appBaseUrl}/browsers/${encodeURIComponent(sessionId)}`;\n}\n\nasync function tryOpenCloudRecordingSessionUrl(input: {\n readonly sessionUrl: string;\n readonly stderr: NodeJS.WritableStream;\n readonly openUrl: BrowserUrlOpener;\n}): Promise<void> {\n try {\n await input.openUrl(input.sessionUrl);\n } catch {\n input.stderr.write(\n `Could not automatically open the cloud browser session. Open it manually: ${input.sessionUrl}\\n`,\n );\n }\n}\n\nasync function resolveCloudRecordingSessionId(\n runtime: Pick<OpensteerCloudRecordRuntime, \"info\">,\n): Promise<string> {\n const info = await runtime.info();\n if (typeof info.sessionId !== \"string\" || info.sessionId.length === 0) {\n throw new Error(\"Cloud recording could not resolve the created session id.\");\n }\n return info.sessionId;\n}\n\nasync function waitForCloudRecordingCompletion(input: {\n readonly client: OpensteerCloudRecordClient;\n readonly sessionId: string;\n readonly pollIntervalMs?: number;\n readonly sleep: (ms: number) => Promise<void>;\n}): Promise<CloudSessionRecordingState> {\n const pollIntervalMs = input.pollIntervalMs ?? 1_000;\n\n for (;;) {\n const state = await input.client.getSessionRecording(input.sessionId);\n if (state.status === \"completed\") {\n return state;\n }\n if (state.status === \"failed\") {\n throw new Error(state.error ?? \"Cloud recording failed.\");\n }\n await input.sleep(pollIntervalMs);\n }\n}\n\nfunction formatRecordedAction(action: RecordedAction): string {\n const time = new Date(action.timestamp).toISOString().slice(11, 19);\n switch (action.kind) {\n case \"click\":\n return `[${time}] click ${action.pageId} -> ${action.selector ?? \"<unknown>\"}`;\n case \"dblclick\":\n return `[${time}] dblclick ${action.pageId} -> ${action.selector ?? \"<unknown>\"}`;\n case \"type\":\n return `[${time}] type ${action.pageId} -> ${action.selector ?? \"<unknown>\"} -> ${JSON.stringify(action.detail.text)}`;\n case \"keypress\":\n return `[${time}] keypress ${action.pageId} -> ${action.detail.key}`;\n case \"scroll\":\n return `[${time}] scroll ${action.pageId} -> (${String(action.detail.deltaX)}, ${String(action.detail.deltaY)})`;\n case \"select-option\":\n return `[${time}] select ${action.pageId} -> ${action.selector ?? \"<unknown>\"} -> ${JSON.stringify(action.detail.value)}`;\n case \"navigate\":\n return `[${time}] navigate ${action.pageId} -> ${action.detail.url}`;\n case \"new-tab\":\n return `[${time}] new-tab ${action.pageId} -> ${action.detail.initialUrl}`;\n case \"close-tab\":\n return `[${time}] close-tab ${action.pageId}`;\n case \"switch-tab\":\n return `[${time}] switch-tab -> ${action.detail.toPageId}`;\n case \"go-back\":\n return `[${time}] go-back ${action.pageId}`;\n case \"go-forward\":\n return `[${time}] go-forward ${action.pageId}`;\n case \"reload\":\n return `[${time}] reload ${action.pageId}`;\n }\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { fileURLToPath } from \"node:url\";\n\nexport const OPENSTEER_GITHUB_SOURCE = \"steerlabs/opensteer\";\n\nexport interface OpensteerSkillsInstallOptions {\n readonly agents?: readonly string[];\n readonly skills?: readonly string[];\n readonly global?: boolean;\n readonly yes?: boolean;\n readonly copy?: boolean;\n readonly all?: boolean;\n readonly list?: boolean;\n}\n\ninterface OpensteerSkillsInvocation {\n readonly cliPath: string;\n readonly cliArgs: readonly string[];\n}\n\ninterface OpensteerSkillsInstallerDeps {\n readonly resolveSkillsCliPath: () => string;\n readonly resolveRepoSkillSourcePath: () => string | undefined;\n readonly resolveLocalSkillSourcePath: () => string;\n readonly checkGitHubReachable: () => Promise<boolean>;\n readonly spawnInvocation: (invocation: OpensteerSkillsInvocation) => Promise<number>;\n}\n\nexport function createOpensteerSkillsInvocation(input: {\n readonly options: OpensteerSkillsInstallOptions;\n readonly skillsCliPath: string;\n readonly skillSourcePath: string;\n}): OpensteerSkillsInvocation {\n const cliArgs = [\"add\", input.skillSourcePath];\n\n if (input.options.all === true) {\n cliArgs.push(\"--all\");\n } else {\n const selectedSkills = resolveSelectedSkills(input.options);\n for (const skill of selectedSkills) {\n cliArgs.push(\"--skill\", skill);\n }\n }\n\n for (const agent of input.options.agents ?? []) {\n cliArgs.push(\"--agent\", agent);\n }\n\n if (input.options.global === true) {\n cliArgs.push(\"--global\");\n }\n if (input.options.yes === true) {\n cliArgs.push(\"--yes\");\n }\n if (input.options.copy === true) {\n cliArgs.push(\"--copy\");\n }\n if (input.options.list === true) {\n cliArgs.push(\"--list\");\n }\n\n return {\n cliPath: input.skillsCliPath,\n cliArgs,\n };\n}\n\nexport function resolveOpensteerSkillsCliPath(): string {\n const require = createRequire(import.meta.url);\n const skillsPackagePath = require.resolve(\"skills/package.json\");\n const skillsPackageDir = path.dirname(skillsPackagePath);\n const cliPath = path.join(skillsPackageDir, \"bin\", \"cli.mjs\");\n if (!existsSync(cliPath)) {\n throw new Error(`skills CLI entrypoint was not found at \"${cliPath}\".`);\n }\n return cliPath;\n}\n\nexport function resolveOpensteerLocalSkillSourcePath(): string {\n let ancestor = path.dirname(fileURLToPath(import.meta.url));\n\n for (let index = 0; index < 6; index += 1) {\n const candidate = path.join(ancestor, \"skills\");\n const skillManifest = path.join(candidate, \"opensteer\", \"SKILL.md\");\n if (existsSync(skillManifest)) {\n return candidate;\n }\n ancestor = path.resolve(ancestor, \"..\");\n }\n\n throw new Error(\"Unable to find the packaged Opensteer skill source directory.\");\n}\n\nexport function resolveOpensteerRepoSkillSourcePath(\n startDir: string = process.cwd(),\n): string | undefined {\n let currentDir = path.resolve(startDir);\n const filesystemRoot = path.parse(currentDir).root;\n\n while (true) {\n const candidate = path.join(currentDir, \"skills\");\n const skillManifest = path.join(candidate, \"opensteer\", \"SKILL.md\");\n if (existsSync(skillManifest)) {\n return candidate;\n }\n if (currentDir === filesystemRoot) {\n return undefined;\n }\n currentDir = path.dirname(currentDir);\n }\n}\n\nexport async function checkOpensteerGitHubReachable(): Promise<boolean> {\n try {\n const response = await fetch(`https://github.com/${OPENSTEER_GITHUB_SOURCE}`, {\n method: \"HEAD\",\n signal: AbortSignal.timeout(3000),\n redirect: \"manual\",\n });\n return response.status < 500;\n } catch {\n return false;\n }\n}\n\nexport async function runOpensteerSkillsInstaller(\n options: OpensteerSkillsInstallOptions = {},\n overrideDeps: Partial<OpensteerSkillsInstallerDeps> = {},\n): Promise<number> {\n const deps: OpensteerSkillsInstallerDeps = {\n resolveSkillsCliPath: resolveOpensteerSkillsCliPath,\n resolveRepoSkillSourcePath: resolveOpensteerRepoSkillSourcePath,\n resolveLocalSkillSourcePath: resolveOpensteerLocalSkillSourcePath,\n checkGitHubReachable: checkOpensteerGitHubReachable,\n spawnInvocation: spawnOpensteerSkillsInvocation,\n ...overrideDeps,\n };\n\n const repoSkillSourcePath = deps.resolveRepoSkillSourcePath();\n const skillSourcePath =\n repoSkillSourcePath ??\n ((await deps.checkGitHubReachable())\n ? OPENSTEER_GITHUB_SOURCE\n : deps.resolveLocalSkillSourcePath());\n\n const invocation = createOpensteerSkillsInvocation({\n options,\n skillsCliPath: deps.resolveSkillsCliPath(),\n skillSourcePath,\n });\n\n return deps.spawnInvocation(invocation);\n}\n\nasync function spawnOpensteerSkillsInvocation(\n invocation: OpensteerSkillsInvocation,\n): Promise<number> {\n return await new Promise((resolvePromise, rejectPromise) => {\n const child = spawn(process.execPath, [invocation.cliPath, ...invocation.cliArgs], {\n cwd: process.cwd(),\n env: process.env,\n stdio: \"inherit\",\n });\n\n child.once(\"error\", (error) => {\n rejectPromise(error);\n });\n\n child.once(\"exit\", (code) => {\n resolvePromise(typeof code === \"number\" ? code : 1);\n });\n });\n}\n\nfunction resolveSelectedSkills(options: OpensteerSkillsInstallOptions): readonly string[] {\n if (options.skills !== undefined && options.skills.length > 0) {\n return options.skills;\n }\n if (options.list === true) {\n return [];\n }\n return [\"opensteer\"];\n}\n","import path from \"node:path\";\n\nimport type { OpensteerCloudConfig } from \"../cloud/config.js\";\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport {\n readPersistedCloudSessionRecord,\n readPersistedLocalBrowserSessionRecord,\n type PersistedCloudSessionRecord,\n type PersistedLocalBrowserSessionRecord,\n} from \"../live-session.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport { pathExists } from \"../internal/filesystem.js\";\nimport { isProcessRunning } from \"../local-browser/process-owner.js\";\nimport type { OpensteerResolvedProvider } from \"../provider/config.js\";\n\nexport interface OpensteerStatusLaneSummary {\n readonly provider: \"local\" | \"cloud\";\n readonly status: \"idle\" | \"active\" | \"connected\" | \"stale\" | \"closed\";\n readonly current: boolean;\n readonly summary?: string;\n readonly detail?: string;\n readonly sessionId?: string;\n readonly baseUrl?: string;\n readonly pid?: number;\n readonly engine?: string;\n readonly browser?: string;\n readonly region?: string;\n}\n\nexport interface OpensteerStatusOutput {\n readonly provider: {\n readonly current: OpensteerResolvedProvider[\"mode\"];\n readonly source: \"flag\" | \"env\" | \"default\";\n readonly cloudBaseUrl?: string;\n };\n readonly workspace?: string;\n readonly rootPath?: string;\n readonly lanes?: {\n readonly local: OpensteerStatusLaneSummary;\n readonly cloud: OpensteerStatusLaneSummary;\n };\n}\n\nexport async function collectOpensteerStatus(input: {\n readonly rootDir: string;\n readonly workspace?: string;\n readonly provider: OpensteerResolvedProvider;\n readonly cloudConfig?: OpensteerCloudConfig;\n}): Promise<OpensteerStatusOutput> {\n const output: OpensteerStatusOutput = {\n provider: {\n current: input.provider.mode,\n source: mapProviderSource(input.provider.source),\n ...(input.cloudConfig === undefined ? {} : { cloudBaseUrl: input.cloudConfig.baseUrl }),\n },\n ...(input.workspace === undefined ? {} : { workspace: input.workspace }),\n };\n\n if (input.workspace === undefined) {\n return output;\n }\n\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n });\n const localRecord = await readWorkspaceLocalRecord(rootPath);\n const cloudRecord = await readWorkspaceCloudRecord(rootPath);\n\n return {\n ...output,\n rootPath,\n lanes: {\n local: describeLocalLane(localRecord, input.provider.mode === \"local\"),\n cloud: await describeCloudLane({\n record: cloudRecord,\n current: input.provider.mode === \"cloud\",\n cloudConfig: input.cloudConfig,\n }),\n },\n };\n}\n\nexport function renderOpensteerStatus(status: OpensteerStatusOutput): string {\n const lines: string[] = [\n \"Provider resolution\",\n ` current: ${status.provider.current}`,\n ` source: ${status.provider.source}`,\n ];\n\n if (status.provider.cloudBaseUrl !== undefined) {\n lines.push(` control api: ${status.provider.cloudBaseUrl}`);\n }\n if (status.workspace !== undefined) {\n lines.push(` workspace: ${status.workspace}`);\n }\n\n if (status.lanes === undefined) {\n return `${lines.join(\"\\n\")}\\n`;\n }\n\n lines.push(\"\", \"Live sessions\");\n for (const lane of [status.lanes.local, status.lanes.cloud]) {\n lines.push(\n formatLaneRow({\n marker: lane.current ? \"*\" : \" \",\n provider: lane.provider,\n status: lane.status,\n summary: lane.summary ?? \"none\",\n detail: lane.detail,\n }),\n );\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nasync function readWorkspaceLocalRecord(\n rootPath: string,\n): Promise<PersistedLocalBrowserSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedLocalBrowserSessionRecord(rootPath);\n}\n\nasync function readWorkspaceCloudRecord(\n rootPath: string,\n): Promise<PersistedCloudSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedCloudSessionRecord(rootPath);\n}\n\nfunction describeLocalLane(\n record: PersistedLocalBrowserSessionRecord | undefined,\n current: boolean,\n): OpensteerStatusLaneSummary {\n if (record === undefined || !isProcessRunning(record.pid)) {\n return {\n provider: \"local\",\n status: \"idle\",\n current,\n summary: \"none\",\n };\n }\n\n const browser = record.executablePath\n ? path.basename(record.executablePath).replace(/\\.[A-Za-z0-9]+$/u, \"\")\n : undefined;\n return {\n provider: \"local\",\n status: \"active\",\n current,\n summary: `PID ${String(record.pid)}`,\n detail: browser ?? record.engine,\n pid: record.pid,\n engine: record.engine,\n ...(browser === undefined ? {} : { browser }),\n };\n}\n\nasync function describeCloudLane(input: {\n readonly record: PersistedCloudSessionRecord | undefined;\n readonly current: boolean;\n readonly cloudConfig: OpensteerCloudConfig | undefined;\n}): Promise<OpensteerStatusLaneSummary> {\n if (input.record === undefined) {\n return {\n provider: \"cloud\",\n status: \"idle\",\n current: input.current,\n summary: \"none\",\n };\n }\n\n const base: OpensteerStatusLaneSummary = {\n provider: \"cloud\",\n status: \"connected\",\n current: input.current,\n summary: input.record.sessionId,\n sessionId: input.record.sessionId,\n ...(input.cloudConfig === undefined\n ? {}\n : {\n detail: input.cloudConfig.baseUrl,\n baseUrl: input.cloudConfig.baseUrl,\n }),\n };\n\n if (input.cloudConfig === undefined) {\n return base;\n }\n\n try {\n const client = new OpensteerCloudClient(input.cloudConfig);\n const session = (await client.getSession(input.record.sessionId)) as {\n readonly status?: string;\n readonly region?: string;\n readonly runtimeRegion?: string;\n };\n if (session.status === \"closed\") {\n return {\n ...base,\n status: \"closed\",\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n }\n if (session.status === \"failed\") {\n return {\n ...base,\n status: \"stale\",\n };\n }\n return {\n ...base,\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n } catch {\n return {\n ...base,\n status: \"stale\",\n };\n }\n}\n\nfunction mapProviderSource(\n source: OpensteerResolvedProvider[\"source\"],\n): \"flag\" | \"env\" | \"default\" {\n if (source === \"explicit\") {\n return \"flag\";\n }\n return source;\n}\n\nfunction formatLaneRow(input: {\n readonly marker: string;\n readonly provider: string;\n readonly status: string;\n readonly summary: string;\n readonly detail: string | undefined;\n}): string {\n const provider = input.provider.padEnd(7, \" \");\n const status = input.status.padEnd(9, \" \");\n const summary = input.summary.padEnd(16, \" \");\n return `${input.marker} ${provider} ${status} ${summary}${\n input.detail === undefined ? \"\" : ` ${input.detail}`\n }`.trimEnd();\n}\n","// Tries expression-mode first (auto-return); falls back to statement block\n// (requires explicit return). Runs in the local Node.js process.\nexport async function runExecExpression(context: object, expression: string): Promise<unknown> {\n const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor as new (\n ...args: string[]\n ) => (...args: unknown[]) => Promise<unknown>;\n\n let fn: (...args: unknown[]) => Promise<unknown>;\n try {\n fn = new AsyncFunction(`return (${expression})`);\n } catch {\n fn = new AsyncFunction(expression);\n }\n\n return fn.call(context);\n}\n","import path from \"node:path\";\n\nimport { readPersistedLocalBrowserSessionRecord } from \"../live-session.js\";\nimport { isProcessRunning } from \"../local-browser/process-owner.js\";\nimport { setLocalViewMode } from \"../local-view/preferences.js\";\nimport { runLocalViewService } from \"../local-view/serve.js\";\nimport {\n buildLocalViewSessionUrl,\n ensureLocalViewServiceRunning,\n stopLocalViewService,\n} from \"../local-view/service.js\";\nimport { buildLocalViewSessionId } from \"../local-view/session-manifest.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport type { ParsedCommandLine } from \"./parse.js\";\n\nexport async function handleViewCommand(parsed: ParsedCommandLine): Promise<void> {\n const subcommand = parsed.command[1];\n\n if (subcommand === \"serve\") {\n assertNoViewPreferenceFlag(parsed);\n await runLocalViewService();\n return;\n }\n\n if (subcommand === \"stop\") {\n assertNoViewPreferenceFlag(parsed);\n const stopped = await stopLocalViewService();\n writeViewOutput(parsed, { stopped });\n return;\n }\n\n if (subcommand !== undefined) {\n throw new Error(`Unknown view command: view ${subcommand}`);\n }\n\n if (parsed.options.localViewMode !== undefined) {\n const preference = await setLocalViewMode(parsed.options.localViewMode);\n writeViewOutput(parsed, { mode: preference.mode });\n return;\n }\n\n const service = await ensureLocalViewServiceRunning();\n const sessionId =\n parsed.options.workspace === undefined\n ? undefined\n : await resolveWorkspaceSessionId({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n });\n const url = buildLocalViewSessionUrl({\n baseUrl: service.url,\n ...(sessionId === undefined ? {} : { sessionId }),\n });\n\n writeViewOutput(parsed, {\n url,\n ...(sessionId === undefined ? {} : { sessionId }),\n });\n}\n\nasync function resolveWorkspaceSessionId(input: {\n readonly rootDir: string;\n readonly workspace: string;\n}): Promise<string | undefined> {\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: path.resolve(input.rootDir),\n workspace: input.workspace,\n });\n const live = await readPersistedLocalBrowserSessionRecord(rootPath);\n if (!live || !isProcessRunning(live.pid)) {\n return undefined;\n }\n\n return buildLocalViewSessionId({\n rootPath,\n pid: live.pid,\n startedAt: live.startedAt,\n });\n}\n\nfunction assertNoViewPreferenceFlag(parsed: ParsedCommandLine): void {\n if (parsed.options.localViewMode !== undefined) {\n throw new Error(\"View preference flags cannot be combined with this subcommand.\");\n }\n}\n\nfunction writeViewOutput(\n parsed: ParsedCommandLine,\n value:\n | {\n readonly url: string;\n readonly sessionId?: string;\n }\n | {\n readonly stopped: boolean;\n }\n | {\n readonly mode: \"auto\" | \"manual\";\n },\n): void {\n if (parsed.options.json === true) {\n process.stdout.write(`${JSON.stringify(value, null, 2)}\\n`);\n return;\n }\n\n if (\"url\" in value) {\n process.stdout.write(`${value.url}\\n`);\n return;\n }\n\n if (\"stopped\" in value) {\n process.stdout.write(\n `${value.stopped ? \"Local view service stopped.\" : \"Local view service is not running.\"}\\n`,\n );\n return;\n }\n\n process.stdout.write(`Local view preference set to ${value.mode}.\\n`);\n}\n","#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport opensteerPackage from \"../../package.json\" with { type: \"json\" };\n\nimport { OpensteerBrowserManager } from \"../browser-manager.js\";\nimport {\n resolveOpensteerEngineName,\n type OpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { discoverLocalCdpBrowsers, inspectCdpEndpoint } from \"../local-browser/cdp-discovery.js\";\nimport {\n assertProviderSupportsEngine,\n resolveOpensteerProvider,\n type OpensteerProviderMode,\n type OpensteerProviderOptions,\n type OpensteerResolvedProvider,\n} from \"../provider/config.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n} from \"../sdk/runtime-resolution.js\";\nimport { dispatchSemanticOperation } from \"./dispatch.js\";\nimport { loadCliEnvironment } from \"./env-loader.js\";\nimport { getHelpText } from \"./help.js\";\nimport { buildOperationInput } from \"./operation-input.js\";\nimport { renderOperationOutput } from \"./output.js\";\nimport { parseCommandLine, type ParsedCommandLine } from \"./parse.js\";\nimport { runOpensteerCloudRecordCommand, runOpensteerRecordCommand } from \"./record.js\";\nimport { runOpensteerSkillsInstaller } from \"./skills-installer.js\";\nimport { collectOpensteerStatus, renderOpensteerStatus } from \"./status.js\";\nimport { resolveOperation } from \"./commands.js\";\nimport { runExecExpression } from \"./exec.js\";\nimport { handleViewCommand } from \"./view.js\";\n\nconst emitProcessWarning = process.emitWarning.bind(process);\n\nprocess.emitWarning = ((warning: string | Error, ...args: unknown[]) => {\n const name =\n warning instanceof Error ? warning.name : typeof args[0] === \"string\" ? args[0] : undefined;\n const message = warning instanceof Error ? warning.message : warning;\n if (\n name === \"ExperimentalWarning\" &&\n typeof message === \"string\" &&\n message.includes(\"SQLite is an experimental feature\")\n ) {\n return;\n }\n return emitProcessWarning(warning, ...(args as []));\n}) as typeof process.emitWarning;\n\nasync function main(): Promise<void> {\n const argv = process.argv.slice(2);\n const bootstrapAction = resolveCliBootstrapAction(argv);\n if (bootstrapAction === \"version\") {\n printVersion();\n return;\n }\n if (bootstrapAction === \"help\") {\n printHelp();\n return;\n }\n\n await loadCliEnvironment(process.cwd());\n const parsed = parseCommandLine(argv);\n\n if (parsed.command[0] === \"browser\") {\n await handleBrowserCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"skills\" && parsed.command[1] === \"install\") {\n const exitCode = await runOpensteerSkillsInstaller({\n ...(parsed.options.agents === undefined ? {} : { agents: parsed.options.agents }),\n ...(parsed.options.skills === undefined ? {} : { skills: parsed.options.skills }),\n global: parsed.options.global === true,\n yes: parsed.options.yes === true,\n copy: parsed.options.copy === true,\n all: parsed.options.all === true,\n list: parsed.options.list === true,\n });\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n if (parsed.command[0] === \"status\") {\n await handleStatusCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"record\") {\n await handleRecordCommandEntry(parsed);\n return;\n }\n\n if (parsed.command[0] === \"view\") {\n await handleViewCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"exec\") {\n await handleExecCommand(parsed);\n return;\n }\n\n const operation = resolveOperation(parsed.command);\n if (!operation) {\n throw new Error(`Unknown command: ${parsed.command.join(\" \")}`);\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Stateful commands require \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n\n const { engineName, provider, runtimeProvider } = resolveCliRuntimeSelection(parsed);\n\n if (operation === \"session.close\") {\n await handleCloseCommand(parsed, engineName, provider.mode, runtimeProvider);\n return;\n }\n\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n let result: unknown;\n let renderOperation = operation;\n try {\n const input = await buildOperationInput(operation, parsed, runtime);\n result = await dispatchSemanticOperation(runtime, operation, input);\n\n if (parsed.command[0] === \"tab\" && operation !== \"page.list\") {\n renderOperation = \"page.list\";\n result = await runtime.listPages({});\n }\n\n process.stdout.write(renderOperationOutput(renderOperation, result, input));\n } finally {\n await runtime.disconnect().catch(() => undefined);\n }\n}\n\nasync function handleExecCommand(parsed: ParsedCommandLine): Promise<void> {\n if (parsed.options.workspace === undefined) {\n throw new Error('exec requires \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n const expression = parsed.rest.join(\" \");\n if (!expression) {\n throw new Error(\n \"exec requires an expression. Example: exec \\\"await this.evaluate('document.title')\\\"\",\n );\n }\n\n const { engineName, runtimeProvider } = resolveCliRuntimeSelection(parsed);\n const { Opensteer } = await import(\"../sdk/opensteer.js\");\n const opensteer = new Opensteer({\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engineName,\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n try {\n const result = await runExecExpression(opensteer, expression);\n if (result !== undefined) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n }\n } finally {\n await opensteer.disconnect().catch(() => undefined);\n }\n}\n\nasync function handleBrowserCommand(parsed: ParsedCommandLine): Promise<void> {\n const subcommand = parsed.command[1];\n if (subcommand === \"discover\") {\n const result = await discoverLocalCdpBrowsers({\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (subcommand === \"inspect\") {\n const endpoint = parsed.options.attachEndpoint ?? parsed.rest[0];\n if (!endpoint) {\n throw new Error(\n 'browser inspect requires \"--attach-endpoint <url>\" or a positional endpoint.',\n );\n }\n const result = await inspectCdpEndpoint({\n endpoint,\n ...(parsed.options.attachHeaders === undefined\n ? {}\n : { headers: parsed.options.attachHeaders }),\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error(\n 'Browser workspace commands require \"--workspace <id>\" or OPENSTEER_WORKSPACE.',\n );\n }\n\n const engineName = resolveCliEngineName(parsed);\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n switch (subcommand) {\n case \"status\": {\n const result = await manager.status();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"clone\": {\n const sourceUserDataDir = parsed.options.sourceUserDataDir;\n if (!sourceUserDataDir) {\n throw new Error('browser clone requires \"--source-user-data-dir <path>\".');\n }\n const result = await manager.clonePersistentBrowser({\n sourceUserDataDir,\n ...(parsed.options.sourceProfileDirectory === undefined\n ? {}\n : { sourceProfileDirectory: parsed.options.sourceProfileDirectory }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"reset\": {\n await manager.reset();\n process.stdout.write(`${JSON.stringify({ reset: true }, null, 2)}\\n`);\n return;\n }\n case \"delete\": {\n await manager.delete();\n process.stdout.write(`${JSON.stringify({ deleted: true }, null, 2)}\\n`);\n return;\n }\n default:\n throw new Error(`Unknown browser command: ${parsed.command.join(\" \")}`);\n }\n}\n\nasync function handleCloseCommand(\n parsed: ParsedCommandLine,\n engineName: OpensteerEngineName,\n providerMode: OpensteerProviderMode,\n runtimeProvider: OpensteerProviderOptions | undefined,\n): Promise<void> {\n if (providerMode === \"cloud\") {\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace!,\n rootDir: process.cwd(),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n const result = await runtime.close();\n process.stdout.write(renderOperationOutput(\"session.close\", result));\n return;\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace!,\n engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n await manager.close();\n process.stdout.write(renderOperationOutput(\"session.close\", { closed: true }));\n}\n\nasync function handleRecordCommandEntry(parsed: ParsedCommandLine): Promise<void> {\n if (parsed.options.workspace === undefined) {\n throw new Error('record requires \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n\n const url = parsed.options.url ?? parsed.rest[0];\n if (url === undefined) {\n throw new Error('record requires \"--url <value>\" or a positional URL.');\n }\n\n const provider = resolveCliProvider(parsed);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const engineName = resolveCliEngineName(parsed);\n if (engineName !== \"playwright\") {\n throw new Error(\"record requires engine=playwright.\");\n }\n const rootDir = process.cwd();\n const recordBrowser = parsed.options.browser;\n\n if (provider.mode === \"cloud\") {\n if (typeof recordBrowser === \"object\") {\n throw new Error('record does not support browser.mode=\"attach\".');\n }\n\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n environment: process.env,\n });\n\n await runOpensteerCloudRecordCommand({\n cloudConfig: runtimeConfig.cloud!,\n workspace: parsed.options.workspace,\n url,\n rootDir,\n ...(recordBrowser === undefined ? {} : { browser: recordBrowser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n ...(parsed.options.output === undefined ? {} : { outputPath: parsed.options.output }),\n });\n return;\n }\n\n if (parsed.options.launch?.headless === true) {\n throw new Error('record requires a headed browser. Remove \"--headless true\".');\n }\n\n if (typeof recordBrowser === \"object\") {\n throw new Error('record does not support browser.mode=\"attach\".');\n }\n\n const launch = {\n ...(parsed.options.launch ?? {}),\n headless: false,\n };\n\n const browserManager = new OpensteerBrowserManager({\n rootDir,\n workspace: parsed.options.workspace,\n engineName,\n browser: \"persistent\",\n launch,\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n const runtime = createOpensteerSemanticRuntime({\n provider: {\n mode: \"local\",\n },\n engine: engineName,\n runtimeOptions: {\n rootPath: browserManager.rootPath,\n cleanupRootOnClose: browserManager.cleanupRootOnDisconnect,\n workspace: parsed.options.workspace,\n browser: \"persistent\",\n launch,\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n await runOpensteerRecordCommand({\n runtime,\n closeSession: () => closeOwnedLocalBrowserSession(runtime, browserManager),\n workspace: parsed.options.workspace,\n url,\n rootDir,\n ...(parsed.options.output === undefined ? {} : { outputPath: parsed.options.output }),\n });\n}\n\nasync function closeOwnedLocalBrowserSession(\n runtime: ReturnType<typeof createOpensteerSemanticRuntime>,\n browserManager: OpensteerBrowserManager,\n): Promise<void> {\n let closeError: unknown;\n try {\n await runtime.close();\n } catch (error) {\n closeError = error;\n }\n try {\n await browserManager.close();\n } catch (error) {\n closeError ??= error;\n }\n if (closeError !== undefined) {\n throw closeError;\n }\n}\n\nfunction resolveCliBootstrapAction(argv: readonly string[]): \"help\" | \"version\" | undefined {\n if (argv.length === 0) {\n return \"help\";\n }\n\n for (const token of argv) {\n if (token === \"--version\") {\n return \"version\";\n }\n if (token === \"--help\" || token === \"-h\") {\n return \"help\";\n }\n }\n\n return undefined;\n}\n\nfunction buildCliBrowserProfile(\n parsed: ParsedCommandLine,\n): { readonly profileId: string; readonly reuseIfActive?: true } | undefined {\n if (\n parsed.options.cloudProfileReuseIfActive === true &&\n parsed.options.cloudProfileId === undefined\n ) {\n throw new Error('\"--cloud-profile-reuse-if-active\" requires \"--cloud-profile-id <id>\".');\n }\n\n return parsed.options.cloudProfileId === undefined\n ? undefined\n : {\n profileId: parsed.options.cloudProfileId,\n ...(parsed.options.cloudProfileReuseIfActive === true ? { reuseIfActive: true } : {}),\n };\n}\n\nfunction buildCliExplicitProvider(parsed: ParsedCommandLine): OpensteerProviderOptions | undefined {\n if (parsed.options.provider === \"local\") {\n return { mode: \"local\" };\n }\n if (parsed.options.provider === \"cloud\") {\n return { mode: \"cloud\" };\n }\n return undefined;\n}\n\nfunction resolveCliRuntimeSelection(parsed: ParsedCommandLine): {\n readonly engineName: OpensteerEngineName;\n readonly provider: OpensteerResolvedProvider;\n readonly runtimeProvider: OpensteerProviderOptions | undefined;\n} {\n const engineName = resolveCliEngineName(parsed);\n const provider = resolveCliProvider(parsed);\n assertProviderSupportsEngine(provider.mode, engineName);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n return {\n engineName,\n provider,\n runtimeProvider,\n };\n}\n\nfunction resolveCliEngineName(parsed: ParsedCommandLine): OpensteerEngineName {\n return resolveOpensteerEngineName({\n ...(parsed.options.requestedEngineName === undefined\n ? {}\n : { requested: parsed.options.requestedEngineName }),\n ...(process.env.OPENSTEER_ENGINE === undefined\n ? {}\n : { environment: process.env.OPENSTEER_ENGINE }),\n });\n}\n\nfunction resolveCliProvider(parsed: ParsedCommandLine): OpensteerResolvedProvider {\n const explicitProvider = buildCliExplicitProvider(parsed);\n return resolveOpensteerProvider({\n ...(explicitProvider === undefined ? {} : { provider: explicitProvider }),\n ...(process.env.OPENSTEER_PROVIDER === undefined\n ? {}\n : { environmentProvider: process.env.OPENSTEER_PROVIDER }),\n });\n}\n\nfunction buildCliRuntimeProvider(\n parsed: ParsedCommandLine,\n providerMode: OpensteerProviderMode,\n): OpensteerProviderOptions | undefined {\n const explicitProvider = buildCliExplicitProvider(parsed);\n if (providerMode === \"local\") {\n return explicitProvider?.mode === \"local\" ? explicitProvider : undefined;\n }\n\n const browserProfile = buildCliBrowserProfile(parsed);\n const hasCloudOverrides =\n parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n parsed.options.cloudAppBaseUrl !== undefined ||\n browserProfile !== undefined;\n if (!hasCloudOverrides && explicitProvider?.mode !== \"cloud\") {\n return undefined;\n }\n\n return {\n mode: \"cloud\",\n ...(parsed.options.cloudBaseUrl === undefined ? {} : { baseUrl: parsed.options.cloudBaseUrl }),\n ...(parsed.options.cloudApiKey === undefined ? {} : { apiKey: parsed.options.cloudApiKey }),\n ...(parsed.options.cloudAppBaseUrl === undefined\n ? {}\n : { appBaseUrl: parsed.options.cloudAppBaseUrl }),\n ...(browserProfile === undefined ? {} : { browserProfile }),\n };\n}\n\nfunction assertCloudCliOptionsMatchProvider(\n parsed: ParsedCommandLine,\n providerMode: OpensteerProviderMode,\n): void {\n if (\n providerMode !== \"cloud\" &&\n (parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n parsed.options.cloudAppBaseUrl !== undefined ||\n parsed.options.cloudProfileId !== undefined ||\n parsed.options.cloudProfileReuseIfActive === true)\n ) {\n throw new Error(\n 'Cloud-specific options require provider=cloud. Set \"--provider cloud\" or OPENSTEER_PROVIDER=cloud.',\n );\n }\n}\n\nasync function handleStatusCommand(parsed: ParsedCommandLine): Promise<void> {\n const provider = resolveCliProvider(parsed);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n environment: process.env,\n });\n const status = await collectOpensteerStatus({\n rootDir: process.cwd(),\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n provider,\n ...(runtimeConfig.cloud === undefined ? {} : { cloudConfig: runtimeConfig.cloud }),\n });\n\n if (parsed.options.json === true) {\n process.stdout.write(`${JSON.stringify(status, null, 2)}\\n`);\n return;\n }\n\n process.stdout.write(renderOpensteerStatus(status));\n}\n\nfunction printHelp(): void {\n process.stdout.write(getHelpText());\n}\n\nfunction printVersion(): void {\n process.stdout.write(`${opensteerPackage.version}\\n`);\n}\n\nmain().catch((error) => {\n const payload =\n error instanceof Error\n ? {\n error: {\n name: error.name,\n message: error.message,\n },\n }\n : {\n error: {\n name: \"Error\",\n message: String(error),\n },\n };\n process.stderr.write(`${JSON.stringify(payload)}\\n`);\n process.exitCode = 1;\n});\n"]}
1
+ {"version":3,"sources":["../../package.json","../../src/cli/env-loader.ts","../../src/cli/help.ts","../../src/cli/commands.ts","../../src/cli/parse.ts","../../src/cli/operation-input.ts","../../src/cli/output.ts","../../src/cli/open-browser.ts","../../src/cli/record.ts","../../src/cli/skills-installer.ts","../../src/cli/status.ts","../../src/cli/exec.ts","../../src/cli/view.ts","../../src/cli/bin.ts"],"names":["process","path","summary","require","spawn"],"mappings":"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","file":"bin.js","sourcesContent":["{\n \"name\": \"opensteer\",\n \"version\": \"0.9.4\",\n \"description\": \"Opensteer browser automation, replay, and reverse-engineering toolkit.\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"sideEffects\": false,\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/steerlabs/opensteer.git\",\n \"directory\": \"packages/opensteer\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/steerlabs/opensteer/issues\"\n },\n \"homepage\": \"https://github.com/steerlabs/opensteer/tree/main/packages/opensteer#readme\",\n \"keywords\": [\n \"browser-automation\",\n \"playwright\",\n \"web-automation\",\n \"agents\",\n \"scraping\",\n \"reverse-engineering\"\n ],\n \"engines\": {\n \"node\": \">=22\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"opensteer\": \"./dist/cli/bin.js\"\n },\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n }\n },\n \"files\": [\n \"dist\",\n \"skills\"\n ],\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.27.1\",\n \"@opensteer/engine-playwright\": \"workspace:*\",\n \"@opensteer/runtime-core\": \"workspace:*\",\n \"cheerio\": \"^1.1.2\",\n \"css-select\": \"^6.0.0\",\n \"domhandler\": \"^5.0.3\",\n \"prettier\": \"^3.8.1\",\n \"sharp\": \"^0.34.5\",\n \"skills\": \"^1.4.6\",\n \"ws\": \"^8.18.0\"\n },\n \"optionalDependencies\": {\n \"webcrack\": \"^2.15.1\"\n },\n \"peerDependencies\": {\n \"@opensteer/engine-abp\": \"workspace:*\"\n },\n \"peerDependenciesMeta\": {\n \"@opensteer/engine-abp\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@opensteer/browser-core\": \"workspace:*\",\n \"@opensteer/engine-abp\": \"workspace:*\",\n \"@opensteer/protocol\": \"workspace:*\"\n },\n \"scripts\": {\n \"build\": \"tsup && node ../../scripts/copy-opensteer-local-view-assets.mjs && node ../../scripts/sync-package-skills.mjs && node ../../scripts/sync-package-readme.mjs\",\n \"clean\": \"rimraf dist skills\",\n \"prepack\": \"node ../../scripts/copy-opensteer-local-view-assets.mjs && node ../../scripts/sync-package-skills.mjs && node ../../scripts/sync-package-readme.mjs\",\n \"typecheck\": \"tsc --noEmit -p tsconfig.json\"\n }\n}\n","import { loadEnvironment } from \"../env.js\";\n\nexport async function loadCliEnvironment(cwd: string): Promise<void> {\n loadEnvironment(cwd);\n}\n","export function getHelpText(): string {\n return `Opensteer CLI\n\nSession:\n open <url> [--workspace <id>] [--headless] [--provider local|cloud]\n close\n status\n view [--workspace <id>] [--json]\n view stop [--json]\n view --auto [--json]\n view --no-auto [--json]\n\nNavigation:\n goto <url> [--capture-network <label>]\n\nDOM:\n snapshot [action|extraction]\n click <element> [--button left|middle|right] [--persist <key>] [--capture-network <label>]\n hover <element> [--persist <key>] [--capture-network <label>]\n input <element> <text> [--press-enter] [--persist <key>] [--capture-network <label>]\n scroll <direction> <amount> [--element <n>] [--persist <key>] [--capture-network <label>]\n extract <schema> [--persist <key>]\n evaluate <script>\n init-script <script>\n\nTabs:\n tab list\n tab new [url]\n tab <n>\n tab close [n]\n\nNetwork:\n network query [--capture <label>] [--url <pattern>] [--hostname <host>] [--path <path>] [--method <m>] [--status <code>] [--type <resourceType>] [--json] [--before <id>] [--after <id>] [--limit <n>]\n --json filters to JSON and GraphQL responses only\n network detail <recordId> [--probe]\n fetch <url> [--method <m>] [--header key=value ...] [--query key=value ...] [--body <json>] [--body-text <text>] [--transport auto|direct|matched-tls|context|page] [--cookies] [--follow-redirects]\n\nBrowser State:\n state [domain]\n\nSDK:\n exec <expression> Run JS with the Opensteer SDK as 'this'. Supports await.\n\nComputer:\n computer click <x> <y> [--button left|right|middle] [--count <n>] [--modifiers Shift,Control,Alt,Meta] [--capture-network <label>]\n computer type <text> [--capture-network <label>]\n computer key <key> [--modifiers Shift,Control,Alt,Meta] [--capture-network <label>]\n computer scroll <x> <y> --dx <n> --dy <n> [--capture-network <label>]\n computer move <x> <y> [--capture-network <label>]\n computer drag <x1> <y1> <x2> <y2> [--steps <n>] [--capture-network <label>]\n computer screenshot [--format png|jpeg|webp]\n computer wait <ms>\n\nAdvanced:\n captcha solve --provider 2captcha|capsolver --api-key <key> [--type recaptcha-v2|hcaptcha|turnstile] [--site-key <key>] [--page-url <url>] [--timeout <ms>]\n scripts capture [--url-filter <pattern>] [--persist] [--inline] [--external] [--dynamic] [--workers]\n scripts beautify <artifactId> [--persist]\n scripts deobfuscate <artifactId> [--persist]\n scripts sandbox <artifactId> [--fidelity minimal|standard|full] [--timeout <ms>] [--clock real|manual] [--cookies <json>] [--globals <json>] [--ajax-routes <json>]\n interaction capture [--key <name>] [--duration <ms>] [--script <js>] [--include-storage] [--include-session-storage] [--include-indexed-db] [--global-names <list>] [--case-id <id>] [--notes <text>] [--tags <list>]\n interaction get <traceId>\n interaction replay <traceId>\n interaction diff <leftTraceId> <rightTraceId>\n artifact read <artifactId>\n\nOptions:\n --workspace <id> Required for stateful commands (or set OPENSTEER_WORKSPACE)\n --capture-network <l> Record network traffic during an action\n --help, --version\n`;\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nconst OPERATION_ALIASES = new Map<string, OpensteerSemanticOperationName>([\n [\"open\", \"session.open\"],\n [\"close\", \"session.close\"],\n [\"goto\", \"page.goto\"],\n [\"snapshot\", \"page.snapshot\"],\n [\"evaluate\", \"page.evaluate\"],\n [\"init-script\", \"page.add-init-script\"],\n [\"click\", \"dom.click\"],\n [\"hover\", \"dom.hover\"],\n [\"input\", \"dom.input\"],\n [\"scroll\", \"dom.scroll\"],\n [\"extract\", \"dom.extract\"],\n [\"tab\", \"page.activate\"],\n [\"tab list\", \"page.list\"],\n [\"tab new\", \"page.new\"],\n [\"tab close\", \"page.close\"],\n [\"network query\", \"network.query\"],\n [\"network detail\", \"network.detail\"],\n [\"fetch\", \"session.fetch\"],\n [\"state\", \"session.state\"],\n [\"computer click\", \"computer.execute\"],\n [\"computer type\", \"computer.execute\"],\n [\"computer key\", \"computer.execute\"],\n [\"computer scroll\", \"computer.execute\"],\n [\"computer move\", \"computer.execute\"],\n [\"computer drag\", \"computer.execute\"],\n [\"computer screenshot\", \"computer.execute\"],\n [\"computer wait\", \"computer.execute\"],\n [\"captcha solve\", \"captcha.solve\"],\n [\"scripts capture\", \"scripts.capture\"],\n [\"scripts beautify\", \"scripts.beautify\"],\n [\"scripts deobfuscate\", \"scripts.deobfuscate\"],\n [\"scripts sandbox\", \"scripts.sandbox\"],\n [\"interaction capture\", \"interaction.capture\"],\n [\"interaction get\", \"interaction.get\"],\n [\"interaction diff\", \"interaction.diff\"],\n [\"interaction replay\", \"interaction.replay\"],\n [\"artifact read\", \"artifact.read\"],\n]);\n\nexport function resolveOperation(\n command: readonly string[],\n): OpensteerSemanticOperationName | undefined {\n for (let length = Math.min(3, command.length); length >= 1; length -= 1) {\n const key = command.slice(0, length).join(\" \");\n const operation = OPERATION_ALIASES.get(key);\n if (operation) {\n return operation;\n }\n }\n return undefined;\n}\n\nexport function resolveCommandLength(tokens: readonly string[]): number {\n if (tokens.length === 0) {\n return 0;\n }\n if (tokens[0] === \"browser\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"skills\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"view\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"status\" || tokens[0] === \"record\" || tokens[0] === \"exec\") {\n return 1;\n }\n for (let length = Math.min(3, tokens.length); length >= 1; length -= 1) {\n if (OPERATION_ALIASES.has(tokens.slice(0, length).join(\" \"))) {\n return length;\n }\n }\n return Math.min(tokens.length, 1);\n}\n","import process from \"node:process\";\n\nimport type { OpensteerBrowserOptions } from \"@opensteer/protocol\";\n\nimport { normalizeOpensteerProviderMode, type OpensteerProviderMode } from \"../provider/config.js\";\nimport { resolveCommandLength } from \"./commands.js\";\n\nexport interface ParsedCliOptions {\n readonly workspace?: string;\n readonly url?: string;\n readonly output?: string;\n readonly requestedEngineName?: string;\n readonly provider?: OpensteerProviderMode;\n readonly cloudBaseUrl?: string;\n readonly cloudApiKey?: string;\n readonly cloudAppBaseUrl?: string;\n readonly cloudProfileId?: string;\n readonly cloudProfileReuseIfActive?: boolean;\n readonly json?: boolean;\n readonly agents?: readonly string[];\n readonly skills?: readonly string[];\n readonly localViewMode?: \"auto\" | \"manual\";\n readonly global?: boolean;\n readonly yes?: boolean;\n readonly copy?: boolean;\n readonly all?: boolean;\n readonly list?: boolean;\n readonly browser?: OpensteerBrowserOptions;\n readonly launch?: {\n readonly headless?: boolean;\n readonly executablePath?: string;\n readonly args?: readonly string[];\n readonly timeoutMs?: number;\n };\n readonly context?: Record<string, unknown>;\n readonly attachEndpoint?: string;\n readonly attachHeaders?: Readonly<Record<string, string>>;\n readonly sourceUserDataDir?: string;\n readonly sourceProfileDirectory?: string;\n}\n\nexport interface ParsedCommandLine {\n readonly command: readonly string[];\n readonly rest: readonly string[];\n readonly rawOptions: ReadonlyMap<string, readonly string[]>;\n readonly options: ParsedCliOptions;\n}\n\nconst CLI_OPTION_SPECS = {\n workspace: { kind: \"value\" },\n url: { kind: \"value\" },\n output: { kind: \"value\" },\n engine: { kind: \"value\" },\n provider: { kind: \"value\" },\n \"cloud-base-url\": { kind: \"value\" },\n \"cloud-api-key\": { kind: \"value\" },\n \"cloud-app-base-url\": { kind: \"value\" },\n \"cloud-profile-id\": { kind: \"value\" },\n \"cloud-profile-reuse-if-active\": { kind: \"boolean\" },\n json: { kind: \"boolean\" },\n agent: { kind: \"value\", multiple: true },\n skill: { kind: \"value\", multiple: true },\n global: { kind: \"boolean\" },\n yes: { kind: \"boolean\" },\n copy: { kind: \"boolean\" },\n all: { kind: \"boolean\" },\n list: { kind: \"boolean\" },\n auto: { kind: \"boolean\" },\n \"no-auto\": { kind: \"boolean\" },\n \"attach-endpoint\": { kind: \"value\" },\n \"attach-header\": { kind: \"value\", multiple: true },\n \"fresh-tab\": { kind: \"boolean\" },\n headless: { kind: \"boolean\" },\n \"executable-path\": { kind: \"value\" },\n arg: { kind: \"value\", multiple: true },\n \"timeout-ms\": { kind: \"value\" },\n context: { kind: \"value\" },\n \"source-user-data-dir\": { kind: \"value\" },\n \"source-profile-directory\": { kind: \"value\" },\n element: { kind: \"value\" },\n persist: { kind: \"optional-value\" },\n button: { kind: \"value\" },\n count: { kind: \"value\" },\n modifiers: { kind: \"value\" },\n \"press-enter\": { kind: \"boolean\" },\n \"capture-network\": { kind: \"value\" },\n capture: { kind: \"value\" },\n hostname: { kind: \"value\" },\n path: { kind: \"value\" },\n method: { kind: \"value\" },\n status: { kind: \"value\" },\n type: { kind: \"value\" },\n before: { kind: \"value\" },\n after: { kind: \"value\" },\n limit: { kind: \"value\" },\n query: { kind: \"value\", multiple: true },\n header: { kind: \"value\", multiple: true },\n body: { kind: \"value\" },\n \"body-text\": { kind: \"value\" },\n variables: { kind: \"value\" },\n dx: { kind: \"value\" },\n dy: { kind: \"value\" },\n steps: { kind: \"value\" },\n format: { kind: \"value\" },\n transport: { kind: \"value\" },\n cookies: { kind: \"optional-value\" },\n \"follow-redirects\": { kind: \"boolean\" },\n probe: { kind: \"boolean\" },\n \"api-key\": { kind: \"value\" },\n \"site-key\": { kind: \"value\" },\n \"page-url\": { kind: \"value\" },\n timeout: { kind: \"value\" },\n \"url-filter\": { kind: \"value\" },\n inline: { kind: \"boolean\" },\n external: { kind: \"boolean\" },\n dynamic: { kind: \"boolean\" },\n workers: { kind: \"boolean\" },\n fidelity: { kind: \"value\" },\n clock: { kind: \"value\" },\n globals: { kind: \"value\" },\n \"ajax-routes\": { kind: \"value\" },\n key: { kind: \"value\" },\n duration: { kind: \"value\" },\n script: { kind: \"value\" },\n \"include-storage\": { kind: \"boolean\" },\n \"include-session-storage\": { kind: \"boolean\" },\n \"include-indexed-db\": { kind: \"boolean\" },\n \"global-names\": { kind: \"value\" },\n \"case-id\": { kind: \"value\" },\n notes: { kind: \"value\" },\n tags: { kind: \"value\" },\n} as const satisfies Record<\n string,\n { readonly kind: \"boolean\" | \"value\" | \"optional-value\"; readonly multiple?: true }\n>;\n\nexport function parseCommandLine(argv: readonly string[]): ParsedCommandLine {\n const leadingTokens: string[] = [];\n let index = 0;\n while (index < argv.length && !argv[index]!.startsWith(\"--\")) {\n leadingTokens.push(argv[index]!);\n index += 1;\n }\n\n const commandLength = resolveCommandLength(leadingTokens);\n const command = leadingTokens.slice(0, commandLength);\n const rest: string[] = leadingTokens.slice(commandLength);\n const rawOptions = new Map<string, string[]>();\n\n while (index < argv.length) {\n const token = argv[index]!;\n if (token === \"--\") {\n rest.push(...argv.slice(index + 1));\n break;\n }\n if (!token.startsWith(\"--\")) {\n rest.push(token);\n index += 1;\n continue;\n }\n\n const separator = token.indexOf(\"=\");\n const key = token.slice(2, separator === -1 ? undefined : separator);\n const spec = CLI_OPTION_SPECS[key as keyof typeof CLI_OPTION_SPECS];\n if (spec === undefined) {\n throw new Error(`Unknown option: --${key}.`);\n }\n\n if (separator !== -1) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), token.slice(separator + 1)]);\n index += 1;\n continue;\n }\n\n const next = argv[index + 1];\n if (spec.kind === \"boolean\") {\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n continue;\n }\n\n if (spec.kind === \"optional-value\") {\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n continue;\n }\n\n if (next === undefined || next.startsWith(\"--\")) {\n throw new Error(\n `Option \"--${key}\" requires a value.${next?.startsWith(\"--\") === true ? ` Use \"--${key}=<value>\" when the value begins with \"--\".` : ``}`,\n );\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n }\n\n const workspace = readSingle(rawOptions, \"workspace\") ?? process.env.OPENSTEER_WORKSPACE;\n const requestedEngineName = readSingle(rawOptions, \"engine\");\n const attachEndpoint = readSingle(rawOptions, \"attach-endpoint\");\n const attachHeaders = parseKeyValueList(rawOptions.get(\"attach-header\"));\n const freshTab = readOptionalBoolean(rawOptions, \"fresh-tab\");\n const headless = readOptionalBoolean(rawOptions, \"headless\");\n const executablePath = readSingle(rawOptions, \"executable-path\");\n const launchArgs = rawOptions.get(\"arg\");\n const timeoutMs = readOptionalNumber(rawOptions, \"timeout-ms\");\n const browser =\n attachEndpoint === undefined\n ? undefined\n : ({\n mode: \"attach\",\n endpoint: attachEndpoint,\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions);\n\n const launch = {\n ...(headless === undefined ? {} : { headless }),\n ...(executablePath === undefined ? {} : { executablePath }),\n ...(launchArgs === undefined ? {} : { args: launchArgs }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n };\n\n const providerValue = shouldParseRuntimeProvider(command)\n ? readSingle(rawOptions, \"provider\")\n : undefined;\n const provider =\n providerValue === undefined\n ? undefined\n : normalizeOpensteerProviderMode(providerValue, \"--provider\");\n\n const url = readSingle(rawOptions, \"url\");\n const output = readSingle(rawOptions, \"output\");\n const cloudBaseUrl = readSingle(rawOptions, \"cloud-base-url\");\n const cloudApiKey = readSingle(rawOptions, \"cloud-api-key\");\n const cloudAppBaseUrl = readSingle(rawOptions, \"cloud-app-base-url\");\n const cloudProfileId = readSingle(rawOptions, \"cloud-profile-id\");\n const cloudProfileReuseIfActive = readOptionalBoolean(\n rawOptions,\n \"cloud-profile-reuse-if-active\",\n );\n const json = readOptionalBoolean(rawOptions, \"json\");\n const agents = rawOptions.get(\"agent\");\n const skills = rawOptions.get(\"skill\");\n const autoLocalView = readOptionalBoolean(rawOptions, \"auto\");\n const noAutoLocalView = readOptionalBoolean(rawOptions, \"no-auto\");\n if (autoLocalView === true && noAutoLocalView === true) {\n throw new Error('Options \"--auto\" and \"--no-auto\" cannot be combined.');\n }\n if (command[0] !== \"view\" && (autoLocalView !== undefined || noAutoLocalView !== undefined)) {\n throw new Error('Options \"--auto\" and \"--no-auto\" are only supported with \"view\".');\n }\n const global = readOptionalBoolean(rawOptions, \"global\");\n const yes = readOptionalBoolean(rawOptions, \"yes\");\n const copy = readOptionalBoolean(rawOptions, \"copy\");\n const all = readOptionalBoolean(rawOptions, \"all\");\n const list = readOptionalBoolean(rawOptions, \"list\");\n const context = readJsonObject(rawOptions, \"context\");\n const sourceUserDataDir = readSingle(rawOptions, \"source-user-data-dir\");\n const sourceProfileDirectory = readSingle(rawOptions, \"source-profile-directory\");\n\n const options: ParsedCliOptions = {\n ...(workspace === undefined ? {} : { workspace }),\n ...(url === undefined ? {} : { url }),\n ...(output === undefined ? {} : { output }),\n ...(requestedEngineName === undefined ? {} : { requestedEngineName }),\n ...(provider === undefined ? {} : { provider }),\n ...(cloudBaseUrl === undefined ? {} : { cloudBaseUrl }),\n ...(cloudApiKey === undefined ? {} : { cloudApiKey }),\n ...(cloudAppBaseUrl === undefined ? {} : { cloudAppBaseUrl }),\n ...(cloudProfileId === undefined ? {} : { cloudProfileId }),\n ...(cloudProfileReuseIfActive === undefined ? {} : { cloudProfileReuseIfActive }),\n ...(json === undefined ? {} : { json }),\n ...(agents === undefined ? {} : { agents }),\n ...(skills === undefined ? {} : { skills }),\n ...(autoLocalView === true\n ? { localViewMode: \"auto\" as const }\n : noAutoLocalView === true\n ? { localViewMode: \"manual\" as const }\n : {}),\n ...(global === undefined ? {} : { global }),\n ...(yes === undefined ? {} : { yes }),\n ...(copy === undefined ? {} : { copy }),\n ...(all === undefined ? {} : { all }),\n ...(list === undefined ? {} : { list }),\n ...(browser === undefined ? {} : { browser }),\n ...(Object.keys(launch).length === 0 ? {} : { launch }),\n ...(context === undefined ? {} : { context }),\n ...(attachEndpoint === undefined ? {} : { attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { attachHeaders }),\n ...(sourceUserDataDir === undefined ? {} : { sourceUserDataDir }),\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n };\n\n return {\n command,\n rest,\n rawOptions,\n options,\n };\n}\n\nfunction shouldParseRuntimeProvider(command: readonly string[]): boolean {\n return !(command[0] === \"captcha\" && command[1] === \"solve\");\n}\n\nexport function parseKeyValueList(\n values: readonly string[] | undefined,\n): Readonly<Record<string, string>> | undefined {\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n values.map((entry) => {\n const separator = entry.indexOf(\"=\");\n if (separator <= 0) {\n throw new Error(`Expected NAME=VALUE, received \"${entry}\".`);\n }\n return [entry.slice(0, separator), entry.slice(separator + 1)];\n }),\n );\n}\n\nexport function parseCommaSeparatedList(value: string | undefined): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n const values = value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n return values.length === 0 ? undefined : values;\n}\n\nexport function readSingle(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): string | undefined {\n const values = options.get(name);\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[values.length - 1];\n}\n\nexport function readOptionalBoolean(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): boolean | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n throw new Error(`Option \"--${name}\" must be true or false.`);\n}\n\nexport function readOptionalNumber(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): number | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Option \"--${name}\" must be a number.`);\n }\n return parsed;\n}\n\nexport function readJsonValue(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): unknown {\n const value = readSingle(options, name);\n return value === undefined ? undefined : JSON.parse(value);\n}\n\nexport function readJsonObject(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): Record<string, unknown> | undefined {\n const parsed = readJsonValue(options, name);\n if (parsed === undefined) {\n return undefined;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`Option \"--${name}\" must be a JSON object.`);\n }\n return parsed as Record<string, unknown>;\n}\n\nexport function readJsonArray(\n options: ReadonlyMap<string, readonly string[]>,\n name: string,\n): readonly unknown[] | undefined {\n const parsed = readJsonValue(options, name);\n if (parsed === undefined) {\n return undefined;\n }\n if (!Array.isArray(parsed)) {\n throw new Error(`Option \"--${name}\" must be a JSON array.`);\n }\n return parsed;\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\nimport type { OpensteerSemanticRuntime } from \"@opensteer/runtime-core\";\n\nimport {\n parseCommaSeparatedList,\n parseKeyValueList,\n readJsonArray,\n readJsonObject,\n readJsonValue,\n readOptionalBoolean,\n readOptionalNumber,\n readSingle,\n type ParsedCommandLine,\n} from \"./parse.js\";\n\nconst CLICK_BUTTONS = new Set([\"left\", \"middle\", \"right\"]);\nconst FETCH_TRANSPORTS = new Set([\"auto\", \"direct\", \"matched-tls\", \"context\", \"page\"]);\nconst CAPTCHA_PROVIDERS = new Set([\"2captcha\", \"capsolver\"]);\nconst CAPTCHA_TYPES = new Set([\"recaptcha-v2\", \"hcaptcha\", \"turnstile\"]);\nconst SANDBOX_FIDELITIES = new Set([\"minimal\", \"standard\", \"full\"]);\nconst SANDBOX_CLOCK_MODES = new Set([\"real\", \"manual\"]);\nconst SCREENSHOT_FORMATS = new Set([\"png\", \"jpeg\", \"webp\"]);\nconst KEY_MODIFIERS = new Set([\"Shift\", \"Control\", \"Alt\", \"Meta\"]);\nconst SCROLL_DIRECTIONS = new Set([\"up\", \"down\", \"left\", \"right\"]);\n\nexport async function buildOperationInput(\n operation: OpensteerSemanticOperationName,\n parsed: ParsedCommandLine,\n runtime: OpensteerSemanticRuntime,\n): Promise<Record<string, unknown>> {\n switch (operation) {\n case \"session.open\": {\n const url = parsed.rest[0];\n if (url === undefined) {\n throw new Error(\"open requires a URL.\");\n }\n return {\n url,\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n };\n }\n case \"page.list\":\n return {};\n case \"page.new\":\n return parsed.rest[0] === undefined ? {} : { url: parsed.rest[0] };\n case \"page.activate\": {\n const index = readRequiredPositiveInteger(parsed.rest[0], \"tab requires an index.\");\n return {\n pageRef: await resolvePageRefByIndex(runtime, index),\n };\n }\n case \"page.close\": {\n if (parsed.rest[0] === undefined) {\n return {};\n }\n return {\n pageRef: await resolvePageRefByIndex(\n runtime,\n readRequiredPositiveInteger(parsed.rest[0], \"tab close requires an index.\"),\n ),\n };\n }\n case \"page.goto\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"goto requires a URL.\");\n }\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n url: parsed.rest[0],\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"page.snapshot\":\n return parsed.rest[0] === undefined ? {} : { mode: parsed.rest[0] };\n case \"page.evaluate\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"evaluate requires a script.\");\n }\n return {\n script: joinRest(parsed.rest, 0),\n };\n case \"page.add-init-script\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"init-script requires a script.\");\n }\n return {\n script: joinRest(parsed.rest, 0),\n };\n case \"dom.click\": {\n const button = readSingle(parsed.rawOptions, \"button\");\n return {\n ...buildElementTargetInput(parsed, \"click\"),\n ...(button === undefined ? {} : { button: readClickButton(button) }),\n };\n }\n case \"dom.hover\":\n return buildElementTargetInput(parsed, \"hover\");\n case \"dom.input\": {\n if (parsed.rest[1] === undefined) {\n throw new Error(\"input requires an element number and text.\");\n }\n const pressEnter = readOptionalBoolean(parsed.rawOptions, \"press-enter\");\n return {\n ...buildElementTargetInput(parsed, \"input\"),\n text: joinRest(parsed.rest, 1),\n ...(pressEnter === undefined ? {} : { pressEnter }),\n };\n }\n case \"dom.scroll\": {\n const direction = readSingleDirection(parsed.rest[0]);\n const amount = readRequiredPositiveInteger(parsed.rest[1], \"scroll requires an amount.\");\n const element = readOptionalNumber(parsed.rawOptions, \"element\");\n const persist = readPersistKey(parsed, \"scroll\");\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n target:\n element === undefined\n ? {\n kind: \"selector\",\n selector: \"html\",\n }\n : {\n kind: \"element\",\n element,\n },\n direction,\n amount,\n ...(persist === undefined ? {} : { persist }),\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"dom.extract\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"extract requires a schema.\");\n }\n const persist = readExtractPersistKey(parsed);\n return {\n schema: parseRequiredJsonObjectArgument(joinRest(parsed.rest, 0), \"extract schema\"),\n ...(persist === undefined ? {} : { persist }),\n };\n }\n case \"network.query\": {\n const capture = readSingle(parsed.rawOptions, \"capture\");\n const url = readSingle(parsed.rawOptions, \"url\");\n const hostname = readSingle(parsed.rawOptions, \"hostname\");\n const path = readSingle(parsed.rawOptions, \"path\");\n const method = readSingle(parsed.rawOptions, \"method\");\n const status = readOptionalNumber(parsed.rawOptions, \"status\");\n const resourceType = readSingle(parsed.rawOptions, \"type\");\n const json = readOptionalBoolean(parsed.rawOptions, \"json\");\n const before = readSingle(parsed.rawOptions, \"before\");\n const after = readSingle(parsed.rawOptions, \"after\");\n const limit = readOptionalNumber(parsed.rawOptions, \"limit\");\n return {\n ...(capture === undefined ? {} : { capture }),\n ...(url === undefined ? {} : { url }),\n ...(hostname === undefined ? {} : { hostname }),\n ...(path === undefined ? {} : { path }),\n ...(method === undefined ? {} : { method }),\n ...(status === undefined ? {} : { status }),\n ...(resourceType === undefined ? {} : { resourceType }),\n ...(json === true ? { json: true } : {}),\n ...(before === undefined ? {} : { before }),\n ...(after === undefined ? {} : { after }),\n ...(limit === undefined ? {} : { limit }),\n };\n }\n case \"network.detail\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"network detail requires a record id.\");\n }\n const probeFlag = readOptionalBoolean(parsed.rawOptions, \"probe\");\n return {\n recordId: parsed.rest[0],\n ...(probeFlag === undefined ? {} : { probe: probeFlag }),\n };\n }\n case \"session.fetch\": {\n const url = parsed.rest[0];\n if (url === undefined) {\n throw new Error(\"fetch requires a URL.\");\n }\n const bodyJson = readJsonValue(parsed.rawOptions, \"body\");\n const bodyText = readSingle(parsed.rawOptions, \"body-text\");\n const method = readSingle(parsed.rawOptions, \"method\");\n const query = parseKeyValueList(parsed.rawOptions.get(\"query\"));\n const headers = parseKeyValueList(parsed.rawOptions.get(\"header\"));\n if (bodyJson !== undefined && bodyText !== undefined) {\n throw new Error('Use either \"--body\" or \"--body-text\", not both.');\n }\n const transport = readSingle(parsed.rawOptions, \"transport\");\n const cookies = readOptionalBoolean(parsed.rawOptions, \"cookies\");\n const followRedirects = readOptionalBoolean(parsed.rawOptions, \"follow-redirects\");\n return {\n url,\n ...(method === undefined ? {} : { method }),\n ...(query === undefined ? {} : { query }),\n ...(headers === undefined ? {} : { headers }),\n ...(bodyJson === undefined ? {} : { body: { json: bodyJson } }),\n ...(bodyText === undefined ? {} : { body: { text: bodyText } }),\n ...(transport === undefined ? {} : { transport: readFetchTransport(transport) }),\n ...(cookies === undefined ? {} : { cookies }),\n ...(followRedirects === undefined ? {} : { followRedirects }),\n };\n }\n case \"session.cookies\":\n case \"session.storage\":\n case \"session.state\":\n return parsed.rest[0] === undefined ? {} : { domain: parsed.rest[0] };\n case \"computer.execute\":\n return buildComputerExecuteInput(parsed);\n case \"captcha.solve\": {\n const provider = readSingle(parsed.rawOptions, \"provider\");\n const apiKey = readSingle(parsed.rawOptions, \"api-key\");\n const timeoutMs =\n readOptionalNumber(parsed.rawOptions, \"timeout\") ??\n readOptionalNumber(parsed.rawOptions, \"timeout-ms\");\n const type = readSingle(parsed.rawOptions, \"type\");\n const siteKey = readSingle(parsed.rawOptions, \"site-key\");\n const pageUrl = readSingle(parsed.rawOptions, \"page-url\");\n if (provider === undefined || apiKey === undefined) {\n throw new Error('captcha solve requires \"--provider\" and \"--api-key\".');\n }\n return {\n provider: readCaptchaProvider(provider),\n apiKey,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(type === undefined ? {} : { type: readCaptchaType(type) }),\n ...(siteKey === undefined ? {} : { siteKey }),\n ...(pageUrl === undefined ? {} : { pageUrl }),\n };\n }\n case \"scripts.capture\": {\n const urlFilter = readSingle(parsed.rawOptions, \"url-filter\");\n const persist = readOptionalBoolean(parsed.rawOptions, \"persist\");\n const includeInline = readOptionalBoolean(parsed.rawOptions, \"inline\");\n const includeExternal = readOptionalBoolean(parsed.rawOptions, \"external\");\n const includeDynamic = readOptionalBoolean(parsed.rawOptions, \"dynamic\");\n const includeWorkers = readOptionalBoolean(parsed.rawOptions, \"workers\");\n return {\n ...(urlFilter === undefined ? {} : { urlFilter }),\n ...(persist === undefined ? {} : { persist }),\n ...(includeInline === undefined ? {} : { includeInline }),\n ...(includeExternal === undefined ? {} : { includeExternal }),\n ...(includeDynamic === undefined ? {} : { includeDynamic }),\n ...(includeWorkers === undefined ? {} : { includeWorkers }),\n };\n }\n case \"scripts.beautify\":\n case \"scripts.deobfuscate\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(`${parsed.command.join(\" \")} requires an artifact id.`);\n }\n const persist = readOptionalBoolean(parsed.rawOptions, \"persist\");\n return {\n artifactId: parsed.rest[0],\n ...(persist === undefined ? {} : { persist }),\n };\n }\n case \"scripts.sandbox\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"scripts sandbox requires an artifact id.\");\n }\n {\n const fidelity = readSingle(parsed.rawOptions, \"fidelity\");\n const timeoutMs =\n readOptionalNumber(parsed.rawOptions, \"timeout\") ??\n readOptionalNumber(parsed.rawOptions, \"timeout-ms\");\n const clock = readSingle(parsed.rawOptions, \"clock\");\n const cookies = readJsonObject(parsed.rawOptions, \"cookies\");\n const globals = readJsonObject(parsed.rawOptions, \"globals\");\n const ajaxRoutes = readJsonArray(parsed.rawOptions, \"ajax-routes\");\n return {\n artifactId: parsed.rest[0],\n ...(fidelity === undefined ? {} : { fidelity: readSandboxFidelity(fidelity) }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(clock === undefined ? {} : { clockMode: readSandboxClockMode(clock) }),\n ...(cookies === undefined ? {} : { cookies }),\n ...(globals === undefined ? {} : { globals }),\n ...(ajaxRoutes === undefined ? {} : { ajaxRoutes }),\n };\n }\n case \"interaction.capture\": {\n const key = readSingle(parsed.rawOptions, \"key\");\n const durationMs = readOptionalNumber(parsed.rawOptions, \"duration\");\n const script = readSingle(parsed.rawOptions, \"script\");\n const includeStorage = readOptionalBoolean(parsed.rawOptions, \"include-storage\");\n const includeSessionStorage = readOptionalBoolean(\n parsed.rawOptions,\n \"include-session-storage\",\n );\n const includeIndexedDb = readOptionalBoolean(parsed.rawOptions, \"include-indexed-db\");\n const globalNames = parseCommaSeparatedList(readSingle(parsed.rawOptions, \"global-names\"));\n const caseId = readSingle(parsed.rawOptions, \"case-id\");\n const notes = readSingle(parsed.rawOptions, \"notes\");\n const tags = parseCommaSeparatedList(readSingle(parsed.rawOptions, \"tags\"));\n return {\n ...(key === undefined ? {} : { key }),\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(script === undefined ? {} : { script }),\n ...(includeStorage === undefined ? {} : { includeStorage }),\n ...(includeSessionStorage === undefined ? {} : { includeSessionStorage }),\n ...(includeIndexedDb === undefined ? {} : { includeIndexedDb }),\n ...(globalNames === undefined ? {} : { globalNames }),\n ...(caseId === undefined ? {} : { caseId }),\n ...(notes === undefined ? {} : { notes }),\n ...(tags === undefined ? {} : { tags }),\n };\n }\n case \"interaction.get\":\n case \"interaction.replay\":\n if (parsed.rest[0] === undefined) {\n throw new Error(`${parsed.command.join(\" \")} requires a trace id.`);\n }\n return {\n traceId: parsed.rest[0],\n };\n case \"interaction.diff\":\n if (parsed.rest[0] === undefined || parsed.rest[1] === undefined) {\n throw new Error(\"interaction diff requires two trace ids.\");\n }\n return {\n leftTraceId: parsed.rest[0],\n rightTraceId: parsed.rest[1],\n };\n case \"artifact.read\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"artifact read requires an artifact id.\");\n }\n return {\n artifactId: parsed.rest[0],\n };\n case \"session.close\":\n return {};\n default:\n throw new Error(\n `${operation} does not have a direct CLI input shape. Use a supported command or the SDK.`,\n );\n }\n}\n\nfunction buildElementTargetInput(\n parsed: ParsedCommandLine,\n verb: \"click\" | \"hover\" | \"input\",\n): Record<string, unknown> {\n const element = readRequiredPositiveInteger(\n parsed.rest[0],\n `${verb} requires an element number.`,\n );\n const persist = readPersistKey(parsed, verb);\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n return {\n target: {\n kind: \"element\",\n element,\n },\n ...(persist === undefined ? {} : { persist }),\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n}\n\nfunction buildComputerExecuteInput(parsed: ParsedCommandLine): Record<string, unknown> {\n const subcommand = parsed.command[1];\n const screenshotFormat = readSingle(parsed.rawOptions, \"format\");\n const screenshot =\n screenshotFormat === undefined\n ? undefined\n : {\n format: readScreenshotFormat(screenshotFormat),\n };\n const captureNetwork = readSingle(parsed.rawOptions, \"capture-network\");\n\n switch (subcommand) {\n case \"click\": {\n const button = readSingle(parsed.rawOptions, \"button\");\n const clickCount = readOptionalNumber(parsed.rawOptions, \"count\");\n const modifiers = readKeyModifiers(readSingle(parsed.rawOptions, \"modifiers\"));\n return {\n action: {\n type: \"click\",\n x: readRequiredNumber(parsed.rest[0], \"computer click requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer click requires y.\"),\n ...(button === undefined ? {} : { button: readClickButton(button) }),\n ...(clickCount === undefined ? {} : { clickCount }),\n ...(modifiers === undefined ? {} : { modifiers }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"type\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"computer type requires text.\");\n }\n return {\n action: {\n type: \"type\",\n text: joinRest(parsed.rest, 0),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n case \"key\": {\n if (parsed.rest[0] === undefined) {\n throw new Error(\"computer key requires a key.\");\n }\n const modifiers = readKeyModifiers(readSingle(parsed.rawOptions, \"modifiers\"));\n return {\n action: {\n type: \"key\",\n key: parsed.rest[0],\n ...(modifiers === undefined ? {} : { modifiers }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"scroll\": {\n const dx = readOptionalNumber(parsed.rawOptions, \"dx\");\n const dy = readOptionalNumber(parsed.rawOptions, \"dy\");\n if (dx === undefined || dy === undefined) {\n throw new Error('computer scroll requires \"--dx\" and \"--dy\".');\n }\n return {\n action: {\n type: \"scroll\",\n x: readRequiredNumber(parsed.rest[0], \"computer scroll requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer scroll requires y.\"),\n deltaX: dx,\n deltaY: dy,\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"move\":\n return {\n action: {\n type: \"move\",\n x: readRequiredNumber(parsed.rest[0], \"computer move requires x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer move requires y.\"),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n case \"drag\": {\n const steps = readOptionalNumber(parsed.rawOptions, \"steps\");\n return {\n action: {\n type: \"drag\",\n start: {\n x: readRequiredNumber(parsed.rest[0], \"computer drag requires start x.\"),\n y: readRequiredNumber(parsed.rest[1], \"computer drag requires start y.\"),\n },\n end: {\n x: readRequiredNumber(parsed.rest[2], \"computer drag requires end x.\"),\n y: readRequiredNumber(parsed.rest[3], \"computer drag requires end y.\"),\n },\n ...(steps === undefined ? {} : { steps }),\n },\n ...(captureNetwork === undefined ? {} : { captureNetwork }),\n };\n }\n case \"screenshot\":\n return {\n action: {\n type: \"screenshot\",\n },\n ...(screenshot === undefined ? {} : { screenshot }),\n };\n case \"wait\":\n return {\n action: {\n type: \"wait\",\n durationMs: readRequiredPositiveInteger(parsed.rest[0], \"computer wait requires ms.\"),\n },\n };\n default:\n throw new Error(`Unknown computer command: ${parsed.command.join(\" \")}`);\n }\n}\n\nasync function resolvePageRefByIndex(\n runtime: OpensteerSemanticRuntime,\n index: number,\n): Promise<string> {\n const pages = (await runtime.listPages({})).pages;\n const page = pages[index - 1];\n if (page === undefined) {\n throw new Error(`tab ${String(index)} does not exist.`);\n }\n return page.pageRef;\n}\n\nfunction readRequiredPositiveInteger(value: string | undefined, message: string): number {\n const parsed = readRequiredNumber(value, message);\n if (!Number.isInteger(parsed) || parsed < 1) {\n throw new Error(message);\n }\n return parsed;\n}\n\nfunction readRequiredNumber(value: string | undefined, message: string): number {\n if (value === undefined) {\n throw new Error(message);\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(message);\n }\n return parsed;\n}\n\nfunction readSingleDirection(value: string | undefined): \"up\" | \"down\" | \"left\" | \"right\" {\n if (value === undefined || !SCROLL_DIRECTIONS.has(value)) {\n throw new Error(\"scroll requires a direction: up, down, left, or right.\");\n }\n return value as \"up\" | \"down\" | \"left\" | \"right\";\n}\n\nfunction readClickButton(value: string | undefined): \"left\" | \"middle\" | \"right\" {\n if (value === undefined || !CLICK_BUTTONS.has(value)) {\n throw new Error('Expected \"--button\" to be one of: left, middle, right.');\n }\n return value as \"left\" | \"middle\" | \"right\";\n}\n\nfunction readFetchTransport(\n value: string | undefined,\n): \"auto\" | \"direct\" | \"matched-tls\" | \"context\" | \"page\" {\n if (value === undefined || !FETCH_TRANSPORTS.has(value)) {\n throw new Error(\n 'Expected \"--transport\" to be one of: auto, direct, matched-tls, context, page.',\n );\n }\n return value as \"auto\" | \"direct\" | \"matched-tls\" | \"context\" | \"page\";\n}\n\nfunction readCaptchaProvider(value: string | undefined): \"2captcha\" | \"capsolver\" {\n if (value === undefined || !CAPTCHA_PROVIDERS.has(value)) {\n throw new Error('Expected \"--provider\" to be one of: 2captcha, capsolver.');\n }\n return value as \"2captcha\" | \"capsolver\";\n}\n\nfunction readCaptchaType(value: string | undefined): \"recaptcha-v2\" | \"hcaptcha\" | \"turnstile\" {\n if (value === undefined || !CAPTCHA_TYPES.has(value)) {\n throw new Error('Expected \"--type\" to be one of: recaptcha-v2, hcaptcha, turnstile.');\n }\n return value as \"recaptcha-v2\" | \"hcaptcha\" | \"turnstile\";\n}\n\nfunction readSandboxFidelity(value: string | undefined): \"minimal\" | \"standard\" | \"full\" {\n if (value === undefined || !SANDBOX_FIDELITIES.has(value)) {\n throw new Error('Expected \"--fidelity\" to be one of: minimal, standard, full.');\n }\n return value as \"minimal\" | \"standard\" | \"full\";\n}\n\nfunction readSandboxClockMode(value: string | undefined): \"real\" | \"manual\" {\n if (value === undefined || !SANDBOX_CLOCK_MODES.has(value)) {\n throw new Error('Expected \"--clock\" to be one of: real, manual.');\n }\n return value as \"real\" | \"manual\";\n}\n\nfunction readScreenshotFormat(value: string | undefined): \"png\" | \"jpeg\" | \"webp\" {\n if (value === undefined || !SCREENSHOT_FORMATS.has(value)) {\n throw new Error('Expected \"--format\" to be one of: png, jpeg, webp.');\n }\n return value as \"png\" | \"jpeg\" | \"webp\";\n}\n\nfunction readKeyModifiers(\n value: string | undefined,\n): readonly (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[] | undefined {\n const modifiers = parseCommaSeparatedList(value);\n if (modifiers === undefined) {\n return undefined;\n }\n for (const modifier of modifiers) {\n if (!KEY_MODIFIERS.has(modifier)) {\n throw new Error('Expected \"--modifiers\" to contain only: Shift, Control, Alt, Meta.');\n }\n }\n return [...new Set(modifiers)] as readonly (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[];\n}\n\nfunction readPersistKey(\n parsed: ParsedCommandLine,\n verb: \"click\" | \"hover\" | \"input\" | \"scroll\",\n): string | undefined {\n const value = readSingle(parsed.rawOptions, \"persist\");\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\" || value === \"false\") {\n throw new Error(`${verb} requires \"--persist <key>\" when using --persist.`);\n }\n if (verb === \"scroll\" && readOptionalNumber(parsed.rawOptions, \"element\") === undefined) {\n throw new Error('scroll requires \"--element <n>\" when using \"--persist <key>\".');\n }\n return value;\n}\n\nfunction readExtractPersistKey(parsed: ParsedCommandLine): string | undefined {\n const value = readSingle(parsed.rawOptions, \"persist\");\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\" || value === \"false\") {\n throw new Error('extract requires \"--persist <key>\" when using --persist.');\n }\n return value;\n}\n\nfunction parseRequiredJsonObjectArgument(value: string, label: string): Record<string, unknown> {\n const parsed = JSON.parse(value);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction joinRest(rest: readonly string[], startIndex: number): string {\n return rest.slice(startIndex).join(\" \");\n}\n","import type { OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nexport function renderOperationOutput(\n operation: OpensteerSemanticOperationName,\n result: unknown,\n input?: Record<string, unknown>,\n): string {\n switch (operation) {\n case \"session.open\":\n case \"page.goto\":\n return renderJson(formatNavigationOutput(result));\n case \"page.snapshot\":\n return formatSnapshotOutput(result);\n case \"dom.click\":\n case \"dom.hover\":\n case \"dom.input\":\n case \"dom.scroll\":\n return renderJson(formatActionOutput(result, input));\n case \"dom.extract\":\n return renderJson(formatExtractOutput(result));\n case \"page.list\":\n case \"page.new\":\n case \"page.activate\":\n case \"page.close\":\n return formatTabOutput(result);\n case \"network.query\":\n return formatNetworkQueryOutput(result, input);\n case \"network.detail\":\n return formatNetworkDetailOutput(result);\n case \"session.fetch\":\n return renderJson(formatTransportOutput(result, operation));\n case \"session.state\":\n return formatStateOutput(result);\n case \"computer.execute\":\n return renderJson(formatComputerOutput(result));\n case \"scripts.capture\":\n return formatScriptsCaptureOutput(result);\n case \"scripts.beautify\":\n return formatScriptTransformOutput(result, \"scripts.beautify\");\n case \"scripts.deobfuscate\":\n return formatScriptTransformOutput(result, \"scripts.deobfuscate\");\n case \"scripts.sandbox\":\n return renderJson(formatScriptSandboxOutput(result));\n case \"captcha.solve\":\n return renderJson(formatCaptchaSolveOutput(result));\n case \"interaction.capture\":\n case \"interaction.get\":\n return renderJson(formatInteractionTraceOutput(result));\n case \"interaction.diff\":\n return renderJson(formatInteractionDiffOutput(result));\n case \"interaction.replay\":\n return renderJson(formatInteractionReplayOutput(result));\n default:\n return renderJson(result);\n }\n}\n\nfunction formatNavigationOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readStringField(result, \"url\") === undefined\n ? {}\n : { url: readStringField(result, \"url\") }),\n ...(readStringField(result, \"title\") === undefined\n ? {}\n : { title: readStringField(result, \"title\") }),\n };\n}\n\nfunction formatSnapshotOutput(result: unknown): string {\n if (\n result !== null &&\n typeof result === \"object\" &&\n typeof (result as { readonly html?: unknown }).html === \"string\"\n ) {\n return `${(result as { readonly html: string }).html}\\n`;\n }\n return renderJson(result);\n}\n\nfunction formatActionOutput(\n result: unknown,\n input: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n const target = readObjectField(result, \"target\");\n const output: Record<string, unknown> = {\n ...(readStringField(target, \"tagName\") === undefined\n ? {}\n : { tagName: readStringField(target, \"tagName\") }),\n ...(readStringField(target, \"pathHint\") === undefined\n ? {}\n : { pathHint: readStringField(target, \"pathHint\") }),\n };\n\n const point = readObjectField(result, \"point\");\n if (point !== undefined) {\n output.point = {\n ...(readNumberField(point, \"x\") === undefined ? {} : { x: readNumberField(point, \"x\") }),\n ...(readNumberField(point, \"y\") === undefined ? {} : { y: readNumberField(point, \"y\") }),\n };\n }\n\n const persist = readStringField(target, \"persist\");\n if (persist !== undefined) {\n output.persist = persist;\n }\n\n const text = readStringField(input, \"text\");\n if (text !== undefined) {\n output.text = text;\n }\n\n const direction = readStringField(input, \"direction\");\n if (direction !== undefined) {\n output.direction = direction;\n }\n\n const amount = readNumberField(input, \"amount\");\n if (amount !== undefined) {\n output.amount = amount;\n }\n\n return output;\n}\n\nfunction formatExtractOutput(result: unknown): unknown {\n const data = readUnknownField(result, \"data\");\n return data === undefined ? result : data;\n}\n\nfunction formatTabOutput(result: unknown): string {\n const pages = readArrayField(result, \"pages\");\n const activePageRef = readStringField(result, \"activePageRef\");\n const lines = [`[tabs] ${pages.length} tab${pages.length === 1 ? \"\" : \"s\"}`];\n pages.forEach((page, index) => {\n const marker = readStringField(page, \"pageRef\") === activePageRef ? \"*\" : \" \";\n lines.push(\n `${marker} ${String(index + 1).padStart(2, \" \")} ${truncateInline(readStringField(page, \"title\") ?? \"(untitled)\", 48)} ${readStringField(page, \"url\") ?? \"\"}`,\n );\n });\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatNetworkQueryOutput(\n result: unknown,\n input: Record<string, unknown> | undefined,\n): string {\n const records = readArrayField(result, \"records\");\n const capture = summarizeCapture(records);\n const jsonOnly = readBooleanField(input, \"json\") === true;\n const lines = [\n `[network.query] ${records.length} record${records.length === 1 ? \"\" : \"s\"}${capture === undefined ? \"\" : ` from capture \"${capture}\"`}${jsonOnly ? \" (JSON/GraphQL only)\" : \"\"}`,\n ];\n for (const record of records) {\n const graphql = readObjectField(record, \"graphql\");\n const operationName = readStringField(graphql, \"operationName\");\n lines.push(\n `${readStringField(record, \"recordId\") ?? \"rec:unknown\"} ${readStringField(record, \"method\") ?? \"GET\"} ${readStatus(record)} ${readStringField(record, \"resourceType\") ?? \"unknown\"} ${readStringField(record, \"url\") ?? \"\"}${operationName === undefined ? \"\" : ` [query: ${operationName}]`}`,\n );\n const request = readObjectField(record, \"request\");\n const response = readObjectField(record, \"response\");\n const websocket = readObjectField(record, \"websocket\");\n if (request !== undefined) {\n lines.push(` request: ${formatBodySummary(request)}`);\n }\n if (response !== undefined) {\n lines.push(` response: ${formatBodySummary(response)}`);\n }\n const subprotocol = readStringField(websocket, \"subprotocol\");\n if (subprotocol !== undefined) {\n lines.push(` subprotocol: ${subprotocol}`);\n }\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatNetworkDetailOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n\n const lines = [`[network.detail] ${readStringField(result, \"recordId\") ?? \"unknown\"}`, \"\"];\n const summary = readObjectField(result, \"summary\");\n if (summary !== undefined) {\n lines.push(\n `${readStringField(summary, \"method\") ?? \"GET\"} ${readStatus(summary)} ${readStringField(summary, \"url\") ?? \"\"}`,\n );\n }\n\n const graphql = readObjectField(result, \"graphql\");\n if (graphql !== undefined) {\n const operationType = readStringField(graphql, \"operationType\");\n const operationName = readStringField(graphql, \"operationName\");\n lines.push(\n `${[\"GraphQL:\", operationType, operationName].filter((value) => value !== undefined).join(\" \")}`,\n );\n const variables = readUnknownField(graphql, \"variables\");\n if (variables !== undefined) {\n lines.push(\"Variables:\");\n lines.push(indentLines(stringifyValue(variables)));\n }\n }\n\n const requestHeaders = readArrayField(result, \"requestHeaders\");\n if (requestHeaders.length > 0) {\n lines.push(\"\", \"Request headers:\");\n lines.push(...requestHeaders.map((header) => formatHeaderLine(header)));\n }\n\n const responseHeaders = readArrayField(result, \"responseHeaders\");\n if (responseHeaders.length > 0) {\n lines.push(\"\", \"Response headers:\");\n lines.push(...responseHeaders.map((header) => formatHeaderLine(header)));\n }\n\n const cookiesSent = readArrayField(result, \"cookiesSent\");\n if (cookiesSent.length > 0) {\n lines.push(\"\", \"Cookies sent:\");\n lines.push(\n ...cookiesSent.map((cookie) => {\n const name = readStringField(cookie, \"name\") ?? \"cookie\";\n const value = readStringField(cookie, \"value\") ?? \"\";\n return ` ${name}: ${truncateInline(value, 80)}`;\n }),\n );\n }\n\n const requestBody = readObjectField(result, \"requestBody\");\n if (requestBody !== undefined) {\n lines.push(\"\", formatBodyPreview(\"Request body\", requestBody));\n }\n\n const responseBody = readObjectField(result, \"responseBody\");\n if (responseBody !== undefined) {\n lines.push(\"\", formatBodyPreview(\"Response body\", responseBody));\n }\n\n const redirectChain = readArrayField(result, \"redirectChain\");\n if (redirectChain.length > 0) {\n lines.push(\n \"\",\n `Redirect chain (${redirectChain.length} hop${redirectChain.length === 1 ? \"\" : \"s\"}):`,\n );\n redirectChain.forEach((hop, index) => {\n const location = readStringField(hop, \"location\");\n lines.push(\n ` ${index + 1}. ${readStringField(hop, \"method\") ?? \"GET\"} ${readStatus(hop)} ${readStringField(hop, \"url\") ?? \"\"}${location === undefined ? \"\" : ` -> Location: ${location}`}`,\n );\n });\n }\n\n const transportProbe = readObjectField(result, \"transportProbe\");\n if (transportProbe !== undefined) {\n const recommended = readStringField(transportProbe, \"recommended\");\n const probeAttempts = readArrayField(transportProbe, \"attempts\");\n lines.push(\n \"\",\n `Transport probe${recommended === undefined ? \"\" : ` (recommended: ${recommended})`}:`,\n );\n for (const attempt of probeAttempts) {\n const transport = readStringField(attempt, \"transport\") ?? \"?\";\n const ok = readBooleanField(attempt, \"ok\") === true;\n const status = readNumberField(attempt, \"status\");\n const durationMs = readNumberField(attempt, \"durationMs\");\n const error = readStringField(attempt, \"error\");\n const marker = ok ? \"ok\" : \"fail\";\n lines.push(\n ` ${transport}: ${marker}${status === undefined ? \"\" : ` ${String(status)}`}${durationMs === undefined ? \"\" : ` (${String(durationMs)}ms)`}${error === undefined ? \"\" : ` - ${error}`}`,\n );\n }\n if (recommended !== undefined) {\n const summary = readObjectField(result, \"summary\");\n const method = readStringField(summary, \"method\") ?? \"GET\";\n const url = readStringField(summary, \"url\") ?? \"\";\n lines.push(\"\", `-> SDK: await this.fetch(\"${url}\", { method: \"${method}\" })`);\n }\n }\n\n const notes = readArrayField(result, \"notes\")\n .map((entry) => (typeof entry === \"string\" ? entry : undefined))\n .filter((entry): entry is string => entry !== undefined);\n if (notes.length > 0) {\n lines.push(\"\", ...notes.map((note) => `Note: ${note}`));\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatTransportOutput(\n result: unknown,\n operation: \"session.fetch\",\n): Record<string, unknown> {\n if (result === null || typeof result !== \"object\") {\n return { result };\n }\n\n const response = readObjectField(result, \"response\");\n const attempts = readArrayField(result, \"attempts\").map((attempt) => ({\n ...(readStringField(attempt, \"transport\") === undefined\n ? {}\n : { transport: readStringField(attempt, \"transport\") }),\n ...(readNumberField(attempt, \"status\") === undefined\n ? {}\n : { status: readNumberField(attempt, \"status\") }),\n ...(readStringField(attempt, \"note\") === undefined\n ? {}\n : { note: readStringField(attempt, \"note\") }),\n ...(readStringField(attempt, \"error\") === undefined\n ? {}\n : { error: readStringField(attempt, \"error\") }),\n }));\n const contentType =\n response === undefined\n ? undefined\n : (findHeaderValue(readArrayField(response, \"headers\"), \"content-type\") ??\n readStringField(readObjectField(response, \"body\"), \"mimeType\"));\n const body = readObjectField(response, \"body\");\n const bodySize =\n body === undefined\n ? undefined\n : (readNumberField(body, \"originalByteLength\") ??\n readNumberField(body, \"capturedByteLength\"));\n const output: Record<string, unknown> = {\n ...(readStringField(result, \"transport\") === undefined\n ? {}\n : { transport: readStringField(result, \"transport\") }),\n ...(response === undefined ? {} : { status: readNumberField(response, \"status\") }),\n ...(contentType === undefined ? {} : { contentType }),\n ...(bodySize === undefined ? {} : { bodySize }),\n };\n\n const note = readStringField(result, \"note\");\n if (note !== undefined) {\n output.note = note;\n }\n\n const data = readUnknownField(result, \"data\");\n if (data !== undefined) {\n output.data = truncateDataShape(data);\n }\n\n if (attempts.length > 0) {\n output.attempts = attempts;\n }\n\n if (JSON.stringify(output).length > 4_096 && data !== undefined) {\n output.data = `... truncated, ${JSON.stringify(data).length.toLocaleString(\"en-US\")} chars total`;\n }\n\n return output;\n}\n\nfunction formatCookiesOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const cookies = readArrayField(result, \"cookies\");\n const domain = readStringField(result, \"domain\");\n const lines = [\n `[cookies] ${cookies.length} cookie${cookies.length === 1 ? \"\" : \"s\"}${domain === undefined ? \"\" : ` for ${domain}`}`,\n ];\n for (const cookie of cookies) {\n const flags = [\n readBooleanField(cookie, \"session\") === true ? \"session\" : undefined,\n readBooleanField(cookie, \"httpOnly\") === true ? \"httpOnly\" : undefined,\n readBooleanField(cookie, \"secure\") === true ? \"secure\" : undefined,\n readStringField(cookie, \"expiresAt\"),\n ].filter((value) => value !== undefined);\n lines.push(\n ` ${padRight(readStringField(cookie, \"name\") ?? \"cookie\", 20)} ${truncateInline(readStringField(cookie, \"value\") ?? \"\", 48)}${flags.length === 0 ? \"\" : ` ${flags.join(\" \")}`}`,\n );\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatStorageOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const domains = readArrayField(result, \"domains\");\n const lines: string[] = [];\n for (const domain of domains) {\n const domainName = readStringField(domain, \"domain\") ?? \"unknown\";\n const localStorage = readArrayField(domain, \"localStorage\");\n const sessionStorage = readArrayField(domain, \"sessionStorage\");\n lines.push(\n `[storage] localStorage for ${domainName} (${localStorage.length} key${localStorage.length === 1 ? \"\" : \"s\"})`,\n \"\",\n );\n lines.push(...localStorage.map((entry) => formatStorageEntry(entry)));\n lines.push(\n \"\",\n `[storage] sessionStorage for ${domainName} (${sessionStorage.length} key${sessionStorage.length === 1 ? \"\" : \"s\"})`,\n \"\",\n );\n lines.push(...sessionStorage.map((entry) => formatStorageEntry(entry)), \"\");\n }\n return `${lines.join(\"\\n\").trimEnd()}\\n`;\n}\n\nfunction formatStateOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const domains = readArrayField(result, \"domains\");\n const lines: string[] = [];\n for (const domain of domains) {\n const name = readStringField(domain, \"domain\") ?? \"unknown\";\n lines.push(`[state] ${name}`, \"\");\n const cookies = readArrayField(domain, \"cookies\");\n lines.push(`Cookies (${cookies.length}):`);\n lines.push(\n ...cookies.map(\n (cookie) =>\n ` ${padRight(readStringField(cookie, \"name\") ?? \"cookie\", 16)} ${truncateInline(readStringField(cookie, \"value\") ?? \"\", 36)}`,\n ),\n );\n const hiddenFields = readArrayField(domain, \"hiddenFields\");\n lines.push(\"\", `Hidden fields (${hiddenFields.length}):`);\n lines.push(\n ...hiddenFields.map(\n (field) =>\n ` ${readStringField(field, \"path\") ?? \"input\"} = ${JSON.stringify(readStringField(field, \"value\") ?? \"\")}`,\n ),\n );\n const localStorage = readArrayField(domain, \"localStorage\");\n lines.push(\n \"\",\n `localStorage (${localStorage.length} key${localStorage.length === 1 ? \"\" : \"s\"}):`,\n );\n lines.push(...localStorage.map((entry) => formatStorageEntry(entry)));\n const sessionStorage = readArrayField(domain, \"sessionStorage\");\n lines.push(\n \"\",\n `sessionStorage (${sessionStorage.length} key${sessionStorage.length === 1 ? \"\" : \"s\"}):`,\n );\n lines.push(...sessionStorage.map((entry) => formatStorageEntry(entry)));\n const globals = readObjectField(domain, \"globals\");\n if (globals !== undefined) {\n lines.push(\"\", \"Globals:\");\n for (const [key, value] of Object.entries(globals)) {\n lines.push(` ${key} = ${truncateInline(stringifyScalarLike(value), 80)}`);\n }\n }\n lines.push(\"\");\n }\n return `${lines.join(\"\\n\").trimEnd()}\\n`;\n}\n\nfunction formatComputerOutput(result: unknown): Record<string, unknown> {\n const action = readObjectField(result, \"action\");\n const screenshot = readObjectField(result, \"screenshot\");\n const payload = readObjectField(screenshot, \"payload\");\n const timing = readObjectField(result, \"timing\");\n return {\n ...(action === undefined ? {} : { action }),\n ...(payload === undefined\n ? {}\n : {\n screenshot: {\n ...(readStringField(payload, \"uri\") === undefined\n ? {}\n : { uri: readStringField(payload, \"uri\") }),\n ...(readStringField(screenshot, \"format\") === undefined\n ? {}\n : { format: readStringField(screenshot, \"format\") }),\n ...(readObjectField(screenshot, \"size\") === undefined\n ? {}\n : { size: readObjectField(screenshot, \"size\") }),\n },\n }),\n ...(timing === undefined ? {} : { timingMs: timing }),\n };\n}\n\nfunction formatScriptsCaptureOutput(result: unknown): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const scripts = readArrayField(result, \"scripts\");\n const lines = [`[scripts.capture] ${scripts.length} script${scripts.length === 1 ? \"\" : \"s\"}`];\n for (const script of scripts) {\n const source = readStringField(script, \"source\") ?? \"unknown\";\n const url = readStringField(script, \"url\") ?? \"<inline>\";\n const artifactId = readStringField(script, \"artifactId\");\n const content = readStringField(script, \"content\") ?? \"\";\n lines.push(\n `${artifactId === undefined ? \"-\" : artifactId} ${source.padEnd(8, \" \")} ${truncateInline(url, 120)} (${content.length.toLocaleString(\"en-US\")} chars)`,\n );\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatScriptTransformOutput(\n result: unknown,\n label: \"scripts.beautify\" | \"scripts.deobfuscate\",\n): string {\n if (result === null || typeof result !== \"object\") {\n return renderJson(result);\n }\n const lines = [\n `[${label}] ${formatBytes(readNumberField(result, \"bytesBefore\"))} -> ${formatBytes(readNumberField(result, \"bytesAfter\"))}`,\n ];\n const artifactId = readStringField(result, \"artifactId\");\n if (artifactId !== undefined) {\n lines.push(`artifact: ${artifactId}`);\n }\n const transforms = readArrayField(result, \"transforms\")\n .map((value) => (typeof value === \"string\" ? value : undefined))\n .filter((value): value is string => value !== undefined);\n if (transforms.length > 0) {\n lines.push(`transforms: ${transforms.join(\", \")}`);\n }\n const content = readStringField(result, \"content\");\n if (content !== undefined) {\n lines.push(\"\", content);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatInteractionTraceOutput(result: unknown): Record<string, unknown> {\n const trace = readObjectField(result, \"trace\");\n if (trace === undefined) {\n return { result };\n }\n const payload = readObjectField(trace, \"payload\");\n return {\n ...(readStringField(trace, \"id\") === undefined ? {} : { id: readStringField(trace, \"id\") }),\n ...(readStringField(trace, \"key\") === undefined ? {} : { key: readStringField(trace, \"key\") }),\n ...(readStringField(trace, \"version\") === undefined\n ? {}\n : { version: readStringField(trace, \"version\") }),\n ...(readStringField(payload, \"mode\") === undefined\n ? {}\n : { mode: readStringField(payload, \"mode\") }),\n ...(readStringField(payload, \"url\") === undefined\n ? {}\n : { url: readStringField(payload, \"url\") }),\n ...(readArrayField(payload, \"events\").length === 0\n ? {}\n : { eventCount: readArrayField(payload, \"events\").length }),\n ...(readArrayField(payload, \"networkRecordIds\").length === 0\n ? {}\n : { networkRecordIds: readArrayField(payload, \"networkRecordIds\") }),\n };\n}\n\nfunction formatScriptSandboxOutput(result: unknown): Record<string, unknown> {\n if (result === null || typeof result !== \"object\") {\n return { result };\n }\n\n const capturedAjax = readArrayField(result, \"capturedAjax\").map((entry) => ({\n ...(readStringField(entry, \"method\") === undefined\n ? {}\n : { method: readStringField(entry, \"method\") }),\n ...(readStringField(entry, \"url\") === undefined ? {} : { url: readStringField(entry, \"url\") }),\n ...(readNumberField(entry, \"timestamp\") === undefined\n ? {}\n : { timestamp: readNumberField(entry, \"timestamp\") }),\n }));\n const errors = readArrayField(result, \"errors\")\n .map((entry) => (typeof entry === \"string\" ? entry : undefined))\n .filter((entry): entry is string => entry !== undefined);\n\n return {\n ...(readNumberField(result, \"durationMs\") === undefined\n ? {}\n : { durationMs: readNumberField(result, \"durationMs\") }),\n ...(capturedAjax.length === 0 ? {} : { capturedAjax }),\n ...(errors.length === 0 ? {} : { errors }),\n ...(readUnknownField(result, \"result\") === undefined\n ? {}\n : { result: truncateDataShape(readUnknownField(result, \"result\")) }),\n };\n}\n\nfunction formatCaptchaSolveOutput(result: unknown): Record<string, unknown> {\n const captcha = readObjectField(result, \"captcha\");\n return {\n ...(readStringField(result, \"provider\") === undefined\n ? {}\n : { provider: readStringField(result, \"provider\") }),\n ...(captcha === undefined\n ? {}\n : {\n captcha: {\n ...(readStringField(captcha, \"type\") === undefined\n ? {}\n : { type: readStringField(captcha, \"type\") }),\n ...(readStringField(captcha, \"siteKey\") === undefined\n ? {}\n : { siteKey: readStringField(captcha, \"siteKey\") }),\n ...(readStringField(captcha, \"pageUrl\") === undefined\n ? {}\n : { pageUrl: readStringField(captcha, \"pageUrl\") }),\n },\n }),\n ...(readStringField(result, \"token\") === undefined\n ? {}\n : { token: readStringField(result, \"token\") }),\n ...(readBooleanField(result, \"injected\") === undefined\n ? {}\n : { injected: readBooleanField(result, \"injected\") }),\n };\n}\n\nfunction formatInteractionDiffOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readObjectField(result, \"summary\") === undefined\n ? {}\n : { summary: readObjectField(result, \"summary\") }),\n ...(readArrayField(result, \"eventSequenceMismatches\").length === 0\n ? {}\n : { eventSequenceMismatches: readArrayField(result, \"eventSequenceMismatches\") }),\n ...(readArrayField(result, \"eventPropertyMismatches\").length === 0\n ? {}\n : { eventPropertyMismatches: readArrayField(result, \"eventPropertyMismatches\") }),\n ...(readArrayField(result, \"stateMismatches\").length === 0\n ? {}\n : { stateMismatches: readArrayField(result, \"stateMismatches\") }),\n ...(readArrayField(result, \"downstreamRequestMismatches\").length === 0\n ? {}\n : { downstreamRequestMismatches: readArrayField(result, \"downstreamRequestMismatches\") }),\n };\n}\n\nfunction formatInteractionReplayOutput(result: unknown): Record<string, unknown> {\n return {\n ...(readStringField(result, \"traceId\") === undefined\n ? {}\n : { traceId: readStringField(result, \"traceId\") }),\n ...(readNumberField(result, \"replayedEventCount\") === undefined\n ? {}\n : { replayedEventCount: readNumberField(result, \"replayedEventCount\") }),\n ...(readBooleanField(result, \"success\") === undefined\n ? {}\n : { success: readBooleanField(result, \"success\") }),\n ...(readStringField(result, \"error\") === undefined\n ? {}\n : { error: readStringField(result, \"error\") }),\n };\n}\n\nfunction formatBodySummary(body: unknown): string {\n if (body === null || typeof body !== \"object\") {\n return \"unknown\";\n }\n if (readBooleanField(body, \"streaming\") === true) {\n return `streaming (${readStringField(body, \"contentType\") ?? \"unknown\"})`;\n }\n return `${formatBytes(readNumberField(body, \"bytes\"))} (${readStringField(body, \"contentType\") ?? \"unknown\"})`;\n}\n\nfunction formatBodyPreview(label: string, preview: unknown): string {\n const header = `${label} (${formatBytes(readNumberField(preview, \"bytes\"))}${readStringField(preview, \"contentType\") === undefined ? \"\" : `, ${readStringField(preview, \"contentType\")}`}${readBooleanField(preview, \"truncated\") === true ? \", truncated\" : \"\"}):`;\n const data = readUnknownField(preview, \"data\");\n if (data === undefined) {\n return header;\n }\n return `${header}\\n${indentLines(stringifyValue(data))}`;\n}\n\nfunction formatStorageEntry(entry: unknown): string {\n return ` ${padRight(readStringField(entry, \"key\") ?? \"key\", 18)} ${truncateInline(readStringField(entry, \"value\") ?? \"\", 80)}`;\n}\n\nfunction formatHeaderLine(header: unknown): string {\n return ` ${readStringField(header, \"name\") ?? \"header\"}: ${readStringField(header, \"value\") ?? \"\"}`;\n}\n\nfunction truncateDataShape(value: unknown, depth = 0): unknown {\n if (\n value === null ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n value === undefined\n ) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.length <= 200 ? value : `${value.slice(0, 200)}...${value.length} chars total`;\n }\n if (Array.isArray(value)) {\n if (depth >= 4) {\n return `... ${value.length} items`;\n }\n if (value.length > 3) {\n return [\n `... ${value.length} items, first 2 shown`,\n truncateDataShape(value[0], depth + 1),\n truncateDataShape(value[1], depth + 1),\n ];\n }\n return value.map((entry) => truncateDataShape(entry, depth + 1));\n }\n if (typeof value === \"object\") {\n const entries = Object.entries(value as Record<string, unknown>);\n if (depth >= 4) {\n return `... ${entries.length} keys`;\n }\n return Object.fromEntries(\n entries.map(([key, entry]) => [key, truncateDataShape(entry, depth + 1)]),\n );\n }\n return String(value);\n}\n\nfunction readArrayField(value: unknown, key: string): readonly unknown[] {\n if (value === null || typeof value !== \"object\") {\n return [];\n }\n const field = (value as Record<string, unknown>)[key];\n return Array.isArray(field) ? field : [];\n}\n\nfunction readObjectField(value: unknown, key: string): Record<string, unknown> | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return field !== null && typeof field === \"object\" && !Array.isArray(field)\n ? (field as Record<string, unknown>)\n : undefined;\n}\n\nfunction readUnknownField(value: unknown, key: string): unknown {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n return (value as Record<string, unknown>)[key];\n}\n\nfunction readStringField(value: unknown, key: string): string | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"string\" ? field : undefined;\n}\n\nfunction readNumberField(value: unknown, key: string): number | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"number\" ? field : undefined;\n}\n\nfunction readBooleanField(value: unknown, key: string): boolean | undefined {\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n const field = (value as Record<string, unknown>)[key];\n return typeof field === \"boolean\" ? field : undefined;\n}\n\nfunction readStatus(value: unknown): string {\n const status = readNumberField(value, \"status\");\n return status === undefined ? \"-\" : String(status);\n}\n\nfunction findHeaderValue(headers: readonly unknown[], name: string): string | undefined {\n const normalized = name.toLowerCase();\n for (const header of headers) {\n if (readStringField(header, \"name\")?.toLowerCase() === normalized) {\n return readStringField(header, \"value\");\n }\n }\n return undefined;\n}\n\nfunction formatBytes(bytes: number | undefined): string {\n if (bytes === undefined) {\n return \"unknown\";\n }\n return `${bytes.toLocaleString(\"en-US\")} bytes`;\n}\n\nfunction summarizeCapture(records: readonly unknown[]): string | undefined {\n const captures = new Set(\n records\n .map((record) => readStringField(record, \"capture\"))\n .filter((capture): capture is string => capture !== undefined),\n );\n return captures.size === 1 ? [...captures][0] : undefined;\n}\n\nfunction padRight(value: string, width: number): string {\n return value.length >= width ? value : `${value}${\" \".repeat(width - value.length)}`;\n}\n\nfunction truncateInline(value: string, limit: number): string {\n return value.length <= limit\n ? value\n : `${value.slice(0, Math.max(0, limit - 18))}...${value.length} chars`;\n}\n\nfunction stringifyValue(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value, null, 2);\n}\n\nfunction stringifyScalarLike(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nfunction indentLines(value: string): string {\n return value\n .split(\"\\n\")\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n}\n\nfunction renderJson(value: unknown): string {\n return `${JSON.stringify(value, null, 2)}\\n`;\n}\n","import { spawn } from \"node:child_process\";\nimport os from \"node:os\";\nimport process from \"node:process\";\n\nexport type BrowserUrlOpener = (url: string) => Promise<void>;\n\nexport async function openBrowserUrl(url: string): Promise<void> {\n const command = resolveOpenBrowserCommand(url);\n await new Promise<void>((resolve, reject) => {\n const child = spawn(command.executable, command.args, {\n detached: process.platform !== \"win32\",\n stdio: \"ignore\",\n });\n child.once(\"error\", reject);\n child.once(\"spawn\", () => {\n child.unref();\n resolve();\n });\n });\n}\n\nfunction resolveOpenBrowserCommand(url: string): {\n readonly executable: string;\n readonly args: readonly string[];\n} {\n if (process.platform === \"darwin\") {\n return {\n executable: \"open\",\n args: [url],\n };\n }\n\n if (process.platform === \"win32\" || isWsl()) {\n return {\n executable: process.platform === \"win32\" ? \"cmd\" : \"cmd.exe\",\n args: [\"/c\", \"start\", \"\", url],\n };\n }\n\n return {\n executable: \"xdg-open\",\n args: [url],\n };\n}\n\nfunction isWsl(): boolean {\n return (\n process.platform === \"linux\" &&\n (process.env.WSL_DISTRO_NAME !== undefined || os.release().toLowerCase().includes(\"microsoft\"))\n );\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport {\n FlowRecorderCollector,\n generateReplayScript,\n type RecorderRuntimeAdapter,\n type RecordedAction,\n} from \"@opensteer/runtime-core\";\nimport type {\n CloudSessionRecordingState,\n OpensteerBrowserContextOptions,\n OpensteerBrowserLaunchOptions,\n OpensteerOpenOutput,\n OpensteerSessionInfo,\n PageRef,\n} from \"@opensteer/protocol\";\n\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport { requireCloudAppBaseUrl, type OpensteerCloudConfig } from \"../cloud/config.js\";\nimport { CloudSessionProxy } from \"../cloud/session-proxy.js\";\nimport type { OpensteerDisconnectableRuntime } from \"../sdk/semantic-runtime.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport { openBrowserUrl, type BrowserUrlOpener } from \"./open-browser.js\";\n\nexport interface OpensteerRecordCommandInput {\n readonly runtime: OpensteerDisconnectableRuntime;\n readonly closeSession?: () => Promise<void>;\n readonly workspace: string;\n readonly url: string;\n readonly rootDir: string;\n readonly outputPath?: string;\n readonly pollIntervalMs?: number;\n readonly stdout?: NodeJS.WritableStream;\n readonly stderr?: NodeJS.WritableStream;\n}\n\ninterface OpensteerCloudRecordRuntime {\n open(input: {\n readonly url?: string;\n readonly browser?: \"temporary\" | \"persistent\";\n readonly launch?: OpensteerBrowserLaunchOptions;\n readonly context?: OpensteerBrowserContextOptions;\n }): Promise<OpensteerOpenOutput>;\n info(): Promise<OpensteerSessionInfo>;\n close(): Promise<unknown>;\n}\n\ninterface OpensteerCloudRecordClient {\n startSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;\n getSessionRecording(sessionId: string): Promise<CloudSessionRecordingState>;\n}\n\nexport interface OpensteerCloudRecordCommandInput {\n readonly cloudConfig: OpensteerCloudConfig;\n readonly workspace: string;\n readonly url: string;\n readonly rootDir: string;\n readonly outputPath?: string;\n readonly browser?: \"temporary\" | \"persistent\";\n readonly launch?: OpensteerBrowserLaunchOptions;\n readonly context?: OpensteerBrowserContextOptions;\n readonly pollIntervalMs?: number;\n readonly stdout?: NodeJS.WritableStream;\n readonly stderr?: NodeJS.WritableStream;\n readonly runtime?: OpensteerCloudRecordRuntime;\n readonly client?: OpensteerCloudRecordClient;\n readonly sleep?: (ms: number) => Promise<void>;\n readonly openUrl?: BrowserUrlOpener;\n}\n\nexport async function runOpensteerRecordCommand(input: OpensteerRecordCommandInput): Promise<void> {\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const outputPath = resolveRecordOutputPath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n ...(input.outputPath === undefined ? {} : { outputPath: input.outputPath }),\n });\n const runtime = input.runtime;\n const collector = new FlowRecorderCollector(createRecorderRuntimeAdapter(runtime), {\n ...(input.pollIntervalMs === undefined ? {} : { pollIntervalMs: input.pollIntervalMs }),\n onAction: (action) => {\n stderr.write(`${formatRecordedAction(action)}\\n`);\n },\n });\n stderr.write(\n `Recording browser actions for workspace \"${input.workspace}\". Click \"Stop recording\" in the browser when you're done.\\n`,\n );\n let closed = false;\n\n try {\n const opened = await runtime.open({\n url: input.url,\n });\n await collector.install();\n collector.start();\n\n await collector.waitForStop();\n\n const actions = await collector.stop();\n const script = generateReplayScript({\n actions,\n workspace: input.workspace,\n startUrl: opened.url,\n });\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, script, \"utf8\");\n\n if (input.closeSession !== undefined) {\n await input.closeSession();\n closed = true;\n }\n\n stdout.write(`${outputPath}\\n`);\n stderr.write(`Wrote replay script to ${outputPath}\\n`);\n } finally {\n if (!closed) {\n await runtime.disconnect().catch(() => undefined);\n }\n }\n}\n\nexport async function runOpensteerCloudRecordCommand(\n input: OpensteerCloudRecordCommandInput,\n): Promise<void> {\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const cloudAppBaseUrl = requireCloudAppBaseUrl(input.cloudConfig);\n const outputPath = resolveRecordOutputPath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n ...(input.outputPath === undefined ? {} : { outputPath: input.outputPath }),\n });\n let cloud: OpensteerCloudClient | undefined;\n const resolveCloud = (): OpensteerCloudClient => {\n cloud ??= new OpensteerCloudClient(input.cloudConfig);\n return cloud;\n };\n const runtime =\n input.runtime ??\n new CloudSessionProxy(resolveCloud(), {\n rootDir: input.rootDir,\n workspace: input.workspace,\n });\n const client = input.client ?? resolveCloud();\n const sleep = input.sleep ?? delay;\n const openUrl = input.openUrl ?? openBrowserUrl;\n let closed = false;\n\n try {\n await runtime.open({\n url: input.url,\n ...(input.browser === undefined ? {} : { browser: input.browser }),\n ...(input.launch === undefined ? {} : { launch: input.launch }),\n ...(input.context === undefined ? {} : { context: input.context }),\n });\n const sessionId = await resolveCloudRecordingSessionId(runtime);\n const sessionUrl = buildCloudRecordingSessionUrl(cloudAppBaseUrl, sessionId);\n\n await client.startSessionRecording(sessionId);\n await tryOpenCloudRecordingSessionUrl({\n sessionUrl,\n stderr,\n openUrl,\n });\n stderr.write(\n `Recording browser actions for workspace \"${input.workspace}\". Open ${sessionUrl} and click \"Stop recording\" in the browser session toolbar when you're done.\\n`,\n );\n\n const completed = await waitForCloudRecordingCompletion({\n client,\n sessionId,\n ...(input.pollIntervalMs === undefined ? {} : { pollIntervalMs: input.pollIntervalMs }),\n sleep,\n });\n if (completed.result === undefined) {\n throw new Error(\"Cloud recording completed without a replay script.\");\n }\n\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, completed.result.script, \"utf8\");\n await runtime.close();\n closed = true;\n\n stdout.write(`${outputPath}\\n`);\n stderr.write(`Cloud browser session: ${sessionUrl}\\n`);\n stderr.write(`Wrote replay script to ${outputPath}\\n`);\n } finally {\n if (!closed) {\n await runtime.close().catch(() => undefined);\n }\n }\n}\n\nexport function resolveRecordOutputPath(input: {\n readonly rootDir: string;\n readonly workspace: string;\n readonly outputPath?: string;\n}): string {\n if (input.outputPath !== undefined) {\n return path.resolve(input.rootDir, input.outputPath);\n }\n return path.join(\n resolveFilesystemWorkspacePath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n }),\n \"recorded-flow.ts\",\n );\n}\n\nexport function createRecorderRuntimeAdapter(\n runtime: OpensteerDisconnectableRuntime,\n): RecorderRuntimeAdapter {\n return {\n addInitScript: (input) => runtime.addInitScript(input),\n evaluate: async (input) => {\n const output = await runtime.evaluate({\n script: input.script,\n ...(input.pageRef === undefined ? {} : { pageRef: input.pageRef as PageRef }),\n });\n return output.value;\n },\n listPages: async () => {\n const output = await runtime.listPages();\n return {\n pages: output.pages.map((page) => ({\n pageRef: page.pageRef,\n url: page.url,\n ...(page.openerPageRef === undefined ? {} : { openerPageRef: page.openerPageRef }),\n })),\n };\n },\n };\n}\n\nfunction buildCloudRecordingSessionUrl(appBaseUrl: string, sessionId: string): string {\n return `${appBaseUrl}/browsers/${encodeURIComponent(sessionId)}`;\n}\n\nasync function tryOpenCloudRecordingSessionUrl(input: {\n readonly sessionUrl: string;\n readonly stderr: NodeJS.WritableStream;\n readonly openUrl: BrowserUrlOpener;\n}): Promise<void> {\n try {\n await input.openUrl(input.sessionUrl);\n } catch {\n input.stderr.write(\n `Could not automatically open the cloud browser session. Open it manually: ${input.sessionUrl}\\n`,\n );\n }\n}\n\nasync function resolveCloudRecordingSessionId(\n runtime: Pick<OpensteerCloudRecordRuntime, \"info\">,\n): Promise<string> {\n const info = await runtime.info();\n if (typeof info.sessionId !== \"string\" || info.sessionId.length === 0) {\n throw new Error(\"Cloud recording could not resolve the created session id.\");\n }\n return info.sessionId;\n}\n\nasync function waitForCloudRecordingCompletion(input: {\n readonly client: OpensteerCloudRecordClient;\n readonly sessionId: string;\n readonly pollIntervalMs?: number;\n readonly sleep: (ms: number) => Promise<void>;\n}): Promise<CloudSessionRecordingState> {\n const pollIntervalMs = input.pollIntervalMs ?? 1_000;\n\n for (;;) {\n const state = await input.client.getSessionRecording(input.sessionId);\n if (state.status === \"completed\") {\n return state;\n }\n if (state.status === \"failed\") {\n throw new Error(state.error ?? \"Cloud recording failed.\");\n }\n await input.sleep(pollIntervalMs);\n }\n}\n\nfunction formatRecordedAction(action: RecordedAction): string {\n const time = new Date(action.timestamp).toISOString().slice(11, 19);\n switch (action.kind) {\n case \"click\":\n return `[${time}] click ${action.pageId} -> ${action.selector ?? \"<unknown>\"}`;\n case \"dblclick\":\n return `[${time}] dblclick ${action.pageId} -> ${action.selector ?? \"<unknown>\"}`;\n case \"type\":\n return `[${time}] type ${action.pageId} -> ${action.selector ?? \"<unknown>\"} -> ${JSON.stringify(action.detail.text)}`;\n case \"keypress\":\n return `[${time}] keypress ${action.pageId} -> ${action.detail.key}`;\n case \"scroll\":\n return `[${time}] scroll ${action.pageId} -> (${String(action.detail.deltaX)}, ${String(action.detail.deltaY)})`;\n case \"select-option\":\n return `[${time}] select ${action.pageId} -> ${action.selector ?? \"<unknown>\"} -> ${JSON.stringify(action.detail.value)}`;\n case \"navigate\":\n return `[${time}] navigate ${action.pageId} -> ${action.detail.url}`;\n case \"new-tab\":\n return `[${time}] new-tab ${action.pageId} -> ${action.detail.initialUrl}`;\n case \"close-tab\":\n return `[${time}] close-tab ${action.pageId}`;\n case \"switch-tab\":\n return `[${time}] switch-tab -> ${action.detail.toPageId}`;\n case \"go-back\":\n return `[${time}] go-back ${action.pageId}`;\n case \"go-forward\":\n return `[${time}] go-forward ${action.pageId}`;\n case \"reload\":\n return `[${time}] reload ${action.pageId}`;\n }\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { fileURLToPath } from \"node:url\";\n\nexport const OPENSTEER_GITHUB_SOURCE = \"steerlabs/opensteer\";\n\nexport interface OpensteerSkillsInstallOptions {\n readonly agents?: readonly string[];\n readonly skills?: readonly string[];\n readonly global?: boolean;\n readonly yes?: boolean;\n readonly copy?: boolean;\n readonly all?: boolean;\n readonly list?: boolean;\n}\n\ninterface OpensteerSkillsInvocation {\n readonly cliPath: string;\n readonly cliArgs: readonly string[];\n}\n\ninterface OpensteerSkillsInstallerDeps {\n readonly resolveSkillsCliPath: () => string;\n readonly resolveRepoSkillSourcePath: () => string | undefined;\n readonly resolveLocalSkillSourcePath: () => string;\n readonly checkGitHubReachable: () => Promise<boolean>;\n readonly spawnInvocation: (invocation: OpensteerSkillsInvocation) => Promise<number>;\n}\n\nexport function createOpensteerSkillsInvocation(input: {\n readonly options: OpensteerSkillsInstallOptions;\n readonly skillsCliPath: string;\n readonly skillSourcePath: string;\n}): OpensteerSkillsInvocation {\n const cliArgs = [\"add\", input.skillSourcePath];\n\n if (input.options.all === true) {\n cliArgs.push(\"--all\");\n } else {\n const selectedSkills = resolveSelectedSkills(input.options);\n for (const skill of selectedSkills) {\n cliArgs.push(\"--skill\", skill);\n }\n }\n\n for (const agent of input.options.agents ?? []) {\n cliArgs.push(\"--agent\", agent);\n }\n\n if (input.options.global === true) {\n cliArgs.push(\"--global\");\n }\n if (input.options.yes === true) {\n cliArgs.push(\"--yes\");\n }\n if (input.options.copy === true) {\n cliArgs.push(\"--copy\");\n }\n if (input.options.list === true) {\n cliArgs.push(\"--list\");\n }\n\n return {\n cliPath: input.skillsCliPath,\n cliArgs,\n };\n}\n\nexport function resolveOpensteerSkillsCliPath(): string {\n const require = createRequire(import.meta.url);\n const skillsPackagePath = require.resolve(\"skills/package.json\");\n const skillsPackageDir = path.dirname(skillsPackagePath);\n const cliPath = path.join(skillsPackageDir, \"bin\", \"cli.mjs\");\n if (!existsSync(cliPath)) {\n throw new Error(`skills CLI entrypoint was not found at \"${cliPath}\".`);\n }\n return cliPath;\n}\n\nexport function resolveOpensteerLocalSkillSourcePath(): string {\n let ancestor = path.dirname(fileURLToPath(import.meta.url));\n\n for (let index = 0; index < 6; index += 1) {\n const candidate = path.join(ancestor, \"skills\");\n const skillManifest = path.join(candidate, \"opensteer\", \"SKILL.md\");\n if (existsSync(skillManifest)) {\n return candidate;\n }\n ancestor = path.resolve(ancestor, \"..\");\n }\n\n throw new Error(\"Unable to find the packaged Opensteer skill source directory.\");\n}\n\nexport function resolveOpensteerRepoSkillSourcePath(\n startDir: string = process.cwd(),\n): string | undefined {\n let currentDir = path.resolve(startDir);\n const filesystemRoot = path.parse(currentDir).root;\n\n while (true) {\n const candidate = path.join(currentDir, \"skills\");\n const skillManifest = path.join(candidate, \"opensteer\", \"SKILL.md\");\n if (existsSync(skillManifest)) {\n return candidate;\n }\n if (currentDir === filesystemRoot) {\n return undefined;\n }\n currentDir = path.dirname(currentDir);\n }\n}\n\nexport async function checkOpensteerGitHubReachable(): Promise<boolean> {\n try {\n const response = await fetch(`https://github.com/${OPENSTEER_GITHUB_SOURCE}`, {\n method: \"HEAD\",\n signal: AbortSignal.timeout(3000),\n redirect: \"manual\",\n });\n return response.status < 500;\n } catch {\n return false;\n }\n}\n\nexport async function runOpensteerSkillsInstaller(\n options: OpensteerSkillsInstallOptions = {},\n overrideDeps: Partial<OpensteerSkillsInstallerDeps> = {},\n): Promise<number> {\n const deps: OpensteerSkillsInstallerDeps = {\n resolveSkillsCliPath: resolveOpensteerSkillsCliPath,\n resolveRepoSkillSourcePath: resolveOpensteerRepoSkillSourcePath,\n resolveLocalSkillSourcePath: resolveOpensteerLocalSkillSourcePath,\n checkGitHubReachable: checkOpensteerGitHubReachable,\n spawnInvocation: spawnOpensteerSkillsInvocation,\n ...overrideDeps,\n };\n\n const repoSkillSourcePath = deps.resolveRepoSkillSourcePath();\n const skillSourcePath =\n repoSkillSourcePath ??\n ((await deps.checkGitHubReachable())\n ? OPENSTEER_GITHUB_SOURCE\n : deps.resolveLocalSkillSourcePath());\n\n const invocation = createOpensteerSkillsInvocation({\n options,\n skillsCliPath: deps.resolveSkillsCliPath(),\n skillSourcePath,\n });\n\n return deps.spawnInvocation(invocation);\n}\n\nasync function spawnOpensteerSkillsInvocation(\n invocation: OpensteerSkillsInvocation,\n): Promise<number> {\n return await new Promise((resolvePromise, rejectPromise) => {\n const child = spawn(process.execPath, [invocation.cliPath, ...invocation.cliArgs], {\n cwd: process.cwd(),\n env: process.env,\n stdio: \"inherit\",\n });\n\n child.once(\"error\", (error) => {\n rejectPromise(error);\n });\n\n child.once(\"exit\", (code) => {\n resolvePromise(typeof code === \"number\" ? code : 1);\n });\n });\n}\n\nfunction resolveSelectedSkills(options: OpensteerSkillsInstallOptions): readonly string[] {\n if (options.skills !== undefined && options.skills.length > 0) {\n return options.skills;\n }\n if (options.list === true) {\n return [];\n }\n return [\"opensteer\"];\n}\n","import path from \"node:path\";\n\nimport type { OpensteerCloudConfig } from \"../cloud/config.js\";\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport {\n readPersistedCloudSessionRecord,\n readPersistedLocalBrowserSessionRecord,\n type PersistedCloudSessionRecord,\n type PersistedLocalBrowserSessionRecord,\n} from \"../live-session.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport { pathExists } from \"../internal/filesystem.js\";\nimport { isProcessRunning } from \"../local-browser/process-owner.js\";\nimport type { OpensteerResolvedProvider } from \"../provider/config.js\";\n\nexport interface OpensteerStatusLaneSummary {\n readonly provider: \"local\" | \"cloud\";\n readonly status: \"idle\" | \"active\" | \"connected\" | \"stale\" | \"closed\";\n readonly current: boolean;\n readonly summary?: string;\n readonly detail?: string;\n readonly sessionId?: string;\n readonly baseUrl?: string;\n readonly pid?: number;\n readonly engine?: string;\n readonly browser?: string;\n readonly region?: string;\n}\n\nexport interface OpensteerStatusOutput {\n readonly provider: {\n readonly current: OpensteerResolvedProvider[\"mode\"];\n readonly source: \"flag\" | \"env\" | \"default\";\n readonly cloudBaseUrl?: string;\n };\n readonly workspace?: string;\n readonly rootPath?: string;\n readonly lanes?: {\n readonly local: OpensteerStatusLaneSummary;\n readonly cloud: OpensteerStatusLaneSummary;\n };\n}\n\nexport async function collectOpensteerStatus(input: {\n readonly rootDir: string;\n readonly workspace?: string;\n readonly provider: OpensteerResolvedProvider;\n readonly cloudConfig?: OpensteerCloudConfig;\n}): Promise<OpensteerStatusOutput> {\n const output: OpensteerStatusOutput = {\n provider: {\n current: input.provider.mode,\n source: mapProviderSource(input.provider.source),\n ...(input.cloudConfig === undefined ? {} : { cloudBaseUrl: input.cloudConfig.baseUrl }),\n },\n ...(input.workspace === undefined ? {} : { workspace: input.workspace }),\n };\n\n if (input.workspace === undefined) {\n return output;\n }\n\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n });\n const localRecord = await readWorkspaceLocalRecord(rootPath);\n const cloudRecord = await readWorkspaceCloudRecord(rootPath);\n\n return {\n ...output,\n rootPath,\n lanes: {\n local: describeLocalLane(localRecord, input.provider.mode === \"local\"),\n cloud: await describeCloudLane({\n record: cloudRecord,\n current: input.provider.mode === \"cloud\",\n cloudConfig: input.cloudConfig,\n }),\n },\n };\n}\n\nexport function renderOpensteerStatus(status: OpensteerStatusOutput): string {\n const lines: string[] = [\n \"Provider resolution\",\n ` current: ${status.provider.current}`,\n ` source: ${status.provider.source}`,\n ];\n\n if (status.provider.cloudBaseUrl !== undefined) {\n lines.push(` control api: ${status.provider.cloudBaseUrl}`);\n }\n if (status.workspace !== undefined) {\n lines.push(` workspace: ${status.workspace}`);\n }\n\n if (status.lanes === undefined) {\n return `${lines.join(\"\\n\")}\\n`;\n }\n\n lines.push(\"\", \"Live sessions\");\n for (const lane of [status.lanes.local, status.lanes.cloud]) {\n lines.push(\n formatLaneRow({\n marker: lane.current ? \"*\" : \" \",\n provider: lane.provider,\n status: lane.status,\n summary: lane.summary ?? \"none\",\n detail: lane.detail,\n }),\n );\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nasync function readWorkspaceLocalRecord(\n rootPath: string,\n): Promise<PersistedLocalBrowserSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedLocalBrowserSessionRecord(rootPath);\n}\n\nasync function readWorkspaceCloudRecord(\n rootPath: string,\n): Promise<PersistedCloudSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedCloudSessionRecord(rootPath);\n}\n\nfunction describeLocalLane(\n record: PersistedLocalBrowserSessionRecord | undefined,\n current: boolean,\n): OpensteerStatusLaneSummary {\n if (record === undefined || !isProcessRunning(record.pid)) {\n return {\n provider: \"local\",\n status: \"idle\",\n current,\n summary: \"none\",\n };\n }\n\n const browser = record.executablePath\n ? path.basename(record.executablePath).replace(/\\.[A-Za-z0-9]+$/u, \"\")\n : undefined;\n return {\n provider: \"local\",\n status: \"active\",\n current,\n summary: `PID ${String(record.pid)}`,\n detail: browser ?? record.engine,\n pid: record.pid,\n engine: record.engine,\n ...(browser === undefined ? {} : { browser }),\n };\n}\n\nasync function describeCloudLane(input: {\n readonly record: PersistedCloudSessionRecord | undefined;\n readonly current: boolean;\n readonly cloudConfig: OpensteerCloudConfig | undefined;\n}): Promise<OpensteerStatusLaneSummary> {\n if (input.record === undefined) {\n return {\n provider: \"cloud\",\n status: \"idle\",\n current: input.current,\n summary: \"none\",\n };\n }\n\n const base: OpensteerStatusLaneSummary = {\n provider: \"cloud\",\n status: \"connected\",\n current: input.current,\n summary: input.record.sessionId,\n sessionId: input.record.sessionId,\n ...(input.cloudConfig === undefined\n ? {}\n : {\n detail: input.cloudConfig.baseUrl,\n baseUrl: input.cloudConfig.baseUrl,\n }),\n };\n\n if (input.cloudConfig === undefined) {\n return base;\n }\n\n try {\n const client = new OpensteerCloudClient(input.cloudConfig);\n const session = (await client.getSession(input.record.sessionId)) as {\n readonly status?: string;\n readonly region?: string;\n readonly runtimeRegion?: string;\n };\n if (session.status === \"closed\") {\n return {\n ...base,\n status: \"closed\",\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n }\n if (session.status === \"failed\") {\n return {\n ...base,\n status: \"stale\",\n };\n }\n return {\n ...base,\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n } catch {\n return {\n ...base,\n status: \"stale\",\n };\n }\n}\n\nfunction mapProviderSource(\n source: OpensteerResolvedProvider[\"source\"],\n): \"flag\" | \"env\" | \"default\" {\n if (source === \"explicit\") {\n return \"flag\";\n }\n return source;\n}\n\nfunction formatLaneRow(input: {\n readonly marker: string;\n readonly provider: string;\n readonly status: string;\n readonly summary: string;\n readonly detail: string | undefined;\n}): string {\n const provider = input.provider.padEnd(7, \" \");\n const status = input.status.padEnd(9, \" \");\n const summary = input.summary.padEnd(16, \" \");\n return `${input.marker} ${provider} ${status} ${summary}${\n input.detail === undefined ? \"\" : ` ${input.detail}`\n }`.trimEnd();\n}\n","// Tries expression-mode first (auto-return); falls back to statement block\n// (requires explicit return). Runs in the local Node.js process.\nexport async function runExecExpression(context: object, expression: string): Promise<unknown> {\n const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor as new (\n ...args: string[]\n ) => (...args: unknown[]) => Promise<unknown>;\n\n let fn: (...args: unknown[]) => Promise<unknown>;\n try {\n fn = new AsyncFunction(`return (${expression})`);\n } catch {\n fn = new AsyncFunction(expression);\n }\n\n return fn.call(context);\n}\n","import path from \"node:path\";\n\nimport { readPersistedLocalBrowserSessionRecord } from \"../live-session.js\";\nimport { isProcessRunning } from \"../local-browser/process-owner.js\";\nimport { setLocalViewMode } from \"../local-view/preferences.js\";\nimport { runLocalViewService } from \"../local-view/serve.js\";\nimport {\n buildLocalViewSessionUrl,\n ensureLocalViewServiceRunning,\n stopLocalViewService,\n} from \"../local-view/service.js\";\nimport { buildLocalViewSessionId } from \"../local-view/session-manifest.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport type { ParsedCommandLine } from \"./parse.js\";\nimport { openBrowserUrl, type BrowserUrlOpener } from \"./open-browser.js\";\n\nexport async function handleViewCommand(\n parsed: ParsedCommandLine,\n options: {\n readonly openUrl?: BrowserUrlOpener;\n } = {},\n): Promise<void> {\n const subcommand = parsed.command[1];\n\n if (subcommand === \"serve\") {\n assertNoViewPreferenceFlag(parsed);\n await runLocalViewService();\n return;\n }\n\n if (subcommand === \"stop\") {\n assertNoViewPreferenceFlag(parsed);\n const stopped = await stopLocalViewService();\n writeViewOutput(parsed, { stopped });\n return;\n }\n\n if (subcommand !== undefined) {\n throw new Error(`Unknown view command: view ${subcommand}`);\n }\n\n if (parsed.options.localViewMode !== undefined) {\n const preference = await setLocalViewMode(parsed.options.localViewMode);\n writeViewOutput(parsed, { mode: preference.mode });\n return;\n }\n\n const service = await ensureLocalViewServiceRunning();\n const sessionId =\n parsed.options.workspace === undefined\n ? undefined\n : await resolveWorkspaceSessionId({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n });\n const url = buildLocalViewSessionUrl({\n baseUrl: service.url,\n ...(sessionId === undefined ? {} : { sessionId }),\n });\n\n writeViewOutput(parsed, {\n url,\n ...(sessionId === undefined ? {} : { sessionId }),\n });\n\n if (parsed.options.json !== true) {\n try {\n await (options.openUrl ?? openBrowserUrl)(url);\n } catch {\n process.stderr.write(\n `Could not automatically open the local view. Open it manually: ${url}\\n`,\n );\n }\n }\n}\n\nasync function resolveWorkspaceSessionId(input: {\n readonly rootDir: string;\n readonly workspace: string;\n}): Promise<string | undefined> {\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: path.resolve(input.rootDir),\n workspace: input.workspace,\n });\n const live = await readPersistedLocalBrowserSessionRecord(rootPath);\n if (!live || !isProcessRunning(live.pid)) {\n return undefined;\n }\n\n return buildLocalViewSessionId({\n rootPath,\n pid: live.pid,\n startedAt: live.startedAt,\n });\n}\n\nfunction assertNoViewPreferenceFlag(parsed: ParsedCommandLine): void {\n if (parsed.options.localViewMode !== undefined) {\n throw new Error(\"View preference flags cannot be combined with this subcommand.\");\n }\n}\n\nfunction writeViewOutput(\n parsed: ParsedCommandLine,\n value:\n | {\n readonly url: string;\n readonly sessionId?: string;\n }\n | {\n readonly stopped: boolean;\n }\n | {\n readonly mode: \"auto\" | \"manual\";\n },\n): void {\n if (parsed.options.json === true) {\n process.stdout.write(`${JSON.stringify(value, null, 2)}\\n`);\n return;\n }\n\n if (\"url\" in value) {\n process.stdout.write(`${value.url}\\n`);\n return;\n }\n\n if (\"stopped\" in value) {\n process.stdout.write(\n `${value.stopped ? \"Local view service stopped.\" : \"Local view service is not running.\"}\\n`,\n );\n return;\n }\n\n process.stdout.write(`Local view preference set to ${value.mode}.\\n`);\n}\n","#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport opensteerPackage from \"../../package.json\" with { type: \"json\" };\n\nimport { OpensteerBrowserManager } from \"../browser-manager.js\";\nimport {\n resolveOpensteerEngineName,\n type OpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { discoverLocalCdpBrowsers, inspectCdpEndpoint } from \"../local-browser/cdp-discovery.js\";\nimport {\n assertProviderSupportsEngine,\n resolveOpensteerProvider,\n type OpensteerProviderMode,\n type OpensteerProviderOptions,\n type OpensteerResolvedProvider,\n} from \"../provider/config.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n} from \"../sdk/runtime-resolution.js\";\nimport { dispatchSemanticOperation } from \"./dispatch.js\";\nimport { loadCliEnvironment } from \"./env-loader.js\";\nimport { getHelpText } from \"./help.js\";\nimport { buildOperationInput } from \"./operation-input.js\";\nimport { renderOperationOutput } from \"./output.js\";\nimport { parseCommandLine, type ParsedCommandLine } from \"./parse.js\";\nimport { runOpensteerCloudRecordCommand, runOpensteerRecordCommand } from \"./record.js\";\nimport { runOpensteerSkillsInstaller } from \"./skills-installer.js\";\nimport { collectOpensteerStatus, renderOpensteerStatus } from \"./status.js\";\nimport { resolveOperation } from \"./commands.js\";\nimport { runExecExpression } from \"./exec.js\";\nimport { handleViewCommand } from \"./view.js\";\n\nconst emitProcessWarning = process.emitWarning.bind(process);\n\nprocess.emitWarning = ((warning: string | Error, ...args: unknown[]) => {\n const name =\n warning instanceof Error ? warning.name : typeof args[0] === \"string\" ? args[0] : undefined;\n const message = warning instanceof Error ? warning.message : warning;\n if (\n name === \"ExperimentalWarning\" &&\n typeof message === \"string\" &&\n message.includes(\"SQLite is an experimental feature\")\n ) {\n return;\n }\n return emitProcessWarning(warning, ...(args as []));\n}) as typeof process.emitWarning;\n\nasync function main(): Promise<void> {\n const argv = process.argv.slice(2);\n const bootstrapAction = resolveCliBootstrapAction(argv);\n if (bootstrapAction === \"version\") {\n printVersion();\n return;\n }\n if (bootstrapAction === \"help\") {\n printHelp();\n return;\n }\n\n await loadCliEnvironment(process.cwd());\n const parsed = parseCommandLine(argv);\n\n if (parsed.command[0] === \"browser\") {\n await handleBrowserCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"skills\" && parsed.command[1] === \"install\") {\n const exitCode = await runOpensteerSkillsInstaller({\n ...(parsed.options.agents === undefined ? {} : { agents: parsed.options.agents }),\n ...(parsed.options.skills === undefined ? {} : { skills: parsed.options.skills }),\n global: parsed.options.global === true,\n yes: parsed.options.yes === true,\n copy: parsed.options.copy === true,\n all: parsed.options.all === true,\n list: parsed.options.list === true,\n });\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n if (parsed.command[0] === \"status\") {\n await handleStatusCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"record\") {\n await handleRecordCommandEntry(parsed);\n return;\n }\n\n if (parsed.command[0] === \"view\") {\n await handleViewCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"exec\") {\n await handleExecCommand(parsed);\n return;\n }\n\n const operation = resolveOperation(parsed.command);\n if (!operation) {\n throw new Error(`Unknown command: ${parsed.command.join(\" \")}`);\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Stateful commands require \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n\n const { engineName, provider, runtimeProvider } = resolveCliRuntimeSelection(parsed);\n\n if (operation === \"session.close\") {\n await handleCloseCommand(parsed, engineName, provider.mode, runtimeProvider);\n return;\n }\n\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n let result: unknown;\n let renderOperation = operation;\n try {\n const input = await buildOperationInput(operation, parsed, runtime);\n result = await dispatchSemanticOperation(runtime, operation, input);\n\n if (parsed.command[0] === \"tab\" && operation !== \"page.list\") {\n renderOperation = \"page.list\";\n result = await runtime.listPages({});\n }\n\n process.stdout.write(renderOperationOutput(renderOperation, result, input));\n } finally {\n await runtime.disconnect().catch(() => undefined);\n }\n}\n\nasync function handleExecCommand(parsed: ParsedCommandLine): Promise<void> {\n if (parsed.options.workspace === undefined) {\n throw new Error('exec requires \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n const expression = parsed.rest.join(\" \");\n if (!expression) {\n throw new Error(\n \"exec requires an expression. Example: exec \\\"await this.evaluate('document.title')\\\"\",\n );\n }\n\n const { engineName, runtimeProvider } = resolveCliRuntimeSelection(parsed);\n const { Opensteer } = await import(\"../sdk/opensteer.js\");\n const opensteer = new Opensteer({\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engineName,\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n try {\n const result = await runExecExpression(opensteer, expression);\n if (result !== undefined) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n }\n } finally {\n await opensteer.disconnect().catch(() => undefined);\n }\n}\n\nasync function handleBrowserCommand(parsed: ParsedCommandLine): Promise<void> {\n const subcommand = parsed.command[1];\n if (subcommand === \"discover\") {\n const result = await discoverLocalCdpBrowsers({\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (subcommand === \"inspect\") {\n const endpoint = parsed.options.attachEndpoint ?? parsed.rest[0];\n if (!endpoint) {\n throw new Error(\n 'browser inspect requires \"--attach-endpoint <url>\" or a positional endpoint.',\n );\n }\n const result = await inspectCdpEndpoint({\n endpoint,\n ...(parsed.options.attachHeaders === undefined\n ? {}\n : { headers: parsed.options.attachHeaders }),\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error(\n 'Browser workspace commands require \"--workspace <id>\" or OPENSTEER_WORKSPACE.',\n );\n }\n\n const engineName = resolveCliEngineName(parsed);\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n switch (subcommand) {\n case \"status\": {\n const result = await manager.status();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"clone\": {\n const sourceUserDataDir = parsed.options.sourceUserDataDir;\n if (!sourceUserDataDir) {\n throw new Error('browser clone requires \"--source-user-data-dir <path>\".');\n }\n const result = await manager.clonePersistentBrowser({\n sourceUserDataDir,\n ...(parsed.options.sourceProfileDirectory === undefined\n ? {}\n : { sourceProfileDirectory: parsed.options.sourceProfileDirectory }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"reset\": {\n await manager.reset();\n process.stdout.write(`${JSON.stringify({ reset: true }, null, 2)}\\n`);\n return;\n }\n case \"delete\": {\n await manager.delete();\n process.stdout.write(`${JSON.stringify({ deleted: true }, null, 2)}\\n`);\n return;\n }\n default:\n throw new Error(`Unknown browser command: ${parsed.command.join(\" \")}`);\n }\n}\n\nasync function handleCloseCommand(\n parsed: ParsedCommandLine,\n engineName: OpensteerEngineName,\n providerMode: OpensteerProviderMode,\n runtimeProvider: OpensteerProviderOptions | undefined,\n): Promise<void> {\n if (providerMode === \"cloud\") {\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace!,\n rootDir: process.cwd(),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n const result = await runtime.close();\n process.stdout.write(renderOperationOutput(\"session.close\", result));\n return;\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace!,\n engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n await manager.close();\n process.stdout.write(renderOperationOutput(\"session.close\", { closed: true }));\n}\n\nasync function handleRecordCommandEntry(parsed: ParsedCommandLine): Promise<void> {\n if (parsed.options.workspace === undefined) {\n throw new Error('record requires \"--workspace <id>\" or OPENSTEER_WORKSPACE.');\n }\n\n const url = parsed.options.url ?? parsed.rest[0];\n if (url === undefined) {\n throw new Error('record requires \"--url <value>\" or a positional URL.');\n }\n\n const provider = resolveCliProvider(parsed);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const engineName = resolveCliEngineName(parsed);\n if (engineName !== \"playwright\") {\n throw new Error(\"record requires engine=playwright.\");\n }\n const rootDir = process.cwd();\n const recordBrowser = parsed.options.browser;\n\n if (provider.mode === \"cloud\") {\n if (typeof recordBrowser === \"object\") {\n throw new Error('record does not support browser.mode=\"attach\".');\n }\n\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n environment: process.env,\n });\n\n await runOpensteerCloudRecordCommand({\n cloudConfig: runtimeConfig.cloud!,\n workspace: parsed.options.workspace,\n url,\n rootDir,\n ...(recordBrowser === undefined ? {} : { browser: recordBrowser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n ...(parsed.options.output === undefined ? {} : { outputPath: parsed.options.output }),\n });\n return;\n }\n\n if (parsed.options.launch?.headless === true) {\n throw new Error('record requires a headed browser. Remove \"--headless true\".');\n }\n\n if (typeof recordBrowser === \"object\") {\n throw new Error('record does not support browser.mode=\"attach\".');\n }\n\n const launch = {\n ...(parsed.options.launch ?? {}),\n headless: false,\n };\n\n const browserManager = new OpensteerBrowserManager({\n rootDir,\n workspace: parsed.options.workspace,\n engineName,\n browser: \"persistent\",\n launch,\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n const runtime = createOpensteerSemanticRuntime({\n provider: {\n mode: \"local\",\n },\n engine: engineName,\n runtimeOptions: {\n rootPath: browserManager.rootPath,\n cleanupRootOnClose: browserManager.cleanupRootOnDisconnect,\n workspace: parsed.options.workspace,\n browser: \"persistent\",\n launch,\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n await runOpensteerRecordCommand({\n runtime,\n closeSession: () => closeOwnedLocalBrowserSession(runtime, browserManager),\n workspace: parsed.options.workspace,\n url,\n rootDir,\n ...(parsed.options.output === undefined ? {} : { outputPath: parsed.options.output }),\n });\n}\n\nasync function closeOwnedLocalBrowserSession(\n runtime: ReturnType<typeof createOpensteerSemanticRuntime>,\n browserManager: OpensteerBrowserManager,\n): Promise<void> {\n let closeError: unknown;\n try {\n await runtime.close();\n } catch (error) {\n closeError = error;\n }\n try {\n await browserManager.close();\n } catch (error) {\n closeError ??= error;\n }\n if (closeError !== undefined) {\n throw closeError;\n }\n}\n\nfunction resolveCliBootstrapAction(argv: readonly string[]): \"help\" | \"version\" | undefined {\n if (argv.length === 0) {\n return \"help\";\n }\n\n for (const token of argv) {\n if (token === \"--version\") {\n return \"version\";\n }\n if (token === \"--help\" || token === \"-h\") {\n return \"help\";\n }\n }\n\n return undefined;\n}\n\nfunction buildCliBrowserProfile(\n parsed: ParsedCommandLine,\n): { readonly profileId: string; readonly reuseIfActive?: true } | undefined {\n if (\n parsed.options.cloudProfileReuseIfActive === true &&\n parsed.options.cloudProfileId === undefined\n ) {\n throw new Error('\"--cloud-profile-reuse-if-active\" requires \"--cloud-profile-id <id>\".');\n }\n\n return parsed.options.cloudProfileId === undefined\n ? undefined\n : {\n profileId: parsed.options.cloudProfileId,\n ...(parsed.options.cloudProfileReuseIfActive === true ? { reuseIfActive: true } : {}),\n };\n}\n\nfunction buildCliExplicitProvider(parsed: ParsedCommandLine): OpensteerProviderOptions | undefined {\n if (parsed.options.provider === \"local\") {\n return { mode: \"local\" };\n }\n if (parsed.options.provider === \"cloud\") {\n return { mode: \"cloud\" };\n }\n return undefined;\n}\n\nfunction resolveCliRuntimeSelection(parsed: ParsedCommandLine): {\n readonly engineName: OpensteerEngineName;\n readonly provider: OpensteerResolvedProvider;\n readonly runtimeProvider: OpensteerProviderOptions | undefined;\n} {\n const engineName = resolveCliEngineName(parsed);\n const provider = resolveCliProvider(parsed);\n assertProviderSupportsEngine(provider.mode, engineName);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n return {\n engineName,\n provider,\n runtimeProvider,\n };\n}\n\nfunction resolveCliEngineName(parsed: ParsedCommandLine): OpensteerEngineName {\n return resolveOpensteerEngineName({\n ...(parsed.options.requestedEngineName === undefined\n ? {}\n : { requested: parsed.options.requestedEngineName }),\n ...(process.env.OPENSTEER_ENGINE === undefined\n ? {}\n : { environment: process.env.OPENSTEER_ENGINE }),\n });\n}\n\nfunction resolveCliProvider(parsed: ParsedCommandLine): OpensteerResolvedProvider {\n const explicitProvider = buildCliExplicitProvider(parsed);\n return resolveOpensteerProvider({\n ...(explicitProvider === undefined ? {} : { provider: explicitProvider }),\n ...(process.env.OPENSTEER_PROVIDER === undefined\n ? {}\n : { environmentProvider: process.env.OPENSTEER_PROVIDER }),\n });\n}\n\nfunction buildCliRuntimeProvider(\n parsed: ParsedCommandLine,\n providerMode: OpensteerProviderMode,\n): OpensteerProviderOptions | undefined {\n const explicitProvider = buildCliExplicitProvider(parsed);\n if (providerMode === \"local\") {\n return explicitProvider?.mode === \"local\" ? explicitProvider : undefined;\n }\n\n const browserProfile = buildCliBrowserProfile(parsed);\n const hasCloudOverrides =\n parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n parsed.options.cloudAppBaseUrl !== undefined ||\n browserProfile !== undefined;\n if (!hasCloudOverrides && explicitProvider?.mode !== \"cloud\") {\n return undefined;\n }\n\n return {\n mode: \"cloud\",\n ...(parsed.options.cloudBaseUrl === undefined ? {} : { baseUrl: parsed.options.cloudBaseUrl }),\n ...(parsed.options.cloudApiKey === undefined ? {} : { apiKey: parsed.options.cloudApiKey }),\n ...(parsed.options.cloudAppBaseUrl === undefined\n ? {}\n : { appBaseUrl: parsed.options.cloudAppBaseUrl }),\n ...(browserProfile === undefined ? {} : { browserProfile }),\n };\n}\n\nfunction assertCloudCliOptionsMatchProvider(\n parsed: ParsedCommandLine,\n providerMode: OpensteerProviderMode,\n): void {\n if (\n providerMode !== \"cloud\" &&\n (parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n parsed.options.cloudAppBaseUrl !== undefined ||\n parsed.options.cloudProfileId !== undefined ||\n parsed.options.cloudProfileReuseIfActive === true)\n ) {\n throw new Error(\n 'Cloud-specific options require provider=cloud. Set \"--provider cloud\" or OPENSTEER_PROVIDER=cloud.',\n );\n }\n}\n\nasync function handleStatusCommand(parsed: ParsedCommandLine): Promise<void> {\n const provider = resolveCliProvider(parsed);\n assertCloudCliOptionsMatchProvider(parsed, provider.mode);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.mode);\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n environment: process.env,\n });\n const status = await collectOpensteerStatus({\n rootDir: process.cwd(),\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n provider,\n ...(runtimeConfig.cloud === undefined ? {} : { cloudConfig: runtimeConfig.cloud }),\n });\n\n if (parsed.options.json === true) {\n process.stdout.write(`${JSON.stringify(status, null, 2)}\\n`);\n return;\n }\n\n process.stdout.write(renderOpensteerStatus(status));\n}\n\nfunction printHelp(): void {\n process.stdout.write(getHelpText());\n}\n\nfunction printVersion(): void {\n process.stdout.write(`${opensteerPackage.version}\\n`);\n}\n\nmain().catch((error) => {\n const payload =\n error instanceof Error\n ? {\n error: {\n name: error.name,\n message: error.message,\n },\n }\n : {\n error: {\n name: \"Error\",\n message: String(error),\n },\n };\n process.stderr.write(`${JSON.stringify(payload)}\\n`);\n process.exitCode = 1;\n});\n"]}