@olib-ai/owl-browser-sdk 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,6 +60,67 @@ const browser = new Browser({
60
60
  await browser.launch();
61
61
  ```
62
62
 
63
+ #### WebSocket Transport
64
+
65
+ For lower latency and persistent connections, use WebSocket transport instead of HTTP:
66
+
67
+ ```typescript
68
+ import { Browser } from '@olib-ai/owl-browser-sdk';
69
+
70
+ // WebSocket mode - real-time communication
71
+ const browser = new Browser({
72
+ mode: 'http',
73
+ http: {
74
+ baseUrl: 'http://localhost:8080',
75
+ token: 'your-secret-token',
76
+ transport: 'websocket', // Use WebSocket instead of HTTP
77
+ reconnect: {
78
+ enabled: true,
79
+ maxAttempts: 5,
80
+ initialDelayMs: 1000,
81
+ maxDelayMs: 30000
82
+ }
83
+ }
84
+ });
85
+ await browser.launch();
86
+ ```
87
+
88
+ #### High-Performance Configuration
89
+
90
+ For high-concurrency workloads, configure retry, connection pooling, and concurrency limits:
91
+
92
+ ```typescript
93
+ import { Browser } from '@olib-ai/owl-browser-sdk';
94
+
95
+ // High-performance HTTP configuration
96
+ const browser = new Browser({
97
+ mode: 'http',
98
+ http: {
99
+ baseUrl: 'http://localhost:8080',
100
+ token: 'your-secret-token',
101
+ timeout: 30000,
102
+ // Retry configuration with exponential backoff
103
+ retry: {
104
+ maxRetries: 5,
105
+ initialDelayMs: 100,
106
+ maxDelayMs: 10000,
107
+ backoffMultiplier: 2.0,
108
+ jitterFactor: 0.1
109
+ },
110
+ // Concurrency limiting
111
+ concurrency: {
112
+ maxConcurrent: 50
113
+ },
114
+ // Connection pooling
115
+ pool: {
116
+ maxConnections: 20,
117
+ idleTimeoutMs: 60000
118
+ }
119
+ }
120
+ });
121
+ await browser.launch();
122
+ ```
123
+
63
124
  #### JWT Authentication
64
125
 
65
126
  For enhanced security, the server supports JWT (JSON Web Token) authentication with RSA signing. The SDK can automatically generate and refresh JWT tokens using your private key:
@@ -5,6 +5,21 @@
5
5
  * supporting both local (IPC) and remote (HTTP) modes.
6
6
  */
7
7
  import type { BrowserConfig } from './types';
8
+ /**
9
+ * Retry configuration for resilient command execution
10
+ */
11
+ export interface RetryConfig {
12
+ /** Maximum number of retry attempts (default: 3) */
13
+ maxRetries: number;
14
+ /** Initial delay in ms before first retry (default: 100) */
15
+ initialDelayMs: number;
16
+ /** Maximum delay in ms between retries (default: 5000) */
17
+ maxDelayMs: number;
18
+ /** Multiplier for exponential backoff (default: 2) */
19
+ backoffMultiplier: number;
20
+ /** Jitter factor 0-1 to add randomness (default: 0.1) */
21
+ jitterFactor: number;
22
+ }
8
23
  /**
9
24
  * Common interface for browser connections
10
25
  */
@@ -48,6 +63,7 @@ export declare class LocalConnection implements BrowserConnection {
48
63
  }
49
64
  /**
50
65
  * HTTP connection using REST API to remote browser server
66
+ * Features: Connection pooling with keep-alive, retry with exponential backoff, concurrency limiting
51
67
  */
52
68
  export declare class HttpConnection implements BrowserConnection {
53
69
  private baseUrl;
@@ -56,6 +72,10 @@ export declare class HttpConnection implements BrowserConnection {
56
72
  private timeout;
57
73
  private verbose;
58
74
  private connected;
75
+ private httpAgent;
76
+ private httpsAgent;
77
+ private semaphore;
78
+ private retryConfig;
59
79
  constructor(config: BrowserConfig);
60
80
  /**
61
81
  * Get the current authentication token (static or JWT)
@@ -74,10 +94,72 @@ export declare class HttpConnection implements BrowserConnection {
74
94
  shutdown(): Promise<void>;
75
95
  isRunning(): boolean;
76
96
  /**
77
- * Make an HTTP request to the browser server
97
+ * Get connection pool statistics
98
+ */
99
+ getPoolStats(): {
100
+ pending: number;
101
+ available: number;
102
+ };
103
+ /**
104
+ * Make an HTTP request to the browser server with connection pooling
78
105
  */
79
106
  private httpRequest;
80
107
  }
108
+ /**
109
+ * WebSocket connection for persistent, low-latency communication with remote browser server
110
+ * Features: Auto-reconnection, retry with backoff, concurrency limiting
111
+ */
112
+ export declare class WebSocketConnection implements BrowserConnection {
113
+ private baseUrl;
114
+ private host;
115
+ private port;
116
+ private useSSL;
117
+ private staticToken?;
118
+ private jwtManager?;
119
+ private timeout;
120
+ private longTimeout;
121
+ private verbose;
122
+ private connected;
123
+ private socket;
124
+ private requestId;
125
+ private pendingRequests;
126
+ private buffer;
127
+ private reconnecting;
128
+ private reconnectAttempts;
129
+ private maxReconnectAttempts;
130
+ private reconnectDelayMs;
131
+ private config;
132
+ private semaphore;
133
+ private retryConfig;
134
+ private methodToToolMap;
135
+ constructor(config: BrowserConfig);
136
+ private parseUrl;
137
+ private getAuthToken;
138
+ private createWebSocketKey;
139
+ /**
140
+ * Attempt to reconnect after connection loss
141
+ */
142
+ private attemptReconnect;
143
+ initialize(): Promise<void>;
144
+ private handleData;
145
+ private parseFrame;
146
+ private handleMessage;
147
+ private sendFrame;
148
+ private mapMethodToTool;
149
+ private mapParams;
150
+ sendCommand(method: string, params?: Record<string, any>): Promise<any>;
151
+ private sendCommandInternal;
152
+ shutdown(): Promise<void>;
153
+ /**
154
+ * Get connection statistics
155
+ */
156
+ getStats(): {
157
+ pending: number;
158
+ available: number;
159
+ reconnectAttempts: number;
160
+ };
161
+ isRunning(): boolean;
162
+ }
81
163
  /**
82
164
  * Factory function to create the appropriate connection based on config
83
165
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,SAAS,CAAC;AAazE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,4CAA4C;IAC5C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAExE,8BAA8B;IAC9B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,wCAAwC;IACxC,SAAS,IAAI,OAAO,CAAC;CACtB;AA0BD;;GAEG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;IAGzB,OAAO,CAAC,YAAY,CAA2D;IAC/E,OAAO,CAAC,mBAAmB,CAAuB;gBAEtC,MAAM,EAAE,aAAa;IAOjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiHjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBhB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA2B3E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgE/B,SAAS,IAAI,OAAO;CAGrB;AAID;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,aAAa;IAsCjC;;OAEG;IACH,OAAO,CAAC,YAAY;IAUd,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAsEvB;;OAEG;IACH,OAAO,CAAC,SAAS;IA8EX,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsD3E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAwGpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAWzE"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}