gleip-runner 0.0.1 → 0.1.0

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/LICENSE.md ADDED
@@ -0,0 +1,23 @@
1
+ # MIT License
2
+
3
+ Copyright (c) 2026, Valerio Baudo
4
+
5
+ ```
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
23
+ ```
package/README.md CHANGED
@@ -23,64 +23,6 @@ gleip-runner --token <token> [--server <wss://url>]
23
23
  - `--token` - Required. Authentication token for the runner.
24
24
  - `--server` - Optional. WebSocket server URL (default: `wss://app.gleip.io/ws/runner`).
25
25
 
26
- ## Protocol
27
-
28
- ### Messages sent by runner
29
-
30
- **Hello** - Sent on connection:
31
- ```json
32
- {
33
- "type": "hello",
34
- "runnerId": "runner-123",
35
- "capabilities": ["http/s"]
36
- }
37
- ```
38
-
39
- **Result** - Sent after executing a job:
40
- ```json
41
- {
42
- "type": "result",
43
- "jobId": "job-456",
44
- "status": "success",
45
- "response": {
46
- "status": 200,
47
- "headers": { "content-type": "application/json" },
48
- "body": "{\"ok\":true}",
49
- "timeMs": 150
50
- }
51
- }
52
- ```
53
-
54
- ### Messages received by runner
55
-
56
- **Execute** - Request to execute an HTTP request:
57
- ```json
58
- {
59
- "type": "execute",
60
- "jobId": "job-456",
61
- "kind": "http",
62
- "request": {
63
- "method": "GET",
64
- "url": "https://api.example.com/data",
65
- "headers": { "Authorization": "Bearer token" },
66
- "body": null
67
- },
68
- "timeoutMs": 30000
69
- }
70
- ```
71
-
72
- ## Programmatic Usage
73
-
74
- ```typescript
75
- import { Runner } from "gleip-runner";
76
-
77
- const runner = new Runner("wss://your-server.com", "my-runner");
78
- runner.connect();
79
-
80
- // To disconnect
81
- runner.disconnect();
82
- ```
83
-
84
26
  ## License
85
27
 
86
28
  MIT
@@ -0,0 +1,25 @@
1
+ import { Page } from "playwright";
2
+ import type { BrowserStart, BrowserInputAction, BrowserTraffic } from "./types";
3
+ export declare class BrowserSession {
4
+ private browser;
5
+ private page;
6
+ private frameInterval;
7
+ private requestTimings;
8
+ private trafficCallback;
9
+ sessionId: string;
10
+ url: string | undefined;
11
+ options: BrowserStart["options"];
12
+ constructor(sessionId: string, options?: BrowserStart["options"]);
13
+ start(): Promise<void>;
14
+ navigateToInitialUrl(): Promise<void>;
15
+ stop(): Promise<void>;
16
+ isActive(): boolean;
17
+ captureFrame(): Promise<string>;
18
+ startFrameCapture(callback: (frame: string) => void): void;
19
+ stopFrameCapture(): void;
20
+ startTrafficCapture(callback: (traffic: BrowserTraffic) => void): void;
21
+ stopTrafficCapture(): void;
22
+ handleInput(event: BrowserInputAction): Promise<void>;
23
+ getPage(): Page | null;
24
+ }
25
+ //# sourceMappingURL=browser-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../src/browser-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,IAAI,EAAW,MAAM,YAAY,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEhF,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,eAAe,CAAoD;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBAE5B,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;IAK1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCtB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,QAAQ,IAAI,OAAO;IAIb,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAarC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAiB1D,gBAAgB,IAAI,IAAI;IAOxB,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAwFtE,kBAAkB,IAAI,IAAI;IAKpB,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8C3D,OAAO,IAAI,IAAI,GAAG,IAAI;CAGvB"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BrowserSession = void 0;
7
+ const playwright_extra_1 = require("playwright-extra");
8
+ const puppeteer_extra_plugin_stealth_1 = __importDefault(require("puppeteer-extra-plugin-stealth"));
9
+ playwright_extra_1.chromium.use((0, puppeteer_extra_plugin_stealth_1.default)());
10
+ class BrowserSession {
11
+ browser = null;
12
+ page = null;
13
+ frameInterval = null;
14
+ requestTimings = new Map();
15
+ trafficCallback = null;
16
+ sessionId;
17
+ url;
18
+ options;
19
+ constructor(sessionId, options) {
20
+ this.sessionId = sessionId;
21
+ this.options = options;
22
+ }
23
+ async start() {
24
+ if (this.browser) {
25
+ throw new Error("Browser already started");
26
+ }
27
+ const viewport = this.options?.viewport || { width: 1280, height: 800 };
28
+ const headless = this.options?.headless ?? true;
29
+ console.log(`Starting browser session ${this.sessionId} (headless: ${headless})`);
30
+ const args = [
31
+ "--disable-blink-features=AutomationControlled",
32
+ "--disable-infobars",
33
+ "--headless=new",
34
+ ];
35
+ this.browser = await playwright_extra_1.chromium.launch({
36
+ headless: false, // Must be false to use --headless=new from args
37
+ channel: "chrome",
38
+ args,
39
+ });
40
+ const context = await this.browser.newContext({
41
+ viewport,
42
+ userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
43
+ deviceScaleFactor: 1,
44
+ hasTouch: false,
45
+ isMobile: false,
46
+ javaScriptEnabled: true,
47
+ locale: "en-US",
48
+ timezoneId: "America/New_York",
49
+ permissions: ["geolocation"],
50
+ geolocation: { latitude: 40.7128, longitude: -74.006 },
51
+ });
52
+ this.page = await context.newPage();
53
+ console.log(`Browser session ${this.sessionId} started`);
54
+ }
55
+ async navigateToInitialUrl() {
56
+ if (this.options?.url && this.page) {
57
+ console.log(`Navigating to ${this.options.url}`);
58
+ await this.page.goto(this.options.url);
59
+ }
60
+ }
61
+ async stop() {
62
+ if (this.frameInterval) {
63
+ clearInterval(this.frameInterval);
64
+ this.frameInterval = null;
65
+ }
66
+ if (this.browser) {
67
+ await this.browser.close();
68
+ this.browser = null;
69
+ this.page = null;
70
+ console.log(`Browser session ${this.sessionId} stopped`);
71
+ }
72
+ }
73
+ isActive() {
74
+ return this.browser !== null && this.page !== null;
75
+ }
76
+ async captureFrame() {
77
+ if (!this.page) {
78
+ throw new Error("No active page");
79
+ }
80
+ const screenshot = await this.page.screenshot({
81
+ type: "jpeg",
82
+ quality: 60,
83
+ });
84
+ return screenshot.toString("base64");
85
+ }
86
+ startFrameCapture(callback) {
87
+ if (this.frameInterval) {
88
+ return;
89
+ }
90
+ // Capture frame every 200ms (~5 FPS)
91
+ this.frameInterval = setInterval(async () => {
92
+ try {
93
+ const frame = await this.captureFrame();
94
+ callback(frame);
95
+ }
96
+ catch (err) {
97
+ console.error("Frame capture error:", err);
98
+ }
99
+ }, 200);
100
+ }
101
+ stopFrameCapture() {
102
+ if (this.frameInterval) {
103
+ clearInterval(this.frameInterval);
104
+ this.frameInterval = null;
105
+ }
106
+ }
107
+ startTrafficCapture(callback) {
108
+ if (!this.page) {
109
+ throw new Error("No active page");
110
+ }
111
+ this.trafficCallback = callback;
112
+ this.page.on("request", (request) => {
113
+ this.requestTimings.set(request, Date.now());
114
+ });
115
+ this.page.on("response", async (response) => {
116
+ if (!this.trafficCallback)
117
+ return;
118
+ const request = response.request();
119
+ const startTime = this.requestTimings.get(request);
120
+ const timeMs = startTime ? Date.now() - startTime : 0;
121
+ this.requestTimings.delete(request);
122
+ const reqHeaders = {};
123
+ for (const [key, value] of Object.entries(request.headers())) {
124
+ reqHeaders[key] = value;
125
+ }
126
+ const resHeaders = {};
127
+ for (const [key, value] of Object.entries(response.headers())) {
128
+ resHeaders[key] = value;
129
+ }
130
+ let body;
131
+ try {
132
+ const buffer = await response.body();
133
+ body = buffer.toString("utf-8");
134
+ }
135
+ catch {
136
+ // Body may not be available for some responses
137
+ }
138
+ const traffic = {
139
+ type: "browser:traffic",
140
+ sessionId: this.sessionId,
141
+ request: {
142
+ method: request.method(),
143
+ url: request.url(),
144
+ headers: reqHeaders,
145
+ body: request.postData() ?? undefined,
146
+ },
147
+ response: {
148
+ status: response.status(),
149
+ statusText: response.statusText(),
150
+ headers: resHeaders,
151
+ body,
152
+ timeMs,
153
+ },
154
+ };
155
+ this.trafficCallback(traffic);
156
+ });
157
+ this.page.on("requestfailed", (request) => {
158
+ if (!this.trafficCallback)
159
+ return;
160
+ this.requestTimings.delete(request);
161
+ const reqHeaders = {};
162
+ for (const [key, value] of Object.entries(request.headers())) {
163
+ reqHeaders[key] = value;
164
+ }
165
+ const failure = request.failure();
166
+ const isTimeout = failure?.errorText?.toLowerCase().includes("timeout");
167
+ const traffic = {
168
+ type: "browser:traffic",
169
+ sessionId: this.sessionId,
170
+ request: {
171
+ method: request.method(),
172
+ url: request.url(),
173
+ headers: reqHeaders,
174
+ body: request.postData() ?? undefined,
175
+ },
176
+ error: failure?.errorText ?? "Request failed",
177
+ timedOut: isTimeout,
178
+ };
179
+ this.trafficCallback(traffic);
180
+ });
181
+ }
182
+ stopTrafficCapture() {
183
+ this.trafficCallback = null;
184
+ this.requestTimings.clear();
185
+ }
186
+ async handleInput(event) {
187
+ if (!this.page) {
188
+ throw new Error("No active page");
189
+ }
190
+ switch (event.kind) {
191
+ case "click":
192
+ await this.page.mouse.click(event.x, event.y, { button: event.button });
193
+ break;
194
+ case "dblclick":
195
+ await this.page.mouse.dblclick(event.x, event.y);
196
+ break;
197
+ case "move":
198
+ await this.page.mouse.move(event.x, event.y);
199
+ break;
200
+ case "scroll":
201
+ await this.page.mouse.move(event.x, event.y);
202
+ await this.page.mouse.wheel(event.deltaX, event.deltaY);
203
+ break;
204
+ case "keydown":
205
+ await this.page.keyboard.down(event.key);
206
+ break;
207
+ case "keyup":
208
+ await this.page.keyboard.up(event.key);
209
+ break;
210
+ case "type":
211
+ await this.page.keyboard.type(event.text);
212
+ break;
213
+ case "navigate":
214
+ console.log("Navigating to:", event.url);
215
+ await this.page.goto(event.url);
216
+ break;
217
+ case "refresh":
218
+ await this.page.reload();
219
+ break;
220
+ }
221
+ }
222
+ getPage() {
223
+ return this.page;
224
+ }
225
+ }
226
+ exports.BrowserSession = BrowserSession;
227
+ //# sourceMappingURL=browser-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../src/browser-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { BrowserTraffic } from "./types";
2
+ import { BrowserSession } from "./browser-session";
3
+ export declare class BrowserWSS {
4
+ private ws;
5
+ private serverUrl;
6
+ private token;
7
+ private runnerId;
8
+ private sessionId;
9
+ private session;
10
+ private onDisconnect;
11
+ private onConnect;
12
+ constructor(serverUrl: string, runnerId: string, token: string, sessionId: string, onConnect: () => void, onDisconnect: () => void);
13
+ connect(): void;
14
+ private sendAuth;
15
+ private handleMessage;
16
+ attachSession(session: BrowserSession): Promise<void>;
17
+ detachSession(): Promise<void>;
18
+ private sendFrame;
19
+ sendAck(sessionId: string, status: "started" | "stopped" | "error", error?: string): void;
20
+ sendTraffic(traffic: BrowserTraffic): void;
21
+ private send;
22
+ private cleanup;
23
+ disconnect(): void;
24
+ isConnected(): boolean;
25
+ getSession(): BrowserSession | null;
26
+ }
27
+ //# sourceMappingURL=browser-wss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-wss.d.ts","sourceRoot":"","sources":["../src/browser-wss.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAMV,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,SAAS,CAAa;gBAG5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,IAAI,EACrB,YAAY,EAAE,MAAM,IAAI;IAW1B,OAAO,IAAI,IAAI;IAqCf,OAAO,CAAC,QAAQ;YAcF,aAAa;IAuBrB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAUzF,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI1C,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,OAAO;IAWf,UAAU,IAAI,IAAI;IAQlB,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,cAAc,GAAG,IAAI;CAGpC"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BrowserWSS = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ class BrowserWSS {
9
+ ws = null;
10
+ serverUrl;
11
+ token;
12
+ runnerId;
13
+ sessionId;
14
+ session = null;
15
+ onDisconnect;
16
+ onConnect;
17
+ constructor(serverUrl, runnerId, token, sessionId, onConnect, onDisconnect) {
18
+ // Convert /runner to /runner/browser
19
+ this.serverUrl = serverUrl.replace(/\/runner$/, "/runner/browser");
20
+ this.runnerId = runnerId;
21
+ this.token = token;
22
+ this.sessionId = sessionId;
23
+ this.onConnect = onConnect;
24
+ this.onDisconnect = onDisconnect;
25
+ }
26
+ connect() {
27
+ if (this.ws) {
28
+ console.log("Browser WSS already connected");
29
+ return;
30
+ }
31
+ console.log(`Connecting browser WSS to ${this.serverUrl}`);
32
+ this.ws = new ws_1.default(this.serverUrl);
33
+ this.ws.on("open", () => {
34
+ console.log("Browser WSS connected");
35
+ this.sendAuth();
36
+ this.onConnect();
37
+ });
38
+ this.ws.on("message", (data) => {
39
+ try {
40
+ const message = JSON.parse(data.toString());
41
+ this.handleMessage(message);
42
+ }
43
+ catch (err) {
44
+ console.error("Failed to parse browser WSS message:", err);
45
+ }
46
+ });
47
+ this.ws.on("close", () => {
48
+ console.log("Browser WSS disconnected");
49
+ this.cleanup();
50
+ this.onDisconnect();
51
+ });
52
+ this.ws.on("error", (err) => {
53
+ console.error("Browser WSS error:", err);
54
+ });
55
+ }
56
+ sendAuth() {
57
+ if (!this.ws)
58
+ return;
59
+ // Send hello message with runnerId and token
60
+ const hello = {
61
+ type: "browser:hello",
62
+ runnerId: this.runnerId,
63
+ token: this.token,
64
+ sessionId: this.sessionId,
65
+ };
66
+ console.log("Sending browser hello:", JSON.stringify(hello));
67
+ this.send(hello);
68
+ }
69
+ async handleMessage(message) {
70
+ if (message.type === "browser:input") {
71
+ if (this.session &&
72
+ this.session.sessionId === message.sessionId &&
73
+ this.session.isActive()) {
74
+ if (!message.action) {
75
+ console.warn("Received browser:input message without action", message);
76
+ return;
77
+ }
78
+ try {
79
+ await this.session.handleInput(message.action);
80
+ }
81
+ catch (err) {
82
+ console.error("Input handling error:", err);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ async attachSession(session) {
88
+ if (this.session) {
89
+ console.log("Detaching existing session before attaching new one");
90
+ await this.detachSession();
91
+ }
92
+ this.session = session;
93
+ // Start frame capture
94
+ this.session.startFrameCapture((frame) => {
95
+ this.sendFrame(session.sessionId, frame);
96
+ });
97
+ // Start traffic capture
98
+ this.session.startTrafficCapture((traffic) => {
99
+ this.sendTraffic(traffic);
100
+ });
101
+ // Navigate to initial URL if provided (after traffic capture is set up)
102
+ await this.session.navigateToInitialUrl();
103
+ // Send acknowledgment that browser started
104
+ this.sendAck(session.sessionId, "started");
105
+ }
106
+ async detachSession() {
107
+ if (this.session) {
108
+ this.session.stopFrameCapture();
109
+ this.session.stopTrafficCapture();
110
+ await this.session.stop();
111
+ this.session = null;
112
+ }
113
+ }
114
+ sendFrame(sessionId, data) {
115
+ const frame = {
116
+ type: "browser:frame",
117
+ sessionId,
118
+ mime: "image/jpeg",
119
+ data,
120
+ };
121
+ this.send(frame);
122
+ }
123
+ sendAck(sessionId, status, error) {
124
+ const ack = {
125
+ type: "browser:ack",
126
+ sessionId,
127
+ status,
128
+ error,
129
+ };
130
+ this.send(ack);
131
+ }
132
+ sendTraffic(traffic) {
133
+ this.send(traffic);
134
+ }
135
+ send(message) {
136
+ if (this.ws?.readyState === ws_1.default.OPEN) {
137
+ this.ws.send(JSON.stringify(message));
138
+ }
139
+ }
140
+ cleanup() {
141
+ if (this.session) {
142
+ this.session.stopFrameCapture();
143
+ this.session.stopTrafficCapture();
144
+ this.session.stop().catch((err) => {
145
+ console.error("Error stopping session during cleanup:", err);
146
+ });
147
+ this.session = null;
148
+ }
149
+ }
150
+ disconnect() {
151
+ this.cleanup();
152
+ if (this.ws) {
153
+ this.ws.close();
154
+ this.ws = null;
155
+ }
156
+ }
157
+ isConnected() {
158
+ return this.ws !== null && this.ws.readyState === ws_1.default.OPEN;
159
+ }
160
+ getSession() {
161
+ return this.session;
162
+ }
163
+ }
164
+ exports.BrowserWSS = BrowserWSS;
165
+ //# sourceMappingURL=browser-wss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-wss.js","sourceRoot":"","sources":["../src/browser-wss.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -3,6 +3,8 @@ export declare class Runner {
3
3
  private token;
4
4
  private runnerId;
5
5
  private serverUrl;
6
+ private browserWSS;
7
+ private pendingBrowserStart;
6
8
  constructor(serverUrl: string, token: string);
7
9
  private generateRunnerId;
8
10
  connect(): void;
@@ -12,6 +14,11 @@ export declare class Runner {
12
14
  private executeHttp1;
13
15
  private doHttp1Request;
14
16
  private executeHttp2;
17
+ private handleBrowserStart;
18
+ private startBrowser;
19
+ private handleBrowserStop;
20
+ private handleBrowserWSSConnect;
21
+ private handleBrowserWSSDisconnect;
15
22
  private send;
16
23
  disconnect(): void;
17
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAQA,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAM5C,OAAO,CAAC,gBAAgB;IAMxB,OAAO,IAAI,IAAI;IA0Bf,OAAO,CAAC,SAAS;YAUH,aAAa;YAMb,aAAa;YAoCb,YAAY;IAa1B,OAAO,CAAC,cAAc;YA8ER,YAAY;IAgE1B,OAAO,CAAC,IAAI;IAMZ,UAAU,IAAI,IAAI;CAMnB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAYA,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,mBAAmB,CAA6B;gBAE5C,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAM5C,OAAO,CAAC,gBAAgB;IAMxB,OAAO,IAAI,IAAI;IA0Bf,OAAO,CAAC,SAAS;YAWH,aAAa;YAWb,aAAa;YAoCb,YAAY;IAa1B,OAAO,CAAC,cAAc;YA8ER,YAAY;YAgEZ,kBAAkB;YA6BlB,YAAY;YAwCZ,iBAAiB;IAwB/B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,IAAI;IAMZ,UAAU,IAAI,IAAI;CAUnB"}
package/dist/runner.js CHANGED
@@ -10,11 +10,16 @@ const http_1 = __importDefault(require("http"));
10
10
  const http2_1 = __importDefault(require("http2"));
11
11
  const os_1 = __importDefault(require("os"));
12
12
  const crypto_1 = __importDefault(require("crypto"));
13
+ const browser_wss_1 = require("./browser-wss");
14
+ const browser_session_1 = require("./browser-session");
15
+ const { version } = require("../package.json");
13
16
  class Runner {
14
17
  ws = null;
15
18
  token;
16
19
  runnerId;
17
20
  serverUrl;
21
+ browserWSS = null;
22
+ pendingBrowserStart = null;
18
23
  constructor(serverUrl, token) {
19
24
  this.serverUrl = serverUrl;
20
25
  this.token = token;
@@ -52,7 +57,8 @@ class Runner {
52
57
  type: "hello",
53
58
  runnerId: this.runnerId,
54
59
  token: this.token,
55
- capabilities: ["http/s"],
60
+ version: version,
61
+ capabilities: ["http/s", "browser"],
56
62
  };
57
63
  this.send(hello);
58
64
  }
@@ -60,6 +66,13 @@ class Runner {
60
66
  if (message.type === "execute") {
61
67
  await this.handleExecute(message);
62
68
  }
69
+ else if (message.type === "browser:start") {
70
+ console.log(`Browser start request ` + JSON.stringify(message));
71
+ await this.handleBrowserStart(message);
72
+ }
73
+ else if (message.type === "browser:stop") {
74
+ await this.handleBrowserStop(message);
75
+ }
63
76
  }
64
77
  async handleExecute(execute) {
65
78
  console.log(`Executing job ${execute.jobId}: ${execute.request.method} ${execute.request.url}`);
@@ -218,12 +231,101 @@ class Runner {
218
231
  req.end();
219
232
  });
220
233
  }
234
+ async handleBrowserStart(message) {
235
+ console.log(`Browser start request for session ${message.sessionId}`);
236
+ // Check if there's already an active session
237
+ if (this.browserWSS?.getSession()?.isActive()) {
238
+ console.log("Browser session already active, ignoring start request");
239
+ return;
240
+ }
241
+ // Store the request and wait for browser WSS to connect
242
+ this.pendingBrowserStart = message;
243
+ // Connect browser WSS if not already connected
244
+ if (!this.browserWSS) {
245
+ this.browserWSS = new browser_wss_1.BrowserWSS(this.serverUrl, this.runnerId, this.token, message.sessionId, () => this.handleBrowserWSSConnect(), () => this.handleBrowserWSSDisconnect());
246
+ this.browserWSS.connect();
247
+ }
248
+ else if (this.browserWSS.isConnected()) {
249
+ // Already connected, start immediately
250
+ await this.startBrowser(message);
251
+ }
252
+ }
253
+ async startBrowser(message) {
254
+ if (!this.browserWSS) {
255
+ console.error("Cannot start browser: browser WSS not initialized");
256
+ return;
257
+ }
258
+ let session = null;
259
+ try {
260
+ session = new browser_session_1.BrowserSession(message.sessionId, message.options);
261
+ await session.start();
262
+ // Check if browserWSS is still connected after async operation
263
+ if (!this.browserWSS) {
264
+ console.error("Browser WSS disconnected during browser startup, cleaning up");
265
+ await session.stop();
266
+ this.pendingBrowserStart = null;
267
+ return;
268
+ }
269
+ await this.browserWSS.attachSession(session);
270
+ this.pendingBrowserStart = null;
271
+ console.log(`Browser session ${message.sessionId} started successfully`);
272
+ }
273
+ catch (err) {
274
+ console.error("Failed to start browser:", err);
275
+ // Clean up session if it was created
276
+ if (session?.isActive()) {
277
+ await session.stop().catch(() => { });
278
+ }
279
+ // Only send ack if browserWSS is still available
280
+ if (this.browserWSS) {
281
+ this.browserWSS.sendAck(message.sessionId, "error", err instanceof Error ? err.message : String(err));
282
+ }
283
+ this.pendingBrowserStart = null;
284
+ }
285
+ }
286
+ async handleBrowserStop(message) {
287
+ console.log(`Browser stop request for session ${message.sessionId}`);
288
+ if (!this.browserWSS) {
289
+ console.log("No browser WSS connection");
290
+ return;
291
+ }
292
+ const browserWSS = this.browserWSS;
293
+ const session = browserWSS.getSession();
294
+ if (session && session.sessionId === message.sessionId) {
295
+ browserWSS.sendAck(message.sessionId, "stopped");
296
+ await browserWSS.detachSession();
297
+ console.log(`Browser session ${message.sessionId} stopped`);
298
+ // Since the browser WSS connection is tied to the session ID in the hello message,
299
+ // we should disconnect it when the session stops.
300
+ browserWSS.disconnect();
301
+ this.browserWSS = null;
302
+ }
303
+ else {
304
+ console.log(`Session ${message.sessionId} not found or mismatch`);
305
+ }
306
+ }
307
+ handleBrowserWSSConnect() {
308
+ console.log("Browser WSS connected");
309
+ // If there's a pending start request, execute it now
310
+ if (this.pendingBrowserStart) {
311
+ this.startBrowser(this.pendingBrowserStart);
312
+ }
313
+ }
314
+ handleBrowserWSSDisconnect() {
315
+ console.log("Browser WSS disconnected, cleaning up browser session");
316
+ this.browserWSS = null;
317
+ this.pendingBrowserStart = null;
318
+ }
221
319
  send(message) {
222
320
  if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
223
321
  this.ws.send(JSON.stringify(message));
224
322
  }
225
323
  }
226
324
  disconnect() {
325
+ if (this.browserWSS) {
326
+ this.browserWSS.disconnect();
327
+ this.browserWSS = null;
328
+ }
227
329
  if (this.ws) {
228
330
  this.ws.close();
229
331
  this.ws = null;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@ export type Hello = {
2
2
  type: "hello";
3
3
  runnerId: string;
4
4
  token: string;
5
+ version: string;
5
6
  capabilities: string[];
6
7
  };
7
8
  export type Result = {
@@ -36,6 +37,110 @@ export type Execute = {
36
37
  options?: HttpOptions;
37
38
  timeoutMs?: number;
38
39
  };
39
- export type ServerMessage = Execute;
40
+ export type BrowserStart = {
41
+ type: "browser:start";
42
+ sessionId: string;
43
+ options?: {
44
+ url?: string;
45
+ viewport?: {
46
+ width: number;
47
+ height: number;
48
+ };
49
+ headless?: boolean;
50
+ };
51
+ };
52
+ export type BrowserStop = {
53
+ type: "browser:stop";
54
+ sessionId: string;
55
+ };
56
+ export type BrowserHello = {
57
+ type: "browser:hello";
58
+ runnerId: string;
59
+ token: string;
60
+ sessionId: string;
61
+ };
62
+ export type BrowserFrame = {
63
+ type: "browser:frame";
64
+ sessionId: string;
65
+ mime: "image/jpeg";
66
+ data: string;
67
+ };
68
+ export type KeyModifiers = {
69
+ alt?: boolean;
70
+ ctrl?: boolean;
71
+ meta?: boolean;
72
+ shift?: boolean;
73
+ };
74
+ export type BrowserInputAction = {
75
+ kind: "click";
76
+ x: number;
77
+ y: number;
78
+ button?: "left" | "right" | "middle";
79
+ } | {
80
+ kind: "dblclick";
81
+ x: number;
82
+ y: number;
83
+ } | {
84
+ kind: "move";
85
+ x: number;
86
+ y: number;
87
+ } | {
88
+ kind: "scroll";
89
+ x: number;
90
+ y: number;
91
+ deltaX: number;
92
+ deltaY: number;
93
+ } | {
94
+ kind: "keydown";
95
+ key: string;
96
+ modifiers?: KeyModifiers;
97
+ } | {
98
+ kind: "keyup";
99
+ key: string;
100
+ modifiers?: KeyModifiers;
101
+ } | {
102
+ kind: "type";
103
+ text: string;
104
+ } | {
105
+ kind: "navigate";
106
+ url: string;
107
+ } | {
108
+ kind: "refresh";
109
+ };
110
+ export type BrowserInputEvent = {
111
+ type: "browser:input";
112
+ sessionId: string;
113
+ action: BrowserInputAction;
114
+ };
115
+ export type BrowserAck = {
116
+ type: "browser:ack";
117
+ sessionId: string;
118
+ status: "started" | "stopped" | "error";
119
+ error?: string;
120
+ };
121
+ export type BrowserTraffic = {
122
+ type: "browser:traffic";
123
+ sessionId: string;
124
+ request: {
125
+ method: string;
126
+ url: string;
127
+ headers: Record<string, string>;
128
+ body?: string;
129
+ httpVersion?: string;
130
+ };
131
+ response?: {
132
+ status: number;
133
+ statusText: string;
134
+ headers: Record<string, string>;
135
+ body?: string;
136
+ httpVersion?: string;
137
+ timeMs: number;
138
+ };
139
+ error?: string;
140
+ timedOut?: boolean;
141
+ };
142
+ export type ServerMessage = Execute | BrowserStart | BrowserStop;
40
143
  export type ClientMessage = Hello | Result;
144
+ export type BrowserWSSOutgoingMessage = BrowserHello | BrowserFrame | BrowserAck | BrowserTraffic;
145
+ export type BrowserWSSIncomingMessage = BrowserInputEvent;
41
146
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gleip-runner",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "WebSocket-based job runner that executes HTTP requests",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,6 +27,9 @@
27
27
  "typescript": "^5.3.0"
28
28
  },
29
29
  "dependencies": {
30
+ "playwright": "^1.57.0",
31
+ "playwright-extra": "^4.3.6",
32
+ "puppeteer-extra-plugin-stealth": "^2.11.2",
30
33
  "ws": "^8.14.2"
31
34
  },
32
35
  "engines": {