frely-cli 0.9.6 → 0.10.0

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.
Files changed (73) hide show
  1. package/README.md +27 -5
  2. package/README.zh-CN.md +15 -4
  3. package/dist/agent-help.d.ts +102 -6
  4. package/dist/agent-help.js +16 -5
  5. package/dist/agent-help.js.map +1 -1
  6. package/dist/cloud.d.ts +11 -1
  7. package/dist/cloud.js +73 -1
  8. package/dist/cloud.js.map +1 -1
  9. package/dist/computer/command.d.ts +6 -0
  10. package/dist/computer/command.js +53 -0
  11. package/dist/computer/command.js.map +1 -0
  12. package/dist/computer/guard.d.ts +18 -0
  13. package/dist/computer/guard.js +82 -0
  14. package/dist/computer/guard.js.map +1 -0
  15. package/dist/computer/image.d.ts +22 -0
  16. package/dist/computer/image.js +183 -0
  17. package/dist/computer/image.js.map +1 -0
  18. package/dist/computer/ocu.d.ts +40 -0
  19. package/dist/computer/ocu.js +59 -0
  20. package/dist/computer/ocu.js.map +1 -0
  21. package/dist/computer/runtime.d.ts +22 -0
  22. package/dist/computer/runtime.js +85 -0
  23. package/dist/computer/runtime.js.map +1 -0
  24. package/dist/computer/server.d.ts +11 -0
  25. package/dist/computer/server.js +31 -0
  26. package/dist/computer/server.js.map +1 -0
  27. package/dist/computer/state.d.ts +11 -0
  28. package/dist/computer/state.js +17 -0
  29. package/dist/computer/state.js.map +1 -0
  30. package/dist/computer/toolset.d.ts +22 -0
  31. package/dist/computer/toolset.js +112 -0
  32. package/dist/computer/toolset.js.map +1 -0
  33. package/dist/device/protocol.d.ts +2 -0
  34. package/dist/device/protocol.js +7 -1
  35. package/dist/device/protocol.js.map +1 -1
  36. package/dist/device/relay-client.d.ts +3 -0
  37. package/dist/device/relay-client.js +7 -1
  38. package/dist/device/relay-client.js.map +1 -1
  39. package/dist/index.js +69 -8
  40. package/dist/index.js.map +1 -1
  41. package/dist/local-mcp-command.d.ts +10 -0
  42. package/dist/local-mcp-command.js +105 -0
  43. package/dist/local-mcp-command.js.map +1 -0
  44. package/dist/mcp-authorization.js +27 -2
  45. package/dist/mcp-authorization.js.map +1 -1
  46. package/dist/mcp-command.js +17 -1
  47. package/dist/mcp-command.js.map +1 -1
  48. package/dist/provider/control.d.ts +8 -2
  49. package/dist/provider/control.js.map +1 -1
  50. package/dist/runtime/local-mcp.d.ts +114 -0
  51. package/dist/runtime/local-mcp.js +448 -0
  52. package/dist/runtime/local-mcp.js.map +1 -0
  53. package/dist/runtime/mcp.d.ts +20 -0
  54. package/dist/runtime/mcp.js +29 -0
  55. package/dist/runtime/mcp.js.map +1 -1
  56. package/dist/runtime/relay-mcp.d.ts +3 -1
  57. package/dist/runtime/relay-mcp.js +5 -1
  58. package/dist/runtime/relay-mcp.js.map +1 -1
  59. package/dist/runtime/relay-session.d.ts +2 -2
  60. package/dist/runtime/relay-session.js +1 -1
  61. package/dist/runtime/relay-session.js.map +1 -1
  62. package/dist/runtime/sandbox.js +3 -0
  63. package/dist/runtime/sandbox.js.map +1 -1
  64. package/dist/skill/cloud-item.d.ts +38 -0
  65. package/dist/skill/cloud-item.js +151 -0
  66. package/dist/skill/cloud-item.js.map +1 -0
  67. package/dist/upgrade/maintenance.js +1 -1
  68. package/dist/upgrade/maintenance.js.map +1 -1
  69. package/dist/upgrade/service-refresh.js +1 -1
  70. package/dist/upgrade/service-refresh.js.map +1 -1
  71. package/dist/upgrade/update.js +2 -2
  72. package/dist/upgrade/update.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ import { execFile as execFileCallback } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import { chmod, cp, mkdir, mkdtemp, rename, rm, writeFile } from "node:fs/promises";
