@tianshu-ai/local-bridge 0.7.4 → 0.7.5
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/assets/tray-off.ico +0 -0
- package/assets/tray-off.png +0 -0
- package/assets/tray-on.ico +0 -0
- package/assets/tray-on.png +0 -0
- package/dist/index.js +17 -9
- package/dist/index.js.map +1 -1
- package/dist/local-tools.js +8 -1
- package/dist/local-tools.js.map +1 -1
- package/dist/mcp-child.js +44 -0
- package/dist/mcp-child.js.map +1 -1
- package/dist/settings-window.js +287 -0
- package/dist/settings-window.js.map +1 -0
- package/dist/tray.js +368 -0
- package/dist/tray.js.map +1 -0
- package/package.json +3 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -39,10 +39,11 @@
|
|
|
39
39
|
// tsbridge version print installed version
|
|
40
40
|
import os from "node:os";
|
|
41
41
|
import { BridgeConnection } from "./connection.js";
|
|
42
|
-
import { connectMcpChild, bridgeOutputDir } from "./mcp-child.js";
|
|
42
|
+
import { connectMcpChild, bridgeOutputDir, resolveEmbeddedMcp } from "./mcp-child.js";
|
|
43
43
|
import { localTools, defaultShellRoot } from "./local-tools.js";
|
|
44
44
|
import { runUpdate, installedVersion } from "./update.js";
|
|
45
45
|
import { installApp } from "./install-app.js";
|
|
46
|
+
import { runTray } from "./tray.js";
|
|
46
47
|
/** Is a Chrome already listening on this CDP endpoint? */
|
|
47
48
|
async function probeCdp(cdpUrl) {
|
|
48
49
|
try {
|
|
@@ -94,6 +95,11 @@ async function main() {
|
|
|
94
95
|
dest: typeof args.dest === "string" ? args.dest : undefined,
|
|
95
96
|
}));
|
|
96
97
|
}
|
|
98
|
+
if (sub === "tray") {
|
|
99
|
+
// Cross-platform system-tray wrapper (Windows/macOS/Linux) via
|
|
100
|
+
// systray2. Runs until the user quits from the tray menu.
|
|
101
|
+
process.exit(await runTray());
|
|
102
|
+
}
|
|
97
103
|
const server = typeof args.server === "string" ? args.server : "";
|
|
98
104
|
if (!server) {
|
|
99
105
|
console.error("error: --server <wss://host/ws> is required");
|
|
@@ -130,9 +136,10 @@ async function main() {
|
|
|
130
136
|
// cloakbrowser-mcp reads PLAYWRIGHT_MCP_HEADLESS (default true =
|
|
131
137
|
// headless). Set it explicitly from our headful/--headless flag
|
|
132
138
|
// so the window shows when the user wants it.
|
|
139
|
+
const { command: stealthCmd, args: stealthArgs } = resolveEmbeddedMcp("cloakbrowser-mcp", "dist/cli.js");
|
|
133
140
|
const stealthTools = await connectMcpChild({
|
|
134
|
-
command:
|
|
135
|
-
args:
|
|
141
|
+
command: stealthCmd,
|
|
142
|
+
args: stealthArgs,
|
|
136
143
|
env: { PLAYWRIGHT_MCP_HEADLESS: headful ? "false" : "true" },
|
|
137
144
|
log: (m) => console.log(`[local-bridge] ${m}`),
|
|
138
145
|
});
|
|
@@ -150,24 +157,25 @@ async function main() {
|
|
|
150
157
|
// surface as stealth; only the underlying browser differs.
|
|
151
158
|
const log = (m) => console.log(`[local-bridge] ${m}`);
|
|
152
159
|
// Pin output dir explicitly so it never resolves against a bad cwd.
|
|
153
|
-
const
|
|
160
|
+
const ownExtraArgs = ["--output-dir", bridgeOutputDir()];
|
|
154
161
|
const cdpUp = cdpUrl ? await probeCdp(cdpUrl) : false;
|
|
155
162
|
if (cdpUp) {
|
|
156
|
-
|
|
163
|
+
ownExtraArgs.push("--cdp-endpoint", cdpUrl);
|
|
157
164
|
log(`own: connecting to your running Chrome at ${cdpUrl}`);
|
|
158
165
|
}
|
|
159
166
|
else {
|
|
160
167
|
// @playwright/mcp: --browser takes a browser OR chrome channel
|
|
161
168
|
// ("chrome", "msedge", …). Point it at the system Chrome.
|
|
162
|
-
|
|
169
|
+
ownExtraArgs.push("--browser", channel);
|
|
163
170
|
if (userDataDir)
|
|
164
|
-
|
|
171
|
+
ownExtraArgs.push("--user-data-dir", userDataDir);
|
|
165
172
|
if (!headful)
|
|
166
|
-
|
|
173
|
+
ownExtraArgs.push("--headless");
|
|
167
174
|
log(`own: launching system ${channel}${headful ? "" : " (headless)"}`);
|
|
168
175
|
}
|
|
169
176
|
try {
|
|
170
|
-
const
|
|
177
|
+
const { command: ownCmd, args: ownArgs } = resolveEmbeddedMcp("@playwright/mcp", "cli.js", ownExtraArgs);
|
|
178
|
+
const ownTools = await connectMcpChild({ command: ownCmd, args: ownArgs, log });
|
|
171
179
|
tools.push(...ownTools);
|
|
172
180
|
}
|
|
173
181
|
catch (err) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,yEAAyE;AACzE,mDAAmD;AACnD,EAAE;AACF,yCAAyC;AACzC,sCAAsC;AACtC,+DAA+D;AAC/D,sBAAsB;AACtB,sFAAsF;AACtF,EAAE;AACF,SAAS;AACT,2DAA2D;AAC3D,oEAAoE;AACpE,4DAA4D;AAC5D,2EAA2E;AAC3E,oDAAoD;AACpD,iEAAiE;AACjE,2EAA2E;AAC3E,+DAA+D;AAC/D,uDAAuD;AACvD,uDAAuD;AACvD,sDAAsD;AACtD,8EAA8E;AAC9E,+DAA+D;AAC/D,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,oFAAoF;AACpF,8EAA8E;AAC9E,EAAE;AACF,eAAe;AACf,gEAAgE;AAChE,wEAAwE;AACxE,uEAAuE;AACvE,4EAA4E;AAE5E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/local-tools.js
CHANGED
|
@@ -145,9 +145,16 @@ Runs with the bridge user's own permissions on their real machine — but is jai
|
|
|
145
145
|
let stderr = "";
|
|
146
146
|
let timedOut = false;
|
|
147
147
|
let settled = false;
|
|
148
|
-
|
|
148
|
+
// Pick the platform's shell: bash on Unix, cmd.exe on Windows
|
|
149
|
+
// (Windows has no bash by default). `cmd /d /s /c` runs the
|
|
150
|
+
// command string as-is without an autorun profile.
|
|
151
|
+
const [shellCmd, shellArgs] = process.platform === "win32"
|
|
152
|
+
? [process.env.ComSpec || "cmd.exe", ["/d", "/s", "/c", command]]
|
|
153
|
+
: ["bash", ["-l", "-c", command]];
|
|
154
|
+
const child = spawn(shellCmd, shellArgs, {
|
|
149
155
|
cwd: fs.existsSync(workdir) ? workdir : opts.root,
|
|
150
156
|
env: process.env,
|
|
157
|
+
windowsHide: true,
|
|
151
158
|
});
|
|
152
159
|
const timer = setTimeout(() => {
|
|
153
160
|
timedOut = true;
|
package/dist/local-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-tools.js","sourceRoot":"","sources":["../src/local-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-tools.js","sourceRoot":"","sources":["../src/local-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-child.js
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import fs from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
|
+
import { createRequire } from "node:module";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
9
13
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
10
14
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
11
15
|
import { textResult } from "./protocol.js";
|
|
@@ -27,6 +31,46 @@ export function bridgeOutputDir() {
|
|
|
27
31
|
}
|
|
28
32
|
return dir;
|
|
29
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the command+args for a downstream MCP package.
|
|
36
|
+
* Priority: local node_modules first (fast, no network), npx fallback.
|
|
37
|
+
*/
|
|
38
|
+
export function resolveEmbeddedMcp(pkg, binEntry, extraArgs = []) {
|
|
39
|
+
// 1. Try local node_modules (pre-bundled in the desktop app payload,
|
|
40
|
+
// or installed alongside the bridge in a global npm install).
|
|
41
|
+
let entryPath;
|
|
42
|
+
try {
|
|
43
|
+
const esmRequire = createRequire(import.meta.url);
|
|
44
|
+
const pkgJson = path.dirname(esmRequire.resolve(`${pkg}/package.json`, { paths: [__dirname, process.cwd()] }));
|
|
45
|
+
entryPath = path.join(pkgJson, binEntry);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Try sibling node_modules.
|
|
49
|
+
const candidate = path.join(__dirname, "..", "node_modules", pkg, binEntry);
|
|
50
|
+
if (fs.existsSync(candidate))
|
|
51
|
+
entryPath = candidate;
|
|
52
|
+
}
|
|
53
|
+
if (entryPath && fs.existsSync(entryPath)) {
|
|
54
|
+
return { command: process.execPath, args: [entryPath, ...extraArgs] };
|
|
55
|
+
}
|
|
56
|
+
// 2. Fallback: use npx (downloads from network — slower, needs connectivity).
|
|
57
|
+
const npxName = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
58
|
+
const pathDirs = (process.env.PATH || "").split(path.delimiter);
|
|
59
|
+
const npxFound = pathDirs.some((d) => {
|
|
60
|
+
try {
|
|
61
|
+
fs.accessSync(path.join(d, npxName), fs.constants.X_OK);
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
if (npxFound) {
|
|
69
|
+
return { command: npxName, args: ["-y", `${pkg}@latest`, ...extraArgs] };
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Cannot find ${pkg} locally and npx is not available. ` +
|
|
72
|
+
`Ensure ${pkg} is pre-installed in node_modules or npx is on PATH.`);
|
|
73
|
+
}
|
|
30
74
|
export async function connectMcpChild(opts) {
|
|
31
75
|
const baseEnv = { ...process.env };
|
|
32
76
|
if (!baseEnv.HOME)
|
package/dist/mcp-child.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-child.js","sourceRoot":"","sources":["../src/mcp-child.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-child.js","sourceRoot":"","sources":["../src/mcp-child.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
// A native settings window for the tray, per platform, using each OS's
|
|
2
|
+
// own GUI toolkit — no bundled runtime, no extra install (the same
|
|
3
|
+
// philosophy as the macOS Swift menu-bar app).
|
|
4
|
+
//
|
|
5
|
+
// Windows → PowerShell + System.Windows.Forms (ships with Windows)
|
|
6
|
+
// macOS → AppleScript dialogs (osascript, ships with macOS)
|
|
7
|
+
// Linux → fall back to opening the JSON in the default editor
|
|
8
|
+
//
|
|
9
|
+
// The window reads the current config.json, lets the user edit the same
|
|
10
|
+
// fields the Swift app exposes (server / token / browser+engine+headless
|
|
11
|
+
// / shell / device), and writes config.json back on Save. Runs the GUI
|
|
12
|
+
// as a detached child so it doesn't block the tray.
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import os from "node:os";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
/**
|
|
18
|
+
* Open a native settings window. Best-effort, non-blocking. On success
|
|
19
|
+
* the GUI writes the edited config to `configPath` itself; the caller
|
|
20
|
+
* can re-read config after the window closes (or just on next Start).
|
|
21
|
+
*
|
|
22
|
+
* Returns true if a native window was launched, false if we fell back
|
|
23
|
+
* to opening the raw file (Linux / unsupported).
|
|
24
|
+
*/
|
|
25
|
+
export function openSettingsWindow(configPath, current) {
|
|
26
|
+
if (process.platform === "win32") {
|
|
27
|
+
return openWindowsForm(configPath, current);
|
|
28
|
+
}
|
|
29
|
+
if (process.platform === "darwin") {
|
|
30
|
+
return openMacDialogs(configPath, current);
|
|
31
|
+
}
|
|
32
|
+
return false; // Linux: caller opens the file instead
|
|
33
|
+
}
|
|
34
|
+
// ─── Windows: PowerShell + WinForms ─────────────────────────────────
|
|
35
|
+
function openWindowsForm(configPath, cur) {
|
|
36
|
+
const scriptPath = path.join(os.tmpdir(), `tsbridge-settings-${process.pid}.ps1`);
|
|
37
|
+
// Diagnostics: the PS script logs here (and we redirect its stdio too),
|
|
38
|
+
// so "clicked Settings, nothing happened" always leaves a trace.
|
|
39
|
+
const settingsLog = path.join(path.dirname(configPath), "settings.log");
|
|
40
|
+
const ps = renderWindowsPs1(configPath, cur, settingsLog);
|
|
41
|
+
try {
|
|
42
|
+
fs.writeFileSync(scriptPath, ps, "utf8");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
// -STA is required for WinForms. We do NOT pass -WindowStyle Hidden:
|
|
49
|
+
// it can suppress the form itself, and windowsHide:true on the spawn
|
|
50
|
+
// already keeps the PS console from flashing. The form is shown
|
|
51
|
+
// TopMost + Activated (see the script) so it comes to the front.
|
|
52
|
+
let out = "ignore";
|
|
53
|
+
try {
|
|
54
|
+
out = fs.openSync(settingsLog, "a");
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
out = "ignore";
|
|
58
|
+
}
|
|
59
|
+
const child = spawn("powershell.exe", [
|
|
60
|
+
"-NoProfile",
|
|
61
|
+
"-ExecutionPolicy",
|
|
62
|
+
"Bypass",
|
|
63
|
+
"-STA",
|
|
64
|
+
"-File",
|
|
65
|
+
scriptPath,
|
|
66
|
+
], { stdio: ["ignore", out, out], detached: true, windowsHide: true });
|
|
67
|
+
// Swallow spawn errors (e.g. powershell missing) so they don't crash
|
|
68
|
+
// the tray process; the caller falls back to opening the raw file.
|
|
69
|
+
child.on("error", () => { });
|
|
70
|
+
child.unref();
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** PowerShell-single-quote-escape a JS string. */
|
|
78
|
+
function psq(s) {
|
|
79
|
+
return `'${String(s).replace(/'/g, "''")}'`;
|
|
80
|
+
}
|
|
81
|
+
function renderWindowsPs1(configPath, cur, logPathArg) {
|
|
82
|
+
// The script builds a WinForms dialog, prefilled with current values,
|
|
83
|
+
// and on OK writes the known fields to config.json.
|
|
84
|
+
const cfgPathLit = psq(configPath);
|
|
85
|
+
const logLit = psq(logPathArg);
|
|
86
|
+
// Whole body wrapped in try/catch → any WinForms/assembly error is
|
|
87
|
+
// written to settings.log instead of vanishing silently.
|
|
88
|
+
return `
|
|
89
|
+
$ErrorActionPreference = 'Stop'
|
|
90
|
+
$logPath = ${logLit}
|
|
91
|
+
function Log($m) { try { Add-Content -Path $logPath -Value ("[{0}] {1}" -f (Get-Date -Format o), $m) } catch {} }
|
|
92
|
+
Log 'settings window: starting'
|
|
93
|
+
try {
|
|
94
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
95
|
+
Add-Type -AssemblyName System.Drawing
|
|
96
|
+
|
|
97
|
+
$configPath = ${cfgPathLit}
|
|
98
|
+
|
|
99
|
+
$form = New-Object System.Windows.Forms.Form
|
|
100
|
+
$form.Text = 'Tianshu Bridge — Settings'
|
|
101
|
+
$form.Size = New-Object System.Drawing.Size(460, 380)
|
|
102
|
+
$form.StartPosition = 'CenterScreen'
|
|
103
|
+
$form.FormBorderStyle = 'FixedDialog'
|
|
104
|
+
$form.MaximizeBox = $false
|
|
105
|
+
$form.MinimizeBox = $false
|
|
106
|
+
# Force the window to the front — a detached PowerShell child doesn't own
|
|
107
|
+
# the foreground, so without this the form can open behind other windows
|
|
108
|
+
# and look like "nothing happened".
|
|
109
|
+
$form.TopMost = $true
|
|
110
|
+
$form.ShowInTaskbar = $true
|
|
111
|
+
$form.Add_Shown({ $form.Activate(); $form.BringToFront() })
|
|
112
|
+
|
|
113
|
+
function New-Label($text, $y) {
|
|
114
|
+
$l = New-Object System.Windows.Forms.Label
|
|
115
|
+
$l.Text = $text
|
|
116
|
+
$l.Location = New-Object System.Drawing.Point(16, $y)
|
|
117
|
+
$l.Size = New-Object System.Drawing.Size(120, 20)
|
|
118
|
+
$form.Controls.Add($l)
|
|
119
|
+
return $l
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# Server
|
|
123
|
+
New-Label 'Server URL' 20 | Out-Null
|
|
124
|
+
$server = New-Object System.Windows.Forms.TextBox
|
|
125
|
+
$server.Location = New-Object System.Drawing.Point(140, 18)
|
|
126
|
+
$server.Size = New-Object System.Drawing.Size(290, 20)
|
|
127
|
+
$server.Text = ${psq(cur.server)}
|
|
128
|
+
$form.Controls.Add($server)
|
|
129
|
+
|
|
130
|
+
# Token
|
|
131
|
+
New-Label 'Token' 52 | Out-Null
|
|
132
|
+
$token = New-Object System.Windows.Forms.TextBox
|
|
133
|
+
$token.Location = New-Object System.Drawing.Point(140, 50)
|
|
134
|
+
$token.Size = New-Object System.Drawing.Size(290, 20)
|
|
135
|
+
$token.Text = ${psq(cur.token)}
|
|
136
|
+
$form.Controls.Add($token)
|
|
137
|
+
|
|
138
|
+
# Device
|
|
139
|
+
New-Label 'Device (optional)' 84 | Out-Null
|
|
140
|
+
$device = New-Object System.Windows.Forms.TextBox
|
|
141
|
+
$device.Location = New-Object System.Drawing.Point(140, 82)
|
|
142
|
+
$device.Size = New-Object System.Drawing.Size(290, 20)
|
|
143
|
+
$device.Text = ${psq(cur.device)}
|
|
144
|
+
$form.Controls.Add($device)
|
|
145
|
+
|
|
146
|
+
# Browser enabled
|
|
147
|
+
$browser = New-Object System.Windows.Forms.CheckBox
|
|
148
|
+
$browser.Text = 'Expose browser tools'
|
|
149
|
+
$browser.Location = New-Object System.Drawing.Point(140, 116)
|
|
150
|
+
$browser.Size = New-Object System.Drawing.Size(290, 20)
|
|
151
|
+
$browser.Checked = $${cur.browser ? "true" : "false"}
|
|
152
|
+
$form.Controls.Add($browser)
|
|
153
|
+
|
|
154
|
+
# Engine
|
|
155
|
+
New-Label 'Browser engine' 148 | Out-Null
|
|
156
|
+
$engine = New-Object System.Windows.Forms.ComboBox
|
|
157
|
+
$engine.Location = New-Object System.Drawing.Point(140, 146)
|
|
158
|
+
$engine.Size = New-Object System.Drawing.Size(150, 20)
|
|
159
|
+
$engine.DropDownStyle = 'DropDownList'
|
|
160
|
+
[void]$engine.Items.Add('own')
|
|
161
|
+
[void]$engine.Items.Add('stealth')
|
|
162
|
+
$engine.SelectedItem = ${psq(cur.engine)}
|
|
163
|
+
$form.Controls.Add($engine)
|
|
164
|
+
|
|
165
|
+
# Headless
|
|
166
|
+
$headless = New-Object System.Windows.Forms.CheckBox
|
|
167
|
+
$headless.Text = 'Headless (no browser window)'
|
|
168
|
+
$headless.Location = New-Object System.Drawing.Point(140, 178)
|
|
169
|
+
$headless.Size = New-Object System.Drawing.Size(290, 20)
|
|
170
|
+
$headless.Checked = $${cur.headless ? "true" : "false"}
|
|
171
|
+
$form.Controls.Add($headless)
|
|
172
|
+
|
|
173
|
+
# Shell
|
|
174
|
+
$shell = New-Object System.Windows.Forms.CheckBox
|
|
175
|
+
$shell.Text = 'Expose shell (exec + file sync) — runs commands on this machine'
|
|
176
|
+
$shell.Location = New-Object System.Drawing.Point(140, 210)
|
|
177
|
+
$shell.Size = New-Object System.Drawing.Size(300, 34)
|
|
178
|
+
$shell.Checked = $${cur.shell ? "true" : "false"}
|
|
179
|
+
$form.Controls.Add($shell)
|
|
180
|
+
|
|
181
|
+
# Buttons
|
|
182
|
+
$ok = New-Object System.Windows.Forms.Button
|
|
183
|
+
$ok.Text = 'Save'
|
|
184
|
+
$ok.Location = New-Object System.Drawing.Point(250, 300)
|
|
185
|
+
$ok.Size = New-Object System.Drawing.Size(85, 28)
|
|
186
|
+
$ok.DialogResult = [System.Windows.Forms.DialogResult]::OK
|
|
187
|
+
$form.Controls.Add($ok)
|
|
188
|
+
$form.AcceptButton = $ok
|
|
189
|
+
|
|
190
|
+
$cancel = New-Object System.Windows.Forms.Button
|
|
191
|
+
$cancel.Text = 'Cancel'
|
|
192
|
+
$cancel.Location = New-Object System.Drawing.Point(345, 300)
|
|
193
|
+
$cancel.Size = New-Object System.Drawing.Size(85, 28)
|
|
194
|
+
$cancel.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
|
|
195
|
+
$form.Controls.Add($cancel)
|
|
196
|
+
$form.CancelButton = $cancel
|
|
197
|
+
|
|
198
|
+
Log 'settings window: showing dialog'
|
|
199
|
+
$result = $form.ShowDialog()
|
|
200
|
+
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
|
|
201
|
+
# Build the config as an ordered dictionary. We deliberately do NOT use
|
|
202
|
+
# ConvertFrom-Json -AsHashtable (that switch is PowerShell 6+; Windows
|
|
203
|
+
# ships 5.1). We just write the known fields — the tray only reads
|
|
204
|
+
# these, so a full round-trip merge isn't needed.
|
|
205
|
+
$cfg = [ordered]@{
|
|
206
|
+
server = $server.Text
|
|
207
|
+
token = $token.Text
|
|
208
|
+
device = $device.Text
|
|
209
|
+
browser = [bool]$browser.Checked
|
|
210
|
+
engine = [string]$engine.SelectedItem
|
|
211
|
+
headless = [bool]$headless.Checked
|
|
212
|
+
shell = [bool]$shell.Checked
|
|
213
|
+
}
|
|
214
|
+
$dir = Split-Path -Parent $configPath
|
|
215
|
+
if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null }
|
|
216
|
+
($cfg | ConvertTo-Json -Depth 10) | Set-Content -Path $configPath -Encoding UTF8
|
|
217
|
+
Log 'settings window: saved config'
|
|
218
|
+
} else {
|
|
219
|
+
Log 'settings window: cancelled'
|
|
220
|
+
}
|
|
221
|
+
} catch {
|
|
222
|
+
Log ("settings window ERROR: " + $_.Exception.Message)
|
|
223
|
+
}
|
|
224
|
+
`;
|
|
225
|
+
}
|
|
226
|
+
// ─── macOS: AppleScript dialogs ─────────────────────────────────────
|
|
227
|
+
//
|
|
228
|
+
// A lightweight multi-field settings flow via osascript. Not as slick as
|
|
229
|
+
// the Swift app's form, but keeps parity if someone runs the CLI tray on
|
|
230
|
+
// macOS instead of the .app. Presents fields sequentially.
|
|
231
|
+
function openMacDialogs(configPath, cur) {
|
|
232
|
+
// Keep it simple + non-blocking: one AppleScript that chains dialogs
|
|
233
|
+
// and writes the JSON via `defaults`-free plain file write in the
|
|
234
|
+
// script tail. We build the whole thing as one osascript -e program.
|
|
235
|
+
const script = renderMacOsa(configPath, cur);
|
|
236
|
+
try {
|
|
237
|
+
const child = spawn("osascript", ["-e", script], {
|
|
238
|
+
stdio: "ignore",
|
|
239
|
+
detached: true,
|
|
240
|
+
});
|
|
241
|
+
child.on("error", () => { });
|
|
242
|
+
child.unref();
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/** AppleScript-double-quote-escape. */
|
|
250
|
+
function asq(s) {
|
|
251
|
+
return `"${String(s).replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
252
|
+
}
|
|
253
|
+
function renderMacOsa(configPath, cur) {
|
|
254
|
+
// Prompt for server + token + engine + toggles, then shell out to a
|
|
255
|
+
// tiny writer. Fields are gathered with `display dialog`; booleans via
|
|
256
|
+
// `choose from list`. This is intentionally minimal.
|
|
257
|
+
const p = asq(configPath);
|
|
258
|
+
return [
|
|
259
|
+
`set cfgPath to ${p}`,
|
|
260
|
+
`set srv to text returned of (display dialog "Server URL" default answer ${asq(cur.server)})`,
|
|
261
|
+
`set tok to text returned of (display dialog "Token (blank for none)" default answer ${asq(cur.token)})`,
|
|
262
|
+
`set dev to text returned of (display dialog "Device (optional)" default answer ${asq(cur.device)})`,
|
|
263
|
+
`set eng to (choose from list {"own", "stealth"} default items {${asq(cur.engine)}} with prompt "Browser engine")`,
|
|
264
|
+
`if eng is false then return`,
|
|
265
|
+
`set engv to item 1 of eng`,
|
|
266
|
+
`set opts to (choose from list {"browser", "headless", "shell"} default items {${[
|
|
267
|
+
cur.browser ? '"browser"' : "",
|
|
268
|
+
cur.headless ? '"headless"' : "",
|
|
269
|
+
cur.shell ? '"shell"' : "",
|
|
270
|
+
]
|
|
271
|
+
.filter(Boolean)
|
|
272
|
+
.join(", ")}} with prompt "Enable which options?" with multiple selections allowed)`,
|
|
273
|
+
`if opts is false then set opts to {}`,
|
|
274
|
+
`set br to "false"`,
|
|
275
|
+
`set hl to "false"`,
|
|
276
|
+
`set sh to "false"`,
|
|
277
|
+
`repeat with o in opts`,
|
|
278
|
+
` if (o as string) is "browser" then set br to "true"`,
|
|
279
|
+
` if (o as string) is "headless" then set hl to "true"`,
|
|
280
|
+
` if (o as string) is "shell" then set sh to "true"`,
|
|
281
|
+
`end repeat`,
|
|
282
|
+
`set json to "{\\"server\\":\\"" & srv & "\\",\\"token\\":\\"" & tok & "\\",\\"device\\":\\"" & dev & "\\",\\"browser\\":" & br & ",\\"engine\\":\\"" & engv & "\\",\\"headless\\":" & hl & ",\\"shell\\":" & sh & "}"`,
|
|
283
|
+
`do shell script "mkdir -p " & quoted form of (do shell script "dirname " & quoted form of cfgPath)`,
|
|
284
|
+
`do shell script "cat > " & quoted form of cfgPath & " <<'TSEOF'\n" & json & "\nTSEOF"`,
|
|
285
|
+
].join("\n");
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=settings-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-window.js","sourceRoot":"","sources":["../src/settings-window.ts"],"names":[],"mappings":"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"}
|
package/dist/tray.js
ADDED
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
// `tsbridge tray` — a cross-platform system-tray wrapper around the CLI.
|
|
2
|
+
//
|
|
3
|
+
// One Node process, one code path for Windows / macOS / Linux, powered by
|
|
4
|
+
// systray2 (ships prebuilt tray binaries — no compiler, no runtime for the
|
|
5
|
+
// user to install). It mirrors the macOS Swift menu-bar app: a tray icon
|
|
6
|
+
// with a live status line + Start/Stop, a Settings hint, Open Log, and Quit.
|
|
7
|
+
// The bridge itself runs as a spawned `tsbridge --server …` child so the
|
|
8
|
+
// tray and the connection are decoupled (crash of one doesn't take the
|
|
9
|
+
// other down).
|
|
10
|
+
//
|
|
11
|
+
// Config lives at ~/.tianshu-bridge/config.json — the SAME file the Swift
|
|
12
|
+
// app uses, so switching between them keeps your settings.
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import os from "node:os";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
import { openSettingsWindow } from "./settings-window.js";
|
|
19
|
+
// systray2 is CommonJS. Under NodeNext the default-import interop
|
|
20
|
+
// mis-resolves the class (sees a namespace with no construct signature),
|
|
21
|
+
// so load it through createRequire to get the real constructor, and type
|
|
22
|
+
// it structurally so we don't depend on the package's ESM typings.
|
|
23
|
+
import { createRequire } from "node:module";
|
|
24
|
+
const require = createRequire(import.meta.url);
|
|
25
|
+
const SysTray = require("systray2").default;
|
|
26
|
+
// A separator menu item (systray2 uses the literal "<SEPARATOR>" title).
|
|
27
|
+
const SEPARATOR = { title: "<SEPARATOR>", tooltip: "", enabled: true };
|
|
28
|
+
function configDir() {
|
|
29
|
+
const dir = path.join(os.homedir(), ".tianshu-bridge");
|
|
30
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
31
|
+
return dir;
|
|
32
|
+
}
|
|
33
|
+
function configPath() {
|
|
34
|
+
return path.join(configDir(), "config.json");
|
|
35
|
+
}
|
|
36
|
+
function logPath() {
|
|
37
|
+
return path.join(configDir(), "bridge.log");
|
|
38
|
+
}
|
|
39
|
+
function defaultConfig() {
|
|
40
|
+
return {
|
|
41
|
+
server: "ws://localhost:3110/ws",
|
|
42
|
+
token: "",
|
|
43
|
+
browser: true,
|
|
44
|
+
engine: "own",
|
|
45
|
+
headless: false,
|
|
46
|
+
shell: false,
|
|
47
|
+
device: "",
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function loadConfig() {
|
|
51
|
+
const defaults = defaultConfig();
|
|
52
|
+
try {
|
|
53
|
+
const raw = JSON.parse(fs.readFileSync(configPath(), "utf8"));
|
|
54
|
+
return { ...defaults, ...raw };
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return defaults;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Ensure config.json exists on disk so "Edit settings" always has a
|
|
61
|
+
* file to open (first run hasn't Started the bridge yet, so nothing
|
|
62
|
+
* has written it). Returns the path. Best-effort. */
|
|
63
|
+
function ensureConfigFile() {
|
|
64
|
+
const p = configPath();
|
|
65
|
+
try {
|
|
66
|
+
if (!fs.existsSync(p)) {
|
|
67
|
+
fs.writeFileSync(p, JSON.stringify(defaultConfig(), null, 2) + "\n");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
/* best-effort */
|
|
72
|
+
}
|
|
73
|
+
return p;
|
|
74
|
+
}
|
|
75
|
+
// ─── tray icons ─────────────────────────────────────────────────────
|
|
76
|
+
//
|
|
77
|
+
// systray2 wants a base64 icon string: .ico on Windows, .png elsewhere.
|
|
78
|
+
// We ship two tiny icons next to the built module (assets/) and read them
|
|
79
|
+
// as base64 at runtime. Falls back to an empty string if missing (the
|
|
80
|
+
// tray still works, just without a custom glyph).
|
|
81
|
+
function iconBase64(state) {
|
|
82
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
83
|
+
const ext = process.platform === "win32" ? "ico" : "png";
|
|
84
|
+
// dist/tray.js → ../assets/tray-<state>.<ext> (shipped in the package)
|
|
85
|
+
const candidates = [
|
|
86
|
+
path.join(here, "..", "assets", `tray-${state}.${ext}`),
|
|
87
|
+
path.join(here, "assets", `tray-${state}.${ext}`),
|
|
88
|
+
];
|
|
89
|
+
for (const p of candidates) {
|
|
90
|
+
try {
|
|
91
|
+
return fs.readFileSync(p).toString("base64");
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
/* try next */
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return "";
|
|
98
|
+
}
|
|
99
|
+
// ─── bridge child process ───────────────────────────────────────────
|
|
100
|
+
function buildArgs(cfg) {
|
|
101
|
+
const args = ["--server", cfg.server];
|
|
102
|
+
if (cfg.token)
|
|
103
|
+
args.push("--token", cfg.token);
|
|
104
|
+
if (cfg.browser) {
|
|
105
|
+
if (cfg.engine === "stealth")
|
|
106
|
+
args.push("--browser-engine", "stealth");
|
|
107
|
+
if (cfg.headless)
|
|
108
|
+
args.push("--headless");
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
args.push("--no-browser");
|
|
112
|
+
}
|
|
113
|
+
if (cfg.shell)
|
|
114
|
+
args.push("--shell");
|
|
115
|
+
if (cfg.device)
|
|
116
|
+
args.push("--device", cfg.device);
|
|
117
|
+
return args;
|
|
118
|
+
}
|
|
119
|
+
/** Resolve how to launch the bridge CLI as a child.
|
|
120
|
+
* We re-invoke THIS package's own entry (dist/index.js) with the
|
|
121
|
+
* current node binary, so we don't depend on `tsbridge` being on PATH
|
|
122
|
+
* and don't recurse into the tray subcommand. */
|
|
123
|
+
function bridgeSpawn(cfg) {
|
|
124
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
125
|
+
const entry = path.join(here, "index.js");
|
|
126
|
+
return { cmd: process.execPath, args: [entry, ...buildArgs(cfg)] };
|
|
127
|
+
}
|
|
128
|
+
class Bridge {
|
|
129
|
+
proc = null;
|
|
130
|
+
onStateChange = null;
|
|
131
|
+
get running() {
|
|
132
|
+
return this.proc !== null && this.proc.exitCode === null && !this.proc.killed;
|
|
133
|
+
}
|
|
134
|
+
start(cfg) {
|
|
135
|
+
this.stop();
|
|
136
|
+
const { cmd, args } = bridgeSpawn(cfg);
|
|
137
|
+
// Log stdout/stderr to ~/.tianshu-bridge/bridge.log for troubleshooting.
|
|
138
|
+
let out = "ignore";
|
|
139
|
+
try {
|
|
140
|
+
out = fs.openSync(logPath(), "a");
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
out = "ignore";
|
|
144
|
+
}
|
|
145
|
+
const p = spawn(cmd, args, {
|
|
146
|
+
stdio: ["ignore", out, out],
|
|
147
|
+
// detached:false → child dies with the tray; that's what we want.
|
|
148
|
+
windowsHide: true,
|
|
149
|
+
});
|
|
150
|
+
p.on("exit", () => {
|
|
151
|
+
this.proc = null;
|
|
152
|
+
this.onStateChange?.();
|
|
153
|
+
});
|
|
154
|
+
p.on("error", () => {
|
|
155
|
+
this.proc = null;
|
|
156
|
+
this.onStateChange?.();
|
|
157
|
+
});
|
|
158
|
+
this.proc = p;
|
|
159
|
+
this.onStateChange?.();
|
|
160
|
+
}
|
|
161
|
+
stop() {
|
|
162
|
+
if (this.proc && this.running) {
|
|
163
|
+
this.proc.kill();
|
|
164
|
+
}
|
|
165
|
+
this.proc = null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ─── tray ───────────────────────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* systray2 copies its prebuilt tray binary into ~/.cache/node-systray/
|
|
171
|
+
* (and also ships one inside the package's traybin/), but it does NOT
|
|
172
|
+
* mark it executable on Unix — so the very first launch fails with
|
|
173
|
+
* EACCES. Fix it up before we start: chmod +x every candidate binary
|
|
174
|
+
* that exists. No-op on Windows (.exe needs no exec bit).
|
|
175
|
+
*/
|
|
176
|
+
function ensureTrayBinExecutable() {
|
|
177
|
+
if (process.platform === "win32")
|
|
178
|
+
return;
|
|
179
|
+
const binName = process.platform === "darwin" ? "tray_darwin_release" : "tray_linux_release";
|
|
180
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
181
|
+
const candidates = [
|
|
182
|
+
path.join(os.homedir(), ".cache", "node-systray", "2.1.4", binName),
|
|
183
|
+
// package-internal copy (dist/../node_modules or bundled traybin)
|
|
184
|
+
path.join(here, "..", "node_modules", "systray2", "traybin", binName),
|
|
185
|
+
];
|
|
186
|
+
for (const p of candidates) {
|
|
187
|
+
try {
|
|
188
|
+
if (fs.existsSync(p))
|
|
189
|
+
fs.chmodSync(p, 0o755);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
/* best-effort */
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export async function runTray() {
|
|
197
|
+
let cfg = loadConfig();
|
|
198
|
+
const bridge = new Bridge();
|
|
199
|
+
ensureTrayBinExecutable();
|
|
200
|
+
// Menu item objects (systray2 mutates `checked`/`title` in place then
|
|
201
|
+
// we push an update-item action to reflect it in the tray).
|
|
202
|
+
const statusItem = {
|
|
203
|
+
title: "○ Stopped",
|
|
204
|
+
tooltip: "Bridge connection status",
|
|
205
|
+
enabled: false,
|
|
206
|
+
};
|
|
207
|
+
const serverItem = {
|
|
208
|
+
title: `Server: ${cfg.server}`,
|
|
209
|
+
tooltip: "Configured server (edit config.json to change)",
|
|
210
|
+
enabled: false,
|
|
211
|
+
};
|
|
212
|
+
const startItem = {
|
|
213
|
+
title: "Start",
|
|
214
|
+
tooltip: "Start the bridge connection",
|
|
215
|
+
enabled: true,
|
|
216
|
+
hidden: false,
|
|
217
|
+
click: () => {
|
|
218
|
+
cfg = loadConfig(); // pick up any external config edits
|
|
219
|
+
bridge.start(cfg);
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
const stopItem = {
|
|
223
|
+
title: "Stop",
|
|
224
|
+
tooltip: "Stop the bridge connection",
|
|
225
|
+
enabled: true,
|
|
226
|
+
hidden: true,
|
|
227
|
+
click: () => bridge.stop(),
|
|
228
|
+
};
|
|
229
|
+
const settingsItem = {
|
|
230
|
+
title: "Settings…",
|
|
231
|
+
tooltip: "Edit the bridge settings",
|
|
232
|
+
enabled: true,
|
|
233
|
+
click: () => {
|
|
234
|
+
const p = ensureConfigFile();
|
|
235
|
+
const c = loadConfig();
|
|
236
|
+
// Native settings window (WinForms on Windows, AppleScript on
|
|
237
|
+
// macOS). Falls back to opening the raw JSON on Linux / failure.
|
|
238
|
+
const opened = openSettingsWindow(p, {
|
|
239
|
+
server: c.server,
|
|
240
|
+
token: c.token,
|
|
241
|
+
browser: c.browser,
|
|
242
|
+
engine: c.engine,
|
|
243
|
+
headless: c.headless,
|
|
244
|
+
shell: c.shell,
|
|
245
|
+
device: c.device,
|
|
246
|
+
});
|
|
247
|
+
if (!opened)
|
|
248
|
+
openPath(p);
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
const logItem = {
|
|
252
|
+
title: "Open log",
|
|
253
|
+
tooltip: "Open bridge.log",
|
|
254
|
+
enabled: true,
|
|
255
|
+
click: () => openPath(logPath()),
|
|
256
|
+
};
|
|
257
|
+
const quitItem = {
|
|
258
|
+
title: "Quit",
|
|
259
|
+
tooltip: "Stop the bridge and quit",
|
|
260
|
+
enabled: true,
|
|
261
|
+
click: () => {
|
|
262
|
+
bridge.stop();
|
|
263
|
+
void systray.kill(true);
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
const systray = new SysTray({
|
|
267
|
+
menu: {
|
|
268
|
+
icon: iconBase64("off"),
|
|
269
|
+
isTemplateIcon: process.platform === "darwin",
|
|
270
|
+
title: "Tianshu Bridge",
|
|
271
|
+
tooltip: "Tianshu Bridge",
|
|
272
|
+
items: [
|
|
273
|
+
statusItem,
|
|
274
|
+
serverItem,
|
|
275
|
+
SEPARATOR,
|
|
276
|
+
startItem,
|
|
277
|
+
stopItem,
|
|
278
|
+
SEPARATOR,
|
|
279
|
+
settingsItem,
|
|
280
|
+
logItem,
|
|
281
|
+
SEPARATOR,
|
|
282
|
+
quitItem,
|
|
283
|
+
],
|
|
284
|
+
},
|
|
285
|
+
debug: false,
|
|
286
|
+
copyDir: true, // copy the tray binary to a stable temp dir (avoids
|
|
287
|
+
// running from inside node_modules on some setups)
|
|
288
|
+
});
|
|
289
|
+
// Reflect connection state in the tray whenever it changes.
|
|
290
|
+
bridge.onStateChange = () => {
|
|
291
|
+
const on = bridge.running;
|
|
292
|
+
statusItem.title = on ? "● Connected" : "○ Stopped";
|
|
293
|
+
startItem.hidden = on;
|
|
294
|
+
stopItem.hidden = !on;
|
|
295
|
+
void systray.sendAction({ type: "update-item", item: statusItem });
|
|
296
|
+
void systray.sendAction({ type: "update-item", item: startItem });
|
|
297
|
+
void systray.sendAction({ type: "update-item", item: stopItem });
|
|
298
|
+
void systray.sendAction({
|
|
299
|
+
type: "update-menu",
|
|
300
|
+
menu: {
|
|
301
|
+
icon: iconBase64(on ? "on" : "off"),
|
|
302
|
+
isTemplateIcon: process.platform === "darwin",
|
|
303
|
+
title: "Tianshu Bridge",
|
|
304
|
+
tooltip: on ? "Tianshu Bridge: connected" : "Tianshu Bridge: stopped",
|
|
305
|
+
items: [
|
|
306
|
+
statusItem,
|
|
307
|
+
serverItem,
|
|
308
|
+
SEPARATOR,
|
|
309
|
+
startItem,
|
|
310
|
+
stopItem,
|
|
311
|
+
SEPARATOR,
|
|
312
|
+
settingsItem,
|
|
313
|
+
logItem,
|
|
314
|
+
SEPARATOR,
|
|
315
|
+
quitItem,
|
|
316
|
+
],
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
};
|
|
320
|
+
systray.onClick((action) => {
|
|
321
|
+
const item = action.item;
|
|
322
|
+
if (item && typeof item.click === "function")
|
|
323
|
+
item.click();
|
|
324
|
+
});
|
|
325
|
+
await systray.ready();
|
|
326
|
+
console.log(`[local-bridge] tray running — config: ${configPath()}\n` +
|
|
327
|
+
` Click the tray icon → Start. Edit settings in config.json.`);
|
|
328
|
+
// Keep the process alive until the tray is killed.
|
|
329
|
+
return await new Promise((resolve) => {
|
|
330
|
+
systray.onExit(() => resolve(0));
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
// ─── util ───────────────────────────────────────────────────────────
|
|
334
|
+
/** Open a file with the OS default handler (cross-platform).
|
|
335
|
+
* Windows: `cmd /c start "" file` is flaky under a detached spawn and
|
|
336
|
+
* fails if the file type has no association, so open the file's default
|
|
337
|
+
* editor via a small chain — try the shell association, then notepad as
|
|
338
|
+
* a guaranteed fallback for our .json/.log text files. */
|
|
339
|
+
function openPath(target) {
|
|
340
|
+
const plat = process.platform;
|
|
341
|
+
try {
|
|
342
|
+
if (plat === "win32") {
|
|
343
|
+
// `explorer <file>` opens with the registered handler; if none,
|
|
344
|
+
// fall back to notepad (always present) for our text files.
|
|
345
|
+
const child = spawn("cmd", ["/d", "/s", "/c", "start", "", target], {
|
|
346
|
+
stdio: "ignore",
|
|
347
|
+
detached: true,
|
|
348
|
+
windowsHide: true,
|
|
349
|
+
});
|
|
350
|
+
child.on("error", () => {
|
|
351
|
+
try {
|
|
352
|
+
spawn("notepad", [target], { stdio: "ignore", detached: true }).unref();
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
/* give up */
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
child.unref();
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
const cmd = plat === "darwin" ? "open" : "xdg-open";
|
|
362
|
+
spawn(cmd, [target], { stdio: "ignore", detached: true }).unref();
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
/* best-effort */
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=tray.js.map
|
package/dist/tray.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tianshu-ai/local-bridge",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "Local bridge for tianshu — dial into a tianshu server over WebSocket and expose your machine's tools (browser, files, shell) to the agent via reverse-MCP.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
20
|
"dist",
|
|
21
|
+
"assets",
|
|
21
22
|
"app/TianshuBridge.swift",
|
|
22
23
|
"README.md"
|
|
23
24
|
],
|
|
@@ -31,6 +32,7 @@
|
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"@modelcontextprotocol/sdk": "^1.19.0",
|
|
33
34
|
"playwright": "^1.56.0",
|
|
35
|
+
"systray2": "^2.1.4",
|
|
34
36
|
"ws": "^8.18.0"
|
|
35
37
|
},
|
|
36
38
|
"devDependencies": {
|