@tianshu-ai/tianshu 0.53.0 → 0.53.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/package.json +1 -1
- package/packages/server/dist/chat/handler.d.ts.map +1 -1
- package/packages/server/dist/chat/handler.js +25 -0
- package/packages/server/dist/chat/handler.js.map +1 -1
- package/packages/web/package.json +1 -1
- package/plugins/reverse-mcp/dist/server.d.ts.map +1 -1
- package/plugins/reverse-mcp/dist/server.js +0 -3
- package/plugins/reverse-mcp/dist/server.js.map +2 -2
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAgDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA4B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAyP7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAgDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA4B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAyP7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkhClE;AAmVD,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,2BAA2B,CAAC,EAAE,MAAM,GACnC,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3E;AAsCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA4QD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -973,6 +973,31 @@ export async function runPrompt(args) {
|
|
|
973
973
|
if (isPiStateError) {
|
|
974
974
|
console.log(`[handler] pi state-error; skipping recovery-agent spawn (session=${session.id})`);
|
|
975
975
|
}
|
|
976
|
+
// Catch-block inbox recovery: if the error is transient (not a
|
|
977
|
+
// pi state error, not user-abort), schedule an inbox retry so
|
|
978
|
+
// the agent can self-recover with a fresh handleTurn. This
|
|
979
|
+
// covers bridge timeouts, provider 5xx, and other exceptions
|
|
980
|
+
// that the post-waitForIdle recovery path never sees.
|
|
981
|
+
if (!isPiStateError && !signal.aborted) {
|
|
982
|
+
const recentRecoveries = countRecentRecoveryNotes(ctx, session.id);
|
|
983
|
+
if (recentRecoveries < 2) {
|
|
984
|
+
console.log(`[handler] catch-block recovery ${recentRecoveries + 1}/2: scheduling inbox retry in 3s error="${errMsg.slice(0, 150)}" session=${session.id}`);
|
|
985
|
+
// Pre-purge orphaned tool_results before retry
|
|
986
|
+
try {
|
|
987
|
+
purgeOrphanedToolResults(ctx, session.id);
|
|
988
|
+
}
|
|
989
|
+
catch { /* best effort */ }
|
|
990
|
+
setTimeout(() => {
|
|
991
|
+
void enqueueInbox(ctx, session.id, {
|
|
992
|
+
kind: "system_note",
|
|
993
|
+
text: `[auto-recovery ${recentRecoveries + 1}/2] The previous attempt threw an error: ${errMsg.slice(0, 200)}. Retry what you were doing — if it fails again, describe the failure to the user.`,
|
|
994
|
+
});
|
|
995
|
+
}, 3000);
|
|
996
|
+
}
|
|
997
|
+
else {
|
|
998
|
+
console.log(`[handler] catch-block recovery: already retried ${recentRecoveries} times, stopping. error="${errMsg.slice(0, 150)}" session=${session.id}`);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
976
1001
|
// Self-recovery: spawn a recovery agent in an isolated
|
|
977
1002
|
// session so it can diagnose what crashed + nudge this
|
|
978
1003
|
// session back to life. Dedupe is handled inside
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAInB,MAAM,wBAAwB,CAAC;AA4ChC,QAAA,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAInB,MAAM,wBAAwB,CAAC;AA4ChC,QAAA,MAAM,MAAM,EAAE,kBA+Lb,CAAC;AAEF,eAAO,MAAM,QAAQ,4EAA+B,CAAC;AACrD,eAAO,MAAM,UAAU,0CAAkC,CAAC;eAC3C,MAAM"}
|
|
@@ -754,9 +754,6 @@ var plugin = {
|
|
|
754
754
|
const lastAnnounced = registerAnnounceCache.get(dedupKey);
|
|
755
755
|
if (lastAnnounced == null || nowMs - lastAnnounced > REGISTER_DEDUP_MS) {
|
|
756
756
|
registerAnnounceCache.set(dedupKey, nowMs);
|
|
757
|
-
ctx.log.info(
|
|
758
|
-
`bridge registered: user=${userId} device=${deviceId} tools=${tools.length}`
|
|
759
|
-
);
|
|
760
757
|
}
|
|
761
758
|
socket.send(JSON.stringify({ type: MSG.registered, ok: true, deviceId }));
|
|
762
759
|
ctx.broadcast("connections_changed", { userId });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/server.ts", "../src/protocol.ts", "../src/registry.ts", "../src/bridge-sandbox-runner.ts", "../src/toolset.ts"],
|
|
4
|
-
"sourcesContent": ["// reverse-mcp plugin \u2014 server side.\n//\n// A bridge client connects to the existing authenticated chat\n// WebSocket (`/ws`) with `Authorization: Bearer <token>`, so the host's\n// identity resolver chain has already established (tenantId, userId) and\n// stamped `userId` on the socket. The client then sends\n// `reverse_mcp_register` advertising the tools it can run locally; the\n// agent calls them via a ToolsetProvider that does a JSON-RPC round-trip\n// back over the same socket (`reverse_mcp_request` / `_response`).\n//\n// This is route 1 (reuse /ws) + scheme 1a (Bearer session token): zero\n// new endpoints, auth reused. The envelope is a thin wrapper around\n// standard MCP JSON-RPC so it can later move to a dedicated endpoint.\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {\n PluginContext,\n PluginServerExports,\n PluginServerModule,\n PluginRouteHandler,\n PluginWsHandler,\n BridgeTokenCapability,\n} from \"@tianshu-ai/plugin-sdk\";\nimport type { WebSocket } from \"ws\";\nimport { BridgeRegistry } from \"./registry.js\";\nimport { BridgeSandboxRunner } from \"./bridge-sandbox-runner.js\";\nimport { makeBridgeToolset } from \"./toolset.js\";\nimport {\n MSG,\n type McpToolDescriptor,\n type RegisterMsg,\n type ResponseMsg,\n} from \"./protocol.js\";\n\n/** Read the identity the host stamped on the chat socket. */\nfunction socketUserId(socket: WebSocket): string {\n return (socket as unknown as { userId?: string }).userId ?? \"\";\n}\n\n// Bridge connections are live WebSockets held in memory, keyed to the\n// socket. The plugin re-activates whenever the tenant's plugin set is\n// invalidated (any enable/disable/config PATCH, plugins refresh, etc.),\n// which used to create a FRESH empty BridgeRegistry each time \u2014 so an\n// already-connected bridge (registered into the old instance) became\n// invisible to the new toolset + /connections route, even though the\n// socket was still open and re-registering. Key the registry by tenant\n// at module scope so it SURVIVES re-activation and the live connections\n// (and their tool lists) persist. Cleared only when the process exits.\nconst registriesByTenant = new Map<string, BridgeRegistry>();\n\n// Heartbeat dedup for `bridge registered` log lines. Keyed by\n// `${userId}|${deviceId}|${toolCount}` \u2014 same tuple within the\n// window collapses to a single announcement. See the callsite\n// below for the full motivation.\nconst registerAnnounceCache = new Map<string, number>();\nconst REGISTER_DEDUP_MS = 60_000;\n\nfunction registryForTenant(tenantId: string): BridgeRegistry {\n let reg = registriesByTenant.get(tenantId);\n if (!reg) {\n reg = new BridgeRegistry();\n registriesByTenant.set(tenantId, reg);\n }\n return reg;\n}\n\nconst plugin: PluginServerModule = {\n activate(ctx: PluginContext): PluginServerExports {\n // Reused across re-activations so live bridge connections aren't\n // orphaned when the tenant's plugin registry is invalidated.\n const registry = registryForTenant(ctx.tenantId);\n\n // client \u2192 server: register a device + its tools.\n const onRegister: PluginWsHandler = (msg, socket) => {\n const userId = socketUserId(socket);\n if (!userId) {\n socket.send(\n JSON.stringify({ type: MSG.registered, ok: false, error: \"no user identity on socket\" }),\n );\n return;\n }\n const m = msg as unknown as RegisterMsg;\n const deviceId = typeof m.deviceId === \"string\" && m.deviceId ? m.deviceId : \"default\";\n const tools: McpToolDescriptor[] = Array.isArray(m.tools)\n ? m.tools.filter((t) => t && typeof t.name === \"string\")\n : [];\n registry.register({ userId, deviceId, label: m.label, socket, tools });\n // Dedup: bridge clients re-register every ~20s as a heartbeat.\n // Without gating this log the file fills with thousands of\n // identical `bridge registered` lines and drowns real events\n // (Yu, 2026-09-14: the 24:05 abort log had ~40 register lines\n // in the crash window). Only announce the first arrival of\n // each (user, device, toolCount) combo per REGISTER_DEDUP_MS.\n // A change in toolCount always re-announces so \"device gained\n // 3 tools\" is still visible.\n const dedupKey = `${userId}|${deviceId}|${tools.length}`;\n const nowMs = Date.now();\n const lastAnnounced = registerAnnounceCache.get(dedupKey);\n if (lastAnnounced == null || nowMs - lastAnnounced > REGISTER_DEDUP_MS) {\n registerAnnounceCache.set(dedupKey, nowMs);\n ctx.log.info(\n `bridge registered: user=${userId} device=${deviceId} tools=${tools.length}`,\n );\n }\n // Note: the deduped re-registrations are intentionally silent.\n // If you ever need to prove the heartbeat is firing at expected\n // cadence, either flip REGISTER_DEDUP_MS down or use the\n // per-connection activity from tool_activity events instead.\n socket.send(JSON.stringify({ type: MSG.registered, ok: true, deviceId }));\n // Let panels refresh.\n ctx.broadcast(\"connections_changed\", { userId });\n };\n\n // client \u2192 server: a JSON-RPC reply to a request we sent.\n const onResponse: PluginWsHandler = (msg, socket) => {\n const m = msg as unknown as ResponseMsg;\n if (typeof m.id !== \"string\") return;\n registry.settle(socket, m.id, m.result, m.error);\n };\n\n // client \u2192 server: graceful unregister.\n const onUnregister: PluginWsHandler = (_msg, socket) => {\n registry.removeBySocket(socket);\n ctx.broadcast(\"connections_changed\", {});\n };\n\n // Clean up when a bridge socket drops. wsHandlers don't get a\n // close event, so we can't hook it here directly; instead the\n // registry.settle/forUser paths tolerate dead sockets, and a\n // dropped socket is pruned on the next failed send. (A future\n // core hook can call removeBySocket on close.)\n\n const toolset = makeBridgeToolset({\n registry,\n userHomeDir: (uid: string) => ctx.userHomeDir(uid),\n log: ctx.log,\n });\n\n // Panel/debug: list this user's connected devices + tool counts.\n const listConnections: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n const conns = registry.forUser(userId).map((c) => ({\n deviceId: c.deviceId,\n label: c.label,\n connectedAt: c.connectedAt,\n tools: c.tools.map((t) => t.name),\n }));\n res.json({ connections: conns });\n };\n\n // Panel: everything needed to start a local bridge \u2014 the WS URL,\n // a freshly-minted connection token, and a ready-to-run command.\n const connectInfo: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n // Derive the public wss:// URL from the incoming request so it\n // works behind a tunnel/proxy (Cloudflare sets X-Forwarded-*).\n const fwdProto =\n (req.headers[\"x-forwarded-proto\"] as string | undefined)?.split(\",\")[0]?.trim();\n const host =\n (req.headers[\"x-forwarded-host\"] as string | undefined) ||\n (req.headers.host as string | undefined) ||\n \"localhost\";\n const secure = fwdProto ? fwdProto === \"https\" : false;\n const wsScheme = secure ? \"wss\" : \"ws\";\n const wsUrl = `${wsScheme}://${host}/ws`;\n\n const minter = ctx.capabilities.get<BridgeTokenCapability>(\"host.bridgeToken\");\n const grant = minter?.mint(userId) ?? {\n token: \"\",\n authEnabled: false,\n expiresAt: null,\n };\n const tokenArg = grant.authEnabled ? ` --token ${grant.token}` : \"\";\n // Base command (no capability flags). The panel appends the\n // capability/engine flags the user selects (e.g.\n // `--browser-engine stealth`), so capability exposure is chosen\n // by the user on their own machine, not toggled remotely.\n const baseCommand = `npx @tianshu-ai/local-bridge --server ${wsUrl}${tokenArg}`;\n res.json({\n wsUrl,\n authEnabled: grant.authEnabled,\n token: grant.token,\n expiresAt: grant.expiresAt,\n baseCommand,\n command: baseCommand,\n desktopDownload: \"https://github.com/tianshu-ai/bridge-desktop/releases/latest\",\n });\n };\n\n // Serve bridge screenshot files so the frontend can render <img>.\n // GET /api/p/reverse-mcp/screenshot?path=bridge-screenshots/123.png\n const serveScreenshot: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n const relPath = req.query.path as string | undefined;\n if (!relPath || !relPath.startsWith(\"bridge-screenshots/\")) {\n return void res.status(400).json({ error: \"invalid path\" });\n }\n // Prevent path traversal.\n if (relPath.includes(\"..\") || relPath.includes(\"//\")) {\n return void res.status(400).json({ error: \"invalid path\" });\n }\n const userHome = ctx.userHomeDir(userId);\n const fullPath = path.join(userHome, relPath);\n if (!fs.existsSync(fullPath)) {\n return void res.status(404).json({ error: \"not found\" });\n }\n const ext = path.extname(fullPath).toLowerCase();\n const mime: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".webp\": \"image/webp\",\n \".gif\": \"image/gif\",\n };\n res.setHeader(\"Content-Type\", mime[ext] || \"application/octet-stream\");\n res.setHeader(\"Cache-Control\", \"private, max-age=3600\");\n fs.createReadStream(fullPath).pipe(res);\n };\n\n // Bridge-backed sandbox.shell runner. When the user has a bridge\n // connected, exec/readFile/writeFile go to their local machine.\n // The runner dynamically picks the first connected device for\n // the requesting user.\n const bridgeShellRunner = new BridgeSandboxRunner({\n registry,\n userId: \"__dynamic__\",\n deviceId: \"__first__\",\n serverWorkspacePath: ctx.workspaceDir,\n });\n\n ctx.log.info(\"reverse-mcp activated\");\n return {\n wsHandlers: {\n onRegister,\n onResponse,\n onUnregister,\n },\n toolsetProviders: {\n BridgeToolset: toolset,\n },\n routes: {\n listConnections,\n connectInfo,\n serveScreenshot,\n },\n sandboxes: {\n bridgeShell: bridgeShellRunner,\n },\n };\n },\n async deactivate() {\n /* connections are per-socket; they drop when the sockets close */\n },\n};\n\nexport const activate = plugin.activate.bind(plugin);\nexport const deactivate = plugin.deactivate?.bind(plugin);\nexport default plugin;\n", "// Reverse-MCP wire protocol.\n//\n// Transport: the existing authenticated chat WebSocket (`/ws`). The\n// bridge client connects with `Authorization: Bearer <token>` so the\n// host's identity resolver chain already knows (tenantId, userId) \u2014 we\n// never invent our own auth here. On top of that channel we exchange a\n// THIN envelope around standard MCP JSON-RPC, so the same payloads can\n// later move to a dedicated endpoint (route 2) unchanged.\n//\n// Direction is inverted vs. normal MCP: the SERVER is the JSON-RPC\n// client (sends tools/list, tools/call), the dialed-in BRIDGE is the\n// JSON-RPC server (executes locally, replies).\n//\n// Message types (all ride the shared /ws channel):\n// client \u2192 server:\n// reverse_mcp_register { deviceId, tools: McpToolDescriptor[] }\n// reverse_mcp_response { id, result? , error? } // JSON-RPC reply\n// reverse_mcp_unregister { } // graceful bye\n// server \u2192 client:\n// reverse_mcp_request { id, method, params } // JSON-RPC call\n// reverse_mcp_registered { ok, deviceId } // ack\n\nexport const MSG = {\n register: \"reverse_mcp_register\",\n unregister: \"reverse_mcp_unregister\",\n response: \"reverse_mcp_response\",\n request: \"reverse_mcp_request\",\n registered: \"reverse_mcp_registered\",\n} as const;\n\n/** A tool the bridge advertises at register time. Mirrors the MCP\n * `Tool` shape (name + description + JSON-schema input). */\nexport interface McpToolDescriptor {\n name: string;\n description?: string;\n inputSchema?: Record<string, unknown>;\n}\n\n/** client \u2192 server: announce this device + the tools it offers. */\nexport interface RegisterMsg {\n type: typeof MSG.register;\n deviceId: string;\n /** Human label for the device, shown in the panel. */\n label?: string;\n tools: McpToolDescriptor[];\n}\n\n/** server \u2192 client: a JSON-RPC request to execute locally. */\nexport interface RequestMsg {\n type: typeof MSG.request;\n id: string;\n method: string; // e.g. \"tools/call\"\n params?: Record<string, unknown>;\n}\n\n/** client \u2192 server: a JSON-RPC reply. */\nexport interface ResponseMsg {\n type: typeof MSG.response;\n id: string;\n result?: unknown;\n error?: { code: number; message: string };\n}\n\n/** Standard MCP `tools/call` params. */\nexport interface ToolsCallParams {\n name: string;\n arguments?: Record<string, unknown>;\n}\n\n/** Standard MCP `tools/call` result: a list of content blocks. We\n * flatten text blocks for the agent. */\nexport interface ToolsCallResult {\n content?: Array<{ type: string; text?: string; [k: string]: unknown }>;\n isError?: boolean;\n}\n", "// In-memory registry of dialed-in bridge connections, scoped to one\n// tenant (the plugin activates per tenant, closing over ctx.tenantId).\n//\n// A connection is identified by (userId, deviceId). Each holds the live\n// WebSocket, the advertised tool list, and a map of in-flight JSON-RPC\n// calls awaiting their reply. Everything is best-effort and self-heals:\n// a dropped socket removes the connection; a timed-out call rejects.\n\nimport type { WebSocket } from \"ws\";\nimport { MSG, type McpToolDescriptor, type RequestMsg } from \"./protocol.js\";\n\ninterface Pending {\n resolve: (result: unknown) => void;\n reject: (err: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n}\n\nexport interface BridgeConn {\n userId: string;\n deviceId: string;\n label: string;\n socket: WebSocket;\n tools: McpToolDescriptor[];\n connectedAt: number;\n pending: Map<string, Pending>;\n}\n\nconst CALL_TIMEOUT_MS = 60_000;\n\nexport class BridgeRegistry {\n // key = `${userId}\\u0000${deviceId}`\n private readonly conns = new Map<string, BridgeConn>();\n private seq = 0;\n\n private key(userId: string, deviceId: string): string {\n return `${userId}\\u0000${deviceId}`;\n }\n\n /** Register (or replace) a connection for a device. If the same\n * (user, device) reconnects, the old socket's pending calls are\n * rejected and it is replaced. */\n register(args: {\n userId: string;\n deviceId: string;\n label?: string;\n socket: WebSocket;\n tools: McpToolDescriptor[];\n }): BridgeConn {\n const k = this.key(args.userId, args.deviceId);\n const existing = this.conns.get(k);\n // Cancel any pending grace-period removal for this key \u2014\n // the bridge reconnected in time.\n const graceTimer = this.pendingRemoval.get(k);\n if (graceTimer) {\n clearTimeout(graceTimer);\n this.pendingRemoval.delete(k);\n }\n // Only drop pending calls if the socket truly changed AND the\n // old conn isn't stale (grace-period). Stale conns' pending\n // calls should be inherited by the new connection so in-flight\n // tool calls survive a brief reconnect.\n if (existing && existing.socket !== args.socket && !(existing as any)._stale) {\n this.dropPending(existing, \"replaced by a new connection\");\n }\n const conn: BridgeConn = {\n userId: args.userId,\n deviceId: args.deviceId,\n label: args.label || args.deviceId,\n socket: args.socket,\n tools: args.tools,\n connectedAt: Date.now(),\n pending: existing?.pending ?? new Map(),\n };\n this.conns.set(k, conn);\n return conn;\n }\n\n /** Grace period before fully removing a disconnected bridge.\n * If the bridge reconnects within this window (same user+device),\n * the new connection inherits the pending calls and tools stay\n * available without a gap. */\n private static REMOVE_GRACE_MS = 5000;\n private pendingRemoval = new Map<string, ReturnType<typeof setTimeout>>();\n\n /** Schedule removal of the connection that owns this socket.\n * A 5s grace period lets the bridge reconnect and re-register\n * before tools disappear and in-flight calls are dropped. */\n removeBySocket(socket: WebSocket): void {\n for (const [k, c] of this.conns) {\n if (c.socket !== socket) continue;\n // Mark the conn as stale so new tool calls won't use it,\n // but keep it in the map so a re-register can inherit pending.\n (c as any)._stale = true;\n // Cancel any earlier grace timer for this key.\n const prev = this.pendingRemoval.get(k);\n if (prev) clearTimeout(prev);\n const timer = setTimeout(() => {\n this.pendingRemoval.delete(k);\n // Only remove if the conn is still the stale one (not replaced\n // by a fresh re-register).\n const current = this.conns.get(k);\n if (current === c) {\n this.dropPending(c, \"connection closed (grace period expired)\");\n this.conns.delete(k);\n }\n }, BridgeRegistry.REMOVE_GRACE_MS);\n this.pendingRemoval.set(k, timer);\n }\n }\n\n remove(userId: string, deviceId: string): void {\n const k = this.key(userId, deviceId);\n const c = this.conns.get(k);\n if (c) {\n this.dropPending(c, \"unregistered\");\n this.conns.delete(k);\n }\n }\n\n /** All connections for a user (a user may run several devices). */\n forUser(userId: string): BridgeConn[] {\n return [...this.conns.values()].filter((c) => c.userId === userId && !(c as any)._stale);\n }\n\n /** Every connection in this (tenant-scoped) registry. */\n all(): BridgeConn[] {\n return [...this.conns.values()].filter((c) => !(c as any)._stale);\n }\n\n /** Resolve a pending JSON-RPC reply arriving from a bridge. */\n settle(socket: WebSocket, id: string, result: unknown, error?: { message: string }): void {\n for (const c of this.conns.values()) {\n if (c.socket !== socket) continue;\n const p = c.pending.get(id);\n if (!p) return;\n c.pending.delete(id);\n clearTimeout(p.timer);\n if (error) p.reject(new Error(error.message));\n else p.resolve(result);\n return;\n }\n }\n\n /** Send a JSON-RPC request to a specific connection and await the\n * reply (or timeout). */\n call(\n conn: BridgeConn,\n method: string,\n params?: Record<string, unknown>,\n timeoutMs?: number,\n signal?: AbortSignal,\n ): Promise<unknown> {\n const id = `${Date.now()}-${++this.seq}`;\n const req: RequestMsg = { type: MSG.request, id, method, params };\n const timeout = timeoutMs ?? CALL_TIMEOUT_MS;\n return new Promise<unknown>((resolve, reject) => {\n const timer = setTimeout(() => {\n conn.pending.delete(id);\n reject(new Error(`bridge call timed out after ${timeout}ms (${method})`));\n }, timeout);\n\n // Abort signal: cancel the pending call and send a cancel\n // notification to the bridge so it can kill the process.\n const onAbort = () => {\n conn.pending.delete(id);\n clearTimeout(timer);\n // Best-effort cancel notification to bridge\n try {\n conn.socket.send(JSON.stringify({\n type: MSG.request,\n id: `${id}-cancel`,\n method: \"$/cancel\",\n params: { requestId: id },\n }));\n } catch { /* socket may be gone */ }\n reject(new Error(\"bridge call aborted by user\"));\n };\n if (signal?.aborted) {\n reject(new Error(\"bridge call aborted by user\"));\n return;\n }\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n conn.pending.set(id, {\n resolve: (v) => { signal?.removeEventListener(\"abort\", onAbort); resolve(v); },\n reject: (e) => { signal?.removeEventListener(\"abort\", onAbort); reject(e); },\n timer,\n });\n try {\n conn.socket.send(JSON.stringify(req));\n } catch (err) {\n conn.pending.delete(id);\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onAbort);\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n });\n }\n\n private dropPending(conn: BridgeConn, reason: string): void {\n for (const p of conn.pending.values()) {\n clearTimeout(p.timer);\n p.reject(new Error(`bridge ${reason}`));\n }\n conn.pending.clear();\n }\n}\n", "// BridgeSandboxRunner \u2014 implements SandboxRunner by forwarding exec/file\n// operations to a connected local-bridge device.\n\nimport type {\n ExecRequest,\n ExecResult,\n RunOpencodeOpts,\n SandboxRunner,\n SandboxKind,\n SandboxStatus,\n} from \"@tianshu-ai/plugin-sdk\";\nimport type { BridgeRegistry } from \"./registry.js\";\n\nexport interface BridgeSandboxRunnerOpts {\n registry: BridgeRegistry;\n userId: string;\n deviceId: string;\n /** Server-side workspace path (for syncDown to write files). */\n serverWorkspacePath?: string;\n}\n\nexport class BridgeSandboxRunner implements SandboxRunner {\n readonly id = \"reverse-mcp.bridge-shell\";\n readonly kind: SandboxKind = \"shell\";\n\n private registry: BridgeRegistry;\n\n private _workspacePath: string;\n\n constructor(opts: BridgeSandboxRunnerOpts) {\n this.registry = opts.registry;\n this._workspacePath = opts.serverWorkspacePath ?? \"/tmp/tianshu-bridge-workspace\";\n }\n\n private getConn(userId?: string) {\n if (userId) {\n const conns = this.registry.forUser(userId);\n if (conns.length > 0) return conns[0];\n }\n const all = this.registry.all();\n return all[0] ?? null;\n }\n\n /** Wait for a bridge device to connect (up to timeoutMs). */\n private async waitForConn(userId?: string, timeoutMs = 30000): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n while (!this.getConn(userId)) {\n if (Date.now() >= deadline) return;\n await new Promise((r) => setTimeout(r, 1000));\n }\n }\n\n private async callBridgeTool(\n userId: string | undefined,\n name: string,\n args: Record<string, unknown>,\n callTimeoutMs?: number,\n ): Promise<Record<string, unknown>> {\n let conn = this.getConn(userId);\n if (!conn) {\n console.log(`[BridgeSandboxRunner] no bridge connected, waiting up to 30s...`);\n await this.waitForConn(userId, 30000);\n conn = this.getConn(userId);\n }\n if (!conn) {\n throw new Error(\n \"No bridge device connected after 30s wait. Start the Tianshu Bridge desktop app and try again.\",\n );\n }\n console.log(`[BridgeSandboxRunner] calling bridge tool \"${name}\" on device \"${conn.deviceId}\"`, JSON.stringify(args).slice(0, 300));\n const result = await this.registry.call(conn, \"tools/call\", {\n name,\n arguments: args,\n }, callTimeoutMs);\n return (result ?? {}) as Record<string, unknown>;\n }\n\n async exec(req: ExecRequest): Promise<ExecResult> {\n const t0 = Date.now();\n console.log(`[BridgeSandboxRunner] exec:`, {\n command: req.command?.slice(0, 200),\n workdir: req.workdir,\n userId: req.userId,\n timeoutMs: req.timeoutMs,\n });\n try {\n // Adapt command for non-Linux (macOS bridge):\n // 1. Replace GNU `timeout -s KILL N` (not available on macOS) \u2014\n // bridge's own timeout_ms handles it.\n // 2. Replace /sandbox/workspace paths with the shell root.\n let command = req.command;\n const timeoutMatch = command.match(/timeout\\s+(?:-s\\s+\\S+\\s+)?(\\d+)\\s+/);\n let bridgeTimeoutMs = req.timeoutMs;\n if (timeoutMatch) {\n // Extract the timeout seconds and use bridge's timeout_ms instead.\n if (!bridgeTimeoutMs) {\n bridgeTimeoutMs = parseInt(timeoutMatch[1], 10) * 1000;\n }\n command = command.replace(/timeout\\s+(?:-s\\s+\\S+\\s+)?\\d+\\s+/, \"\");\n }\n // /sandbox/workspace is the Docker sandbox path \u2014 not relevant on bridge.\n command = command.replace(/\\/sandbox\\/workspace\\//g, \"\");\n command = command.replace(/\\/sandbox\\/workspace/g, \".\");\n // GNU find's -printf is not available on macOS (BSD find).\n if (command.includes(\"-printf\")) {\n command = command.replace(/-printf\\s+'[^']*'(\\s*2>\\/dev\\/null)?/g, \"$1 | sed 's|^\\\\./||'\");\n }\n // zsh doesn't support bash's `read -r -d ''` (null-delimiter).\n // Replace -print0 with -print, and remove `-d ''` from read.\n command = command.replace(/-print0/g, \"-print\");\n command = command.replace(/read\\s+-r\\s+-d\\s+''/g, \"read -r\");\n command = command.replace(/read\\s+-r\\s+-d\\s+\"\"/g, \"read -r\");\n\n console.log(`[BridgeSandboxRunner] exec adapted command:`, command.slice(0, 300));\n // Pass timeout to both the bridge tool AND the registry call\n // so long-running commands (opencode) don't hit the 60s default.\n const callTimeout = bridgeTimeoutMs ? bridgeTimeoutMs + 30000 : undefined;\n const result = await this.callBridgeTool(req.userId, \"exec\", {\n command,\n workdir: req.workdir?.replace(/\\/sandbox\\/workspace\\/?/, \"\") || undefined,\n ...(bridgeTimeoutMs ? { timeout_ms: bridgeTimeoutMs } : {}),\n }, callTimeout);\n const durationMs = Date.now() - t0;\n const content = Array.isArray(result.content) ? result.content : [];\n const rawText = content.map((c: { text?: string }) => c.text ?? \"\").join(\"\\n\");\n console.log(`[BridgeSandboxRunner] exec raw response (first 500):`, rawText.slice(0, 500));\n try {\n const parsed = JSON.parse(rawText) as {\n ok?: boolean;\n exit_code?: number;\n stdout?: string;\n stderr?: string;\n duration_ms?: number;\n timed_out?: boolean;\n };\n const execResult: ExecResult = {\n stdout: parsed.stdout ?? \"\",\n stderr: parsed.stderr ?? \"\",\n exitCode: parsed.exit_code ?? 0,\n durationMs: parsed.duration_ms ?? durationMs,\n timedOut: parsed.timed_out ?? false,\n };\n console.log(`[BridgeSandboxRunner] exec parsed:`, {\n exitCode: execResult.exitCode,\n stdoutLen: execResult.stdout.length,\n stderrPreview: execResult.stderr.slice(0, 200),\n timedOut: execResult.timedOut,\n });\n return execResult;\n } catch {\n console.log(`[BridgeSandboxRunner] exec response not JSON, treating as stdout. len=${rawText.length}`);\n return { stdout: rawText, stderr: \"\", exitCode: 0, durationMs, timedOut: false };\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(`[BridgeSandboxRunner] exec ERROR:`, msg);\n return {\n stdout: \"\",\n stderr: msg,\n exitCode: 1,\n durationMs: Date.now() - t0,\n timedOut: msg.includes(\"timed out\"),\n };\n }\n }\n\n async readFile(relPath: string): Promise<string> {\n console.log(`[BridgeSandboxRunner] readFile:`, relPath);\n try {\n const result = await this.callBridgeTool(undefined, \"read_file\", { path: relPath });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n console.log(`[BridgeSandboxRunner] readFile error:`, parsed.error);\n return \"\";\n }\n const b64 = String(parsed.base64 ?? \"\");\n return b64 ? Buffer.from(b64, \"base64\").toString(\"utf-8\") : \"\";\n } catch (err) {\n console.error(`[BridgeSandboxRunner] readFile ERROR:`, err instanceof Error ? err.message : String(err));\n return \"\";\n }\n }\n\n async writeFile(relPath: string, content: string): Promise<void> {\n console.log(`[BridgeSandboxRunner] writeFile:`, relPath, `(${content.length} bytes)`);\n try {\n const b64 = Buffer.from(content).toString(\"base64\");\n const result = await this.callBridgeTool(undefined, \"write_file\", {\n path: relPath,\n base64: b64,\n });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n console.error(`[BridgeSandboxRunner] writeFile failed:`, parsed.error);\n }\n } catch (err) {\n console.error(`[BridgeSandboxRunner] writeFile ERROR:`, err instanceof Error ? err.message : String(err));\n }\n }\n\n /**\n * Run opencode using the user's LOCAL config (no tianshu proxy).\n * The bridge machine already has opencode installed + configured\n * with the user's own API keys.\n */\n async runOpencode(opts: RunOpencodeOpts): Promise<ExecResult> {\n const { workdir, prompt, resume, timeoutMs, userId } = opts;\n console.log(`[BridgeSandboxRunner] runOpencode:`, { workdir, promptLen: prompt.length, resume });\n\n // 1. Create workdir + write prompt\n await this.exec({ command: `mkdir -p ${JSON.stringify(workdir)}`, userId });\n // Write prompt via base64\n const b64 = Buffer.from(prompt).toString(\"base64\");\n await this.exec({\n command: `echo '${b64}' | base64 -d > ${JSON.stringify(workdir + \"/.prompt.txt\")}`,\n userId,\n });\n\n // 2. Run opencode with user's own config (no OPENCODE_CONFIG override)\n const cmd =\n `cd ${JSON.stringify(workdir)} && ` +\n `opencode run --auto --format json ` +\n (resume ? `--continue ` : ``) +\n `< .prompt.txt > oc.out 2> oc.err ; ` +\n `echo $? > .exitcode`;\n\n console.log(`[BridgeSandboxRunner] runOpencode cmd:`, cmd.slice(0, 200));\n await this.exec({\n command: cmd,\n userId,\n timeoutMs: timeoutMs ?? 1200000,\n });\n\n // Read the FULL oc.out via chunked reads (bridge exec truncates at 8KB).\n let stdout = \"\";\n let stderr = \"\";\n let exitCode = 0;\n console.log(`[BridgeSandboxRunner] runOpencode: reading oc.out...`);\n try {\n stdout = await this.readFile(`${workdir}/oc.out`);\n console.log(`[BridgeSandboxRunner] runOpencode: oc.out read OK, ${stdout.length} bytes`);\n } catch (e) { console.log(`[BridgeSandboxRunner] runOpencode: oc.out read FAILED`, e); }\n try {\n stderr = await this.readFile(`${workdir}/oc.err`);\n console.log(`[BridgeSandboxRunner] runOpencode: oc.err read OK, ${stderr.length} bytes`);\n } catch (e) { console.log(`[BridgeSandboxRunner] runOpencode: oc.err read FAILED`, e); }\n try {\n const rc = await this.readFile(`${workdir}/.exitcode`);\n exitCode = parseInt(rc.trim(), 10) || 0;\n console.log(`[BridgeSandboxRunner] runOpencode: exitCode=${exitCode}`);\n } catch { /* default 0 */ }\n\n const result: ExecResult = { stdout, stderr, exitCode, durationMs: 0, timedOut: false };\n\n // 3. Collect deliverables: simple cp (avoids find+while zsh issues).\n // Copy all non-scaffolding files from workdir into .deliverables/\n const collectCmd =\n `cd ${JSON.stringify(workdir)} && mkdir -p .deliverables && ` +\n `for f in $(find . -maxdepth 3 -type f ` +\n `! -path './.deliverables/*' ! -path './.oc-config/*' ! -path './.oc-data/*' ! -path './opencode/*' ` +\n `! -name opencode.json ! -name .prompt.txt ! -name oc.out ! -name oc.err ` +\n `! -name '*.pyc' 2>/dev/null); do ` +\n `cp \"$f\" .deliverables/ 2>/dev/null; done; echo DONE`;\n await this.exec({ command: collectCmd, userId, timeoutMs: 15000 });\n\n return result;\n }\n\n workspacePath(): string {\n return this._workspacePath;\n }\n\n /** Parse bridge tool response JSON from content blocks. */\n private parseBridgeResult(result: Record<string, unknown>): Record<string, unknown> {\n const content = Array.isArray(result.content)\n ? (result.content as { text?: string }[]).map((c) => c.text ?? \"\").join(\"\")\n : \"\";\n try {\n return JSON.parse(content) as Record<string, unknown>;\n } catch {\n return { ok: false, error: \"unparseable response\" };\n }\n }\n\n /**\n * Sync files from the bridge machine to the server workspace.\n * Uses read_file to pull each file's content, writes to server.\n */\n async syncDown(\n paths: string[] | Array<{ sandbox: string; host: string }>,\n ): Promise<{ downloaded: string[]; skipped: Array<{ relPath: string; reason: string }> }> {\n const pairs: Array<{ sandbox: string; host: string }> = Array.isArray(paths) && typeof paths[0] === \"string\"\n ? (paths as string[]).map((p) => ({ sandbox: p, host: p }))\n : (paths as Array<{ sandbox: string; host: string }>);\n const downloaded: string[] = [];\n const skipped: Array<{ relPath: string; reason: string }> = [];\n const fs = await import(\"node:fs\");\n const path = await import(\"node:path\");\n\n for (const { sandbox, host } of pairs) {\n try {\n const result = await this.callBridgeTool(undefined, \"read_file\", { path: sandbox });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n skipped.push({ relPath: host, reason: String(parsed.error ?? \"read_file failed\") });\n continue;\n }\n const b64 = String(parsed.base64 ?? \"\");\n if (!b64) { skipped.push({ relPath: host, reason: \"empty content\" }); continue; }\n\n const wsPath = this.workspacePath();\n const fullPath = path.join(wsPath, host);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, Buffer.from(b64, \"base64\"));\n downloaded.push(host);\n } catch (err) {\n skipped.push({ relPath: host, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n return { downloaded, skipped };\n }\n\n /**\n * Sync files from the server workspace to the bridge machine.\n * Uses write_file to push each file's content to the bridge.\n */\n async syncUp(\n hostRelPaths: string[],\n ): Promise<{ uploaded: string[]; skipped: Array<{ relPath: string; reason: string }> }> {\n const uploaded: string[] = [];\n const skipped: Array<{ relPath: string; reason: string }> = [];\n const fs = await import(\"node:fs\");\n const path = await import(\"node:path\");\n\n const wsPath = this.workspacePath();\n for (const rel of hostRelPaths) {\n try {\n const fullPath = path.join(wsPath, rel);\n const buf = fs.readFileSync(fullPath);\n const result = await this.callBridgeTool(undefined, \"write_file\", {\n path: rel,\n base64: buf.toString(\"base64\"),\n });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n skipped.push({ relPath: rel, reason: String(parsed.error ?? \"write_file failed\") });\n continue;\n }\n uploaded.push(rel);\n } catch (err) {\n skipped.push({ relPath: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n return { uploaded, skipped };\n }\n\n async reset(): Promise<void> {}\n async shutdown(): Promise<void> {}\n\n async status(): Promise<SandboxStatus> {\n const conns = this.registry.all();\n if (conns.length > 0) {\n return {\n state: \"running\",\n uptimeMs: conns[0].connectedAt\n ? Date.now() - new Date(conns[0].connectedAt).getTime()\n : 0,\n meta: { devices: conns.length },\n };\n }\n return { state: \"stopped\", uptimeMs: 0 };\n }\n}\n", "// A ToolsetProvider backed by the dialed-in bridge connections. The\n// host calls listTools() every agent turn, so tools appear/disappear as\n// bridges connect/disconnect with no plugin reactivation.\n//\n// Each bridge tool becomes an AgentTool named `bridge_<device>_<tool>`.\n// `available()` hides it from users who don't own that bridge; the\n// tenant scope is already fixed (this provider is created per-tenant).\n// `execute()` does the async JSON-RPC round-trip to the owning device.\n//\n// Screenshots / images: a bridge tool result may carry MCP image\n// blocks (base64). To keep the agent context small we DON'T inline\n// those bytes into the tool result. Instead we save each image under\n// the user's dir and return only its PATH + dimensions. The agent then\n// calls `bridge_view_image(path)` on demand \u2014 that tool inlines the\n// bytes as an ImageContent for the vision model, one turn, controlled.\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {\n AgentTool,\n AgentToolContext,\n ToolResult,\n ToolsetProvider,\n} from \"@tianshu-ai/plugin-sdk\";\nimport { okResult, errorResult } from \"@tianshu-ai/plugin-sdk\";\nimport type { BridgeRegistry, BridgeConn } from \"./registry.js\";\nimport type { McpToolDescriptor, ToolsCallResult } from \"./protocol.js\";\n\nconst SHOTS_DIR = \"bridge-screenshots\";\nconst EXT_BY_MIME: Record<string, string> = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/webp\": \"webp\",\n \"image/gif\": \"gif\",\n};\n\n/** Sanitise a device/tool id into a tool-name-safe token. */\nfunction slug(s: string): string {\n return s.replace(/[^a-zA-Z0-9]+/g, \"_\").replace(/^_+|_+$/g, \"\").toLowerCase();\n}\n\n/** Fully-qualified agent tool name for a bridge tool. */\nexport function toolName(deviceId: string, tool: string): string {\n return `bridge_${slug(deviceId)}_${slug(tool)}`;\n}\n\n/** Save any image blocks in a tools/call result under the user's dir,\n * returning their workspace-relative paths. Keeps bytes OUT of the\n * agent context. */\nfunction saveImageBlocks(\n res: ToolsCallResult,\n userHome: string,\n): string[] {\n const saved: string[] = [];\n const dir = path.join(userHome, SHOTS_DIR);\n for (const c of res.content ?? []) {\n if (c.type !== \"image\") continue;\n const data = typeof c.data === \"string\" ? c.data : \"\";\n if (!data) continue;\n const mime = typeof c.mimeType === \"string\" ? c.mimeType : \"image/png\";\n const ext = EXT_BY_MIME[mime] ?? \"png\";\n try {\n fs.mkdirSync(dir, { recursive: true });\n const rel = path.join(SHOTS_DIR, `${Date.now()}-${saved.length}.${ext}`);\n fs.writeFileSync(path.join(userHome, rel), Buffer.from(data, \"base64\"));\n saved.push(rel);\n } catch {\n /* best-effort; skip on write failure */\n }\n }\n return saved;\n}\n\n/** Flatten a tools/call result for the agent: text blocks joined, and\n * image blocks saved to disk with their PATHS surfaced (not bytes). */\nfunction renderResult(res: ToolsCallResult, userHome: string): ToolResult {\n const textParts = (res.content ?? [])\n .map((c) => (typeof c.text === \"string\" ? c.text : \"\"))\n .filter(Boolean);\n const savedImages = saveImageBlocks(res, userHome);\n let text = textParts.join(\"\\n\").trim();\n if (savedImages.length) {\n const note =\n `Saved ${savedImages.length} image(s) to your workspace:\\n` +\n savedImages.map((p) => ` - ${p}`).join(\"\\n\") +\n `\\nTo look at one, call bridge_view_image with its path.`;\n text = text ? `${text}\\n${note}` : note;\n }\n text = text || \"(no content)\";\n return res.isError ? errorResult(text, res) : okResult(text, res);\n}\n\nexport function makeBridgeToolset(args: {\n registry: BridgeRegistry;\n /** Resolve a user's workspace dir (from PluginContext.userHomeDir). */\n userHomeDir: (userId: string) => string;\n log: { info: (m: string) => void; warn: (m: string) => void };\n}): ToolsetProvider {\n const { registry, userHomeDir } = args;\n return {\n name: \"bridge\",\n listTools(): AgentTool[] {\n const tools: AgentTool[] = [];\n const conns = registry.all();\n // One view_image tool per user with a bridge (user-scoped via\n // available()), so the agent can inline a saved screenshot when\n // it actually needs to see it.\n const usersWithBridge = new Set(conns.map((c) => c.userId));\n for (const uid of usersWithBridge) {\n tools.push(buildViewImageTool(uid, userHomeDir));\n }\n for (const conn of conns) {\n for (const t of conn.tools) {\n tools.push(buildTool(registry, userHomeDir, conn.userId, conn.deviceId, t));\n }\n // Virtual sync tools \u2014 orchestrate read_file/write_file to copy\n // files between server workspace and bridge. Agent sees just paths.\n tools.push(buildSyncUpTool(registry, userHomeDir, conn.userId, conn.deviceId));\n tools.push(buildSyncDownTool(registry, userHomeDir, conn.userId, conn.deviceId));\n }\n return tools;\n },\n };\n}\n\nfunction buildTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n desc: McpToolDescriptor,\n): AgentTool {\n const parameters =\n desc.inputSchema && typeof desc.inputSchema === \"object\"\n ? (desc.inputSchema as Record<string, unknown>)\n : { type: \"object\", properties: {}, additionalProperties: true };\n return {\n schema: {\n name: toolName(deviceId, desc.name),\n description:\n (desc.description ?? `Local bridge tool \"${desc.name}\" on device \"${deviceId}\".`) +\n ` (Runs on the user's own machine via the Local Bridge device \"${deviceId}\".)`,\n parameters: parameters as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) {\n return errorResult(\"This bridge tool belongs to a different user.\");\n }\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) {\n return errorResult(\n `Local Bridge device \"${deviceId}\" is not connected. Start the bridge client and try again.`,\n );\n }\n try {\n const result = await registry.call(conn, \"tools/call\", {\n name: desc.name,\n arguments: rawArgs,\n }, undefined, ctx.signal);\n return renderResult((result ?? {}) as ToolsCallResult, userHomeDir(userId));\n } catch (err) {\n return errorResult(\n `Local Bridge call failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n },\n };\n}\n\n/** On-demand image viewer: read a previously-saved bridge image and\n * return it as an ImageContent so the vision model sees it THIS turn.\n * This is the only place bytes enter the agent context. */\nfunction buildViewImageTool(\n userId: string,\n userHomeDir: (userId: string) => string,\n): AgentTool {\n return {\n schema: {\n name: \"bridge_view_image\",\n description:\n \"Look at an image the Local Bridge saved to your workspace (e.g. a browser screenshot). \" +\n \"Pass the workspace-relative path returned by a bridge tool (like bridge-screenshots/....png). \" +\n \"The image is shown to you for this turn only.\",\n parameters: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: \"Workspace-relative path of the saved image, e.g. bridge-screenshots/1720000000000-0.png\",\n },\n },\n required: [\"path\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"Not your bridge image.\");\n const rel = String(rawArgs.path ?? \"\").trim();\n // Path-safety: must stay under the user's SHOTS_DIR.\n const home = userHomeDir(userId);\n const abs = path.resolve(home, rel);\n const shotsRoot = path.resolve(home, SHOTS_DIR);\n if (!abs.startsWith(shotsRoot + path.sep)) {\n return errorResult(`Path must be under ${SHOTS_DIR}/. Got: ${rel}`);\n }\n let buf: Buffer;\n try {\n buf = fs.readFileSync(abs);\n } catch {\n return errorResult(`Image not found: ${rel}`);\n }\n const ext = path.extname(abs).slice(1).toLowerCase();\n const mimeType =\n ext === \"jpg\" || ext === \"jpeg\" ? \"image/jpeg\" : ext === \"webp\" ? \"image/webp\" : ext === \"gif\" ? \"image/gif\" : \"image/png\";\n return {\n ok: true,\n text: `Showing ${rel}.`,\n images: [{ base64: buf.toString(\"base64\"), mimeType }],\n };\n },\n };\n}\n\n// \u2500\u2500\u2500 virtual sync tools (server-side orchestration) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Helper: call a bridge tool and parse the JSON result. */\nasync function callBridgeAndParse(\n registry: BridgeRegistry,\n conn: BridgeConn,\n toolName: string,\n args: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const result = await registry.call(conn, \"tools/call\", { name: toolName, arguments: args });\n const res = (result ?? {}) as ToolsCallResult;\n const text = (res.content ?? []).map((c) => (typeof c.text === \"string\" ? c.text : \"\")).filter(Boolean).join(\"\\n\");\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch {\n return { ok: false, error: \"unparseable bridge response\" };\n }\n}\n\n/**\n * sync_up: copy files from bridge \u2192 server workspace.\n * Agent gives paths, toolset calls bridge read_file for each,\n * writes content to server workspace. Agent sees just synced paths.\n */\nfunction buildSyncUpTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n): AgentTool {\n return {\n schema: {\n name: toolName(deviceId, \"sync_up\"),\n description:\n \"Copy files from the bridge machine to the server workspace (bridge \u2192 server). \" +\n \"Provide relative paths on the bridge; files are copied to the server workspace at the same paths. \" +\n `(Runs via Local Bridge device \"${deviceId}\".)`,\n parameters: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n description: \"File paths on the bridge to copy to the server workspace.\",\n },\n },\n required: [\"paths\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"This bridge tool belongs to a different user.\");\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) return errorResult(`Local Bridge device \"${deviceId}\" is not connected.`);\n\n const paths = Array.isArray(rawArgs.paths) ? rawArgs.paths.map(String) : [];\n if (paths.length === 0) return errorResult(\"paths is required and must be non-empty.\");\n\n const home = userHomeDir(userId);\n const synced: string[] = [];\n const failed: Array<{ path: string; reason: string }> = [];\n\n for (const rel of paths) {\n try {\n const parsed = await callBridgeAndParse(registry, conn, \"read_file\", { path: rel });\n if (!parsed.ok) {\n failed.push({ path: rel, reason: String(parsed.error ?? \"read_file failed\") });\n continue;\n }\n const b64 = String(parsed.base64 ?? \"\");\n if (!b64) { failed.push({ path: rel, reason: \"empty content\" }); continue; }\n const abs = path.join(home, rel);\n fs.mkdirSync(path.dirname(abs), { recursive: true });\n fs.writeFileSync(abs, Buffer.from(b64, \"base64\"));\n synced.push(rel);\n } catch (err) {\n failed.push({ path: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n\n const text = failed.length === 0\n ? `Synced ${synced.length} file(s) from bridge to server: ${synced.join(\", \")}`\n : `Synced ${synced.length}, failed ${failed.length}: ${failed.map((f) => `${f.path} (${f.reason})`).join(\", \")}`;\n return failed.length === 0 ? okResult(text) : errorResult(text);\n },\n };\n}\n\n/**\n * sync_down: copy files from server workspace \u2192 bridge.\n * Agent gives paths, toolset reads from server workspace,\n * calls bridge write_file for each. Agent sees just synced paths.\n */\nfunction buildSyncDownTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n): AgentTool {\n return {\n schema: {\n name: toolName(deviceId, \"sync_down\"),\n description:\n \"Copy files from the server workspace to the bridge machine (server \u2192 bridge). \" +\n \"Provide relative paths in the server workspace; files are copied to the bridge at the same paths. \" +\n `(Runs via Local Bridge device \"${deviceId}\".)`,\n parameters: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n description: \"File paths in the server workspace to copy to the bridge.\",\n },\n },\n required: [\"paths\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"This bridge tool belongs to a different user.\");\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) return errorResult(`Local Bridge device \"${deviceId}\" is not connected.`);\n\n const paths = Array.isArray(rawArgs.paths) ? rawArgs.paths.map(String) : [];\n if (paths.length === 0) return errorResult(\"paths is required and must be non-empty.\");\n\n const home = userHomeDir(userId);\n const synced: string[] = [];\n const failed: Array<{ path: string; reason: string }> = [];\n\n for (const rel of paths) {\n try {\n const abs = path.join(home, rel);\n const buf = fs.readFileSync(abs);\n const parsed = await callBridgeAndParse(registry, conn, \"write_file\", {\n path: rel,\n base64: buf.toString(\"base64\"),\n });\n if (!parsed.ok) {\n failed.push({ path: rel, reason: String(parsed.error ?? \"write_file failed\") });\n continue;\n }\n synced.push(rel);\n } catch (err) {\n failed.push({ path: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n\n const text = failed.length === 0\n ? `Synced ${synced.length} file(s) from server to bridge: ${synced.join(\", \")}`\n : `Synced ${synced.length}, failed ${failed.length}: ${failed.map((f) => `${f.path} (${f.reason})`).join(\", \")}`;\n return failed.length === 0 ? okResult(text) : errorResult(text);\n },\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// reverse-mcp plugin \u2014 server side.\n//\n// A bridge client connects to the existing authenticated chat\n// WebSocket (`/ws`) with `Authorization: Bearer <token>`, so the host's\n// identity resolver chain has already established (tenantId, userId) and\n// stamped `userId` on the socket. The client then sends\n// `reverse_mcp_register` advertising the tools it can run locally; the\n// agent calls them via a ToolsetProvider that does a JSON-RPC round-trip\n// back over the same socket (`reverse_mcp_request` / `_response`).\n//\n// This is route 1 (reuse /ws) + scheme 1a (Bearer session token): zero\n// new endpoints, auth reused. The envelope is a thin wrapper around\n// standard MCP JSON-RPC so it can later move to a dedicated endpoint.\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {\n PluginContext,\n PluginServerExports,\n PluginServerModule,\n PluginRouteHandler,\n PluginWsHandler,\n BridgeTokenCapability,\n} from \"@tianshu-ai/plugin-sdk\";\nimport type { WebSocket } from \"ws\";\nimport { BridgeRegistry } from \"./registry.js\";\nimport { BridgeSandboxRunner } from \"./bridge-sandbox-runner.js\";\nimport { makeBridgeToolset } from \"./toolset.js\";\nimport {\n MSG,\n type McpToolDescriptor,\n type RegisterMsg,\n type ResponseMsg,\n} from \"./protocol.js\";\n\n/** Read the identity the host stamped on the chat socket. */\nfunction socketUserId(socket: WebSocket): string {\n return (socket as unknown as { userId?: string }).userId ?? \"\";\n}\n\n// Bridge connections are live WebSockets held in memory, keyed to the\n// socket. The plugin re-activates whenever the tenant's plugin set is\n// invalidated (any enable/disable/config PATCH, plugins refresh, etc.),\n// which used to create a FRESH empty BridgeRegistry each time \u2014 so an\n// already-connected bridge (registered into the old instance) became\n// invisible to the new toolset + /connections route, even though the\n// socket was still open and re-registering. Key the registry by tenant\n// at module scope so it SURVIVES re-activation and the live connections\n// (and their tool lists) persist. Cleared only when the process exits.\nconst registriesByTenant = new Map<string, BridgeRegistry>();\n\n// Heartbeat dedup for `bridge registered` log lines. Keyed by\n// `${userId}|${deviceId}|${toolCount}` \u2014 same tuple within the\n// window collapses to a single announcement. See the callsite\n// below for the full motivation.\nconst registerAnnounceCache = new Map<string, number>();\nconst REGISTER_DEDUP_MS = 60_000;\n\nfunction registryForTenant(tenantId: string): BridgeRegistry {\n let reg = registriesByTenant.get(tenantId);\n if (!reg) {\n reg = new BridgeRegistry();\n registriesByTenant.set(tenantId, reg);\n }\n return reg;\n}\n\nconst plugin: PluginServerModule = {\n activate(ctx: PluginContext): PluginServerExports {\n // Reused across re-activations so live bridge connections aren't\n // orphaned when the tenant's plugin registry is invalidated.\n const registry = registryForTenant(ctx.tenantId);\n\n // client \u2192 server: register a device + its tools.\n const onRegister: PluginWsHandler = (msg, socket) => {\n const userId = socketUserId(socket);\n if (!userId) {\n socket.send(\n JSON.stringify({ type: MSG.registered, ok: false, error: \"no user identity on socket\" }),\n );\n return;\n }\n const m = msg as unknown as RegisterMsg;\n const deviceId = typeof m.deviceId === \"string\" && m.deviceId ? m.deviceId : \"default\";\n const tools: McpToolDescriptor[] = Array.isArray(m.tools)\n ? m.tools.filter((t) => t && typeof t.name === \"string\")\n : [];\n registry.register({ userId, deviceId, label: m.label, socket, tools });\n // Dedup: bridge clients re-register every ~20s as a heartbeat.\n // Without gating this log the file fills with thousands of\n // identical `bridge registered` lines and drowns real events\n // (Yu, 2026-09-14: the 24:05 abort log had ~40 register lines\n // in the crash window). Only announce the first arrival of\n // each (user, device, toolCount) combo per REGISTER_DEDUP_MS.\n // A change in toolCount always re-announces so \"device gained\n // 3 tools\" is still visible.\n const dedupKey = `${userId}|${deviceId}|${tools.length}`;\n const nowMs = Date.now();\n const lastAnnounced = registerAnnounceCache.get(dedupKey);\n if (lastAnnounced == null || nowMs - lastAnnounced > REGISTER_DEDUP_MS) {\n registerAnnounceCache.set(dedupKey, nowMs);\n // Silenced: heartbeat re-registers are deduped to once per\n // REGISTER_DEDUP_MS, but even that is noisy at info level and\n // PluginLogger has no debug(). First-connect is visible via\n // the connections_changed broadcast + UI badge update.\n }\n // Note: the deduped re-registrations are intentionally silent.\n // If you ever need to prove the heartbeat is firing at expected\n // cadence, either flip REGISTER_DEDUP_MS down or use the\n // per-connection activity from tool_activity events instead.\n socket.send(JSON.stringify({ type: MSG.registered, ok: true, deviceId }));\n // Let panels refresh.\n ctx.broadcast(\"connections_changed\", { userId });\n };\n\n // client \u2192 server: a JSON-RPC reply to a request we sent.\n const onResponse: PluginWsHandler = (msg, socket) => {\n const m = msg as unknown as ResponseMsg;\n if (typeof m.id !== \"string\") return;\n registry.settle(socket, m.id, m.result, m.error);\n };\n\n // client \u2192 server: graceful unregister.\n const onUnregister: PluginWsHandler = (_msg, socket) => {\n registry.removeBySocket(socket);\n ctx.broadcast(\"connections_changed\", {});\n };\n\n // Clean up when a bridge socket drops. wsHandlers don't get a\n // close event, so we can't hook it here directly; instead the\n // registry.settle/forUser paths tolerate dead sockets, and a\n // dropped socket is pruned on the next failed send. (A future\n // core hook can call removeBySocket on close.)\n\n const toolset = makeBridgeToolset({\n registry,\n userHomeDir: (uid: string) => ctx.userHomeDir(uid),\n log: ctx.log,\n });\n\n // Panel/debug: list this user's connected devices + tool counts.\n const listConnections: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n const conns = registry.forUser(userId).map((c) => ({\n deviceId: c.deviceId,\n label: c.label,\n connectedAt: c.connectedAt,\n tools: c.tools.map((t) => t.name),\n }));\n res.json({ connections: conns });\n };\n\n // Panel: everything needed to start a local bridge \u2014 the WS URL,\n // a freshly-minted connection token, and a ready-to-run command.\n const connectInfo: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n // Derive the public wss:// URL from the incoming request so it\n // works behind a tunnel/proxy (Cloudflare sets X-Forwarded-*).\n const fwdProto =\n (req.headers[\"x-forwarded-proto\"] as string | undefined)?.split(\",\")[0]?.trim();\n const host =\n (req.headers[\"x-forwarded-host\"] as string | undefined) ||\n (req.headers.host as string | undefined) ||\n \"localhost\";\n const secure = fwdProto ? fwdProto === \"https\" : false;\n const wsScheme = secure ? \"wss\" : \"ws\";\n const wsUrl = `${wsScheme}://${host}/ws`;\n\n const minter = ctx.capabilities.get<BridgeTokenCapability>(\"host.bridgeToken\");\n const grant = minter?.mint(userId) ?? {\n token: \"\",\n authEnabled: false,\n expiresAt: null,\n };\n const tokenArg = grant.authEnabled ? ` --token ${grant.token}` : \"\";\n // Base command (no capability flags). The panel appends the\n // capability/engine flags the user selects (e.g.\n // `--browser-engine stealth`), so capability exposure is chosen\n // by the user on their own machine, not toggled remotely.\n const baseCommand = `npx @tianshu-ai/local-bridge --server ${wsUrl}${tokenArg}`;\n res.json({\n wsUrl,\n authEnabled: grant.authEnabled,\n token: grant.token,\n expiresAt: grant.expiresAt,\n baseCommand,\n command: baseCommand,\n desktopDownload: \"https://github.com/tianshu-ai/bridge-desktop/releases/latest\",\n });\n };\n\n // Serve bridge screenshot files so the frontend can render <img>.\n // GET /api/p/reverse-mcp/screenshot?path=bridge-screenshots/123.png\n const serveScreenshot: PluginRouteHandler = (req, res) => {\n const userId = (req as { ctx?: { userId?: string } }).ctx?.userId ?? \"\";\n if (!userId) return void res.status(401).json({ error: \"no user context\" });\n const relPath = req.query.path as string | undefined;\n if (!relPath || !relPath.startsWith(\"bridge-screenshots/\")) {\n return void res.status(400).json({ error: \"invalid path\" });\n }\n // Prevent path traversal.\n if (relPath.includes(\"..\") || relPath.includes(\"//\")) {\n return void res.status(400).json({ error: \"invalid path\" });\n }\n const userHome = ctx.userHomeDir(userId);\n const fullPath = path.join(userHome, relPath);\n if (!fs.existsSync(fullPath)) {\n return void res.status(404).json({ error: \"not found\" });\n }\n const ext = path.extname(fullPath).toLowerCase();\n const mime: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".webp\": \"image/webp\",\n \".gif\": \"image/gif\",\n };\n res.setHeader(\"Content-Type\", mime[ext] || \"application/octet-stream\");\n res.setHeader(\"Cache-Control\", \"private, max-age=3600\");\n fs.createReadStream(fullPath).pipe(res);\n };\n\n // Bridge-backed sandbox.shell runner. When the user has a bridge\n // connected, exec/readFile/writeFile go to their local machine.\n // The runner dynamically picks the first connected device for\n // the requesting user.\n const bridgeShellRunner = new BridgeSandboxRunner({\n registry,\n userId: \"__dynamic__\",\n deviceId: \"__first__\",\n serverWorkspacePath: ctx.workspaceDir,\n });\n\n ctx.log.info(\"reverse-mcp activated\");\n return {\n wsHandlers: {\n onRegister,\n onResponse,\n onUnregister,\n },\n toolsetProviders: {\n BridgeToolset: toolset,\n },\n routes: {\n listConnections,\n connectInfo,\n serveScreenshot,\n },\n sandboxes: {\n bridgeShell: bridgeShellRunner,\n },\n };\n },\n async deactivate() {\n /* connections are per-socket; they drop when the sockets close */\n },\n};\n\nexport const activate = plugin.activate.bind(plugin);\nexport const deactivate = plugin.deactivate?.bind(plugin);\nexport default plugin;\n", "// Reverse-MCP wire protocol.\n//\n// Transport: the existing authenticated chat WebSocket (`/ws`). The\n// bridge client connects with `Authorization: Bearer <token>` so the\n// host's identity resolver chain already knows (tenantId, userId) \u2014 we\n// never invent our own auth here. On top of that channel we exchange a\n// THIN envelope around standard MCP JSON-RPC, so the same payloads can\n// later move to a dedicated endpoint (route 2) unchanged.\n//\n// Direction is inverted vs. normal MCP: the SERVER is the JSON-RPC\n// client (sends tools/list, tools/call), the dialed-in BRIDGE is the\n// JSON-RPC server (executes locally, replies).\n//\n// Message types (all ride the shared /ws channel):\n// client \u2192 server:\n// reverse_mcp_register { deviceId, tools: McpToolDescriptor[] }\n// reverse_mcp_response { id, result? , error? } // JSON-RPC reply\n// reverse_mcp_unregister { } // graceful bye\n// server \u2192 client:\n// reverse_mcp_request { id, method, params } // JSON-RPC call\n// reverse_mcp_registered { ok, deviceId } // ack\n\nexport const MSG = {\n register: \"reverse_mcp_register\",\n unregister: \"reverse_mcp_unregister\",\n response: \"reverse_mcp_response\",\n request: \"reverse_mcp_request\",\n registered: \"reverse_mcp_registered\",\n} as const;\n\n/** A tool the bridge advertises at register time. Mirrors the MCP\n * `Tool` shape (name + description + JSON-schema input). */\nexport interface McpToolDescriptor {\n name: string;\n description?: string;\n inputSchema?: Record<string, unknown>;\n}\n\n/** client \u2192 server: announce this device + the tools it offers. */\nexport interface RegisterMsg {\n type: typeof MSG.register;\n deviceId: string;\n /** Human label for the device, shown in the panel. */\n label?: string;\n tools: McpToolDescriptor[];\n}\n\n/** server \u2192 client: a JSON-RPC request to execute locally. */\nexport interface RequestMsg {\n type: typeof MSG.request;\n id: string;\n method: string; // e.g. \"tools/call\"\n params?: Record<string, unknown>;\n}\n\n/** client \u2192 server: a JSON-RPC reply. */\nexport interface ResponseMsg {\n type: typeof MSG.response;\n id: string;\n result?: unknown;\n error?: { code: number; message: string };\n}\n\n/** Standard MCP `tools/call` params. */\nexport interface ToolsCallParams {\n name: string;\n arguments?: Record<string, unknown>;\n}\n\n/** Standard MCP `tools/call` result: a list of content blocks. We\n * flatten text blocks for the agent. */\nexport interface ToolsCallResult {\n content?: Array<{ type: string; text?: string; [k: string]: unknown }>;\n isError?: boolean;\n}\n", "// In-memory registry of dialed-in bridge connections, scoped to one\n// tenant (the plugin activates per tenant, closing over ctx.tenantId).\n//\n// A connection is identified by (userId, deviceId). Each holds the live\n// WebSocket, the advertised tool list, and a map of in-flight JSON-RPC\n// calls awaiting their reply. Everything is best-effort and self-heals:\n// a dropped socket removes the connection; a timed-out call rejects.\n\nimport type { WebSocket } from \"ws\";\nimport { MSG, type McpToolDescriptor, type RequestMsg } from \"./protocol.js\";\n\ninterface Pending {\n resolve: (result: unknown) => void;\n reject: (err: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n}\n\nexport interface BridgeConn {\n userId: string;\n deviceId: string;\n label: string;\n socket: WebSocket;\n tools: McpToolDescriptor[];\n connectedAt: number;\n pending: Map<string, Pending>;\n}\n\nconst CALL_TIMEOUT_MS = 60_000;\n\nexport class BridgeRegistry {\n // key = `${userId}\\u0000${deviceId}`\n private readonly conns = new Map<string, BridgeConn>();\n private seq = 0;\n\n private key(userId: string, deviceId: string): string {\n return `${userId}\\u0000${deviceId}`;\n }\n\n /** Register (or replace) a connection for a device. If the same\n * (user, device) reconnects, the old socket's pending calls are\n * rejected and it is replaced. */\n register(args: {\n userId: string;\n deviceId: string;\n label?: string;\n socket: WebSocket;\n tools: McpToolDescriptor[];\n }): BridgeConn {\n const k = this.key(args.userId, args.deviceId);\n const existing = this.conns.get(k);\n // Cancel any pending grace-period removal for this key \u2014\n // the bridge reconnected in time.\n const graceTimer = this.pendingRemoval.get(k);\n if (graceTimer) {\n clearTimeout(graceTimer);\n this.pendingRemoval.delete(k);\n }\n // Only drop pending calls if the socket truly changed AND the\n // old conn isn't stale (grace-period). Stale conns' pending\n // calls should be inherited by the new connection so in-flight\n // tool calls survive a brief reconnect.\n if (existing && existing.socket !== args.socket && !(existing as any)._stale) {\n this.dropPending(existing, \"replaced by a new connection\");\n }\n const conn: BridgeConn = {\n userId: args.userId,\n deviceId: args.deviceId,\n label: args.label || args.deviceId,\n socket: args.socket,\n tools: args.tools,\n connectedAt: Date.now(),\n pending: existing?.pending ?? new Map(),\n };\n this.conns.set(k, conn);\n return conn;\n }\n\n /** Grace period before fully removing a disconnected bridge.\n * If the bridge reconnects within this window (same user+device),\n * the new connection inherits the pending calls and tools stay\n * available without a gap. */\n private static REMOVE_GRACE_MS = 5000;\n private pendingRemoval = new Map<string, ReturnType<typeof setTimeout>>();\n\n /** Schedule removal of the connection that owns this socket.\n * A 5s grace period lets the bridge reconnect and re-register\n * before tools disappear and in-flight calls are dropped. */\n removeBySocket(socket: WebSocket): void {\n for (const [k, c] of this.conns) {\n if (c.socket !== socket) continue;\n // Mark the conn as stale so new tool calls won't use it,\n // but keep it in the map so a re-register can inherit pending.\n (c as any)._stale = true;\n // Cancel any earlier grace timer for this key.\n const prev = this.pendingRemoval.get(k);\n if (prev) clearTimeout(prev);\n const timer = setTimeout(() => {\n this.pendingRemoval.delete(k);\n // Only remove if the conn is still the stale one (not replaced\n // by a fresh re-register).\n const current = this.conns.get(k);\n if (current === c) {\n this.dropPending(c, \"connection closed (grace period expired)\");\n this.conns.delete(k);\n }\n }, BridgeRegistry.REMOVE_GRACE_MS);\n this.pendingRemoval.set(k, timer);\n }\n }\n\n remove(userId: string, deviceId: string): void {\n const k = this.key(userId, deviceId);\n const c = this.conns.get(k);\n if (c) {\n this.dropPending(c, \"unregistered\");\n this.conns.delete(k);\n }\n }\n\n /** All connections for a user (a user may run several devices). */\n forUser(userId: string): BridgeConn[] {\n return [...this.conns.values()].filter((c) => c.userId === userId && !(c as any)._stale);\n }\n\n /** Every connection in this (tenant-scoped) registry. */\n all(): BridgeConn[] {\n return [...this.conns.values()].filter((c) => !(c as any)._stale);\n }\n\n /** Resolve a pending JSON-RPC reply arriving from a bridge. */\n settle(socket: WebSocket, id: string, result: unknown, error?: { message: string }): void {\n for (const c of this.conns.values()) {\n if (c.socket !== socket) continue;\n const p = c.pending.get(id);\n if (!p) return;\n c.pending.delete(id);\n clearTimeout(p.timer);\n if (error) p.reject(new Error(error.message));\n else p.resolve(result);\n return;\n }\n }\n\n /** Send a JSON-RPC request to a specific connection and await the\n * reply (or timeout). */\n call(\n conn: BridgeConn,\n method: string,\n params?: Record<string, unknown>,\n timeoutMs?: number,\n signal?: AbortSignal,\n ): Promise<unknown> {\n const id = `${Date.now()}-${++this.seq}`;\n const req: RequestMsg = { type: MSG.request, id, method, params };\n const timeout = timeoutMs ?? CALL_TIMEOUT_MS;\n return new Promise<unknown>((resolve, reject) => {\n const timer = setTimeout(() => {\n conn.pending.delete(id);\n reject(new Error(`bridge call timed out after ${timeout}ms (${method})`));\n }, timeout);\n\n // Abort signal: cancel the pending call and send a cancel\n // notification to the bridge so it can kill the process.\n const onAbort = () => {\n conn.pending.delete(id);\n clearTimeout(timer);\n // Best-effort cancel notification to bridge\n try {\n conn.socket.send(JSON.stringify({\n type: MSG.request,\n id: `${id}-cancel`,\n method: \"$/cancel\",\n params: { requestId: id },\n }));\n } catch { /* socket may be gone */ }\n reject(new Error(\"bridge call aborted by user\"));\n };\n if (signal?.aborted) {\n reject(new Error(\"bridge call aborted by user\"));\n return;\n }\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n conn.pending.set(id, {\n resolve: (v) => { signal?.removeEventListener(\"abort\", onAbort); resolve(v); },\n reject: (e) => { signal?.removeEventListener(\"abort\", onAbort); reject(e); },\n timer,\n });\n try {\n conn.socket.send(JSON.stringify(req));\n } catch (err) {\n conn.pending.delete(id);\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onAbort);\n reject(err instanceof Error ? err : new Error(String(err)));\n }\n });\n }\n\n private dropPending(conn: BridgeConn, reason: string): void {\n for (const p of conn.pending.values()) {\n clearTimeout(p.timer);\n p.reject(new Error(`bridge ${reason}`));\n }\n conn.pending.clear();\n }\n}\n", "// BridgeSandboxRunner \u2014 implements SandboxRunner by forwarding exec/file\n// operations to a connected local-bridge device.\n\nimport type {\n ExecRequest,\n ExecResult,\n RunOpencodeOpts,\n SandboxRunner,\n SandboxKind,\n SandboxStatus,\n} from \"@tianshu-ai/plugin-sdk\";\nimport type { BridgeRegistry } from \"./registry.js\";\n\nexport interface BridgeSandboxRunnerOpts {\n registry: BridgeRegistry;\n userId: string;\n deviceId: string;\n /** Server-side workspace path (for syncDown to write files). */\n serverWorkspacePath?: string;\n}\n\nexport class BridgeSandboxRunner implements SandboxRunner {\n readonly id = \"reverse-mcp.bridge-shell\";\n readonly kind: SandboxKind = \"shell\";\n\n private registry: BridgeRegistry;\n\n private _workspacePath: string;\n\n constructor(opts: BridgeSandboxRunnerOpts) {\n this.registry = opts.registry;\n this._workspacePath = opts.serverWorkspacePath ?? \"/tmp/tianshu-bridge-workspace\";\n }\n\n private getConn(userId?: string) {\n if (userId) {\n const conns = this.registry.forUser(userId);\n if (conns.length > 0) return conns[0];\n }\n const all = this.registry.all();\n return all[0] ?? null;\n }\n\n /** Wait for a bridge device to connect (up to timeoutMs). */\n private async waitForConn(userId?: string, timeoutMs = 30000): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n while (!this.getConn(userId)) {\n if (Date.now() >= deadline) return;\n await new Promise((r) => setTimeout(r, 1000));\n }\n }\n\n private async callBridgeTool(\n userId: string | undefined,\n name: string,\n args: Record<string, unknown>,\n callTimeoutMs?: number,\n ): Promise<Record<string, unknown>> {\n let conn = this.getConn(userId);\n if (!conn) {\n console.log(`[BridgeSandboxRunner] no bridge connected, waiting up to 30s...`);\n await this.waitForConn(userId, 30000);\n conn = this.getConn(userId);\n }\n if (!conn) {\n throw new Error(\n \"No bridge device connected after 30s wait. Start the Tianshu Bridge desktop app and try again.\",\n );\n }\n console.log(`[BridgeSandboxRunner] calling bridge tool \"${name}\" on device \"${conn.deviceId}\"`, JSON.stringify(args).slice(0, 300));\n const result = await this.registry.call(conn, \"tools/call\", {\n name,\n arguments: args,\n }, callTimeoutMs);\n return (result ?? {}) as Record<string, unknown>;\n }\n\n async exec(req: ExecRequest): Promise<ExecResult> {\n const t0 = Date.now();\n console.log(`[BridgeSandboxRunner] exec:`, {\n command: req.command?.slice(0, 200),\n workdir: req.workdir,\n userId: req.userId,\n timeoutMs: req.timeoutMs,\n });\n try {\n // Adapt command for non-Linux (macOS bridge):\n // 1. Replace GNU `timeout -s KILL N` (not available on macOS) \u2014\n // bridge's own timeout_ms handles it.\n // 2. Replace /sandbox/workspace paths with the shell root.\n let command = req.command;\n const timeoutMatch = command.match(/timeout\\s+(?:-s\\s+\\S+\\s+)?(\\d+)\\s+/);\n let bridgeTimeoutMs = req.timeoutMs;\n if (timeoutMatch) {\n // Extract the timeout seconds and use bridge's timeout_ms instead.\n if (!bridgeTimeoutMs) {\n bridgeTimeoutMs = parseInt(timeoutMatch[1], 10) * 1000;\n }\n command = command.replace(/timeout\\s+(?:-s\\s+\\S+\\s+)?\\d+\\s+/, \"\");\n }\n // /sandbox/workspace is the Docker sandbox path \u2014 not relevant on bridge.\n command = command.replace(/\\/sandbox\\/workspace\\//g, \"\");\n command = command.replace(/\\/sandbox\\/workspace/g, \".\");\n // GNU find's -printf is not available on macOS (BSD find).\n if (command.includes(\"-printf\")) {\n command = command.replace(/-printf\\s+'[^']*'(\\s*2>\\/dev\\/null)?/g, \"$1 | sed 's|^\\\\./||'\");\n }\n // zsh doesn't support bash's `read -r -d ''` (null-delimiter).\n // Replace -print0 with -print, and remove `-d ''` from read.\n command = command.replace(/-print0/g, \"-print\");\n command = command.replace(/read\\s+-r\\s+-d\\s+''/g, \"read -r\");\n command = command.replace(/read\\s+-r\\s+-d\\s+\"\"/g, \"read -r\");\n\n console.log(`[BridgeSandboxRunner] exec adapted command:`, command.slice(0, 300));\n // Pass timeout to both the bridge tool AND the registry call\n // so long-running commands (opencode) don't hit the 60s default.\n const callTimeout = bridgeTimeoutMs ? bridgeTimeoutMs + 30000 : undefined;\n const result = await this.callBridgeTool(req.userId, \"exec\", {\n command,\n workdir: req.workdir?.replace(/\\/sandbox\\/workspace\\/?/, \"\") || undefined,\n ...(bridgeTimeoutMs ? { timeout_ms: bridgeTimeoutMs } : {}),\n }, callTimeout);\n const durationMs = Date.now() - t0;\n const content = Array.isArray(result.content) ? result.content : [];\n const rawText = content.map((c: { text?: string }) => c.text ?? \"\").join(\"\\n\");\n console.log(`[BridgeSandboxRunner] exec raw response (first 500):`, rawText.slice(0, 500));\n try {\n const parsed = JSON.parse(rawText) as {\n ok?: boolean;\n exit_code?: number;\n stdout?: string;\n stderr?: string;\n duration_ms?: number;\n timed_out?: boolean;\n };\n const execResult: ExecResult = {\n stdout: parsed.stdout ?? \"\",\n stderr: parsed.stderr ?? \"\",\n exitCode: parsed.exit_code ?? 0,\n durationMs: parsed.duration_ms ?? durationMs,\n timedOut: parsed.timed_out ?? false,\n };\n console.log(`[BridgeSandboxRunner] exec parsed:`, {\n exitCode: execResult.exitCode,\n stdoutLen: execResult.stdout.length,\n stderrPreview: execResult.stderr.slice(0, 200),\n timedOut: execResult.timedOut,\n });\n return execResult;\n } catch {\n console.log(`[BridgeSandboxRunner] exec response not JSON, treating as stdout. len=${rawText.length}`);\n return { stdout: rawText, stderr: \"\", exitCode: 0, durationMs, timedOut: false };\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(`[BridgeSandboxRunner] exec ERROR:`, msg);\n return {\n stdout: \"\",\n stderr: msg,\n exitCode: 1,\n durationMs: Date.now() - t0,\n timedOut: msg.includes(\"timed out\"),\n };\n }\n }\n\n async readFile(relPath: string): Promise<string> {\n console.log(`[BridgeSandboxRunner] readFile:`, relPath);\n try {\n const result = await this.callBridgeTool(undefined, \"read_file\", { path: relPath });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n console.log(`[BridgeSandboxRunner] readFile error:`, parsed.error);\n return \"\";\n }\n const b64 = String(parsed.base64 ?? \"\");\n return b64 ? Buffer.from(b64, \"base64\").toString(\"utf-8\") : \"\";\n } catch (err) {\n console.error(`[BridgeSandboxRunner] readFile ERROR:`, err instanceof Error ? err.message : String(err));\n return \"\";\n }\n }\n\n async writeFile(relPath: string, content: string): Promise<void> {\n console.log(`[BridgeSandboxRunner] writeFile:`, relPath, `(${content.length} bytes)`);\n try {\n const b64 = Buffer.from(content).toString(\"base64\");\n const result = await this.callBridgeTool(undefined, \"write_file\", {\n path: relPath,\n base64: b64,\n });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n console.error(`[BridgeSandboxRunner] writeFile failed:`, parsed.error);\n }\n } catch (err) {\n console.error(`[BridgeSandboxRunner] writeFile ERROR:`, err instanceof Error ? err.message : String(err));\n }\n }\n\n /**\n * Run opencode using the user's LOCAL config (no tianshu proxy).\n * The bridge machine already has opencode installed + configured\n * with the user's own API keys.\n */\n async runOpencode(opts: RunOpencodeOpts): Promise<ExecResult> {\n const { workdir, prompt, resume, timeoutMs, userId } = opts;\n console.log(`[BridgeSandboxRunner] runOpencode:`, { workdir, promptLen: prompt.length, resume });\n\n // 1. Create workdir + write prompt\n await this.exec({ command: `mkdir -p ${JSON.stringify(workdir)}`, userId });\n // Write prompt via base64\n const b64 = Buffer.from(prompt).toString(\"base64\");\n await this.exec({\n command: `echo '${b64}' | base64 -d > ${JSON.stringify(workdir + \"/.prompt.txt\")}`,\n userId,\n });\n\n // 2. Run opencode with user's own config (no OPENCODE_CONFIG override)\n const cmd =\n `cd ${JSON.stringify(workdir)} && ` +\n `opencode run --auto --format json ` +\n (resume ? `--continue ` : ``) +\n `< .prompt.txt > oc.out 2> oc.err ; ` +\n `echo $? > .exitcode`;\n\n console.log(`[BridgeSandboxRunner] runOpencode cmd:`, cmd.slice(0, 200));\n await this.exec({\n command: cmd,\n userId,\n timeoutMs: timeoutMs ?? 1200000,\n });\n\n // Read the FULL oc.out via chunked reads (bridge exec truncates at 8KB).\n let stdout = \"\";\n let stderr = \"\";\n let exitCode = 0;\n console.log(`[BridgeSandboxRunner] runOpencode: reading oc.out...`);\n try {\n stdout = await this.readFile(`${workdir}/oc.out`);\n console.log(`[BridgeSandboxRunner] runOpencode: oc.out read OK, ${stdout.length} bytes`);\n } catch (e) { console.log(`[BridgeSandboxRunner] runOpencode: oc.out read FAILED`, e); }\n try {\n stderr = await this.readFile(`${workdir}/oc.err`);\n console.log(`[BridgeSandboxRunner] runOpencode: oc.err read OK, ${stderr.length} bytes`);\n } catch (e) { console.log(`[BridgeSandboxRunner] runOpencode: oc.err read FAILED`, e); }\n try {\n const rc = await this.readFile(`${workdir}/.exitcode`);\n exitCode = parseInt(rc.trim(), 10) || 0;\n console.log(`[BridgeSandboxRunner] runOpencode: exitCode=${exitCode}`);\n } catch { /* default 0 */ }\n\n const result: ExecResult = { stdout, stderr, exitCode, durationMs: 0, timedOut: false };\n\n // 3. Collect deliverables: simple cp (avoids find+while zsh issues).\n // Copy all non-scaffolding files from workdir into .deliverables/\n const collectCmd =\n `cd ${JSON.stringify(workdir)} && mkdir -p .deliverables && ` +\n `for f in $(find . -maxdepth 3 -type f ` +\n `! -path './.deliverables/*' ! -path './.oc-config/*' ! -path './.oc-data/*' ! -path './opencode/*' ` +\n `! -name opencode.json ! -name .prompt.txt ! -name oc.out ! -name oc.err ` +\n `! -name '*.pyc' 2>/dev/null); do ` +\n `cp \"$f\" .deliverables/ 2>/dev/null; done; echo DONE`;\n await this.exec({ command: collectCmd, userId, timeoutMs: 15000 });\n\n return result;\n }\n\n workspacePath(): string {\n return this._workspacePath;\n }\n\n /** Parse bridge tool response JSON from content blocks. */\n private parseBridgeResult(result: Record<string, unknown>): Record<string, unknown> {\n const content = Array.isArray(result.content)\n ? (result.content as { text?: string }[]).map((c) => c.text ?? \"\").join(\"\")\n : \"\";\n try {\n return JSON.parse(content) as Record<string, unknown>;\n } catch {\n return { ok: false, error: \"unparseable response\" };\n }\n }\n\n /**\n * Sync files from the bridge machine to the server workspace.\n * Uses read_file to pull each file's content, writes to server.\n */\n async syncDown(\n paths: string[] | Array<{ sandbox: string; host: string }>,\n ): Promise<{ downloaded: string[]; skipped: Array<{ relPath: string; reason: string }> }> {\n const pairs: Array<{ sandbox: string; host: string }> = Array.isArray(paths) && typeof paths[0] === \"string\"\n ? (paths as string[]).map((p) => ({ sandbox: p, host: p }))\n : (paths as Array<{ sandbox: string; host: string }>);\n const downloaded: string[] = [];\n const skipped: Array<{ relPath: string; reason: string }> = [];\n const fs = await import(\"node:fs\");\n const path = await import(\"node:path\");\n\n for (const { sandbox, host } of pairs) {\n try {\n const result = await this.callBridgeTool(undefined, \"read_file\", { path: sandbox });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n skipped.push({ relPath: host, reason: String(parsed.error ?? \"read_file failed\") });\n continue;\n }\n const b64 = String(parsed.base64 ?? \"\");\n if (!b64) { skipped.push({ relPath: host, reason: \"empty content\" }); continue; }\n\n const wsPath = this.workspacePath();\n const fullPath = path.join(wsPath, host);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, Buffer.from(b64, \"base64\"));\n downloaded.push(host);\n } catch (err) {\n skipped.push({ relPath: host, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n return { downloaded, skipped };\n }\n\n /**\n * Sync files from the server workspace to the bridge machine.\n * Uses write_file to push each file's content to the bridge.\n */\n async syncUp(\n hostRelPaths: string[],\n ): Promise<{ uploaded: string[]; skipped: Array<{ relPath: string; reason: string }> }> {\n const uploaded: string[] = [];\n const skipped: Array<{ relPath: string; reason: string }> = [];\n const fs = await import(\"node:fs\");\n const path = await import(\"node:path\");\n\n const wsPath = this.workspacePath();\n for (const rel of hostRelPaths) {\n try {\n const fullPath = path.join(wsPath, rel);\n const buf = fs.readFileSync(fullPath);\n const result = await this.callBridgeTool(undefined, \"write_file\", {\n path: rel,\n base64: buf.toString(\"base64\"),\n });\n const parsed = this.parseBridgeResult(result);\n if (!parsed.ok) {\n skipped.push({ relPath: rel, reason: String(parsed.error ?? \"write_file failed\") });\n continue;\n }\n uploaded.push(rel);\n } catch (err) {\n skipped.push({ relPath: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n return { uploaded, skipped };\n }\n\n async reset(): Promise<void> {}\n async shutdown(): Promise<void> {}\n\n async status(): Promise<SandboxStatus> {\n const conns = this.registry.all();\n if (conns.length > 0) {\n return {\n state: \"running\",\n uptimeMs: conns[0].connectedAt\n ? Date.now() - new Date(conns[0].connectedAt).getTime()\n : 0,\n meta: { devices: conns.length },\n };\n }\n return { state: \"stopped\", uptimeMs: 0 };\n }\n}\n", "// A ToolsetProvider backed by the dialed-in bridge connections. The\n// host calls listTools() every agent turn, so tools appear/disappear as\n// bridges connect/disconnect with no plugin reactivation.\n//\n// Each bridge tool becomes an AgentTool named `bridge_<device>_<tool>`.\n// `available()` hides it from users who don't own that bridge; the\n// tenant scope is already fixed (this provider is created per-tenant).\n// `execute()` does the async JSON-RPC round-trip to the owning device.\n//\n// Screenshots / images: a bridge tool result may carry MCP image\n// blocks (base64). To keep the agent context small we DON'T inline\n// those bytes into the tool result. Instead we save each image under\n// the user's dir and return only its PATH + dimensions. The agent then\n// calls `bridge_view_image(path)` on demand \u2014 that tool inlines the\n// bytes as an ImageContent for the vision model, one turn, controlled.\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {\n AgentTool,\n AgentToolContext,\n ToolResult,\n ToolsetProvider,\n} from \"@tianshu-ai/plugin-sdk\";\nimport { okResult, errorResult } from \"@tianshu-ai/plugin-sdk\";\nimport type { BridgeRegistry, BridgeConn } from \"./registry.js\";\nimport type { McpToolDescriptor, ToolsCallResult } from \"./protocol.js\";\n\nconst SHOTS_DIR = \"bridge-screenshots\";\nconst EXT_BY_MIME: Record<string, string> = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/webp\": \"webp\",\n \"image/gif\": \"gif\",\n};\n\n/** Sanitise a device/tool id into a tool-name-safe token. */\nfunction slug(s: string): string {\n return s.replace(/[^a-zA-Z0-9]+/g, \"_\").replace(/^_+|_+$/g, \"\").toLowerCase();\n}\n\n/** Fully-qualified agent tool name for a bridge tool. */\nexport function toolName(deviceId: string, tool: string): string {\n return `bridge_${slug(deviceId)}_${slug(tool)}`;\n}\n\n/** Save any image blocks in a tools/call result under the user's dir,\n * returning their workspace-relative paths. Keeps bytes OUT of the\n * agent context. */\nfunction saveImageBlocks(\n res: ToolsCallResult,\n userHome: string,\n): string[] {\n const saved: string[] = [];\n const dir = path.join(userHome, SHOTS_DIR);\n for (const c of res.content ?? []) {\n if (c.type !== \"image\") continue;\n const data = typeof c.data === \"string\" ? c.data : \"\";\n if (!data) continue;\n const mime = typeof c.mimeType === \"string\" ? c.mimeType : \"image/png\";\n const ext = EXT_BY_MIME[mime] ?? \"png\";\n try {\n fs.mkdirSync(dir, { recursive: true });\n const rel = path.join(SHOTS_DIR, `${Date.now()}-${saved.length}.${ext}`);\n fs.writeFileSync(path.join(userHome, rel), Buffer.from(data, \"base64\"));\n saved.push(rel);\n } catch {\n /* best-effort; skip on write failure */\n }\n }\n return saved;\n}\n\n/** Flatten a tools/call result for the agent: text blocks joined, and\n * image blocks saved to disk with their PATHS surfaced (not bytes). */\nfunction renderResult(res: ToolsCallResult, userHome: string): ToolResult {\n const textParts = (res.content ?? [])\n .map((c) => (typeof c.text === \"string\" ? c.text : \"\"))\n .filter(Boolean);\n const savedImages = saveImageBlocks(res, userHome);\n let text = textParts.join(\"\\n\").trim();\n if (savedImages.length) {\n const note =\n `Saved ${savedImages.length} image(s) to your workspace:\\n` +\n savedImages.map((p) => ` - ${p}`).join(\"\\n\") +\n `\\nTo look at one, call bridge_view_image with its path.`;\n text = text ? `${text}\\n${note}` : note;\n }\n text = text || \"(no content)\";\n return res.isError ? errorResult(text, res) : okResult(text, res);\n}\n\nexport function makeBridgeToolset(args: {\n registry: BridgeRegistry;\n /** Resolve a user's workspace dir (from PluginContext.userHomeDir). */\n userHomeDir: (userId: string) => string;\n log: { info: (m: string) => void; warn: (m: string) => void };\n}): ToolsetProvider {\n const { registry, userHomeDir } = args;\n return {\n name: \"bridge\",\n listTools(): AgentTool[] {\n const tools: AgentTool[] = [];\n const conns = registry.all();\n // One view_image tool per user with a bridge (user-scoped via\n // available()), so the agent can inline a saved screenshot when\n // it actually needs to see it.\n const usersWithBridge = new Set(conns.map((c) => c.userId));\n for (const uid of usersWithBridge) {\n tools.push(buildViewImageTool(uid, userHomeDir));\n }\n for (const conn of conns) {\n for (const t of conn.tools) {\n tools.push(buildTool(registry, userHomeDir, conn.userId, conn.deviceId, t));\n }\n // Virtual sync tools \u2014 orchestrate read_file/write_file to copy\n // files between server workspace and bridge. Agent sees just paths.\n tools.push(buildSyncUpTool(registry, userHomeDir, conn.userId, conn.deviceId));\n tools.push(buildSyncDownTool(registry, userHomeDir, conn.userId, conn.deviceId));\n }\n return tools;\n },\n };\n}\n\nfunction buildTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n desc: McpToolDescriptor,\n): AgentTool {\n const parameters =\n desc.inputSchema && typeof desc.inputSchema === \"object\"\n ? (desc.inputSchema as Record<string, unknown>)\n : { type: \"object\", properties: {}, additionalProperties: true };\n return {\n schema: {\n name: toolName(deviceId, desc.name),\n description:\n (desc.description ?? `Local bridge tool \"${desc.name}\" on device \"${deviceId}\".`) +\n ` (Runs on the user's own machine via the Local Bridge device \"${deviceId}\".)`,\n parameters: parameters as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) {\n return errorResult(\"This bridge tool belongs to a different user.\");\n }\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) {\n return errorResult(\n `Local Bridge device \"${deviceId}\" is not connected. Start the bridge client and try again.`,\n );\n }\n try {\n const result = await registry.call(conn, \"tools/call\", {\n name: desc.name,\n arguments: rawArgs,\n }, undefined, ctx.signal);\n return renderResult((result ?? {}) as ToolsCallResult, userHomeDir(userId));\n } catch (err) {\n return errorResult(\n `Local Bridge call failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n },\n };\n}\n\n/** On-demand image viewer: read a previously-saved bridge image and\n * return it as an ImageContent so the vision model sees it THIS turn.\n * This is the only place bytes enter the agent context. */\nfunction buildViewImageTool(\n userId: string,\n userHomeDir: (userId: string) => string,\n): AgentTool {\n return {\n schema: {\n name: \"bridge_view_image\",\n description:\n \"Look at an image the Local Bridge saved to your workspace (e.g. a browser screenshot). \" +\n \"Pass the workspace-relative path returned by a bridge tool (like bridge-screenshots/....png). \" +\n \"The image is shown to you for this turn only.\",\n parameters: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: \"Workspace-relative path of the saved image, e.g. bridge-screenshots/1720000000000-0.png\",\n },\n },\n required: [\"path\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"Not your bridge image.\");\n const rel = String(rawArgs.path ?? \"\").trim();\n // Path-safety: must stay under the user's SHOTS_DIR.\n const home = userHomeDir(userId);\n const abs = path.resolve(home, rel);\n const shotsRoot = path.resolve(home, SHOTS_DIR);\n if (!abs.startsWith(shotsRoot + path.sep)) {\n return errorResult(`Path must be under ${SHOTS_DIR}/. Got: ${rel}`);\n }\n let buf: Buffer;\n try {\n buf = fs.readFileSync(abs);\n } catch {\n return errorResult(`Image not found: ${rel}`);\n }\n const ext = path.extname(abs).slice(1).toLowerCase();\n const mimeType =\n ext === \"jpg\" || ext === \"jpeg\" ? \"image/jpeg\" : ext === \"webp\" ? \"image/webp\" : ext === \"gif\" ? \"image/gif\" : \"image/png\";\n return {\n ok: true,\n text: `Showing ${rel}.`,\n images: [{ base64: buf.toString(\"base64\"), mimeType }],\n };\n },\n };\n}\n\n// \u2500\u2500\u2500 virtual sync tools (server-side orchestration) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Helper: call a bridge tool and parse the JSON result. */\nasync function callBridgeAndParse(\n registry: BridgeRegistry,\n conn: BridgeConn,\n toolName: string,\n args: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const result = await registry.call(conn, \"tools/call\", { name: toolName, arguments: args });\n const res = (result ?? {}) as ToolsCallResult;\n const text = (res.content ?? []).map((c) => (typeof c.text === \"string\" ? c.text : \"\")).filter(Boolean).join(\"\\n\");\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch {\n return { ok: false, error: \"unparseable bridge response\" };\n }\n}\n\n/**\n * sync_up: copy files from bridge \u2192 server workspace.\n * Agent gives paths, toolset calls bridge read_file for each,\n * writes content to server workspace. Agent sees just synced paths.\n */\nfunction buildSyncUpTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n): AgentTool {\n return {\n schema: {\n name: toolName(deviceId, \"sync_up\"),\n description:\n \"Copy files from the bridge machine to the server workspace (bridge \u2192 server). \" +\n \"Provide relative paths on the bridge; files are copied to the server workspace at the same paths. \" +\n `(Runs via Local Bridge device \"${deviceId}\".)`,\n parameters: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n description: \"File paths on the bridge to copy to the server workspace.\",\n },\n },\n required: [\"paths\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"This bridge tool belongs to a different user.\");\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) return errorResult(`Local Bridge device \"${deviceId}\" is not connected.`);\n\n const paths = Array.isArray(rawArgs.paths) ? rawArgs.paths.map(String) : [];\n if (paths.length === 0) return errorResult(\"paths is required and must be non-empty.\");\n\n const home = userHomeDir(userId);\n const synced: string[] = [];\n const failed: Array<{ path: string; reason: string }> = [];\n\n for (const rel of paths) {\n try {\n const parsed = await callBridgeAndParse(registry, conn, \"read_file\", { path: rel });\n if (!parsed.ok) {\n failed.push({ path: rel, reason: String(parsed.error ?? \"read_file failed\") });\n continue;\n }\n const b64 = String(parsed.base64 ?? \"\");\n if (!b64) { failed.push({ path: rel, reason: \"empty content\" }); continue; }\n const abs = path.join(home, rel);\n fs.mkdirSync(path.dirname(abs), { recursive: true });\n fs.writeFileSync(abs, Buffer.from(b64, \"base64\"));\n synced.push(rel);\n } catch (err) {\n failed.push({ path: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n\n const text = failed.length === 0\n ? `Synced ${synced.length} file(s) from bridge to server: ${synced.join(\", \")}`\n : `Synced ${synced.length}, failed ${failed.length}: ${failed.map((f) => `${f.path} (${f.reason})`).join(\", \")}`;\n return failed.length === 0 ? okResult(text) : errorResult(text);\n },\n };\n}\n\n/**\n * sync_down: copy files from server workspace \u2192 bridge.\n * Agent gives paths, toolset reads from server workspace,\n * calls bridge write_file for each. Agent sees just synced paths.\n */\nfunction buildSyncDownTool(\n registry: BridgeRegistry,\n userHomeDir: (userId: string) => string,\n userId: string,\n deviceId: string,\n): AgentTool {\n return {\n schema: {\n name: toolName(deviceId, \"sync_down\"),\n description:\n \"Copy files from the server workspace to the bridge machine (server \u2192 bridge). \" +\n \"Provide relative paths in the server workspace; files are copied to the bridge at the same paths. \" +\n `(Runs via Local Bridge device \"${deviceId}\".)`,\n parameters: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n description: \"File paths in the server workspace to copy to the bridge.\",\n },\n },\n required: [\"paths\"],\n } as never,\n },\n available(ctx: AgentToolContext): boolean {\n return ctx.userId === userId;\n },\n async execute(rawArgs: Record<string, unknown>, ctx: AgentToolContext): Promise<ToolResult> {\n if (ctx.userId !== userId) return errorResult(\"This bridge tool belongs to a different user.\");\n const conn = registry.forUser(userId).find((c) => c.deviceId === deviceId);\n if (!conn) return errorResult(`Local Bridge device \"${deviceId}\" is not connected.`);\n\n const paths = Array.isArray(rawArgs.paths) ? rawArgs.paths.map(String) : [];\n if (paths.length === 0) return errorResult(\"paths is required and must be non-empty.\");\n\n const home = userHomeDir(userId);\n const synced: string[] = [];\n const failed: Array<{ path: string; reason: string }> = [];\n\n for (const rel of paths) {\n try {\n const abs = path.join(home, rel);\n const buf = fs.readFileSync(abs);\n const parsed = await callBridgeAndParse(registry, conn, \"write_file\", {\n path: rel,\n base64: buf.toString(\"base64\"),\n });\n if (!parsed.ok) {\n failed.push({ path: rel, reason: String(parsed.error ?? \"write_file failed\") });\n continue;\n }\n synced.push(rel);\n } catch (err) {\n failed.push({ path: rel, reason: err instanceof Error ? err.message : String(err) });\n }\n }\n\n const text = failed.length === 0\n ? `Synced ${synced.length} file(s) from server to bridge: ${synced.join(\", \")}`\n : `Synced ${synced.length}, failed ${failed.length}: ${failed.map((f) => `${f.path} (${f.reason})`).join(\", \")}`;\n return failed.length === 0 ? okResult(text) : errorResult(text);\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["fs", "path", "fs", "path", "toolName", "path", "fs"]
|
|
7
7
|
}
|