opensteer 0.9.6 → 0.9.7

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 (33) hide show
  1. package/dist/{chunk-BVRIPCWA.js → chunk-3OHKIPBD.js} +316 -465
  2. package/dist/chunk-3OHKIPBD.js.map +1 -0
  3. package/dist/{chunk-L4NF74KI.js → chunk-52UNH5UW.js} +5 -5
  4. package/dist/{chunk-L4NF74KI.js.map → chunk-52UNH5UW.js.map} +1 -1
  5. package/dist/{chunk-3XBQRZZC.js → chunk-PJXN7HED.js} +115 -14
  6. package/dist/chunk-PJXN7HED.js.map +1 -0
  7. package/dist/{chunk-3I3A5OLB.js → chunk-R33BXCMQ.js} +16 -7
  8. package/dist/chunk-R33BXCMQ.js.map +1 -0
  9. package/dist/{chunk-T5P2QGZ3.js → chunk-U4BUCIZ4.js} +153 -12
  10. package/dist/chunk-U4BUCIZ4.js.map +1 -0
  11. package/dist/cli/bin.cjs +663 -544
  12. package/dist/cli/bin.cjs.map +1 -1
  13. package/dist/cli/bin.js +66 -50
  14. package/dist/cli/bin.js.map +1 -1
  15. package/dist/index.cjs +584 -495
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +26 -50
  18. package/dist/index.d.ts +26 -50
  19. package/dist/index.js +4 -4
  20. package/dist/local-view/public/assets/app.js +10 -1
  21. package/dist/local-view/serve-entry.cjs +687 -494
  22. package/dist/local-view/serve-entry.cjs.map +1 -1
  23. package/dist/local-view/serve-entry.js +2 -2
  24. package/dist/opensteer-CY2QUJEG.js +6 -0
  25. package/dist/{opensteer-UGA6YBRN.js.map → opensteer-CY2QUJEG.js.map} +1 -1
  26. package/dist/{session-control-U3L5H2ZI.js → session-control-FIP6ZJLH.js} +4 -4
  27. package/dist/{session-control-U3L5H2ZI.js.map → session-control-FIP6ZJLH.js.map} +1 -1
  28. package/package.json +7 -7
  29. package/dist/chunk-3I3A5OLB.js.map +0 -1
  30. package/dist/chunk-3XBQRZZC.js.map +0 -1
  31. package/dist/chunk-BVRIPCWA.js.map +0 -1
  32. package/dist/chunk-T5P2QGZ3.js.map +0 -1
  33. package/dist/opensteer-UGA6YBRN.js +0 -6
@@ -1,6 +1,6 @@
1
- import { resolveOpensteerEnvironment, resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, isBrowserCoreError } from './chunk-BVRIPCWA.js';
2
- import { OpensteerBrowserManager, isOpensteerProtocolError, OpensteerProtocolError, toOpensteerError, createOpensteerError } from './chunk-3XBQRZZC.js';
3
- import { OpensteerAttachAmbiguousError } from './chunk-T5P2QGZ3.js';
1
+ import { resolveOpensteerEnvironment, resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, isBrowserCoreError } from './chunk-3OHKIPBD.js';
2
+ import { OpensteerBrowserManager, isOpensteerProtocolError, OpensteerProtocolError, toOpensteerError, createOpensteerError } from './chunk-PJXN7HED.js';
3
+ import { OpensteerAttachAmbiguousError } from './chunk-U4BUCIZ4.js';
4
4
 
5
5
  // src/internal/errors.ts
