@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 +61 -0
- package/dist/connection.d.ts +83 -1
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +822 -9
- package/dist/connection.js.map +1 -1
- package/dist/context.d.ts +103 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +138 -6
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
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:
|
package/dist/connection.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
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
|
*/
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|