opensteer 0.4.11 → 0.4.13

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/index.d.cts CHANGED
@@ -254,6 +254,64 @@ interface BoundingBox {
254
254
  width: number;
255
255
  height: number;
256
256
  }
257
+ type OpensteerAgentMode = 'cua';
258
+ type OpensteerAgentProvider = 'openai' | 'anthropic' | 'google';
259
+ interface OpensteerAgentModelConfig {
260
+ modelName: string;
261
+ apiKey?: string;
262
+ baseUrl?: string;
263
+ organization?: string;
264
+ thinkingBudget?: number;
265
+ environment?: string;
266
+ }
267
+ interface OpensteerAgentConfig {
268
+ mode: OpensteerAgentMode;
269
+ model?: string | OpensteerAgentModelConfig;
270
+ systemPrompt?: string;
271
+ waitBetweenActionsMs?: number;
272
+ }
273
+ interface OpensteerAgentExecuteOptions {
274
+ instruction: string;
275
+ maxSteps?: number;
276
+ highlightCursor?: boolean;
277
+ }
278
+ interface OpensteerAgentUsage {
279
+ inputTokens: number;
280
+ outputTokens: number;
281
+ reasoningTokens?: number;
282
+ inferenceTimeMs: number;
283
+ }
284
+ interface OpensteerAgentAction {
285
+ type: string;
286
+ reasoning?: string;
287
+ button?: string;
288
+ clickCount?: number;
289
+ x?: number;
290
+ y?: number;
291
+ text?: string;
292
+ keys?: string[];
293
+ scrollX?: number;
294
+ scrollY?: number;
295
+ timeMs?: number;
296
+ url?: string;
297
+ path?: Array<{
298
+ x: number;
299
+ y: number;
300
+ }>;
301
+ [key: string]: unknown;
302
+ }
303
+ interface OpensteerAgentResult {
304
+ success: boolean;
305
+ completed: boolean;
306
+ message: string;
307
+ actions: OpensteerAgentAction[];
308
+ usage?: OpensteerAgentUsage;
309
+ provider: OpensteerAgentProvider;
310
+ model: string;
311
+ }
312
+ interface OpensteerAgentInstance {
313
+ execute(instructionOrOptions: string | OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
314
+ }
257
315
 
258
316
  interface RegistryEntry {
259
317
  file: string;
@@ -312,12 +370,14 @@ declare class Opensteer {
312
370
  private contextRef;
313
371
  private ownsBrowser;
314
372
  private snapshotCache;
373
+ private agentExecutionInFlight;
315
374
  constructor(config?: OpensteerConfig);
316
375
  private createLazyResolveCallback;
317
376
  private createLazyExtractCallback;
318
377
  private invokeCloudActionAndResetCache;
319
378
  private invokeCloudAction;
320
379
  private buildActionError;
380
+ private syncCloudPageRef;
321
381
  get page(): Page;
322
382
  get context(): BrowserContext;
323
383
  getCloudSessionId(): string | null;
@@ -367,6 +427,7 @@ declare class Opensteer {
367
427
  getConfig(): OpensteerConfig;
368
428
  getStorage(): LocalSelectorStorage;
369
429
  clearCache(): void;
430
+ agent(config: OpensteerAgentConfig): OpensteerAgentInstance;
370
431
  private runWithPostActionWait;
371
432
  private executeClickVariant;
372
433
  private resolvePath;
@@ -742,4 +803,98 @@ declare class CloudCdpClient {
742
803
 
743
804
  declare function collectLocalSelectorCacheEntries(storage: LocalSelectorStorage): CloudSelectorCacheImportEntry[];
744
805
 
745
- export { type ActionExecutionResult, type ActionFailure, type ActionFailureBlocker, type ActionFailureClassificationSource, type ActionFailureCode, type ActionFailureDetails, type ActionResult, type ActionWaitOptions, ActionWsClient, type AiExtractArgs, type AiExtractCallback, type AiExtractResult, type AiModelConfig, type AiResolveArgs, type AiResolveCallback, type AiResolveCallbackResult, type AiResolveResult, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, type AttributeMatchClause, type BaseActionOptions, type BoundingBox, type ClickOptions, type CloudActionFailure, type CloudActionFailureDetails, type CloudActionMethod, type CloudActionRequest, type CloudActionResponse, type CloudActionSuccess, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, type CloudErrorCode, type CloudSelectorCacheImportEntry, type CloudSelectorCacheImportRequest, type CloudSelectorCacheImportResponse, CloudSessionClient, type CloudSessionContractVersion, type CloudSessionCreateRequest, type CloudSessionCreateResponse, type CloudSessionSourceType, type CloudSessionSummary, type ContextHop, type CookieParam, type CounterBinding, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CounterSnapshotLike, type DomPath, type ElementPath, ElementPathError, type ElementPathErrorCode, type ExtractFromPlanOptions, type ExtractOptions, type ExtractSchema, type ExtractSchemaField, type ExtractSchemaValue, type ExtractionFieldPlan, type ExtractionPlan, type ExtractionRunResult, type FieldSelector, type FileUploadOptions, type GotoOptions, type HoverOptions, type InputOptions, type LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, type MatchClause, type MatchOperator, 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, type OpensteerAuthScheme, type OpensteerBrowserConfig, type OpensteerCloudAnnouncePolicy, type OpensteerCloudConfig, OpensteerCloudError, type OpensteerCloudOptions, type OpensteerConfig, type OpensteerStorageConfig, type PathNode, type PathNodePosition, type PositionMatchClause, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, type ScreenshotOptions, type ScrollOptions, type SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, type SnapshotMode, type SnapshotOptions, type StateResult, type TabInfo, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudSessionContractVersion, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, ensureLiveCounters, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, prepareSnapshot, pressKey, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
806
+ declare class OpensteerAgentError extends Error {
807
+ constructor(message: string, cause?: unknown);
808
+ }
809
+ declare class OpensteerAgentConfigError extends OpensteerAgentError {
810
+ constructor(message: string);
811
+ }
812
+ declare class OpensteerAgentProviderError extends OpensteerAgentError {
813
+ constructor(message: string);
814
+ }
815
+ declare class OpensteerAgentExecutionError extends OpensteerAgentError {
816
+ constructor(message: string, cause?: unknown);
817
+ }
818
+ declare class OpensteerAgentBusyError extends OpensteerAgentError {
819
+ constructor();
820
+ }
821
+ declare class OpensteerAgentActionError extends OpensteerAgentError {
822
+ constructor(message: string, cause?: unknown);
823
+ }
824
+ declare class OpensteerAgentApiError extends OpensteerAgentError {
825
+ readonly status?: number;
826
+ readonly provider: string;
827
+ constructor(provider: string, message: string, status?: number, cause?: unknown);
828
+ }
829
+
830
+ interface ResolvedCuaModelConfig {
831
+ provider: OpensteerAgentProvider;
832
+ fullModelName: string;
833
+ providerModelName: string;
834
+ apiKey: string;
835
+ baseUrl?: string;
836
+ organization?: string;
837
+ thinkingBudget?: number;
838
+ environment?: string;
839
+ }
840
+
841
+ interface CuaClientExecutionInput {
842
+ instruction: string;
843
+ maxSteps: number;
844
+ systemPrompt: string;
845
+ }
846
+ interface CuaClientExecutionResult extends Omit<OpensteerAgentResult, 'provider' | 'model'> {
847
+ usage?: OpensteerAgentUsage;
848
+ }
849
+ declare abstract class CuaClient {
850
+ private screenshotProvider;
851
+ private actionHandler;
852
+ protected viewport: {
853
+ width: number;
854
+ height: number;
855
+ };
856
+ protected currentUrl: string | null;
857
+ setViewport(width: number, height: number): void;
858
+ setCurrentUrl(url: string | null): void;
859
+ setScreenshotProvider(provider: () => Promise<string>): void;
860
+ setActionHandler(handler: (action: OpensteerAgentAction) => Promise<void>): void;
861
+ protected getScreenshotProvider(): () => Promise<string>;
862
+ protected getActionHandler(): (action: OpensteerAgentAction) => Promise<void>;
863
+ abstract execute(input: CuaClientExecutionInput): Promise<CuaClientExecutionResult>;
864
+ }
865
+
866
+ interface ResolvedAgentConfig {
867
+ mode: 'cua';
868
+ systemPrompt: string;
869
+ waitBetweenActionsMs: number;
870
+ model: ResolvedCuaModelConfig;
871
+ }
872
+ declare function resolveAgentConfig(args: {
873
+ agentConfig: OpensteerAgentConfig;
874
+ fallbackModel?: string;
875
+ env?: NodeJS.ProcessEnv;
876
+ }): ResolvedAgentConfig;
877
+ declare function createCuaClient(config: ResolvedAgentConfig): CuaClient;
878
+
879
+ interface CuaAgentHandlerOptions {
880
+ page: Page;
881
+ config: ResolvedAgentConfig;
882
+ client: CuaClient;
883
+ debug: boolean;
884
+ onMutatingAction?: (action: OpensteerAgentAction) => void;
885
+ }
886
+ declare class OpensteerCuaAgentHandler {
887
+ private readonly page;
888
+ private readonly config;
889
+ private readonly client;
890
+ private readonly debug;
891
+ private readonly onMutatingAction?;
892
+ private cursorOverlayInjected;
893
+ constructor(options: CuaAgentHandlerOptions);
894
+ execute(options: OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
895
+ private initializeClient;
896
+ private resolveViewport;
897
+ private maybeRenderCursor;
898
+ }
899
+
900
+ export { type ActionExecutionResult, type ActionFailure, type ActionFailureBlocker, type ActionFailureClassificationSource, type ActionFailureCode, type ActionFailureDetails, type ActionResult, type ActionWaitOptions, ActionWsClient, type AiExtractArgs, type AiExtractCallback, type AiExtractResult, type AiModelConfig, type AiResolveArgs, type AiResolveCallback, type AiResolveCallbackResult, type AiResolveResult, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, type AttributeMatchClause, type BaseActionOptions, type BoundingBox, type ClickOptions, type CloudActionFailure, type CloudActionFailureDetails, type CloudActionMethod, type CloudActionRequest, type CloudActionResponse, type CloudActionSuccess, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, type CloudErrorCode, type CloudSelectorCacheImportEntry, type CloudSelectorCacheImportRequest, type CloudSelectorCacheImportResponse, CloudSessionClient, type CloudSessionContractVersion, type CloudSessionCreateRequest, type CloudSessionCreateResponse, type CloudSessionSourceType, type CloudSessionSummary, type ContextHop, type CookieParam, type CounterBinding, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CounterSnapshotLike, type DomPath, type ElementPath, ElementPathError, type ElementPathErrorCode, type ExtractFromPlanOptions, type ExtractOptions, type ExtractSchema, type ExtractSchemaField, type ExtractSchemaValue, type ExtractionFieldPlan, type ExtractionPlan, type ExtractionRunResult, type FieldSelector, type FileUploadOptions, type GotoOptions, type HoverOptions, type InputOptions, type LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, type MatchClause, type MatchOperator, 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, type OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, type OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, type OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, type OpensteerAgentInstance, type OpensteerAgentMode, type OpensteerAgentModelConfig, type OpensteerAgentProvider, OpensteerAgentProviderError, type OpensteerAgentResult, type OpensteerAgentUsage, type OpensteerAuthScheme, type OpensteerBrowserConfig, type OpensteerCloudAnnouncePolicy, type OpensteerCloudConfig, OpensteerCloudError, type OpensteerCloudOptions, type OpensteerConfig, OpensteerCuaAgentHandler, type OpensteerStorageConfig, type PathNode, type PathNodePosition, type PositionMatchClause, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, type ScreenshotOptions, type ScrollOptions, type SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, type SnapshotMode, type SnapshotOptions, type StateResult, type TabInfo, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudSessionContractVersion, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, ensureLiveCounters, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, prepareSnapshot, pressKey, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
package/dist/index.d.ts CHANGED
@@ -254,6 +254,64 @@ interface BoundingBox {
254
254
  width: number;
255
255
  height: number;
256
256
  }
257
+ type OpensteerAgentMode = 'cua';
258
+ type OpensteerAgentProvider = 'openai' | 'anthropic' | 'google';
259
+ interface OpensteerAgentModelConfig {
260
+ modelName: string;
261
+ apiKey?: string;
262
+ baseUrl?: string;
263
+ organization?: string;
264
+ thinkingBudget?: number;
265
+ environment?: string;
266
+ }
267
+ interface OpensteerAgentConfig {
268
+ mode: OpensteerAgentMode;
269
+ model?: string | OpensteerAgentModelConfig;
270
+ systemPrompt?: string;
271
+ waitBetweenActionsMs?: number;
272
+ }
273
+ interface OpensteerAgentExecuteOptions {
274
+ instruction: string;
275
+ maxSteps?: number;
276
+ highlightCursor?: boolean;
277
+ }
278
+ interface OpensteerAgentUsage {
279
+ inputTokens: number;
280
+ outputTokens: number;
281
+ reasoningTokens?: number;
282
+ inferenceTimeMs: number;
283
+ }
284
+ interface OpensteerAgentAction {
285
+ type: string;
286
+ reasoning?: string;
287
+ button?: string;
288
+ clickCount?: number;
289
+ x?: number;
290
+ y?: number;
291
+ text?: string;
292
+ keys?: string[];
293
+ scrollX?: number;
294
+ scrollY?: number;
295
+ timeMs?: number;
296
+ url?: string;
297
+ path?: Array<{
298
+ x: number;
299
+ y: number;
300
+ }>;
301
+ [key: string]: unknown;
302
+ }
303
+ interface OpensteerAgentResult {
304
+ success: boolean;
305
+ completed: boolean;
306
+ message: string;
307
+ actions: OpensteerAgentAction[];
308
+ usage?: OpensteerAgentUsage;
309
+ provider: OpensteerAgentProvider;
310
+ model: string;
311
+ }
312
+ interface OpensteerAgentInstance {
313
+ execute(instructionOrOptions: string | OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
314
+ }
257
315
 
258
316
  interface RegistryEntry {
259
317
  file: string;
@@ -312,12 +370,14 @@ declare class Opensteer {
312
370
  private contextRef;
313
371
  private ownsBrowser;
314
372
  private snapshotCache;
373
+ private agentExecutionInFlight;
315
374
  constructor(config?: OpensteerConfig);
316
375
  private createLazyResolveCallback;
317
376
  private createLazyExtractCallback;
318
377
  private invokeCloudActionAndResetCache;
319
378
  private invokeCloudAction;
320
379
  private buildActionError;
380
+ private syncCloudPageRef;
321
381
  get page(): Page;
322
382
  get context(): BrowserContext;
323
383
  getCloudSessionId(): string | null;
@@ -367,6 +427,7 @@ declare class Opensteer {
367
427
  getConfig(): OpensteerConfig;
368
428
  getStorage(): LocalSelectorStorage;
369
429
  clearCache(): void;
430
+ agent(config: OpensteerAgentConfig): OpensteerAgentInstance;
370
431
  private runWithPostActionWait;
371
432
  private executeClickVariant;
372
433
  private resolvePath;
@@ -742,4 +803,98 @@ declare class CloudCdpClient {
742
803
 
743
804
  declare function collectLocalSelectorCacheEntries(storage: LocalSelectorStorage): CloudSelectorCacheImportEntry[];
744
805
 
745
- export { type ActionExecutionResult, type ActionFailure, type ActionFailureBlocker, type ActionFailureClassificationSource, type ActionFailureCode, type ActionFailureDetails, type ActionResult, type ActionWaitOptions, ActionWsClient, type AiExtractArgs, type AiExtractCallback, type AiExtractResult, type AiModelConfig, type AiResolveArgs, type AiResolveCallback, type AiResolveCallbackResult, type AiResolveResult, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, type AttributeMatchClause, type BaseActionOptions, type BoundingBox, type ClickOptions, type CloudActionFailure, type CloudActionFailureDetails, type CloudActionMethod, type CloudActionRequest, type CloudActionResponse, type CloudActionSuccess, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, type CloudErrorCode, type CloudSelectorCacheImportEntry, type CloudSelectorCacheImportRequest, type CloudSelectorCacheImportResponse, CloudSessionClient, type CloudSessionContractVersion, type CloudSessionCreateRequest, type CloudSessionCreateResponse, type CloudSessionSourceType, type CloudSessionSummary, type ContextHop, type CookieParam, type CounterBinding, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CounterSnapshotLike, type DomPath, type ElementPath, ElementPathError, type ElementPathErrorCode, type ExtractFromPlanOptions, type ExtractOptions, type ExtractSchema, type ExtractSchemaField, type ExtractSchemaValue, type ExtractionFieldPlan, type ExtractionPlan, type ExtractionRunResult, type FieldSelector, type FileUploadOptions, type GotoOptions, type HoverOptions, type InputOptions, type LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, type MatchClause, type MatchOperator, 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, type OpensteerAuthScheme, type OpensteerBrowserConfig, type OpensteerCloudAnnouncePolicy, type OpensteerCloudConfig, OpensteerCloudError, type OpensteerCloudOptions, type OpensteerConfig, type OpensteerStorageConfig, type PathNode, type PathNodePosition, type PositionMatchClause, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, type ScreenshotOptions, type ScrollOptions, type SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, type SnapshotMode, type SnapshotOptions, type StateResult, type TabInfo, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudSessionContractVersion, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, ensureLiveCounters, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, prepareSnapshot, pressKey, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
806
+ declare class OpensteerAgentError extends Error {
807
+ constructor(message: string, cause?: unknown);
808
+ }
809
+ declare class OpensteerAgentConfigError extends OpensteerAgentError {
810
+ constructor(message: string);
811
+ }
812
+ declare class OpensteerAgentProviderError extends OpensteerAgentError {
813
+ constructor(message: string);
814
+ }
815
+ declare class OpensteerAgentExecutionError extends OpensteerAgentError {
816
+ constructor(message: string, cause?: unknown);
817
+ }
818
+ declare class OpensteerAgentBusyError extends OpensteerAgentError {
819
+ constructor();
820
+ }
821
+ declare class OpensteerAgentActionError extends OpensteerAgentError {
822
+ constructor(message: string, cause?: unknown);
823
+ }
824
+ declare class OpensteerAgentApiError extends OpensteerAgentError {
825
+ readonly status?: number;
826
+ readonly provider: string;
827
+ constructor(provider: string, message: string, status?: number, cause?: unknown);
828
+ }
829
+
830
+ interface ResolvedCuaModelConfig {
831
+ provider: OpensteerAgentProvider;
832
+ fullModelName: string;
833
+ providerModelName: string;
834
+ apiKey: string;
835
+ baseUrl?: string;
836
+ organization?: string;
837
+ thinkingBudget?: number;
838
+ environment?: string;
839
+ }
840
+
841
+ interface CuaClientExecutionInput {
842
+ instruction: string;
843
+ maxSteps: number;
844
+ systemPrompt: string;
845
+ }
846
+ interface CuaClientExecutionResult extends Omit<OpensteerAgentResult, 'provider' | 'model'> {
847
+ usage?: OpensteerAgentUsage;
848
+ }
849
+ declare abstract class CuaClient {
850
+ private screenshotProvider;
851
+ private actionHandler;
852
+ protected viewport: {
853
+ width: number;
854
+ height: number;
855
+ };
856
+ protected currentUrl: string | null;
857
+ setViewport(width: number, height: number): void;
858
+ setCurrentUrl(url: string | null): void;
859
+ setScreenshotProvider(provider: () => Promise<string>): void;
860
+ setActionHandler(handler: (action: OpensteerAgentAction) => Promise<void>): void;
861
+ protected getScreenshotProvider(): () => Promise<string>;
862
+ protected getActionHandler(): (action: OpensteerAgentAction) => Promise<void>;
863
+ abstract execute(input: CuaClientExecutionInput): Promise<CuaClientExecutionResult>;
864
+ }
865
+
866
+ interface ResolvedAgentConfig {
867
+ mode: 'cua';
868
+ systemPrompt: string;
869
+ waitBetweenActionsMs: number;
870
+ model: ResolvedCuaModelConfig;
871
+ }
872
+ declare function resolveAgentConfig(args: {
873
+ agentConfig: OpensteerAgentConfig;
874
+ fallbackModel?: string;
875
+ env?: NodeJS.ProcessEnv;
876
+ }): ResolvedAgentConfig;
877
+ declare function createCuaClient(config: ResolvedAgentConfig): CuaClient;
878
+
879
+ interface CuaAgentHandlerOptions {
880
+ page: Page;
881
+ config: ResolvedAgentConfig;
882
+ client: CuaClient;
883
+ debug: boolean;
884
+ onMutatingAction?: (action: OpensteerAgentAction) => void;
885
+ }
886
+ declare class OpensteerCuaAgentHandler {
887
+ private readonly page;
888
+ private readonly config;
889
+ private readonly client;
890
+ private readonly debug;
891
+ private readonly onMutatingAction?;
892
+ private cursorOverlayInjected;
893
+ constructor(options: CuaAgentHandlerOptions);
894
+ execute(options: OpensteerAgentExecuteOptions): Promise<OpensteerAgentResult>;
895
+ private initializeClient;
896
+ private resolveViewport;
897
+ private maybeRenderCursor;
898
+ }
899
+
900
+ export { type ActionExecutionResult, type ActionFailure, type ActionFailureBlocker, type ActionFailureClassificationSource, type ActionFailureCode, type ActionFailureDetails, type ActionResult, type ActionWaitOptions, ActionWsClient, type AiExtractArgs, type AiExtractCallback, type AiExtractResult, type AiModelConfig, type AiResolveArgs, type AiResolveCallback, type AiResolveCallbackResult, type AiResolveResult, type ArrayExtractedRow, type ArrayRowMetadata, type ArraySelector, type AttributeMatchClause, type BaseActionOptions, type BoundingBox, type ClickOptions, type CloudActionFailure, type CloudActionFailureDetails, type CloudActionMethod, type CloudActionRequest, type CloudActionResponse, type CloudActionSuccess, CloudCdpClient, type CloudCdpConnectArgs, type CloudCdpConnection, type CloudErrorCode, type CloudSelectorCacheImportEntry, type CloudSelectorCacheImportRequest, type CloudSelectorCacheImportResponse, CloudSessionClient, type CloudSessionContractVersion, type CloudSessionCreateRequest, type CloudSessionCreateResponse, type CloudSessionSourceType, type CloudSessionSummary, type ContextHop, type CookieParam, type CounterBinding, type CounterRequest, CounterResolutionError, type CounterResolutionErrorCode, type CounterSnapshotLike, type DomPath, type ElementPath, ElementPathError, type ElementPathErrorCode, type ExtractFromPlanOptions, type ExtractOptions, type ExtractSchema, type ExtractSchemaField, type ExtractSchemaValue, type ExtractionFieldPlan, type ExtractionPlan, type ExtractionRunResult, type FieldSelector, type FileUploadOptions, type GotoOptions, type HoverOptions, type InputOptions, type LaunchOptions, LocalSelectorStorage, type MarkInteractivityOptions, type MatchClause, type MatchOperator, 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, type OpensteerAgentAction, OpensteerAgentActionError, OpensteerAgentApiError, OpensteerAgentBusyError, type OpensteerAgentConfig, OpensteerAgentConfigError, OpensteerAgentError, type OpensteerAgentExecuteOptions, OpensteerAgentExecutionError, type OpensteerAgentInstance, type OpensteerAgentMode, type OpensteerAgentModelConfig, type OpensteerAgentProvider, OpensteerAgentProviderError, type OpensteerAgentResult, type OpensteerAgentUsage, type OpensteerAuthScheme, type OpensteerBrowserConfig, type OpensteerCloudAnnouncePolicy, type OpensteerCloudConfig, OpensteerCloudError, type OpensteerCloudOptions, type OpensteerConfig, OpensteerCuaAgentHandler, type OpensteerStorageConfig, type PathNode, type PathNodePosition, type PositionMatchClause, type PreparedSnapshot, type RegistryEntry, type ResolvedElementPath, type ScreenshotOptions, type ScrollOptions, type SelectOptions, type SelectorFile, type SelectorRegistry, type SerializeOptions, type SerializedNodeMeta, type SerializedPageHTML, type SnapshotMode, type SnapshotOptions, type StateResult, type TabInfo, buildElementPathFromHandle, buildElementPathFromSelector, buildPathSelectorHint, cleanForAction, cleanForClickable, cleanForExtraction, cleanForFull, cleanForScrollable, clearCookies, cloneElementPath, closeTab, cloudNotLaunchedError, cloudSessionContractVersion, cloudUnsupportedMethodError, collectLocalSelectorCacheEntries, countArrayItemsWithPath, createCuaClient, createEmptyRegistry, createExtractCallback, createResolveCallback, createTab, ensureLiveCounters, exportCookies, extractArrayRowsWithPaths, extractArrayWithPaths, extractWithPaths, getCookies, getElementAttributes, getElementBoundingBox, getElementText, getElementValue, getModelProvider, getPageHtml, getPageTitle, importCookies, listTabs, markInteractiveElements, normalizeNamespace, performClick, performFileUpload, performHover, performInput, performScroll, performSelect, prepareSnapshot, pressKey, resolveAgentConfig, resolveCounterElement, resolveCountersBatch, resolveElementPath, resolveNamespaceDir, sanitizeElementPath, serializePageHTML, setCookie, switchTab, typeText, waitForVisualStability };
package/dist/index.js CHANGED
@@ -15,7 +15,15 @@ import {
15
15
  OS_UNAVAILABLE_ATTR,
16
16
  Opensteer,
17
17
  OpensteerActionError,
18
+ OpensteerAgentActionError,
19
+ OpensteerAgentApiError,
20
+ OpensteerAgentBusyError,
21
+ OpensteerAgentConfigError,
22
+ OpensteerAgentError,
23
+ OpensteerAgentExecutionError,
24
+ OpensteerAgentProviderError,
18
25
  OpensteerCloudError,
26
+ OpensteerCuaAgentHandler,
19
27
  buildElementPathFromHandle,
20
28
  buildElementPathFromSelector,
21
29
  buildPathSelectorHint,
@@ -32,6 +40,7 @@ import {
32
40
  cloudUnsupportedMethodError,
33
41
  collectLocalSelectorCacheEntries,
34
42
  countArrayItemsWithPath,
43
+ createCuaClient,
35
44
  createEmptyRegistry,
36
45
  createTab,
37
46
  ensureLiveCounters,
@@ -58,6 +67,7 @@ import {
58
67
  performSelect,
59
68
  prepareSnapshot,
60
69
  pressKey,
70
+ resolveAgentConfig,
61
71
  resolveCounterElement,
62
72
  resolveCountersBatch,
63
73
  resolveElementPath,
@@ -68,17 +78,17 @@ import {
68
78
  switchTab,
69
79
  typeText,
70
80
  waitForVisualStability
71
- } from "./chunk-C3NM6XZH.js";
81
+ } from "./chunk-JSH3VLMH.js";
72
82
  import {
73
83
  createResolveCallback
74
- } from "./chunk-SRJLH34D.js";
84
+ } from "./chunk-V4OOJO4S.js";
75
85
  import {
76
86
  createExtractCallback
77
- } from "./chunk-DQIHOUXH.js";
87
+ } from "./chunk-UIUDSWZV.js";
78
88
  import "./chunk-3H5RRIMZ.js";
79
89
  import {
80
90
  getModelProvider
81
- } from "./chunk-L4FHT64T.js";
91
+ } from "./chunk-QTGJO7RC.js";
82
92
  export {
83
93
  ActionWsClient,
84
94
  CloudCdpClient,
@@ -96,7 +106,15 @@ export {
96
106
  OS_UNAVAILABLE_ATTR,
97
107
  Opensteer,
98
108
  OpensteerActionError,
109
+ OpensteerAgentActionError,
110
+ OpensteerAgentApiError,
111
+ OpensteerAgentBusyError,
112
+ OpensteerAgentConfigError,
113
+ OpensteerAgentError,
114
+ OpensteerAgentExecutionError,
115
+ OpensteerAgentProviderError,
99
116
  OpensteerCloudError,
117
+ OpensteerCuaAgentHandler,
100
118
  buildElementPathFromHandle,
101
119
  buildElementPathFromSelector,
102
120
  buildPathSelectorHint,
@@ -113,6 +131,7 @@ export {
113
131
  cloudUnsupportedMethodError,
114
132
  collectLocalSelectorCacheEntries,
115
133
  countArrayItemsWithPath,
134
+ createCuaClient,
116
135
  createEmptyRegistry,
117
136
  createExtractCallback,
118
137
  createResolveCallback,
@@ -142,6 +161,7 @@ export {
142
161
  performSelect,
143
162
  prepareSnapshot,
144
163
  pressKey,
164
+ resolveAgentConfig,
145
165
  resolveCounterElement,
146
166
  resolveCountersBatch,
147
167
  resolveElementPath,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createResolveCallback
3
- } from "./chunk-SRJLH34D.js";
4
- import "./chunk-L4FHT64T.js";
3
+ } from "./chunk-V4OOJO4S.js";
4
+ import "./chunk-QTGJO7RC.js";
5
5
  export {
6
6
  createResolveCallback
7
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensteer",
3
- "version": "0.4.11",
3
+ "version": "0.4.13",
4
4
  "description": "Open-source browser automation SDK with robust selectors and deterministic replay.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,9 +30,12 @@
30
30
  "@ai-sdk/groq": "^3.0.24",
31
31
  "@ai-sdk/openai": "^3.0.26",
32
32
  "@ai-sdk/xai": "^3.0.57",
33
+ "@anthropic-ai/sdk": "^0.57.0",
34
+ "@google/genai": "^1.10.0",
33
35
  "ai": "^6.0.77",
34
36
  "cheerio": "^1.0.0-rc.12",
35
37
  "dotenv": "^17.2.4",
38
+ "openai": "^5.21.0",
36
39
  "playwright": "^1.50.0",
37
40
  "ws": "^8.18.0",
38
41
  "zod": "^4.3.6"
@@ -61,7 +64,7 @@
61
64
  "url": "https://github.com/opensteer-ai/opensteer"
62
65
  },
63
66
  "scripts": {
64
- "build": "tsup src/index.ts src/cli/server.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",
67
+ "build": "tsup src/index.ts src/cli/server.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",
65
68
  "test": "vitest run",
66
69
  "test:live-web": "vitest run --config vitest.live-web.config.ts",
67
70
  "test:unit": "vitest run tests/html tests/element-path tests/config.test.ts tests/storage",
@@ -69,6 +72,7 @@
69
72
  "test:integration": "vitest run tests/integration",
70
73
  "test:ai": "vitest run tests/ai tests/e2e/ai-resolve.test.ts tests/e2e/ai-extract-products.test.ts",
71
74
  "test:e2e": "vitest run tests/e2e",
75
+ "test:e2e:cua": "vitest run tests/e2e/cua-agent.test.ts",
72
76
  "test:app:dev": "pnpm --dir tests/test-app run dev",
73
77
  "typecheck": "tsc -p tsconfig.json --noEmit"
74
78
  }