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.
- package/dist/{chunk-BVRIPCWA.js → chunk-3OHKIPBD.js} +316 -465
- package/dist/chunk-3OHKIPBD.js.map +1 -0
- package/dist/{chunk-L4NF74KI.js → chunk-52UNH5UW.js} +5 -5
- package/dist/{chunk-L4NF74KI.js.map → chunk-52UNH5UW.js.map} +1 -1
- package/dist/{chunk-3XBQRZZC.js → chunk-PJXN7HED.js} +115 -14
- package/dist/chunk-PJXN7HED.js.map +1 -0
- package/dist/{chunk-3I3A5OLB.js → chunk-R33BXCMQ.js} +16 -7
- package/dist/chunk-R33BXCMQ.js.map +1 -0
- package/dist/{chunk-T5P2QGZ3.js → chunk-U4BUCIZ4.js} +153 -12
- package/dist/chunk-U4BUCIZ4.js.map +1 -0
- package/dist/cli/bin.cjs +663 -544
- package/dist/cli/bin.cjs.map +1 -1
- package/dist/cli/bin.js +66 -50
- package/dist/cli/bin.js.map +1 -1
- package/dist/index.cjs +584 -495
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -50
- package/dist/index.d.ts +26 -50
- package/dist/index.js +4 -4
- package/dist/local-view/public/assets/app.js +10 -1
- package/dist/local-view/serve-entry.cjs +687 -494
- package/dist/local-view/serve-entry.cjs.map +1 -1
- package/dist/local-view/serve-entry.js +2 -2
- package/dist/opensteer-CY2QUJEG.js +6 -0
- package/dist/{opensteer-UGA6YBRN.js.map → opensteer-CY2QUJEG.js.map} +1 -1
- package/dist/{session-control-U3L5H2ZI.js → session-control-FIP6ZJLH.js} +4 -4
- package/dist/{session-control-U3L5H2ZI.js.map → session-control-FIP6ZJLH.js.map} +1 -1
- package/package.json +7 -7
- package/dist/chunk-3I3A5OLB.js.map +0 -1
- package/dist/chunk-3XBQRZZC.js.map +0 -1
- package/dist/chunk-BVRIPCWA.js.map +0 -1
- package/dist/chunk-T5P2QGZ3.js.map +0 -1
- package/dist/opensteer-UGA6YBRN.js +0 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { resolveOpensteerEnvironment, resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, isBrowserCoreError } from './chunk-
|
|
2
|
-
import { OpensteerBrowserManager, isOpensteerProtocolError, OpensteerProtocolError, toOpensteerError, createOpensteerError } from './chunk-
|
|
3
|
-
import { OpensteerAttachAmbiguousError } from './chunk-
|
|
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-
|
|
458
|
-
//# sourceMappingURL=chunk-
|
|
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,
|
|
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
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
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:
|
|
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
|
-
|
|
3938
|
-
|
|
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
|
-
|
|
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-
|
|
4362
|
-
//# sourceMappingURL=chunk-
|
|
4462
|
+
//# sourceMappingURL=chunk-PJXN7HED.js.map
|
|
4463
|
+
//# sourceMappingURL=chunk-PJXN7HED.js.map
|