opensteer 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/dist/{chunk-X3G6QSCF.js → chunk-C7GWMSTV.js} +1700 -577
- package/dist/chunk-C7GWMSTV.js.map +1 -0
- package/dist/cli/bin.cjs +6115 -4757
- package/dist/cli/bin.cjs.map +1 -1
- package/dist/cli/bin.js +320 -52
- package/dist/cli/bin.js.map +1 -1
- package/dist/index.cjs +1751 -614
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +484 -539
- package/dist/index.d.ts +484 -539
- package/dist/index.js +30 -26
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
- package/skills/opensteer/SKILL.md +66 -13
- package/skills/opensteer/references/cli-reference.md +115 -20
- package/skills/opensteer/references/request-workflow.md +35 -15
- package/skills/opensteer/references/sdk-reference.md +85 -21
- package/dist/chunk-X3G6QSCF.js.map +0 -1
package/dist/cli/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/skills-installer.ts","../../src/cli/bin.ts"],"names":["require","process","runtime","result"],"mappings":"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","file":"bin.js","sourcesContent":["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","#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport type { OpensteerBrowserOptions, OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nimport { OpensteerBrowserManager } from \"../browser-manager.js\";\nimport { hasPersistedCloudSession } from \"../cloud/session-proxy.js\";\nimport { dispatchSemanticOperation } from \"./dispatch.js\";\nimport { discoverLocalCdpBrowsers, inspectCdpEndpoint } from \"../local-browser/cdp-discovery.js\";\nimport {\n resolveOpensteerEngineName,\n type OpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { runOpensteerSkillsInstaller } from \"./skills-installer.js\";\nimport {\n assertExecutionModeSupportsEngine,\n resolveOpensteerExecutionMode,\n type OpensteerExecutionMode,\n} from \"../mode/config.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport {\n createOpensteerSemanticRuntime,\n type OpensteerCloudOptions,\n} from \"../sdk/runtime-resolution.js\";\n\nconst OPERATION_ALIASES = new Map<string, OpensteerSemanticOperationName>([\n [\"open\", \"session.open\"],\n [\"goto\", \"page.goto\"],\n [\"snapshot\", \"page.snapshot\"],\n [\"click\", \"dom.click\"],\n [\"hover\", \"dom.hover\"],\n [\"input\", \"dom.input\"],\n [\"scroll\", \"dom.scroll\"],\n [\"extract\", \"dom.extract\"],\n [\"network query\", \"network.query\"],\n [\"network save\", \"network.save\"],\n [\"network clear\", \"network.clear\"],\n [\"network minimize\", \"network.minimize\"],\n [\"network diff\", \"network.diff\"],\n [\"network probe\", \"network.probe\"],\n [\"reverse discover\", \"reverse.discover\"],\n [\"reverse query\", \"reverse.query\"],\n [\"reverse package create\", \"reverse.package.create\"],\n [\"reverse package run\", \"reverse.package.run\"],\n [\"reverse export\", \"reverse.export\"],\n [\"reverse report\", \"reverse.report\"],\n [\"reverse package get\", \"reverse.package.get\"],\n [\"reverse package list\", \"reverse.package.list\"],\n [\"reverse package patch\", \"reverse.package.patch\"],\n [\"interaction capture\", \"interaction.capture\"],\n [\"interaction get\", \"interaction.get\"],\n [\"interaction diff\", \"interaction.diff\"],\n [\"interaction replay\", \"interaction.replay\"],\n [\"artifact read\", \"artifact.read\"],\n [\"scripts capture\", \"scripts.capture\"],\n [\"scripts beautify\", \"scripts.beautify\"],\n [\"scripts deobfuscate\", \"scripts.deobfuscate\"],\n [\"scripts sandbox\", \"scripts.sandbox\"],\n [\"captcha solve\", \"captcha.solve\"],\n [\"inspect cookies\", \"inspect.cookies\"],\n [\"inspect storage\", \"inspect.storage\"],\n [\"request raw\", \"request.raw\"],\n [\"request-plan infer\", \"request-plan.infer\"],\n [\"request-plan write\", \"request-plan.write\"],\n [\"request-plan get\", \"request-plan.get\"],\n [\"request-plan list\", \"request-plan.list\"],\n [\"recipe write\", \"recipe.write\"],\n [\"recipe get\", \"recipe.get\"],\n [\"recipe list\", \"recipe.list\"],\n [\"recipe run\", \"recipe.run\"],\n [\"auth-recipe write\", \"auth-recipe.write\"],\n [\"auth-recipe get\", \"auth-recipe.get\"],\n [\"auth-recipe list\", \"auth-recipe.list\"],\n [\"auth-recipe run\", \"auth-recipe.run\"],\n [\"request execute\", \"request.execute\"],\n [\"computer execute\", \"computer.execute\"],\n [\"close\", \"session.close\"],\n]);\n\nasync function main(): Promise<void> {\n const parsed = parseCommandLine(process.argv.slice(2));\n if (parsed.help || parsed.command.length === 0) {\n printHelp();\n return;\n }\n\n if (parsed.command[0] === \"browser\") {\n await handleBrowserCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"skills\" && parsed.command[1] === \"install\") {\n const exitCode = await runOpensteerSkillsInstaller({\n ...(parsed.options.agents === undefined ? {} : { agents: parsed.options.agents }),\n ...(parsed.options.skills === undefined ? {} : { skills: parsed.options.skills }),\n global: parsed.options.global === true,\n yes: parsed.options.yes === true,\n copy: parsed.options.copy === true,\n all: parsed.options.all === true,\n list: parsed.options.list === true,\n });\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n const operation =\n parsed.command[0] === \"run\"\n ? (parsed.rest[0] as OpensteerSemanticOperationName | undefined)\n : resolveOperation(parsed.command);\n if (!operation) {\n throw new Error(`Unknown command: ${parsed.command.join(\" \")}`);\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Stateful commands require \"--workspace <id>\".');\n }\n\n const mode = await resolveCliExecutionMode(parsed);\n assertExecutionModeSupportsEngine(mode, parsed.options.engineName);\n const cloudOptions = buildCliCloudOptions(parsed);\n if (\n mode !== \"cloud\" &&\n (parsed.options.cloudProfileId !== undefined ||\n parsed.options.cloudProfileReuseIfActive === true)\n ) {\n throw new Error(\"Cloud profile options require cloud mode.\");\n }\n\n if (operation === \"session.close\") {\n if (mode === \"cloud\") {\n const runtime = createOpensteerSemanticRuntime({\n mode,\n ...(cloudOptions === undefined ? {} : { cloud: cloudOptions }),\n engine: parsed.options.engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n const result = await runtime.close();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n engineName: parsed.options.engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n await manager.close();\n process.stdout.write(`${JSON.stringify({ closed: true }, null, 2)}\\n`);\n return;\n }\n\n const runtime = createOpensteerSemanticRuntime({\n mode,\n ...(cloudOptions === undefined ? {} : { cloud: cloudOptions }),\n engine: parsed.options.engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n let result: unknown;\n try {\n result = await dispatchSemanticOperation(\n runtime,\n operation,\n buildOperationInput(\n operation,\n parsed.command[0] === \"run\" ? { ...parsed, rest: parsed.rest.slice(1) } : parsed,\n ),\n );\n } finally {\n await runtime.disconnect().catch(() => undefined);\n }\n\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nasync function handleBrowserCommand(parsed: ParsedCommandLine): Promise<void> {\n const subcommand = parsed.command[1];\n if (subcommand === \"discover\") {\n const result = await discoverLocalCdpBrowsers({\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (subcommand === \"inspect\") {\n const endpoint = parsed.options.attachEndpoint ?? parsed.rest[0];\n if (!endpoint) {\n throw new Error(\n 'browser inspect requires \"--attach-endpoint <url>\" or a positional endpoint.',\n );\n }\n const result = await inspectCdpEndpoint({\n endpoint,\n ...(parsed.options.attachHeaders === undefined\n ? {}\n : { headers: parsed.options.attachHeaders }),\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Browser workspace commands require \"--workspace <id>\".');\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n ...(parsed.options.engineName === undefined ? {} : { engineName: parsed.options.engineName }),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n switch (subcommand) {\n case \"status\": {\n const result = await manager.status();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"clone\": {\n const sourceUserDataDir = parsed.options.sourceUserDataDir;\n if (!sourceUserDataDir) {\n throw new Error('browser clone requires \"--source-user-data-dir <path>\".');\n }\n const result = await manager.clonePersistentBrowser({\n sourceUserDataDir,\n ...(parsed.options.sourceProfileDirectory === undefined\n ? {}\n : { sourceProfileDirectory: parsed.options.sourceProfileDirectory }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"reset\": {\n await manager.reset();\n process.stdout.write(`${JSON.stringify({ reset: true }, null, 2)}\\n`);\n return;\n }\n case \"delete\": {\n await manager.delete();\n process.stdout.write(`${JSON.stringify({ deleted: true }, null, 2)}\\n`);\n return;\n }\n default:\n throw new Error(`Unknown browser command: ${parsed.command.join(\" \")}`);\n }\n}\n\nfunction buildOperationInput(\n operation: OpensteerSemanticOperationName,\n parsed: ParsedCommandLine,\n): Record<string, unknown> {\n if (parsed.options.inputJson !== undefined) {\n return parsed.options.inputJson;\n }\n\n switch (operation) {\n case \"session.open\":\n return {\n ...(parsed.rest[0] === undefined ? {} : { url: parsed.rest[0] }),\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n };\n case \"page.goto\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"goto requires a URL.\");\n }\n return {\n url: parsed.rest[0],\n };\n case \"page.snapshot\":\n return parsed.rest[0] === undefined ? {} : { mode: parsed.rest[0] };\n case \"dom.click\":\n case \"dom.hover\":\n return normalizeTargetInput(parsed, {});\n case \"dom.input\":\n if (parsed.options.text === undefined) {\n throw new Error('input requires \"--text <value>\".');\n }\n return {\n ...normalizeTargetInput(parsed, {}),\n text: parsed.options.text,\n ...(parsed.options.pressEnter === undefined\n ? {}\n : { pressEnter: parsed.options.pressEnter }),\n };\n case \"dom.scroll\":\n if (parsed.options.direction === undefined || parsed.options.amount === undefined) {\n throw new Error('scroll requires \"--direction\" and \"--amount\".');\n }\n return {\n ...normalizeTargetInput(parsed, {}),\n direction: parsed.options.direction,\n amount: parsed.options.amount,\n };\n case \"dom.extract\":\n if (parsed.options.description === undefined) {\n throw new Error('extract requires \"--description <text>\".');\n }\n return {\n description: parsed.options.description,\n ...(parsed.options.schemaJson === undefined ? {} : { schema: parsed.options.schemaJson }),\n };\n case \"session.close\":\n return {};\n default:\n return {};\n }\n}\n\nfunction normalizeTargetInput(\n parsed: ParsedCommandLine,\n input: Record<string, unknown>,\n): Record<string, unknown> {\n const hasElement = parsed.options.element !== undefined;\n const hasSelector = parsed.options.selector !== undefined;\n const hasDescription = parsed.options.description !== undefined;\n const selected = Number(hasElement) + Number(hasSelector) + Number(hasDescription);\n if (selected !== 1) {\n throw new Error('Specify exactly one of \"--element\", \"--selector\", or \"--description\".');\n }\n\n return {\n ...input,\n target: hasElement\n ? { kind: \"element\", element: parsed.options.element! }\n : hasSelector\n ? { kind: \"selector\", selector: parsed.options.selector! }\n : { kind: \"description\", description: parsed.options.description! },\n };\n}\n\nfunction resolveOperation(command: readonly string[]): OpensteerSemanticOperationName | undefined {\n for (let length = Math.min(3, command.length); length >= 1; length -= 1) {\n const key = command.slice(0, length).join(\" \");\n const operation = OPERATION_ALIASES.get(key);\n if (operation) {\n return operation;\n }\n }\n return undefined;\n}\n\ninterface ParsedCliOptions {\n readonly workspace?: string;\n readonly engineName: OpensteerEngineName;\n readonly local?: boolean;\n readonly cloud?: boolean;\n readonly cloudProfileId?: string;\n readonly cloudProfileReuseIfActive?: boolean;\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 readonly browser?: OpensteerBrowserOptions;\n readonly launch?: {\n readonly headless?: boolean;\n readonly executablePath?: string;\n readonly args?: readonly string[];\n readonly timeoutMs?: number;\n };\n readonly context?: Record<string, unknown>;\n readonly inputJson?: Record<string, unknown>;\n readonly schemaJson?: Record<string, unknown>;\n readonly attachEndpoint?: string;\n readonly attachHeaders?: Readonly<Record<string, string>>;\n readonly sourceUserDataDir?: string;\n readonly sourceProfileDirectory?: string;\n readonly selector?: string;\n readonly description?: string;\n readonly element?: number;\n readonly text?: string;\n readonly pressEnter?: boolean;\n readonly direction?: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount?: number;\n}\n\ninterface ParsedCommandLine {\n readonly command: readonly string[];\n readonly rest: readonly string[];\n readonly options: ParsedCliOptions;\n readonly help: boolean;\n}\n\nfunction parseCommandLine(argv: readonly string[]): ParsedCommandLine {\n const leadingTokens: string[] = [];\n let index = 0;\n while (index < argv.length && !argv[index]!.startsWith(\"--\")) {\n leadingTokens.push(argv[index]!);\n index += 1;\n }\n\n const commandLength = resolveCommandLength(leadingTokens);\n const commandTokens = leadingTokens.slice(0, commandLength);\n const rest: string[] = leadingTokens.slice(commandLength);\n\n const rawOptions = new Map<string, string[]>();\n let help = false;\n\n while (index < argv.length) {\n const token = argv[index]!;\n if (token === \"--help\" || token === \"-h\") {\n help = true;\n index += 1;\n continue;\n }\n if (!token.startsWith(\"--\")) {\n rest.push(token);\n index += 1;\n continue;\n }\n\n const key = token.slice(2);\n const next = argv[index + 1];\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n }\n\n const browserKind = readSingle(rawOptions, \"browser\");\n const requestedEngine = readSingle(rawOptions, \"engine\");\n const engineName = resolveOpensteerEngineName({\n ...(requestedEngine === undefined ? {} : { requested: requestedEngine }),\n ...(process.env.OPENSTEER_ENGINE === undefined\n ? {}\n : { environment: process.env.OPENSTEER_ENGINE }),\n });\n const attachEndpoint = readSingle(rawOptions, \"attach-endpoint\");\n const attachHeaders = parseKeyValueList(rawOptions.get(\"attach-header\"));\n const freshTab = readOptionalBoolean(rawOptions, \"fresh-tab\");\n const headless = readOptionalBoolean(rawOptions, \"headless\");\n const executablePath = readSingle(rawOptions, \"executable-path\");\n const launchArgs = rawOptions.get(\"arg\");\n const timeoutMs = readOptionalNumber(rawOptions, \"timeout-ms\");\n const browser =\n browserKind === undefined\n ? attachEndpoint === undefined\n ? undefined\n : ({\n mode: \"attach\",\n endpoint: attachEndpoint,\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions)\n : browserKind === \"temporary\" || browserKind === \"persistent\"\n ? browserKind\n : ({\n mode: \"attach\",\n ...(attachEndpoint === undefined ? {} : { endpoint: attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions);\n\n const launch = {\n ...(headless === undefined ? {} : { headless }),\n ...(executablePath === undefined ? {} : { executablePath }),\n ...(launchArgs === undefined ? {} : { args: launchArgs }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n };\n\n const workspace = readSingle(rawOptions, \"workspace\");\n const sourceUserDataDir = readSingle(rawOptions, \"source-user-data-dir\");\n const sourceProfileDirectory = readSingle(rawOptions, \"source-profile-directory\");\n const selector = readSingle(rawOptions, \"selector\");\n const description = readSingle(rawOptions, \"description\");\n const element = readOptionalNumber(rawOptions, \"element\");\n const text = readSingle(rawOptions, \"text\");\n const pressEnter = readOptionalBoolean(rawOptions, \"press-enter\");\n const direction = readSingle(rawOptions, \"direction\") as\n | ParsedCliOptions[\"direction\"]\n | undefined;\n const amount = readOptionalNumber(rawOptions, \"amount\");\n const contextJson = readJsonObject(rawOptions, \"context-json\");\n const inputJson = readJsonObject(rawOptions, \"input-json\");\n const schemaJson = readJsonObject(rawOptions, \"schema-json\");\n const local = readOptionalBoolean(rawOptions, \"local\");\n const cloud = readOptionalBoolean(rawOptions, \"cloud\");\n const cloudProfileId = readSingle(rawOptions, \"cloud-profile-id\");\n const cloudProfileReuseIfActive = readOptionalBoolean(rawOptions, \"cloud-profile-reuse-if-active\");\n const agents = rawOptions.get(\"agent\");\n const skills = rawOptions.get(\"skill\");\n const global = readOptionalBoolean(rawOptions, \"global\");\n const yes = readOptionalBoolean(rawOptions, \"yes\");\n const copy = readOptionalBoolean(rawOptions, \"copy\");\n const all = readOptionalBoolean(rawOptions, \"all\");\n const list = readOptionalBoolean(rawOptions, \"list\");\n\n const options: ParsedCliOptions = {\n ...(workspace === undefined ? {} : { workspace }),\n engineName,\n ...(local === undefined ? {} : { local }),\n ...(cloud === undefined ? {} : { cloud }),\n ...(cloudProfileId === undefined ? {} : { cloudProfileId }),\n ...(cloudProfileReuseIfActive === undefined ? {} : { cloudProfileReuseIfActive }),\n ...(agents === undefined ? {} : { agents }),\n ...(skills === undefined ? {} : { skills }),\n ...(global === undefined ? {} : { global }),\n ...(yes === undefined ? {} : { yes }),\n ...(copy === undefined ? {} : { copy }),\n ...(all === undefined ? {} : { all }),\n ...(list === undefined ? {} : { list }),\n ...(browser === undefined ? {} : { browser }),\n ...(Object.keys(launch).length === 0 ? {} : { launch }),\n ...(contextJson === undefined ? {} : { context: contextJson }),\n ...(inputJson === undefined ? {} : { inputJson }),\n ...(schemaJson === undefined ? {} : { schemaJson }),\n ...(attachEndpoint === undefined ? {} : { attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { attachHeaders }),\n ...(sourceUserDataDir === undefined ? {} : { sourceUserDataDir }),\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n ...(selector === undefined ? {} : { selector }),\n ...(description === undefined ? {} : { description }),\n ...(element === undefined ? {} : { element }),\n ...(text === undefined ? {} : { text }),\n ...(pressEnter === undefined ? {} : { pressEnter }),\n ...(direction === undefined ? {} : { direction }),\n ...(amount === undefined ? {} : { amount }),\n };\n\n return {\n command: commandTokens,\n rest,\n options,\n help,\n };\n}\n\nasync function resolveCliExecutionMode(\n parsed: ParsedCommandLine,\n): Promise<OpensteerExecutionMode> {\n const environmentMode = process.env.OPENSTEER_MODE;\n if (\n parsed.options.local === undefined &&\n parsed.options.cloud === undefined &&\n (environmentMode === undefined || environmentMode.trim().length === 0) &&\n parsed.options.workspace !== undefined\n ) {\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n });\n if (await hasPersistedCloudSession(rootPath)) {\n return \"cloud\";\n }\n }\n\n return resolveOpensteerExecutionMode({\n ...(parsed.options.local === undefined ? {} : { local: parsed.options.local }),\n ...(parsed.options.cloud === undefined ? {} : { cloud: parsed.options.cloud }),\n ...(environmentMode === undefined ? {} : { environment: environmentMode }),\n });\n}\n\nfunction buildCliCloudOptions(\n parsed: ParsedCommandLine,\n): boolean | OpensteerCloudOptions | undefined {\n if (\n parsed.options.cloudProfileReuseIfActive === true &&\n parsed.options.cloudProfileId === undefined\n ) {\n throw new Error(\n '\"--cloud-profile-reuse-if-active\" requires \"--cloud-profile-id <id>\".',\n );\n }\n\n const browserProfile =\n parsed.options.cloudProfileId === undefined\n ? undefined\n : {\n profileId: parsed.options.cloudProfileId,\n ...(parsed.options.cloudProfileReuseIfActive === true\n ? { reuseIfActive: true }\n : {}),\n };\n\n if (browserProfile !== undefined) {\n return { browserProfile };\n }\n\n if (parsed.options.cloud === true) {\n return true;\n }\n\n return undefined;\n}\n\nfunction parseKeyValueList(\n values: readonly string[] | undefined,\n): Readonly<Record<string, string>> | undefined {\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n values.map((entry) => {\n const separator = entry.indexOf(\"=\");\n if (separator <= 0) {\n throw new Error(`Expected NAME=VALUE, received \"${entry}\".`);\n }\n return [entry.slice(0, separator), entry.slice(separator + 1)];\n }),\n );\n}\n\nfunction readSingle(options: Map<string, string[]>, name: string): string | undefined {\n const values = options.get(name);\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[values.length - 1];\n}\n\nfunction readOptionalBoolean(options: Map<string, string[]>, name: string): boolean | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n throw new Error(`Option \"--${name}\" must be true or false.`);\n}\n\nfunction readOptionalNumber(options: Map<string, string[]>, name: string): number | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Option \"--${name}\" must be a number.`);\n }\n return parsed;\n}\n\nfunction readJsonObject(\n options: Map<string, string[]>,\n name: string,\n): Record<string, unknown> | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = JSON.parse(value) as unknown;\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 resolveCommandLength(tokens: readonly string[]): number {\n if (tokens.length === 0) {\n return 0;\n }\n if (tokens[0] === \"browser\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"skills\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"run\") {\n return 1;\n }\n for (let length = Math.min(3, tokens.length); length >= 1; length -= 1) {\n if (OPERATION_ALIASES.has(tokens.slice(0, length).join(\" \"))) {\n return length;\n }\n }\n return Math.min(tokens.length, 1);\n}\n\nfunction printHelp(): void {\n process.stdout.write(`Opensteer v2 CLI\n\nUsage:\n opensteer open <url> --workspace <id> [--browser persistent|temporary|attach]\n opensteer goto <url> --workspace <id>\n opensteer snapshot [action|extraction] --workspace <id>\n opensteer click --workspace <id> (--element <n> | --selector <css> | --description <text>)\n opensteer input --workspace <id> --text <value> (--element <n> | --selector <css> | --description <text>)\n opensteer extract --workspace <id> --description <text> [--schema-json <json>]\n opensteer close --workspace <id>\n\n opensteer browser status --workspace <id>\n opensteer browser clone --workspace <id> --source-user-data-dir <path> [--source-profile-directory <name>]\n opensteer browser reset --workspace <id>\n opensteer browser delete --workspace <id>\n opensteer browser discover\n opensteer browser inspect --attach-endpoint <url>\n opensteer skills install [--skill <name>] [--agent <name>] [--global] [--yes]\n\n opensteer run <semantic-operation> --workspace <id> --input-json <json>\n\nCommon options:\n --workspace <id>\n --local\n --cloud\n --cloud-profile-id <id>\n --cloud-profile-reuse-if-active <true|false>\n --engine playwright|abp\n --browser temporary|persistent|attach\n --attach-endpoint <url>\n --fresh-tab <true|false>\n --headless <true|false>\n --executable-path <path>\n --arg <value> repeatable\n --timeout-ms <ms>\n --context-json <json>\n --input-json <json>\n --skill <name> repeatable\n --agent <name> repeatable\n`);\n}\n\nmain().catch((error) => {\n const payload =\n error instanceof Error\n ? {\n error: {\n name: error.name,\n message: error.message,\n },\n }\n : {\n error: {\n name: \"Error\",\n message: String(error),\n },\n };\n process.stderr.write(`${JSON.stringify(payload)}\\n`);\n process.exitCode = 1;\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/env-loader.ts","../../src/cli/skills-installer.ts","../../src/cli/status.ts","../../src/cli/bin.ts"],"names":["path","require","process","runtime","result"],"mappings":"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","file":"bin.js","sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { pathExists } from \"../internal/filesystem.js\";\n\nconst ENV_FILENAMES = [\".env\", \".env.local\"] as const;\n\nexport async function loadCliEnvironment(cwd: string): Promise<void> {\n const protectedKeys = new Set(Object.keys(process.env));\n const directories = collectDirectories(cwd);\n\n for (const directory of directories) {\n for (const filename of ENV_FILENAMES) {\n const filePath = path.join(directory, filename);\n if (!(await pathExists(filePath))) {\n continue;\n }\n const parsed = parseEnvFile(await readFile(filePath, \"utf8\"));\n for (const [key, value] of Object.entries(parsed)) {\n if (protectedKeys.has(key)) {\n continue;\n }\n process.env[key] = value;\n }\n }\n }\n}\n\nfunction collectDirectories(cwd: string): string[] {\n const directories: string[] = [];\n let current = path.resolve(cwd);\n for (;;) {\n directories.unshift(current);\n const parent = path.dirname(current);\n if (parent === current) {\n return directories;\n }\n current = parent;\n }\n}\n\nfunction parseEnvFile(contents: string): Record<string, string> {\n const parsed: Record<string, string> = {};\n\n for (const rawLine of contents.split(/\\r?\\n/u)) {\n const trimmed = rawLine.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) {\n continue;\n }\n\n const line = trimmed.startsWith(\"export \") ? trimmed.slice(\"export \".length) : trimmed;\n const separatorIndex = line.indexOf(\"=\");\n if (separatorIndex <= 0) {\n continue;\n }\n\n const key = line.slice(0, separatorIndex).trim();\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(key)) {\n continue;\n }\n\n const rawValue = line.slice(separatorIndex + 1).trim();\n parsed[key] = parseEnvValue(rawValue);\n }\n\n return parsed;\n}\n\nfunction parseEnvValue(rawValue: string): string {\n if (rawValue.length >= 2 && rawValue.startsWith('\"') && rawValue.endsWith('\"')) {\n return rawValue\n .slice(1, -1)\n .replace(/\\\\n/g, \"\\n\")\n .replace(/\\\\r/g, \"\\r\")\n .replace(/\\\\t/g, \"\\t\")\n .replace(/\\\\\"/g, '\"');\n }\n\n if (rawValue.length >= 2 && rawValue.startsWith(\"'\") && rawValue.endsWith(\"'\")) {\n return rawValue.slice(1, -1);\n }\n\n return rawValue.replace(/\\s+#.*$/u, \"\").trimEnd();\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 path from \"node:path\";\n\nimport type { OpensteerCloudConfig } from \"../cloud/config.js\";\nimport { OpensteerCloudClient } from \"../cloud/client.js\";\nimport {\n readPersistedCloudSessionRecord,\n readPersistedLocalBrowserSessionRecord,\n type PersistedCloudSessionRecord,\n type PersistedLocalBrowserSessionRecord,\n} from \"../live-session.js\";\nimport { resolveFilesystemWorkspacePath } from \"../root.js\";\nimport { pathExists } from \"../internal/filesystem.js\";\nimport { isProcessRunning } from \"../local-browser/process-owner.js\";\nimport type { OpensteerResolvedProvider } from \"../provider/config.js\";\n\nexport interface OpensteerStatusLaneSummary {\n readonly provider: \"local\" | \"cloud\";\n readonly status: \"idle\" | \"active\" | \"connected\" | \"stale\" | \"closed\";\n readonly current: boolean;\n readonly summary?: string;\n readonly detail?: string;\n readonly sessionId?: string;\n readonly baseUrl?: string;\n readonly pid?: number;\n readonly engine?: string;\n readonly browser?: string;\n readonly region?: string;\n}\n\nexport interface OpensteerStatusOutput {\n readonly provider: {\n readonly current: OpensteerResolvedProvider[\"kind\"];\n readonly source: \"flag\" | \"env\" | \"default\";\n readonly cloudBaseUrl?: string;\n };\n readonly workspace?: string;\n readonly rootPath?: string;\n readonly lanes?: {\n readonly local: OpensteerStatusLaneSummary;\n readonly cloud: OpensteerStatusLaneSummary;\n };\n}\n\nexport async function collectOpensteerStatus(input: {\n readonly rootDir: string;\n readonly workspace?: string;\n readonly provider: OpensteerResolvedProvider;\n readonly cloudConfig?: OpensteerCloudConfig;\n}): Promise<OpensteerStatusOutput> {\n const output: OpensteerStatusOutput = {\n provider: {\n current: input.provider.kind,\n source: mapProviderSource(input.provider.source),\n ...(input.cloudConfig === undefined ? {} : { cloudBaseUrl: input.cloudConfig.baseUrl }),\n },\n ...(input.workspace === undefined ? {} : { workspace: input.workspace }),\n };\n\n if (input.workspace === undefined) {\n return output;\n }\n\n const rootPath = resolveFilesystemWorkspacePath({\n rootDir: input.rootDir,\n workspace: input.workspace,\n });\n const localRecord = await readWorkspaceLocalRecord(rootPath);\n const cloudRecord = await readWorkspaceCloudRecord(rootPath);\n\n return {\n ...output,\n rootPath,\n lanes: {\n local: describeLocalLane(localRecord, input.provider.kind === \"local\"),\n cloud: await describeCloudLane({\n record: cloudRecord,\n current: input.provider.kind === \"cloud\",\n cloudConfig: input.cloudConfig,\n }),\n },\n };\n}\n\nexport function renderOpensteerStatus(status: OpensteerStatusOutput): string {\n const lines: string[] = [\n \"Provider resolution\",\n ` current: ${status.provider.current}`,\n ` source: ${status.provider.source}`,\n ];\n\n if (status.provider.cloudBaseUrl !== undefined) {\n lines.push(` control api: ${status.provider.cloudBaseUrl}`);\n }\n if (status.workspace !== undefined) {\n lines.push(` workspace: ${status.workspace}`);\n }\n\n if (status.lanes === undefined) {\n return `${lines.join(\"\\n\")}\\n`;\n }\n\n lines.push(\"\", \"Live sessions\");\n for (const lane of [status.lanes.local, status.lanes.cloud]) {\n lines.push(\n formatLaneRow({\n marker: lane.current ? \"*\" : \" \",\n provider: lane.provider,\n status: lane.status,\n summary: lane.summary ?? \"none\",\n detail: lane.detail,\n }),\n );\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nasync function readWorkspaceLocalRecord(\n rootPath: string,\n): Promise<PersistedLocalBrowserSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedLocalBrowserSessionRecord(rootPath);\n}\n\nasync function readWorkspaceCloudRecord(\n rootPath: string,\n): Promise<PersistedCloudSessionRecord | undefined> {\n if (!(await pathExists(rootPath))) {\n return undefined;\n }\n return readPersistedCloudSessionRecord(rootPath);\n}\n\nfunction describeLocalLane(\n record: PersistedLocalBrowserSessionRecord | undefined,\n current: boolean,\n): OpensteerStatusLaneSummary {\n if (record === undefined || !isProcessRunning(record.pid)) {\n return {\n provider: \"local\",\n status: \"idle\",\n current,\n summary: \"none\",\n };\n }\n\n const browser = record.executablePath\n ? path.basename(record.executablePath).replace(/\\.[A-Za-z0-9]+$/u, \"\")\n : undefined;\n return {\n provider: \"local\",\n status: \"active\",\n current,\n summary: `PID ${String(record.pid)}`,\n detail: browser ?? record.engine,\n pid: record.pid,\n engine: record.engine,\n ...(browser === undefined ? {} : { browser }),\n };\n}\n\nasync function describeCloudLane(input: {\n readonly record: PersistedCloudSessionRecord | undefined;\n readonly current: boolean;\n readonly cloudConfig: OpensteerCloudConfig | undefined;\n}): Promise<OpensteerStatusLaneSummary> {\n if (input.record === undefined) {\n return {\n provider: \"cloud\",\n status: \"idle\",\n current: input.current,\n summary: \"none\",\n };\n }\n\n const base: OpensteerStatusLaneSummary = {\n provider: \"cloud\",\n status: \"connected\",\n current: input.current,\n summary: input.record.sessionId,\n detail: input.record.baseUrl,\n sessionId: input.record.sessionId,\n baseUrl: input.record.baseUrl,\n };\n\n if (input.cloudConfig === undefined) {\n return base;\n }\n\n try {\n const client = new OpensteerCloudClient(input.cloudConfig);\n const session = (await client.getSession(input.record.sessionId)) as {\n readonly status?: string;\n readonly region?: string;\n readonly runtimeRegion?: string;\n };\n if (session.status === \"closed\") {\n return {\n ...base,\n status: \"closed\",\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n }\n if (session.status === \"failed\") {\n return {\n ...base,\n status: \"stale\",\n };\n }\n return {\n ...base,\n ...((session.region ?? session.runtimeRegion)\n ? { region: session.region ?? session.runtimeRegion }\n : {}),\n };\n } catch {\n return {\n ...base,\n status: \"stale\",\n };\n }\n}\n\nfunction mapProviderSource(\n source: OpensteerResolvedProvider[\"source\"],\n): \"flag\" | \"env\" | \"default\" {\n if (source === \"explicit\") {\n return \"flag\";\n }\n return source;\n}\n\nfunction formatLaneRow(input: {\n readonly marker: string;\n readonly provider: string;\n readonly status: string;\n readonly summary: string;\n readonly detail: string | undefined;\n}): string {\n const provider = input.provider.padEnd(7, \" \");\n const status = input.status.padEnd(9, \" \");\n const summary = input.summary.padEnd(16, \" \");\n return `${input.marker} ${provider} ${status} ${summary}${input.detail ?? \"\"}`.trimEnd();\n}\n","#!/usr/bin/env node\n\nimport process from \"node:process\";\n\nimport type { OpensteerBrowserOptions, OpensteerSemanticOperationName } from \"@opensteer/protocol\";\n\nimport { OpensteerBrowserManager } from \"../browser-manager.js\";\nimport { dispatchSemanticOperation } from \"./dispatch.js\";\nimport { loadCliEnvironment } from \"./env-loader.js\";\nimport { discoverLocalCdpBrowsers, inspectCdpEndpoint } from \"../local-browser/cdp-discovery.js\";\nimport {\n resolveOpensteerEngineName,\n type OpensteerEngineName,\n} from \"../internal/engine-selection.js\";\nimport { runOpensteerSkillsInstaller } from \"./skills-installer.js\";\nimport {\n assertProviderSupportsEngine,\n normalizeOpensteerProviderKind,\n resolveOpensteerProvider,\n type OpensteerProviderKind,\n type OpensteerProviderOptions,\n type OpensteerResolvedProvider,\n} from \"../provider/config.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n} from \"../sdk/runtime-resolution.js\";\nimport { collectOpensteerStatus, renderOpensteerStatus } from \"./status.js\";\n\nconst OPERATION_ALIASES = new Map<string, OpensteerSemanticOperationName>([\n [\"open\", \"session.open\"],\n [\"goto\", \"page.goto\"],\n [\"snapshot\", \"page.snapshot\"],\n [\"click\", \"dom.click\"],\n [\"hover\", \"dom.hover\"],\n [\"input\", \"dom.input\"],\n [\"scroll\", \"dom.scroll\"],\n [\"extract\", \"dom.extract\"],\n [\"network query\", \"network.query\"],\n [\"network save\", \"network.save\"],\n [\"network clear\", \"network.clear\"],\n [\"network minimize\", \"network.minimize\"],\n [\"network diff\", \"network.diff\"],\n [\"network probe\", \"network.probe\"],\n [\"reverse discover\", \"reverse.discover\"],\n [\"reverse query\", \"reverse.query\"],\n [\"reverse package create\", \"reverse.package.create\"],\n [\"reverse package run\", \"reverse.package.run\"],\n [\"reverse export\", \"reverse.export\"],\n [\"reverse report\", \"reverse.report\"],\n [\"reverse package get\", \"reverse.package.get\"],\n [\"reverse package list\", \"reverse.package.list\"],\n [\"reverse package patch\", \"reverse.package.patch\"],\n [\"interaction capture\", \"interaction.capture\"],\n [\"interaction get\", \"interaction.get\"],\n [\"interaction diff\", \"interaction.diff\"],\n [\"interaction replay\", \"interaction.replay\"],\n [\"artifact read\", \"artifact.read\"],\n [\"scripts capture\", \"scripts.capture\"],\n [\"scripts beautify\", \"scripts.beautify\"],\n [\"scripts deobfuscate\", \"scripts.deobfuscate\"],\n [\"scripts sandbox\", \"scripts.sandbox\"],\n [\"captcha solve\", \"captcha.solve\"],\n [\"inspect cookies\", \"inspect.cookies\"],\n [\"inspect storage\", \"inspect.storage\"],\n [\"request raw\", \"request.raw\"],\n [\"request-plan infer\", \"request-plan.infer\"],\n [\"request-plan write\", \"request-plan.write\"],\n [\"request-plan get\", \"request-plan.get\"],\n [\"request-plan list\", \"request-plan.list\"],\n [\"recipe write\", \"recipe.write\"],\n [\"recipe get\", \"recipe.get\"],\n [\"recipe list\", \"recipe.list\"],\n [\"recipe run\", \"recipe.run\"],\n [\"auth-recipe write\", \"auth-recipe.write\"],\n [\"auth-recipe get\", \"auth-recipe.get\"],\n [\"auth-recipe list\", \"auth-recipe.list\"],\n [\"auth-recipe run\", \"auth-recipe.run\"],\n [\"request execute\", \"request.execute\"],\n [\"computer execute\", \"computer.execute\"],\n [\"close\", \"session.close\"],\n]);\n\nasync function main(): Promise<void> {\n await loadCliEnvironment(process.cwd());\n const parsed = parseCommandLine(process.argv.slice(2));\n if (parsed.help || parsed.command.length === 0) {\n printHelp();\n return;\n }\n\n if (parsed.command[0] === \"browser\") {\n await handleBrowserCommand(parsed);\n return;\n }\n\n if (parsed.command[0] === \"skills\" && parsed.command[1] === \"install\") {\n const exitCode = await runOpensteerSkillsInstaller({\n ...(parsed.options.agents === undefined ? {} : { agents: parsed.options.agents }),\n ...(parsed.options.skills === undefined ? {} : { skills: parsed.options.skills }),\n global: parsed.options.global === true,\n yes: parsed.options.yes === true,\n copy: parsed.options.copy === true,\n all: parsed.options.all === true,\n list: parsed.options.list === true,\n });\n if (exitCode !== 0) {\n process.exitCode = exitCode;\n }\n return;\n }\n\n if (parsed.command[0] === \"status\") {\n await handleStatusCommand(parsed);\n return;\n }\n\n const operation =\n parsed.command[0] === \"run\"\n ? (parsed.rest[0] as OpensteerSemanticOperationName | undefined)\n : resolveOperation(parsed.command);\n if (!operation) {\n throw new Error(`Unknown command: ${parsed.command.join(\" \")}`);\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Stateful commands require \"--workspace <id>\".');\n }\n\n const provider = resolveCliProvider(parsed);\n assertProviderSupportsEngine(provider.kind, parsed.options.engineName);\n assertCloudCliOptionsMatchProvider(parsed, provider.kind);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.kind);\n\n if (operation === \"session.close\") {\n if (provider.kind === \"cloud\") {\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: parsed.options.engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n const result = await runtime.close();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n engineName: parsed.options.engineName,\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n await manager.close();\n process.stdout.write(`${JSON.stringify({ closed: true }, null, 2)}\\n`);\n return;\n }\n\n const runtime = createOpensteerSemanticRuntime({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n engine: parsed.options.engineName,\n runtimeOptions: {\n workspace: parsed.options.workspace,\n rootDir: process.cwd(),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n },\n });\n\n let result: unknown;\n try {\n result = await dispatchSemanticOperation(\n runtime,\n operation,\n buildOperationInput(\n operation,\n parsed.command[0] === \"run\" ? { ...parsed, rest: parsed.rest.slice(1) } : parsed,\n ),\n );\n } finally {\n await runtime.disconnect().catch(() => undefined);\n }\n\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nasync function handleBrowserCommand(parsed: ParsedCommandLine): Promise<void> {\n const subcommand = parsed.command[1];\n if (subcommand === \"discover\") {\n const result = await discoverLocalCdpBrowsers({\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (subcommand === \"inspect\") {\n const endpoint = parsed.options.attachEndpoint ?? parsed.rest[0];\n if (!endpoint) {\n throw new Error(\n 'browser inspect requires \"--attach-endpoint <url>\" or a positional endpoint.',\n );\n }\n const result = await inspectCdpEndpoint({\n endpoint,\n ...(parsed.options.attachHeaders === undefined\n ? {}\n : { headers: parsed.options.attachHeaders }),\n ...(parsed.options.launch?.timeoutMs === undefined\n ? {}\n : { timeoutMs: parsed.options.launch.timeoutMs }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n\n if (parsed.options.workspace === undefined) {\n throw new Error('Browser workspace commands require \"--workspace <id>\".');\n }\n\n const manager = new OpensteerBrowserManager({\n rootDir: process.cwd(),\n workspace: parsed.options.workspace,\n ...(parsed.options.engineName === undefined ? {} : { engineName: parsed.options.engineName }),\n browser: \"persistent\",\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n });\n\n switch (subcommand) {\n case \"status\": {\n const result = await manager.status();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"clone\": {\n const sourceUserDataDir = parsed.options.sourceUserDataDir;\n if (!sourceUserDataDir) {\n throw new Error('browser clone requires \"--source-user-data-dir <path>\".');\n }\n const result = await manager.clonePersistentBrowser({\n sourceUserDataDir,\n ...(parsed.options.sourceProfileDirectory === undefined\n ? {}\n : { sourceProfileDirectory: parsed.options.sourceProfileDirectory }),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n case \"reset\": {\n await manager.reset();\n process.stdout.write(`${JSON.stringify({ reset: true }, null, 2)}\\n`);\n return;\n }\n case \"delete\": {\n await manager.delete();\n process.stdout.write(`${JSON.stringify({ deleted: true }, null, 2)}\\n`);\n return;\n }\n default:\n throw new Error(`Unknown browser command: ${parsed.command.join(\" \")}`);\n }\n}\n\nfunction buildOperationInput(\n operation: OpensteerSemanticOperationName,\n parsed: ParsedCommandLine,\n): Record<string, unknown> {\n if (parsed.options.inputJson !== undefined) {\n return parsed.options.inputJson;\n }\n\n switch (operation) {\n case \"session.open\":\n return {\n ...(parsed.rest[0] === undefined ? {} : { url: parsed.rest[0] }),\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n ...(parsed.options.browser === undefined ? {} : { browser: parsed.options.browser }),\n ...(parsed.options.launch === undefined ? {} : { launch: parsed.options.launch }),\n ...(parsed.options.context === undefined ? {} : { context: parsed.options.context }),\n };\n case \"page.goto\":\n if (parsed.rest[0] === undefined) {\n throw new Error(\"goto requires a URL.\");\n }\n return {\n url: parsed.rest[0],\n };\n case \"page.snapshot\":\n return parsed.rest[0] === undefined ? {} : { mode: parsed.rest[0] };\n case \"dom.click\":\n case \"dom.hover\":\n return normalizeTargetInput(parsed, {});\n case \"dom.input\":\n if (parsed.options.text === undefined) {\n throw new Error('input requires \"--text <value>\".');\n }\n return {\n ...normalizeTargetInput(parsed, {}),\n text: parsed.options.text,\n ...(parsed.options.pressEnter === undefined\n ? {}\n : { pressEnter: parsed.options.pressEnter }),\n };\n case \"dom.scroll\":\n if (parsed.options.direction === undefined || parsed.options.amount === undefined) {\n throw new Error('scroll requires \"--direction\" and \"--amount\".');\n }\n return {\n ...normalizeTargetInput(parsed, {}),\n direction: parsed.options.direction,\n amount: parsed.options.amount,\n };\n case \"dom.extract\":\n if (parsed.options.description === undefined) {\n throw new Error('extract requires \"--description <text>\".');\n }\n return {\n description: parsed.options.description,\n ...(parsed.options.schemaJson === undefined ? {} : { schema: parsed.options.schemaJson }),\n };\n case \"session.close\":\n return {};\n default:\n return {};\n }\n}\n\nfunction normalizeTargetInput(\n parsed: ParsedCommandLine,\n input: Record<string, unknown>,\n): Record<string, unknown> {\n const hasElement = parsed.options.element !== undefined;\n const hasSelector = parsed.options.selector !== undefined;\n const hasDescription = parsed.options.description !== undefined;\n const selected = Number(hasElement) + Number(hasSelector) + Number(hasDescription);\n if (selected !== 1) {\n throw new Error('Specify exactly one of \"--element\", \"--selector\", or \"--description\".');\n }\n\n return {\n ...input,\n target: hasElement\n ? { kind: \"element\", element: parsed.options.element! }\n : hasSelector\n ? { kind: \"selector\", selector: parsed.options.selector! }\n : { kind: \"description\", description: parsed.options.description! },\n };\n}\n\nfunction resolveOperation(command: readonly string[]): OpensteerSemanticOperationName | undefined {\n for (let length = Math.min(3, command.length); length >= 1; length -= 1) {\n const key = command.slice(0, length).join(\" \");\n const operation = OPERATION_ALIASES.get(key);\n if (operation) {\n return operation;\n }\n }\n return undefined;\n}\n\ninterface ParsedCliOptions {\n readonly workspace?: string;\n readonly engineName: OpensteerEngineName;\n readonly provider?: OpensteerProviderKind;\n readonly cloudBaseUrl?: string;\n readonly cloudApiKey?: string;\n readonly cloudProfileId?: string;\n readonly cloudProfileReuseIfActive?: boolean;\n readonly json?: boolean;\n readonly agents?: readonly string[];\n readonly skills?: readonly string[];\n readonly global?: boolean;\n readonly yes?: boolean;\n readonly copy?: boolean;\n readonly all?: boolean;\n readonly list?: boolean;\n readonly browser?: OpensteerBrowserOptions;\n readonly launch?: {\n readonly headless?: boolean;\n readonly executablePath?: string;\n readonly args?: readonly string[];\n readonly timeoutMs?: number;\n };\n readonly context?: Record<string, unknown>;\n readonly inputJson?: Record<string, unknown>;\n readonly schemaJson?: Record<string, unknown>;\n readonly attachEndpoint?: string;\n readonly attachHeaders?: Readonly<Record<string, string>>;\n readonly sourceUserDataDir?: string;\n readonly sourceProfileDirectory?: string;\n readonly selector?: string;\n readonly description?: string;\n readonly element?: number;\n readonly text?: string;\n readonly pressEnter?: boolean;\n readonly direction?: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount?: number;\n}\n\ninterface ParsedCommandLine {\n readonly command: readonly string[];\n readonly rest: readonly string[];\n readonly options: ParsedCliOptions;\n readonly help: boolean;\n}\n\nfunction parseCommandLine(argv: readonly string[]): ParsedCommandLine {\n const leadingTokens: string[] = [];\n let index = 0;\n while (index < argv.length && !argv[index]!.startsWith(\"--\")) {\n leadingTokens.push(argv[index]!);\n index += 1;\n }\n\n const commandLength = resolveCommandLength(leadingTokens);\n const commandTokens = leadingTokens.slice(0, commandLength);\n const rest: string[] = leadingTokens.slice(commandLength);\n\n const rawOptions = new Map<string, string[]>();\n let help = false;\n\n while (index < argv.length) {\n const token = argv[index]!;\n if (token === \"--help\" || token === \"-h\") {\n help = true;\n index += 1;\n continue;\n }\n if (!token.startsWith(\"--\")) {\n rest.push(token);\n index += 1;\n continue;\n }\n\n const key = token.slice(2);\n const next = argv[index + 1];\n if (next === undefined || next.startsWith(\"--\")) {\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), \"true\"]);\n index += 1;\n continue;\n }\n\n rawOptions.set(key, [...(rawOptions.get(key) ?? []), next]);\n index += 2;\n }\n\n const browserKind = readSingle(rawOptions, \"browser\");\n const requestedEngine = readSingle(rawOptions, \"engine\");\n const engineName = resolveOpensteerEngineName({\n ...(requestedEngine === undefined ? {} : { requested: requestedEngine }),\n ...(process.env.OPENSTEER_ENGINE === undefined\n ? {}\n : { environment: process.env.OPENSTEER_ENGINE }),\n });\n const attachEndpoint = readSingle(rawOptions, \"attach-endpoint\");\n const attachHeaders = parseKeyValueList(rawOptions.get(\"attach-header\"));\n const freshTab = readOptionalBoolean(rawOptions, \"fresh-tab\");\n const headless = readOptionalBoolean(rawOptions, \"headless\");\n const executablePath = readSingle(rawOptions, \"executable-path\");\n const launchArgs = rawOptions.get(\"arg\");\n const timeoutMs = readOptionalNumber(rawOptions, \"timeout-ms\");\n const browser =\n browserKind === undefined\n ? attachEndpoint === undefined\n ? undefined\n : ({\n mode: \"attach\",\n endpoint: attachEndpoint,\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions)\n : browserKind === \"temporary\" || browserKind === \"persistent\"\n ? browserKind\n : ({\n mode: \"attach\",\n ...(attachEndpoint === undefined ? {} : { endpoint: attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { headers: attachHeaders }),\n ...(freshTab === undefined ? {} : { freshTab }),\n } satisfies OpensteerBrowserOptions);\n\n const launch = {\n ...(headless === undefined ? {} : { headless }),\n ...(executablePath === undefined ? {} : { executablePath }),\n ...(launchArgs === undefined ? {} : { args: launchArgs }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n };\n\n const workspace = readSingle(rawOptions, \"workspace\");\n const sourceUserDataDir = readSingle(rawOptions, \"source-user-data-dir\");\n const sourceProfileDirectory = readSingle(rawOptions, \"source-profile-directory\");\n const selector = readSingle(rawOptions, \"selector\");\n const description = readSingle(rawOptions, \"description\");\n const element = readOptionalNumber(rawOptions, \"element\");\n const text = readSingle(rawOptions, \"text\");\n const pressEnter = readOptionalBoolean(rawOptions, \"press-enter\");\n const direction = readSingle(rawOptions, \"direction\") as\n | ParsedCliOptions[\"direction\"]\n | undefined;\n const amount = readOptionalNumber(rawOptions, \"amount\");\n const contextJson = readJsonObject(rawOptions, \"context-json\");\n const inputJson = readJsonObject(rawOptions, \"input-json\");\n const schemaJson = readJsonObject(rawOptions, \"schema-json\");\n const providerValue = readSingle(rawOptions, \"provider\");\n const provider =\n providerValue === undefined\n ? undefined\n : normalizeOpensteerProviderKind(providerValue, \"--provider\");\n const cloudBaseUrl = readSingle(rawOptions, \"cloud-base-url\");\n const cloudApiKey = readSingle(rawOptions, \"cloud-api-key\");\n const cloudProfileId = readSingle(rawOptions, \"cloud-profile-id\");\n const cloudProfileReuseIfActive = readOptionalBoolean(\n rawOptions,\n \"cloud-profile-reuse-if-active\",\n );\n const json = readOptionalBoolean(rawOptions, \"json\");\n const agents = rawOptions.get(\"agent\");\n const skills = rawOptions.get(\"skill\");\n const global = readOptionalBoolean(rawOptions, \"global\");\n const yes = readOptionalBoolean(rawOptions, \"yes\");\n const copy = readOptionalBoolean(rawOptions, \"copy\");\n const all = readOptionalBoolean(rawOptions, \"all\");\n const list = readOptionalBoolean(rawOptions, \"list\");\n\n const options: ParsedCliOptions = {\n ...(workspace === undefined ? {} : { workspace }),\n engineName,\n ...(provider === undefined ? {} : { provider }),\n ...(cloudBaseUrl === undefined ? {} : { cloudBaseUrl }),\n ...(cloudApiKey === undefined ? {} : { cloudApiKey }),\n ...(cloudProfileId === undefined ? {} : { cloudProfileId }),\n ...(cloudProfileReuseIfActive === undefined ? {} : { cloudProfileReuseIfActive }),\n ...(json === undefined ? {} : { json }),\n ...(agents === undefined ? {} : { agents }),\n ...(skills === undefined ? {} : { skills }),\n ...(global === undefined ? {} : { global }),\n ...(yes === undefined ? {} : { yes }),\n ...(copy === undefined ? {} : { copy }),\n ...(all === undefined ? {} : { all }),\n ...(list === undefined ? {} : { list }),\n ...(browser === undefined ? {} : { browser }),\n ...(Object.keys(launch).length === 0 ? {} : { launch }),\n ...(contextJson === undefined ? {} : { context: contextJson }),\n ...(inputJson === undefined ? {} : { inputJson }),\n ...(schemaJson === undefined ? {} : { schemaJson }),\n ...(attachEndpoint === undefined ? {} : { attachEndpoint }),\n ...(attachHeaders === undefined ? {} : { attachHeaders }),\n ...(sourceUserDataDir === undefined ? {} : { sourceUserDataDir }),\n ...(sourceProfileDirectory === undefined ? {} : { sourceProfileDirectory }),\n ...(selector === undefined ? {} : { selector }),\n ...(description === undefined ? {} : { description }),\n ...(element === undefined ? {} : { element }),\n ...(text === undefined ? {} : { text }),\n ...(pressEnter === undefined ? {} : { pressEnter }),\n ...(direction === undefined ? {} : { direction }),\n ...(amount === undefined ? {} : { amount }),\n };\n\n return {\n command: commandTokens,\n rest,\n options,\n help,\n };\n}\n\nfunction buildCliBrowserProfile(\n parsed: ParsedCommandLine,\n): { readonly profileId: string; readonly reuseIfActive?: true } | undefined {\n if (\n parsed.options.cloudProfileReuseIfActive === true &&\n parsed.options.cloudProfileId === undefined\n ) {\n throw new Error('\"--cloud-profile-reuse-if-active\" requires \"--cloud-profile-id <id>\".');\n }\n\n return parsed.options.cloudProfileId === undefined\n ? undefined\n : {\n profileId: parsed.options.cloudProfileId,\n ...(parsed.options.cloudProfileReuseIfActive === true ? { reuseIfActive: true } : {}),\n };\n}\n\nfunction buildCliExplicitProvider(parsed: ParsedCommandLine): OpensteerProviderOptions | undefined {\n if (parsed.options.provider === \"local\") {\n return { kind: \"local\" };\n }\n if (parsed.options.provider === \"cloud\") {\n return { kind: \"cloud\" };\n }\n return undefined;\n}\n\nfunction resolveCliProvider(parsed: ParsedCommandLine): OpensteerResolvedProvider {\n const explicitProvider = buildCliExplicitProvider(parsed);\n return resolveOpensteerProvider({\n ...(explicitProvider === undefined ? {} : { provider: explicitProvider }),\n ...(process.env.OPENSTEER_PROVIDER === undefined\n ? {}\n : { environmentProvider: process.env.OPENSTEER_PROVIDER }),\n });\n}\n\nfunction buildCliRuntimeProvider(\n parsed: ParsedCommandLine,\n providerKind: OpensteerProviderKind,\n): OpensteerProviderOptions | undefined {\n const explicitProvider = buildCliExplicitProvider(parsed);\n if (providerKind === \"local\") {\n return explicitProvider?.kind === \"local\" ? explicitProvider : undefined;\n }\n\n const browserProfile = buildCliBrowserProfile(parsed);\n const hasCloudOverrides =\n parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n browserProfile !== undefined;\n if (!hasCloudOverrides && explicitProvider?.kind !== \"cloud\") {\n return undefined;\n }\n\n return {\n kind: \"cloud\",\n ...(parsed.options.cloudBaseUrl === undefined ? {} : { baseUrl: parsed.options.cloudBaseUrl }),\n ...(parsed.options.cloudApiKey === undefined ? {} : { apiKey: parsed.options.cloudApiKey }),\n ...(browserProfile === undefined ? {} : { browserProfile }),\n };\n}\n\nfunction assertCloudCliOptionsMatchProvider(\n parsed: ParsedCommandLine,\n providerKind: OpensteerProviderKind,\n): void {\n if (\n providerKind !== \"cloud\" &&\n (parsed.options.cloudBaseUrl !== undefined ||\n parsed.options.cloudApiKey !== undefined ||\n parsed.options.cloudProfileId !== undefined ||\n parsed.options.cloudProfileReuseIfActive === true)\n ) {\n throw new Error(\n 'Cloud-specific options require provider=cloud. Set \"--provider cloud\" or OPENSTEER_PROVIDER=cloud.',\n );\n }\n}\n\nasync function handleStatusCommand(parsed: ParsedCommandLine): Promise<void> {\n const provider = resolveCliProvider(parsed);\n assertCloudCliOptionsMatchProvider(parsed, provider.kind);\n const runtimeProvider = buildCliRuntimeProvider(parsed, provider.kind);\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(runtimeProvider === undefined ? {} : { provider: runtimeProvider }),\n ...(process.env.OPENSTEER_PROVIDER === undefined\n ? {}\n : { environmentProvider: process.env.OPENSTEER_PROVIDER }),\n });\n const status = await collectOpensteerStatus({\n rootDir: process.cwd(),\n ...(parsed.options.workspace === undefined ? {} : { workspace: parsed.options.workspace }),\n provider,\n ...(runtimeConfig.cloud === undefined ? {} : { cloudConfig: runtimeConfig.cloud }),\n });\n\n if (parsed.options.json === true) {\n process.stdout.write(`${JSON.stringify(status, null, 2)}\\n`);\n return;\n }\n\n process.stdout.write(renderOpensteerStatus(status));\n}\n\nfunction parseKeyValueList(\n values: readonly string[] | undefined,\n): Readonly<Record<string, string>> | undefined {\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n values.map((entry) => {\n const separator = entry.indexOf(\"=\");\n if (separator <= 0) {\n throw new Error(`Expected NAME=VALUE, received \"${entry}\".`);\n }\n return [entry.slice(0, separator), entry.slice(separator + 1)];\n }),\n );\n}\n\nfunction readSingle(options: Map<string, string[]>, name: string): string | undefined {\n const values = options.get(name);\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[values.length - 1];\n}\n\nfunction readOptionalBoolean(options: Map<string, string[]>, name: string): boolean | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n throw new Error(`Option \"--${name}\" must be true or false.`);\n}\n\nfunction readOptionalNumber(options: Map<string, string[]>, name: string): number | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Option \"--${name}\" must be a number.`);\n }\n return parsed;\n}\n\nfunction readJsonObject(\n options: Map<string, string[]>,\n name: string,\n): Record<string, unknown> | undefined {\n const value = readSingle(options, name);\n if (value === undefined) {\n return undefined;\n }\n const parsed = JSON.parse(value) as unknown;\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 resolveCommandLength(tokens: readonly string[]): number {\n if (tokens.length === 0) {\n return 0;\n }\n if (tokens[0] === \"browser\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"skills\") {\n return Math.min(tokens.length, 2);\n }\n if (tokens[0] === \"run\") {\n return 1;\n }\n if (tokens[0] === \"status\") {\n return 1;\n }\n for (let length = Math.min(3, tokens.length); length >= 1; length -= 1) {\n if (OPERATION_ALIASES.has(tokens.slice(0, length).join(\" \"))) {\n return length;\n }\n }\n return Math.min(tokens.length, 1);\n}\n\nfunction printHelp(): void {\n process.stdout.write(`Opensteer v2 CLI\n\nUsage:\n opensteer open <url> --workspace <id> [--browser persistent|temporary|attach]\n opensteer goto <url> --workspace <id>\n opensteer snapshot [action|extraction] --workspace <id>\n opensteer click --workspace <id> (--element <n> | --selector <css> | --description <text>)\n opensteer input --workspace <id> --text <value> (--element <n> | --selector <css> | --description <text>)\n opensteer extract --workspace <id> --description <text> [--schema-json <json>]\n opensteer close --workspace <id>\n opensteer status [--workspace <id>] [--json]\n\n opensteer browser status --workspace <id>\n opensteer browser clone --workspace <id> --source-user-data-dir <path> [--source-profile-directory <name>]\n opensteer browser reset --workspace <id>\n opensteer browser delete --workspace <id>\n opensteer browser discover\n opensteer browser inspect --attach-endpoint <url>\n opensteer skills install [--skill <name>] [--agent <name>] [--global] [--yes]\n\n opensteer run <semantic-operation> --workspace <id> --input-json <json>\n\nCommon options:\n --workspace <id>\n --provider local|cloud\n --cloud-base-url <url>\n --cloud-api-key <key>\n --cloud-profile-id <id>\n --cloud-profile-reuse-if-active <true|false>\n --json <true|false>\n --engine playwright|abp\n --browser temporary|persistent|attach\n --attach-endpoint <url>\n --fresh-tab <true|false>\n --headless <true|false>\n --executable-path <path>\n --arg <value> repeatable\n --timeout-ms <ms>\n --context-json <json>\n --input-json <json>\n --skill <name> repeatable\n --agent <name> repeatable\n`);\n}\n\nmain().catch((error) => {\n const payload =\n error instanceof Error\n ? {\n error: {\n name: error.name,\n message: error.message,\n },\n }\n : {\n error: {\n name: \"Error\",\n message: String(error),\n },\n };\n process.stderr.write(`${JSON.stringify(payload)}\\n`);\n process.exitCode = 1;\n});\n"]}
|