@kritchoff/agent-browser 1.0.2 → 1.0.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/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/orchestrator.d.ts +1 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +76 -62
- package/dist/orchestrator.js.map +1 -1
- package/docker-compose.sdk.yml +2 -1
- package/package.json +7 -9
- package/scripts/check-version-sync.js +0 -39
- package/scripts/sync-version.js +0 -69
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,YAAY,CAAe;gBAEvB,OAAO,GAAE,YAAiB;IAUhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;YACW,aAAa;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ export class WootzAgent {
|
|
|
30
30
|
}
|
|
31
31
|
catch (e) {
|
|
32
32
|
// Wait 1s and retry
|
|
33
|
-
await new Promise(r => setTimeout(r, 1000));
|
|
33
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
throw new Error(`Timed out waiting for Agent Daemon on port ${DAEMON_PORT} after ${timeoutMs / 1000}s`);
|
|
@@ -131,7 +131,7 @@ export class WootzAgent {
|
|
|
131
131
|
}
|
|
132
132
|
// --- Semantic Locators ---
|
|
133
133
|
async getByRole(role, name, exact = false) {
|
|
134
|
-
throw new Error(
|
|
134
|
+
throw new Error('Locator builders (getByRole) are not fully supported in stateless mode yet. Use standard selectors.');
|
|
135
135
|
}
|
|
136
136
|
// --- Utilities ---
|
|
137
137
|
async screenshot(path) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,GAAG,KAAK,CAAC;AAU1B,MAAM,OAAO,UAAU;IACb,OAAO,CAAe;IACtB,YAAY,CAAe;IAEnC,YAAY,UAAwB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,IAAI,EAAE,6CAA6C;YACzD,GAAG,OAAO;SACX,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;IAC3D,CAAC;IAED,gDAAgD;IAEhD,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAChC,8CAA8C;QAC9C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe;gBAC/D,OAAO,CAAC,UAAU;YACpB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,oBAAoB;gBACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/orchestrator.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAQA,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,OAAO;IAO7B,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY;YASN,mBAAmB;YAwBnB,WAAW;IAgBZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2GtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmEnC,OAAO,CAAC,UAAU;CAgCnB"}
|
package/dist/orchestrator.js
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { spawn, execSync } from 'child_process';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import fs from 'fs';
|
|
4
3
|
import { fileURLToPath } from 'url';
|
|
5
4
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
5
|
const PROJECT_ROOT = path.resolve(__dirname, '..');
|
|
7
|
-
const CACHE_DIR = path.join(PROJECT_ROOT, 'cache');
|
|
8
|
-
const SNAPSHOT_DIR = path.join(CACHE_DIR, 'snapshots', 'quickboot');
|
|
9
6
|
export class Orchestrator {
|
|
10
7
|
composeFile;
|
|
11
8
|
constructor(distMode) {
|
|
12
9
|
this.composeFile = path.join(PROJECT_ROOT, distMode ? 'docker-compose.sdk.yml' : 'docker-compose.prod.yml');
|
|
13
|
-
// Ensure cache dir exists
|
|
14
|
-
if (!fs.existsSync(path.join(CACHE_DIR, 'snapshots'))) {
|
|
15
|
-
fs.mkdirSync(path.join(CACHE_DIR, 'snapshots'), { recursive: true });
|
|
16
|
-
}
|
|
17
10
|
}
|
|
18
11
|
log(msg, level = 'info') {
|
|
19
12
|
const colors = {
|
|
@@ -21,7 +14,7 @@ export class Orchestrator {
|
|
|
21
14
|
success: '\x1b[32m', // Green
|
|
22
15
|
warn: '\x1b[33m', // Yellow
|
|
23
16
|
error: '\x1b[31m', // Red
|
|
24
|
-
reset: '\x1b[0m'
|
|
17
|
+
reset: '\x1b[0m',
|
|
25
18
|
};
|
|
26
19
|
console.log(`${colors[level]}[SDK]${colors.reset} ${msg}`);
|
|
27
20
|
}
|
|
@@ -29,7 +22,7 @@ export class Orchestrator {
|
|
|
29
22
|
try {
|
|
30
23
|
execSync(cmd, {
|
|
31
24
|
stdio: 'inherit',
|
|
32
|
-
env: { ...process.env, ...env }
|
|
25
|
+
env: { ...process.env, ...env },
|
|
33
26
|
});
|
|
34
27
|
return true;
|
|
35
28
|
}
|
|
@@ -39,7 +32,9 @@ export class Orchestrator {
|
|
|
39
32
|
}
|
|
40
33
|
getContainerId(serviceName) {
|
|
41
34
|
try {
|
|
42
|
-
const output = execSync(`docker compose -f "${this.composeFile}" ps -q ${serviceName}`, {
|
|
35
|
+
const output = execSync(`docker compose -f "${this.composeFile}" ps -q ${serviceName}`, {
|
|
36
|
+
encoding: 'utf-8',
|
|
37
|
+
});
|
|
43
38
|
return output.trim() || null;
|
|
44
39
|
}
|
|
45
40
|
catch {
|
|
@@ -58,130 +53,149 @@ export class Orchestrator {
|
|
|
58
53
|
async pullImagesWithRetry() {
|
|
59
54
|
if (!this.composeFile.endsWith('docker-compose.sdk.yml'))
|
|
60
55
|
return;
|
|
61
|
-
this.log(
|
|
56
|
+
this.log('Please wait while we get things ready...', 'info');
|
|
62
57
|
const maxRetries = 10;
|
|
63
58
|
for (let count = 0; count < maxRetries; count++) {
|
|
64
59
|
if (this.runCommand(`docker compose -f "${this.composeFile}" pull`)) {
|
|
65
60
|
return;
|
|
66
61
|
}
|
|
67
62
|
this.log(`Download failed/interrupted. Retrying (${count + 1}/${maxRetries}) in 10s...`, 'warn');
|
|
68
|
-
await new Promise(r => setTimeout(r, 10000));
|
|
63
|
+
await new Promise((r) => setTimeout(r, 10000));
|
|
69
64
|
}
|
|
70
65
|
this.log(`Failed to download images after ${maxRetries} attempts. Check internet connection.`, 'error');
|
|
71
66
|
process.exit(1);
|
|
72
67
|
}
|
|
68
|
+
async hasSnapshot() {
|
|
69
|
+
try {
|
|
70
|
+
// 1. Check if volume exists
|
|
71
|
+
execSync(`docker volume inspect agent-snapshots`, { stdio: 'ignore' });
|
|
72
|
+
// 2. Check if volume contains the 'quickboot' directory
|
|
73
|
+
// We use a tiny helper container to look inside the managed volume
|
|
74
|
+
const output = execSync(`docker run --rm -v agent-snapshots:/data busybox ls /data`, {
|
|
75
|
+
encoding: 'utf-8',
|
|
76
|
+
});
|
|
77
|
+
return output.includes('quickboot');
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
73
83
|
async start() {
|
|
74
84
|
this.log(`Initializing Agent Environment...`, 'info');
|
|
75
85
|
await this.pullImagesWithRetry();
|
|
76
|
-
this.log(
|
|
86
|
+
this.log('Cleaning up previous container state...', 'info');
|
|
77
87
|
this.runCommand(`docker compose -f "${this.composeFile}" down -v --remove-orphans`);
|
|
78
|
-
const hasSnapshot =
|
|
88
|
+
const hasSnapshot = await this.hasSnapshot();
|
|
79
89
|
if (hasSnapshot) {
|
|
80
90
|
// === WARM START ===
|
|
81
|
-
this.log(
|
|
91
|
+
this.log('Found cached baseline snapshot. Performing HYPER-SPEED WARM BOOT...', 'success');
|
|
82
92
|
const success = this.runCommand(`docker compose -f "${this.composeFile}" up -d`, {
|
|
83
|
-
EMULATOR_SNAPSHOT_NAME: 'quickboot'
|
|
93
|
+
EMULATOR_SNAPSHOT_NAME: 'quickboot',
|
|
84
94
|
});
|
|
85
95
|
if (!success)
|
|
86
|
-
throw new Error(
|
|
96
|
+
throw new Error('Startup failed during docker compose up.');
|
|
87
97
|
const agentCont = this.getContainerId('agent-service');
|
|
88
98
|
const androidCont = this.getContainerId('android-service');
|
|
89
99
|
// Verify Port Mapping
|
|
90
100
|
if (agentCont && !this.isPortMapped(agentCont, 3000)) {
|
|
91
|
-
this.log(
|
|
92
|
-
this.log(
|
|
101
|
+
this.log('Port 3000 (Host 32001) is not mapped! Container config is stale.', 'warn');
|
|
102
|
+
this.log('Forcing full restart to apply network settings...', 'info');
|
|
93
103
|
this.runCommand(`docker compose -f "${this.composeFile}" down -v --remove-orphans`);
|
|
94
|
-
await new Promise(r => setTimeout(r, 5000));
|
|
104
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
95
105
|
this.runCommand(`docker compose -f "${this.composeFile}" up -d`, {
|
|
96
|
-
EMULATOR_SNAPSHOT_NAME: 'quickboot'
|
|
106
|
+
EMULATOR_SNAPSHOT_NAME: 'quickboot',
|
|
97
107
|
});
|
|
98
108
|
}
|
|
99
109
|
if (androidCont) {
|
|
100
|
-
this.log(
|
|
110
|
+
this.log('Rehydrating Android network connection...', 'info');
|
|
101
111
|
try {
|
|
102
|
-
execSync(`docker exec "${androidCont}" adb shell cmd connectivity airplane-mode enable`, {
|
|
103
|
-
|
|
112
|
+
execSync(`docker exec "${androidCont}" adb shell cmd connectivity airplane-mode enable`, {
|
|
113
|
+
stdio: 'ignore',
|
|
114
|
+
});
|
|
115
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
104
116
|
execSync(`docker exec "${androidCont}" adb shell cmd connectivity airplane-mode disable`, { stdio: 'ignore' });
|
|
105
|
-
await new Promise(r => setTimeout(r, 3000));
|
|
117
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
106
118
|
}
|
|
107
119
|
catch (e) {
|
|
108
120
|
this.log(`Network rehydration warning: ${e}`, 'warn');
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
|
-
this.log(
|
|
123
|
+
this.log('Waiting for Daemon Connection...');
|
|
112
124
|
if (agentCont)
|
|
113
|
-
await this.waitForLog(agentCont,
|
|
125
|
+
await this.waitForLog(agentCont, 'Daemon listening on TCP', 180000);
|
|
114
126
|
}
|
|
115
127
|
else {
|
|
116
128
|
// === COLD START ===
|
|
117
|
-
this.log(
|
|
118
|
-
this.log(
|
|
129
|
+
this.log('No baseline found. Performing FIRST RUN SETUP (Cold Boot)...', 'warn');
|
|
130
|
+
this.log('This will take ~60-90 seconds, but only once.', 'warn');
|
|
119
131
|
const success = this.runCommand(`docker compose -f "${this.composeFile}" up -d`, {
|
|
120
|
-
EMULATOR_SNAPSHOT_NAME: ''
|
|
132
|
+
EMULATOR_SNAPSHOT_NAME: '',
|
|
121
133
|
});
|
|
122
134
|
if (!success)
|
|
123
|
-
throw new Error(
|
|
135
|
+
throw new Error('Startup failed during docker compose up.');
|
|
124
136
|
let androidCont = this.getContainerId('android-service');
|
|
125
137
|
const agentCont = this.getContainerId('agent-service');
|
|
126
138
|
if (!androidCont)
|
|
127
|
-
throw new Error(
|
|
139
|
+
throw new Error('Error: Android container not found.');
|
|
128
140
|
// Verify Port Mapping
|
|
129
141
|
if (agentCont && !this.isPortMapped(agentCont, 3000)) {
|
|
130
|
-
this.log(
|
|
131
|
-
this.log(
|
|
142
|
+
this.log('Port 3000 (Host 32001) is not mapped! Container config is stale.', 'warn');
|
|
143
|
+
this.log('Forcing full restart to apply network settings...', 'info');
|
|
132
144
|
this.runCommand(`docker compose -f "${this.composeFile}" down -v --remove-orphans`);
|
|
133
|
-
await new Promise(r => setTimeout(r, 5000));
|
|
145
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
134
146
|
this.runCommand(`docker compose -f "${this.composeFile}" up -d`, {
|
|
135
|
-
EMULATOR_SNAPSHOT_NAME: ''
|
|
147
|
+
EMULATOR_SNAPSHOT_NAME: '',
|
|
136
148
|
});
|
|
137
149
|
androidCont = this.getContainerId('android-service') || androidCont;
|
|
138
150
|
}
|
|
139
|
-
this.log(
|
|
140
|
-
await this.waitForLog(androidCont,
|
|
141
|
-
this.log(
|
|
142
|
-
await this.waitForLog(androidCont,
|
|
143
|
-
this.log(
|
|
144
|
-
await this.waitForLog(androidCont,
|
|
145
|
-
this.log(
|
|
151
|
+
this.log('Waiting for Android OS to boot (this takes a moment)...', 'info');
|
|
152
|
+
await this.waitForLog(androidCont, 'Emulator boot complete');
|
|
153
|
+
this.log('Waiting for Browser Installation...', 'info');
|
|
154
|
+
await this.waitForLog(androidCont, 'APK installation complete');
|
|
155
|
+
this.log('Waiting for CDP Bridge...', 'info');
|
|
156
|
+
await this.waitForLog(androidCont, 'CDP Bridge ready');
|
|
157
|
+
this.log('Waiting for Agent Daemon Connection...');
|
|
146
158
|
if (agentCont)
|
|
147
|
-
await this.waitForLog(agentCont,
|
|
159
|
+
await this.waitForLog(agentCont, 'Daemon listening on TCP');
|
|
148
160
|
// Save Snapshot
|
|
149
|
-
this.log(
|
|
161
|
+
this.log('Saving emulator state (quickboot)...', 'info');
|
|
150
162
|
const saved = this.runCommand(`docker exec "${androidCont}" adb emu avd snapshot save quickboot`);
|
|
151
163
|
if (saved) {
|
|
152
|
-
this.log(
|
|
153
|
-
this.log(
|
|
164
|
+
this.log('Snapshot saved to host volume.', 'success');
|
|
165
|
+
this.log('Setup Complete! Future runs will launch instantly.', 'success');
|
|
154
166
|
}
|
|
155
167
|
else {
|
|
156
|
-
throw new Error(
|
|
168
|
+
throw new Error('Failed to save snapshot inside emulator.');
|
|
157
169
|
}
|
|
158
170
|
}
|
|
159
171
|
}
|
|
160
172
|
async stop() {
|
|
161
|
-
this.log(
|
|
173
|
+
this.log('Stopping environment...', 'info');
|
|
162
174
|
this.runCommand(`docker compose -f "${this.composeFile}" down -v --remove-orphans`);
|
|
163
|
-
this.log(
|
|
175
|
+
this.log('Environment cleaned and stopped.', 'success');
|
|
164
176
|
}
|
|
165
177
|
async reset() {
|
|
166
|
-
this.log(
|
|
178
|
+
this.log('Performing Fast Browser Reset...', 'info');
|
|
167
179
|
const androidCont = this.getContainerId('android-service');
|
|
168
180
|
if (!androidCont) {
|
|
169
|
-
this.log(
|
|
181
|
+
this.log('Android container not running.', 'error');
|
|
170
182
|
return;
|
|
171
183
|
}
|
|
172
|
-
this.log(
|
|
184
|
+
this.log('Initiating fast reset (userspace reboot)...', 'info');
|
|
173
185
|
try {
|
|
174
186
|
execSync(`docker exec "${androidCont}" adb shell reboot userspace`, { stdio: 'ignore' });
|
|
175
187
|
}
|
|
176
188
|
catch {
|
|
177
189
|
// Ignored
|
|
178
190
|
}
|
|
179
|
-
this.log(
|
|
191
|
+
this.log('Waiting for device to come online...', 'info');
|
|
180
192
|
const start = Date.now();
|
|
181
193
|
let online = false;
|
|
182
194
|
while (Date.now() - start < 30000) {
|
|
183
195
|
try {
|
|
184
|
-
const state = execSync(`docker exec "${androidCont}" adb get-state`, {
|
|
196
|
+
const state = execSync(`docker exec "${androidCont}" adb get-state`, {
|
|
197
|
+
encoding: 'utf-8',
|
|
198
|
+
}).trim();
|
|
185
199
|
if (state === 'device') {
|
|
186
200
|
execSync(`docker exec "${androidCont}" adb shell echo ok`, { stdio: 'ignore' });
|
|
187
201
|
online = true;
|
|
@@ -191,12 +205,12 @@ export class Orchestrator {
|
|
|
191
205
|
catch {
|
|
192
206
|
// Still offline
|
|
193
207
|
}
|
|
194
|
-
await new Promise(r => setTimeout(r, 1000));
|
|
208
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
195
209
|
}
|
|
196
210
|
if (!online)
|
|
197
|
-
throw new Error(
|
|
198
|
-
this.log(
|
|
199
|
-
this.log(
|
|
211
|
+
throw new Error('Timeout waiting for device after reboot');
|
|
212
|
+
this.log('Device online', 'success');
|
|
213
|
+
this.log('Waiting for browser CDP...', 'info');
|
|
200
214
|
const cdpStart = Date.now();
|
|
201
215
|
let cdpReady = false;
|
|
202
216
|
while (Date.now() - cdpStart < 30000) {
|
|
@@ -213,11 +227,11 @@ export class Orchestrator {
|
|
|
213
227
|
catch { }
|
|
214
228
|
}
|
|
215
229
|
}
|
|
216
|
-
await new Promise(r => setTimeout(r, 1000));
|
|
230
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
217
231
|
}
|
|
218
232
|
if (!cdpReady)
|
|
219
|
-
throw new Error(
|
|
220
|
-
this.log(
|
|
233
|
+
throw new Error('Timeout waiting for CDP');
|
|
234
|
+
this.log('Fast reset complete!', 'success');
|
|
221
235
|
}
|
|
222
236
|
waitForLog(container, pattern, timeoutMs = 120000) {
|
|
223
237
|
return new Promise((resolve, reject) => {
|
package/dist/orchestrator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/docker-compose.sdk.yml
CHANGED
|
@@ -20,7 +20,7 @@ services:
|
|
|
20
20
|
- /dev/kvm:/dev/kvm
|
|
21
21
|
volumes:
|
|
22
22
|
- avd-data:/root/.android
|
|
23
|
-
-
|
|
23
|
+
- agent-snapshots:/root/.android/avd/Pixel_6_API_34.avd/snapshots
|
|
24
24
|
healthcheck:
|
|
25
25
|
test: ["CMD", "curl", "-f", "http://localhost:9224/json/version"]
|
|
26
26
|
interval: 10s
|
|
@@ -49,6 +49,7 @@ services:
|
|
|
49
49
|
|
|
50
50
|
volumes:
|
|
51
51
|
avd-data:
|
|
52
|
+
agent-snapshots:
|
|
52
53
|
|
|
53
54
|
networks:
|
|
54
55
|
agent-network:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kritchoff/agent-browser",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Headless browser automation CLI for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,11 +17,9 @@
|
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
19
|
"prepare": "husky",
|
|
20
|
-
"version:sync": "node scripts/sync-version.js",
|
|
21
|
-
"version": "npm run version:sync",
|
|
22
20
|
"build": "tsc",
|
|
23
21
|
"build:docker": "docker build -t agent-browser-builder -f docker/Dockerfile.build .",
|
|
24
|
-
"release": "npm run
|
|
22
|
+
"release": "npm run build && npm publish",
|
|
25
23
|
"prepublishOnly": "npm run build",
|
|
26
24
|
"start": "node dist/daemon.js",
|
|
27
25
|
"dev": "tsx src/daemon.ts",
|
|
@@ -31,8 +29,8 @@
|
|
|
31
29
|
"test": "vitest run",
|
|
32
30
|
"test:watch": "vitest",
|
|
33
31
|
"changeset": "changeset",
|
|
34
|
-
"ci:version": "changeset version && pnpm
|
|
35
|
-
"ci:publish": "pnpm run
|
|
32
|
+
"ci:version": "changeset version && pnpm install --no-frozen-lockfile",
|
|
33
|
+
"ci:publish": "pnpm run build && changeset publish"
|
|
36
34
|
},
|
|
37
35
|
"keywords": [
|
|
38
36
|
"browser",
|
|
@@ -45,12 +43,12 @@
|
|
|
45
43
|
"license": "Apache-2.0",
|
|
46
44
|
"repository": {
|
|
47
45
|
"type": "git",
|
|
48
|
-
"url": "git+https://github.com/
|
|
46
|
+
"url": "git+https://github.com/kritagya-khanna/agent-browser.git"
|
|
49
47
|
},
|
|
50
48
|
"bugs": {
|
|
51
|
-
"url": "https://github.com/
|
|
49
|
+
"url": "https://github.com/kritagya-khanna/agent-browser/issues"
|
|
52
50
|
},
|
|
53
|
-
"homepage": "https://github.com/
|
|
51
|
+
"homepage": "https://github.com/kritagya-khanna/agent-browser#readme",
|
|
54
52
|
"dependencies": {
|
|
55
53
|
"node-simctl": "^7.4.0",
|
|
56
54
|
"playwright-core": "^1.57.0",
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Verifies that package.json and cli/Cargo.toml have the same version.
|
|
5
|
-
* Used in CI to catch version drift.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { readFileSync } from 'fs';
|
|
9
|
-
import { dirname, join } from 'path';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
|
-
|
|
12
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
-
const rootDir = join(__dirname, '..');
|
|
14
|
-
|
|
15
|
-
// Read package.json version
|
|
16
|
-
const packageJson = JSON.parse(readFileSync(join(rootDir, 'package.json'), 'utf-8'));
|
|
17
|
-
const packageVersion = packageJson.version;
|
|
18
|
-
|
|
19
|
-
// Read Cargo.toml version
|
|
20
|
-
const cargoToml = readFileSync(join(rootDir, 'cli/Cargo.toml'), 'utf-8');
|
|
21
|
-
const cargoVersionMatch = cargoToml.match(/^version\s*=\s*"([^"]*)"/m);
|
|
22
|
-
|
|
23
|
-
if (!cargoVersionMatch) {
|
|
24
|
-
console.error('Could not find version in cli/Cargo.toml');
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const cargoVersion = cargoVersionMatch[1];
|
|
29
|
-
|
|
30
|
-
if (packageVersion !== cargoVersion) {
|
|
31
|
-
console.error('Version mismatch detected!');
|
|
32
|
-
console.error(` package.json: ${packageVersion}`);
|
|
33
|
-
console.error(` cli/Cargo.toml: ${cargoVersion}`);
|
|
34
|
-
console.error('');
|
|
35
|
-
console.error("Run 'pnpm run version:sync' to fix this.");
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
console.log(`Versions are in sync: ${packageVersion}`);
|
package/scripts/sync-version.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Syncs the version from package.json to all other config files.
|
|
5
|
-
* Run this script before building or releasing.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { execSync } from "child_process";
|
|
9
|
-
import { readFileSync, writeFileSync } from "fs";
|
|
10
|
-
import { dirname, join } from "path";
|
|
11
|
-
import { fileURLToPath } from "url";
|
|
12
|
-
|
|
13
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
-
const rootDir = join(__dirname, "..");
|
|
15
|
-
const cliDir = join(rootDir, "cli");
|
|
16
|
-
|
|
17
|
-
// Read version from package.json (single source of truth)
|
|
18
|
-
const packageJson = JSON.parse(
|
|
19
|
-
readFileSync(join(rootDir, "package.json"), "utf-8")
|
|
20
|
-
);
|
|
21
|
-
const version = packageJson.version;
|
|
22
|
-
|
|
23
|
-
console.log(`Syncing version ${version} to all config files...`);
|
|
24
|
-
|
|
25
|
-
// Update Cargo.toml
|
|
26
|
-
const cargoTomlPath = join(cliDir, "Cargo.toml");
|
|
27
|
-
let cargoToml = readFileSync(cargoTomlPath, "utf-8");
|
|
28
|
-
const cargoVersionRegex = /^version\s*=\s*"[^"]*"/m;
|
|
29
|
-
const newCargoVersion = `version = "${version}"`;
|
|
30
|
-
|
|
31
|
-
let cargoTomlUpdated = false;
|
|
32
|
-
if (cargoVersionRegex.test(cargoToml)) {
|
|
33
|
-
const oldMatch = cargoToml.match(cargoVersionRegex)?.[0];
|
|
34
|
-
if (oldMatch !== newCargoVersion) {
|
|
35
|
-
cargoToml = cargoToml.replace(cargoVersionRegex, newCargoVersion);
|
|
36
|
-
writeFileSync(cargoTomlPath, cargoToml);
|
|
37
|
-
console.log(` Updated cli/Cargo.toml: ${oldMatch} -> ${newCargoVersion}`);
|
|
38
|
-
cargoTomlUpdated = true;
|
|
39
|
-
} else {
|
|
40
|
-
console.log(` cli/Cargo.toml already up to date`);
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
console.error(" Could not find version field in cli/Cargo.toml");
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Update Cargo.lock to match Cargo.toml
|
|
48
|
-
if (cargoTomlUpdated) {
|
|
49
|
-
try {
|
|
50
|
-
execSync("cargo update -p agent-browser --offline", {
|
|
51
|
-
cwd: cliDir,
|
|
52
|
-
stdio: "pipe",
|
|
53
|
-
});
|
|
54
|
-
console.log(` Updated cli/Cargo.lock`);
|
|
55
|
-
} catch {
|
|
56
|
-
// --offline may fail if package not in cache, try without it
|
|
57
|
-
try {
|
|
58
|
-
execSync("cargo update -p agent-browser", {
|
|
59
|
-
cwd: cliDir,
|
|
60
|
-
stdio: "pipe",
|
|
61
|
-
});
|
|
62
|
-
console.log(` Updated cli/Cargo.lock`);
|
|
63
|
-
} catch (e) {
|
|
64
|
-
console.error(` Warning: Could not update Cargo.lock: ${e.message}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
console.log("Version sync complete.");
|