@tianshu-ai/local-bridge 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/app/TianshuBridge.swift +14 -2
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -86,7 +86,7 @@ tsbridge version # print the installed version
|
|
|
86
86
|
| `--device <id>` | stable device id (default: hostname) |
|
|
87
87
|
| `--label <name>` | human label shown in the panel |
|
|
88
88
|
| `--no-browser` | don't expose browser tools |
|
|
89
|
-
| `--
|
|
89
|
+
| `--shell` | expose the shell exec + file sync tools (OFF by default) |
|
|
90
90
|
| `--shell-root <dir>` | fixed root dir that jails `exec` + `sync_up`/`sync_down` (default: `~/.tianshu_shell`) |
|
|
91
91
|
| `--headless` | run the browser without a window (default: headful) |
|
|
92
92
|
| `--cdp <url>` | connect to an already-running Chrome's CDP endpoint (default probe `http://127.0.0.1:9222`; `off` to skip) |
|
|
@@ -123,7 +123,7 @@ the underlying browser differs:
|
|
|
123
123
|
|
|
124
124
|
### Shell + file sync
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
When `--shell` is passed, the bridge also exposes three **native**
|
|
127
127
|
tools that run directly on your machine. Their names, parameters and
|
|
128
128
|
result shapes mirror tianshu's server-side `openshell` plugin, so an
|
|
129
129
|
agent written against openshell works unchanged against a bridge device.
|
|
@@ -152,8 +152,9 @@ channel — no protocol changes.
|
|
|
152
152
|
> is confined to the `--shell-root` directory (default `~/.tianshu_shell`)
|
|
153
153
|
> — the agent can't `cd` or read/write outside it via these tools. It is
|
|
154
154
|
> not a kernel sandbox (a determined command could still reach the wider
|
|
155
|
-
> fs), so only connect a bridge to a tianshu server you trust
|
|
156
|
-
> `--
|
|
155
|
+
> fs), so only connect a bridge to a tianshu server you trust. Because of
|
|
156
|
+
> this, shell is **off by default** — add `--shell` only when you want the
|
|
157
|
+
> agent to run commands + move files on your machine.
|
|
157
158
|
|
|
158
159
|
## Protocol
|
|
159
160
|
|
package/app/TianshuBridge.swift
CHANGED
|
@@ -18,6 +18,7 @@ struct Config: Codable {
|
|
|
18
18
|
var token: String = ""
|
|
19
19
|
var engine: String = "own" // "own" | "stealth"
|
|
20
20
|
var headless: Bool = false
|
|
21
|
+
var shell: Bool = false // expose exec + file sync (opt-in)
|
|
21
22
|
var device: String = "" // empty → hostname
|
|
22
23
|
|
|
23
24
|
static var path: URL {
|
|
@@ -92,6 +93,7 @@ final class Bridge {
|
|
|
92
93
|
if !cfg.token.isEmpty { args += ["--token", cfg.token] }
|
|
93
94
|
if cfg.engine == "stealth" { args += ["--browser-engine", "stealth"] }
|
|
94
95
|
if cfg.headless { args += ["--headless"] }
|
|
96
|
+
if cfg.shell { args += ["--shell"] }
|
|
95
97
|
if !cfg.device.isEmpty { args += ["--device", cfg.device] }
|
|
96
98
|
|
|
97
99
|
let p = Process()
|
|
@@ -174,6 +176,7 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
174
176
|
menu.addItem(statusMI)
|
|
175
177
|
menu.addItem(NSMenuItem(title: "Server: \(cfg.server)", action: nil, keyEquivalent: ""))
|
|
176
178
|
let eng = cfg.engine == "stealth" ? "stealth" : "own"
|
|
179
|
+
menu.addItem(NSMenuItem(title: "Shell: \(cfg.shell ? "on" : "off")", action: nil, keyEquivalent: ""))
|
|
177
180
|
menu.addItem(NSMenuItem(title: "Browser: \(eng)\(cfg.headless ? " (headless)" : "")",
|
|
178
181
|
action: nil, keyEquivalent: ""))
|
|
179
182
|
menu.addItem(.separator())
|
|
@@ -217,6 +220,7 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
217
220
|
private var tokenField: NSTextField!
|
|
218
221
|
private var enginePopup: NSPopUpButton!
|
|
219
222
|
private var headlessCheck: NSButton!
|
|
223
|
+
private var shellCheck: NSButton!
|
|
220
224
|
|
|
221
225
|
private func makeSettingsView() -> NSView {
|
|
222
226
|
let v = NSView(frame: NSRect(x: 0, y: 0, width: 380, height: 300))
|
|
@@ -229,7 +233,7 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
229
233
|
paste.frame = NSRect(x: 16, y: 258, width: 200, height: 28)
|
|
230
234
|
paste.bezelStyle = .rounded
|
|
231
235
|
v.addSubview(paste)
|
|
232
|
-
let hint = NSTextField(labelWithString: "(copies server + token + browser settings)")
|
|
236
|
+
let hint = NSTextField(labelWithString: "(copies server + token + browser + shell settings)")
|
|
233
237
|
hint.frame = NSRect(x: 16, y: 238, width: 348, height: 16)
|
|
234
238
|
hint.font = NSFont.systemFont(ofSize: 10)
|
|
235
239
|
hint.textColor = .secondaryLabelColor
|
|
@@ -254,8 +258,14 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
254
258
|
headlessCheck.state = cfg.headless ? .on : .off
|
|
255
259
|
v.addSubview(headlessCheck)
|
|
256
260
|
|
|
261
|
+
shellCheck = NSButton(checkboxWithTitle: "Shell (run commands + sync files)", target: nil, action: nil)
|
|
262
|
+
shellCheck.frame = NSRect(x: 110, y: 70, width: 260, height: 20)
|
|
263
|
+
shellCheck.state = cfg.shell ? .on : .off
|
|
264
|
+
shellCheck.toolTip = "Exposes exec + file sync on your machine, jailed to ~/.tianshu_shell. Off by default; enable only for a server you trust."
|
|
265
|
+
v.addSubview(shellCheck)
|
|
266
|
+
|
|
257
267
|
let save = NSButton(title: "Save & Restart", target: self, action: #selector(saveSettings))
|
|
258
|
-
save.frame = NSRect(x: 200, y:
|
|
268
|
+
save.frame = NSRect(x: 200, y: 18, width: 160, height: 32)
|
|
259
269
|
save.bezelStyle = .rounded
|
|
260
270
|
v.addSubview(save)
|
|
261
271
|
return v
|
|
@@ -266,6 +276,7 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
266
276
|
cfg.token = tokenField.stringValue.trimmingCharacters(in: .whitespaces)
|
|
267
277
|
cfg.engine = enginePopup.indexOfSelectedItem == 1 ? "stealth" : "own"
|
|
268
278
|
cfg.headless = headlessCheck.state == .on
|
|
279
|
+
cfg.shell = shellCheck.state == .on
|
|
269
280
|
cfg.save()
|
|
270
281
|
configWindow?.close()
|
|
271
282
|
rebuildMenu()
|
|
@@ -295,6 +306,7 @@ final class AppController: NSObject, NSApplicationDelegate {
|
|
|
295
306
|
if let t = params["token"] { tokenField.stringValue = t }
|
|
296
307
|
if let e = params["engine"] { enginePopup.selectItem(at: e == "stealth" ? 1 : 0) }
|
|
297
308
|
if let h = params["headless"] { headlessCheck.state = (h == "1" || h == "true") ? .on : .off }
|
|
309
|
+
if let s = params["shell"] { shellCheck.state = (s == "1" || s == "true") ? .on : .off }
|
|
298
310
|
}
|
|
299
311
|
|
|
300
312
|
private func alert(_ title: String, _ body: String) {
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
// --device <id> stable device id (default: hostname)
|
|
15
15
|
// --label <name> human label shown in the panel (default: device id)
|
|
16
16
|
// --no-browser don't expose browser tools
|
|
17
|
-
// --
|
|
17
|
+
// --shell expose the shell exec + file sync tools
|
|
18
|
+
// (OFF by default; runs commands on your machine)
|
|
18
19
|
// --shell-root <dir> fixed root dir that jails exec + sync
|
|
19
20
|
// (default: ~/.tianshu_shell)
|
|
21
|
+
// (default: ~/.tianshu_shell)
|
|
20
22
|
// --browser-engine own | stealth (default: own)
|
|
21
23
|
// own = your system/running Chrome (no download,
|
|
22
24
|
// real cookies+fingerprint)
|
|
@@ -112,7 +114,11 @@ async function main() {
|
|
|
112
114
|
const channel = typeof args["chrome-channel"] === "string" ? args["chrome-channel"] : "chrome";
|
|
113
115
|
const userDataDir = typeof args["user-data-dir"] === "string" ? args["user-data-dir"] : "";
|
|
114
116
|
const browserOn = args["no-browser"] !== true;
|
|
115
|
-
|
|
117
|
+
// Shell (exec + file sync) is OFF by default — it runs arbitrary
|
|
118
|
+
// commands on the user's own machine, so it must be opted into
|
|
119
|
+
// explicitly with --shell. (--no-shell is still accepted as a
|
|
120
|
+
// harmless no-op for back-compat with older invocations.)
|
|
121
|
+
const shellOn = args["shell"] === true && args["no-shell"] !== true;
|
|
116
122
|
const engine = args["browser-engine"] === "stealth" ? "stealth" : "own";
|
|
117
123
|
const shellRoot = typeof args["shell-root"] === "string" ? args["shell-root"] : defaultShellRoot();
|
|
118
124
|
const tools = [];
|
|
@@ -179,7 +185,7 @@ async function main() {
|
|
|
179
185
|
log(`shell: exec + sync_up/sync_down enabled, jailed to ${shellRoot}`);
|
|
180
186
|
}
|
|
181
187
|
if (tools.length === 0) {
|
|
182
|
-
console.error("[local-bridge] no tools enabled — nothing to expose. Remove --no-browser
|
|
188
|
+
console.error("[local-bridge] no tools enabled — nothing to expose. Remove --no-browser, or add --shell, and try again.");
|
|
183
189
|
process.exit(2);
|
|
184
190
|
}
|
|
185
191
|
const conn = new BridgeConnection({
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.6.
|
|
3
|
+
"version": "0.6.2",
|
|
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": {
|