6
6
  function normalizeThrownOpensteerError(error, fallbackMessage) {
@@ -454,5 +454,5 @@ function delay(ms) {
454
454
  }
455
455
 
456
456
  export { Opensteer };
457
- //# sourceMappingURL=chunk-L4NF74KI.js.map
458
- //# sourceMappingURL=chunk-L4NF74KI.js.map
457
+ //# sourceMappingURL=chunk-52UNH5UW.js.map
458
+ //# sourceMappingURL=chunk-52UNH5UW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/errors.ts","../src/sdk/opensteer.ts"],"names":["options"],"mappings":"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","file":"chunk-L4NF74KI.js","sourcesContent":["import { isBrowserCoreError } from \"@opensteer/browser-core\";\nimport {\n createOpensteerError,\n isOpensteerProtocolError,\n toOpensteerError,\n type OpensteerError,\n} from \"@opensteer/protocol\";\nimport { OpensteerAttachAmbiguousError } from \"../local-browser/cdp-discovery.js\";\n\nexport function normalizeThrownOpensteerError(\n error: unknown,\n fallbackMessage: string,\n): OpensteerError {\n if (isOpensteerProtocolError(error)) {\n return toOpensteerError(error);\n }\n\n if (isBrowserCoreError(error)) {\n return createOpensteerError(error.code, error.message, {\n retriable: error.retriable,\n ...(error.details === undefined ? {} : { details: error.details }),\n });\n }\n\n if (error instanceof OpensteerAttachAmbiguousError) {\n return createOpensteerError(\"conflict\", error.message, {\n details: {\n candidates: error.candidates,\n code: error.code,\n name: error.name,\n },\n });\n }\n\n if (\n error instanceof Error &&\n \"opensteerError\" in error &&\n typeof (error as { opensteerError: unknown }).opensteerError === \"object\" &&\n (error as { opensteerError: unknown }).opensteerError !== null\n ) {\n const oe = (error as { opensteerError: OpensteerError }).opensteerError;\n return createOpensteerError(oe.code, oe.message, {\n retriable: oe.retriable,\n ...(oe.capability === undefined ? {} : { capability: oe.capability }),\n ...(oe.details === undefined ? {} : { details: oe.details }),\n });\n }\n\n if (error instanceof Error) {\n return createOpensteerError(\"operation-failed\", error.message, {\n details: {\n name: error.name,\n },\n });\n }\n\n return createOpensteerError(\"internal\", fallbackMessage, {\n details: {\n value: error,\n },\n });\n}\n","import {\n OpensteerProtocolError,\n isOpensteerProtocolError,\n type CookieRecord,\n type OpensteerCookieQueryOutput,\n type OpensteerActionResult,\n type OpensteerAddInitScriptInput,\n type OpensteerAddInitScriptOutput,\n type OpensteerComputerExecuteInput,\n type OpensteerComputerExecuteOutput,\n type OpensteerComputerKeyModifier,\n type OpensteerComputerMouseButton,\n type OpensteerNetworkDetailOutput,\n type OpensteerNetworkQueryInput,\n type OpensteerNetworkQueryOutput,\n type OpensteerOpenInput,\n type OpensteerOpenOutput,\n type OpensteerPageActivateInput,\n type OpensteerPageActivateOutput,\n type OpensteerPageCloseInput,\n type OpensteerPageCloseOutput,\n type OpensteerPageEvaluateInput,\n type OpensteerPageEvaluateOutput,\n type OpensteerPageGotoInput,\n type OpensteerPageGotoOutput,\n type OpensteerPageListInput,\n type OpensteerPageListOutput,\n type OpensteerPageNewInput,\n type OpensteerPageNewOutput,\n type OpensteerRequestBodyInput,\n type OpensteerRequestResponseResult,\n type OpensteerSessionCloseOutput,\n type OpensteerSessionFetchInput,\n type OpensteerSessionInfo,\n type OpensteerStateQueryOutput,\n type OpensteerStorageArea,\n type OpensteerStorageDomainSnapshot,\n type OpensteerTargetInput,\n} from \"@opensteer/protocol\";\n\nimport {\n OpensteerBrowserManager,\n type OpensteerBrowserStatus,\n type WorkspaceBrowserManifest,\n} from \"../browser-manager.js\";\nimport { resolveOpensteerEnvironment } from \"../env.js\";\nimport { normalizeThrownOpensteerError } from \"../internal/errors.js\";\nimport type { OpensteerProviderOptions } from \"../provider/config.js\";\nimport type {\n OpensteerInterceptScriptOptions,\n OpensteerInstrumentableRuntime,\n OpensteerRouteOptions,\n OpensteerRouteRegistration,\n} from \"./instrumentation.js\";\nimport type { OpensteerRuntimeOptions } from \"./runtime.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n} from \"./runtime-resolution.js\";\nimport type { OpensteerDisconnectableRuntime } from \"./semantic-runtime.js\";\n\nexport interface OpensteerTargetOptions {\n readonly element?: number;\n readonly selector?: string;\n readonly persist?: string;\n readonly captureNetwork?: string;\n}\n\nexport interface OpensteerClickOptions extends OpensteerTargetOptions {\n readonly button?: OpensteerComputerMouseButton;\n readonly clickCount?: number;\n readonly modifiers?: readonly OpensteerComputerKeyModifier[];\n}\n\nexport interface OpensteerInputOptions extends OpensteerTargetOptions {\n readonly text: string;\n readonly pressEnter?: boolean;\n}\n\nexport interface OpensteerScrollOptions extends OpensteerTargetOptions {\n readonly direction: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount: number;\n}\n\nexport interface OpensteerExtractOptions {\n readonly persist: string;\n}\n\nexport interface OpensteerWaitForPageOptions {\n readonly openerPageRef?: string;\n readonly urlIncludes?: string;\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport type OpensteerAddInitScriptOptions = OpensteerAddInitScriptInput;\nexport type OpensteerGotoOptions = Omit<OpensteerPageGotoInput, \"url\">;\nexport type OpensteerNetworkQueryOptions = OpensteerNetworkQueryInput;\nexport type OpensteerNetworkQueryResult = OpensteerNetworkQueryOutput;\nexport type OpensteerNetworkDetailResult = OpensteerNetworkDetailOutput;\nexport type OpensteerFetchOptions = Omit<OpensteerSessionFetchInput, \"url\" | \"body\"> & {\n readonly body?: string | OpensteerRequestBodyInput;\n};\nexport type OpensteerComputerExecuteOptions = OpensteerComputerExecuteInput;\nexport type OpensteerStorageMap = Readonly<Record<string, string>>;\nexport type OpensteerBrowserState = OpensteerStateQueryOutput;\n\nexport interface OpensteerCookieJar {\n readonly domain?: string;\n has(name: string): boolean;\n get(name: string): string | undefined;\n getAll(): readonly CookieRecord[];\n serialize(): string;\n}\n\nexport interface OpensteerDomController {\n click(input: OpensteerClickOptions): Promise<OpensteerActionResult>;\n hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult>;\n input(input: OpensteerInputOptions): Promise<OpensteerActionResult>;\n scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult>;\n}\n\nexport interface OpensteerNetworkController {\n query(input?: OpensteerNetworkQueryOptions): Promise<OpensteerNetworkQueryResult>;\n detail(\n recordId: string,\n options?: { readonly probe?: boolean },\n ): Promise<OpensteerNetworkDetailResult>;\n}\n\nexport interface OpensteerOptions extends OpensteerRuntimeOptions {\n readonly provider?: OpensteerProviderOptions;\n}\n\nexport interface OpensteerBrowserCloneOptions {\n readonly sourceUserDataDir: string;\n readonly sourceProfileDirectory?: string;\n}\n\nexport interface OpensteerBrowserController {\n status(): Promise<OpensteerBrowserStatus>;\n clone(input: OpensteerBrowserCloneOptions): Promise<WorkspaceBrowserManifest>;\n reset(): Promise<void>;\n delete(): Promise<void>;\n}\n\nclass SessionCookieJar implements OpensteerCookieJar {\n readonly domain?: string;\n private readonly cookies: readonly CookieRecord[];\n\n constructor(output: OpensteerCookieQueryOutput) {\n if (output.domain !== undefined) {\n this.domain = output.domain;\n }\n this.cookies = output.cookies;\n }\n\n has(name: string): boolean {\n return this.cookies.some((cookie) => cookie.name === name);\n }\n\n get(name: string): string | undefined {\n return this.cookies.find((cookie) => cookie.name === name)?.value;\n }\n\n getAll(): readonly CookieRecord[] {\n return this.cookies;\n }\n\n serialize(): string {\n return this.cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join(\"; \");\n }\n}\n\nfunction createSdkProtocolError(error: unknown, fallbackMessage: string): OpensteerProtocolError {\n const normalized = normalizeThrownOpensteerError(error, fallbackMessage);\n return new OpensteerProtocolError(normalized.code, normalized.message, {\n cause: error,\n retriable: normalized.retriable,\n ...(normalized.capability === undefined ? {} : { capability: normalized.capability }),\n ...(normalized.details === undefined ? {} : { details: normalized.details }),\n });\n}\n\nasync function wrapSdkError<T>(operation: string, fn: () => Promise<T>): Promise<T> {\n try {\n return await fn();\n } catch (error) {\n if (isOpensteerProtocolError(error)) {\n throw error;\n }\n throw createSdkProtocolError(error, `${operation} failed`);\n }\n}\n\nexport class Opensteer {\n private readonly runtime: OpensteerDisconnectableRuntime;\n private readonly browserManager: OpensteerBrowserManager | undefined;\n readonly browser: OpensteerBrowserController;\n readonly dom: OpensteerDomController;\n readonly network: OpensteerNetworkController;\n\n constructor(options: OpensteerOptions = {}) {\n try {\n const environment = resolveOpensteerEnvironment(options.rootDir);\n const { provider, engineName, ...runtimeOptions } = options;\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(provider === undefined ? {} : { provider }),\n environment,\n });\n\n if (runtimeConfig.provider.mode === \"cloud\") {\n this.browserManager = undefined;\n this.runtime = createOpensteerSemanticRuntime({\n ...(provider === undefined ? {} : { provider }),\n ...(engineName === undefined ? {} : { engine: engineName }),\n environment,\n runtimeOptions,\n });\n this.browser = createUnsupportedBrowserController();\n } else {\n this.browserManager = new OpensteerBrowserManager({\n ...(runtimeOptions.rootDir === undefined ? {} : { rootDir: runtimeOptions.rootDir }),\n ...(runtimeOptions.rootPath === undefined ? {} : { rootPath: runtimeOptions.rootPath }),\n ...(runtimeOptions.workspace === undefined\n ? {}\n : { workspace: runtimeOptions.workspace }),\n ...(engineName === undefined ? {} : { engineName }),\n environment,\n ...(runtimeOptions.browser === undefined ? {} : { browser: runtimeOptions.browser }),\n ...(runtimeOptions.launch === undefined ? {} : { launch: runtimeOptions.launch }),\n ...(runtimeOptions.context === undefined ? {} : { context: runtimeOptions.context }),\n });\n this.runtime = createOpensteerSemanticRuntime({\n ...(provider === undefined ? {} : { provider }),\n ...(engineName === undefined ? {} : { engine: engineName }),\n environment,\n runtimeOptions: {\n ...runtimeOptions,\n rootPath: this.browserManager.rootPath,\n cleanupRootOnClose: this.browserManager.cleanupRootOnDisconnect,\n },\n });\n this.browser = {\n status: () => wrapSdkError(\"browser.status\", () => this.browserManager!.status()),\n clone: (input) =>\n wrapSdkError(\"browser.clone\", () => this.browserManager!.clonePersistentBrowser(input)),\n reset: () => wrapSdkError(\"browser.reset\", () => this.browserManager!.reset()),\n delete: () => wrapSdkError(\"browser.delete\", () => this.browserManager!.delete()),\n };\n }\n\n this.dom = {\n click: (input) => this.click(input),\n hover: (input) => this.hover(input),\n input: (input) => this.input(input),\n scroll: (input) => this.scroll(input),\n };\n\n this.network = {\n query: (input = {}) =>\n wrapSdkError(\"network.query\", () => this.runtime.queryNetwork(input)),\n detail: (recordId, options) =>\n wrapSdkError(\"network.detail\", () =>\n this.runtime.getNetworkDetail({ recordId, ...options }),\n ),\n };\n } catch (error) {\n if (isOpensteerProtocolError(error)) {\n throw error;\n }\n throw createSdkProtocolError(error, \"Failed to initialize Opensteer\");\n }\n }\n\n async open(input: string | OpensteerOpenInput = {}): Promise<OpensteerOpenOutput> {\n return wrapSdkError(\"session.open\", () =>\n this.runtime.open(typeof input === \"string\" ? { url: input } : input),\n );\n }\n\n async info(): Promise<OpensteerSessionInfo> {\n return wrapSdkError(\"session.info\", () => this.runtime.info());\n }\n\n async listPages(input: OpensteerPageListInput = {}): Promise<OpensteerPageListOutput> {\n return wrapSdkError(\"page.list\", () => this.runtime.listPages(input));\n }\n\n async newPage(input: OpensteerPageNewInput = {}): Promise<OpensteerPageNewOutput> {\n return wrapSdkError(\"page.new\", () => this.runtime.newPage(input));\n }\n\n async activatePage(input: OpensteerPageActivateInput): Promise<OpensteerPageActivateOutput> {\n return wrapSdkError(\"page.activate\", () => this.runtime.activatePage(input));\n }\n\n async closePage(input: OpensteerPageCloseInput = {}): Promise<OpensteerPageCloseOutput> {\n return wrapSdkError(\"page.close\", () => this.runtime.closePage(input));\n }\n\n async goto(url: string, options: OpensteerGotoOptions = {}): Promise<OpensteerPageGotoOutput> {\n return wrapSdkError(\"page.goto\", () =>\n this.runtime.goto({\n url,\n ...options,\n }),\n );\n }\n\n async evaluate(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n return wrapSdkError(\"page.evaluate\", async () => {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n return (await this.runtime.evaluate(normalized)).value;\n });\n }\n\n async addInitScript(\n input: string | OpensteerAddInitScriptInput,\n ): Promise<OpensteerAddInitScriptOutput> {\n return wrapSdkError(\"page.addInitScript\", () =>\n this.runtime.addInitScript(\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input,\n ),\n );\n }\n\n async click(input: OpensteerClickOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.click\", () => {\n const { button, clickCount, modifiers, ...target } = input;\n return this.runtime.click({\n ...normalizeTargetOptions(target),\n ...(button === undefined ? {} : { button }),\n ...(clickCount === undefined ? {} : { clickCount }),\n ...(modifiers === undefined ? {} : { modifiers }),\n });\n });\n }\n\n async hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.hover\", () => this.runtime.hover(normalizeTargetOptions(input)));\n }\n\n async input(input: OpensteerInputOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.input\", () =>\n this.runtime.input({\n ...normalizeTargetOptions(input),\n text: input.text,\n ...(input.pressEnter === undefined ? {} : { pressEnter: input.pressEnter }),\n }),\n );\n }\n\n async scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.scroll\", () =>\n this.runtime.scroll({\n ...normalizeTargetOptions(input),\n direction: input.direction,\n amount: input.amount,\n }),\n );\n }\n\n async extract(input: OpensteerExtractOptions): Promise<unknown> {\n return wrapSdkError(\"extract\", async () => (await this.runtime.extract(input)).data);\n }\n\n async waitForPage(\n input: OpensteerWaitForPageOptions = {},\n ): Promise<OpensteerPageListOutput[\"pages\"][number]> {\n return wrapSdkError(\"page.waitForPage\", async () => {\n const baseline = new Set((await this.runtime.listPages()).pages.map((page) => page.pageRef));\n const timeoutAt = Date.now() + (input.timeoutMs ?? 30_000);\n const pollIntervalMs = input.pollIntervalMs ?? 100;\n\n while (true) {\n const match = (await this.runtime.listPages()).pages.find((page) => {\n if (baseline.has(page.pageRef)) {\n return false;\n }\n if (input.openerPageRef !== undefined && page.openerPageRef !== input.openerPageRef) {\n return false;\n }\n if (input.urlIncludes !== undefined && !page.url.includes(input.urlIncludes)) {\n return false;\n }\n return true;\n });\n if (match !== undefined) {\n return match;\n }\n if (Date.now() >= timeoutAt) {\n throw new OpensteerProtocolError(\"timeout\", \"waitForPage timed out\");\n }\n await delay(pollIntervalMs);\n }\n });\n }\n\n async cookies(domain?: string): Promise<OpensteerCookieJar> {\n return wrapSdkError(\n \"session.cookies\",\n async () =>\n new SessionCookieJar(await this.runtime.getCookies(domain === undefined ? {} : { domain })),\n );\n }\n\n async storage(\n domain?: string,\n type: OpensteerStorageArea = \"local\",\n ): Promise<OpensteerStorageMap> {\n return wrapSdkError(\"session.storage\", async () => {\n const snapshot = await this.runtime.getStorageSnapshot(\n domain === undefined ? {} : { domain },\n );\n const domainSnapshot = pickStorageDomainSnapshot(snapshot, domain);\n if (domainSnapshot === undefined) {\n return {};\n }\n const entries =\n type === \"local\" ? domainSnapshot.localStorage : domainSnapshot.sessionStorage;\n return Object.fromEntries(entries.map((entry) => [entry.key, entry.value]));\n });\n }\n\n async state(domain?: string): Promise<OpensteerBrowserState> {\n return wrapSdkError(\"session.state\", () =>\n this.runtime.getBrowserState(domain === undefined ? {} : { domain }),\n );\n }\n\n async fetch(url: string, options: OpensteerFetchOptions = {}): Promise<Response> {\n return wrapSdkError(\"session.fetch\", async () => {\n const input = buildFetchInput(url, options);\n const result = await this.runtime.fetch(input);\n if (result.response === undefined) {\n throw new OpensteerProtocolError(\n \"operation-failed\",\n result.note ?? `session.fetch did not produce a response for ${url}`,\n );\n }\n return toResponse(result.response);\n });\n }\n\n async computerExecute(\n input: OpensteerComputerExecuteOptions,\n ): Promise<OpensteerComputerExecuteOutput> {\n return wrapSdkError(\"session.computerExecute\", () => this.runtime.computerExecute(input));\n }\n\n async route(input: OpensteerRouteOptions): Promise<OpensteerRouteRegistration> {\n return wrapSdkError(\"session.route\", () =>\n this.requireOwnedInstrumentationRuntime(\"route\").route(input),\n );\n }\n\n async interceptScript(\n input: OpensteerInterceptScriptOptions,\n ): Promise<OpensteerRouteRegistration> {\n return wrapSdkError(\"session.interceptScript\", () =>\n this.requireOwnedInstrumentationRuntime(\"interceptScript\").interceptScript(input),\n );\n }\n\n async close(): Promise<OpensteerSessionCloseOutput> {\n return wrapSdkError(\"session.close\", async () => {\n if (this.browserManager === undefined || this.browserManager.mode === \"temporary\") {\n return this.runtime.close();\n }\n\n const output = await this.runtime.close();\n await this.browserManager.close();\n return output;\n });\n }\n\n async disconnect(): Promise<void> {\n return wrapSdkError(\"session.disconnect\", () => this.runtime.disconnect());\n }\n\n private requireOwnedInstrumentationRuntime(\n method: \"route\" | \"interceptScript\",\n ): OpensteerInstrumentableRuntime {\n if (\n typeof (this.runtime as Partial<OpensteerInstrumentableRuntime>).route === \"function\" &&\n typeof (this.runtime as Partial<OpensteerInstrumentableRuntime>).interceptScript ===\n \"function\"\n ) {\n return this.runtime as OpensteerDisconnectableRuntime & OpensteerInstrumentableRuntime;\n }\n throw new OpensteerProtocolError(\n \"unsupported-operation\",\n `${method}() is not available for this session runtime.`,\n );\n }\n}\n\nfunction createUnsupportedBrowserController(): OpensteerBrowserController {\n const fail = async (): Promise<never> => {\n throw new OpensteerProtocolError(\n \"unsupported-operation\",\n \"browser.* helpers are only available in local mode.\",\n );\n };\n\n return {\n status: fail,\n clone: fail,\n reset: fail,\n delete: fail,\n };\n}\n\nfunction normalizeTargetOptions(input: OpensteerTargetOptions): {\n readonly target: OpensteerTargetInput;\n readonly persist?: string;\n readonly captureNetwork?: string;\n} {\n const hasElement = input.element !== undefined;\n const hasSelector = input.selector !== undefined;\n if (hasElement && hasSelector) {\n throw new OpensteerProtocolError(\n \"invalid-argument\",\n \"Specify exactly one of element, selector, or persist.\",\n );\n }\n\n if (hasElement) {\n return {\n target: {\n kind: \"element\",\n element: input.element,\n },\n ...(input.persist === undefined ? {} : { persist: input.persist }),\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n }\n\n if (hasSelector) {\n return {\n target: {\n kind: \"selector\",\n selector: input.selector,\n },\n ...(input.persist === undefined ? {} : { persist: input.persist }),\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n }\n\n if (input.persist === undefined) {\n throw new OpensteerProtocolError(\n \"invalid-argument\",\n \"Specify exactly one of element, selector, or persist.\",\n );\n }\n\n return {\n target: {\n kind: \"persist\",\n persist: input.persist,\n },\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n}\n\nfunction pickStorageDomainSnapshot(\n snapshot: {\n readonly domains: readonly OpensteerStorageDomainSnapshot[];\n },\n domain: string | undefined,\n): OpensteerStorageDomainSnapshot | undefined {\n if (snapshot.domains.length === 0) {\n return undefined;\n }\n if (domain === undefined) {\n return snapshot.domains[0];\n }\n return snapshot.domains.find((entry) => entry.domain === domain);\n}\n\nfunction buildFetchInput(url: string, options: OpensteerFetchOptions): OpensteerSessionFetchInput {\n const { body, ...rest } = options;\n return {\n url,\n ...rest,\n ...(body === undefined ? {} : { body: normalizeFetchBody(body, rest.headers) }),\n };\n}\n\nfunction normalizeFetchBody(\n body: string | OpensteerRequestBodyInput,\n headers: OpensteerSessionFetchInput[\"headers\"],\n): OpensteerRequestBodyInput {\n if (typeof body !== \"string\") {\n return body;\n }\n\n const contentType = findHeaderValue(headers, \"content-type\");\n return contentType === undefined ? { text: body } : { text: body, contentType };\n}\n\nfunction findHeaderValue(\n headers: OpensteerSessionFetchInput[\"headers\"],\n headerName: string,\n): string | undefined {\n if (headers === undefined) {\n return undefined;\n }\n\n const match = Object.entries(headers).find(\n ([name]) => name.toLowerCase() === headerName.toLowerCase(),\n );\n return match === undefined ? undefined : String(match[1]);\n}\n\nfunction toResponse(response: OpensteerRequestResponseResult): Response {\n return new Response(decodeBody(response), {\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.map((header) => [header.name, header.value])),\n });\n}\n\nfunction decodeBody(response: OpensteerRequestResponseResult): Uint8Array | undefined {\n if (response.body === undefined) {\n return undefined;\n }\n return Uint8Array.from(Buffer.from(response.body.data, \"base64\"));\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
1
+ {"version":3,"sources":["../src/internal/errors.ts","../src/sdk/opensteer.ts"],"names":["options"],"mappings":"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","file":"chunk-52UNH5UW.js","sourcesContent":["import { isBrowserCoreError } from \"@opensteer/browser-core\";\nimport {\n createOpensteerError,\n isOpensteerProtocolError,\n toOpensteerError,\n type OpensteerError,\n} from \"@opensteer/protocol\";\nimport { OpensteerAttachAmbiguousError } from \"../local-browser/cdp-discovery.js\";\n\nexport function normalizeThrownOpensteerError(\n error: unknown,\n fallbackMessage: string,\n): OpensteerError {\n if (isOpensteerProtocolError(error)) {\n return toOpensteerError(error);\n }\n\n if (isBrowserCoreError(error)) {\n return createOpensteerError(error.code, error.message, {\n retriable: error.retriable,\n ...(error.details === undefined ? {} : { details: error.details }),\n });\n }\n\n if (error instanceof OpensteerAttachAmbiguousError) {\n return createOpensteerError(\"conflict\", error.message, {\n details: {\n candidates: error.candidates,\n code: error.code,\n name: error.name,\n },\n });\n }\n\n if (\n error instanceof Error &&\n \"opensteerError\" in error &&\n typeof (error as { opensteerError: unknown }).opensteerError === \"object\" &&\n (error as { opensteerError: unknown }).opensteerError !== null\n ) {\n const oe = (error as { opensteerError: OpensteerError }).opensteerError;\n return createOpensteerError(oe.code, oe.message, {\n retriable: oe.retriable,\n ...(oe.capability === undefined ? {} : { capability: oe.capability }),\n ...(oe.details === undefined ? {} : { details: oe.details }),\n });\n }\n\n if (error instanceof Error) {\n return createOpensteerError(\"operation-failed\", error.message, {\n details: {\n name: error.name,\n },\n });\n }\n\n return createOpensteerError(\"internal\", fallbackMessage, {\n details: {\n value: error,\n },\n });\n}\n","import {\n OpensteerProtocolError,\n isOpensteerProtocolError,\n type CookieRecord,\n type OpensteerCookieQueryOutput,\n type OpensteerActionResult,\n type OpensteerAddInitScriptInput,\n type OpensteerAddInitScriptOutput,\n type OpensteerComputerExecuteInput,\n type OpensteerComputerExecuteOutput,\n type OpensteerComputerKeyModifier,\n type OpensteerComputerMouseButton,\n type OpensteerNetworkDetailOutput,\n type OpensteerNetworkQueryInput,\n type OpensteerNetworkQueryOutput,\n type OpensteerOpenInput,\n type OpensteerOpenOutput,\n type OpensteerPageActivateInput,\n type OpensteerPageActivateOutput,\n type OpensteerPageCloseInput,\n type OpensteerPageCloseOutput,\n type OpensteerPageEvaluateInput,\n type OpensteerPageEvaluateOutput,\n type OpensteerPageGotoInput,\n type OpensteerPageGotoOutput,\n type OpensteerPageListInput,\n type OpensteerPageListOutput,\n type OpensteerPageNewInput,\n type OpensteerPageNewOutput,\n type OpensteerRequestBodyInput,\n type OpensteerRequestResponseResult,\n type OpensteerSessionCloseOutput,\n type OpensteerSessionFetchInput,\n type OpensteerSessionInfo,\n type OpensteerStateQueryOutput,\n type OpensteerStorageArea,\n type OpensteerStorageDomainSnapshot,\n type OpensteerTargetInput,\n} from \"@opensteer/protocol\";\n\nimport {\n OpensteerBrowserManager,\n type OpensteerBrowserStatus,\n type WorkspaceBrowserManifest,\n} from \"../browser-manager.js\";\nimport { resolveOpensteerEnvironment } from \"../env.js\";\nimport { normalizeThrownOpensteerError } from \"../internal/errors.js\";\nimport type { OpensteerProviderOptions } from \"../provider/config.js\";\nimport type {\n OpensteerInterceptScriptOptions,\n OpensteerInstrumentableRuntime,\n OpensteerRouteOptions,\n OpensteerRouteRegistration,\n} from \"./instrumentation.js\";\nimport type { OpensteerRuntimeOptions } from \"./runtime.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n} from \"./runtime-resolution.js\";\nimport type { OpensteerDisconnectableRuntime } from \"./semantic-runtime.js\";\n\nexport interface OpensteerTargetOptions {\n readonly element?: number;\n readonly selector?: string;\n readonly persist?: string;\n readonly captureNetwork?: string;\n}\n\nexport interface OpensteerClickOptions extends OpensteerTargetOptions {\n readonly button?: OpensteerComputerMouseButton;\n readonly clickCount?: number;\n readonly modifiers?: readonly OpensteerComputerKeyModifier[];\n}\n\nexport interface OpensteerInputOptions extends OpensteerTargetOptions {\n readonly text: string;\n readonly pressEnter?: boolean;\n}\n\nexport interface OpensteerScrollOptions extends OpensteerTargetOptions {\n readonly direction: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount: number;\n}\n\nexport interface OpensteerExtractOptions {\n readonly persist: string;\n}\n\nexport interface OpensteerWaitForPageOptions {\n readonly openerPageRef?: string;\n readonly urlIncludes?: string;\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport type OpensteerAddInitScriptOptions = OpensteerAddInitScriptInput;\nexport type OpensteerGotoOptions = Omit<OpensteerPageGotoInput, \"url\">;\nexport type OpensteerNetworkQueryOptions = OpensteerNetworkQueryInput;\nexport type OpensteerNetworkQueryResult = OpensteerNetworkQueryOutput;\nexport type OpensteerNetworkDetailResult = OpensteerNetworkDetailOutput;\nexport type OpensteerFetchOptions = Omit<OpensteerSessionFetchInput, \"url\" | \"body\"> & {\n readonly body?: string | OpensteerRequestBodyInput;\n};\nexport type OpensteerComputerExecuteOptions = OpensteerComputerExecuteInput;\nexport type OpensteerStorageMap = Readonly<Record<string, string>>;\nexport type OpensteerBrowserState = OpensteerStateQueryOutput;\n\nexport interface OpensteerCookieJar {\n readonly domain?: string;\n has(name: string): boolean;\n get(name: string): string | undefined;\n getAll(): readonly CookieRecord[];\n serialize(): string;\n}\n\nexport interface OpensteerDomController {\n click(input: OpensteerClickOptions): Promise<OpensteerActionResult>;\n hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult>;\n input(input: OpensteerInputOptions): Promise<OpensteerActionResult>;\n scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult>;\n}\n\nexport interface OpensteerNetworkController {\n query(input?: OpensteerNetworkQueryOptions): Promise<OpensteerNetworkQueryResult>;\n detail(\n recordId: string,\n options?: { readonly probe?: boolean },\n ): Promise<OpensteerNetworkDetailResult>;\n}\n\nexport interface OpensteerOptions extends OpensteerRuntimeOptions {\n readonly provider?: OpensteerProviderOptions;\n}\n\nexport interface OpensteerBrowserCloneOptions {\n readonly sourceUserDataDir: string;\n readonly sourceProfileDirectory?: string;\n}\n\nexport interface OpensteerBrowserController {\n status(): Promise<OpensteerBrowserStatus>;\n clone(input: OpensteerBrowserCloneOptions): Promise<WorkspaceBrowserManifest>;\n reset(): Promise<void>;\n delete(): Promise<void>;\n}\n\nclass SessionCookieJar implements OpensteerCookieJar {\n readonly domain?: string;\n private readonly cookies: readonly CookieRecord[];\n\n constructor(output: OpensteerCookieQueryOutput) {\n if (output.domain !== undefined) {\n this.domain = output.domain;\n }\n this.cookies = output.cookies;\n }\n\n has(name: string): boolean {\n return this.cookies.some((cookie) => cookie.name === name);\n }\n\n get(name: string): string | undefined {\n return this.cookies.find((cookie) => cookie.name === name)?.value;\n }\n\n getAll(): readonly CookieRecord[] {\n return this.cookies;\n }\n\n serialize(): string {\n return this.cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join(\"; \");\n }\n}\n\nfunction createSdkProtocolError(error: unknown, fallbackMessage: string): OpensteerProtocolError {\n const normalized = normalizeThrownOpensteerError(error, fallbackMessage);\n return new OpensteerProtocolError(normalized.code, normalized.message, {\n cause: error,\n retriable: normalized.retriable,\n ...(normalized.capability === undefined ? {} : { capability: normalized.capability }),\n ...(normalized.details === undefined ? {} : { details: normalized.details }),\n });\n}\n\nasync function wrapSdkError<T>(operation: string, fn: () => Promise<T>): Promise<T> {\n try {\n return await fn();\n } catch (error) {\n if (isOpensteerProtocolError(error)) {\n throw error;\n }\n throw createSdkProtocolError(error, `${operation} failed`);\n }\n}\n\nexport class Opensteer {\n private readonly runtime: OpensteerDisconnectableRuntime;\n private readonly browserManager: OpensteerBrowserManager | undefined;\n readonly browser: OpensteerBrowserController;\n readonly dom: OpensteerDomController;\n readonly network: OpensteerNetworkController;\n\n constructor(options: OpensteerOptions = {}) {\n try {\n const environment = resolveOpensteerEnvironment(options.rootDir);\n const { provider, engineName, ...runtimeOptions } = options;\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(provider === undefined ? {} : { provider }),\n environment,\n });\n\n if (runtimeConfig.provider.mode === \"cloud\") {\n this.browserManager = undefined;\n this.runtime = createOpensteerSemanticRuntime({\n ...(provider === undefined ? {} : { provider }),\n ...(engineName === undefined ? {} : { engine: engineName }),\n environment,\n runtimeOptions,\n });\n this.browser = createUnsupportedBrowserController();\n } else {\n this.browserManager = new OpensteerBrowserManager({\n ...(runtimeOptions.rootDir === undefined ? {} : { rootDir: runtimeOptions.rootDir }),\n ...(runtimeOptions.rootPath === undefined ? {} : { rootPath: runtimeOptions.rootPath }),\n ...(runtimeOptions.workspace === undefined\n ? {}\n : { workspace: runtimeOptions.workspace }),\n ...(engineName === undefined ? {} : { engineName }),\n environment,\n ...(runtimeOptions.browser === undefined ? {} : { browser: runtimeOptions.browser }),\n ...(runtimeOptions.launch === undefined ? {} : { launch: runtimeOptions.launch }),\n ...(runtimeOptions.context === undefined ? {} : { context: runtimeOptions.context }),\n });\n this.runtime = createOpensteerSemanticRuntime({\n ...(provider === undefined ? {} : { provider }),\n ...(engineName === undefined ? {} : { engine: engineName }),\n environment,\n runtimeOptions: {\n ...runtimeOptions,\n rootPath: this.browserManager.rootPath,\n cleanupRootOnClose: this.browserManager.cleanupRootOnDisconnect,\n },\n });\n this.browser = {\n status: () => wrapSdkError(\"browser.status\", () => this.browserManager!.status()),\n clone: (input) =>\n wrapSdkError(\"browser.clone\", () => this.browserManager!.clonePersistentBrowser(input)),\n reset: () => wrapSdkError(\"browser.reset\", () => this.browserManager!.reset()),\n delete: () => wrapSdkError(\"browser.delete\", () => this.browserManager!.delete()),\n };\n }\n\n this.dom = {\n click: (input) => this.click(input),\n hover: (input) => this.hover(input),\n input: (input) => this.input(input),\n scroll: (input) => this.scroll(input),\n };\n\n this.network = {\n query: (input = {}) =>\n wrapSdkError(\"network.query\", () => this.runtime.queryNetwork(input)),\n detail: (recordId, options) =>\n wrapSdkError(\"network.detail\", () =>\n this.runtime.getNetworkDetail({ recordId, ...options }),\n ),\n };\n } catch (error) {\n if (isOpensteerProtocolError(error)) {\n throw error;\n }\n throw createSdkProtocolError(error, \"Failed to initialize Opensteer\");\n }\n }\n\n async open(input: string | OpensteerOpenInput = {}): Promise<OpensteerOpenOutput> {\n return wrapSdkError(\"session.open\", () =>\n this.runtime.open(typeof input === \"string\" ? { url: input } : input),\n );\n }\n\n async info(): Promise<OpensteerSessionInfo> {\n return wrapSdkError(\"session.info\", () => this.runtime.info());\n }\n\n async listPages(input: OpensteerPageListInput = {}): Promise<OpensteerPageListOutput> {\n return wrapSdkError(\"page.list\", () => this.runtime.listPages(input));\n }\n\n async newPage(input: OpensteerPageNewInput = {}): Promise<OpensteerPageNewOutput> {\n return wrapSdkError(\"page.new\", () => this.runtime.newPage(input));\n }\n\n async activatePage(input: OpensteerPageActivateInput): Promise<OpensteerPageActivateOutput> {\n return wrapSdkError(\"page.activate\", () => this.runtime.activatePage(input));\n }\n\n async closePage(input: OpensteerPageCloseInput = {}): Promise<OpensteerPageCloseOutput> {\n return wrapSdkError(\"page.close\", () => this.runtime.closePage(input));\n }\n\n async goto(url: string, options: OpensteerGotoOptions = {}): Promise<OpensteerPageGotoOutput> {\n return wrapSdkError(\"page.goto\", () =>\n this.runtime.goto({\n url,\n ...options,\n }),\n );\n }\n\n async evaluate(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n return wrapSdkError(\"page.evaluate\", async () => {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n return (await this.runtime.evaluate(normalized)).value;\n });\n }\n\n async addInitScript(\n input: string | OpensteerAddInitScriptInput,\n ): Promise<OpensteerAddInitScriptOutput> {\n return wrapSdkError(\"page.addInitScript\", () =>\n this.runtime.addInitScript(\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input,\n ),\n );\n }\n\n async click(input: OpensteerClickOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.click\", () => {\n const { button, clickCount, modifiers, ...target } = input;\n return this.runtime.click({\n ...normalizeTargetOptions(target),\n ...(button === undefined ? {} : { button }),\n ...(clickCount === undefined ? {} : { clickCount }),\n ...(modifiers === undefined ? {} : { modifiers }),\n });\n });\n }\n\n async hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.hover\", () => this.runtime.hover(normalizeTargetOptions(input)));\n }\n\n async input(input: OpensteerInputOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.input\", () =>\n this.runtime.input({\n ...normalizeTargetOptions(input),\n text: input.text,\n ...(input.pressEnter === undefined ? {} : { pressEnter: input.pressEnter }),\n }),\n );\n }\n\n async scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult> {\n return wrapSdkError(\"dom.scroll\", () =>\n this.runtime.scroll({\n ...normalizeTargetOptions(input),\n direction: input.direction,\n amount: input.amount,\n }),\n );\n }\n\n async extract(input: OpensteerExtractOptions): Promise<unknown> {\n return wrapSdkError(\"extract\", async () => (await this.runtime.extract(input)).data);\n }\n\n async waitForPage(\n input: OpensteerWaitForPageOptions = {},\n ): Promise<OpensteerPageListOutput[\"pages\"][number]> {\n return wrapSdkError(\"page.waitForPage\", async () => {\n const baseline = new Set((await this.runtime.listPages()).pages.map((page) => page.pageRef));\n const timeoutAt = Date.now() + (input.timeoutMs ?? 30_000);\n const pollIntervalMs = input.pollIntervalMs ?? 100;\n\n while (true) {\n const match = (await this.runtime.listPages()).pages.find((page) => {\n if (baseline.has(page.pageRef)) {\n return false;\n }\n if (input.openerPageRef !== undefined && page.openerPageRef !== input.openerPageRef) {\n return false;\n }\n if (input.urlIncludes !== undefined && !page.url.includes(input.urlIncludes)) {\n return false;\n }\n return true;\n });\n if (match !== undefined) {\n return match;\n }\n if (Date.now() >= timeoutAt) {\n throw new OpensteerProtocolError(\"timeout\", \"waitForPage timed out\");\n }\n await delay(pollIntervalMs);\n }\n });\n }\n\n async cookies(domain?: string): Promise<OpensteerCookieJar> {\n return wrapSdkError(\n \"session.cookies\",\n async () =>\n new SessionCookieJar(await this.runtime.getCookies(domain === undefined ? {} : { domain })),\n );\n }\n\n async storage(\n domain?: string,\n type: OpensteerStorageArea = \"local\",\n ): Promise<OpensteerStorageMap> {\n return wrapSdkError(\"session.storage\", async () => {\n const snapshot = await this.runtime.getStorageSnapshot(\n domain === undefined ? {} : { domain },\n );\n const domainSnapshot = pickStorageDomainSnapshot(snapshot, domain);\n if (domainSnapshot === undefined) {\n return {};\n }\n const entries =\n type === \"local\" ? domainSnapshot.localStorage : domainSnapshot.sessionStorage;\n return Object.fromEntries(entries.map((entry) => [entry.key, entry.value]));\n });\n }\n\n async state(domain?: string): Promise<OpensteerBrowserState> {\n return wrapSdkError(\"session.state\", () =>\n this.runtime.getBrowserState(domain === undefined ? {} : { domain }),\n );\n }\n\n async fetch(url: string, options: OpensteerFetchOptions = {}): Promise<Response> {\n return wrapSdkError(\"session.fetch\", async () => {\n const input = buildFetchInput(url, options);\n const result = await this.runtime.fetch(input);\n if (result.response === undefined) {\n throw new OpensteerProtocolError(\n \"operation-failed\",\n result.note ?? `session.fetch did not produce a response for ${url}`,\n );\n }\n return toResponse(result.response);\n });\n }\n\n async computerExecute(\n input: OpensteerComputerExecuteOptions,\n ): Promise<OpensteerComputerExecuteOutput> {\n return wrapSdkError(\"session.computerExecute\", () => this.runtime.computerExecute(input));\n }\n\n async route(input: OpensteerRouteOptions): Promise<OpensteerRouteRegistration> {\n return wrapSdkError(\"session.route\", () =>\n this.requireOwnedInstrumentationRuntime(\"route\").route(input),\n );\n }\n\n async interceptScript(\n input: OpensteerInterceptScriptOptions,\n ): Promise<OpensteerRouteRegistration> {\n return wrapSdkError(\"session.interceptScript\", () =>\n this.requireOwnedInstrumentationRuntime(\"interceptScript\").interceptScript(input),\n );\n }\n\n async close(): Promise<OpensteerSessionCloseOutput> {\n return wrapSdkError(\"session.close\", async () => {\n if (this.browserManager === undefined || this.browserManager.mode === \"temporary\") {\n return this.runtime.close();\n }\n\n const output = await this.runtime.close();\n await this.browserManager.close();\n return output;\n });\n }\n\n async disconnect(): Promise<void> {\n return wrapSdkError(\"session.disconnect\", () => this.runtime.disconnect());\n }\n\n private requireOwnedInstrumentationRuntime(\n method: \"route\" | \"interceptScript\",\n ): OpensteerInstrumentableRuntime {\n if (\n typeof (this.runtime as Partial<OpensteerInstrumentableRuntime>).route === \"function\" &&\n typeof (this.runtime as Partial<OpensteerInstrumentableRuntime>).interceptScript ===\n \"function\"\n ) {\n return this.runtime as OpensteerDisconnectableRuntime & OpensteerInstrumentableRuntime;\n }\n throw new OpensteerProtocolError(\n \"unsupported-operation\",\n `${method}() is not available for this session runtime.`,\n );\n }\n}\n\nfunction createUnsupportedBrowserController(): OpensteerBrowserController {\n const fail = async (): Promise<never> => {\n throw new OpensteerProtocolError(\n \"unsupported-operation\",\n \"browser.* helpers are only available in local mode.\",\n );\n };\n\n return {\n status: fail,\n clone: fail,\n reset: fail,\n delete: fail,\n };\n}\n\nfunction normalizeTargetOptions(input: OpensteerTargetOptions): {\n readonly target: OpensteerTargetInput;\n readonly persist?: string;\n readonly captureNetwork?: string;\n} {\n const hasElement = input.element !== undefined;\n const hasSelector = input.selector !== undefined;\n if (hasElement && hasSelector) {\n throw new OpensteerProtocolError(\n \"invalid-argument\",\n \"Specify exactly one of element, selector, or persist.\",\n );\n }\n\n if (hasElement) {\n return {\n target: {\n kind: \"element\",\n element: input.element,\n },\n ...(input.persist === undefined ? {} : { persist: input.persist }),\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n }\n\n if (hasSelector) {\n return {\n target: {\n kind: \"selector\",\n selector: input.selector,\n },\n ...(input.persist === undefined ? {} : { persist: input.persist }),\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n }\n\n if (input.persist === undefined) {\n throw new OpensteerProtocolError(\n \"invalid-argument\",\n \"Specify exactly one of element, selector, or persist.\",\n );\n }\n\n return {\n target: {\n kind: \"persist\",\n persist: input.persist,\n },\n ...(input.captureNetwork === undefined ? {} : { captureNetwork: input.captureNetwork }),\n };\n}\n\nfunction pickStorageDomainSnapshot(\n snapshot: {\n readonly domains: readonly OpensteerStorageDomainSnapshot[];\n },\n domain: string | undefined,\n): OpensteerStorageDomainSnapshot | undefined {\n if (snapshot.domains.length === 0) {\n return undefined;\n }\n if (domain === undefined) {\n return snapshot.domains[0];\n }\n return snapshot.domains.find((entry) => entry.domain === domain);\n}\n\nfunction buildFetchInput(url: string, options: OpensteerFetchOptions): OpensteerSessionFetchInput {\n const { body, ...rest } = options;\n return {\n url,\n ...rest,\n ...(body === undefined ? {} : { body: normalizeFetchBody(body, rest.headers) }),\n };\n}\n\nfunction normalizeFetchBody(\n body: string | OpensteerRequestBodyInput,\n headers: OpensteerSessionFetchInput[\"headers\"],\n): OpensteerRequestBodyInput {\n if (typeof body !== \"string\") {\n return body;\n }\n\n const contentType = findHeaderValue(headers, \"content-type\");\n return contentType === undefined ? { text: body } : { text: body, contentType };\n}\n\nfunction findHeaderValue(\n headers: OpensteerSessionFetchInput[\"headers\"],\n headerName: string,\n): string | undefined {\n if (headers === undefined) {\n return undefined;\n }\n\n const match = Object.entries(headers).find(\n ([name]) => name.toLowerCase() === headerName.toLowerCase(),\n );\n return match === undefined ? undefined : String(match[1]);\n}\n\nfunction toResponse(response: OpensteerRequestResponseResult): Response {\n return new Response(decodeBody(response), {\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.map((header) => [header.name, header.value])),\n });\n}\n\nfunction decodeBody(response: OpensteerRequestResponseResult): Uint8Array | undefined {\n if (response.body === undefined) {\n return undefined;\n }\n return Uint8Array.from(Buffer.from(response.body.data, \"base64\"));\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { filePathToUri, resolveStoragePath, encodePathSegment, ensureDirectory, pathExists, readJsonFile, writeJsonFileAtomic, normalizeTimestamp, withFilesystemLock, resolveLocalViewPreferencesPath, resolveLocalViewServiceLockDir, readLocalViewServiceState, isLocalViewServiceStateLive, clearLocalViewServiceState, getLocalViewServiceStateLiveness, clearPersistedSessionRecord, writePersistedSessionRecord, isProcessRunning, readPersistedLocalBrowserSessionRecord, buildLocalViewSessionId, selectAttachBrowserCandidate, resolveChromeExecutablePath, readDevToolsActivePort, inspectCdpEndpoint, normalizeNonEmptyString, toCanonicalJsonValue, canonicalJsonString, sha256Hex, joinStoragePath, writeBufferIfMissing, writeJsonFileExclusive, isAlreadyExistsError, readBinaryFile, listJsonFiles, expandHome, createLocalViewSessionManifest, writeLocalViewSessionManifest, deleteLocalViewSessionManifest, CURRENT_PROCESS_OWNER, getProcessLiveness, processOwnersEqual, parseProcessOwner } from './chunk-T5P2QGZ3.js';
1
+ import { filePathToUri, resolveStoragePath, encodePathSegment, ensureDirectory, pathExists, readJsonFile, writeJsonFileAtomic, normalizeTimestamp, withFilesystemLock, resolveLocalViewPreferencesPath, resolveLocalViewServiceLockDir, readLocalViewServiceState, isLocalViewServiceStateLive, clearLocalViewServiceState, getLocalViewServiceStateLiveness, clearPersistedSessionRecord, writePersistedSessionRecord, isAttachedLocalBrowserSessionReachable, isProcessRunning, readPersistedLocalBrowserSessionRecord, getPersistedLocalBrowserSessionOwnership, buildLocalViewSessionId, inspectCdpEndpoint, selectAttachBrowserCandidate, resolveChromeExecutablePath, readDevToolsActivePort, normalizeNonEmptyString, toCanonicalJsonValue, canonicalJsonString, sha256Hex, joinStoragePath, writeBufferIfMissing, writeJsonFileExclusive, isAlreadyExistsError, readBinaryFile, listJsonFiles, expandHome, createLocalViewSessionManifest, writeLocalViewSessionManifest, deleteLocalViewSessionManifest, CURRENT_PROCESS_OWNER, getProcessLiveness, processOwnersEqual, parseProcessOwner } from './chunk-U4BUCIZ4.js';
2
2
  import path7, { join, resolve, dirname, relative } from 'path';
3
3
  import { randomBytes, randomUUID } from 'crypto';
4
4
  import { spawn } from 'child_process';
@@ -3473,7 +3473,7 @@ var OpensteerBrowserManager = class {
3473
3473
  }
3474
3474
  const liveRecord = await this.readLivePersistentBrowser(await this.ensureWorkspaceStore());
3475
3475
  return {
3476
- mode: this.mode,
3476
+ mode: liveRecord?.ownership === "attached" ? "attach" : this.mode,
3477
3477
  engine: liveRecord?.engine ?? this.engineName,
3478
3478
  ...this.workspace === void 0 ? {} : { workspace: this.workspace },
3479
3479
  live: liveRecord !== void 0
@@ -3601,6 +3601,7 @@ var OpensteerBrowserManager = class {
3601
3601
  });
3602
3602
  const liveRecord = {
3603
3603
  mode: "persistent",
3604
+ ownership: "owned",
3604
3605
  engine: "abp",
3605
3606
  baseUrl: launched.baseUrl,
3606
3607
  remoteDebuggingUrl: launched.remoteDebuggingUrl,
@@ -3687,11 +3688,78 @@ var OpensteerBrowserManager = class {
3687
3688
  }
3688
3689
  async createAttachEngine() {
3689
3690
  const endpoint = await resolveAttachEndpoint(this.browserOptions);
3690
- return this.createAttachedEngine({
3691
- endpoint,
3692
- ...this.browserOptions?.headers === void 0 ? {} : { headers: this.browserOptions.headers },
3693
- freshTab: this.browserOptions?.freshTab ?? true,
3694
- onDispose: async () => void 0
3691
+ if (this.workspace === void 0) {
3692
+ return this.createAttachedEngine({
3693
+ endpoint,
3694
+ ...this.browserOptions?.headers === void 0 ? {} : { headers: this.browserOptions.headers },
3695
+ freshTab: this.browserOptions?.freshTab ?? true,
3696
+ onDispose: async () => void 0
3697
+ });
3698
+ }
3699
+ const workspace = await this.ensureWorkspaceStore();
3700
+ return workspace.lock(async () => {
3701
+ const live = await this.readLivePersistentBrowser(workspace);
3702
+ if (live) {
3703
+ if (live.engine !== "playwright") {
3704
+ throw new Error(
3705
+ `workspace "${this.workspace}" already has a live ${live.engine} browser. Close it before attaching a Playwright browser.`
3706
+ );
3707
+ }
3708
+ if (live.ownership !== "attached") {
3709
+ throw new Error(
3710
+ `workspace "${this.workspace}" already has a live Opensteer-owned browser. Close it before attaching another browser.`
3711
+ );
3712
+ }
3713
+ if (live.endpoint === void 0) {
3714
+ throw new Error("workspace live browser record is missing a DevTools endpoint.");
3715
+ }
3716
+ if (live.endpoint !== endpoint) {
3717
+ throw new Error(
3718
+ `workspace "${this.workspace}" is already attached to a different browser endpoint. Close it before reattaching.`
3719
+ );
3720
+ }
3721
+ await bestEffortRegisterLocalViewSession({
3722
+ rootPath: workspace.rootPath,
3723
+ ...this.workspace === void 0 ? {} : { workspace: this.workspace },
3724
+ live: toPersistedLocalBrowserSessionRecord(this.workspace, live),
3725
+ ownership: "attached"
3726
+ });
3727
+ return this.createAttachedEngine({
3728
+ endpoint: live.endpoint,
3729
+ ...this.browserOptions?.headers === void 0 ? {} : { headers: this.browserOptions.headers },
3730
+ freshTab: this.browserOptions?.freshTab ?? true,
3731
+ onDispose: async () => void 0
3732
+ });
3733
+ }
3734
+ const liveRecord = {
3735
+ mode: "persistent",
3736
+ ownership: "attached",
3737
+ engine: "playwright",
3738
+ endpoint,
3739
+ pid: 0,
3740
+ startedAt: Date.now(),
3741
+ userDataDir: workspace.browserUserDataDir
3742
+ };
3743
+ await this.writeLivePersistentBrowser(workspace, liveRecord);
3744
+ const persistedLiveRecord = toPersistedLocalBrowserSessionRecord(this.workspace, liveRecord);
3745
+ await bestEffortRegisterLocalViewSession({
3746
+ rootPath: workspace.rootPath,
3747
+ ...this.workspace === void 0 ? {} : { workspace: this.workspace },
3748
+ live: persistedLiveRecord,
3749
+ ownership: "attached"
3750
+ });
3751
+ try {
3752
+ return await this.createAttachedEngine({
3753
+ endpoint,
3754
+ ...this.browserOptions?.headers === void 0 ? {} : { headers: this.browserOptions.headers },
3755
+ freshTab: this.browserOptions?.freshTab ?? true,
3756
+ onDispose: async () => void 0
3757
+ });
3758
+ } catch (error) {
3759
+ await this.unregisterLocalViewSessionForRecord(workspace.rootPath, persistedLiveRecord);
3760
+ await clearPersistedSessionRecord(workspace.rootPath, "local").catch(() => void 0);
3761
+ throw error;
3762
+ }
3695
3763
  });
3696
3764
  }
3697
3765
  async createPersistentEngine() {
@@ -3711,7 +3779,7 @@ var OpensteerBrowserManager = class {
3711
3779
  rootPath: workspace.rootPath,
3712
3780
  ...this.workspace === void 0 ? {} : { workspace: this.workspace },
3713
3781
  live: toPersistedLocalBrowserSessionRecord(this.workspace, live),
3714
- ownership: "owned"
3782
+ ownership: live.ownership
3715
3783
  });
3716
3784
  return this.createAttachedEngine({
3717
3785
  endpoint: live.endpoint,
@@ -3727,6 +3795,7 @@ var OpensteerBrowserManager = class {
3727
3795
  });
3728
3796
  const liveRecord = {
3729
3797
  mode: "persistent",
3798
+ ownership: "owned",
3730
3799
  engine: "playwright",
3731
3800
  endpoint: launched.endpoint,
3732
3801
  pid: launched.pid,
@@ -3856,7 +3925,20 @@ var OpensteerBrowserManager = class {
3856
3925
  if (live === void 0) {
3857
3926
  return void 0;
3858
3927
  }
3928
+ if (live.ownership === "attached") {
3929
+ const attachedRecord = toPersistedLocalBrowserSessionRecord(this.workspace, live);
3930
+ if (!await isAttachedLocalBrowserSessionReachable(attachedRecord)) {
3931
+ await this.unregisterLocalViewSessionForRecord(workspace.rootPath, attachedRecord);
3932
+ await clearPersistedSessionRecord(workspace.rootPath, "local").catch(() => void 0);
3933
+ return void 0;
3934
+ }
3935
+ return live;
3936
+ }
3859
3937
  if (!isProcessRunning(live.pid)) {
3938
+ await this.unregisterLocalViewSessionForRecord(
3939
+ workspace.rootPath,
3940
+ toPersistedLocalBrowserSessionRecord(this.workspace, live)
3941
+ );
3860
3942
  await clearPersistedSessionRecord(workspace.rootPath, "local").catch(() => void 0);
3861
3943
  return void 0;
3862
3944
  }
@@ -3904,6 +3986,10 @@ var OpensteerBrowserManager = class {
3904
3986
  workspace.rootPath,
3905
3987
  toPersistedLocalBrowserSessionRecord(this.workspace, live)
3906
3988
  );
3989
+ if (live.ownership === "attached") {
3990
+ await clearPersistedSessionRecord(workspace.rootPath, "local").catch(() => void 0);
3991
+ return;
3992
+ }
3907
3993
  if (live.engine === "playwright") {
3908
3994
  if (live.endpoint !== void 0) {
3909
3995
  await requestBrowserClose(live.endpoint).catch(() => void 0);
@@ -3932,10 +4018,18 @@ var OpensteerBrowserManager = class {
3932
4018
  }
3933
4019
  async unregisterLocalViewSessionForRecord(rootPath, record) {
3934
4020
  await bestEffortUnregisterLocalViewSession(
3935
- buildLocalViewSessionId({
4021
+ getPersistedLocalBrowserSessionOwnership(record) === "attached" ? buildLocalViewSessionId({
4022
+ rootPath,
4023
+ startedAt: record.startedAt,
4024
+ ownership: "attached",
4025
+ ...record.endpoint === void 0 ? {} : { endpoint: record.endpoint },
4026
+ ...record.baseUrl === void 0 ? {} : { baseUrl: record.baseUrl },
4027
+ ...record.remoteDebuggingUrl === void 0 ? {} : { remoteDebuggingUrl: record.remoteDebuggingUrl }
4028
+ }) : buildLocalViewSessionId({
3936
4029
  rootPath,
3937
- pid: record.pid,
3938
- startedAt: record.startedAt
4030
+ startedAt: record.startedAt,
4031
+ ownership: "owned",
4032
+ pid: record.pid
3939
4033
  })
3940
4034
  );
3941
4035
  }
@@ -3970,6 +4064,7 @@ function toPersistedLocalBrowserSessionRecord(workspace, live) {
3970
4064
  version: 1,
3971
4065
  provider: "local",
3972
4066
  ...workspace === void 0 ? {} : { workspace },
4067
+ ownership: live.ownership,
3973
4068
  engine: live.engine,
3974
4069
  ...live.endpoint === void 0 ? {} : { endpoint: live.endpoint },
3975
4070
  ...live.baseUrl === void 0 ? {} : { baseUrl: live.baseUrl },
@@ -3985,6 +4080,7 @@ function toPersistedLocalBrowserSessionRecord(workspace, live) {
3985
4080
  function toWorkspaceLiveBrowserRecord(record) {
3986
4081
  return {
3987
4082
  mode: "persistent",
4083
+ ownership: getPersistedLocalBrowserSessionOwnership(record),
3988
4084
  engine: record.engine,
3989
4085
  ...record.endpoint === void 0 ? {} : { endpoint: record.endpoint },
3990
4086
  ...record.baseUrl === void 0 ? {} : { baseUrl: record.baseUrl },
@@ -4011,7 +4107,12 @@ function isAttachBrowserOptions(browser) {
4011
4107
  async function resolveAttachEndpoint(browser) {
4012
4108
  const endpoint = browser?.endpoint?.trim();
4013
4109
  if (endpoint && endpoint.length > 0) {
4014
- return endpoint;
4110
+ const inspected = await inspectCdpEndpoint({
4111
+ endpoint,
4112
+ ...browser?.headers === void 0 ? {} : { headers: browser.headers },
4113
+ timeoutMs: DEFAULT_TIMEOUT_MS
4114
+ });
4115
+ return inspected.endpoint;
4015
4116
  }
4016
4117
  const selection = await selectAttachBrowserCandidate({
4017
4118
  timeoutMs: DEFAULT_TIMEOUT_MS
@@ -4358,5 +4459,5 @@ async function sleep2(ms) {
4358
4459
  }
4359
4460
 
4360
4461
  export { DEFAULT_OPENSTEER_ENGINE, JSON_SCHEMA_DRAFT_2020_12, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerBrowserManager, OpensteerProtocolError, arraySchema, assertSupportedEngineOptions, buildLocalViewSessionUrl, createArtifactStore, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerError, defineSchema, ensureLocalViewServiceRunning, enumSchema, integerSchema, isOpensteerProtocolError, literalSchema, manifestToExternalBinaryLocation, normalizeObservabilityConfig, normalizeObservationContext, normalizeOpensteerEngineName, normalizeWorkspaceId, numberSchema, objectSchema, oneOfSchema, opensteerCapabilitySetSchema, opensteerErrorCodes, opensteerErrorSchema, recordSchema, resolveFilesystemWorkspacePath, resolveOpensteerEngineName, setLocalViewMode, stopLocalViewService, stringSchema, toOpensteerError };
4361
- //# sourceMappingURL=chunk-3XBQRZZC.js.map
4362
- //# sourceMappingURL=chunk-3XBQRZZC.js.map
4462
+ //# sourceMappingURL=chunk-PJXN7HED.js.map
4463
+ //# sourceMappingURL=chunk-PJXN7HED.js.map