opensteer 0.6.13 → 0.7.0

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 (62) hide show
  1. package/README.md +256 -184
  2. package/dist/chunk-PQYA6IX2.js +32571 -0
  3. package/dist/chunk-PQYA6IX2.js.map +1 -0
  4. package/dist/cli/bin.cjs +38201 -0
  5. package/dist/cli/bin.cjs.map +1 -0
  6. package/dist/cli/bin.d.cts +1 -0
  7. package/dist/cli/bin.d.ts +1 -0
  8. package/dist/cli/bin.js +5612 -0
  9. package/dist/cli/bin.js.map +1 -0
  10. package/dist/index.cjs +31309 -16009
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +4440 -670
  13. package/dist/index.d.ts +4440 -670
  14. package/dist/index.js +438 -378
  15. package/dist/index.js.map +1 -0
  16. package/package.json +56 -62
  17. package/skills/README.md +21 -20
  18. package/skills/opensteer/SKILL.md +60 -194
  19. package/skills/opensteer/references/cli-reference.md +69 -113
  20. package/skills/opensteer/references/request-workflow.md +81 -0
  21. package/skills/opensteer/references/sdk-reference.md +101 -154
  22. package/CHANGELOG.md +0 -75
  23. package/bin/opensteer.mjs +0 -1423
  24. package/dist/browser-profile-client-CGXc0-P9.d.cts +0 -228
  25. package/dist/browser-profile-client-DHLzMf-K.d.ts +0 -228
  26. package/dist/chunk-2ES46WCO.js +0 -1437
  27. package/dist/chunk-3H5RRIMZ.js +0 -69
  28. package/dist/chunk-AVXUMEDG.js +0 -62
  29. package/dist/chunk-DN3GI5CH.js +0 -57
  30. package/dist/chunk-FAHE5DB2.js +0 -190
  31. package/dist/chunk-HBTSQ2V4.js +0 -15259
  32. package/dist/chunk-K5CL76MG.js +0 -81
  33. package/dist/chunk-U724TBY6.js +0 -1262
  34. package/dist/chunk-ZRCFF546.js +0 -77
  35. package/dist/cli/auth.cjs +0 -2022
  36. package/dist/cli/auth.d.cts +0 -114
  37. package/dist/cli/auth.d.ts +0 -114
  38. package/dist/cli/auth.js +0 -15
  39. package/dist/cli/local-profile.cjs +0 -197
  40. package/dist/cli/local-profile.d.cts +0 -18
  41. package/dist/cli/local-profile.d.ts +0 -18
  42. package/dist/cli/local-profile.js +0 -97
  43. package/dist/cli/profile.cjs +0 -18548
  44. package/dist/cli/profile.d.cts +0 -79
  45. package/dist/cli/profile.d.ts +0 -79
  46. package/dist/cli/profile.js +0 -1328
  47. package/dist/cli/server.cjs +0 -17232
  48. package/dist/cli/server.d.cts +0 -2
  49. package/dist/cli/server.d.ts +0 -2
  50. package/dist/cli/server.js +0 -977
  51. package/dist/cli/skills-installer.cjs +0 -230
  52. package/dist/cli/skills-installer.d.cts +0 -28
  53. package/dist/cli/skills-installer.d.ts +0 -28
  54. package/dist/cli/skills-installer.js +0 -201
  55. package/dist/extractor-4Q3TFZJB.js +0 -8
  56. package/dist/resolver-MGN64KCP.js +0 -7
  57. package/dist/types-Cr10igF3.d.cts +0 -345
  58. package/dist/types-Cr10igF3.d.ts +0 -345
  59. package/skills/electron/SKILL.md +0 -87
  60. package/skills/electron/references/opensteer-electron-recipes.md +0 -88
  61. package/skills/electron/references/opensteer-electron-workflow.md +0 -85
  62. package/skills/opensteer/references/examples.md +0 -118
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../protocol/src/mcp.ts","../../src/cli/client.ts","../../src/cli/schema.ts","../../src/cli/browser.ts","../../src/cli/local-profile.ts","../../src/cli/profile-sync.ts","../../src/cli/skills-installer.ts","../../src/cli/mcp.ts","../../src/cli/bin.ts"],"names":["connectOpensteerService","requireOpensteerService","resolved","require","spawn","client","result","path","parseJsonObject","readFile"],"mappings":"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","file":"bin.js","sourcesContent":["import type { JsonObject, JsonSchema } from \"./json.js\";\nimport {\n opensteerSemanticOperationSpecifications,\n type OpensteerSemanticOperationName,\n} from \"./semantic.js\";\n\nexport interface OpensteerMcpToolAnnotations {\n readonly readOnlyHint?: boolean;\n readonly destructiveHint?: boolean;\n readonly idempotentHint?: boolean;\n readonly openWorldHint?: boolean;\n}\n\nexport interface OpensteerMcpToolDescriptor {\n readonly name: string;\n readonly title: string;\n readonly description: string;\n readonly operation: OpensteerSemanticOperationName;\n readonly inputSchema: JsonSchema;\n readonly outputSchema: JsonSchema;\n readonly annotations?: OpensteerMcpToolAnnotations;\n}\n\nexport interface OpensteerMcpTextContent {\n readonly type: \"text\";\n readonly text: string;\n}\n\nexport interface OpensteerMcpImageContent {\n readonly type: \"image\";\n readonly data: string;\n readonly mimeType: string;\n}\n\nexport type OpensteerMcpContent = OpensteerMcpTextContent | OpensteerMcpImageContent;\n\nexport interface OpensteerMcpToolResult<TStructured extends JsonObject = JsonObject> {\n readonly structuredContent: TStructured;\n readonly content?: readonly OpensteerMcpContent[];\n readonly isError?: boolean;\n}\n\nconst readOnlyOperations = new Set<OpensteerSemanticOperationName>([\n \"page.snapshot\",\n \"dom.extract\",\n \"network.query\",\n \"request-plan.get\",\n \"request-plan.list\",\n]);\n\nconst destructiveOperations = new Set<OpensteerSemanticOperationName>([\n \"network.clear\",\n \"session.close\",\n]);\n\nfunction toolNameFromOperation(operation: OpensteerSemanticOperationName): string {\n return `opensteer_${operation.replaceAll(\".\", \"_\").replaceAll(\"-\", \"_\")}`;\n}\n\nfunction titleFromOperation(operation: OpensteerSemanticOperationName): string {\n return operation\n .split(/[.-]/)\n .map((segment) => {\n switch (segment) {\n case \"dom\":\n return \"DOM\";\n case \"html\":\n return \"HTML\";\n default:\n return segment.charAt(0).toUpperCase() + segment.slice(1);\n }\n })\n .join(\" \");\n}\n\nexport const opensteerMcpTools: readonly OpensteerMcpToolDescriptor[] =\n opensteerSemanticOperationSpecifications.map((spec) => ({\n name: toolNameFromOperation(spec.name),\n title: titleFromOperation(spec.name),\n description: spec.description,\n operation: spec.name,\n inputSchema: spec.inputSchema,\n outputSchema: spec.outputSchema,\n annotations: {\n readOnlyHint: readOnlyOperations.has(spec.name),\n destructiveHint: destructiveOperations.has(spec.name),\n idempotentHint: readOnlyOperations.has(spec.name),\n openWorldHint: true,\n },\n }));\n\nexport function createStructuredToolResult<TStructured extends JsonObject>(\n structuredContent: TStructured,\n options: {\n readonly text?: string;\n readonly content?: readonly OpensteerMcpContent[];\n readonly isError?: boolean;\n } = {},\n): OpensteerMcpToolResult<TStructured> {\n const content =\n options.content ??\n (options.text === undefined\n ? undefined\n : [\n {\n type: \"text\",\n text: options.text,\n } satisfies OpensteerMcpTextContent,\n ]);\n\n return {\n structuredContent,\n ...(content === undefined ? {} : { content }),\n ...(options.isError === undefined ? {} : { isError: options.isError }),\n };\n}\n","import { spawn } from \"node:child_process\";\n\nimport {\n connectOpensteerService as connectExistingOpensteerService,\n OpensteerCliServiceError,\n OpensteerSessionServiceClient,\n requireOpensteerService as requireExistingOpensteerService,\n resolveLiveOpensteerServiceMetadata,\n type OpensteerCliSessionOptions,\n} from \"../session-service/client.js\";\nimport { normalizeOpensteerSessionName } from \"../session-service/metadata.js\";\n\nconst SERVICE_START_TIMEOUT_MS = 10_000;\nconst SERVICE_POLL_INTERVAL_MS = 100;\n\nexport interface OpensteerServiceLaunchContext {\n readonly execPath: string;\n readonly execArgv: readonly string[];\n readonly scriptPath: string;\n readonly cwd?: string;\n}\n\nexport { OpensteerCliServiceError, OpensteerSessionServiceClient as OpensteerCliServiceClient };\nexport type { OpensteerCliSessionOptions } from \"../session-service/client.js\";\n\nexport async function connectOpensteerService(options: OpensteerCliSessionOptions = {}) {\n return connectExistingOpensteerService(options);\n}\n\nexport async function ensureOpensteerService(\n options: OpensteerCliSessionOptions & {\n readonly launchContext: OpensteerServiceLaunchContext;\n },\n): Promise<OpensteerSessionServiceClient> {\n const existing = await connectOpensteerService(options);\n if (existing) {\n return existing;\n }\n\n const name = normalizeOpensteerSessionName(options.name);\n const serviceArgs = [\n ...options.launchContext.execArgv,\n options.launchContext.scriptPath,\n \"service-host\",\n \"--name\",\n name,\n ...(options.rootDir === undefined ? [] : [\"--root-dir\", options.rootDir]),\n ...(options.engine === undefined ? [] : [\"--engine\", options.engine]),\n ];\n const child = spawn(options.launchContext.execPath, serviceArgs, {\n cwd: options.launchContext.cwd ?? process.cwd(),\n detached: true,\n stdio: \"ignore\",\n });\n child.unref();\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < SERVICE_START_TIMEOUT_MS) {\n const metadata = await resolveLiveOpensteerServiceMetadata(options);\n if (metadata) {\n return OpensteerSessionServiceClient.fromMetadata(metadata);\n }\n\n await wait(SERVICE_POLL_INTERVAL_MS);\n }\n\n throw new Error(\n `Opensteer service for \"${name}\" did not become ready within ${String(SERVICE_START_TIMEOUT_MS)}ms.`,\n );\n}\n\nexport async function requireOpensteerService(options: OpensteerCliSessionOptions = {}) {\n return requireExistingOpensteerService(options);\n}\n\nfunction wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { getAllBrowserBrands } from \"../local-browser/browser-brands.js\";\n\ninterface CliOptionDefinition {\n readonly name: string;\n readonly description: string;\n readonly kind: \"boolean\" | \"string\" | \"number\" | \"json\" | \"json-object\" | \"enum\";\n readonly valueLabel?: string;\n readonly values?: readonly string[];\n readonly multiple?: boolean;\n readonly internalName?: string;\n}\n\ninterface CliPositionalDefinition {\n readonly name: string;\n readonly description: string;\n readonly required?: boolean;\n readonly variadic?: boolean;\n}\n\nexport interface CliCommandDefinition {\n readonly name: string;\n readonly summary: string;\n readonly description?: string;\n readonly options?: readonly CliOptionDefinition[];\n readonly positionals?: readonly CliPositionalDefinition[];\n readonly subcommands?: readonly CliCommandDefinition[];\n readonly defaultSubcommand?: string;\n readonly id?: string;\n readonly examples?: readonly string[];\n}\n\ntype ParsedOptionValue =\n | boolean\n | string\n | number\n | unknown\n | readonly boolean[]\n | readonly string[]\n | readonly number[]\n | readonly unknown[];\n\nexport interface ParsedCliInvocation {\n readonly commandId: string;\n readonly command: CliCommandDefinition;\n readonly commandPath: readonly string[];\n readonly positionals: readonly string[];\n readonly options: Readonly<Record<string, ParsedOptionValue>>;\n}\n\nexport type CliParseResult =\n | {\n readonly kind: \"command\";\n readonly invocation: ParsedCliInvocation;\n }\n | {\n readonly kind: \"help\";\n readonly command: CliCommandDefinition;\n readonly commandPath: readonly string[];\n readonly text: string;\n };\n\nconst HELP_OPTION: CliOptionDefinition = {\n name: \"help\",\n description: \"Show this help\",\n kind: \"boolean\",\n};\n\nconst SESSION_NAME_OPTION: CliOptionDefinition = {\n name: \"name\",\n description: 'Session name (default: \"default\")',\n kind: \"string\",\n valueLabel: \"name\",\n};\n\nconst ROOT_DIR_OPTION: CliOptionDefinition = {\n name: \"root-dir\",\n description: \"Project root directory (default: process.cwd())\",\n kind: \"string\",\n valueLabel: \"path\",\n};\n\nconst OUTPUT_OPTION: CliOptionDefinition = {\n name: \"output\",\n description: \"Write JSON output to a file instead of stdout\",\n kind: \"string\",\n valueLabel: \"path\",\n};\n\nconst DESCRIPTION_OPTION: CliOptionDefinition = {\n name: \"description\",\n description: \"Persist or replay a semantic description\",\n kind: \"string\",\n valueLabel: \"text\",\n};\n\nconst SELECTOR_OPTION: CliOptionDefinition = {\n name: \"selector\",\n description: \"Target element by CSS selector\",\n kind: \"string\",\n valueLabel: \"css\",\n};\n\nconst NETWORK_TAG_OPTION: CliOptionDefinition = {\n name: \"network-tag\",\n description: \"Label network traffic triggered by this action\",\n kind: \"string\",\n valueLabel: \"tag\",\n};\n\nconst SESSION_OPTIONS = [SESSION_NAME_OPTION, ROOT_DIR_OPTION] as const;\nconst ACTION_TARGET_OPTIONS = [\n SESSION_NAME_OPTION,\n ROOT_DIR_OPTION,\n SELECTOR_OPTION,\n DESCRIPTION_OPTION,\n] as const;\nconst PROFILE_SYNC_BROWSER_VALUES = getAllBrowserBrands().map((brand) => brand.id);\nconst PROFILE_SYNC_STRATEGY_VALUES = [\"auto\", \"attach\", \"headless\", \"managed-relaunch\"] as const;\n\nfunction createRecipeCommandDefinition(input: {\n readonly name: \"recipe\" | \"auth-recipe\";\n readonly groupSummary: string;\n readonly writeSummary: string;\n readonly getSummary: string;\n readonly listSummary: string;\n readonly runSummary: string;\n readonly payloadLabel: string;\n}): CliCommandDefinition {\n return {\n name: input.name,\n summary: input.groupSummary,\n defaultSubcommand: \"list\",\n subcommands: [\n {\n name: \"write\",\n id: `${input.name}.write`,\n summary: input.writeSummary,\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"id\",\n description: \"Optional recipe id\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"key\",\n description: \"Recipe key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Recipe version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n {\n name: \"tags\",\n description: \"Comma-separated tags\",\n kind: \"string\",\n valueLabel: \"tags\",\n },\n {\n name: \"payload\",\n description: `Inline ${input.payloadLabel} payload JSON object`,\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"payload-file\",\n description: `Path to ${input.payloadLabel} payload JSON file`,\n kind: \"string\",\n valueLabel: \"path\",\n internalName: \"payloadFile\",\n },\n {\n name: \"provenance-source\",\n description: \"Provenance source label\",\n kind: \"string\",\n valueLabel: \"source\",\n internalName: \"provenanceSource\",\n },\n {\n name: \"provenance-source-id\",\n description: \"Provenance source id\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"provenanceSourceId\",\n },\n {\n name: \"provenance-captured-at\",\n description: \"Provenance capture timestamp (ms)\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"provenanceCapturedAt\",\n },\n {\n name: \"provenance-notes\",\n description: \"Provenance notes\",\n kind: \"string\",\n valueLabel: \"text\",\n internalName: \"provenanceNotes\",\n },\n ],\n },\n {\n name: \"get\",\n id: `${input.name}.get`,\n summary: input.getSummary,\n positionals: [\n {\n name: \"key\",\n description: \"Recipe key\",\n },\n {\n name: \"version\",\n description: \"Optional recipe version\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Recipe key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Recipe version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n ],\n },\n {\n name: \"list\",\n id: `${input.name}.list`,\n summary: input.listSummary,\n positionals: [\n {\n name: \"key\",\n description: \"Optional recipe key filter\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Recipe key filter\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n ],\n },\n {\n name: \"run\",\n id: `${input.name}.run`,\n summary: input.runSummary,\n positionals: [\n {\n name: \"key\",\n description: \"Recipe key\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Recipe key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Recipe version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n {\n name: \"variables-json\",\n description: \"JSON object of initial recipe variables\",\n kind: \"json-object\",\n valueLabel: \"json\",\n internalName: \"variablesJson\",\n },\n ],\n },\n ],\n };\n}\n\nconst SKILLS_INSTALL_OPTIONS = [\n {\n name: \"agent\",\n description: \"Install to a specific agent (repeatable)\",\n kind: \"string\",\n valueLabel: \"name\",\n multiple: true,\n },\n {\n name: \"skill\",\n description: \"Install a specific first-party skill (repeatable)\",\n kind: \"string\",\n valueLabel: \"name\",\n multiple: true,\n },\n {\n name: \"global\",\n description: \"Install globally instead of project-local\",\n kind: \"boolean\",\n },\n {\n name: \"yes\",\n description: \"Skip interactive confirmations\",\n kind: \"boolean\",\n },\n {\n name: \"copy\",\n description: \"Copy files instead of symlinking\",\n kind: \"boolean\",\n },\n {\n name: \"all\",\n description: \"Install all first-party skills to all agents\",\n kind: \"boolean\",\n },\n {\n name: \"list\",\n description: \"List the packaged first-party skills without installing them\",\n kind: \"boolean\",\n },\n] as const;\n\nfunction createSkillsInstallCommandDefinition(input: {\n readonly name: string;\n readonly id: string;\n readonly summary: string;\n}): CliCommandDefinition {\n return {\n name: input.name,\n id: input.id,\n summary: input.summary,\n options: SKILLS_INSTALL_OPTIONS,\n examples: [\n \"opensteer skills install\",\n \"opensteer skills install --agent codex --global --yes\",\n \"opensteer skills install --all\",\n \"opensteer skills install --list\",\n ],\n };\n}\n\nconst ROOT_COMMANDS: readonly CliCommandDefinition[] = [\n {\n name: \"skills\",\n summary: \"Install or list first-party Opensteer skills.\",\n subcommands: [\n createSkillsInstallCommandDefinition({\n name: \"install\",\n id: \"skills.install\",\n summary: \"Install the packaged Opensteer skills with the upstream skills CLI.\",\n }),\n ],\n },\n {\n name: \"open\",\n id: \"open\",\n summary: \"Open a browser session and optionally navigate to a URL.\",\n positionals: [\n {\n name: \"url\",\n description: \"URL to open immediately after session creation\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n {\n name: \"engine\",\n description: \"Browser engine\",\n kind: \"enum\",\n valueLabel: \"name\",\n values: [\"playwright\", \"abp\"],\n },\n {\n name: \"local\",\n description: \"Force local execution mode\",\n kind: \"boolean\",\n },\n {\n name: \"cloud\",\n description: \"Use Opensteer Cloud\",\n kind: \"boolean\",\n },\n {\n name: \"browser\",\n description: \"Browser mode\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"managed\", \"snapshot-session\", \"snapshot-authenticated\", \"attach-live\"],\n },\n {\n name: \"headed\",\n description: \"Force a visible browser window\",\n kind: \"boolean\",\n },\n {\n name: \"headless\",\n description: \"Run browser headlessly\",\n kind: \"boolean\",\n },\n {\n name: \"executable-path\",\n description: \"Custom browser executable path\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"browser-arg\",\n description: \"Extra browser launch argument (repeatable)\",\n kind: \"string\",\n valueLabel: \"arg\",\n multiple: true,\n },\n {\n name: \"timeout-ms\",\n description: \"Session timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n },\n {\n name: \"attach-endpoint\",\n description: \"Chrome DevTools endpoint for browser attach-live mode\",\n kind: \"string\",\n valueLabel: \"endpoint\",\n internalName: \"attachEndpoint\",\n },\n {\n name: \"attach-header\",\n description:\n \"Extra attach header in NAME=VALUE form for explicit attach-live endpoint mode (repeatable)\",\n kind: \"string\",\n valueLabel: \"name=value\",\n multiple: true,\n internalName: \"attachHeader\",\n },\n {\n name: \"source-user-data-dir\",\n description: \"Source Chromium user-data root for snapshot browser modes\",\n kind: \"string\",\n valueLabel: \"path\",\n internalName: \"sourceUserDataDir\",\n },\n {\n name: \"source-profile-directory\",\n description: \"Source profile directory inside the snapshot source user-data-dir\",\n kind: \"string\",\n valueLabel: \"name\",\n internalName: \"sourceProfileDirectory\",\n },\n {\n name: \"fresh-tab\",\n description: \"Open a fresh tab when attaching through browser attach-live\",\n kind: \"boolean\",\n },\n {\n name: \"browser-json\",\n description: \"Full browser configuration as JSON\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"context-json\",\n description: \"Full browser context configuration as JSON\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"viewport\",\n description: 'Viewport size, for example 1280x720, \"null\", or \"none\"',\n kind: \"string\",\n valueLabel: \"viewport\",\n },\n {\n name: \"locale\",\n description: \"Browser locale\",\n kind: \"string\",\n valueLabel: \"locale\",\n },\n {\n name: \"timezone-id\",\n description: \"Browser timezone identifier\",\n kind: \"string\",\n valueLabel: \"tz\",\n },\n {\n name: \"user-agent\",\n description: \"Custom user agent string\",\n kind: \"string\",\n valueLabel: \"ua\",\n },\n {\n name: \"ignore-https-errors\",\n description: \"Ignore HTTPS certificate errors\",\n kind: \"boolean\",\n },\n {\n name: \"javascript-enabled\",\n description: \"Enable or disable JavaScript in the context\",\n kind: \"boolean\",\n },\n {\n name: \"bypass-csp\",\n description: \"Bypass Content Security Policy\",\n kind: \"boolean\",\n },\n {\n name: \"reduced-motion\",\n description: \"Reduced motion setting\",\n kind: \"enum\",\n valueLabel: \"mode\",\n values: [\"reduce\", \"no-preference\"],\n },\n {\n name: \"color-scheme\",\n description: \"Color scheme setting\",\n kind: \"enum\",\n valueLabel: \"scheme\",\n values: [\"light\", \"dark\", \"no-preference\"],\n },\n {\n name: \"cloud-profile-id\",\n description: \"Cloud browser profile ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"cloud-profile-reuse-if-active\",\n description: \"Reuse an active cloud session for the selected profile\",\n kind: \"boolean\",\n },\n ],\n examples: [\n \"opensteer open https://example.com --headless true\",\n \"opensteer open https://example.com --browser attach-live --fresh-tab\",\n ],\n },\n {\n name: \"goto\",\n id: \"goto\",\n summary: \"Navigate the active page to a URL.\",\n positionals: [\n {\n name: \"url\",\n description: \"Destination URL\",\n required: true,\n },\n ],\n options: [...SESSION_OPTIONS, NETWORK_TAG_OPTION],\n },\n {\n name: \"snapshot\",\n id: \"snapshot\",\n summary: \"Capture a snapshot of the current page.\",\n positionals: [\n {\n name: \"mode\",\n description: 'Snapshot mode, for example \"action\" or \"extraction\"',\n },\n ],\n options: SESSION_OPTIONS,\n },\n {\n name: \"click\",\n id: \"click\",\n summary: \"Click an element.\",\n positionals: [\n {\n name: \"target\",\n description: \"Element counter target\",\n },\n ],\n options: [...ACTION_TARGET_OPTIONS, NETWORK_TAG_OPTION],\n },\n {\n name: \"hover\",\n id: \"hover\",\n summary: \"Hover over an element.\",\n positionals: [\n {\n name: \"target\",\n description: \"Element counter target\",\n },\n ],\n options: [...ACTION_TARGET_OPTIONS, NETWORK_TAG_OPTION],\n },\n {\n name: \"input\",\n id: \"input\",\n summary: \"Type text into an element.\",\n positionals: [\n {\n name: \"target\",\n description: \"Element counter target\",\n },\n {\n name: \"text\",\n description: \"Text to type\",\n },\n ],\n options: [\n ...ACTION_TARGET_OPTIONS,\n {\n name: \"text\",\n description: \"Text to type\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n {\n name: \"press-enter\",\n description: \"Press Enter after typing\",\n kind: \"boolean\",\n },\n NETWORK_TAG_OPTION,\n ],\n examples: [\n 'opensteer input 12 \"search query\"',\n 'opensteer input --selector \"input[name=q]\" --text \"query\" --press-enter',\n ],\n },\n {\n name: \"scroll\",\n id: \"scroll\",\n summary: \"Scroll an element or the page.\",\n positionals: [\n {\n name: \"target\",\n description: \"Element counter target\",\n },\n {\n name: \"direction\",\n description: \"Scroll direction\",\n },\n {\n name: \"amount\",\n description: \"Scroll amount\",\n },\n ],\n options: [\n ...ACTION_TARGET_OPTIONS,\n {\n name: \"direction\",\n description: \"Scroll direction\",\n kind: \"enum\",\n valueLabel: \"dir\",\n values: [\"up\", \"down\", \"left\", \"right\"],\n },\n {\n name: \"amount\",\n description: \"Scroll amount\",\n kind: \"number\",\n valueLabel: \"n\",\n },\n NETWORK_TAG_OPTION,\n ],\n },\n {\n name: \"extract\",\n id: \"extract\",\n summary: \"Extract structured data from the current page.\",\n positionals: [\n {\n name: \"schema\",\n description: \"Extraction schema JSON\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n {\n name: \"description\",\n description: \"Extraction descriptor key\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n {\n name: \"schema\",\n description: \"Extraction schema JSON object\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n ],\n },\n {\n name: \"network\",\n summary: \"Query and manage captured network traffic.\",\n subcommands: [\n {\n name: \"query\",\n id: \"network.query\",\n summary: \"Query captured network traffic.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"source\",\n description: \"Network source filter\",\n kind: \"string\",\n valueLabel: \"source\",\n },\n {\n name: \"include-bodies\",\n description: \"Include request and response bodies\",\n kind: \"boolean\",\n },\n {\n name: \"limit\",\n description: \"Maximum number of records\",\n kind: \"number\",\n valueLabel: \"n\",\n },\n {\n name: \"tag\",\n description: \"Filter by tag\",\n kind: \"string\",\n valueLabel: \"tag\",\n },\n {\n name: \"page-ref\",\n description: \"Filter by page reference\",\n kind: \"string\",\n valueLabel: \"ref\",\n },\n {\n name: \"record-id\",\n description: \"Filter by record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"request-id\",\n description: \"Filter by request ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"action-id\",\n description: \"Filter by action ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"url\",\n description: \"Filter by URL\",\n kind: \"string\",\n valueLabel: \"url\",\n },\n {\n name: \"hostname\",\n description: \"Filter by hostname\",\n kind: \"string\",\n valueLabel: \"host\",\n },\n {\n name: \"path\",\n description: \"Filter by URL path\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"method\",\n description: \"Filter by HTTP method\",\n kind: \"string\",\n valueLabel: \"method\",\n },\n {\n name: \"status\",\n description: \"Filter by HTTP status\",\n kind: \"string\",\n valueLabel: \"status\",\n },\n {\n name: \"resource-type\",\n description: \"Filter by resource type\",\n kind: \"string\",\n valueLabel: \"type\",\n },\n ],\n },\n {\n name: \"save\",\n id: \"network.save\",\n summary: \"Save captured network records under a tag.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"tag\",\n description: \"Destination tag\",\n kind: \"string\",\n valueLabel: \"tag\",\n },\n {\n name: \"page-ref\",\n description: \"Filter by page reference\",\n kind: \"string\",\n valueLabel: \"ref\",\n },\n {\n name: \"record-id\",\n description: \"Filter by record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"request-id\",\n description: \"Filter by request ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"action-id\",\n description: \"Filter by action ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"url\",\n description: \"Filter by URL\",\n kind: \"string\",\n valueLabel: \"url\",\n },\n {\n name: \"hostname\",\n description: \"Filter by hostname\",\n kind: \"string\",\n valueLabel: \"host\",\n },\n {\n name: \"path\",\n description: \"Filter by URL path\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"method\",\n description: \"Filter by HTTP method\",\n kind: \"string\",\n valueLabel: \"method\",\n },\n {\n name: \"status\",\n description: \"Filter by HTTP status\",\n kind: \"string\",\n valueLabel: \"status\",\n },\n {\n name: \"resource-type\",\n description: \"Filter by resource type\",\n kind: \"string\",\n valueLabel: \"type\",\n },\n ],\n },\n {\n name: \"clear\",\n id: \"network.clear\",\n summary: \"Clear captured network records.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"tag\",\n description: \"Clear only records with this tag\",\n kind: \"string\",\n valueLabel: \"tag\",\n },\n ],\n },\n {\n name: \"minimize\",\n id: \"network.minimize\",\n summary: \"Minimize a captured request to its smallest viable form.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"record-id\",\n description: \"Saved or live network record ID to minimize\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"transport\",\n description: \"Transport to use while testing minimized variants\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"direct-http\", \"matched-tls\", \"context-http\", \"page-http\", \"session-http\"],\n },\n {\n name: \"max-trials\",\n description: \"Maximum number of trial requests\",\n kind: \"number\",\n valueLabel: \"count\",\n },\n {\n name: \"preserve\",\n description: \"Comma-separated header or cookie names to keep\",\n kind: \"string\",\n valueLabel: \"csv\",\n },\n {\n name: \"status-codes\",\n description: \"Comma-separated success status codes\",\n kind: \"string\",\n valueLabel: \"csv\",\n },\n {\n name: \"response-body-includes\",\n description: \"Comma-separated substrings required in the response body\",\n kind: \"string\",\n valueLabel: \"csv\",\n internalName: \"responseBodyIncludes\",\n },\n {\n name: \"response-structure-match\",\n description: \"Require JSON response structure to match the baseline request\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"diff\",\n id: \"network.diff\",\n summary: \"Compare two captured requests or responses field-by-field.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"left\",\n description: \"Left record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"right\",\n description: \"Right record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"scope\",\n description: \"Diff headers, body, or both\",\n kind: \"enum\",\n valueLabel: \"scope\",\n values: [\"headers\", \"body\", \"all\"],\n },\n {\n name: \"include-unchanged\",\n description: \"Include unchanged fields in the output\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"probe\",\n id: \"network.probe\",\n summary:\n \"Probe a captured request across transports and recommend the lightest working one.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"record-id\",\n description: \"Saved or live network record ID to probe\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n ],\n },\n ],\n },\n {\n name: \"reverse\",\n summary: \"Discover reverse-engineering evidence, build replay packages, and rerun them.\",\n defaultSubcommand: \"discover\",\n subcommands: [\n {\n name: \"discover\",\n id: \"reverse.discover\",\n summary:\n \"Capture a bounded observation window, analyze all plausible records, and return an ordered discovery view.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"case-id\",\n description: \"Existing case ID to extend\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n {\n name: \"key\",\n description: \"Case key for a new discovery run\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"objective\",\n description: \"Reverse-engineering objective\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n { name: \"notes\", description: \"Discovery notes\", kind: \"string\", valueLabel: \"text\" },\n {\n name: \"page-ref\",\n description: \"Page reference to discover from\",\n kind: \"string\",\n valueLabel: \"ref\",\n },\n {\n name: \"state-source\",\n description: \"State source classification for this discovery run\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"managed\", \"attach-live\", \"snapshot-session\", \"snapshot-authenticated\"],\n internalName: \"stateSource\",\n },\n {\n name: \"include-scripts\",\n description: \"Capture linked scripts\",\n kind: \"boolean\",\n internalName: \"includeScripts\",\n },\n {\n name: \"include-storage\",\n description: \"Capture browser storage state\",\n kind: \"boolean\",\n internalName: \"includeStorage\",\n },\n {\n name: \"include-session-storage\",\n description: \"Include sessionStorage in captured state\",\n kind: \"boolean\",\n internalName: \"includeSessionStorage\",\n },\n {\n name: \"include-indexed-db\",\n description: \"Include IndexedDB metadata in captured state\",\n kind: \"boolean\",\n internalName: \"includeIndexedDb\",\n },\n {\n name: \"interaction-trace-id\",\n description: \"Link an interaction trace as guard evidence (repeatable)\",\n kind: \"string\",\n valueLabel: \"id\",\n multiple: true,\n internalName: \"interactionTraceId\",\n },\n {\n name: \"target-host\",\n description: \"Target host hint for candidate ranking (repeatable)\",\n kind: \"string\",\n valueLabel: \"host\",\n multiple: true,\n internalName: \"targetHost\",\n },\n {\n name: \"target-path\",\n description: \"Target path hint for candidate ranking (repeatable)\",\n kind: \"string\",\n valueLabel: \"path\",\n multiple: true,\n internalName: \"targetPath\",\n },\n {\n name: \"target-operation-name\",\n description: \"Target GraphQL or operation name hint (repeatable)\",\n kind: \"string\",\n valueLabel: \"name\",\n multiple: true,\n internalName: \"targetOperationName\",\n },\n {\n name: \"target-channel\",\n description: \"Target channel hint (repeatable)\",\n kind: \"enum\",\n valueLabel: \"channel\",\n values: [\"http\", \"event-stream\", \"websocket\"],\n multiple: true,\n internalName: \"targetChannel\",\n },\n {\n name: \"capture-window-ms\",\n description: \"Only analyze recent requests observed within this window\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"captureWindowMs\",\n },\n {\n name: \"manual-calibration\",\n description:\n \"How strongly discovery should assume manual unlock calibration is acceptable\",\n kind: \"enum\",\n valueLabel: \"mode\",\n values: [\"allow\", \"avoid\", \"require\"],\n internalName: \"manualCalibration\",\n },\n ],\n },\n {\n name: \"query\",\n id: \"reverse.query\",\n summary:\n \"Query an existing reverse case with deterministic filters and explicit sort keys.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"case-id\",\n description: \"Reverse case ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n {\n name: \"view\",\n description: \"Query view to return\",\n kind: \"enum\",\n valueLabel: \"view\",\n values: [\"records\", \"clusters\", \"candidates\"],\n },\n {\n name: \"filters-json\",\n description: \"JSON object of reverse query filters\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"filtersJson\",\n },\n {\n name: \"sort-preset\",\n description: \"Query sort preset shortcut\",\n kind: \"enum\",\n valueLabel: \"preset\",\n values: [\n \"advisory-rank\",\n \"observed-at\",\n \"portability\",\n \"first-party\",\n \"hint-match\",\n \"response-richness\",\n ],\n internalName: \"sortPreset\",\n },\n {\n name: \"sort-json\",\n description: \"JSON object with explicit query sort keys\",\n kind: \"json-object\",\n valueLabel: \"json\",\n internalName: \"sortJson\",\n },\n { name: \"limit\", description: \"Result page size\", kind: \"number\", valueLabel: \"count\" },\n {\n name: \"cursor\",\n description: \"Result page cursor\",\n kind: \"string\",\n valueLabel: \"cursor\",\n },\n ],\n },\n {\n name: \"run\",\n id: \"reverse.package.run\",\n summary: \"Run a reverse package draft and return executed or failing step details.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"package-id\",\n description: \"Reverse package ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"packageId\",\n },\n {\n name: \"page-ref\",\n description: \"Optional page reference for browser replay\",\n kind: \"string\",\n valueLabel: \"ref\",\n internalName: \"pageRef\",\n },\n ],\n },\n {\n name: \"export\",\n id: \"reverse.export\",\n summary:\n \"Read or clone the generated reverse package, including a request plan when portable.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"package-id\",\n description: \"Reverse package ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"packageId\",\n },\n { name: \"key\", description: \"Export key\", kind: \"string\", valueLabel: \"key\" },\n { name: \"version\", description: \"Export version\", kind: \"string\", valueLabel: \"version\" },\n ],\n },\n {\n name: \"report\",\n id: \"reverse.report\",\n summary: \"Read a discovery or package reverse-engineering report.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"package-id\",\n description: \"Reverse package ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"packageId\",\n },\n {\n name: \"case-id\",\n description: \"Reverse case ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n {\n name: \"report-id\",\n description: \"Reverse report ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"reportId\",\n },\n {\n name: \"kind\",\n description: \"Report kind when reading by case ID\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"discovery\", \"package\"],\n },\n ],\n },\n {\n name: \"package\",\n summary: \"Create, inspect, list, and patch reverse packages.\",\n subcommands: [\n {\n name: \"create\",\n id: \"reverse.package.create\",\n summary: \"Create an explicit replay package draft from a chosen record or candidate.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"case-id\",\n description: \"Reverse case ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n {\n name: \"candidate-id\",\n description: \"Candidate ID to build from\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"candidateId\",\n },\n {\n name: \"record-id\",\n description: \"Observed record ID to build from\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"recordId\",\n },\n {\n name: \"template-id\",\n description: \"Optional advisory template ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"templateId\",\n },\n { name: \"key\", description: \"Package key\", kind: \"string\", valueLabel: \"key\" },\n {\n name: \"version\",\n description: \"Package version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n { name: \"notes\", description: \"Package notes\", kind: \"string\", valueLabel: \"text\" },\n ],\n },\n {\n name: \"get\",\n id: \"reverse.package.get\",\n summary: \"Read one reverse package.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"package-id\",\n description: \"Reverse package ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"packageId\",\n },\n ],\n },\n {\n name: \"list\",\n id: \"reverse.package.list\",\n summary: \"List reverse packages.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"case-id\",\n description: \"Filter by reverse case ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n {\n name: \"key\",\n description: \"Filter by package key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"kind\",\n description: \"Filter by package kind\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"portable-http\", \"browser-workflow\"],\n },\n {\n name: \"readiness\",\n description: \"Filter by package readiness\",\n kind: \"enum\",\n valueLabel: \"state\",\n values: [\"runnable\", \"draft\", \"unsupported\"],\n },\n ],\n },\n {\n name: \"patch\",\n id: \"reverse.package.patch\",\n summary: \"Write a new reverse package revision with edited workflow or evidence.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"package-id\",\n description: \"Source reverse package ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"packageId\",\n },\n {\n name: \"key\",\n description: \"Patched package key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Patched package version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n { name: \"notes\", description: \"Package notes\", kind: \"string\", valueLabel: \"text\" },\n {\n name: \"workflow-json\",\n description: \"JSON array of package workflow steps\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"workflowJson\",\n },\n {\n name: \"resolvers-json\",\n description: \"JSON array of executable resolvers\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"resolversJson\",\n },\n {\n name: \"validators-json\",\n description: \"JSON array of validation rules\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"validatorsJson\",\n },\n {\n name: \"trace-id\",\n description: \"Attach interaction trace IDs (repeatable)\",\n kind: \"string\",\n valueLabel: \"id\",\n multiple: true,\n internalName: \"traceId\",\n },\n {\n name: \"artifact-id\",\n description: \"Attach artifact IDs (repeatable)\",\n kind: \"string\",\n valueLabel: \"id\",\n multiple: true,\n internalName: \"artifactId\",\n },\n {\n name: \"record-id\",\n description: \"Attach network record IDs (repeatable)\",\n kind: \"string\",\n valueLabel: \"id\",\n multiple: true,\n internalName: \"recordId\",\n },\n {\n name: \"state-snapshot-id\",\n description: \"Attach state snapshot IDs (repeatable)\",\n kind: \"string\",\n valueLabel: \"id\",\n multiple: true,\n internalName: \"stateSnapshotId\",\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: \"interaction\",\n summary: \"Capture and compare guarded interaction traces.\",\n subcommands: [\n {\n name: \"capture\",\n id: \"interaction.capture\",\n summary: \"Capture an interaction window with event properties and state deltas.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n { name: \"key\", description: \"Trace key\", kind: \"string\", valueLabel: \"key\" },\n {\n name: \"page-ref\",\n description: \"Page reference\",\n kind: \"string\",\n valueLabel: \"ref\",\n internalName: \"pageRef\",\n },\n {\n name: \"duration-ms\",\n description: \"Manual capture duration\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"durationMs\",\n },\n {\n name: \"script\",\n description: \"Automated capture script\",\n kind: \"string\",\n valueLabel: \"js\",\n },\n {\n name: \"args-json\",\n description: \"JSON array of script args\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"argsJson\",\n },\n {\n name: \"steps-json\",\n description: \"JSON array of declarative capture steps\",\n kind: \"json\",\n valueLabel: \"json\",\n internalName: \"stepsJson\",\n },\n {\n name: \"include-storage\",\n description: \"Capture browser storage state\",\n kind: \"boolean\",\n internalName: \"includeStorage\",\n },\n {\n name: \"include-session-storage\",\n description: \"Include sessionStorage\",\n kind: \"boolean\",\n internalName: \"includeSessionStorage\",\n },\n {\n name: \"include-indexed-db\",\n description: \"Include IndexedDB metadata\",\n kind: \"boolean\",\n internalName: \"includeIndexedDb\",\n },\n {\n name: \"global-name\",\n description: \"Page global to snapshot (repeatable)\",\n kind: \"string\",\n valueLabel: \"name\",\n multiple: true,\n internalName: \"globalName\",\n },\n {\n name: \"case-id\",\n description: \"Attach trace to an existing case\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"caseId\",\n },\n { name: \"notes\", description: \"Trace notes\", kind: \"string\", valueLabel: \"text\" },\n ],\n },\n {\n name: \"get\",\n id: \"interaction.get\",\n summary: \"Read one interaction trace.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"trace-id\",\n description: \"Trace ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"traceId\",\n },\n ],\n },\n {\n name: \"diff\",\n id: \"interaction.diff\",\n summary: \"Diff two interaction traces.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"left-trace-id\",\n description: \"Left trace ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"leftTraceId\",\n },\n {\n name: \"right-trace-id\",\n description: \"Right trace ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"rightTraceId\",\n },\n ],\n },\n {\n name: \"replay\",\n id: \"interaction.replay\",\n summary: \"Replay one interaction trace against a live page.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"trace-id\",\n description: \"Trace ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"traceId\",\n },\n {\n name: \"page-ref\",\n description: \"Optional page reference override\",\n kind: \"string\",\n valueLabel: \"ref\",\n internalName: \"pageRef\",\n },\n ],\n },\n ],\n },\n {\n name: \"artifact\",\n summary: \"Read captured reverse-engineering artifacts.\",\n subcommands: [\n {\n name: \"read\",\n id: \"artifact.read\",\n summary: \"Read one stored artifact.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"artifact-id\",\n description: \"Artifact ID\",\n kind: \"string\",\n valueLabel: \"id\",\n internalName: \"artifactId\",\n },\n ],\n },\n ],\n },\n {\n name: \"scripts\",\n summary: \"Capture page script sources for reverse-engineering workflows.\",\n defaultSubcommand: \"capture\",\n subcommands: [\n {\n name: \"capture\",\n id: \"scripts.capture\",\n summary: \"Capture inline and external script sources from the current page and run.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"page-ref\",\n description: \"Capture against a specific page reference\",\n kind: \"string\",\n valueLabel: \"ref\",\n },\n {\n name: \"include-inline\",\n description: \"Include inline script tags\",\n kind: \"boolean\",\n },\n {\n name: \"include-external\",\n description: \"Include external script requests\",\n kind: \"boolean\",\n },\n {\n name: \"include-dynamic\",\n description: \"Include script requests observed outside the current DOM tree\",\n kind: \"boolean\",\n },\n {\n name: \"include-workers\",\n description: \"Include worker script URLs observed during the current run\",\n kind: \"boolean\",\n },\n {\n name: \"url-filter\",\n description: \"Only include script URLs containing this string\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n {\n name: \"no-persist\",\n description: \"Return captured scripts without persisting script artifacts\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"beautify\",\n id: \"scripts.beautify\",\n summary: \"Beautify captured or inline script content with Prettier.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"artifact-id\",\n description: \"Script artifact ID to beautify\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"content\",\n description: \"Inline script content to beautify\",\n kind: \"string\",\n valueLabel: \"code\",\n },\n {\n name: \"no-persist\",\n description: \"Return beautified content without persisting a new artifact\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"deobfuscate\",\n id: \"scripts.deobfuscate\",\n summary: \"Deobfuscate captured or inline script content with webcrack.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"artifact-id\",\n description: \"Script artifact ID to deobfuscate\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"content\",\n description: \"Inline script content to deobfuscate\",\n kind: \"string\",\n valueLabel: \"code\",\n },\n {\n name: \"no-persist\",\n description: \"Return deobfuscated content without persisting a new artifact\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"sandbox\",\n id: \"scripts.sandbox\",\n summary: \"Run script content in a configurable VM sandbox.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"artifact-id\",\n description: \"Script artifact ID to execute\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"content\",\n description: \"Inline script content to execute\",\n kind: \"string\",\n valueLabel: \"code\",\n },\n {\n name: \"fidelity\",\n description: \"Sandbox fidelity level\",\n kind: \"enum\",\n valueLabel: \"level\",\n values: [\"minimal\", \"standard\", \"full\"],\n },\n {\n name: \"ajax-routes\",\n description: \"JSON array of AJAX route rules\",\n kind: \"json\",\n valueLabel: \"json\",\n },\n {\n name: \"cookies\",\n description: \"JSON object of cookie values\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"globals\",\n description: \"JSON object of extra globals to inject\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"timeout-ms\",\n description: \"Execution timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n },\n {\n name: \"clock-mode\",\n description: \"Clock behavior inside the sandbox\",\n kind: \"enum\",\n valueLabel: \"mode\",\n values: [\"real\", \"manual\"],\n },\n ],\n },\n ],\n },\n {\n name: \"captcha\",\n summary: \"Detect and solve page CAPTCHA challenges.\",\n defaultSubcommand: \"solve\",\n subcommands: [\n {\n name: \"solve\",\n id: \"captcha.solve\",\n summary: \"Solve a supported CAPTCHA and inject the token into the page.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"provider\",\n description: \"CAPTCHA solving provider\",\n kind: \"enum\",\n valueLabel: \"provider\",\n values: [\"2captcha\", \"capsolver\"],\n },\n {\n name: \"api-key\",\n description: \"Provider API key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"page-ref\",\n description: \"Target page reference\",\n kind: \"string\",\n valueLabel: \"ref\",\n },\n {\n name: \"type\",\n description: \"Explicit CAPTCHA type\",\n kind: \"enum\",\n valueLabel: \"type\",\n values: [\"recaptcha-v2\", \"hcaptcha\", \"turnstile\"],\n },\n {\n name: \"site-key\",\n description: \"Explicit CAPTCHA site key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"page-url\",\n description: \"Explicit page URL for the CAPTCHA challenge\",\n kind: \"string\",\n valueLabel: \"url\",\n },\n {\n name: \"timeout-ms\",\n description: \"Solve timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n },\n ],\n },\n ],\n },\n {\n name: \"plan\",\n summary: \"Manage request plans.\",\n subcommands: [\n {\n name: \"write\",\n id: \"plan.write\",\n summary: \"Write a request plan.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"id\",\n description: \"Explicit plan record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"key\",\n description: \"Plan key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Plan version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n {\n name: \"payload\",\n description: \"Inline request plan payload JSON object\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"payload-file\",\n description: \"Request plan payload JSON file\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"lifecycle\",\n description: \"Plan lifecycle\",\n kind: \"string\",\n valueLabel: \"lifecycle\",\n },\n {\n name: \"tags\",\n description: \"Comma-separated plan tags\",\n kind: \"string\",\n valueLabel: \"csv\",\n },\n {\n name: \"provenance-source\",\n description: \"Plan provenance source\",\n kind: \"string\",\n valueLabel: \"source\",\n },\n {\n name: \"provenance-source-id\",\n description: \"Plan provenance source identifier\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"provenance-captured-at\",\n description: \"Plan provenance capture timestamp\",\n kind: \"number\",\n valueLabel: \"ms\",\n },\n {\n name: \"provenance-notes\",\n description: \"Plan provenance notes\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n ],\n },\n {\n name: \"infer\",\n id: \"plan.infer\",\n summary: \"Infer a request plan from a captured network record.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"record-id\",\n description: \"Network record ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"key\",\n description: \"Plan key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Plan version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n {\n name: \"lifecycle\",\n description: \"Plan lifecycle\",\n kind: \"string\",\n valueLabel: \"lifecycle\",\n },\n ],\n },\n {\n name: \"get\",\n id: \"plan.get\",\n summary: \"Read a request plan.\",\n positionals: [\n {\n name: \"key\",\n description: \"Plan key\",\n },\n {\n name: \"version\",\n description: \"Plan version\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Plan key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Plan version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n ],\n },\n {\n name: \"list\",\n id: \"plan.list\",\n summary: \"List request plans.\",\n positionals: [\n {\n name: \"key\",\n description: \"Optional plan key filter\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Plan key filter\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n ],\n },\n ],\n },\n {\n name: \"request\",\n summary: \"Execute request plans or raw requests.\",\n defaultSubcommand: \"execute\",\n subcommands: [\n {\n name: \"raw\",\n id: \"request.raw\",\n summary: \"Execute a raw HTTP request.\",\n positionals: [\n {\n name: \"url\",\n description: \"Request URL\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"url\",\n description: \"Request URL\",\n kind: \"string\",\n valueLabel: \"url\",\n },\n {\n name: \"transport\",\n description: \"Transport mode for raw requests\",\n kind: \"enum\",\n valueLabel: \"kind\",\n values: [\"direct-http\", \"matched-tls\", \"context-http\", \"page-http\", \"session-http\"],\n },\n {\n name: \"method\",\n description: \"HTTP method\",\n kind: \"string\",\n valueLabel: \"method\",\n },\n {\n name: \"header\",\n description: \"Header in NAME=VALUE form (repeatable)\",\n kind: \"string\",\n valueLabel: \"name=value\",\n multiple: true,\n },\n {\n name: \"body-json\",\n description: \"JSON request body\",\n kind: \"json\",\n valueLabel: \"json\",\n },\n {\n name: \"body-text\",\n description: \"Text request body\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n {\n name: \"body-base64\",\n description: \"Base64 request body\",\n kind: \"string\",\n valueLabel: \"data\",\n },\n {\n name: \"body-file\",\n description: \"Request body file\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"content-type\",\n description: \"Content-Type header\",\n kind: \"string\",\n valueLabel: \"type\",\n },\n {\n name: \"no-follow-redirects\",\n description: \"Do not follow redirects\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"execute\",\n id: \"request.execute\",\n summary: \"Execute a stored request plan.\",\n positionals: [\n {\n name: \"key\",\n description: \"Plan key\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"key\",\n description: \"Plan key\",\n kind: \"string\",\n valueLabel: \"key\",\n },\n {\n name: \"version\",\n description: \"Plan version\",\n kind: \"string\",\n valueLabel: \"version\",\n },\n {\n name: \"param\",\n description: \"Path parameter in NAME=VALUE form (repeatable)\",\n kind: \"string\",\n valueLabel: \"name=value\",\n multiple: true,\n },\n {\n name: \"query\",\n description: \"Query parameter in NAME=VALUE form (repeatable)\",\n kind: \"string\",\n valueLabel: \"name=value\",\n multiple: true,\n },\n {\n name: \"header\",\n description: \"Request header in NAME=VALUE form (repeatable)\",\n kind: \"string\",\n valueLabel: \"name=value\",\n multiple: true,\n },\n {\n name: \"body-json\",\n description: \"JSON request body override\",\n kind: \"json\",\n valueLabel: \"json\",\n },\n {\n name: \"body-text\",\n description: \"Text request body override\",\n kind: \"string\",\n valueLabel: \"text\",\n },\n {\n name: \"body-base64\",\n description: \"Base64 request body override\",\n kind: \"string\",\n valueLabel: \"data\",\n },\n {\n name: \"body-file\",\n description: \"Request body file override\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n {\n name: \"content-type\",\n description: \"Content-Type header override\",\n kind: \"string\",\n valueLabel: \"type\",\n },\n {\n name: \"no-validate\",\n description: \"Skip response validation\",\n kind: \"boolean\",\n },\n ],\n },\n ],\n },\n {\n name: \"inspect\",\n summary: \"Inspect browser session state.\",\n defaultSubcommand: \"cookies\",\n subcommands: [\n {\n name: \"cookies\",\n id: \"inspect.cookies\",\n summary: \"Read cookies from the current browser session.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"url\",\n description: \"Filter cookies by URL (repeatable)\",\n kind: \"string\",\n valueLabel: \"url\",\n multiple: true,\n },\n ],\n },\n {\n name: \"storage\",\n id: \"inspect.storage\",\n summary: \"Read browser storage from the current browser session.\",\n options: [\n ...SESSION_OPTIONS,\n OUTPUT_OPTION,\n {\n name: \"include-session-storage\",\n description: \"Include sessionStorage snapshots\",\n kind: \"boolean\",\n },\n {\n name: \"include-indexed-db\",\n description: \"Include IndexedDB snapshots\",\n kind: \"boolean\",\n },\n ],\n },\n ],\n },\n createRecipeCommandDefinition({\n name: \"recipe\",\n groupSummary: \"Manage reusable recipes.\",\n writeSummary: \"Write a reusable recipe.\",\n getSummary: \"Read a recipe.\",\n listSummary: \"List recipes.\",\n runSummary: \"Run a recipe.\",\n payloadLabel: \"recipe\",\n }),\n createRecipeCommandDefinition({\n name: \"auth-recipe\",\n groupSummary: \"Manage auth recovery recipes.\",\n writeSummary: \"Write an auth recovery recipe.\",\n getSummary: \"Read an auth recovery recipe.\",\n listSummary: \"List auth recovery recipes.\",\n runSummary: \"Run an auth recovery recipe.\",\n payloadLabel: \"auth recipe\",\n }),\n {\n name: \"computer\",\n id: \"computer\",\n summary: \"Execute a computer-use action.\",\n positionals: [\n {\n name: \"action\",\n description: \"Computer action JSON object\",\n },\n ],\n options: [\n ...SESSION_OPTIONS,\n NETWORK_TAG_OPTION,\n {\n name: \"action\",\n description: \"Computer action JSON object\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"screenshot-json\",\n description: \"Full screenshot configuration as JSON object\",\n kind: \"json-object\",\n valueLabel: \"json\",\n },\n {\n name: \"format\",\n description: \"Screenshot format\",\n kind: \"string\",\n valueLabel: \"format\",\n },\n {\n name: \"include-cursor\",\n description: \"Include cursor in screenshots\",\n kind: \"boolean\",\n },\n {\n name: \"disable-annotations\",\n description: \"Comma-separated screenshot annotations to disable\",\n kind: \"string\",\n valueLabel: \"csv\",\n },\n ],\n },\n {\n name: \"close\",\n id: \"close\",\n summary: \"Close the active browser session.\",\n options: SESSION_OPTIONS,\n },\n {\n name: \"service-host\",\n id: \"service-host\",\n summary: \"Start the local Opensteer service host.\",\n options: [\n ...SESSION_OPTIONS,\n {\n name: \"engine\",\n description: \"Browser engine\",\n kind: \"enum\",\n valueLabel: \"name\",\n values: [\"playwright\", \"abp\"],\n },\n ],\n },\n {\n name: \"mcp\",\n id: \"mcp\",\n summary: \"Run the Opensteer MCP server.\",\n options: [\n ...SESSION_OPTIONS,\n {\n name: \"engine\",\n description: \"Browser engine\",\n kind: \"enum\",\n valueLabel: \"name\",\n values: [\"playwright\", \"abp\"],\n },\n {\n name: \"local\",\n description: \"Force local execution mode\",\n kind: \"boolean\",\n },\n {\n name: \"cloud\",\n description: \"Use Opensteer Cloud\",\n kind: \"boolean\",\n },\n ],\n },\n {\n name: \"local-profile\",\n summary: \"Inspect local Chrome profiles for real-browser mode.\",\n subcommands: [\n {\n name: \"list\",\n id: \"local-profile.list\",\n summary: \"List discovered local Chrome/Chromium profiles.\",\n options: [\n {\n name: \"json\",\n description: \"Print JSON output\",\n kind: \"boolean\",\n },\n {\n name: \"user-data-dir\",\n description: \"Override Chrome user-data root\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n ],\n },\n {\n name: \"inspect\",\n id: \"local-profile.inspect\",\n summary: \"Inspect a local Chrome user-data-dir for launch ownership state.\",\n options: [\n {\n name: \"user-data-dir\",\n description: \"Override Chrome user-data root\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n ],\n },\n {\n name: \"unlock\",\n id: \"local-profile.unlock\",\n summary: \"Remove stale Chrome singleton artifacts from a user-data-dir.\",\n options: [\n {\n name: \"user-data-dir\",\n description: \"Chrome user-data root\",\n kind: \"string\",\n valueLabel: \"path\",\n },\n ],\n },\n ],\n },\n {\n name: \"browser\",\n summary: \"Inspect local CDP browser discovery and endpoints.\",\n defaultSubcommand: \"discover\",\n subcommands: [\n {\n name: \"discover\",\n id: \"browser.discover\",\n summary: \"Discover locally attachable Chrome/Chromium DevTools endpoints.\",\n options: [\n {\n name: \"json\",\n description: \"Print JSON output\",\n kind: \"boolean\",\n },\n {\n name: \"timeout-ms\",\n description: \"Probe timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"timeoutMs\",\n },\n ],\n },\n {\n name: \"inspect\",\n id: \"browser.inspect\",\n summary: \"Inspect a CDP endpoint and resolve its browser websocket URL.\",\n options: [\n {\n name: \"endpoint\",\n description: \"Chrome DevTools endpoint to inspect\",\n kind: \"string\",\n valueLabel: \"port|ws-url|http-url\",\n },\n {\n name: \"json\",\n description: \"Print JSON output\",\n kind: \"boolean\",\n },\n {\n name: \"timeout-ms\",\n description: \"Probe timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"timeoutMs\",\n },\n ],\n },\n ],\n },\n {\n name: \"profile\",\n summary: \"Manage cloud browser profile cookie sync.\",\n subcommands: [\n {\n name: \"sync\",\n id: \"profile.sync\",\n summary:\n \"Sync cookies from a live Chromium browser into an existing Opensteer cloud profile.\",\n options: [\n {\n name: \"profile-id\",\n description: \"Destination cloud browser profile ID\",\n kind: \"string\",\n valueLabel: \"id\",\n },\n {\n name: \"browser\",\n description: \"Source Chromium-family browser brand\",\n kind: \"enum\",\n valueLabel: \"brand\",\n values: PROFILE_SYNC_BROWSER_VALUES,\n internalName: \"brandId\",\n },\n {\n name: \"attach-endpoint\",\n description: \"DevTools endpoint for the source browser; auto-discovered when omitted\",\n kind: \"string\",\n valueLabel: \"endpoint\",\n internalName: \"attachEndpoint\",\n },\n {\n name: \"user-data-dir\",\n description: \"Explicit browser user-data-dir\",\n kind: \"string\",\n valueLabel: \"path\",\n internalName: \"userDataDir\",\n },\n {\n name: \"profile-directory\",\n description:\n 'Profile directory name inside the selected user-data-dir (for example \"Default\")',\n kind: \"string\",\n valueLabel: \"name\",\n internalName: \"profileDirectory\",\n },\n {\n name: \"executable-path\",\n description: \"Explicit browser executable override\",\n kind: \"string\",\n valueLabel: \"path\",\n internalName: \"executablePath\",\n },\n {\n name: \"strategy\",\n description: \"Cookie capture strategy\",\n kind: \"enum\",\n valueLabel: \"mode\",\n values: PROFILE_SYNC_STRATEGY_VALUES,\n },\n {\n name: \"domain\",\n description: \"Restrict sync to a domain (repeatable)\",\n kind: \"string\",\n valueLabel: \"domain\",\n multiple: true,\n },\n {\n name: \"all-domains\",\n description: \"Sync cookies for all domains\",\n kind: \"boolean\",\n internalName: \"allDomains\",\n },\n {\n name: \"restore-browser\",\n description: \"Re-launch the browser after managed-relaunch capture (default: true)\",\n kind: \"boolean\",\n internalName: \"restoreBrowser\",\n },\n {\n name: \"no-restore-browser\",\n description: \"Do not re-launch the browser after managed-relaunch capture\",\n kind: \"boolean\",\n internalName: \"noRestoreBrowser\",\n },\n {\n name: \"yes\",\n description: \"Skip interactive confirmations\",\n kind: \"boolean\",\n },\n {\n name: \"timeout-ms\",\n description: \"Capture planning timeout in milliseconds\",\n kind: \"number\",\n valueLabel: \"ms\",\n internalName: \"timeoutMs\",\n },\n {\n name: \"dry-run\",\n description: \"Print the resolved capture plan without syncing\",\n kind: \"boolean\",\n internalName: \"dryRun\",\n },\n {\n name: \"json\",\n description: \"Print JSON output\",\n kind: \"boolean\",\n },\n ],\n },\n ],\n },\n] as const;\n\nexport const opensteerCliSchema: CliCommandDefinition = {\n name: \"opensteer\",\n summary: \"Thin JSON-first CLI for Opensteer sessions and workflows.\",\n subcommands: ROOT_COMMANDS,\n};\n\nexport const browserCliSchema = requireSubcommand(opensteerCliSchema, \"browser\");\nexport const localProfileCliSchema = requireSubcommand(opensteerCliSchema, \"local-profile\");\nexport const profileCliSchema = requireSubcommand(opensteerCliSchema, \"profile\");\n\nvalidateCliSchema(opensteerCliSchema);\n\nexport function parseCliArguments(input: {\n readonly schema: CliCommandDefinition;\n readonly programName: string;\n readonly argv: readonly string[];\n}): CliParseResult {\n const { schema, programName, argv } = input;\n\n if (argv.length === 0) {\n return createHelpResult(schema, [], programName);\n }\n\n if (isHelpToken(argv[0]!)) {\n const resolved = resolveHelpTarget(schema, argv.slice(1));\n return createHelpResult(resolved.command, resolved.commandPath, programName);\n }\n\n const resolved = resolveCommand(schema, argv);\n if (\n resolved.command.subcommands !== undefined &&\n resolved.command.defaultSubcommand === undefined\n ) {\n if (resolved.remaining.length === 1 && isHelpToken(resolved.remaining[0]!)) {\n return createHelpResult(resolved.command, resolved.commandPath, programName);\n }\n throw new Error(\n `${formatCommandPath(programName, resolved.commandPath)} requires a subcommand: ${listSubcommandNames(resolved.command)}.`,\n );\n }\n\n const parsed = parseLeafArguments(resolved.command, resolved.remaining);\n if (parsed.help) {\n return createHelpResult(resolved.command, resolved.commandPath, programName);\n }\n\n validatePositionalCount(resolved.command, parsed.positionals, programName, resolved.commandPath);\n\n return {\n kind: \"command\",\n invocation: {\n commandId: resolved.command.id ?? resolved.commandPath.join(\".\"),\n command: resolved.command,\n commandPath: resolved.commandPath,\n positionals: parsed.positionals,\n options: parsed.options,\n },\n };\n}\n\nexport function renderHelp(input: {\n readonly schema: CliCommandDefinition;\n readonly programName: string;\n readonly commandPath?: readonly string[];\n}): string {\n const commandPath = input.commandPath ?? [];\n const resolved =\n commandPath.length === 0\n ? { command: input.schema, commandPath }\n : resolveHelpTarget(input.schema, commandPath);\n return renderCommandHelp(resolved.command, resolved.commandPath, input.programName);\n}\n\nfunction createHelpResult(\n command: CliCommandDefinition,\n commandPath: readonly string[],\n programName: string,\n): CliParseResult {\n return {\n kind: \"help\",\n command,\n commandPath,\n text: renderCommandHelp(command, commandPath, programName),\n };\n}\n\nfunction resolveHelpTarget(\n schema: CliCommandDefinition,\n tokens: readonly string[],\n): {\n readonly command: CliCommandDefinition;\n readonly commandPath: readonly string[];\n} {\n let command = schema;\n const commandPath: string[] = [];\n\n for (const token of tokens) {\n if (token.startsWith(\"-\")) {\n throw new Error(`Unsupported help target \"${token}\".`);\n }\n const next = command.subcommands?.find((entry) => entry.name === token);\n if (!next) {\n throw new Error(`unsupported command \"${token}\"`);\n }\n command = next;\n commandPath.push(token);\n }\n\n return {\n command,\n commandPath,\n };\n}\n\nfunction resolveCommand(\n schema: CliCommandDefinition,\n argv: readonly string[],\n): {\n readonly command: CliCommandDefinition;\n readonly commandPath: readonly string[];\n readonly remaining: readonly string[];\n} {\n let command = schema;\n const commandPath: string[] = [];\n let index = 0;\n\n while (command.subcommands !== undefined && index < argv.length) {\n const token = argv[index]!;\n if (token.startsWith(\"-\")) {\n break;\n }\n const next = command.subcommands.find((entry) => entry.name === token);\n if (next) {\n command = next;\n commandPath.push(token);\n index += 1;\n continue;\n }\n if (command.defaultSubcommand !== undefined) {\n command = requireSubcommand(command, command.defaultSubcommand);\n commandPath.push(command.name);\n break;\n }\n break;\n }\n\n if (command === schema) {\n throw new Error(\n `unsupported command \"${argv[0]}\". Supported commands: ${listSubcommandNames(schema)}.`,\n );\n }\n\n if (command.subcommands !== undefined && command.defaultSubcommand !== undefined) {\n command = requireSubcommand(command, command.defaultSubcommand);\n commandPath.push(command.name);\n }\n\n return {\n command,\n commandPath,\n remaining: argv.slice(index),\n };\n}\n\nfunction parseLeafArguments(\n command: CliCommandDefinition,\n argv: readonly string[],\n): {\n readonly help: boolean;\n readonly positionals: readonly string[];\n readonly options: Readonly<Record<string, ParsedOptionValue>>;\n} {\n const definitions = [...(command.options ?? []), HELP_OPTION];\n const optionsByName = new Map(definitions.map((definition) => [definition.name, definition]));\n const parsed: Record<string, ParsedOptionValue> = {};\n const positionals: string[] = [];\n let help = false;\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index]!;\n if (token === \"--\") {\n positionals.push(...argv.slice(index + 1));\n break;\n }\n if (token === \"-h\" || token === \"--help\") {\n help = true;\n continue;\n }\n if (!token.startsWith(\"-\")) {\n positionals.push(token);\n continue;\n }\n if (!token.startsWith(\"--\")) {\n throw new Error(`unsupported short option \"${token}\". Only -h is supported.`);\n }\n\n const trimmed = token.slice(2);\n const [name, inlineValue] = trimmed.split(\"=\", 2);\n if (!name) {\n throw new Error(\"invalid option syntax\");\n }\n const definition = optionsByName.get(name);\n if (!definition) {\n throw new Error(buildUnknownOptionMessage(name, optionsByName));\n }\n\n const internalName = definition.internalName ?? toCamelCase(definition.name);\n if (!definition.multiple && Object.prototype.hasOwnProperty.call(parsed, internalName)) {\n throw new Error(`Option \"--${definition.name}\" may only be specified once.`);\n }\n\n const consumed = parseOptionValue(definition, inlineValue, argv[index + 1]);\n if (consumed.consumeNext) {\n index += 1;\n }\n\n if (definition.multiple) {\n const existing = parsed[internalName];\n const nextValues =\n existing === undefined ? [] : Array.isArray(existing) ? existing : [existing];\n parsed[internalName] = [...nextValues, consumed.value];\n } else {\n parsed[internalName] = consumed.value;\n }\n }\n\n return {\n help,\n positionals,\n options: parsed,\n };\n}\n\nfunction parseOptionValue(\n definition: CliOptionDefinition,\n inlineValue: string | undefined,\n nextToken: string | undefined,\n): {\n readonly value: ParsedOptionValue;\n readonly consumeNext: boolean;\n} {\n if (definition.kind === \"boolean\") {\n if (inlineValue !== undefined) {\n return {\n value: parseBooleanValue(inlineValue, definition.name),\n consumeNext: false,\n };\n }\n if (nextToken !== undefined && isBooleanLiteral(nextToken)) {\n return {\n value: parseBooleanValue(nextToken, definition.name),\n consumeNext: true,\n };\n }\n return {\n value: true,\n consumeNext: false,\n };\n }\n\n const rawValue =\n inlineValue !== undefined ? inlineValue : nextToken !== undefined ? nextToken : undefined;\n if (rawValue === undefined) {\n throw new Error(`Option \"--${definition.name}\" requires a value.`);\n }\n if (inlineValue === undefined && nextToken === undefined) {\n throw new Error(`Option \"--${definition.name}\" requires a value.`);\n }\n if (inlineValue === undefined && nextToken !== undefined && nextToken.startsWith(\"--\")) {\n throw new Error(`Option \"--${definition.name}\" requires a value.`);\n }\n\n switch (definition.kind) {\n case \"string\":\n return {\n value: rawValue,\n consumeNext: inlineValue === undefined,\n };\n case \"number\": {\n const parsed = Number(rawValue);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Option \"--${definition.name}\" must be a number.`);\n }\n return {\n value: parsed,\n consumeNext: inlineValue === undefined,\n };\n }\n case \"json\":\n return {\n value: parseJson(rawValue, definition.name),\n consumeNext: inlineValue === undefined,\n };\n case \"json-object\":\n return {\n value: parseJsonObject(rawValue, definition.name),\n consumeNext: inlineValue === undefined,\n };\n case \"enum\":\n if (!definition.values?.includes(rawValue)) {\n throw new Error(\n `Option \"--${definition.name}\" must be one of: ${definition.values?.join(\", \") ?? \"\"}.`,\n );\n }\n return {\n value: rawValue,\n consumeNext: inlineValue === undefined,\n };\n }\n}\n\nfunction parseBooleanValue(value: string, name: string): boolean {\n if (value === \"true\" || value === \"1\") {\n return true;\n }\n if (value === \"false\" || value === \"0\") {\n return false;\n }\n throw new Error(`Option \"--${name}\" must be a boolean value.`);\n}\n\nfunction parseJson(value: string, name: string): unknown {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new Error(\n `Option \"--${name}\" must be valid JSON: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction parseJsonObject(value: string, name: string): Record<string, unknown> {\n const parsed = parseJson(value, name);\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\nfunction buildUnknownOptionMessage(\n name: string,\n definitions: ReadonlyMap<string, CliOptionDefinition>,\n): string {\n const suggestion = suggestOption(name, [...definitions.keys()]);\n return suggestion === undefined\n ? `unknown option \"--${name}\".`\n : `unknown option \"--${name}\". Did you mean \"--${suggestion}\"?`;\n}\n\nfunction suggestOption(name: string, candidates: readonly string[]): string | undefined {\n const normalized = normalizeOptionName(name);\n const normalizedMatches = candidates.filter(\n (candidate) => normalizeOptionName(candidate) === normalized,\n );\n if (normalizedMatches.length === 1) {\n return normalizedMatches[0];\n }\n\n let best: string | undefined;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const candidate of candidates) {\n const distance = levenshteinDistance(name, candidate);\n if (distance < bestDistance) {\n best = candidate;\n bestDistance = distance;\n }\n }\n return bestDistance <= 2 ? best : undefined;\n}\n\nfunction normalizeOptionName(value: string): string {\n return value.replace(/[^a-z0-9]/gi, \"\").toLowerCase();\n}\n\nfunction levenshteinDistance(left: string, right: string): number {\n const matrix = Array.from({ length: left.length + 1 }, () =>\n new Array<number>(right.length + 1).fill(0),\n );\n for (let row = 0; row <= left.length; row += 1) {\n matrix[row]![0] = row;\n }\n for (let column = 0; column <= right.length; column += 1) {\n matrix[0]![column] = column;\n }\n for (let row = 1; row <= left.length; row += 1) {\n for (let column = 1; column <= right.length; column += 1) {\n const cost = left[row - 1] === right[column - 1] ? 0 : 1;\n matrix[row]![column] = Math.min(\n matrix[row - 1]![column]! + 1,\n matrix[row]![column - 1]! + 1,\n matrix[row - 1]![column - 1]! + cost,\n );\n }\n }\n return matrix[left.length]![right.length]!;\n}\n\nfunction validatePositionalCount(\n command: CliCommandDefinition,\n positionals: readonly string[],\n programName: string,\n commandPath: readonly string[],\n): void {\n const definitions = command.positionals ?? [];\n if (definitions.length === 0) {\n if (positionals.length > 0) {\n throw new Error(\n `${formatCommandPath(programName, commandPath)} does not accept positional arguments.`,\n );\n }\n return;\n }\n\n const max = definitions.some((definition) => definition.variadic)\n ? Number.POSITIVE_INFINITY\n : definitions.length;\n if (positionals.length > max) {\n throw new Error(\n `${formatCommandPath(programName, commandPath)} accepts at most ${String(max)} positional argument${max === 1 ? \"\" : \"s\"}.`,\n );\n }\n\n const required = definitions.filter((definition) => definition.required).length;\n if (required > 0 && positionals.length < required) {\n throw new Error(\n `${formatCommandPath(programName, commandPath)} requires ${String(required)} positional argument${required === 1 ? \"\" : \"s\"}.`,\n );\n }\n}\n\nfunction renderCommandHelp(\n command: CliCommandDefinition,\n commandPath: readonly string[],\n programName: string,\n): string {\n const lines: string[] = [];\n lines.push(`Usage: ${renderUsage(programName, command, commandPath)}`);\n lines.push(\"\");\n lines.push(command.summary);\n\n if (command.description) {\n lines.push(\"\");\n lines.push(command.description);\n }\n\n if (command.subcommands?.length) {\n lines.push(\"\");\n lines.push(\"Commands:\");\n for (const subcommand of command.subcommands) {\n lines.push(\n ` ${padRight(subcommand.name, longestCommandName(command.subcommands))} ${subcommand.summary}`,\n );\n }\n }\n\n if (command.positionals?.length) {\n lines.push(\"\");\n lines.push(\"Positionals:\");\n for (const positional of command.positionals) {\n lines.push(\n ` ${padRight(renderPositional(positional), longestPositionalName(command.positionals))} ${positional.description}`,\n );\n }\n }\n\n const options = [...(command.options ?? []), HELP_OPTION];\n if (options.length > 0) {\n lines.push(\"\");\n lines.push(\"Options:\");\n for (const option of options) {\n const label =\n option.name === \"help\" ? \"-h, --help\" : `--${option.name}${renderValueLabel(option)}`;\n lines.push(` ${padRight(label, longestOptionLabel(options))} ${option.description}`);\n }\n }\n\n if (command.examples?.length) {\n lines.push(\"\");\n lines.push(\"Examples:\");\n for (const example of command.examples) {\n lines.push(` ${example}`);\n }\n }\n\n if (command.subcommands?.length) {\n lines.push(\"\");\n const helpTarget =\n commandPath.length === 0 ? \"<command>\" : `${commandPath.join(\" \")} <command>`;\n lines.push(`Use \"${programName} help ${helpTarget}\" for more information.`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction renderUsage(\n programName: string,\n command: CliCommandDefinition,\n commandPath: readonly string[],\n): string {\n const base = formatCommandPath(programName, commandPath);\n if (command.subcommands?.length) {\n return `${base} <command>`;\n }\n\n const positionals = (command.positionals ?? []).map(renderPositional);\n const suffix = positionals.length === 0 ? \"\" : ` ${positionals.join(\" \")}`;\n return `${base}${suffix}${(command.options ?? []).length > 0 ? \" [options]\" : \"\"}`;\n}\n\nfunction renderPositional(positional: CliPositionalDefinition): string {\n const wrapped = positional.required ? `<${positional.name}>` : `[${positional.name}]`;\n return positional.variadic ? `${wrapped}...` : wrapped;\n}\n\nfunction renderValueLabel(option: CliOptionDefinition): string {\n if (option.kind === \"boolean\") {\n return \"\";\n }\n return ` <${option.valueLabel ?? \"value\"}>`;\n}\n\nfunction formatCommandPath(programName: string, commandPath: readonly string[]): string {\n return commandPath.length === 0 ? programName : `${programName} ${commandPath.join(\" \")}`;\n}\n\nfunction listSubcommandNames(command: CliCommandDefinition): string {\n return command.subcommands?.map((entry) => entry.name).join(\", \") ?? \"\";\n}\n\nfunction longestCommandName(commands: readonly CliCommandDefinition[]): number {\n return Math.max(...commands.map((command) => command.name.length));\n}\n\nfunction longestOptionLabel(options: readonly CliOptionDefinition[]): number {\n return Math.max(\n ...options.map(\n (option) =>\n (option.name === \"help\" ? \"-h, --help\" : `--${option.name}${renderValueLabel(option)}`)\n .length,\n ),\n );\n}\n\nfunction longestPositionalName(positionals: readonly CliPositionalDefinition[]): number {\n return Math.max(...positionals.map((positional) => renderPositional(positional).length));\n}\n\nfunction padRight(value: string, width: number): string {\n return value.padEnd(width, \" \");\n}\n\nfunction validateCliSchema(schema: CliCommandDefinition): void {\n walkCommands(schema, (command, ancestors) => {\n const optionNames = new Set<string>();\n for (const option of command.options ?? []) {\n if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(option.name)) {\n throw new Error(`CLI option \"${option.name}\" must be kebab-case.`);\n }\n if (optionNames.has(option.name)) {\n throw new Error(\n `CLI option \"${option.name}\" is duplicated on ${[...ancestors, command.name].join(\" \")}.`,\n );\n }\n optionNames.add(option.name);\n }\n if (command.defaultSubcommand !== undefined) {\n requireSubcommand(command, command.defaultSubcommand);\n }\n });\n}\n\nfunction walkCommands(\n command: CliCommandDefinition,\n visit: (command: CliCommandDefinition, ancestors: readonly string[]) => void,\n ancestors: readonly string[] = [],\n): void {\n visit(command, ancestors);\n for (const subcommand of command.subcommands ?? []) {\n walkCommands(subcommand, visit, [...ancestors, command.name]);\n }\n}\n\nfunction requireSubcommand(command: CliCommandDefinition, name: string): CliCommandDefinition {\n const match = command.subcommands?.find((entry) => entry.name === name);\n if (!match) {\n throw new Error(`Unknown subcommand \"${name}\" on \"${command.name}\".`);\n }\n return match;\n}\n\nfunction toCamelCase(value: string): string {\n return value.replace(/-([a-z0-9])/g, (_, character: string) => character.toUpperCase());\n}\n\nfunction isHelpToken(value: string): boolean {\n return value === \"help\" || value === \"--help\" || value === \"-h\";\n}\n\nfunction isBooleanLiteral(value: string): boolean {\n return value === \"true\" || value === \"false\" || value === \"1\" || value === \"0\";\n}\n","import { discoverLocalCdpBrowsers, inspectCdpEndpoint } from \"../local-browser/cdp-discovery.js\";\nimport { browserCliSchema, parseCliArguments, renderHelp } from \"./schema.js\";\n\nexport interface BrowserCliDeps {\n readonly discoverBrowsers: typeof discoverLocalCdpBrowsers;\n readonly inspectBrowser: typeof inspectCdpEndpoint;\n readonly writeStdout: (message: string) => void;\n readonly writeStderr: (message: string) => void;\n}\n\nexport type ParsedBrowserArgs =\n | { readonly mode: \"help\" }\n | { readonly mode: \"error\"; readonly error: string }\n | {\n readonly mode: \"discover\";\n readonly json: boolean;\n readonly timeoutMs?: number;\n }\n | {\n readonly mode: \"inspect\";\n readonly endpoint: string;\n readonly json: boolean;\n readonly timeoutMs?: number;\n };\n\nexport function parseOpensteerBrowserArgs(argv: readonly string[]): ParsedBrowserArgs {\n try {\n const parsed = parseCliArguments({\n schema: browserCliSchema,\n programName: \"opensteer browser\",\n argv,\n });\n\n if (parsed.kind === \"help\") {\n return { mode: \"help\" };\n }\n\n const options = parsed.invocation.options as {\n readonly endpoint?: string;\n readonly json?: boolean;\n readonly timeoutMs?: number;\n };\n\n switch (parsed.invocation.commandId) {\n case \"browser.discover\":\n return {\n mode: \"discover\",\n json: options.json === true,\n ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),\n };\n case \"browser.inspect\":\n if (options.endpoint === undefined) {\n return {\n mode: \"error\",\n error: \"--endpoint is required for inspect.\",\n };\n }\n return {\n mode: \"inspect\",\n endpoint: options.endpoint,\n json: options.json === true,\n ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),\n };\n default:\n return {\n mode: \"error\",\n error: `Unsupported browser command \"${parsed.invocation.commandId}\".`,\n };\n }\n } catch (error) {\n return {\n mode: \"error\",\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function runOpensteerBrowserCli(\n argv: readonly string[],\n overrides: Partial<BrowserCliDeps> = {},\n): Promise<number> {\n const deps: BrowserCliDeps = {\n discoverBrowsers: discoverLocalCdpBrowsers,\n inspectBrowser: inspectCdpEndpoint,\n writeStdout: (message) => process.stdout.write(message),\n writeStderr: (message) => process.stderr.write(message),\n ...overrides,\n };\n\n const parsed = parseOpensteerBrowserArgs(argv);\n if (parsed.mode === \"help\") {\n deps.writeStdout(\n renderHelp({\n schema: browserCliSchema,\n programName: \"opensteer browser\",\n }),\n );\n return 0;\n }\n\n if (parsed.mode === \"error\") {\n deps.writeStderr(`${parsed.error}\\n`);\n return 1;\n }\n\n if (parsed.mode === \"inspect\") {\n const inspection = await deps.inspectBrowser({\n endpoint: parsed.endpoint,\n ...(parsed.timeoutMs === undefined ? {} : { timeoutMs: parsed.timeoutMs }),\n });\n const payload = {\n ...inspection,\n attachHint: `opensteer open --browser attach-live --attach-endpoint ${JSON.stringify(parsed.endpoint)}`,\n };\n deps.writeStdout(\n parsed.json ? `${JSON.stringify(payload, null, 2)}\\n` : `${JSON.stringify(payload)}\\n`,\n );\n return 0;\n }\n\n const browsers = await deps.discoverBrowsers({\n ...(parsed.timeoutMs === undefined ? {} : { timeoutMs: parsed.timeoutMs }),\n });\n if (parsed.json) {\n deps.writeStdout(`${JSON.stringify({ browsers }, null, 2)}\\n`);\n return 0;\n }\n\n if (browsers.length === 0) {\n deps.writeStdout(\"No local CDP browsers found.\\n\");\n return 0;\n }\n\n for (const browser of browsers) {\n deps.writeStdout(\n `${browser.endpoint}\\t${browser.source}\\t${browser.browser ?? \"\"}\\t${browser.userDataDir ?? \"\"}\\n`,\n );\n }\n return 0;\n}\n","import { listLocalChromeProfiles } from \"../local-browser/chrome-discovery.js\";\nimport {\n inspectLocalBrowserProfile,\n OpensteerLocalProfileUnavailableError,\n unlockLocalBrowserProfile,\n} from \"../local-browser/profile-inspection.js\";\nimport { localProfileCliSchema, parseCliArguments, renderHelp } from \"./schema.js\";\n\nexport interface LocalProfileCliDeps {\n readonly inspectProfile: typeof inspectLocalBrowserProfile;\n readonly listProfiles: typeof listLocalChromeProfiles;\n readonly unlockProfile: typeof unlockLocalBrowserProfile;\n readonly writeStdout: (message: string) => void;\n readonly writeStderr: (message: string) => void;\n}\n\nexport type ParsedLocalProfileArgs =\n | { readonly mode: \"help\" }\n | { readonly mode: \"error\"; readonly error: string }\n | {\n readonly mode: \"list\";\n readonly json: boolean;\n readonly userDataDir?: string;\n }\n | {\n readonly mode: \"inspect\";\n readonly userDataDir?: string;\n }\n | {\n readonly mode: \"unlock\";\n readonly userDataDir: string;\n };\n\nexport function parseOpensteerLocalProfileArgs(argv: readonly string[]): ParsedLocalProfileArgs {\n try {\n const parsed = parseCliArguments({\n schema: localProfileCliSchema,\n programName: \"opensteer local-profile\",\n argv,\n });\n\n if (parsed.kind === \"help\") {\n return { mode: \"help\" };\n }\n\n const options = parsed.invocation.options as {\n readonly json?: boolean;\n readonly userDataDir?: string;\n };\n\n switch (parsed.invocation.commandId) {\n case \"local-profile.list\":\n return {\n mode: \"list\",\n json: options.json === true,\n ...(options.userDataDir === undefined ? {} : { userDataDir: options.userDataDir }),\n };\n case \"local-profile.inspect\":\n return {\n mode: \"inspect\",\n ...(options.userDataDir === undefined ? {} : { userDataDir: options.userDataDir }),\n };\n case \"local-profile.unlock\":\n if (options.userDataDir === undefined) {\n return {\n mode: \"error\",\n error: \"--user-data-dir is required for unlock.\",\n };\n }\n return {\n mode: \"unlock\",\n userDataDir: options.userDataDir,\n };\n default:\n return {\n mode: \"error\",\n error: `Unsupported local-profile command \"${parsed.invocation.commandId}\".`,\n };\n }\n } catch (error) {\n return {\n mode: \"error\",\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function runOpensteerLocalProfileCli(\n argv: readonly string[],\n overrides: Partial<LocalProfileCliDeps> = {},\n): Promise<number> {\n const deps: LocalProfileCliDeps = {\n inspectProfile: inspectLocalBrowserProfile,\n listProfiles: listLocalChromeProfiles,\n unlockProfile: unlockLocalBrowserProfile,\n writeStdout: (message) => process.stdout.write(message),\n writeStderr: (message) => process.stderr.write(message),\n ...overrides,\n };\n\n const parsed = parseOpensteerLocalProfileArgs(argv);\n if (parsed.mode === \"help\") {\n deps.writeStdout(\n renderHelp({\n schema: localProfileCliSchema,\n programName: \"opensteer local-profile\",\n }),\n );\n return 0;\n }\n if (parsed.mode === \"error\") {\n deps.writeStderr(`${parsed.error}\\n`);\n return 1;\n }\n\n if (parsed.mode === \"inspect\") {\n const inspection = await deps.inspectProfile({\n ...(parsed.userDataDir === undefined ? {} : { userDataDir: parsed.userDataDir }),\n });\n deps.writeStdout(JSON.stringify(inspection));\n return 0;\n }\n\n if (parsed.mode === \"unlock\") {\n try {\n const result = await deps.unlockProfile({\n userDataDir: parsed.userDataDir,\n });\n deps.writeStdout(JSON.stringify(result));\n return 0;\n } catch (error) {\n if (error instanceof OpensteerLocalProfileUnavailableError) {\n deps.writeStderr(\n `${JSON.stringify({\n error: {\n code: error.code,\n message: error.message,\n name: error.name,\n details: {\n inspection: error.inspection,\n },\n },\n })}\\n`,\n );\n return 1;\n }\n throw error;\n }\n }\n\n const profiles = deps.listProfiles(parsed.userDataDir);\n if (parsed.json) {\n deps.writeStdout(JSON.stringify({ profiles }, null, 2));\n return 0;\n }\n\n if (profiles.length === 0) {\n deps.writeStdout(\"No local Chrome profiles found.\\n\");\n return 0;\n }\n\n for (const profile of profiles) {\n deps.writeStdout(`${profile.directory}\\t${profile.name}\\t${profile.userDataDir}\\n`);\n }\n return 0;\n}\n","import { createInterface } from \"node:readline/promises\";\n\nimport { resolveCloudConfig } from \"../cloud/config.js\";\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport { normalizeCookieDomain } from \"../cloud/cookie-sync.js\";\nimport type { BrowserBrandId } from \"../local-browser/browser-brands.js\";\nimport {\n resolveCookieCaptureStrategy,\n type CookieCaptureStrategy,\n} from \"../local-browser/cookie-capture.js\";\nimport { parseCliArguments, profileCliSchema, renderHelp } from \"./schema.js\";\n\nexport interface ProfileSyncCliDeps {\n readonly writeStdout: (message: string) => void;\n readonly writeStderr: (message: string) => void;\n}\n\nexport type ParsedProfileSyncArgs =\n | { readonly mode: \"help\" }\n | { readonly mode: \"error\"; readonly error: string }\n | {\n readonly mode: \"sync\";\n readonly allDomains: boolean;\n readonly attachEndpoint?: string;\n readonly brandId?: BrowserBrandId;\n readonly userDataDir?: string;\n readonly profileDirectory?: string;\n readonly executablePath?: string;\n readonly strategy?: CookieCaptureStrategy;\n readonly restoreBrowser: boolean;\n readonly dryRun: boolean;\n readonly domains: readonly string[];\n readonly yes: boolean;\n readonly json: boolean;\n readonly profileId: string;\n readonly timeoutMs?: number;\n };\n\nexport function parseOpensteerProfileSyncArgs(argv: readonly string[]): ParsedProfileSyncArgs {\n try {\n const parsed = parseCliArguments({\n schema: profileCliSchema,\n programName: \"opensteer profile\",\n argv,\n });\n\n if (parsed.kind === \"help\") {\n return { mode: \"help\" };\n }\n\n if (parsed.invocation.commandId !== \"profile.sync\") {\n return {\n mode: \"error\",\n error: `Unsupported profile command \"${parsed.invocation.commandId}\".`,\n };\n }\n\n const options = parsed.invocation.options as {\n readonly allDomains?: boolean;\n readonly attachEndpoint?: string;\n readonly brandId?: BrowserBrandId;\n readonly domain?: readonly string[];\n readonly dryRun?: boolean;\n readonly executablePath?: string;\n readonly json?: boolean;\n readonly restoreBrowser?: boolean;\n readonly noRestoreBrowser?: boolean;\n readonly profileDirectory?: string;\n readonly profileId?: string;\n readonly strategy?: \"auto\" | CookieCaptureStrategy;\n readonly timeoutMs?: number;\n readonly userDataDir?: string;\n readonly yes?: boolean;\n };\n\n if (!options.profileId) {\n return { mode: \"error\", error: \"--profile-id is required.\" };\n }\n\n return {\n mode: \"sync\",\n allDomains: options.allDomains === true,\n ...(options.attachEndpoint === undefined ? {} : { attachEndpoint: options.attachEndpoint }),\n ...(options.brandId === undefined ? {} : { brandId: options.brandId }),\n ...(options.userDataDir === undefined ? {} : { userDataDir: options.userDataDir }),\n ...(options.profileDirectory === undefined\n ? {}\n : { profileDirectory: options.profileDirectory }),\n ...(options.executablePath === undefined ? {} : { executablePath: options.executablePath }),\n ...(options.strategy === undefined || options.strategy === \"auto\"\n ? {}\n : { strategy: options.strategy }),\n restoreBrowser: options.restoreBrowser !== false && options.noRestoreBrowser !== true,\n dryRun: options.dryRun === true,\n domains: [...new Set((options.domain ?? []).map(normalizeCookieDomain).filter(Boolean))],\n yes: options.yes === true,\n json: options.json === true,\n profileId: options.profileId,\n ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),\n };\n } catch (error) {\n return {\n mode: \"error\",\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function runOpensteerProfileSyncCli(\n argv: readonly string[],\n overrides: Partial<ProfileSyncCliDeps> = {},\n): Promise<number> {\n const deps: ProfileSyncCliDeps = {\n writeStdout: (message) => process.stdout.write(message),\n writeStderr: (message) => process.stderr.write(message),\n ...overrides,\n };\n const parsed = parseOpensteerProfileSyncArgs(argv);\n if (parsed.mode === \"help\") {\n deps.writeStdout(\n renderHelp({\n schema: profileCliSchema,\n programName: \"opensteer profile\",\n }),\n );\n return 0;\n }\n if (parsed.mode === \"error\") {\n deps.writeStderr(`${parsed.error}\\n`);\n return 1;\n }\n\n const nonInteractive = !process.stdin.isTTY || !process.stdout.isTTY;\n const hasExplicitScope = parsed.allDomains || parsed.domains.length > 0;\n if (!parsed.dryRun && nonInteractive && !hasExplicitScope) {\n deps.writeStderr(\n \"Non-interactive profile sync requires explicit scope: --domain <domain> (repeatable) or --all-domains.\\n\",\n );\n return 1;\n }\n\n let capturePlan: Awaited<ReturnType<typeof resolveCookieCaptureStrategy>>;\n try {\n capturePlan = await resolveCookieCaptureStrategy({\n ...(parsed.attachEndpoint === undefined ? {} : { attachEndpoint: parsed.attachEndpoint }),\n ...(parsed.brandId === undefined ? {} : { brandId: parsed.brandId }),\n ...(parsed.userDataDir === undefined ? {} : { userDataDir: parsed.userDataDir }),\n ...(parsed.profileDirectory === undefined\n ? {}\n : { profileDirectory: parsed.profileDirectory }),\n ...(parsed.executablePath === undefined ? {} : { executablePath: parsed.executablePath }),\n ...(parsed.strategy === undefined ? {} : { strategy: parsed.strategy }),\n ...(parsed.timeoutMs === undefined ? {} : { timeoutMs: parsed.timeoutMs }),\n });\n } catch (error) {\n deps.writeStderr(`${error instanceof Error ? error.message : String(error)}\\n`);\n return 1;\n }\n\n if (parsed.dryRun) {\n deps.writeStdout(`${JSON.stringify(capturePlan, null, 2)}\\n`);\n return 0;\n }\n\n if (capturePlan.strategy === \"managed-relaunch\" && !parsed.yes) {\n if (nonInteractive) {\n deps.writeStderr(\"Managed-relaunch requires explicit --yes in non-interactive mode.\\n\");\n return 1;\n }\n\n const confirmed = await confirmManagedRelaunch(capturePlan);\n if (!confirmed) {\n deps.writeStderr(\"Profile sync cancelled.\\n\");\n return 1;\n }\n }\n\n if (!nonInteractive && !hasExplicitScope && !parsed.yes) {\n const confirmed = await confirmSyncAllDomains();\n if (!confirmed) {\n deps.writeStderr(\"Profile sync cancelled. Use --domain <domain> or --all-domains.\\n\");\n return 1;\n }\n }\n\n const cloud = resolveCloudConfig({\n enabled: true,\n mode: \"cloud\",\n });\n if (!cloud) {\n deps.writeStderr(\"Cloud mode is required for profile sync.\\n\");\n return 1;\n }\n\n const client = new OpensteerCloudClient(cloud);\n\n try {\n const result = await client.syncBrowserProfileCookies({\n profileId: parsed.profileId,\n ...(capturePlan.attachEndpoint === undefined\n ? {}\n : { attachEndpoint: capturePlan.attachEndpoint }),\n ...(capturePlan.brandId === undefined ? {} : { brandId: capturePlan.brandId }),\n ...(capturePlan.userDataDir === undefined ? {} : { userDataDir: capturePlan.userDataDir }),\n ...(capturePlan.profileDirectory === undefined\n ? {}\n : { profileDirectory: capturePlan.profileDirectory }),\n ...(capturePlan.executablePath === undefined\n ? {}\n : { executablePath: capturePlan.executablePath }),\n strategy: capturePlan.strategy,\n restoreBrowser: parsed.restoreBrowser,\n ...(parsed.allDomains ? {} : { domains: parsed.domains }),\n ...(parsed.timeoutMs === undefined ? {} : { timeoutMs: parsed.timeoutMs }),\n });\n\n if (parsed.json) {\n deps.writeStdout(`${JSON.stringify(result, null, 2)}\\n`);\n return 0;\n }\n\n deps.writeStdout(\n `Synced cookies into ${parsed.profileId} revision ${String(result.revision ?? \"unknown\")}.\\n`,\n );\n return 0;\n } catch (error) {\n deps.writeStderr(`${error instanceof Error ? error.message : String(error)}\\n`);\n return 1;\n }\n}\n\nasync function confirmSyncAllDomains(): Promise<boolean> {\n const prompt = createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n try {\n const answer = await prompt.question(\n \"No domain filter provided. Sync cookies for all domains? [y/N] \",\n );\n return /^(y|yes)$/i.test(answer.trim());\n } finally {\n prompt.close();\n }\n}\n\nasync function confirmManagedRelaunch(\n capturePlan: Awaited<ReturnType<typeof resolveCookieCaptureStrategy>>,\n): Promise<boolean> {\n const prompt = createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const browserName = capturePlan.brandDisplayName ?? capturePlan.brandId ?? \"Browser\";\n const pidLabel =\n capturePlan.runningPid === undefined ? \"\" : ` (PID ${String(capturePlan.runningPid)})`;\n\n try {\n const answer = await prompt.question(\n `${browserName}${pidLabel} is running but not debuggable.\\nTo capture cookies, opensteer will:\\n 1. Gracefully close ${browserName}\\n 2. Relaunch it headlessly to capture cookies via CDP\\n 3. Restore it to normal operation\\n\\nContinue? [y/N] `,\n );\n return /^(y|yes)$/i.test(answer.trim());\n } finally {\n prompt.close();\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 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 resolveSkillSourcePath: () => string;\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 resolveOpensteerSkillSourcePath(): 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 async function runOpensteerSkillsInstaller(\n options: OpensteerSkillsInstallOptions = {},\n overrideDeps: Partial<OpensteerSkillsInstallerDeps> = {},\n): Promise<number> {\n const deps: OpensteerSkillsInstallerDeps = {\n resolveSkillsCliPath: resolveOpensteerSkillsCliPath,\n resolveSkillSourcePath: resolveOpensteerSkillSourcePath,\n spawnInvocation: spawnOpensteerSkillsInvocation,\n ...overrideDeps,\n };\n\n const invocation = createOpensteerSkillsInvocation({\n options,\n skillsCliPath: deps.resolveSkillsCliPath(),\n skillSourcePath: deps.resolveSkillSourcePath(),\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 { readFile } from \"node:fs/promises\";\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n type CallToolResult,\n type ImageContent,\n type Tool,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport {\n OPENSTEER_PROTOCOL_VERSION,\n type OpensteerComputerExecuteOutput,\n type OpensteerRawRequestOutput,\n assertValidSemanticOperationInput,\n opensteerMcpTools,\n type OpensteerMcpToolDescriptor,\n} from \"@opensteer/protocol\";\n\nimport { normalizeThrownOpensteerError } from \"../internal/errors.js\";\nimport {\n DEFAULT_OPENSTEER_ENGINE,\n type OpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { fileUriToPath } from \"../internal/filesystem.js\";\nimport { createOpensteerSemanticRuntime } from \"../sdk/runtime-resolution.js\";\nimport { dispatchSemanticOperation } from \"./dispatch.js\";\n\nexport async function runOpensteerMcpServer(options: {\n readonly name: string;\n readonly rootDir?: string;\n readonly engine?: OpensteerEngineName;\n readonly cloud?: boolean;\n}): Promise<void> {\n const runtime = createOpensteerSemanticRuntime({\n runtimeOptions: {\n name: options.name,\n ...(options.rootDir === undefined ? {} : { rootDir: options.rootDir }),\n },\n engine: options.engine ?? DEFAULT_OPENSTEER_ENGINE,\n ...(options.cloud ? { cloud: true } : {}),\n });\n const toolByName = new Map(opensteerMcpTools.map((tool) => [tool.name, tool] as const));\n const server = new Server(\n {\n name: \"opensteer\",\n version: OPENSTEER_PROTOCOL_VERSION,\n },\n {\n capabilities: {\n tools: {\n listChanged: false,\n },\n },\n },\n );\n\n let shuttingDown = false;\n const shutdown = async () => {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n await runtime.close().catch(() => undefined);\n await server.close().catch(() => undefined);\n };\n\n process.on(\"SIGINT\", () => {\n void shutdown();\n });\n process.on(\"SIGTERM\", () => {\n void shutdown();\n });\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: opensteerMcpTools.map(toSdkTool),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const tool = toolByName.get(request.params.name);\n if (!tool) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: `Unknown Opensteer tool \"${request.params.name}\".`,\n },\n ],\n } satisfies CallToolResult;\n }\n\n try {\n const input = request.params.arguments ?? {};\n assertValidSemanticOperationInput(tool.operation, input);\n const output = await dispatchSemanticOperation(runtime, tool.operation, input);\n return createToolResult(tool, output);\n } catch (error) {\n const normalized = normalizeThrownOpensteerError(\n error,\n `Opensteer ${tool.operation} failed.`,\n );\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: normalized.message,\n },\n ],\n } satisfies CallToolResult;\n }\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nfunction toSdkTool(tool: OpensteerMcpToolDescriptor): Tool {\n const outputSchema = toSdkToolOutputSchema(tool.outputSchema);\n return {\n name: tool.name,\n title: tool.title,\n description: tool.description,\n inputSchema: tool.inputSchema as Tool[\"inputSchema\"],\n ...(outputSchema === undefined ? {} : { outputSchema }),\n ...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),\n };\n}\n\nfunction toSdkToolOutputSchema(\n schema: OpensteerMcpToolDescriptor[\"outputSchema\"],\n): Tool[\"outputSchema\"] | undefined {\n return schema.type === \"object\" ? (schema as Tool[\"outputSchema\"]) : undefined;\n}\n\nasync function createToolResult(\n tool: OpensteerMcpToolDescriptor,\n output: unknown,\n): Promise<CallToolResult> {\n if (tool.operation === \"computer.execute\") {\n const computerOutput = output as OpensteerComputerExecuteOutput;\n return {\n structuredContent: output as unknown as Record<string, unknown>,\n content: [\n await toImageContent(computerOutput),\n {\n type: \"text\",\n text: `Opensteer computer.execute completed (${computerOutput.action.type}).`,\n },\n ],\n };\n }\n\n if (tool.operation === \"request.raw\") {\n return createRawRequestToolResult(output as OpensteerRawRequestOutput);\n }\n\n return {\n structuredContent: output as unknown as Record<string, unknown>,\n content: [\n {\n type: \"text\",\n text: `Opensteer ${tool.operation} completed.`,\n },\n ],\n };\n}\n\nfunction createRawRequestToolResult(output: OpensteerRawRequestOutput): CallToolResult {\n const mimeType = inferResponseMimeType(output);\n const textContent = formatRawResponseText(output);\n\n if (mimeType?.startsWith(\"image/\") && output.response.body !== undefined) {\n return {\n structuredContent: output as unknown as Record<string, unknown>,\n content: [\n {\n type: \"image\",\n data: output.response.body.data,\n mimeType,\n },\n ],\n };\n }\n\n return {\n structuredContent: output as unknown as Record<string, unknown>,\n content: [\n {\n type: \"text\",\n text: textContent,\n },\n ],\n };\n}\n\nfunction inferResponseMimeType(output: OpensteerRawRequestOutput): string | undefined {\n const header = output.response.headers.find(\n (entry) => entry.name.toLowerCase() === \"content-type\",\n )?.value;\n if (header) {\n return header.split(\";\")[0]?.trim().toLowerCase();\n }\n return output.response.body?.mimeType?.toLowerCase();\n}\n\nfunction formatRawResponseText(output: OpensteerRawRequestOutput): string {\n if (output.data !== undefined) {\n return typeof output.data === \"string\" ? output.data : JSON.stringify(output.data, null, 2);\n }\n if (output.response.body !== undefined) {\n return Buffer.from(output.response.body.data, \"base64\").toString(\"utf8\");\n }\n return `Opensteer request.raw completed (${String(output.response.status)}).`;\n}\n\nasync function toImageContent(output: OpensteerComputerExecuteOutput): Promise<ImageContent> {\n const data = await readFile(fileUriToPath(output.screenshot.payload.uri));\n return {\n type: \"image\",\n data: data.toString(\"base64\"),\n mimeType: output.screenshot.payload.mimeType,\n };\n}\n","#!/usr/bin/env node\n\nimport path from \"node:path\";\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nimport {\n opensteerExecutableResolverSchema,\n opensteerAuthRecipePayloadSchema,\n opensteerReverseWorkflowStepSchema,\n opensteerRequestPlanPayloadSchema,\n opensteerValidationRuleSchema,\n isPageRef,\n sandboxAjaxRouteSchema,\n validateJsonSchema,\n} from \"@opensteer/protocol\";\n\nimport type {\n OpensteerAuthRecipePayload,\n OpensteerCaptureScriptsInput,\n OpensteerComputerAction,\n OpensteerComputerExecuteInput,\n OpensteerComputerExecuteOutput,\n OpensteerExecutableResolver,\n OpensteerInteractionCaptureStep,\n OpensteerRecipePayload,\n OpensteerRequestBodyInput,\n OpensteerRegistryProvenance,\n OpensteerRequestPlanLifecycle,\n OpensteerRequestPlanPayload,\n OpensteerReverseWorkflowStep,\n OpensteerTargetInput,\n OpensteerValidationRule,\n SandboxAjaxRoute,\n TransportKind,\n} from \"@opensteer/protocol\";\n\nimport {\n connectOpensteerService,\n ensureOpensteerService,\n OpensteerCliServiceError,\n requireOpensteerService,\n} from \"./client.js\";\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport { resolveCloudConfig } from \"../cloud/config.js\";\nimport { toCanonicalJsonValue } from \"../json.js\";\nimport {\n normalizeOpensteerEngineName,\n resolveOpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { fileUriToPath } from \"../internal/filesystem.js\";\nimport { OpensteerLocalProfileUnavailableError } from \"../local-browser/profile-inspection.js\";\nimport { runOpensteerBrowserCli } from \"./browser.js\";\nimport { runOpensteerLocalProfileCli } from \"./local-profile.js\";\nimport { runOpensteerProfileSyncCli } from \"./profile-sync.js\";\nimport { runOpensteerSkillsInstaller } from \"./skills-installer.js\";\nimport { opensteerCliSchema, parseCliArguments } from \"./schema.js\";\nimport {\n assertExecutionModeSupportsEngine,\n resolveOpensteerExecutionMode,\n} from \"../mode/config.js\";\nimport { OpensteerSessionRuntime } from \"../sdk/runtime.js\";\nimport { createOpensteerSemanticRuntime } from \"../sdk/runtime-resolution.js\";\nimport {\n getOpensteerServiceMetadataPath,\n parseOpensteerServiceMetadata,\n readOpensteerServiceMetadata,\n removeOpensteerServiceMetadata,\n writeOpensteerServiceMetadata,\n} from \"./service-metadata.js\";\nimport { AttachedOpensteerSessionProxy } from \"../session-service/attached-session-proxy.js\";\nimport { runOpensteerMcpServer } from \"./mcp.js\";\nimport { runOpensteerServiceHost } from \"./service-host.js\";\n\ntype ParsedCliOptions = Readonly<Record<string, unknown>>;\n\nasync function main(argv: readonly string[]): Promise<void> {\n if (argv[0] === \"browser\") {\n const exitCode = await runOpensteerBrowserCli(argv.slice(1));\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n if (argv[0] === \"local-profile\") {\n const exitCode = await runOpensteerLocalProfileCli(argv.slice(1));\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n if (argv[0] === \"profile\") {\n const exitCode = await runOpensteerProfileSyncCli(argv.slice(1));\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n const parsed = parseCliArguments({\n schema: opensteerCliSchema,\n programName: \"opensteer\",\n argv,\n });\n if (parsed.kind === \"help\") {\n process.stdout.write(parsed.text);\n return;\n }\n\n const invocation = parsed.invocation;\n const options = invocation.options as ParsedCliOptions;\n\n if (invocation.commandId === \"service-host\") {\n await runOpensteerServiceHost({\n name: readOptionalString(options.name) ?? \"default\",\n ...(readOptionalString(options.rootDir) === undefined\n ? {}\n : { rootDir: readOptionalString(options.rootDir)! }),\n ...(readOptionalString(options.engine) === undefined\n ? {}\n : {\n engine: normalizeOpensteerEngineName(readOptionalString(options.engine)!, \"--engine\"),\n }),\n });\n return;\n }\n\n if (invocation.commandId === \"mcp\") {\n const mode = resolveCliExecutionMode(options);\n const engine = resolveOpensteerEngineName({\n requested: readOptionalString(options.engine),\n environment: process.env.OPENSTEER_ENGINE,\n });\n assertExecutionModeSupportsEngine(mode, engine);\n await runOpensteerMcpServer({\n name: readOptionalString(options.name) ?? \"default\",\n ...(readOptionalString(options.rootDir) === undefined\n ? {}\n : { rootDir: readOptionalString(options.rootDir)! }),\n engine,\n ...(mode === \"cloud\" ? { cloud: true } : {}),\n });\n return;\n }\n\n const sessionOptions = {\n ...(readOptionalString(options.name) === undefined\n ? {}\n : { name: readOptionalString(options.name)! }),\n ...(readOptionalString(options.rootDir) === undefined\n ? {}\n : { rootDir: readOptionalString(options.rootDir)! }),\n };\n\n switch (invocation.commandId) {\n case \"skills.install\": {\n const installSkillsOptions: {\n agents?: readonly string[];\n skills?: readonly string[];\n global: boolean;\n yes: boolean;\n copy: boolean;\n all: boolean;\n list: boolean;\n } = {\n global: readOptionalBoolean(options.global) === true,\n yes: readOptionalBoolean(options.yes) === true,\n copy: readOptionalBoolean(options.copy) === true,\n all: readOptionalBoolean(options.all) === true,\n list: readOptionalBoolean(options.list) === true,\n };\n const agents = readOptionalStringArray(options.agent, \"--agent\");\n if (agents !== undefined) {\n installSkillsOptions.agents = agents;\n }\n const skills = readOptionalStringArray(options.skill, \"--skill\");\n if (skills !== undefined) {\n installSkillsOptions.skills = skills;\n }\n\n const exitCode = await runOpensteerSkillsInstaller(installSkillsOptions);\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n case \"open\": {\n const mode = resolveCliExecutionMode(options);\n const engine = resolveOpensteerEngineName({\n requested: readOptionalString(options.engine),\n environment: process.env.OPENSTEER_ENGINE,\n });\n assertExecutionModeSupportsEngine(mode, engine);\n const browser = parseBrowserOptions(options);\n const context = parseContextOptions(options);\n if (mode === \"cloud\") {\n const client = new OpensteerCloudClient(\n resolveCloudConfig({\n enabled: true,\n mode,\n ...(readOptionalString(options.cloudProfileId) === undefined\n ? {}\n : {\n browserProfile: {\n profileId: readOptionalString(options.cloudProfileId)!,\n ...(readOptionalBoolean(options.cloudProfileReuseIfActive) === true\n ? { reuseIfActive: true }\n : {}),\n },\n }),\n })!,\n );\n const rootPath = resolveOpensteerRootPath(sessionOptions.rootDir);\n const sessionName = sessionOptions.name ?? \"default\";\n const session = await client.createSession({\n name: sessionName,\n ...(browser === undefined ? {} : { browser }),\n ...(context === undefined ? {} : { context }),\n ...(readOptionalString(options.cloudProfileId) === undefined\n ? {}\n : {\n browserProfile: {\n profileId: readOptionalString(options.cloudProfileId)!,\n ...(readOptionalBoolean(options.cloudProfileReuseIfActive) === true\n ? { reuseIfActive: true }\n : {}),\n },\n }),\n });\n await writeOpensteerServiceMetadata(rootPath, {\n mode: \"cloud\",\n name: sessionName,\n rootPath,\n startedAt: Date.now(),\n baseUrl: session.baseUrl,\n sessionId: session.sessionId,\n authSource: \"env\",\n });\n const cloudSession = await requireOpensteerService(sessionOptions);\n const result = await cloudSession.invoke(\"session.open\", {\n ...(invocation.positionals[0] === undefined ? {} : { url: invocation.positionals[0] }),\n ...(sessionOptions.name === undefined ? {} : { name: sessionOptions.name }),\n });\n writeJson(result);\n return;\n }\n\n const client = await ensureOpensteerService({\n ...sessionOptions,\n engine,\n launchContext: {\n execPath: process.execPath,\n execArgv: process.execArgv,\n scriptPath: process.argv[1]!,\n cwd: process.cwd(),\n },\n });\n const result = await client.invoke(\"session.open\", {\n ...(invocation.positionals[0] === undefined ? {} : { url: invocation.positionals[0] }),\n ...(sessionOptions.name === undefined ? {} : { name: sessionOptions.name }),\n ...(browser === undefined ? {} : { browser }),\n ...(context === undefined ? {} : { context }),\n });\n writeJson(result);\n return;\n }\n\n case \"goto\": {\n const client = await requireOpensteerService(sessionOptions);\n const url = invocation.positionals[0];\n if (!url) {\n throw new Error(\"goto requires a URL\");\n }\n const result = await client.invoke(\"page.goto\", {\n url,\n ...buildNetworkTagInput(options),\n });\n writeJson(result);\n return;\n }\n\n case \"snapshot\": {\n const client = await requireOpensteerService(sessionOptions);\n const mode = invocation.positionals[0];\n const result = await client.invoke(\"page.snapshot\", {\n ...(mode === undefined ? {} : { mode }),\n });\n writeJson(result);\n return;\n }\n\n case \"click\": {\n const client = await requireOpensteerService(sessionOptions);\n const target = parseTargetInput(invocation.positionals, options);\n const result = await client.invoke(\"dom.click\", {\n ...target,\n ...buildNetworkTagInput(options),\n });\n writeJson(result);\n return;\n }\n\n case \"hover\": {\n const client = await requireOpensteerService(sessionOptions);\n const target = parseTargetInput(invocation.positionals, options);\n const result = await client.invoke(\"dom.hover\", {\n ...target,\n ...buildNetworkTagInput(options),\n });\n writeJson(result);\n return;\n }\n\n case \"input\": {\n const client = await requireOpensteerService(sessionOptions);\n const target = parseTargetInput(invocation.positionals, options);\n const text =\n readOptionalString(options.text) ?? consumeTextPositional(invocation.positionals);\n if (!text) {\n throw new Error(\"input requires text\");\n }\n const result = await client.invoke(\"dom.input\", {\n ...target,\n text,\n ...(readOptionalBoolean(options.pressEnter) ? { pressEnter: true } : {}),\n ...buildNetworkTagInput(options),\n });\n writeJson(result);\n return;\n }\n\n case \"scroll\": {\n const client = await requireOpensteerService(sessionOptions);\n const target = parseTargetInput(invocation.positionals, options);\n const direction =\n readOptionalString(options.direction) ??\n consumeRemainingPositionals(invocation.positionals)[0];\n const amountValue = readOptionalNumber(options.amount);\n const amountRaw =\n amountValue === undefined\n ? consumeRemainingPositionals(invocation.positionals)[1]\n : String(amountValue);\n if (!direction || !amountRaw) {\n throw new Error(\"scroll requires direction and amount\");\n }\n const amount = Number(amountRaw);\n if (!Number.isFinite(amount) || amount <= 0) {\n throw new Error(`scroll amount must be a positive number, received ${amountRaw}`);\n }\n const result = await client.invoke(\"dom.scroll\", {\n ...target,\n direction,\n amount,\n ...buildNetworkTagInput(options),\n });\n writeJson(result);\n return;\n }\n\n case \"extract\": {\n const client = await requireOpensteerService(sessionOptions);\n const description = readOptionalString(options.description);\n if (!description) {\n throw new Error(\"extract requires --description\");\n }\n const schema = readOptionalJsonObject(options.schema);\n const schemaRaw = schema ?? readJsonObjectPositional(invocation.positionals[0], \"schema\");\n const result = await client.invoke<\n {\n readonly description: string;\n readonly schema?: Record<string, unknown>;\n },\n { readonly data: unknown }\n >(\"dom.extract\", {\n description,\n ...(schemaRaw === undefined ? {} : { schema: schemaRaw }),\n });\n writeJson(result.data);\n return;\n }\n\n case \"network.query\": {\n const client = await requireOpensteerService(sessionOptions);\n const result = await client.invoke(\"network.query\", buildNetworkQueryInput(options));\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"network.save\": {\n const client = await requireOpensteerService(sessionOptions);\n const tag = readOptionalString(options.tag);\n if (!tag) {\n throw new Error(\"network save requires --tag\");\n }\n const result = await client.invoke(\"network.save\", {\n ...buildNetworkFilterInput(options),\n tag,\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"network.clear\": {\n const client = await requireOpensteerService(sessionOptions);\n const result = await client.invoke(\"network.clear\", {\n ...(readOptionalString(options.tag) === undefined\n ? {}\n : { tag: readOptionalString(options.tag) }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"network.minimize\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recordId = readOptionalString(options.recordId);\n if (!recordId) {\n throw new Error(\"network minimize requires --record-id\");\n }\n const statusCodes = parseIntegerCsvOption(readOptionalString(options.statusCodes));\n const responseBodyIncludes = parseCsvOption(readOptionalString(options.responseBodyIncludes));\n const preserve = parseCsvOption(readOptionalString(options.preserve));\n const maxTrials = readOptionalNumber(options.maxTrials);\n const result = await runtime.minimizeNetwork({\n recordId,\n ...(readOptionalString(options.transport) === undefined\n ? {}\n : { transport: parseRequestTransport(readOptionalString(options.transport)!) }),\n ...(maxTrials === undefined ? {} : { maxTrials }),\n ...(preserve === undefined ? {} : { preserve }),\n ...(statusCodes === undefined &&\n responseBodyIncludes === undefined &&\n readOptionalBoolean(options.responseStructureMatch) !== true\n ? {}\n : {\n successPolicy: {\n ...(statusCodes === undefined ? {} : { statusCodes }),\n ...(responseBodyIncludes === undefined ? {} : { responseBodyIncludes }),\n ...(readOptionalBoolean(options.responseStructureMatch) === true\n ? { responseStructureMatch: true }\n : {}),\n },\n }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"network.diff\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const leftRecordId = readOptionalString(options.left);\n const rightRecordId = readOptionalString(options.right);\n if (!leftRecordId || !rightRecordId) {\n throw new Error(\"network diff requires --left and --right\");\n }\n const result = await runtime.diffNetwork({\n leftRecordId,\n rightRecordId,\n ...(readOptionalString(options.scope) === undefined\n ? {}\n : { scope: readOptionalString(options.scope) as \"headers\" | \"body\" | \"all\" }),\n ...(readOptionalBoolean(options.includeUnchanged) === true\n ? { includeUnchanged: true }\n : {}),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"network.probe\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recordId = readOptionalString(options.recordId);\n if (!recordId) {\n throw new Error(\"network probe requires --record-id\");\n }\n const result = await runtime.probeNetwork({\n recordId,\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.discover\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const caseId = readOptionalString(options.caseId);\n const key = readOptionalString(options.key);\n const objective = readOptionalString(options.objective);\n const notes = readOptionalString(options.notes);\n const pageRef = readOptionalPageRef(options.pageRef, \"--page-ref\");\n const stateSource = readOptionalEnum(\n options.stateSource,\n [\"managed\", \"attach-live\", \"snapshot-session\", \"snapshot-authenticated\"] as const,\n \"--state-source\",\n );\n const interactionTraceIds = readOptionalStrings(options.interactionTraceId);\n const targetHosts = readOptionalStrings(options.targetHost);\n const targetPaths = readOptionalStrings(options.targetPath);\n const targetOperationNames = readOptionalStrings(options.targetOperationName);\n const targetChannels = readOptionalEnumList(\n options.targetChannel,\n [\"http\", \"event-stream\", \"websocket\"] as const,\n \"--target-channel\",\n );\n const captureWindowMs = readOptionalNumber(options.captureWindowMs);\n const manualCalibration = readOptionalEnum(\n options.manualCalibration,\n [\"allow\", \"avoid\", \"require\"] as const,\n \"--manual-calibration\",\n );\n const result = await runtime.discoverReverse({\n ...(caseId === undefined ? {} : { caseId }),\n ...(key === undefined ? {} : { key }),\n ...(objective === undefined ? {} : { objective }),\n ...(notes === undefined ? {} : { notes }),\n ...(pageRef === undefined ? {} : { pageRef }),\n ...(stateSource === undefined ? {} : { stateSource }),\n ...(readOptionalBoolean(options.includeScripts) === false ? { includeScripts: false } : {}),\n ...(readOptionalBoolean(options.includeStorage) === false ? { includeStorage: false } : {}),\n ...(readOptionalBoolean(options.includeSessionStorage) === true\n ? { includeSessionStorage: true }\n : {}),\n ...(readOptionalBoolean(options.includeIndexedDb) === true\n ? { includeIndexedDb: true }\n : {}),\n ...(interactionTraceIds.length === 0 ? {} : { interactionTraceIds }),\n ...(targetHosts.length === 0 &&\n targetPaths.length === 0 &&\n targetOperationNames.length === 0 &&\n targetChannels.length === 0\n ? {}\n : {\n targetHints: {\n ...(targetHosts.length === 0 ? {} : { hosts: targetHosts }),\n ...(targetPaths.length === 0 ? {} : { paths: targetPaths }),\n ...(targetOperationNames.length === 0\n ? {}\n : { operationNames: targetOperationNames }),\n ...(targetChannels.length === 0 ? {} : { channels: targetChannels }),\n },\n }),\n ...(captureWindowMs === undefined ? {} : { captureWindowMs }),\n ...(manualCalibration === undefined ? {} : { manualCalibration }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.query\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const caseId = readOptionalString(options.caseId);\n if (!caseId) {\n throw new Error(\"reverse query requires --case-id\");\n }\n const view = readOptionalEnum(\n options.view,\n [\"records\", \"clusters\", \"candidates\"] as const,\n \"--view\",\n );\n const filtersJson = readOptionalJsonObject(options.filtersJson, \"--filters-json\");\n const sortPreset = readOptionalEnum(\n options.sortPreset,\n [\n \"advisory-rank\",\n \"observed-at\",\n \"portability\",\n \"first-party\",\n \"hint-match\",\n \"response-richness\",\n ] as const,\n \"--sort-preset\",\n );\n const sortJson = readOptionalJsonObject(options.sortJson, \"--sort-json\");\n if (sortJson !== undefined && sortPreset !== undefined) {\n throw new Error(\"reverse query accepts either --sort-json or --sort-preset, not both\");\n }\n const limit = readOptionalNumber(options.limit);\n const cursor = readOptionalString(options.cursor);\n const result = await runtime.queryReverse({\n caseId,\n ...(view === undefined ? {} : { view }),\n ...(filtersJson === undefined ? {} : { filters: filtersJson }),\n ...(sortJson !== undefined\n ? { sort: sortJson }\n : sortPreset === undefined\n ? {}\n : { sort: { preset: sortPreset } }),\n ...(limit === undefined ? {} : { limit }),\n ...(cursor === undefined ? {} : { cursor }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.package.run\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const packageId = readOptionalString(options.packageId);\n if (!packageId) {\n throw new Error(\"reverse package run requires --package-id\");\n }\n const pageRef = readOptionalPageRef(options.pageRef, \"--page-ref\");\n const result = await runtime.runReversePackage({\n packageId,\n ...(pageRef === undefined ? {} : { pageRef }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.export\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const packageId = readOptionalString(options.packageId);\n if (!packageId) {\n throw new Error(\"reverse export requires --package-id\");\n }\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n const result = await runtime.exportReverse({\n packageId,\n ...(key === undefined ? {} : { key }),\n ...(version === undefined ? {} : { version }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.report\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const packageId = readOptionalString(options.packageId);\n const reportId = readOptionalString(options.reportId);\n const caseId = readOptionalString(options.caseId);\n const kind = readOptionalEnum(options.kind, [\"discovery\", \"package\"] as const, \"--kind\");\n if (!packageId && !reportId && !caseId) {\n throw new Error(\"reverse report requires --package-id, --case-id, or --report-id\");\n }\n const result = await runtime.getReverseReport({\n ...(packageId === undefined ? {} : { packageId }),\n ...(caseId === undefined ? {} : { caseId }),\n ...(reportId === undefined ? {} : { reportId }),\n ...(kind === undefined ? {} : { kind }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.package.create\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const caseId = readOptionalString(options.caseId);\n const candidateId = readOptionalString(options.candidateId);\n const recordId = readOptionalString(options.recordId);\n if (!caseId || (!candidateId && !recordId)) {\n throw new Error(\n \"reverse package create requires --case-id and either --candidate-id or --record-id\",\n );\n }\n const templateId = readOptionalString(options.templateId);\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n const notes = readOptionalString(options.notes);\n const source =\n candidateId !== undefined\n ? { kind: \"candidate\" as const, id: candidateId }\n : recordId !== undefined\n ? { kind: \"record\" as const, id: recordId }\n : undefined;\n if (source === undefined) {\n throw new Error(\n \"reverse package create requires --case-id and either --candidate-id or --record-id\",\n );\n }\n const result = await runtime.createReversePackage({\n caseId,\n source,\n ...(templateId === undefined ? {} : { templateId }),\n ...(key === undefined ? {} : { key }),\n ...(version === undefined ? {} : { version }),\n ...(notes === undefined ? {} : { notes }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.package.get\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const packageId = readOptionalString(options.packageId);\n if (!packageId) {\n throw new Error(\"reverse package get requires --package-id\");\n }\n const result = await runtime.getReversePackage({ packageId });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.package.list\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const caseId = readOptionalString(options.caseId);\n const key = readOptionalString(options.key);\n const kind = readOptionalEnum(\n options.kind,\n [\"portable-http\", \"browser-workflow\"] as const,\n \"--kind\",\n );\n const readiness = readOptionalEnum(\n options.readiness,\n [\"runnable\", \"draft\", \"unsupported\"] as const,\n \"--readiness\",\n );\n const result = await runtime.listReversePackages({\n ...(caseId === undefined ? {} : { caseId }),\n ...(key === undefined ? {} : { key }),\n ...(kind === undefined ? {} : { kind }),\n ...(readiness === undefined ? {} : { readiness }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"reverse.package.patch\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const packageId = readOptionalString(options.packageId);\n if (!packageId) {\n throw new Error(\"reverse package patch requires --package-id\");\n }\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n const notes = readOptionalString(options.notes);\n const workflowJson = readOptionalJsonArray(options.workflowJson, \"--workflow-json\");\n const resolversJson = readOptionalJsonArray(options.resolversJson, \"--resolvers-json\");\n const validatorsJson = readOptionalJsonArray(options.validatorsJson, \"--validators-json\");\n const traceIds = readOptionalStrings(options.traceId);\n const artifactIds = readOptionalStrings(options.artifactId);\n const recordIds = readOptionalStrings(options.recordId);\n const stateSnapshotIds = readOptionalStrings(options.stateSnapshotId);\n const result = await runtime.patchReversePackage({\n packageId,\n ...(key === undefined ? {} : { key }),\n ...(version === undefined ? {} : { version }),\n ...(notes === undefined ? {} : { notes }),\n ...(workflowJson === undefined\n ? {}\n : { workflow: parseReverseWorkflowSteps(workflowJson, \"--workflow-json\") }),\n ...(resolversJson === undefined\n ? {}\n : { resolvers: parseExecutableResolvers(resolversJson, \"--resolvers-json\") }),\n ...(validatorsJson === undefined\n ? {}\n : { validators: parseValidationRules(validatorsJson, \"--validators-json\") }),\n ...(traceIds.length === 0 ? {} : { attachedTraceIds: traceIds }),\n ...(artifactIds.length === 0 ? {} : { attachedArtifactIds: artifactIds }),\n ...(recordIds.length === 0 ? {} : { attachedRecordIds: recordIds }),\n ...(stateSnapshotIds.length === 0 ? {} : { stateSnapshotIds }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"interaction.capture\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const argsJson = readOptionalJson(options.argsJson);\n const stepsJson = readOptionalJsonArray(options.stepsJson, \"--steps-json\");\n const key = readOptionalString(options.key);\n const pageRef = readOptionalPageRef(options.pageRef, \"--page-ref\");\n const durationMs = readOptionalNumber(options.durationMs);\n const script = readOptionalString(options.script);\n const globalNames = readOptionalStrings(options.globalName);\n const caseId = readOptionalString(options.caseId);\n const notes = readOptionalString(options.notes);\n const steps = parseInteractionCaptureSteps(stepsJson);\n const result = await runtime.captureInteraction({\n ...(key === undefined ? {} : { key }),\n ...(pageRef === undefined ? {} : { pageRef }),\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(script === undefined ? {} : { script }),\n ...(argsJson === undefined\n ? {}\n : { args: Array.isArray(argsJson) ? argsJson : [argsJson] }),\n ...(steps === undefined ? {} : { steps }),\n ...(readOptionalBoolean(options.includeStorage) === false ? { includeStorage: false } : {}),\n ...(readOptionalBoolean(options.includeSessionStorage) === true\n ? { includeSessionStorage: true }\n : {}),\n ...(readOptionalBoolean(options.includeIndexedDb) === true\n ? { includeIndexedDb: true }\n : {}),\n ...(globalNames.length === 0 ? {} : { globalNames }),\n ...(caseId === undefined ? {} : { caseId }),\n ...(notes === undefined ? {} : { notes }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"interaction.diff\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const leftTraceId = readOptionalString(options.leftTraceId);\n const rightTraceId = readOptionalString(options.rightTraceId);\n if (!leftTraceId || !rightTraceId) {\n throw new Error(\"interaction diff requires --left-trace-id and --right-trace-id\");\n }\n const result = await runtime.diffInteraction({\n leftTraceId,\n rightTraceId,\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"interaction.get\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const traceId = readOptionalString(options.traceId);\n if (!traceId) {\n throw new Error(\"interaction get requires --trace-id\");\n }\n const result = await runtime.getInteraction({ traceId });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"interaction.replay\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const traceId = readOptionalString(options.traceId);\n if (!traceId) {\n throw new Error(\"interaction replay requires --trace-id\");\n }\n const pageRef = readOptionalPageRef(options.pageRef, \"--page-ref\");\n const result = await runtime.replayInteraction({\n traceId,\n ...(pageRef === undefined ? {} : { pageRef }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"scripts.capture\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const pageRef = readOptionalString(options.pageRef);\n if (pageRef !== undefined && !isPageRef(pageRef)) {\n throw new Error(\"--page-ref must be a valid page reference\");\n }\n const includeInline = readOptionalBoolean(options.includeInline);\n const includeExternal = readOptionalBoolean(options.includeExternal);\n const includeDynamic = readOptionalBoolean(options.includeDynamic);\n const includeWorkers = readOptionalBoolean(options.includeWorkers);\n const urlFilter = readOptionalString(options.urlFilter);\n const captureInput: OpensteerCaptureScriptsInput = {\n ...(pageRef === undefined ? {} : { pageRef }),\n ...(includeInline === undefined ? {} : { includeInline }),\n ...(includeExternal === undefined ? {} : { includeExternal }),\n ...(includeDynamic === undefined ? {} : { includeDynamic }),\n ...(includeWorkers === undefined ? {} : { includeWorkers }),\n ...(urlFilter === undefined ? {} : { urlFilter }),\n ...(readOptionalBoolean(options.noPersist) === true ? { persist: false } : {}),\n };\n const result = await runtime.captureScripts(captureInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"artifact.read\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const artifactId = readOptionalString(options.artifactId);\n if (!artifactId) {\n throw new Error(\"artifact read requires --artifact-id\");\n }\n const result = await runtime.readArtifact({ artifactId });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"scripts.beautify\":\n case \"scripts.deobfuscate\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const artifactId = readOptionalString(options.artifactId);\n const content = readOptionalString(options.content);\n if (artifactId === undefined && content === undefined) {\n throw new Error(`${invocation.commandId} requires --artifact-id or --content`);\n }\n const transformInput = {\n ...(artifactId === undefined ? {} : { artifactId }),\n ...(content === undefined ? {} : { content }),\n ...(readOptionalBoolean(options.noPersist) === true ? { persist: false } : {}),\n };\n const result =\n invocation.commandId === \"scripts.beautify\"\n ? await runtime.beautifyScript(transformInput)\n : await runtime.deobfuscateScript(transformInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"scripts.sandbox\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const artifactId = readOptionalString(options.artifactId);\n const content = readOptionalString(options.content);\n if (artifactId === undefined && content === undefined) {\n throw new Error(\"scripts sandbox requires --artifact-id or --content\");\n }\n const pageCookies = readOptionalJsonObject(options.cookies);\n const globals = readOptionalJsonObject(options.globals);\n const ajaxRoutes = readOptionalJsonArray(options.ajaxRoutes, \"--ajax-routes\");\n const timeoutMs = readOptionalNumber(options.timeoutMs);\n const result = await runtime.sandboxScript({\n ...(artifactId === undefined ? {} : { artifactId }),\n ...(content === undefined ? {} : { content }),\n ...(readOptionalString(options.fidelity) === undefined\n ? {}\n : { fidelity: readOptionalString(options.fidelity) as \"minimal\" | \"standard\" | \"full\" }),\n ...(ajaxRoutes === undefined ? {} : { ajaxRoutes: parseSandboxAjaxRoutes(ajaxRoutes) }),\n ...(pageCookies === undefined\n ? {}\n : { cookies: parseStringRecord(pageCookies, \"--cookies\") }),\n ...(globals === undefined ? {} : { globals }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(readOptionalString(options.clockMode) === undefined\n ? {}\n : { clockMode: readOptionalString(options.clockMode) as \"real\" | \"manual\" }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"captcha.solve\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const provider = readOptionalString(options.provider);\n const apiKey = readOptionalString(options.apiKey);\n if (!provider || !apiKey) {\n throw new Error(\"captcha solve requires --provider and --api-key\");\n }\n const pageRef = readOptionalString(options.pageRef);\n if (pageRef !== undefined && !isPageRef(pageRef)) {\n throw new Error(\"--page-ref must be a valid page reference\");\n }\n const timeoutMs = readOptionalNumber(options.timeoutMs);\n const captchaType = readOptionalString(options.type);\n const siteKey = readOptionalString(options.siteKey);\n const pageUrl = readOptionalString(options.pageUrl);\n const result = await runtime.solveCaptcha({\n provider: provider as \"2captcha\" | \"capsolver\",\n apiKey,\n ...(pageRef === undefined ? {} : { pageRef }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n ...(captchaType === undefined\n ? {}\n : { type: captchaType as \"recaptcha-v2\" | \"hcaptcha\" | \"turnstile\" }),\n ...(siteKey === undefined ? {} : { siteKey }),\n ...(pageUrl === undefined ? {} : { pageUrl }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"plan.write\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n if (!key || !version) {\n throw new Error(\"plan write requires --key and --version\");\n }\n const payload = await readJsonObjectOption(options, {\n inlineKey: \"payload\",\n fileKey: \"payloadFile\",\n label: \"payload\",\n });\n if (payload === undefined) {\n throw new Error(\"plan write requires --payload or --payload-file\");\n }\n const writePlanInput: {\n id?: string;\n key: string;\n version: string;\n lifecycle?: OpensteerRequestPlanLifecycle;\n tags?: readonly string[];\n provenance?: OpensteerRegistryProvenance;\n payload: OpensteerRequestPlanPayload;\n } = {\n key,\n version,\n payload: parseRequestPlanPayload(payload),\n };\n const id = readOptionalString(options.id);\n if (id !== undefined) {\n writePlanInput.id = id;\n }\n const lifecycle = readOptionalString(options.lifecycle);\n if (lifecycle !== undefined) {\n writePlanInput.lifecycle = parseRequestPlanLifecycle(lifecycle);\n }\n const tags = parseCsvOption(readOptionalString(options.tags));\n if (tags !== undefined) {\n writePlanInput.tags = tags;\n }\n const provenance = buildProvenanceInput(options);\n if (provenance !== undefined) {\n writePlanInput.provenance = provenance;\n }\n const result = await runtime.writeRequestPlan(writePlanInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"plan.infer\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recordId = readOptionalString(options.recordId);\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n if (!recordId || !key || !version) {\n throw new Error(\"plan infer requires --record-id, --key, and --version\");\n }\n const result = await runtime.inferRequestPlan({\n recordId,\n key,\n version,\n ...(readOptionalString(options.lifecycle) === undefined\n ? {}\n : { lifecycle: parseRequestPlanLifecycle(readOptionalString(options.lifecycle)!) }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"plan.get\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n if (!key) {\n throw new Error(\"plan get requires a key\");\n }\n const version = invocation.positionals[1] ?? readOptionalString(options.version);\n const result = await runtime.getRequestPlan({\n key,\n ...(version === undefined ? {} : { version }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"plan.list\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n const result = await runtime.listRequestPlans({\n ...(key === undefined ? {} : { key }),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"inspect.cookies\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const urls = readOptionalStrings(options.url);\n const result = await runtime.getCookies(urls.length === 0 ? {} : { urls });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"inspect.storage\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const result = await runtime.getStorageSnapshot({\n ...(readOptionalBoolean(options.includeSessionStorage) === true\n ? { includeSessionStorage: true }\n : {}),\n ...(readOptionalBoolean(options.includeIndexedDb) === true\n ? { includeIndexedDb: true }\n : {}),\n });\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"recipe.write\":\n case \"auth-recipe.write\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recipeCommandName =\n invocation.commandId === \"recipe.write\" ? \"recipe write\" : \"auth-recipe write\";\n const key = readOptionalString(options.key);\n const version = readOptionalString(options.version);\n if (!key || !version) {\n throw new Error(`${recipeCommandName} requires --key and --version`);\n }\n const payload = await readJsonObjectOption(options, {\n inlineKey: \"payload\",\n fileKey: \"payloadFile\",\n label: \"payload\",\n });\n if (payload === undefined) {\n throw new Error(`${recipeCommandName} requires --payload or --payload-file`);\n }\n const writeRecipeInput: {\n id?: string;\n key: string;\n version: string;\n tags?: readonly string[];\n provenance?: OpensteerRegistryProvenance;\n payload: OpensteerRecipePayload;\n } = {\n key,\n version,\n payload: parseRecipePayload(payload),\n };\n const recipeId = readOptionalString(options.id);\n if (recipeId !== undefined) {\n writeRecipeInput.id = recipeId;\n }\n const recipeTags = parseCsvOption(readOptionalString(options.tags));\n if (recipeTags !== undefined) {\n writeRecipeInput.tags = recipeTags;\n }\n const recipeProvenance = buildProvenanceInput(options);\n if (recipeProvenance !== undefined) {\n writeRecipeInput.provenance = recipeProvenance;\n }\n const result =\n invocation.commandId === \"recipe.write\"\n ? await runtime.writeRecipe(writeRecipeInput)\n : await runtime.writeAuthRecipe(writeRecipeInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"recipe.get\":\n case \"auth-recipe.get\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recipeCommandName =\n invocation.commandId === \"recipe.get\" ? \"recipe get\" : \"auth-recipe get\";\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n if (!key) {\n throw new Error(`${recipeCommandName} requires a key`);\n }\n const version = invocation.positionals[1] ?? readOptionalString(options.version);\n const recipeRef = {\n key,\n ...(version === undefined ? {} : { version }),\n };\n const result =\n invocation.commandId === \"recipe.get\"\n ? await runtime.getRecipe(recipeRef)\n : await runtime.getAuthRecipe(recipeRef);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"recipe.list\":\n case \"auth-recipe.list\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n const listInput = {\n ...(key === undefined ? {} : { key }),\n };\n const result =\n invocation.commandId === \"recipe.list\"\n ? await runtime.listRecipes(listInput)\n : await runtime.listAuthRecipes(listInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"recipe.run\":\n case \"auth-recipe.run\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const recipeCommandName =\n invocation.commandId === \"recipe.run\" ? \"recipe run\" : \"auth-recipe run\";\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n if (!key) {\n throw new Error(`${recipeCommandName} requires a key`);\n }\n const runRecipeInput: {\n key: string;\n version?: string;\n variables?: Record<string, string>;\n } = { key };\n const recipeVersion = readOptionalString(options.version);\n if (recipeVersion !== undefined) {\n runRecipeInput.version = recipeVersion;\n }\n const initialVariables = readOptionalJsonObject(options.variablesJson);\n if (initialVariables !== undefined) {\n runRecipeInput.variables = parseStringRecord(initialVariables, \"--variables\");\n }\n const result =\n invocation.commandId === \"recipe.run\"\n ? await runtime.runRecipe(runRecipeInput)\n : await runtime.runAuthRecipe(runRecipeInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"request.raw\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const url = invocation.positionals[0] ?? readOptionalString(options.url);\n if (!url) {\n throw new Error(\"request raw requires a URL\");\n }\n const body = await parseRequestBodyInput(options);\n const headers = parseHeaderEntries(readOptionalStrings(options.header));\n const rawRequestInput: {\n url: string;\n transport?: TransportKind;\n method?: string;\n body?: OpensteerRequestBodyInput;\n followRedirects?: boolean;\n headers?: readonly { readonly name: string; readonly value: string }[];\n } = { url };\n const transport = readOptionalString(options.transport);\n if (transport !== undefined) {\n rawRequestInput.transport = parseRequestTransport(transport);\n }\n const method = readOptionalString(options.method);\n if (method !== undefined) {\n rawRequestInput.method = method;\n }\n if (body !== undefined) {\n rawRequestInput.body = body;\n }\n if (readOptionalBoolean(options.noFollowRedirects)) {\n rawRequestInput.followRedirects = false;\n }\n if (headers.length > 0) {\n rawRequestInput.headers = headers;\n }\n const result = await runtime.rawRequest(rawRequestInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"request.execute\": {\n const runtime = await resolveCliSemanticRuntime(\n sessionOptions,\n resolveCliExecutionMode(options),\n );\n const key = invocation.positionals[0] ?? readOptionalString(options.key);\n if (!key) {\n throw new Error(\"request execute requires a plan key\");\n }\n const body = await parseRequestBodyInput(options);\n const params = parseKeyValueOptions(readOptionalStrings(options.param));\n const query = parseKeyValueOptions(readOptionalStrings(options.query));\n const headers = parseKeyValueOptions(readOptionalStrings(options.header));\n const requestInput: {\n key: string;\n version?: string;\n params?: Record<string, string>;\n query?: Record<string, string>;\n headers?: Record<string, string>;\n body?: OpensteerRequestBodyInput;\n validateResponse?: boolean;\n } = { key };\n const requestVersion = readOptionalString(options.version);\n if (requestVersion !== undefined) {\n requestInput.version = requestVersion;\n }\n if (params.size > 0) {\n requestInput.params = Object.fromEntries(params);\n }\n if (query.size > 0) {\n requestInput.query = Object.fromEntries(query);\n }\n if (headers.size > 0) {\n requestInput.headers = Object.fromEntries(headers);\n }\n if (body !== undefined) {\n requestInput.body = body;\n }\n if (readOptionalBoolean(options.noValidate) === true) {\n requestInput.validateResponse = false;\n }\n const result = await runtime.request(requestInput);\n await writeJsonOutput(result, readOptionalString(options.output));\n return;\n }\n\n case \"computer\": {\n const client = await requireOpensteerService(sessionOptions);\n const action =\n readOptionalJsonObject(options.action) ??\n readJsonObjectPositional(invocation.positionals[0], \"action\");\n if (!action) {\n throw new Error(\"computer requires an action JSON object\");\n }\n const screenshot = parseComputerScreenshotOptions(options);\n const result = await client.invoke<\n OpensteerComputerExecuteInput,\n OpensteerComputerExecuteOutput\n >(\"computer.execute\", {\n action: parseComputerAction(action),\n ...(screenshot === undefined ? {} : { screenshot }),\n ...buildNetworkTagInput(options),\n });\n writeJson(projectCliComputerOutput(result));\n return;\n }\n\n case \"close\": {\n const metadata = await loadSessionMetadata(sessionOptions);\n if (!metadata) {\n writeJson({ closed: true });\n return;\n }\n\n if (metadata.mode === \"cloud\") {\n const cloud = new OpensteerCloudClient(\n resolveCloudConfig({\n enabled: true,\n mode: \"cloud\",\n })!,\n );\n await cloud.closeSession(metadata.sessionId);\n await removeOpensteerServiceMetadata(metadata.rootPath, metadata.name);\n writeJson({ closed: true });\n return;\n }\n\n const client = await connectOpensteerService(sessionOptions);\n if (!client) {\n writeJson({ closed: true });\n return;\n }\n\n const result = await client.closeSession();\n await removeOpensteerServiceMetadata(metadata.rootPath, metadata.name).catch(() => undefined);\n writeJson(result);\n return;\n }\n default:\n throw new Error(`unsupported command \"${invocation.commandId}\".`);\n }\n}\n\nfunction resolveCliExecutionMode(options: ParsedCliOptions): \"local\" | \"cloud\" {\n return resolveOpensteerExecutionMode({\n local: readOptionalBoolean(options.local) === true,\n cloud: readOptionalBoolean(options.cloud) === true,\n ...(process.env.OPENSTEER_MODE === undefined\n ? {}\n : { environment: process.env.OPENSTEER_MODE }),\n });\n}\n\nasync function resolveCliSemanticRuntime(\n sessionOptions: {\n readonly name?: string;\n readonly rootDir?: string;\n },\n mode: \"local\" | \"cloud\",\n) {\n if (mode === \"cloud\") {\n return createOpensteerSemanticRuntime({\n runtimeOptions: {\n ...(sessionOptions.name === undefined ? {} : { name: sessionOptions.name }),\n ...(sessionOptions.rootDir === undefined ? {} : { rootDir: sessionOptions.rootDir }),\n },\n cloud: true,\n });\n }\n\n const attached = await connectOpensteerService(sessionOptions);\n if (attached) {\n return new AttachedOpensteerSessionProxy(sessionOptions);\n }\n\n return new OpensteerSessionRuntime({\n ...(sessionOptions.name === undefined ? {} : { name: sessionOptions.name }),\n ...(sessionOptions.rootDir === undefined ? {} : { rootDir: sessionOptions.rootDir }),\n });\n}\n\nfunction resolveOpensteerRootPath(rootDir: string | undefined): string {\n return path.resolve(rootDir ?? process.cwd(), \".opensteer\");\n}\n\nasync function loadSessionMetadata(sessionOptions: {\n readonly name?: string;\n readonly rootDir?: string;\n}) {\n const name = sessionOptions.name ?? \"default\";\n const rootPath = resolveOpensteerRootPath(sessionOptions.rootDir);\n const raw = await readOpensteerServiceMetadata(rootPath, name);\n if (!raw) {\n return undefined;\n }\n return parseOpensteerServiceMetadata(raw, getOpensteerServiceMetadataPath(rootPath, name))\n .metadata;\n}\n\nfunction parseTargetInput(\n positionals: readonly string[],\n options: ParsedCliOptions,\n): {\n readonly target:\n | { readonly kind: \"element\"; readonly element: number }\n | { readonly kind: \"description\"; readonly description: string }\n | { readonly kind: \"selector\"; readonly selector: string };\n readonly persistAsDescription?: string;\n} {\n const numericTarget = readNumericPositional(positionals[0]);\n const selector = readOptionalString(options.selector);\n const description = readOptionalString(options.description);\n\n if (numericTarget !== undefined && selector !== undefined) {\n throw new Error(\"Specify only one of a positional element counter or --selector.\");\n }\n\n if (numericTarget !== undefined) {\n return {\n target: {\n kind: \"element\",\n element: numericTarget,\n },\n ...(description === undefined ? {} : { persistAsDescription: description }),\n };\n }\n\n if (selector !== undefined) {\n return {\n target: {\n kind: \"selector\",\n selector,\n },\n ...(description === undefined ? {} : { persistAsDescription: description }),\n };\n }\n\n if (description === undefined) {\n throw new Error(\"Specify an element counter, --selector, or --description.\");\n }\n\n return {\n target: {\n kind: \"description\",\n description,\n },\n };\n}\n\nfunction parseBrowserOptions(options: ParsedCliOptions): Record<string, unknown> | undefined {\n const browserJson = readOptionalJsonObject(options.browserJson);\n if (browserJson) {\n return browserJson;\n }\n\n const browserKind = readOptionalString(options.browser);\n const headed = readOptionalBoolean(options.headed);\n const headless = readOptionalBoolean(options.headless);\n if (headed === true && headless === true) {\n throw new Error(\"Specify only one of --headed or --headless.\");\n }\n const managed = {\n ...(headed === true ? { headless: false } : {}),\n ...(headed !== true && headless !== undefined ? { headless } : {}),\n ...(readOptionalString(options.executablePath) === undefined\n ? {}\n : { executablePath: readOptionalString(options.executablePath) }),\n ...(readOptionalStrings(options.browserArg).length === 0\n ? {}\n : { args: readOptionalStrings(options.browserArg) }),\n ...(readOptionalNumber(options.timeoutMs) === undefined\n ? {}\n : { timeoutMs: readOptionalNumber(options.timeoutMs) }),\n };\n\n const attachEndpoint = readOptionalString(options.attachEndpoint);\n const sourceUserDataDir = readOptionalString(options.sourceUserDataDir);\n const sourceProfileDirectory = readOptionalString(options.sourceProfileDirectory);\n const freshTab = readOptionalBoolean(options.freshTab);\n const attachHeaders = parseHeaderEntries(readOptionalStrings(options.attachHeader));\n\n const inferredKind =\n browserKind ??\n (attachEndpoint !== undefined ? \"attach-live\" : undefined) ??\n (sourceUserDataDir !== undefined ? \"snapshot-session\" : undefined);\n\n if (\n (attachEndpoint !== undefined || attachHeaders.length > 0) &&\n sourceUserDataDir !== undefined\n ) {\n throw new Error(\n \"Specify either attach-live flags (--attach-endpoint/--attach-header) or snapshot flags (--source-user-data-dir/--source-profile-directory), not both.\",\n );\n }\n if (attachHeaders.length > 0 && attachEndpoint === undefined) {\n throw new Error(\"--attach-header requires --attach-endpoint.\");\n }\n\n if (inferredKind === \"snapshot-session\") {\n if (sourceUserDataDir === undefined) {\n throw new Error('browser kind \"snapshot-session\" requires --source-user-data-dir.');\n }\n return {\n kind: \"snapshot-session\" as const,\n ...managed,\n sourceUserDataDir,\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n };\n }\n\n if (inferredKind === \"snapshot-authenticated\") {\n if (sourceUserDataDir === undefined) {\n throw new Error('browser kind \"snapshot-authenticated\" requires --source-user-data-dir.');\n }\n return {\n kind: \"snapshot-authenticated\" as const,\n ...managed,\n sourceUserDataDir,\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n };\n }\n\n if (inferredKind === \"attach-live\") {\n return {\n kind: \"attach-live\" as const,\n ...(attachEndpoint === undefined ? {} : { endpoint: attachEndpoint }),\n ...(freshTab === undefined ? {} : { freshTab }),\n ...(attachHeaders.length === 0\n ? {}\n : {\n headers: Object.fromEntries(attachHeaders.map((entry) => [entry.name, entry.value])),\n }),\n };\n }\n\n if (inferredKind !== undefined && inferredKind !== \"managed\") {\n throw new Error(\n `browser must be \"managed\", \"snapshot-session\", \"snapshot-authenticated\", or \"attach-live\"; received \"${inferredKind}\"`,\n );\n }\n\n const parsed = {\n ...(browserKind === \"managed\" ? { kind: \"managed\" as const } : {}),\n ...managed,\n };\n return Object.keys(parsed).length === 0 ? undefined : parsed;\n}\n\nfunction parseContextOptions(options: ParsedCliOptions): Record<string, unknown> | undefined {\n const contextJson = readOptionalJsonObject(options.contextJson);\n if (contextJson) {\n return contextJson;\n }\n\n const viewport = parseViewportOption(readOptionalString(options.viewport));\n const parsed = {\n ...(readOptionalBoolean(options.ignoreHttpsErrors) === undefined\n ? {}\n : { ignoreHTTPSErrors: readOptionalBoolean(options.ignoreHttpsErrors) }),\n ...(readOptionalString(options.locale) === undefined\n ? {}\n : { locale: readOptionalString(options.locale) }),\n ...(readOptionalString(options.timezoneId) === undefined\n ? {}\n : { timezoneId: readOptionalString(options.timezoneId) }),\n ...(readOptionalString(options.userAgent) === undefined\n ? {}\n : { userAgent: readOptionalString(options.userAgent) }),\n ...(viewport === undefined ? {} : { viewport }),\n ...(readOptionalBoolean(options.javascriptEnabled) === undefined\n ? {}\n : { javaScriptEnabled: readOptionalBoolean(options.javascriptEnabled) }),\n ...(readOptionalBoolean(options.bypassCsp) === undefined\n ? {}\n : { bypassCSP: readOptionalBoolean(options.bypassCsp) }),\n ...(readOptionalString(options.reducedMotion) === undefined\n ? {}\n : { reducedMotion: readOptionalString(options.reducedMotion) }),\n ...(readOptionalString(options.colorScheme) === undefined\n ? {}\n : { colorScheme: readOptionalString(options.colorScheme) }),\n };\n\n return Object.keys(parsed).length === 0 ? undefined : parsed;\n}\n\nfunction parseViewportOption(value: string | undefined) {\n if (value === undefined) {\n return undefined;\n }\n if (value === \"null\" || value === \"none\") {\n return null;\n }\n\n const match = value.match(/^(\\d+)x(\\d+)$/i);\n if (!match) {\n throw new Error(`viewport must be WIDTHxHEIGHT, \"null\", or \"none\"; received \"${value}\"`);\n }\n\n return {\n width: Number.parseInt(match[1]!, 10),\n height: Number.parseInt(match[2]!, 10),\n };\n}\n\nfunction parseJsonObject(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\nasync function readJsonObjectOption(\n options: ParsedCliOptions,\n input: {\n readonly inlineKey: string;\n readonly fileKey: string;\n readonly label: string;\n },\n): Promise<Record<string, unknown> | undefined> {\n const inlineValue = readOptionalJsonObject(options[input.inlineKey]);\n const filePath = readOptionalString(options[input.fileKey]);\n if (inlineValue !== undefined && filePath !== undefined) {\n throw new Error(\n `Specify either --${toKebabCase(input.inlineKey)} or --${toKebabCase(input.fileKey)}, not both.`,\n );\n }\n if (inlineValue !== undefined) {\n return inlineValue;\n }\n if (filePath !== undefined) {\n return parseJsonObject(await readFile(filePath, \"utf8\"), `${input.label}-file`);\n }\n return undefined;\n}\n\nfunction buildProvenanceInput(options: ParsedCliOptions): OpensteerRegistryProvenance | undefined {\n const source = readOptionalString(options.provenanceSource);\n const sourceId = readOptionalString(options.provenanceSourceId);\n const capturedAt = readOptionalNumber(options.provenanceCapturedAt);\n const notes = readOptionalString(options.provenanceNotes);\n if (source === undefined) {\n if (sourceId !== undefined || capturedAt !== undefined || notes !== undefined) {\n throw new Error(\n \"--provenance-source is required when using --provenance-source-id, --provenance-captured-at, or --provenance-notes\",\n );\n }\n return undefined;\n }\n const provenance = {\n source,\n ...(sourceId === undefined ? {} : { sourceId }),\n ...(capturedAt === undefined ? {} : { capturedAt }),\n ...(notes === undefined ? {} : { notes }),\n };\n return provenance;\n}\n\nfunction parseKeyValueOptions(values: readonly string[]): ReadonlyMap<string, string> {\n const entries = new Map<string, string>();\n for (const value of values) {\n const equalsIndex = value.indexOf(\"=\");\n if (equalsIndex <= 0 || equalsIndex === value.length - 1) {\n throw new Error(`expected NAME=VALUE but received \"${value}\"`);\n }\n entries.set(value.slice(0, equalsIndex), value.slice(equalsIndex + 1));\n }\n return entries;\n}\n\nfunction parseHeaderEntries(values: readonly string[]): readonly {\n readonly name: string;\n readonly value: string;\n}[] {\n return [...parseKeyValueOptions(values).entries()].map(([name, value]) => ({\n name,\n value,\n }));\n}\n\nfunction buildNetworkFilterInput(options: ParsedCliOptions): Record<string, unknown> {\n return {\n ...(readOptionalString(options.pageRef) === undefined\n ? {}\n : { pageRef: readOptionalString(options.pageRef) }),\n ...(readOptionalString(options.recordId) === undefined\n ? {}\n : { recordId: readOptionalString(options.recordId) }),\n ...(readOptionalString(options.requestId) === undefined\n ? {}\n : { requestId: readOptionalString(options.requestId) }),\n ...(readOptionalString(options.actionId) === undefined\n ? {}\n : { actionId: readOptionalString(options.actionId) }),\n ...(readOptionalString(options.url) === undefined\n ? {}\n : { url: readOptionalString(options.url) }),\n ...(readOptionalString(options.hostname) === undefined\n ? {}\n : { hostname: readOptionalString(options.hostname) }),\n ...(readOptionalString(options.path) === undefined\n ? {}\n : { path: readOptionalString(options.path) }),\n ...(readOptionalString(options.method) === undefined\n ? {}\n : { method: readOptionalString(options.method) }),\n ...(readOptionalString(options.status) === undefined\n ? {}\n : { status: readOptionalString(options.status) }),\n ...(readOptionalString(options.resourceType) === undefined\n ? {}\n : { resourceType: readOptionalString(options.resourceType) }),\n };\n}\n\nfunction buildNetworkTagInput(options: ParsedCliOptions): Record<string, unknown> {\n return readOptionalString(options.networkTag) === undefined\n ? {}\n : { networkTag: readOptionalString(options.networkTag) };\n}\n\nfunction buildNetworkQueryInput(options: ParsedCliOptions): Record<string, unknown> {\n return {\n ...(readOptionalString(options.source) === undefined\n ? {}\n : { source: readOptionalString(options.source) }),\n ...(readOptionalBoolean(options.includeBodies) ? { includeBodies: true } : {}),\n ...(readOptionalNumber(options.limit) === undefined\n ? {}\n : { limit: readOptionalNumber(options.limit) }),\n ...(readOptionalString(options.tag) === undefined\n ? {}\n : { tag: readOptionalString(options.tag) }),\n ...buildNetworkFilterInput(options),\n };\n}\n\nasync function parseRequestBodyInput(\n options: ParsedCliOptions,\n): Promise<OpensteerRequestBodyInput | undefined> {\n const bodyJson = options.bodyJson;\n const bodyText = readOptionalString(options.bodyText);\n const bodyBase64 = readOptionalString(options.bodyBase64);\n const bodyFile = readOptionalString(options.bodyFile);\n const contentType = readOptionalString(options.contentType);\n\n const specifiedInputs = [bodyJson, bodyText, bodyBase64, bodyFile].filter(\n (value) => value !== undefined,\n );\n if (specifiedInputs.length > 1) {\n throw new Error(\"Specify only one of --body-json, --body-text, --body-base64, or --body-file.\");\n }\n\n if (bodyJson !== undefined) {\n return {\n json: toCanonicalJsonValue(bodyJson),\n ...(contentType === undefined ? {} : { contentType }),\n };\n }\n\n if (bodyText !== undefined) {\n return {\n text: bodyText,\n ...(contentType === undefined ? {} : { contentType }),\n };\n }\n\n if (bodyBase64 !== undefined) {\n return {\n base64: bodyBase64,\n ...(contentType === undefined ? {} : { contentType }),\n };\n }\n\n if (bodyFile === undefined) {\n return undefined;\n }\n\n const raw = await readFile(bodyFile, \"utf8\");\n const shouldParseJson =\n bodyFile.endsWith(\".json\") ||\n contentType?.toLowerCase().startsWith(\"application/json\") === true;\n if (shouldParseJson) {\n return {\n json: toCanonicalJsonValue(JSON.parse(raw)),\n ...(contentType === undefined ? {} : { contentType }),\n };\n }\n\n return {\n text: raw,\n ...(contentType === undefined ? {} : { contentType }),\n };\n}\n\nfunction parseComputerScreenshotOptions(\n options: ParsedCliOptions,\n): Record<string, unknown> | undefined {\n const screenshotJson = readOptionalJsonObject(options.screenshotJson);\n const format = readOptionalString(options.format);\n const includeCursor = readOptionalBoolean(options.includeCursor);\n const disableAnnotations = parseCsvOption(readOptionalString(options.disableAnnotations));\n\n if (\n screenshotJson !== undefined &&\n (format !== undefined || includeCursor !== undefined || disableAnnotations !== undefined)\n ) {\n throw new Error(\n \"Specify either --screenshot-json or individual screenshot flags (--format, --include-cursor, --disable-annotations).\",\n );\n }\n\n if (screenshotJson !== undefined) {\n return screenshotJson;\n }\n\n const parsed = {\n ...(format === undefined ? {} : { format }),\n ...(includeCursor === undefined ? {} : { includeCursor }),\n ...(disableAnnotations === undefined ? {} : { disableAnnotations }),\n };\n\n return Object.keys(parsed).length === 0 ? undefined : parsed;\n}\n\nfunction readOptionalString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction readOptionalBoolean(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction readOptionalNumber(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction readOptionalStrings(value: unknown): readonly string[] {\n if (value === undefined) {\n return [];\n }\n return Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === \"string\")\n : [];\n}\n\nfunction readOptionalEnum<T extends string>(\n value: unknown,\n allowed: readonly T[],\n label: string,\n): T | undefined {\n const text = readOptionalString(value);\n if (text === undefined) {\n return undefined;\n }\n if (includesEnumValue(allowed, text)) {\n return text;\n }\n throw new Error(`${label} must be one of: ${allowed.join(\", \")}`);\n}\n\nfunction readOptionalEnumList<T extends string>(\n value: unknown,\n allowed: readonly T[],\n label: string,\n): readonly T[] {\n const texts = readOptionalStrings(value);\n const parsed: T[] = [];\n for (const text of texts) {\n if (!includesEnumValue(allowed, text)) {\n throw new Error(`${label} must contain only: ${allowed.join(\", \")}`);\n }\n parsed.push(text);\n }\n return parsed;\n}\n\nfunction includesEnumValue<T extends string>(allowed: readonly T[], value: string): value is T {\n return allowed.some((entry) => entry === value);\n}\n\nfunction readOptionalPageRef(value: unknown, label: string) {\n const pageRef = readOptionalString(value);\n if (pageRef === undefined) {\n return undefined;\n }\n if (!isPageRef(pageRef)) {\n throw new Error(`${label} must be a valid page reference`);\n }\n return pageRef;\n}\n\nfunction readOptionalJson(value: unknown): unknown {\n return value;\n}\n\nfunction readOptionalJsonObject(\n value: unknown,\n label = \"JSON value\",\n): Record<string, unknown> | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"object\" || Array.isArray(value) || value === null) {\n throw new Error(`${label} must be a JSON object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction readOptionalJsonArray(value: unknown, label: string): readonly unknown[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!Array.isArray(value)) {\n throw new Error(`${label} must be a JSON array`);\n }\n return value;\n}\n\nfunction readRequiredString(value: unknown, label: string): string {\n if (typeof value === \"string\") {\n return value;\n }\n throw new Error(`${label} must be a string`);\n}\n\nfunction readRequiredNumber(value: unknown, label: string): number {\n if (typeof value === \"number\") {\n return value;\n }\n throw new Error(`${label} must be a number`);\n}\n\nfunction readOptionalStringArray(value: unknown, label: string): readonly string[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n if (value.some((entry) => typeof entry !== \"string\")) {\n throw new Error(`${label} must be an array of strings`);\n }\n return value;\n}\n\nfunction parseInteractionCaptureSteps(\n value: readonly unknown[] | undefined,\n): readonly OpensteerInteractionCaptureStep[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n return value.map((entry, index) =>\n parseInteractionCaptureStep(entry, `--steps-json[${String(index)}]`),\n );\n}\n\nfunction parseReverseWorkflowSteps(\n value: readonly unknown[],\n label: string,\n): readonly OpensteerReverseWorkflowStep[] {\n return value.map(\n (entry, index) =>\n validateSchemaValue(\n opensteerReverseWorkflowStepSchema,\n entry,\n `${label}[${String(index)}]`,\n ) as OpensteerReverseWorkflowStep,\n );\n}\n\nfunction parseExecutableResolvers(\n value: readonly unknown[],\n label: string,\n): readonly OpensteerExecutableResolver[] {\n return value.map(\n (entry, index) =>\n validateSchemaValue(\n opensteerExecutableResolverSchema,\n entry,\n `${label}[${String(index)}]`,\n ) as OpensteerExecutableResolver,\n );\n}\n\nfunction parseValidationRules(\n value: readonly unknown[],\n label: string,\n): readonly OpensteerValidationRule[] {\n return value.map(\n (entry, index) =>\n validateSchemaValue(\n opensteerValidationRuleSchema,\n entry,\n `${label}[${String(index)}]`,\n ) as OpensteerValidationRule,\n );\n}\n\nfunction validateSchemaValue<T>(\n schema: Parameters<typeof validateJsonSchema>[0],\n value: unknown,\n label: string,\n): T {\n const issues = validateJsonSchema(schema, value, label);\n if (issues.length > 0) {\n throw new Error(issues.map((issue) => `${issue.path}: ${issue.message}`).join(\"\\n\"));\n }\n return value as T;\n}\n\nfunction parseInteractionCaptureStep(\n value: unknown,\n label: string,\n): OpensteerInteractionCaptureStep {\n const step = readOptionalJsonObject(value);\n if (step === undefined) {\n throw new Error(`${label} must be an object`);\n }\n const kind = readRequiredString(step.kind, `${label}.kind`);\n switch (kind) {\n case \"goto\":\n return {\n kind,\n url: readRequiredString(step.url, `${label}.url`),\n };\n case \"click\":\n case \"hover\":\n return {\n kind,\n target: parseInteractionCaptureTarget(step.target, `${label}.target`),\n };\n case \"input\": {\n const pressEnter = readOptionalBoolean(step.pressEnter);\n return {\n kind,\n target: parseInteractionCaptureTarget(step.target, `${label}.target`),\n text: readRequiredString(step.text, `${label}.text`),\n ...(pressEnter === undefined ? {} : { pressEnter }),\n };\n }\n case \"scroll\":\n return {\n kind,\n target: parseInteractionCaptureTarget(step.target, `${label}.target`),\n direction: parseScrollDirection(step.direction, `${label}.direction`),\n amount: readRequiredNumber(step.amount, `${label}.amount`),\n };\n case \"wait\":\n return {\n kind,\n durationMs: readRequiredNumber(step.durationMs, `${label}.durationMs`),\n };\n default:\n throw new Error(`${label}.kind must be one of: goto, click, hover, input, scroll, wait`);\n }\n}\n\nfunction parseInteractionCaptureTarget(value: unknown, label: string): OpensteerTargetInput {\n const target = readOptionalJsonObject(value);\n if (target === undefined) {\n throw new Error(`${label} must be an object`);\n }\n const kind = readRequiredString(target.kind, `${label}.kind`);\n switch (kind) {\n case \"element\":\n return {\n kind,\n element: readRequiredNumber(target.element, `${label}.element`),\n };\n case \"description\":\n return {\n kind,\n description: readRequiredString(target.description, `${label}.description`),\n };\n case \"selector\":\n return {\n kind,\n selector: readRequiredString(target.selector, `${label}.selector`),\n };\n default:\n throw new Error(`${label}.kind must be one of: element, description, selector`);\n }\n}\n\nfunction parseScrollDirection(value: unknown, label: string): \"up\" | \"down\" | \"left\" | \"right\" {\n const direction = readRequiredString(value, label);\n if (direction === \"up\" || direction === \"down\" || direction === \"left\" || direction === \"right\") {\n return direction;\n }\n throw new Error(`${label} must be one of: up, down, left, right`);\n}\n\nfunction parseMouseButton(value: unknown, label: string): \"left\" | \"middle\" | \"right\" | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === \"left\" || value === \"middle\" || value === \"right\") {\n return value;\n }\n throw new Error(`${label} must be left, middle, or right`);\n}\n\nfunction parseKeyModifiers(\n value: unknown,\n label: string,\n): readonly (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[] | undefined {\n const modifiers = readOptionalStringArray(value, label);\n if (modifiers === undefined) {\n return undefined;\n }\n const parsed: (\"Shift\" | \"Control\" | \"Alt\" | \"Meta\")[] = [];\n for (const modifier of modifiers) {\n if (\n modifier !== \"Shift\" &&\n modifier !== \"Control\" &&\n modifier !== \"Alt\" &&\n modifier !== \"Meta\"\n ) {\n throw new Error(`${label} contains invalid modifier \"${modifier}\"`);\n }\n parsed.push(modifier);\n }\n return parsed;\n}\n\nfunction parsePoint(value: unknown, label: string): { readonly x: number; readonly y: number } {\n const point = readOptionalJsonObject(value);\n if (point === undefined) {\n throw new Error(`${label} must be an object`);\n }\n return {\n x: readRequiredNumber(point.x, `${label}.x`),\n y: readRequiredNumber(point.y, `${label}.y`),\n };\n}\n\nfunction parseRequestPlanPayload(value: Record<string, unknown>): OpensteerRequestPlanPayload {\n assertValidJsonObject<OpensteerRequestPlanPayload>(\n value,\n opensteerRequestPlanPayloadSchema,\n \"request plan payload\",\n );\n return value;\n}\n\nfunction parseRecipePayload(value: Record<string, unknown>): OpensteerRecipePayload {\n assertValidJsonObject<OpensteerRecipePayload>(\n value,\n opensteerAuthRecipePayloadSchema,\n \"recipe payload\",\n );\n return value;\n}\n\nfunction parseRequestPlanLifecycle(value: string): OpensteerRequestPlanLifecycle {\n if (value === \"draft\" || value === \"active\" || value === \"deprecated\" || value === \"retired\") {\n return value;\n }\n throw new Error(`invalid lifecycle \"${value}\"`);\n}\n\nfunction parseRequestTransport(value: string): TransportKind {\n if (\n value === \"direct-http\" ||\n value === \"matched-tls\" ||\n value === \"context-http\" ||\n value === \"page-http\" ||\n value === \"session-http\"\n ) {\n return value;\n }\n throw new Error(`invalid transport \"${value}\"`);\n}\n\nfunction parseStringRecord(value: Record<string, unknown>, label: string): Record<string, string> {\n const parsed: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (typeof entry !== \"string\") {\n throw new Error(`${label} must be a JSON object of string values (invalid \"${key}\")`);\n }\n parsed[key] = entry;\n }\n return parsed;\n}\n\nfunction parseSandboxAjaxRoutes(value: readonly unknown[]): readonly SandboxAjaxRoute[] {\n return value.map((entry, index) => {\n assertValidJsonObject<SandboxAjaxRoute>(\n entry,\n sandboxAjaxRouteSchema,\n `--ajax-routes[${index}]`,\n );\n return entry;\n });\n}\n\nfunction parseComputerAction(value: Record<string, unknown>): OpensteerComputerAction {\n const type = readOptionalString(value.type);\n switch (type) {\n case \"click\": {\n const button = parseMouseButton(value.button, \"action.button\");\n const clickCount = readOptionalNumber(value.clickCount);\n const modifiers = parseKeyModifiers(value.modifiers, \"action.modifiers\");\n return {\n type,\n x: readRequiredNumber(value.x, \"action.x\"),\n y: readRequiredNumber(value.y, \"action.y\"),\n ...(button === undefined ? {} : { button }),\n ...(clickCount === undefined ? {} : { clickCount }),\n ...(modifiers === undefined ? {} : { modifiers }),\n };\n }\n case \"move\":\n return {\n type,\n x: readRequiredNumber(value.x, \"action.x\"),\n y: readRequiredNumber(value.y, \"action.y\"),\n };\n case \"scroll\":\n return {\n type,\n x: readRequiredNumber(value.x, \"action.x\"),\n y: readRequiredNumber(value.y, \"action.y\"),\n deltaX: readRequiredNumber(value.deltaX, \"action.deltaX\"),\n deltaY: readRequiredNumber(value.deltaY, \"action.deltaY\"),\n };\n case \"type\":\n return {\n type,\n text: readRequiredString(value.text, \"action.text\"),\n };\n case \"key\": {\n const modifiers = parseKeyModifiers(value.modifiers, \"action.modifiers\");\n return {\n type,\n key: readRequiredString(value.key, \"action.key\"),\n ...(modifiers === undefined ? {} : { modifiers }),\n };\n }\n case \"drag\": {\n const steps = readOptionalNumber(value.steps);\n return {\n type,\n start: parsePoint(value.start, \"action.start\"),\n end: parsePoint(value.end, \"action.end\"),\n ...(steps === undefined ? {} : { steps }),\n };\n }\n case \"screenshot\":\n return { type };\n case \"wait\":\n return {\n type,\n durationMs: readRequiredNumber(value.durationMs, \"action.durationMs\"),\n };\n default:\n throw new Error(\n \"action.type must be one of click, move, scroll, type, key, drag, screenshot, or wait\",\n );\n }\n}\n\nfunction assertValidJsonObject<T>(\n value: unknown,\n schema: Parameters<typeof validateJsonSchema>[0],\n label: string,\n): asserts value is T {\n const issues = validateJsonSchema(schema, value);\n if (issues.length === 0) {\n return;\n }\n const issue = issues[0]!;\n throw new Error(`invalid ${label} at ${issue.path}: ${issue.message}`);\n}\n\nfunction readJsonObjectPositional(\n value: string | undefined,\n label: string,\n): Record<string, unknown> | undefined {\n return value === undefined ? undefined : parseJsonObject(value, label);\n}\n\nfunction readNumericPositional(value: string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!/^\\d+$/.test(value)) {\n return undefined;\n }\n return Number.parseInt(value, 10);\n}\n\nfunction parseCsvOption(value: string | undefined): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const entries = value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n\n return entries;\n}\n\nfunction parseIntegerCsvOption(value: string | undefined): readonly number[] | undefined {\n const entries = parseCsvOption(value);\n if (entries === undefined) {\n return undefined;\n }\n return entries.map((entry) => {\n const parsed = Number.parseInt(entry, 10);\n if (!Number.isFinite(parsed)) {\n throw new Error(`invalid integer value \"${entry}\"`);\n }\n return parsed;\n });\n}\n\nfunction consumeTextPositional(positionals: readonly string[]): string | undefined {\n const numericTarget = readNumericPositional(positionals[0]);\n return numericTarget === undefined ? positionals[0] : positionals[1];\n}\n\nfunction consumeRemainingPositionals(positionals: readonly string[]): readonly string[] {\n const numericTarget = readNumericPositional(positionals[0]);\n return numericTarget === undefined ? positionals : positionals.slice(1);\n}\n\nfunction writeJson(value: unknown): void {\n process.stdout.write(`${JSON.stringify(value)}\\n`);\n}\n\nasync function writeJsonOutput(value: unknown, outputPath: string | undefined): Promise<void> {\n if (outputPath === undefined) {\n writeJson(value);\n return;\n }\n\n await writeFile(outputPath, `${JSON.stringify(value)}\\n`, \"utf8\");\n}\n\nfunction projectCliComputerOutput(\n output: OpensteerComputerExecuteOutput,\n): OpensteerComputerExecuteOutput & {\n readonly screenshot: OpensteerComputerExecuteOutput[\"screenshot\"] & {\n readonly path: string;\n };\n} {\n return {\n ...output,\n screenshot: {\n ...output.screenshot,\n path: fileUriToPath(output.screenshot.payload.uri),\n },\n };\n}\n\nfunction writeError(error: unknown): void {\n if (error instanceof OpensteerCliServiceError) {\n process.stderr.write(\n `${JSON.stringify({ error: error.opensteerError, statusCode: error.statusCode })}\\n`,\n );\n return;\n }\n\n if (error instanceof OpensteerLocalProfileUnavailableError) {\n process.stderr.write(\n `${JSON.stringify({\n error: {\n code: error.code,\n message: error.message,\n name: error.name,\n details: {\n inspection: error.inspection,\n },\n },\n })}\\n`,\n );\n return;\n }\n\n if (error instanceof Error) {\n process.stderr.write(\n `${JSON.stringify({ error: { message: error.message, name: error.name } })}\\n`,\n );\n return;\n }\n\n process.stderr.write(`${JSON.stringify({ error: { value: error } })}\\n`);\n}\n\nvoid main(process.argv.slice(2)).catch((error) => {\n writeError(error);\n process.exitCode = 1;\n});\n\nfunction toKebabCase(value: string): string {\n return value.replace(/[A-Z]/g, (character) => `-${character.toLowerCase()}`);\n}\n"]}