visionclaw 0.1.187-beta.8 → 0.1.187-dev.refactor-computer-use-direct-coordinates.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/dist/agent/loop.js +1 -1
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/providers/client-factory.d.ts +1 -1
- package/dist/agent/providers/client-factory.js +1 -1
- package/dist/agent/runtime-surface.d.ts +1 -1
- package/dist/agent/runtime-surface.d.ts.map +1 -1
- package/dist/agent/runtime-surface.js +35 -18
- package/dist/agent/runtime-surface.js.map +1 -1
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +1 -3
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/builtin-skills/macos-automation/SKILL.md +13 -10
- package/dist/onboarding/generate-wallpaper.d.ts +3 -8
- package/dist/onboarding/generate-wallpaper.d.ts.map +1 -1
- package/dist/onboarding/generate-wallpaper.js +3 -123
- package/dist/onboarding/generate-wallpaper.js.map +1 -1
- package/dist/tools/computer-use.d.ts +56 -6
- package/dist/tools/computer-use.d.ts.map +1 -1
- package/dist/tools/computer-use.js +129 -286
- package/dist/tools/computer-use.js.map +1 -1
- package/dist-agent/bundle.cjs +208 -574
- package/package.json +1 -1
- package/dist/agent/applied-credential-signature.d.ts +0 -53
- package/dist/agent/applied-credential-signature.d.ts.map +0 -1
- package/dist/agent/applied-credential-signature.js +0 -137
- package/dist/agent/applied-credential-signature.js.map +0 -1
- package/dist/agent/tunnel-credential-handler.d.ts +0 -90
- package/dist/agent/tunnel-credential-handler.d.ts.map +0 -1
- package/dist/agent/tunnel-credential-handler.js +0 -162
- package/dist/agent/tunnel-credential-handler.js.map +0 -1
- package/dist/billing/payg-handler.d.ts +0 -29
- package/dist/billing/payg-handler.d.ts.map +0 -1
- package/dist/billing/payg-handler.js +0 -92
- package/dist/billing/payg-handler.js.map +0 -1
- package/dist/billing/payment-handler.d.ts +0 -24
- package/dist/billing/payment-handler.d.ts.map +0 -1
- package/dist/billing/payment-handler.js +0 -101
- package/dist/billing/payment-handler.js.map +0 -1
- package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
- package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
- package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
- package/dist/data-processing/convert-demo-cli.d.ts +0 -7
- package/dist/data-processing/convert-demo-cli.d.ts.map +0 -1
- package/dist/data-processing/convert-demo-cli.js +0 -30
- package/dist/data-processing/convert-demo-cli.js.map +0 -1
- package/dist/data-processing/convert-demo.d.ts +0 -26
- package/dist/data-processing/convert-demo.d.ts.map +0 -1
- package/dist/data-processing/convert-demo.js +0 -233
- package/dist/data-processing/convert-demo.js.map +0 -1
- package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
- package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
- package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
- package/dist/obs/rdp/icons/icons/control.svg +0 -4
- package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
- package/dist/obs/rdp/icons/icons/display.svg +0 -4
- package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
- package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
- package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
- package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
- package/dist/obs/tunnel-telemetry.d.ts +0 -46
- package/dist/obs/tunnel-telemetry.d.ts.map +0 -1
- package/dist/obs/tunnel-telemetry.js +0 -70
- package/dist/obs/tunnel-telemetry.js.map +0 -1
- package/dist/service/gbox-tun.d.ts +0 -14
- package/dist/service/gbox-tun.d.ts.map +0 -1
- package/dist/service/gbox-tun.js +0 -315
- package/dist/service/gbox-tun.js.map +0 -1
- package/dist/tools/coordinate-resolver.d.ts +0 -30
- package/dist/tools/coordinate-resolver.d.ts.map +0 -1
- package/dist/tools/coordinate-resolver.js +0 -104
- package/dist/tools/coordinate-resolver.js.map +0 -1
- package/dist/utils/wechat-monitor.d.ts +0 -21
- package/dist/utils/wechat-monitor.d.ts.map +0 -1
- package/dist/utils/wechat-monitor.js +0 -88
- package/dist/utils/wechat-monitor.js.map +0 -1
package/dist/service/gbox-tun.js
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
import { execSync, spawn, spawnSync } from "node:child_process";
|
|
2
|
-
import { chmodSync, existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
import { dirname, join } from "node:path";
|
|
5
|
-
const LABEL = "dev.visionclaw.gbox-tun";
|
|
6
|
-
const LAUNCH_DAEMONS_DIR = "/Library/LaunchDaemons";
|
|
7
|
-
const PLIST_PATH = join(LAUNCH_DAEMONS_DIR, `${LABEL}.plist`);
|
|
8
|
-
const GBOX_TUN_BIN = join(homedir(), ".visionclaw", "bin", "gbox-tun");
|
|
9
|
-
const LOG_DIR = join(homedir(), ".visionclaw", "logs");
|
|
10
|
-
const GREEN = "\x1b[32m";
|
|
11
|
-
const RED = "\x1b[31m";
|
|
12
|
-
const YELLOW = "\x1b[33m";
|
|
13
|
-
const DIM = "\x1b[2m";
|
|
14
|
-
const RESET = "\x1b[0m";
|
|
15
|
-
const BOLD = "\x1b[1m";
|
|
16
|
-
function ok(msg) {
|
|
17
|
-
console.log(` ${GREEN}✓${RESET} ${msg}`);
|
|
18
|
-
}
|
|
19
|
-
function fail(msg) {
|
|
20
|
-
console.log(` ${RED}✗${RESET} ${msg}`);
|
|
21
|
-
}
|
|
22
|
-
function warn(msg) {
|
|
23
|
-
console.log(` ${YELLOW}!${RESET} ${msg}`);
|
|
24
|
-
}
|
|
25
|
-
function escapeXml(s) {
|
|
26
|
-
return s
|
|
27
|
-
.replace(/&/g, "&")
|
|
28
|
-
.replace(/</g, "<")
|
|
29
|
-
.replace(/>/g, ">")
|
|
30
|
-
.replace(/"/g, """);
|
|
31
|
-
}
|
|
32
|
-
function generatePlist(options) {
|
|
33
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
34
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
35
|
-
<plist version="1.0">
|
|
36
|
-
<dict>
|
|
37
|
-
<key>Label</key>
|
|
38
|
-
<string>${LABEL}</string>
|
|
39
|
-
|
|
40
|
-
<key>ProgramArguments</key>
|
|
41
|
-
<array>
|
|
42
|
-
<string>${escapeXml(GBOX_TUN_BIN)}</string>
|
|
43
|
-
<string>--server</string>
|
|
44
|
-
<string>${escapeXml(options.server)}</string>
|
|
45
|
-
<string>--apikey</string>
|
|
46
|
-
<string>${escapeXml(options.apikey)}</string>
|
|
47
|
-
</array>
|
|
48
|
-
|
|
49
|
-
<key>RunAtLoad</key>
|
|
50
|
-
<true/>
|
|
51
|
-
|
|
52
|
-
<key>KeepAlive</key>
|
|
53
|
-
<true/>
|
|
54
|
-
|
|
55
|
-
<key>EnvironmentVariables</key>
|
|
56
|
-
<dict>
|
|
57
|
-
<key>HOME</key>
|
|
58
|
-
<string>${escapeXml(homedir())}</string>
|
|
59
|
-
</dict>
|
|
60
|
-
|
|
61
|
-
<key>WorkingDirectory</key>
|
|
62
|
-
<string>${escapeXml(join(homedir(), ".visionclaw", "bin"))}</string>
|
|
63
|
-
|
|
64
|
-
<key>StandardOutPath</key>
|
|
65
|
-
<string>${escapeXml(join(LOG_DIR, "gbox-tun-stdout.log"))}</string>
|
|
66
|
-
|
|
67
|
-
<key>StandardErrorPath</key>
|
|
68
|
-
<string>${escapeXml(join(LOG_DIR, "gbox-tun-stderr.log"))}</string>
|
|
69
|
-
</dict>
|
|
70
|
-
</plist>
|
|
71
|
-
`;
|
|
72
|
-
}
|
|
73
|
-
function isLoaded() {
|
|
74
|
-
const result = spawnSync("sudo", ["launchctl", "list", LABEL], {
|
|
75
|
-
encoding: "utf-8",
|
|
76
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
77
|
-
});
|
|
78
|
-
return result.status === 0;
|
|
79
|
-
}
|
|
80
|
-
export async function downloadGboxTunBinary(_server) {
|
|
81
|
-
const platform = process.platform === "darwin" ? "darwin" : "linux";
|
|
82
|
-
const arch = process.arch === "arm64" ? "arm64" : "amd64";
|
|
83
|
-
const url = `https://screenshots.tos-cn-guangzhou.volces.com/gbox-tun/latest/gbox-tun-${platform}-${arch}`;
|
|
84
|
-
console.log(` Downloading gbox-tun from ${url}...`);
|
|
85
|
-
const response = await fetch(url, { signal: AbortSignal.timeout(120_000) });
|
|
86
|
-
if (!response.ok) {
|
|
87
|
-
throw new Error(`Failed to download gbox-tun: HTTP ${response.status}`);
|
|
88
|
-
}
|
|
89
|
-
const buffer = Buffer.from(await response.arrayBuffer());
|
|
90
|
-
mkdirSync(dirname(GBOX_TUN_BIN), { recursive: true });
|
|
91
|
-
writeFileSync(GBOX_TUN_BIN, buffer);
|
|
92
|
-
chmodSync(GBOX_TUN_BIN, 0o755);
|
|
93
|
-
ok(`Downloaded gbox-tun (${buffer.length} bytes)`);
|
|
94
|
-
}
|
|
95
|
-
export async function installGboxTunService(options) {
|
|
96
|
-
if (process.platform !== "darwin") {
|
|
97
|
-
fail("gbox-tun service installation is only supported on macOS.");
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
console.log(`\n${BOLD}Installing gbox-tun as a system daemon...${RESET}\n`);
|
|
101
|
-
if (!existsSync(GBOX_TUN_BIN)) {
|
|
102
|
-
try {
|
|
103
|
-
await downloadGboxTunBinary(options.server);
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
fail(`gbox-tun binary not found and download failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (isLoaded()) {
|
|
111
|
-
warn("gbox-tun daemon is already loaded. Unloading first...");
|
|
112
|
-
spawnSync("sudo", ["launchctl", "bootout", `system/${LABEL}`], {
|
|
113
|
-
stdio: "inherit",
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
mkdirSync(LOG_DIR, { recursive: true });
|
|
117
|
-
const plist = generatePlist(options);
|
|
118
|
-
const tmpPlist = `/tmp/${LABEL}.plist`;
|
|
119
|
-
writeFileSync(tmpPlist, plist, "utf-8");
|
|
120
|
-
try {
|
|
121
|
-
execSync(`sudo cp "${tmpPlist}" "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
122
|
-
execSync(`sudo chmod 644 "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
123
|
-
execSync(`sudo chown root:wheel "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
try {
|
|
127
|
-
unlinkSync(tmpPlist);
|
|
128
|
-
}
|
|
129
|
-
catch { /* cleanup best-effort */ }
|
|
130
|
-
}
|
|
131
|
-
ok(`Plist written to ${DIM}${PLIST_PATH}${RESET}`);
|
|
132
|
-
const result = spawnSync("sudo", ["launchctl", "bootstrap", "system", PLIST_PATH], { stdio: "inherit" });
|
|
133
|
-
if (result.status === 0) {
|
|
134
|
-
ok("gbox-tun daemon loaded successfully");
|
|
135
|
-
console.log(`\n gbox-tun will now start automatically on boot.`);
|
|
136
|
-
console.log(` Logs: ${DIM}~/.visionclaw/logs/gbox-tun-*.log${RESET}`);
|
|
137
|
-
console.log(` Manage: ${DIM}visionclaw gbox-tun status${RESET}`);
|
|
138
|
-
console.log(` ${DIM}visionclaw gbox-tun uninstall${RESET}\n`);
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
fail("Failed to load gbox-tun daemon via launchctl");
|
|
142
|
-
console.log(` Try manually: ${DIM}sudo launchctl bootstrap system ${PLIST_PATH}${RESET}\n`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
export function uninstallGboxTunService() {
|
|
146
|
-
if (process.platform !== "darwin") {
|
|
147
|
-
fail("gbox-tun service uninstallation is only supported on macOS.");
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
console.log(`\n${BOLD}Uninstalling gbox-tun system daemon...${RESET}\n`);
|
|
151
|
-
if (isLoaded()) {
|
|
152
|
-
const result = spawnSync("sudo", ["launchctl", "bootout", `system/${LABEL}`], { stdio: "inherit" });
|
|
153
|
-
if (result.status === 0) {
|
|
154
|
-
ok("gbox-tun daemon unloaded from launchd");
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
warn("Failed to unload gbox-tun daemon (may already be stopped)");
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
ok("gbox-tun daemon was not loaded");
|
|
162
|
-
}
|
|
163
|
-
if (existsSync(PLIST_PATH)) {
|
|
164
|
-
try {
|
|
165
|
-
execSync(`sudo rm "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
166
|
-
ok(`Plist removed: ${DIM}${PLIST_PATH}${RESET}`);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
fail(`Failed to remove plist: ${PLIST_PATH}`);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
ok("Plist file did not exist");
|
|
174
|
-
}
|
|
175
|
-
if (existsSync(GBOX_TUN_BIN)) {
|
|
176
|
-
unlinkSync(GBOX_TUN_BIN);
|
|
177
|
-
ok(`gbox-tun binary removed: ${DIM}${GBOX_TUN_BIN}${RESET}`);
|
|
178
|
-
}
|
|
179
|
-
console.log(`\n gbox-tun will no longer start automatically on boot.\n`);
|
|
180
|
-
}
|
|
181
|
-
export function printGboxTunServiceStatus() {
|
|
182
|
-
if (process.platform !== "darwin") {
|
|
183
|
-
fail("gbox-tun service status is only available on macOS.");
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
console.log(`\n${BOLD}gbox-tun Service Status${RESET}\n`);
|
|
187
|
-
if (!existsSync(GBOX_TUN_BIN)) {
|
|
188
|
-
fail("gbox-tun binary not installed");
|
|
189
|
-
console.log(` Run ${DIM}visionclaw setup${RESET} to install gbox-tun.\n`);
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
ok(`Binary: ${DIM}${GBOX_TUN_BIN}${RESET}`);
|
|
193
|
-
if (existsSync(PLIST_PATH)) {
|
|
194
|
-
ok(`Plist installed: ${DIM}${PLIST_PATH}${RESET}`);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
fail("Plist not installed");
|
|
198
|
-
console.log(` Run ${DIM}visionclaw gbox-tun install${RESET} to set up the daemon.\n`);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
if (isLoaded()) {
|
|
202
|
-
ok("Daemon is registered with launchd");
|
|
203
|
-
const result = spawnSync("sudo", ["launchctl", "print", `system/${LABEL}`], {
|
|
204
|
-
encoding: "utf-8",
|
|
205
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
206
|
-
});
|
|
207
|
-
if (result.status === 0) {
|
|
208
|
-
const pidMatch = /pid\s*=\s*(\d+)/i.exec(result.stdout);
|
|
209
|
-
if (pidMatch) {
|
|
210
|
-
ok(`Process running (PID ${pidMatch[1]})`);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
warn("Plist exists but daemon is not loaded");
|
|
216
|
-
console.log(` Run ${DIM}visionclaw gbox-tun install${RESET} to reload.\n`);
|
|
217
|
-
}
|
|
218
|
-
console.log("");
|
|
219
|
-
}
|
|
220
|
-
export async function startGboxTun(options) {
|
|
221
|
-
if (process.platform !== "darwin") {
|
|
222
|
-
fail("gbox-tun is only supported on macOS.");
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
if (!existsSync(GBOX_TUN_BIN)) {
|
|
226
|
-
try {
|
|
227
|
-
await downloadGboxTunBinary(options.server);
|
|
228
|
-
}
|
|
229
|
-
catch (err) {
|
|
230
|
-
fail(`gbox-tun binary not found and download failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (options.foreground) {
|
|
235
|
-
console.log(`\n${BOLD}Starting gbox-tun in foreground...${RESET}\n`);
|
|
236
|
-
console.log(` Server: ${DIM}${options.server}${RESET}`);
|
|
237
|
-
console.log(` Press Ctrl+C to stop.\n`);
|
|
238
|
-
const child = spawn("sudo", [GBOX_TUN_BIN, "--server", options.server, "--apikey", options.apikey], {
|
|
239
|
-
stdio: "inherit",
|
|
240
|
-
env: { ...process.env, HOME: homedir() },
|
|
241
|
-
});
|
|
242
|
-
const cleanup = () => {
|
|
243
|
-
child.kill("SIGTERM");
|
|
244
|
-
};
|
|
245
|
-
process.on("SIGINT", cleanup);
|
|
246
|
-
process.on("SIGTERM", cleanup);
|
|
247
|
-
return new Promise((resolve, reject) => {
|
|
248
|
-
child.on("exit", (code) => {
|
|
249
|
-
process.off("SIGINT", cleanup);
|
|
250
|
-
process.off("SIGTERM", cleanup);
|
|
251
|
-
if (code === 0 || code === null) {
|
|
252
|
-
resolve();
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
reject(new Error(`gbox-tun exited with code ${code}`));
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
child.on("error", reject);
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
// Background (daemon) mode
|
|
262
|
-
console.log(`\n${BOLD}Starting gbox-tun daemon...${RESET}\n`);
|
|
263
|
-
if (isLoaded()) {
|
|
264
|
-
ok("gbox-tun daemon is already running");
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
// Ensure plist is installed
|
|
268
|
-
if (!existsSync(PLIST_PATH)) {
|
|
269
|
-
mkdirSync(LOG_DIR, { recursive: true });
|
|
270
|
-
const plist = generatePlist(options);
|
|
271
|
-
const tmpPlist = `/tmp/${LABEL}.plist`;
|
|
272
|
-
writeFileSync(tmpPlist, plist, "utf-8");
|
|
273
|
-
try {
|
|
274
|
-
execSync(`sudo cp "${tmpPlist}" "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
275
|
-
execSync(`sudo chmod 644 "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
276
|
-
execSync(`sudo chown root:wheel "${PLIST_PATH}"`, { stdio: "inherit" });
|
|
277
|
-
}
|
|
278
|
-
finally {
|
|
279
|
-
try {
|
|
280
|
-
unlinkSync(tmpPlist);
|
|
281
|
-
}
|
|
282
|
-
catch { /* cleanup best-effort */ }
|
|
283
|
-
}
|
|
284
|
-
ok(`Plist written to ${DIM}${PLIST_PATH}${RESET}`);
|
|
285
|
-
}
|
|
286
|
-
const result = spawnSync("sudo", ["launchctl", "bootstrap", "system", PLIST_PATH], { stdio: "inherit" });
|
|
287
|
-
if (result.status === 0) {
|
|
288
|
-
ok("gbox-tun daemon started");
|
|
289
|
-
console.log(` Logs: ${DIM}~/.visionclaw/logs/gbox-tun-*.log${RESET}\n`);
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
fail("Failed to start gbox-tun daemon");
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
export function stopGboxTun() {
|
|
296
|
-
if (process.platform !== "darwin") {
|
|
297
|
-
fail("gbox-tun is only supported on macOS.");
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
console.log(`\n${BOLD}Stopping gbox-tun daemon...${RESET}\n`);
|
|
301
|
-
if (!isLoaded()) {
|
|
302
|
-
ok("gbox-tun daemon is not running");
|
|
303
|
-
console.log("");
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
const result = spawnSync("sudo", ["launchctl", "bootout", `system/${LABEL}`], { stdio: "inherit" });
|
|
307
|
-
if (result.status === 0) {
|
|
308
|
-
ok("gbox-tun daemon stopped");
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
fail("Failed to stop gbox-tun daemon");
|
|
312
|
-
}
|
|
313
|
-
console.log("");
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=gbox-tun.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gbox-tun.js","sourceRoot":"","sources":["../../src/service/gbox-tun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves natural language targets to pixel coordinates using
|
|
3
|
-
* Anthropic's computer_20251124 tool via the Messages API.
|
|
4
|
-
*
|
|
5
|
-
* Sends screenshot + instruction to Claude; Claude returns a tool_use
|
|
6
|
-
* with action and coordinate. We extract coordinates only (no execution).
|
|
7
|
-
*
|
|
8
|
-
* IMPORTANT: The input screenshot is assumed to be already resized to fit
|
|
9
|
-
* Claude's vision constraints (done by takeScreenshot). We read the actual
|
|
10
|
-
* image dimensions, tell the computer-use tool those are the display size,
|
|
11
|
-
* and unscale returned coordinates back to the real display space.
|
|
12
|
-
* Reference: https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool
|
|
13
|
-
*/
|
|
14
|
-
import type { VisionClawConfig } from "../config/types.js";
|
|
15
|
-
export interface ResolvedAction {
|
|
16
|
-
action: string;
|
|
17
|
-
x: number;
|
|
18
|
-
y: number;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Resolve a natural language target to pixel coordinates.
|
|
22
|
-
* Uses Messages API with computer_20251124 tool; returns the first tool_use result.
|
|
23
|
-
*
|
|
24
|
-
* The input screenshot is expected to already be resized to fit Claude's
|
|
25
|
-
* vision constraints (by takeScreenshot). We read its actual pixel dimensions,
|
|
26
|
-
* use those as display_width_px / display_height_px, and unscale the returned
|
|
27
|
-
* coordinates back to the real display space using imageWidth/displayWidth ratio.
|
|
28
|
-
*/
|
|
29
|
-
export declare function resolveCoordinates(screenshotBase64: string, instruction: string, displayWidth: number, displayHeight: number, config: VisionClawConfig, screenshotFilePath?: string): Promise<ResolvedAction | null>;
|
|
30
|
-
//# sourceMappingURL=coordinate-resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-resolver.d.ts","sourceRoot":"","sources":["../../src/tools/coordinate-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAQD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,gBAAgB,EACxB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAyFhC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves natural language targets to pixel coordinates using
|
|
3
|
-
* Anthropic's computer_20251124 tool via the Messages API.
|
|
4
|
-
*
|
|
5
|
-
* Sends screenshot + instruction to Claude; Claude returns a tool_use
|
|
6
|
-
* with action and coordinate. We extract coordinates only (no execution).
|
|
7
|
-
*
|
|
8
|
-
* IMPORTANT: The input screenshot is assumed to be already resized to fit
|
|
9
|
-
* Claude's vision constraints (done by takeScreenshot). We read the actual
|
|
10
|
-
* image dimensions, tell the computer-use tool those are the display size,
|
|
11
|
-
* and unscale returned coordinates back to the real display space.
|
|
12
|
-
* Reference: https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool
|
|
13
|
-
*/
|
|
14
|
-
import { logger } from "../logger.js";
|
|
15
|
-
import { getImageDimensions, getImageDimensionsFromFile } from "./screenshot.js";
|
|
16
|
-
import { createClient, getModelId } from "../agent/providers/client-factory.js";
|
|
17
|
-
function clamp(n, min, max) {
|
|
18
|
-
return Math.max(min, Math.min(max, n));
|
|
19
|
-
}
|
|
20
|
-
// ── Resolver ───────────────────────────────────────────────────────────
|
|
21
|
-
/**
|
|
22
|
-
* Resolve a natural language target to pixel coordinates.
|
|
23
|
-
* Uses Messages API with computer_20251124 tool; returns the first tool_use result.
|
|
24
|
-
*
|
|
25
|
-
* The input screenshot is expected to already be resized to fit Claude's
|
|
26
|
-
* vision constraints (by takeScreenshot). We read its actual pixel dimensions,
|
|
27
|
-
* use those as display_width_px / display_height_px, and unscale the returned
|
|
28
|
-
* coordinates back to the real display space using imageWidth/displayWidth ratio.
|
|
29
|
-
*/
|
|
30
|
-
export async function resolveCoordinates(screenshotBase64, instruction, displayWidth, displayHeight, config, screenshotFilePath) {
|
|
31
|
-
// Read actual pixel dimensions of the (already resized) screenshot.
|
|
32
|
-
// Prefer file path to avoid base64 decode + temp file round-trip.
|
|
33
|
-
const dims = screenshotFilePath
|
|
34
|
-
? await getImageDimensionsFromFile(screenshotFilePath)
|
|
35
|
-
: await getImageDimensions(Buffer.from(screenshotBase64, "base64"));
|
|
36
|
-
if (!dims) {
|
|
37
|
-
logger.warn("Could not read screenshot dimensions, aborting coordinate resolution");
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
const imgW = dims.width;
|
|
41
|
-
const imgH = dims.height;
|
|
42
|
-
// Scale factors to convert from image space back to actual display space
|
|
43
|
-
const scaleX = displayWidth / imgW;
|
|
44
|
-
const scaleY = displayHeight / imgH;
|
|
45
|
-
logger.info(`Resolving coordinates: "${instruction}" (display ${displayWidth}x${displayHeight}, image ${imgW}x${imgH}, scaleX=${scaleX.toFixed(3)}, scaleY=${scaleY.toFixed(3)})`, { instruction, displayWidth, displayHeight, imgW, imgH, scaleX, scaleY });
|
|
46
|
-
const client = createClient(config);
|
|
47
|
-
const response = await client.beta.messages.create({
|
|
48
|
-
model: getModelId(config),
|
|
49
|
-
max_tokens: 1024,
|
|
50
|
-
betas: ["computer-use-2025-11-24"],
|
|
51
|
-
tools: [
|
|
52
|
-
{
|
|
53
|
-
type: "computer_20251124",
|
|
54
|
-
name: "computer",
|
|
55
|
-
display_width_px: imgW,
|
|
56
|
-
display_height_px: imgH,
|
|
57
|
-
display_number: 1,
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
system: "You are a helpful assistant that can resolve natural language targets to pixel coordinates using the computer tool. Call the tool directly, no questions or explanations.",
|
|
61
|
-
tool_choice: { type: "tool", name: "computer" },
|
|
62
|
-
messages: [
|
|
63
|
-
{
|
|
64
|
-
role: "user",
|
|
65
|
-
content: [
|
|
66
|
-
{
|
|
67
|
-
type: "image",
|
|
68
|
-
source: {
|
|
69
|
-
type: "base64",
|
|
70
|
-
media_type: "image/png",
|
|
71
|
-
data: screenshotBase64,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
type: "text",
|
|
76
|
-
text: instruction,
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
});
|
|
82
|
-
for (const block of response.content) {
|
|
83
|
-
if (block.type === "tool_use" && block.name === "computer") {
|
|
84
|
-
const input = block.input;
|
|
85
|
-
const coord = input.coordinate;
|
|
86
|
-
const action = input.action ?? "left_click";
|
|
87
|
-
logger.debug(`Coordinate resolver raw response: action=${action} coordinate=${JSON.stringify(coord)}`, { instruction, action, coordinate: coord, fullInput: input });
|
|
88
|
-
if (Array.isArray(coord) && coord.length >= 2) {
|
|
89
|
-
const rawX = coord[0];
|
|
90
|
-
const rawY = coord[1];
|
|
91
|
-
if (typeof rawX === "number" && typeof rawY === "number" && Number.isFinite(rawX) && Number.isFinite(rawY)) {
|
|
92
|
-
// Unscale: Claude returned coords in image space → convert to actual display space
|
|
93
|
-
const x = clamp(Math.round(rawX * scaleX), 0, displayWidth);
|
|
94
|
-
const y = clamp(Math.round(rawY * scaleY), 0, displayHeight);
|
|
95
|
-
logger.info(`Resolved coordinates: action=${action} raw=(${rawX},${rawY}) unscaled=(${x},${y}) scaleX=${scaleX.toFixed(3)} scaleY=${scaleY.toFixed(3)}`, { instruction, action, rawX, rawY, x, y, scaleX, scaleY });
|
|
96
|
-
return { action, x, y };
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
logger.info(`Could not resolve coordinates: "${instruction}"`, { instruction });
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=coordinate-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-resolver.js","sourceRoot":"","sources":["../../src/tools/coordinate-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility functions for managing the WeChat monitor pm2 process.
|
|
3
|
-
*
|
|
4
|
-
* The wechat-monitor script watches the WeChat SQLite message database for changes
|
|
5
|
-
* and triggers VisionClaw wake-ups via SIGUSR2 when new messages arrive.
|
|
6
|
-
*/
|
|
7
|
-
export declare function hasWechatMessageDb(): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* Start the wechat-monitor pm2 process.
|
|
10
|
-
* If it's already running, this is a no-op.
|
|
11
|
-
*/
|
|
12
|
-
export declare function startWechatMonitor(): void;
|
|
13
|
-
/**
|
|
14
|
-
* Stop the wechat-monitor pm2 process.
|
|
15
|
-
*/
|
|
16
|
-
export declare function stopWechatMonitor(): void;
|
|
17
|
-
/**
|
|
18
|
-
* Check if the wechat-monitor pm2 process is running.
|
|
19
|
-
*/
|
|
20
|
-
export declare function isWechatMonitorRunning(): boolean;
|
|
21
|
-
//# sourceMappingURL=wechat-monitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wechat-monitor.d.ts","sourceRoot":"","sources":["../../src/utils/wechat-monitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,wBAAgB,kBAAkB,IAAI,OAAO,CAW5C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA4BzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAQxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAShD"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility functions for managing the WeChat monitor pm2 process.
|
|
3
|
-
*
|
|
4
|
-
* The wechat-monitor script watches the WeChat SQLite message database for changes
|
|
5
|
-
* and triggers VisionClaw wake-ups via SIGUSR2 when new messages arrive.
|
|
6
|
-
*/
|
|
7
|
-
import { execSync } from "node:child_process";
|
|
8
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
9
|
-
import os from "node:os";
|
|
10
|
-
import path from "node:path";
|
|
11
|
-
import { logger } from "../logger.js";
|
|
12
|
-
import { getPackageRoot } from "./version-check.js";
|
|
13
|
-
const PM2_PROCESS_NAME = "wechat-monitor";
|
|
14
|
-
const XWECHAT_ROOT = path.join(os.homedir(), "Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files");
|
|
15
|
-
function getScriptPath() {
|
|
16
|
-
return path.join(getPackageRoot(), "scripts", "wechat-monitor.mjs");
|
|
17
|
-
}
|
|
18
|
-
export function hasWechatMessageDb() {
|
|
19
|
-
try {
|
|
20
|
-
const entries = readdirSync(XWECHAT_ROOT, { withFileTypes: true });
|
|
21
|
-
return entries.some((entry) => entry.isDirectory()
|
|
22
|
-
&& entry.name.startsWith("wxid_")
|
|
23
|
-
&& existsSync(path.join(XWECHAT_ROOT, entry.name, "db_storage/message/message_0.db")));
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Start the wechat-monitor pm2 process.
|
|
31
|
-
* If it's already running, this is a no-op.
|
|
32
|
-
*/
|
|
33
|
-
export function startWechatMonitor() {
|
|
34
|
-
const scriptPath = getScriptPath();
|
|
35
|
-
if (!existsSync(scriptPath)) {
|
|
36
|
-
throw new Error(`WeChat monitor script not found: ${scriptPath}`);
|
|
37
|
-
}
|
|
38
|
-
// Check if already running
|
|
39
|
-
try {
|
|
40
|
-
const status = execSync(`pm2 describe ${PM2_PROCESS_NAME} 2>/dev/null`, {
|
|
41
|
-
encoding: "utf-8",
|
|
42
|
-
});
|
|
43
|
-
if (status.includes("online")) {
|
|
44
|
-
logger.system(`WeChat monitor already running`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// Process exists but not online — restart it
|
|
48
|
-
execSync(`pm2 restart ${PM2_PROCESS_NAME}`, { encoding: "utf-8" });
|
|
49
|
-
logger.system(`WeChat monitor restarted`);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// Process doesn't exist yet — start fresh
|
|
54
|
-
}
|
|
55
|
-
execSync(`pm2 start "${scriptPath}" --name ${PM2_PROCESS_NAME}`, {
|
|
56
|
-
encoding: "utf-8",
|
|
57
|
-
});
|
|
58
|
-
execSync("pm2 save", { encoding: "utf-8" });
|
|
59
|
-
logger.system(`WeChat monitor started via pm2`);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Stop the wechat-monitor pm2 process.
|
|
63
|
-
*/
|
|
64
|
-
export function stopWechatMonitor() {
|
|
65
|
-
try {
|
|
66
|
-
execSync(`pm2 stop ${PM2_PROCESS_NAME}`, { encoding: "utf-8" });
|
|
67
|
-
logger.system(`WeChat monitor stopped`);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
// Process might not exist — that's fine
|
|
71
|
-
logger.system(`WeChat monitor was not running`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Check if the wechat-monitor pm2 process is running.
|
|
76
|
-
*/
|
|
77
|
-
export function isWechatMonitorRunning() {
|
|
78
|
-
try {
|
|
79
|
-
const status = execSync(`pm2 describe ${PM2_PROCESS_NAME} 2>/dev/null`, {
|
|
80
|
-
encoding: "utf-8",
|
|
81
|
-
});
|
|
82
|
-
return status.includes("online");
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=wechat-monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wechat-monitor.js","sourceRoot":"","sources":["../../src/utils/wechat-monitor.ts"],"names":[],"mappings":"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"}
|