4
+ import { dirname, join } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { OCU_VERSION, ocuBinaryPath } from "./ocu.js";
7
+ const execFile = promisify(execFileCallback);
8
+ /**
9
+ * The pinned open-computer-use release (plan computer-use D7): the npm tarball bundles every platform's
10
+ * binary, and its sha512 integrity is fixed here, so a changed or tampered download is refused.
11
+ * Bumping OCU_VERSION means updating both constants from `npm view open-computer-use@<version> dist`.
12
+ */
13
+ export const OCU_TARBALL_URL = `https://registry.npmjs.org/open-computer-use/-/open-computer-use-${OCU_VERSION}.tgz`;
14
+ export const OCU_TARBALL_INTEGRITY = "sha512-pGNfWBBefl5qzQMo6rkC/e28sOfeczTQ0hEKkYn2sXwti38uz+fC4Y0oBdtnNACemsNVR06Dzp6SozJjkpkbSg==";
15
+ const MAX_TARBALL_BYTES = 64 * 1024 * 1024;
16
+ export class OcuRuntimeError extends Error {
17
+ code;
18
+ constructor(code, message) {
19
+ super(message);
20
+ this.code = code;
21
+ this.name = "OcuRuntimeError";
22
+ }
23
+ }
24
+ /** Path of the part of the tarball to extract for this platform, and what it becomes in the install directory. */
25
+ function layout(platform, arch) {
26
+ const cpu = arch === "arm64" ? "arm64" : arch === "x64" ? "amd64" : undefined;
27
+ if (platform === "darwin" && (arch === "arm64" || arch === "x64"))
28
+ return { member: "package/dist/Open Computer Use.app", kind: "app", source: "Open Computer Use.app" };
29
+ if (platform === "linux" && cpu)
30
+ return { member: `package/dist/linux/${cpu}/open-computer-use`, kind: "binary", source: `dist/linux/${cpu}/open-computer-use` };
31
+ if (platform === "win32" && cpu)
32
+ return { member: `package/dist/windows/${cpu}/open-computer-use.exe`, kind: "binary", source: `dist/windows/${cpu}/open-computer-use.exe` };
33
+ throw new OcuRuntimeError("unsupported_platform", `Computer use is not available for ${platform}-${arch}.`);
34
+ }
35
+ /** Download the pinned tarball, verify its integrity, and install this platform's runtime. Idempotent. */
36
+ export async function installOcuRuntime(options = {}) {
37
+ const target = options.binaryPath ?? ocuBinaryPath();
38
+ const plan = layout(options.platform ?? process.platform, options.arch ?? process.arch);
39
+ const url = options.url ?? OCU_TARBALL_URL;
40
+ if (!url.startsWith("https://") && !(options.url && options.fetchImpl))
41
+ throw new OcuRuntimeError("download_failed", "The runtime must be downloaded over HTTPS.");
42
+ const response = await (options.fetchImpl ?? fetch)(url).catch((error) => {
43
+ throw new OcuRuntimeError("download_failed", `Could not download the computer-use runtime: ${error instanceof Error ? error.message : "network error"}`);
44
+ });
45
+ if (!response.ok)
46
+ throw new OcuRuntimeError("download_failed", `Could not download the computer-use runtime (HTTP ${response.status}).`);
47
+ const bytes = Buffer.from(await response.arrayBuffer());
48
+ if (bytes.length > MAX_TARBALL_BYTES)
49
+ throw new OcuRuntimeError("download_failed", "The runtime download is larger than expected.");
50
+ const expected = options.integrity ?? OCU_TARBALL_INTEGRITY;
51
+ if (`sha512-${createHash("sha512").update(bytes).digest("base64")}` !== expected) {
52
+ throw new OcuRuntimeError("integrity_mismatch", "The downloaded runtime does not match the pinned checksum and was discarded.");
53
+ }
54
+ const installDir = plan.kind === "app" ? dirname(dirname(dirname(dirname(target)))) : dirname(target);
55
+ await mkdir(dirname(installDir), { recursive: true });
56
+ const stage = await mkdtemp(join(dirname(installDir), ".computer-install-"));
57
+ try {
58
+ const archive = join(stage, "runtime.tgz");
59
+ await writeFile(archive, bytes);
60
+ try {
61
+ await execFile("tar", ["-xzf", archive, "-C", stage, plan.member], { timeout: 120_000 });
62
+ }
63
+ catch (error) {
64
+ throw new OcuRuntimeError("extract_failed", `Could not unpack the computer-use runtime: ${error instanceof Error ? error.message : "tar failed"}`);
65
+ }
66
+ const extracted = join(stage, "package", "dist", ...(plan.kind === "app" ? [plan.source] : plan.source.split("/").slice(1)));
67
+ const staged = join(stage, "ready");
68
+ await mkdir(staged, { recursive: true });
69
+ if (plan.kind === "app")
70
+ await cp(extracted, join(staged, plan.source), { recursive: true });
71
+ else {
72
+ await cp(extracted, join(staged, plan.source.split("/").pop()));
73
+ if (process.platform !== "win32")
74
+ await chmod(join(staged, plan.source.split("/").pop()), 0o755);
75
+ }
76
+ await rm(installDir, { recursive: true, force: true });
77
+ await mkdir(dirname(installDir), { recursive: true });
78
+ await rename(staged, installDir);
79
+ }
80
+ finally {
81
+ await rm(stage, { recursive: true, force: true });
82
+ }
83
+ return target;
84
+ }
85
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/computer/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ import { ComputerToolset } from "./toolset.js";
4
+ /** Name `frely computer enable` registers in the local MCP list; the web page turns it on by this name. */
5
+ export declare const COMPUTER_MCP_NAME = "computer";
6
+ /** The local key of the two-key rule: computer use works only while its entry is in the local MCP list. */
7
+ export declare function computerEntryRegistered(): Promise<boolean>;
8
+ export declare function createComputerToolset(): ComputerToolset;
9
+ /** MCP server over the guarded toolset. Local MCP forwarding starts it as a stdio server (`frely computer mcp`). */
10
+ export declare function createComputerMcpServer(toolset: ComputerToolset): Server;
11
+ export declare function runComputerMcpServer(transport?: Transport, toolset?: ComputerToolset): Promise<void>;
@@ -0,0 +1,31 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
4
+ import { VERSION } from "../version.js";
5
+ import { loadManualEntries } from "../runtime/local-mcp.js";
6
+ import { StdioOcuBackend } from "./ocu.js";
7
+ import { ComputerToolset } from "./toolset.js";
8
+ /** Name `frely computer enable` registers in the local MCP list; the web page turns it on by this name. */
9
+ export const COMPUTER_MCP_NAME = "computer";
10
+ /** The local key of the two-key rule: computer use works only while its entry is in the local MCP list. */
11
+ export async function computerEntryRegistered() {
12
+ return (await loadManualEntries().catch(() => [])).some((entry) => entry.name === COMPUTER_MCP_NAME && entry.transport === "stdio");
13
+ }
14
+ export function createComputerToolset() {
15
+ return new ComputerToolset({ backend: new StdioOcuBackend(), isLocallyEnabled: computerEntryRegistered });
16
+ }
17
+ /** MCP server over the guarded toolset. Local MCP forwarding starts it as a stdio server (`frely computer mcp`). */
18
+ export function createComputerMcpServer(toolset) {
19
+ const server = new Server({ name: "frely-computer", version: VERSION }, { capabilities: { tools: {} } });
20
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: await toolset.listTools() }));
21
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
22
+ const result = await toolset.call(request.params.name, (request.params.arguments ?? {}), extra.signal);
23
+ return { content: result.content, ...(result.isError ? { isError: true } : {}) };
24
+ });
25
+ server.onclose = () => { void toolset.close(); };
26
+ return server;
27
+ }
28
+ export async function runComputerMcpServer(transport = new StdioServerTransport(), toolset = createComputerToolset()) {
29
+ await createComputerMcpServer(toolset).connect(transport);
30
+ }
31
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/computer/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,2GAA2G;AAC3G,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,OAAO,CAAC,MAAM,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;AACtI,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,eAAe,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzG,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACrG,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClI,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAsE,CAAC;IACvJ,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAuB,IAAI,oBAAoB,EAAE,EAAE,UAA2B,qBAAqB,EAAE;IAC9I,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function computerDir(): string;
2
+ export interface ComputerAuditEntry {
3
+ ts: string;
4
+ tool: string;
5
+ app?: string;
6
+ ok: boolean;
7
+ ms: number;
8
+ reason?: string;
9
+ }
10
+ /** Metadata only: never the screenshot, the typed text or any tool output. Failures here never affect the call. */
11
+ export declare function appendComputerAudit(entry: ComputerAuditEntry): Promise<void>;
@@ -0,0 +1,17 @@
1
+ import { appendFile, mkdir } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ export function computerDir() {
5
+ return join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "frely", "computer");
6
+ }
7
+ const auditPath = () => join(computerDir(), "audit.jsonl");
8
+ /** Metadata only: never the screenshot, the typed text or any tool output. Failures here never affect the call. */
9
+ export async function appendComputerAudit(entry) {
10
+ try {
11
+ const path = auditPath();
12
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
13
+ await appendFile(path, `${JSON.stringify(entry)}\n`, { mode: 0o600 });
14
+ }
15
+ catch { /* best effort */ }
16
+ }
17
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/computer/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;AAI3D,mHAAmH;AACnH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAyB;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { OcuBackend, OcuResult, OcuTool } from "./ocu.js";
2
+ import { type ComputerAuditEntry } from "./state.js";
3
+ export interface ComputerToolsetOptions {
4
+ backend: OcuBackend;
5
+ /** Local key of the two-key rule (the registered local MCP entry); checked on every list and call so `frely computer disable` takes effect at once. */
6
+ isLocallyEnabled: () => Promise<boolean>;
7
+ audit?: (entry: ComputerAuditEntry) => Promise<void>;
8
+ }
9
+ export declare class ComputerToolset {
10
+ private readonly backend;
11
+ private readonly isLocallyEnabled;
12
+ private readonly audit;
13
+ /** original / sent size per app, from its latest screenshot, to map model coordinates back to device pixels. */
14
+ private readonly scales;
15
+ constructor(options: ComputerToolsetOptions);
16
+ available(): Promise<boolean>;
17
+ listTools(): Promise<OcuTool[]>;
18
+ call(name: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<OcuResult>;
19
+ close(): Promise<void>;
20
+ private scaleCoordinates;
21
+ private shapeScreenshots;
22
+ }
@@ -0,0 +1,112 @@
1
+ import { assertAppAllowed, ComputerBlockedError, normalizeApp, redactBlockedAppLines } from "./guard.js";
2
+ import { downscalePng, pngSize } from "./image.js";
3
+ import { appendComputerAudit } from "./state.js";
4
+ /** Only these open-computer-use tools are ever exposed; a future upstream tool stays hidden until reviewed. */
5
+ const ALLOWED_TOOLS = new Set(["list_apps", "get_app_state", "click", "perform_secondary_action", "scroll", "drag", "type_text", "press_key", "set_value"]);
6
+ const COORDINATE_ARGS = { click: ["x", "y"], drag: ["from_x", "from_y", "to_x", "to_y"] };
7
+ /** A relay frame is capped at 8 MiB including JSON and base64 overhead; stay well under it. */
8
+ const MAX_RESULT_BYTES = 6 * 1024 * 1024;
9
+ export class ComputerToolset {
10
+ backend;
11
+ isLocallyEnabled;
12
+ audit;
13
+ /** original / sent size per app, from its latest screenshot, to map model coordinates back to device pixels. */
14
+ scales = new Map();
15
+ constructor(options) {
16
+ this.backend = options.backend;
17
+ this.isLocallyEnabled = options.isLocallyEnabled;
18
+ this.audit = options.audit ?? appendComputerAudit;
19
+ }
20
+ async available() {
21
+ return this.isLocallyEnabled().catch(() => false);
22
+ }
23
+ async listTools() {
24
+ if (!(await this.available()))
25
+ return [];
26
+ const tools = await this.backend.listTools();
27
+ return tools.filter((tool) => ALLOWED_TOOLS.has(tool.name)).map((tool) => ({
28
+ ...tool,
29
+ description: `${(tool.description ?? "").replace(/\s*This tool is part of plugin `Computer Use`\./u, "")} Controls the user's real desktop on this device.`.trim(),
30
+ }));
31
+ }
32
+ async call(name, args, signal) {
33
+ const started = performance.now();
34
+ const tool = name;
35
+ const app = typeof args.app === "string" ? args.app : undefined;
36
+ const finish = (result, reason) => {
37
+ void this.audit({ ts: new Date().toISOString(), tool, ...(app ? { app } : {}), ok: !result.isError, ms: Math.round(performance.now() - started), ...(reason ? { reason } : {}) });
38
+ return result;
39
+ };
40
+ const fail = (message, reason) => finish({ isError: true, content: [{ type: "text", text: message }] }, reason);
41
+ if (!ALLOWED_TOOLS.has(tool))
42
+ return fail(`Unknown tool: ${name}`, "unknown_tool");
43
+ if (!(await this.available()))
44
+ return fail("Computer use is turned off on this device. Run `frely computer enable` on it first.", "locally_disabled");
45
+ try {
46
+ if (tool !== "list_apps") {
47
+ try {
48
+ assertAppAllowed(args.app);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof ComputerBlockedError)
52
+ throw error;
53
+ return fail(error instanceof Error ? error.message : "Invalid app.", "invalid_app");
54
+ }
55
+ }
56
+ const sent = this.scaleCoordinates(tool, args);
57
+ const result = await this.backend.callTool(tool, sent, signal);
58
+ const shaped = tool === "list_apps" ? redactList(result) : this.shapeScreenshots(result, app);
59
+ return finish(shaped);
60
+ }
61
+ catch (error) {
62
+ if (error instanceof ComputerBlockedError)
63
+ return fail(error.message, "blocked");
64
+ return fail(error instanceof Error ? error.message : "Computer use failed.", "backend_error");
65
+ }
66
+ }
67
+ async close() {
68
+ await this.backend.close();
69
+ }
70
+ scaleCoordinates(tool, args) {
71
+ const keys = COORDINATE_ARGS[tool];
72
+ const scale = typeof args.app === "string" ? this.scales.get(normalizeApp(args.app)) : undefined;
73
+ if (!keys || !scale || scale === 1)
74
+ return args;
75
+ const out = { ...args };
76
+ for (const key of keys)
77
+ if (typeof out[key] === "number")
78
+ out[key] = Math.round(out[key] * scale);
79
+ return out;
80
+ }
81
+ shapeScreenshots(result, app) {
82
+ let total = 0;
83
+ const content = result.content.map((item) => {
84
+ if (item.type !== "image" || typeof item.data !== "string")
85
+ return item;
86
+ const original = Buffer.from(item.data, "base64");
87
+ const scaled = downscalePng(original);
88
+ if (scaled) {
89
+ if (app)
90
+ this.scales.set(normalizeApp(app), scaled.scale);
91
+ return { ...item, data: scaled.data.toString("base64"), mimeType: "image/png" };
92
+ }
93
+ // Not a plain PNG we can decode: keep it only if it is already small and not oversized in pixels.
94
+ const size = pngSize(original);
95
+ if (app)
96
+ this.scales.set(normalizeApp(app), 1);
97
+ if (original.length > 1.5 * 1024 * 1024 || (size && Math.max(size.width, size.height) > 2560)) {
98
+ return { type: "text", text: "Screenshot omitted: it is too large and could not be resized." };
99
+ }
100
+ return item;
101
+ });
102
+ for (const item of content)
103
+ total += (item.data?.length ?? 0) + (item.text?.length ?? 0);
104
+ if (total > MAX_RESULT_BYTES)
105
+ return { isError: true, content: [{ type: "text", text: "The result was too large to send. Try a smaller window or lower max_tree_nodes." }] };
106
+ return { ...result, content };
107
+ }
108
+ }
109
+ function redactList(result) {
110
+ return { ...result, content: result.content.map((item) => item.type === "text" && typeof item.text === "string" ? { ...item, text: redactBlockedAppLines(item.text) } : item) };
111
+ }
112
+ //# sourceMappingURL=toolset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolset.js","sourceRoot":"","sources":["../../src/computer/toolset.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export type DeviceRelayRequest = {
9
9
  authorizationId?: string;
