opensteer 0.6.2 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/opensteer.mjs +94 -8
- package/dist/{browser-profile-client-DK9qa_Dj.d.cts → browser-profile-client-D6PuRefA.d.cts} +1 -1
- package/dist/{browser-profile-client-CaL-mwqs.d.ts → browser-profile-client-OUHaODro.d.ts} +1 -1
- package/dist/{chunk-7RMY26CM.js → chunk-54KNQTOL.js} +172 -55
- package/dist/{chunk-WJI7TGBQ.js → chunk-6B6LOYU3.js} +1 -1
- package/dist/{chunk-F2VDVOJO.js → chunk-G6V2DJRN.js} +451 -609
- package/dist/chunk-K5CL76MG.js +81 -0
- package/dist/{chunk-WDRMHPWL.js → chunk-KPPOTU3D.js} +159 -180
- package/dist/cli/auth.cjs +186 -95
- package/dist/cli/auth.d.cts +1 -1
- package/dist/cli/auth.d.ts +1 -1
- package/dist/cli/auth.js +2 -2
- package/dist/cli/local-profile.cjs +197 -0
- package/dist/cli/local-profile.d.cts +18 -0
- package/dist/cli/local-profile.d.ts +18 -0
- package/dist/cli/local-profile.js +97 -0
- package/dist/cli/profile.cjs +1747 -1279
- package/dist/cli/profile.d.cts +2 -2
- package/dist/cli/profile.d.ts +2 -2
- package/dist/cli/profile.js +469 -7
- package/dist/cli/server.cjs +759 -257
- package/dist/cli/server.js +69 -16
- package/dist/index.cjs +688 -238
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +4 -3
- package/dist/{types-BxiRblC7.d.cts → types-BWItZPl_.d.cts} +31 -13
- package/dist/{types-BxiRblC7.d.ts → types-BWItZPl_.d.ts} +31 -13
- package/package.json +2 -2
- package/skills/opensteer/SKILL.md +34 -14
- package/skills/opensteer/references/cli-reference.md +1 -1
- package/skills/opensteer/references/examples.md +5 -3
- package/skills/opensteer/references/sdk-reference.md +16 -14
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as playwright from 'playwright';
|
|
2
2
|
import { Page, BrowserContext, ElementHandle, Cookie, Browser } from 'playwright';
|
|
3
|
-
import { a as OpensteerConfig, L as LaunchOptions, G as GotoOptions, S as SnapshotOptions,
|
|
4
|
-
export {
|
|
5
|
-
import { A as ActionFailure, e as ActionFailureCode, C as CloudErrorCode, f as CloudActionFailureDetails, g as CloudSessionCreateRequest, h as CloudSessionCreateResponse, i as CloudSelectorCacheImportRequest, j as CloudSelectorCacheImportResponse, k as CloudActionMethod, l as CloudSelectorCacheImportEntry } from './browser-profile-client-
|
|
6
|
-
export { m as ActionFailureBlocker, n as ActionFailureClassificationSource, o as ActionFailureDetails, p as BrowserProfileArchiveFormat, q as BrowserProfileClient, c as BrowserProfileCreateRequest, d as BrowserProfileDescriptor, a as BrowserProfileListRequest, b as BrowserProfileListResponse, r as BrowserProfileProxyPolicy, B as BrowserProfileStatus, s as CloudActionFailure, t as CloudActionRequest, u as CloudActionResponse, v as CloudActionSuccess, w as CloudBrowserProfileLaunchPreference, x as CloudFingerprintMode, y as CloudSessionContractVersion, z as CloudSessionLaunchConfig, D as CloudSessionSourceType, E as CloudSessionSummary, F as cloudSessionContractVersion } from './browser-profile-client-
|
|
3
|
+
import { a as OpensteerConfig, L as LaunchOptions, b as OpensteerLocalProfileDescriptor, c as OpensteerRealBrowserOptions, G as GotoOptions, S as SnapshotOptions, d as StateResult, e as ScreenshotOptions, f as ClickOptions, A as ActionResult, H as HoverOptions, I as InputOptions, g as SelectOptions, h as ScrollOptions, T as TabInfo, C as CookieParam, B as BaseActionOptions, i as BoundingBox, F as FileUploadOptions, E as ExtractOptions, j as ExtractFromPlanOptions, k as ExtractionRunResult, l as OpensteerCursorState, m as OpensteerAgentConfig, n as OpensteerAgentInstance, o as ElementPath, p as SnapshotMode, q as AiResolveCallback, r as AiExtractCallback, O as OpensteerAuthScheme, s as OpensteerAgentProvider, t as OpensteerAgentAction, u as OpensteerAgentResult, v as OpensteerAgentUsage, w as OpensteerCursorStyle, x as OpensteerCursorConfig, y as OpensteerAgentExecuteOptions } from './types-BWItZPl_.cjs';
|
|
4
|
+
export { z as ActionWaitOptions, D as AiExtractArgs, J as AiExtractResult, K as AiResolveArgs, M as AiResolveCallbackResult, N as AiResolveResult, P as AttributeMatchClause, Q as ContextHop, R as DomPath, U as ExtractSchema, V as ExtractSchemaField, W as ExtractSchemaValue, X as ExtractionFieldPlan, Y as ExtractionPlan, Z as MatchClause, _ as MatchOperator, $ as OpensteerAgentMode, a0 as OpensteerAgentModelConfig, a1 as OpensteerBrowserConfig, a2 as OpensteerCloudAnnouncePolicy, a3 as OpensteerCloudBrowserProfileOptions, a4 as OpensteerCloudConfig, a5 as OpensteerCloudOptions, a6 as OpensteerCursorColor, a7 as OpensteerCursorProfile, a8 as OpensteerLocalBrowserMode, a9 as OpensteerStorageConfig, aa as PathNode, ab as PathNodePosition, ac as PositionMatchClause } from './types-BWItZPl_.cjs';
|
|
5
|
+
import { A as ActionFailure, e as ActionFailureCode, C as CloudErrorCode, f as CloudActionFailureDetails, g as CloudSessionCreateRequest, h as CloudSessionCreateResponse, i as CloudSelectorCacheImportRequest, j as CloudSelectorCacheImportResponse, k as CloudActionMethod, l as CloudSelectorCacheImportEntry } from './browser-profile-client-D6PuRefA.cjs';
|
|
6
|
+
export { m as ActionFailureBlocker, n as ActionFailureClassificationSource, o as ActionFailureDetails, p as BrowserProfileArchiveFormat, q as BrowserProfileClient, c as BrowserProfileCreateRequest, d as BrowserProfileDescriptor, a as BrowserProfileListRequest, b as BrowserProfileListResponse, r as BrowserProfileProxyPolicy, B as BrowserProfileStatus, s as CloudActionFailure, t as CloudActionRequest, u as CloudActionResponse, v as CloudActionSuccess, w as CloudBrowserProfileLaunchPreference, x as CloudFingerprintMode, y as CloudSessionContractVersion, z as CloudSessionLaunchConfig, D as CloudSessionSourceType, E as CloudSessionSummary, F as cloudSessionContractVersion } from './browser-profile-client-D6PuRefA.cjs';
|
|
7
7
|
|
|
8
8
|
interface RegistryEntry {
|
|
9
9
|
file: string;
|
|
@@ -85,6 +85,8 @@ declare class Opensteer {
|
|
|
85
85
|
private buildCloudSessionLaunchConfig;
|
|
86
86
|
launch(options?: LaunchOptions): Promise<void>;
|
|
87
87
|
static from(page: Page, config?: OpensteerConfig): Opensteer;
|
|
88
|
+
static listLocalProfiles(userDataDir?: string): OpensteerLocalProfileDescriptor[];
|
|
89
|
+
static fromSystemChrome(browser?: OpensteerRealBrowserOptions, config?: OpensteerConfig): Opensteer;
|
|
88
90
|
close(): Promise<void>;
|
|
89
91
|
private syncLocalSelectorCacheToCloud;
|
|
90
92
|
goto(url: string, options?: GotoOptions): Promise<void>;
|
|
@@ -645,4 +647,4 @@ declare class SvgCursorRenderer implements CursorRenderer {
|
|
|
645
647
|
private handleError;
|
|
646
648
|
}
|
|
647
649
|
|
|
648
|
-
export { type ActionExecutionResult, ActionFailure, ActionFailureCode, ActionResult, ActionWsClient, AiExtractCallback, type AiModelConfig, AiResolveCallback, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, BaseActionOptions, BoundingBox, CdpOverlayCursorRenderer, ClickOptions, CloudActionFailureDetails, CloudActionMethod, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, CloudErrorCode, CloudSelectorCacheImportEntry, CloudSelectorCacheImportRequest, CloudSelectorCacheImportResponse, CloudSessionClient, CloudSessionCreateRequest, CloudSessionCreateResponse, CookieParam, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CursorCapabilityReason, CursorController, type CursorIntent, type CursorMotionPlan, type CursorPoint, type CursorRenderer, type CursorStatus, ElementPath, ElementPathError, type ElementPathErrorCode, ExtractFromPlanOptions, ExtractOptions, ExtractionRunResult, type FieldSelector, FileUploadOptions, GotoOptions, HoverOptions, InputOptions, LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, OPENSTEER_HIDDEN_ATTR, OPENSTEER_INTERACTIVE_ATTR, OPENSTEER_SCROLLABLE_ATTR, OS_BOUNDARY_ATTR, OS_IFRAME_BOUNDARY_TAG, OS_NODE_ID_ATTR, OS_SHADOW_BOUNDARY_TAG, OS_UNAVAILABLE_ATTR, Opensteer, OpensteerActionError, OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, OpensteerAgentInstance, OpensteerAgentProvider, OpensteerAgentProviderError, OpensteerAgentResult, OpensteerAgentUsage, OpensteerAuthScheme, OpensteerCloudError, OpensteerConfig, OpensteerCuaAgentHandler, OpensteerCursorConfig, OpensteerCursorState, OpensteerCursorStyle, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, ScreenshotOptions, ScrollOptions, SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, SnapshotMode, SnapshotOptions, StateResult, SvgCursorRenderer, TabInfo, buildArrayFieldPathCandidates, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, planSnappyCursorMotion, prepareSnapshot, pressKey, queryAllByElementPath, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
|
|
650
|
+
export { type ActionExecutionResult, ActionFailure, ActionFailureCode, ActionResult, ActionWsClient, AiExtractCallback, type AiModelConfig, AiResolveCallback, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, BaseActionOptions, BoundingBox, CdpOverlayCursorRenderer, ClickOptions, CloudActionFailureDetails, CloudActionMethod, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, CloudErrorCode, CloudSelectorCacheImportEntry, CloudSelectorCacheImportRequest, CloudSelectorCacheImportResponse, CloudSessionClient, CloudSessionCreateRequest, CloudSessionCreateResponse, CookieParam, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CursorCapabilityReason, CursorController, type CursorIntent, type CursorMotionPlan, type CursorPoint, type CursorRenderer, type CursorStatus, ElementPath, ElementPathError, type ElementPathErrorCode, ExtractFromPlanOptions, ExtractOptions, ExtractionRunResult, type FieldSelector, FileUploadOptions, GotoOptions, HoverOptions, InputOptions, LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, OPENSTEER_HIDDEN_ATTR, OPENSTEER_INTERACTIVE_ATTR, OPENSTEER_SCROLLABLE_ATTR, OS_BOUNDARY_ATTR, OS_IFRAME_BOUNDARY_TAG, OS_NODE_ID_ATTR, OS_SHADOW_BOUNDARY_TAG, OS_UNAVAILABLE_ATTR, Opensteer, OpensteerActionError, OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, OpensteerAgentInstance, OpensteerAgentProvider, OpensteerAgentProviderError, OpensteerAgentResult, OpensteerAgentUsage, OpensteerAuthScheme, OpensteerCloudError, OpensteerConfig, OpensteerCuaAgentHandler, OpensteerCursorConfig, OpensteerCursorState, OpensteerCursorStyle, OpensteerLocalProfileDescriptor, OpensteerRealBrowserOptions, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, ScreenshotOptions, ScrollOptions, SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, SnapshotMode, SnapshotOptions, StateResult, SvgCursorRenderer, TabInfo, buildArrayFieldPathCandidates, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, planSnappyCursorMotion, prepareSnapshot, pressKey, queryAllByElementPath, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as playwright from 'playwright';
|
|
2
2
|
import { Page, BrowserContext, ElementHandle, Cookie, Browser } from 'playwright';
|
|
3
|
-
import { a as OpensteerConfig, L as LaunchOptions, G as GotoOptions, S as SnapshotOptions,
|
|
4
|
-
export {
|
|
5
|
-
import { A as ActionFailure, e as ActionFailureCode, C as CloudErrorCode, f as CloudActionFailureDetails, g as CloudSessionCreateRequest, h as CloudSessionCreateResponse, i as CloudSelectorCacheImportRequest, j as CloudSelectorCacheImportResponse, k as CloudActionMethod, l as CloudSelectorCacheImportEntry } from './browser-profile-client-
|
|
6
|
-
export { m as ActionFailureBlocker, n as ActionFailureClassificationSource, o as ActionFailureDetails, p as BrowserProfileArchiveFormat, q as BrowserProfileClient, c as BrowserProfileCreateRequest, d as BrowserProfileDescriptor, a as BrowserProfileListRequest, b as BrowserProfileListResponse, r as BrowserProfileProxyPolicy, B as BrowserProfileStatus, s as CloudActionFailure, t as CloudActionRequest, u as CloudActionResponse, v as CloudActionSuccess, w as CloudBrowserProfileLaunchPreference, x as CloudFingerprintMode, y as CloudSessionContractVersion, z as CloudSessionLaunchConfig, D as CloudSessionSourceType, E as CloudSessionSummary, F as cloudSessionContractVersion } from './browser-profile-client-
|
|
3
|
+
import { a as OpensteerConfig, L as LaunchOptions, b as OpensteerLocalProfileDescriptor, c as OpensteerRealBrowserOptions, G as GotoOptions, S as SnapshotOptions, d as StateResult, e as ScreenshotOptions, f as ClickOptions, A as ActionResult, H as HoverOptions, I as InputOptions, g as SelectOptions, h as ScrollOptions, T as TabInfo, C as CookieParam, B as BaseActionOptions, i as BoundingBox, F as FileUploadOptions, E as ExtractOptions, j as ExtractFromPlanOptions, k as ExtractionRunResult, l as OpensteerCursorState, m as OpensteerAgentConfig, n as OpensteerAgentInstance, o as ElementPath, p as SnapshotMode, q as AiResolveCallback, r as AiExtractCallback, O as OpensteerAuthScheme, s as OpensteerAgentProvider, t as OpensteerAgentAction, u as OpensteerAgentResult, v as OpensteerAgentUsage, w as OpensteerCursorStyle, x as OpensteerCursorConfig, y as OpensteerAgentExecuteOptions } from './types-BWItZPl_.js';
|
|
4
|
+
export { z as ActionWaitOptions, D as AiExtractArgs, J as AiExtractResult, K as AiResolveArgs, M as AiResolveCallbackResult, N as AiResolveResult, P as AttributeMatchClause, Q as ContextHop, R as DomPath, U as ExtractSchema, V as ExtractSchemaField, W as ExtractSchemaValue, X as ExtractionFieldPlan, Y as ExtractionPlan, Z as MatchClause, _ as MatchOperator, $ as OpensteerAgentMode, a0 as OpensteerAgentModelConfig, a1 as OpensteerBrowserConfig, a2 as OpensteerCloudAnnouncePolicy, a3 as OpensteerCloudBrowserProfileOptions, a4 as OpensteerCloudConfig, a5 as OpensteerCloudOptions, a6 as OpensteerCursorColor, a7 as OpensteerCursorProfile, a8 as OpensteerLocalBrowserMode, a9 as OpensteerStorageConfig, aa as PathNode, ab as PathNodePosition, ac as PositionMatchClause } from './types-BWItZPl_.js';
|
|
5
|
+
import { A as ActionFailure, e as ActionFailureCode, C as CloudErrorCode, f as CloudActionFailureDetails, g as CloudSessionCreateRequest, h as CloudSessionCreateResponse, i as CloudSelectorCacheImportRequest, j as CloudSelectorCacheImportResponse, k as CloudActionMethod, l as CloudSelectorCacheImportEntry } from './browser-profile-client-OUHaODro.js';
|
|
6
|
+
export { m as ActionFailureBlocker, n as ActionFailureClassificationSource, o as ActionFailureDetails, p as BrowserProfileArchiveFormat, q as BrowserProfileClient, c as BrowserProfileCreateRequest, d as BrowserProfileDescriptor, a as BrowserProfileListRequest, b as BrowserProfileListResponse, r as BrowserProfileProxyPolicy, B as BrowserProfileStatus, s as CloudActionFailure, t as CloudActionRequest, u as CloudActionResponse, v as CloudActionSuccess, w as CloudBrowserProfileLaunchPreference, x as CloudFingerprintMode, y as CloudSessionContractVersion, z as CloudSessionLaunchConfig, D as CloudSessionSourceType, E as CloudSessionSummary, F as cloudSessionContractVersion } from './browser-profile-client-OUHaODro.js';
|
|
7
7
|
|
|
8
8
|
interface RegistryEntry {
|
|
9
9
|
file: string;
|
|
@@ -85,6 +85,8 @@ declare class Opensteer {
|
|
|
85
85
|
private buildCloudSessionLaunchConfig;
|
|
86
86
|
launch(options?: LaunchOptions): Promise<void>;
|
|
87
87
|
static from(page: Page, config?: OpensteerConfig): Opensteer;
|
|
88
|
+
static listLocalProfiles(userDataDir?: string): OpensteerLocalProfileDescriptor[];
|
|
89
|
+
static fromSystemChrome(browser?: OpensteerRealBrowserOptions, config?: OpensteerConfig): Opensteer;
|
|
88
90
|
close(): Promise<void>;
|
|
89
91
|
private syncLocalSelectorCacheToCloud;
|
|
90
92
|
goto(url: string, options?: GotoOptions): Promise<void>;
|
|
@@ -645,4 +647,4 @@ declare class SvgCursorRenderer implements CursorRenderer {
|
|
|
645
647
|
private handleError;
|
|
646
648
|
}
|
|
647
649
|
|
|
648
|
-
export { type ActionExecutionResult, ActionFailure, ActionFailureCode, ActionResult, ActionWsClient, AiExtractCallback, type AiModelConfig, AiResolveCallback, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, BaseActionOptions, BoundingBox, CdpOverlayCursorRenderer, ClickOptions, CloudActionFailureDetails, CloudActionMethod, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, CloudErrorCode, CloudSelectorCacheImportEntry, CloudSelectorCacheImportRequest, CloudSelectorCacheImportResponse, CloudSessionClient, CloudSessionCreateRequest, CloudSessionCreateResponse, CookieParam, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CursorCapabilityReason, CursorController, type CursorIntent, type CursorMotionPlan, type CursorPoint, type CursorRenderer, type CursorStatus, ElementPath, ElementPathError, type ElementPathErrorCode, ExtractFromPlanOptions, ExtractOptions, ExtractionRunResult, type FieldSelector, FileUploadOptions, GotoOptions, HoverOptions, InputOptions, LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, OPENSTEER_HIDDEN_ATTR, OPENSTEER_INTERACTIVE_ATTR, OPENSTEER_SCROLLABLE_ATTR, OS_BOUNDARY_ATTR, OS_IFRAME_BOUNDARY_TAG, OS_NODE_ID_ATTR, OS_SHADOW_BOUNDARY_TAG, OS_UNAVAILABLE_ATTR, Opensteer, OpensteerActionError, OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, OpensteerAgentInstance, OpensteerAgentProvider, OpensteerAgentProviderError, OpensteerAgentResult, OpensteerAgentUsage, OpensteerAuthScheme, OpensteerCloudError, OpensteerConfig, OpensteerCuaAgentHandler, OpensteerCursorConfig, OpensteerCursorState, OpensteerCursorStyle, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, ScreenshotOptions, ScrollOptions, SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, SnapshotMode, SnapshotOptions, StateResult, SvgCursorRenderer, TabInfo, buildArrayFieldPathCandidates, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, planSnappyCursorMotion, prepareSnapshot, pressKey, queryAllByElementPath, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
|
|
650
|
+
export { type ActionExecutionResult, ActionFailure, ActionFailureCode, ActionResult, ActionWsClient, AiExtractCallback, type AiModelConfig, AiResolveCallback, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, BaseActionOptions, BoundingBox, CdpOverlayCursorRenderer, ClickOptions, CloudActionFailureDetails, CloudActionMethod, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, CloudErrorCode, CloudSelectorCacheImportEntry, CloudSelectorCacheImportRequest, CloudSelectorCacheImportResponse, CloudSessionClient, CloudSessionCreateRequest, CloudSessionCreateResponse, CookieParam, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CursorCapabilityReason, CursorController, type CursorIntent, type CursorMotionPlan, type CursorPoint, type CursorRenderer, type CursorStatus, ElementPath, ElementPathError, type ElementPathErrorCode, ExtractFromPlanOptions, ExtractOptions, ExtractionRunResult, type FieldSelector, FileUploadOptions, GotoOptions, HoverOptions, InputOptions, LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, OPENSTEER_HIDDEN_ATTR, OPENSTEER_INTERACTIVE_ATTR, OPENSTEER_SCROLLABLE_ATTR, OS_BOUNDARY_ATTR, OS_IFRAME_BOUNDARY_TAG, OS_NODE_ID_ATTR, OS_SHADOW_BOUNDARY_TAG, OS_UNAVAILABLE_ATTR, Opensteer, OpensteerActionError, OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, OpensteerAgentInstance, OpensteerAgentProvider, OpensteerAgentProviderError, OpensteerAgentResult, OpensteerAgentUsage, OpensteerAuthScheme, OpensteerCloudError, OpensteerConfig, OpensteerCuaAgentHandler, OpensteerCursorConfig, OpensteerCursorState, OpensteerCursorStyle, OpensteerLocalProfileDescriptor, OpensteerRealBrowserOptions, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, ScreenshotOptions, ScrollOptions, SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, SnapshotMode, SnapshotOptions, StateResult, SvgCursorRenderer, TabInfo, buildArrayFieldPathCandidates, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, planSnappyCursorMotion, prepareSnapshot, pressKey, queryAllByElementPath, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BrowserProfileClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6B6LOYU3.js";
|
|
4
4
|
import {
|
|
5
5
|
ActionWsClient,
|
|
6
6
|
CounterResolutionError,
|
|
@@ -78,7 +78,7 @@ import {
|
|
|
78
78
|
switchTab,
|
|
79
79
|
typeText,
|
|
80
80
|
waitForVisualStability
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-G6V2DJRN.js";
|
|
82
82
|
import {
|
|
83
83
|
CloudCdpClient,
|
|
84
84
|
CloudSessionClient,
|
|
@@ -87,7 +87,8 @@ import {
|
|
|
87
87
|
cloudUnsupportedMethodError,
|
|
88
88
|
normalizeNamespace,
|
|
89
89
|
resolveNamespaceDir
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-KPPOTU3D.js";
|
|
91
|
+
import "./chunk-K5CL76MG.js";
|
|
91
92
|
import {
|
|
92
93
|
createResolveCallback
|
|
93
94
|
} from "./chunk-DN3GI5CH.js";
|
|
@@ -72,17 +72,33 @@ interface GotoOptions {
|
|
|
72
72
|
waitUntil?: 'commit' | 'domcontentloaded' | 'load' | 'networkidle';
|
|
73
73
|
settleMs?: number;
|
|
74
74
|
}
|
|
75
|
+
type OpensteerLocalBrowserMode = 'chromium' | 'real';
|
|
76
|
+
interface OpensteerLocalProfileDescriptor {
|
|
77
|
+
directory: string;
|
|
78
|
+
name: string;
|
|
79
|
+
}
|
|
80
|
+
interface OpensteerRealBrowserOptions {
|
|
81
|
+
headless?: boolean;
|
|
82
|
+
executablePath?: string;
|
|
83
|
+
userDataDir?: string;
|
|
84
|
+
profileDirectory?: string;
|
|
85
|
+
}
|
|
75
86
|
interface LaunchOptions {
|
|
76
87
|
headless?: boolean;
|
|
77
88
|
executablePath?: string;
|
|
78
89
|
slowMo?: number;
|
|
90
|
+
/** Sandbox-only context options. Not supported with cdpUrl or mode "real". */
|
|
79
91
|
context?: BrowserContextOptions;
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
|
|
92
|
+
/** Initial URL to open as part of owned real-browser startup. */
|
|
93
|
+
initialUrl?: string;
|
|
94
|
+
/** Local browser mode. Defaults to "chromium". */
|
|
95
|
+
mode?: OpensteerLocalBrowserMode;
|
|
96
|
+
/** Connect to a running CDP-enabled browser. Example: "http://localhost:9222" */
|
|
97
|
+
cdpUrl?: string;
|
|
98
|
+
/** Browser user-data root directory for real-browser mode. */
|
|
99
|
+
userDataDir?: string;
|
|
100
|
+
/** Browser profile directory name for real-browser mode. */
|
|
101
|
+
profileDirectory?: string;
|
|
86
102
|
/** Cloud browser profile preference. Applies only when cloud mode is enabled. */
|
|
87
103
|
cloudBrowserProfile?: OpensteerCloudBrowserProfileOptions;
|
|
88
104
|
/** Connection timeout in milliseconds. */
|
|
@@ -92,12 +108,14 @@ interface OpensteerBrowserConfig {
|
|
|
92
108
|
headless?: boolean;
|
|
93
109
|
executablePath?: string;
|
|
94
110
|
slowMo?: number;
|
|
95
|
-
/**
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
|
|
99
|
-
/** Browser
|
|
100
|
-
|
|
111
|
+
/** Local browser mode. Defaults to "chromium". */
|
|
112
|
+
mode?: OpensteerLocalBrowserMode;
|
|
113
|
+
/** Connect to a running CDP-enabled browser. Example: "http://localhost:9222" */
|
|
114
|
+
cdpUrl?: string;
|
|
115
|
+
/** Browser user-data root directory for real-browser mode. */
|
|
116
|
+
userDataDir?: string;
|
|
117
|
+
/** Browser profile directory name for real-browser mode. */
|
|
118
|
+
profileDirectory?: string;
|
|
101
119
|
}
|
|
102
120
|
interface OpensteerStorageConfig {
|
|
103
121
|
rootDir?: string;
|
|
@@ -324,4 +342,4 @@ interface OpensteerAgentInstance {
|
|
|
324
342
|
execute(instructionOrOptions: string | OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
|
|
325
343
|
}
|
|
326
344
|
|
|
327
|
-
export type {
|
|
345
|
+
export type { OpensteerAgentMode as $, ActionResult as A, BaseActionOptions as B, CookieParam as C, AiExtractArgs as D, ExtractOptions as E, FileUploadOptions as F, GotoOptions as G, HoverOptions as H, InputOptions as I, AiExtractResult as J, AiResolveArgs as K, LaunchOptions as L, AiResolveCallbackResult as M, AiResolveResult as N, OpensteerAuthScheme as O, AttributeMatchClause as P, ContextHop as Q, DomPath as R, SnapshotOptions as S, TabInfo as T, ExtractSchema as U, ExtractSchemaField as V, ExtractSchemaValue as W, ExtractionFieldPlan as X, ExtractionPlan as Y, MatchClause as Z, MatchOperator as _, OpensteerConfig as a, OpensteerAgentModelConfig as a0, OpensteerBrowserConfig as a1, OpensteerCloudAnnouncePolicy as a2, OpensteerCloudBrowserProfileOptions as a3, OpensteerCloudConfig as a4, OpensteerCloudOptions as a5, OpensteerCursorColor as a6, OpensteerCursorProfile as a7, OpensteerLocalBrowserMode as a8, OpensteerStorageConfig as a9, PathNode as aa, PathNodePosition as ab, PositionMatchClause as ac, OpensteerLocalProfileDescriptor as b, OpensteerRealBrowserOptions as c, StateResult as d, ScreenshotOptions as e, ClickOptions as f, SelectOptions as g, ScrollOptions as h, BoundingBox as i, ExtractFromPlanOptions as j, ExtractionRunResult as k, OpensteerCursorState as l, OpensteerAgentConfig as m, OpensteerAgentInstance as n, ElementPath as o, SnapshotMode as p, AiResolveCallback as q, AiExtractCallback as r, OpensteerAgentProvider as s, OpensteerAgentAction as t, OpensteerAgentResult as u, OpensteerAgentUsage as v, OpensteerCursorStyle as w, OpensteerCursorConfig as x, OpensteerAgentExecuteOptions as y, ActionWaitOptions as z };
|
|
@@ -72,17 +72,33 @@ interface GotoOptions {
|
|
|
72
72
|
waitUntil?: 'commit' | 'domcontentloaded' | 'load' | 'networkidle';
|
|
73
73
|
settleMs?: number;
|
|
74
74
|
}
|
|
75
|
+
type OpensteerLocalBrowserMode = 'chromium' | 'real';
|
|
76
|
+
interface OpensteerLocalProfileDescriptor {
|
|
77
|
+
directory: string;
|
|
78
|
+
name: string;
|
|
79
|
+
}
|
|
80
|
+
interface OpensteerRealBrowserOptions {
|
|
81
|
+
headless?: boolean;
|
|
82
|
+
executablePath?: string;
|
|
83
|
+
userDataDir?: string;
|
|
84
|
+
profileDirectory?: string;
|
|
85
|
+
}
|
|
75
86
|
interface LaunchOptions {
|
|
76
87
|
headless?: boolean;
|
|
77
88
|
executablePath?: string;
|
|
78
89
|
slowMo?: number;
|
|
90
|
+
/** Sandbox-only context options. Not supported with cdpUrl or mode "real". */
|
|
79
91
|
context?: BrowserContextOptions;
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
|
|
92
|
+
/** Initial URL to open as part of owned real-browser startup. */
|
|
93
|
+
initialUrl?: string;
|
|
94
|
+
/** Local browser mode. Defaults to "chromium". */
|
|
95
|
+
mode?: OpensteerLocalBrowserMode;
|
|
96
|
+
/** Connect to a running CDP-enabled browser. Example: "http://localhost:9222" */
|
|
97
|
+
cdpUrl?: string;
|
|
98
|
+
/** Browser user-data root directory for real-browser mode. */
|
|
99
|
+
userDataDir?: string;
|
|
100
|
+
/** Browser profile directory name for real-browser mode. */
|
|
101
|
+
profileDirectory?: string;
|
|
86
102
|
/** Cloud browser profile preference. Applies only when cloud mode is enabled. */
|
|
87
103
|
cloudBrowserProfile?: OpensteerCloudBrowserProfileOptions;
|
|
88
104
|
/** Connection timeout in milliseconds. */
|
|
@@ -92,12 +108,14 @@ interface OpensteerBrowserConfig {
|
|
|
92
108
|
headless?: boolean;
|
|
93
109
|
executablePath?: string;
|
|
94
110
|
slowMo?: number;
|
|
95
|
-
/**
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
|
|
99
|
-
/** Browser
|
|
100
|
-
|
|
111
|
+
/** Local browser mode. Defaults to "chromium". */
|
|
112
|
+
mode?: OpensteerLocalBrowserMode;
|
|
113
|
+
/** Connect to a running CDP-enabled browser. Example: "http://localhost:9222" */
|
|
114
|
+
cdpUrl?: string;
|
|
115
|
+
/** Browser user-data root directory for real-browser mode. */
|
|
116
|
+
userDataDir?: string;
|
|
117
|
+
/** Browser profile directory name for real-browser mode. */
|
|
118
|
+
profileDirectory?: string;
|
|
101
119
|
}
|
|
102
120
|
interface OpensteerStorageConfig {
|
|
103
121
|
rootDir?: string;
|
|
@@ -324,4 +342,4 @@ interface OpensteerAgentInstance {
|
|
|
324
342
|
execute(instructionOrOptions: string | OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
|
|
325
343
|
}
|
|
326
344
|
|
|
327
|
-
export type {
|
|
345
|
+
export type { OpensteerAgentMode as $, ActionResult as A, BaseActionOptions as B, CookieParam as C, AiExtractArgs as D, ExtractOptions as E, FileUploadOptions as F, GotoOptions as G, HoverOptions as H, InputOptions as I, AiExtractResult as J, AiResolveArgs as K, LaunchOptions as L, AiResolveCallbackResult as M, AiResolveResult as N, OpensteerAuthScheme as O, AttributeMatchClause as P, ContextHop as Q, DomPath as R, SnapshotOptions as S, TabInfo as T, ExtractSchema as U, ExtractSchemaField as V, ExtractSchemaValue as W, ExtractionFieldPlan as X, ExtractionPlan as Y, MatchClause as Z, MatchOperator as _, OpensteerConfig as a, OpensteerAgentModelConfig as a0, OpensteerBrowserConfig as a1, OpensteerCloudAnnouncePolicy as a2, OpensteerCloudBrowserProfileOptions as a3, OpensteerCloudConfig as a4, OpensteerCloudOptions as a5, OpensteerCursorColor as a6, OpensteerCursorProfile as a7, OpensteerLocalBrowserMode as a8, OpensteerStorageConfig as a9, PathNode as aa, PathNodePosition as ab, PositionMatchClause as ac, OpensteerLocalProfileDescriptor as b, OpensteerRealBrowserOptions as c, StateResult as d, ScreenshotOptions as e, ClickOptions as f, SelectOptions as g, ScrollOptions as h, BoundingBox as i, ExtractFromPlanOptions as j, ExtractionRunResult as k, OpensteerCursorState as l, OpensteerAgentConfig as m, OpensteerAgentInstance as n, ElementPath as o, SnapshotMode as p, AiResolveCallback as q, AiExtractCallback as r, OpensteerAgentProvider as s, OpensteerAgentAction as t, OpensteerAgentResult as u, OpensteerAgentUsage as v, OpensteerCursorStyle as w, OpensteerCursorConfig as x, OpensteerAgentExecuteOptions as y, ActionWaitOptions as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opensteer",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "Open-source browser automation SDK and CLI that lets AI agents build complex scrapers directly in your codebase.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"url": "https://github.com/steerlabs/opensteer/issues"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
|
-
"build": "tsup src/index.ts src/cli/server.ts src/cli/skills-installer.ts src/cli/profile.ts src/cli/auth.ts --dts --format esm,cjs --clean --external ai --external zod --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/google --external @ai-sdk/xai --external @ai-sdk/groq --external openai --external @anthropic-ai/sdk --external @google/genai",
|
|
74
|
+
"build": "tsup src/index.ts src/cli/server.ts src/cli/skills-installer.ts src/cli/profile.ts src/cli/auth.ts src/cli/local-profile.ts --dts --format esm,cjs --clean --external ai --external zod --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/google --external @ai-sdk/xai --external @ai-sdk/groq --external openai --external @anthropic-ai/sdk --external @google/genai",
|
|
75
75
|
"test": "vitest run",
|
|
76
76
|
"test:live-web": "vitest run --config vitest.live-web.config.ts",
|
|
77
77
|
"test:unit": "vitest run tests/html tests/element-path tests/config.test.ts tests/storage",
|
|
@@ -8,7 +8,7 @@ description: "Browser automation, web scraping, and structured data extraction u
|
|
|
8
8
|
**Exploring interactively?** Follow Phase 1.
|
|
9
9
|
**Writing a scraper script?** Follow Phase 2.
|
|
10
10
|
|
|
11
|
-
>
|
|
11
|
+
> **SDK Rule**: Every browser action in a script MUST use an `opensteer.*` method. The SDK covers navigation, clicks, hover, input, select, scroll, extraction, text retrieval, HTML retrieval, screenshots, and waits. The correct navigation method is `opensteer.goto()` (not `navigate`).
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -77,6 +77,8 @@ Repeat Step 3 → Step 4 for every distinct page type the scraper will visit.
|
|
|
77
77
|
opensteer close
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
> **SDK Rule**: Every browser action in a script MUST use an `opensteer.*` method.
|
|
81
|
+
|
|
80
82
|
---
|
|
81
83
|
|
|
82
84
|
## Phase 2 — SDK Scraper Script
|
|
@@ -112,6 +114,13 @@ async function run() {
|
|
|
112
114
|
run().catch((err) => { console.error(err); process.exit(1); });
|
|
113
115
|
```
|
|
114
116
|
|
|
117
|
+
> **SDK Rule**: Every browser action in a script MUST use an `opensteer.*` method.
|
|
118
|
+
|
|
119
|
+
**Before writing a script, verify:**
|
|
120
|
+
1. Every interaction uses `opensteer.click()`, `opensteer.input()`, `opensteer.hover()`, `opensteer.extract()` — not `page.*` equivalents
|
|
121
|
+
2. Every extraction uses `opensteer.extract({ description: "..." })` — not `page.evaluate()` for DOM data
|
|
122
|
+
3. Waits use `opensteer.waitForText()` — not `page.waitForSelector()` (unless no stable text exists)
|
|
123
|
+
|
|
115
124
|
**Critical method signatures:**
|
|
116
125
|
|
|
117
126
|
```typescript
|
|
@@ -146,8 +155,7 @@ await opensteer.extract({
|
|
|
146
155
|
},
|
|
147
156
|
}); // first extraction run: agent defines the full object from the snapshot
|
|
148
157
|
|
|
149
|
-
await opensteer.waitForText("literal text");
|
|
150
|
-
await opensteer.page.waitForSelector("css-selector"); // SPA content guard
|
|
158
|
+
await opensteer.waitForText("literal text"); // page-transition wait
|
|
151
159
|
|
|
152
160
|
// Do NOT add waits before opensteer actions — they handle waiting internally.
|
|
153
161
|
```
|
|
@@ -164,16 +172,6 @@ opensteer open --connect-url http://localhost:9222 --name "my-scraper"
|
|
|
164
172
|
# Verify CDP is running: curl -s http://127.0.0.1:9222/json/version
|
|
165
173
|
```
|
|
166
174
|
|
|
167
|
-
**API-based extraction (site has internal REST/GraphQL endpoints):**
|
|
168
|
-
Navigate first to acquire session cookies, then call `fetch()` inside `page.evaluate()`. This is the only valid use of `page.evaluate()`.
|
|
169
|
-
```typescript
|
|
170
|
-
await opensteer.goto("https://example.com");
|
|
171
|
-
const data = await opensteer.page.evaluate(async () => {
|
|
172
|
-
const res = await fetch("https://api.example.com/items?limit=100");
|
|
173
|
-
return res.json();
|
|
174
|
-
});
|
|
175
|
-
```
|
|
176
|
-
|
|
177
175
|
**Tab management:**
|
|
178
176
|
```bash
|
|
179
177
|
opensteer tabs
|
|
@@ -183,8 +181,30 @@ opensteer tab-close 1
|
|
|
183
181
|
```
|
|
184
182
|
|
|
185
183
|
**Debugging failures (diagnose in this order):**
|
|
186
|
-
1. SPA content not loaded — add `waitForText`
|
|
184
|
+
1. SPA content not loaded — add `opensteer.waitForText()` before extraction.
|
|
187
185
|
2. Missing cache — re-run Phase 1 caching step for the page type that failed.
|
|
188
186
|
3. Obstacle blocking target — cookie banner, modal, or login wall. Dismiss it first.
|
|
189
187
|
|
|
188
|
+
### Advanced: Direct Page Access (rare)
|
|
189
|
+
|
|
190
|
+
Use `opensteer.page` ONLY for these two patterns. There are no other valid uses.
|
|
191
|
+
|
|
192
|
+
**SPA selector guard** — when `waitForText` cannot work (no stable visible text):
|
|
193
|
+
```typescript
|
|
194
|
+
await opensteer.page.waitForSelector("css-selector");
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Internal API call** — site has REST/GraphQL endpoints and you need session cookies:
|
|
198
|
+
```typescript
|
|
199
|
+
await opensteer.goto("https://example.com");
|
|
200
|
+
const data = await opensteer.page.evaluate(async () => {
|
|
201
|
+
const res = await fetch("https://api.example.com/items?limit=100");
|
|
202
|
+
return res.json();
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
These two patterns are the complete list.
|
|
207
|
+
|
|
208
|
+
> **SDK Rule**: Every browser action in a script MUST use an `opensteer.*` method.
|
|
209
|
+
|
|
190
210
|
**Full references:** [cli-reference.md](references/cli-reference.md) | [sdk-reference.md](references/sdk-reference.md)
|
|
@@ -28,7 +28,7 @@ opensteer sessions # List active sessions
|
|
|
28
28
|
opensteer status # Show resolved session/name state
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
`open`
|
|
31
|
+
`open` performs a basic navigation (no stability wait). `navigate` includes `waitForVisualStability`. Use `open` once to start, then `navigate` for subsequent pages.
|
|
32
32
|
|
|
33
33
|
## Observation
|
|
34
34
|
|
|
@@ -59,7 +59,7 @@ async function run() {
|
|
|
59
59
|
// Visit each detail page and extract using cached description
|
|
60
60
|
for (const job of listings.jobs) {
|
|
61
61
|
await opensteer.goto(job.url);
|
|
62
|
-
await opensteer.
|
|
62
|
+
await opensteer.waitForText(job.title || "Job details");
|
|
63
63
|
|
|
64
64
|
const detail = await opensteer.extract({
|
|
65
65
|
description: "job detail page",
|
|
@@ -77,9 +77,9 @@ run().catch((err) => {
|
|
|
77
77
|
});
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
## API-Based Extraction
|
|
80
|
+
## Advanced: API-Based Extraction (uses direct page access)
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
> This is a rare pattern. Only use it when the site has internal REST/GraphQL endpoints and DOM extraction via `opensteer.extract()` is insufficient.
|
|
83
83
|
|
|
84
84
|
```typescript
|
|
85
85
|
import { Opensteer } from "opensteer";
|
|
@@ -114,3 +114,5 @@ run().catch((err) => {
|
|
|
114
114
|
process.exit(1);
|
|
115
115
|
});
|
|
116
116
|
```
|
|
117
|
+
|
|
118
|
+
> **SDK Rule**: For all other data extraction, use `opensteer.extract()`.
|
|
@@ -12,15 +12,15 @@ const opensteer = new Opensteer({
|
|
|
12
12
|
await opensteer.launch({ headless: false });
|
|
13
13
|
await opensteer.close();
|
|
14
14
|
|
|
15
|
-
//
|
|
15
|
+
// Wrap an existing page instance:
|
|
16
16
|
const opensteer = Opensteer.from(existingPage, { name: "my-scraper" });
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Properties
|
|
20
20
|
|
|
21
21
|
```typescript
|
|
22
|
-
opensteer.page; //
|
|
23
|
-
opensteer.context; //
|
|
22
|
+
opensteer.page; // Low-level page handle (see "Advanced: Direct Page Access" in SKILL.md)
|
|
23
|
+
opensteer.context; // Low-level browser context handle
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## Navigation
|
|
@@ -113,8 +113,7 @@ const title = await opensteer.getTitle();
|
|
|
113
113
|
```typescript
|
|
114
114
|
await opensteer.waitForText("Success"); // Literal text on page
|
|
115
115
|
await opensteer.waitForText("Success", { timeout: 5000 });
|
|
116
|
-
|
|
117
|
-
await opensteer.page.waitForSelector(".loading", { state: "hidden" });
|
|
116
|
+
// For CSS selector waits, see "Advanced: Direct Page Access" in SKILL.md
|
|
118
117
|
```
|
|
119
118
|
|
|
120
119
|
## Tabs
|
|
@@ -142,13 +141,16 @@ await opensteer.importCookies("/tmp/cookies.json");
|
|
|
142
141
|
await opensteer.uploadFile({ element: 5, paths: ["/path/to/file.pdf"] });
|
|
143
142
|
```
|
|
144
143
|
|
|
145
|
-
##
|
|
144
|
+
## Common Mistakes
|
|
146
145
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
146
|
+
| If you want to... | Use this |
|
|
147
|
+
| ------------------------ | --------------------------------- |
|
|
148
|
+
| Navigate to a URL | `opensteer.goto(url)` |
|
|
149
|
+
| Launch the browser | `opensteer.launch()` |
|
|
150
|
+
| Close the browser | `opensteer.close()` |
|
|
151
|
+
| Get page text content | `opensteer.getElementText()` |
|
|
152
|
+
| Get page HTML | `opensteer.getHtml()` |
|
|
153
|
+
| Extract structured data | `opensteer.extract()` |
|
|
154
|
+
| Wait for content | `opensteer.waitForText()` |
|
|
155
|
+
|
|
156
|
+
> **SDK Rule**: Every browser action in a script MUST use an `opensteer.*` method.
|