10
10
  /** Enabled MCP toolsets on the authorization (relay server -> device). Absent means ["workspace"] (older relays). */
11
11
  toolsets?: string[];
12
+ /** Device-local MCP servers the owner enabled on the authorization (relay server -> device). Absent means none. */
13
+ localMcps?: string[];
12
14
  payload: unknown;
13
15
  };
14
16
  /** Device -> relay capability report rendered by the web console (plan §6.4). */
@@ -37,11 +37,13 @@ export function validateDeviceRelayEnvelope(value) {
37
37
  throw new DeviceRelayProtocolError("frame_invalid");
38
38
  assertRequestId(record.id);
39
39
  if (record.type === "request") {
40
- exactKeys(record, ["protocol", "type", "id", "method", "payload", ...(record.authorizationId !== undefined ? ["authorizationId"] : []), ...(record.toolsets !== undefined ? ["toolsets"] : [])]);
40
+ exactKeys(record, ["protocol", "type", "id", "method", "payload", ...(record.authorizationId !== undefined ? ["authorizationId"] : []), ...(record.toolsets !== undefined ? ["toolsets"] : []), ...(record.localMcps !== undefined ? ["localMcps"] : [])]);
41
41
  if (record.authorizationId !== undefined && (record.method !== "mcp" || typeof record.authorizationId !== "string" || !/^mca_[a-f0-9]{32}$/u.test(record.authorizationId)))
42
42
  throw new DeviceRelayProtocolError("frame_invalid");
43
43
  if (record.toolsets !== undefined && (record.method !== "mcp" || !isToolsetList(record.toolsets)))
44
44
  throw new DeviceRelayProtocolError("frame_invalid");
45
+ if (record.localMcps !== undefined && (record.method !== "mcp" || !isLocalMcpList(record.localMcps)))
46
+ throw new DeviceRelayProtocolError("frame_invalid");
45
47
  if (record.method !== "mcp" && record.method !== "provider" && record.method !== "node" && record.method !== "agent")
46
48
  throw new DeviceRelayProtocolError("frame_invalid");
47
49
  return;
@@ -97,6 +99,10 @@ export function validateDeviceRelayEnvelope(value) {
97
99
  }
98
100
  throw new DeviceRelayProtocolError("frame_invalid");
99
101
  }
102
+ function isLocalMcpList(value) {
103
+ return Array.isArray(value) && value.length >= 1 && value.length <= 32 && new Set(value).size === value.length
104
+ && value.every((item) => typeof item === "string" && /^[a-z0-9][a-z0-9-]{0,31}$/u.test(item));
105
+ }
100
106
  function isToolsetList(value) {
101
107
  if (!Array.isArray(value) || value.length < 1 || value.length > 8)
102
108
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/device/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/device/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { MaintenanceGate } from "../upgrade/maintenance.js";
2
2
  import { McpLease } from "../runtime/mcp-lease.js";
3
3
  import { type ConnectionEvent } from "./connection-status.js";
4
+ import type { LocalMcpHub } from "../runtime/local-mcp.js";
4
5
  import type { AgentService } from "../agent/agent-service.js";
5
6
  import type { RelaySession } from "../runtime/relay-session.js";
6
7
  export interface RelayServeOptions {
@@ -25,6 +26,8 @@ export interface RelayServeOptions {
25
26
  agent?: AgentService;
26
27
  /** Device capability report sent once per connection for the web console (plan §6.4). */
27
28
  capabilities?: () => Record<string, unknown> | Promise<Record<string, unknown>> | undefined;
29
+ /** Device-local MCP servers; enabled names arrive on each mcp request (plan mcp/本机MCP转发-方案.md). */
30
+ localMcp?: LocalMcpHub;
28
31
  }
29
32
  export declare function serveDeviceRelay(options: RelayServeOptions): Promise<void>;
30
33
  export declare function isTransportFallbackEligible(error: unknown): boolean;
@@ -58,6 +58,7 @@ export async function serveDeviceRelay(options) {
58
58
  session = await RelayMcpSession.create(options.workspace, {
59
59
  assertAuthorized: () => guard.assert(), signal: guard.controller.signal, log, ...(maintenance ? { maintenance } : {}),
60
60
  ...(options.agent ? { callAgent: createAgentCallBridge(options.agent, { workspace: options.workspace }) } : {}),
61
+ ...(options.localMcp ? { localMcp: options.localMcp } : {}),
61
62
  });
62
63
  const activeSession = session;
63
64
  guard.controller.signal.addEventListener("abort", () => { void activeSession.close(); }, { once: true });
@@ -163,12 +164,17 @@ export async function serveConnection(websocketUrl, accessToken, deviceId, sessi
163
164
  };
164
165
  const heartbeat = setInterval(ping, 30_000);
165
166
  heartbeat.unref?.();
167
+ // Device-local MCP servers come and go, so the report is refreshed while connected.
168
+ const capabilityTimer = capabilities ? setInterval(() => { void sendCapabilities(socket, capabilities); }, 60_000) : undefined;
169
+ capabilityTimer?.unref?.();
166
170
  const finish = (error) => {
167
171
  if (finished)
168
172
  return;
169
173
  finished = true;
170
174
  unregisterOutput?.();
171
175
  clearInterval(heartbeat);
176
+ if (capabilityTimer)
177
+ clearInterval(capabilityTimer);
172
178
  for (const [id, item] of inflight) {
173
179
  cancelled.add(id);
174
180
  item.controller.abort();
@@ -284,7 +290,7 @@ async function executeMcpRequest(request, session, lease) {
284
290
  if (!session || !lease || request.authorizationId !== lease.authorizationId)
285
291
  throw new Error("MCP execution authorization is missing or mismatched.");
286
292
  lease.assert();
287
- return session.execute(request.payload, request.id, request.toolsets);
293
+ return session.execute(request.payload, request.id, request.toolsets, request.localMcps);
288
294
  }
289
295
  async function executeNodeRequest(request, session) {
290
296
  if (!session)
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/device/relay-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/device/relay-client.ts"],"names":[],"mappings":"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"}