@beeos-ai/device-mcp-server 0.2.3

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 (62) hide show
  1. package/LICENSE +201 -0
  2. package/dist/backends/android-adb-runner.d.ts +32 -0
  3. package/dist/backends/android-adb-runner.js +15 -0
  4. package/dist/backends/android-adb-runner.js.map +1 -0
  5. package/dist/backends/android-adb.d.ts +153 -0
  6. package/dist/backends/android-adb.js +723 -0
  7. package/dist/backends/android-adb.js.map +1 -0
  8. package/dist/backends/base.d.ts +150 -0
  9. package/dist/backends/base.js +116 -0
  10. package/dist/backends/base.js.map +1 -0
  11. package/dist/backends/desktop.d.ts +62 -0
  12. package/dist/backends/desktop.js +176 -0
  13. package/dist/backends/desktop.js.map +1 -0
  14. package/dist/backends/index.d.ts +63 -0
  15. package/dist/backends/index.js +105 -0
  16. package/dist/backends/index.js.map +1 -0
  17. package/dist/backends/linux.d.ts +69 -0
  18. package/dist/backends/linux.js +230 -0
  19. package/dist/backends/linux.js.map +1 -0
  20. package/dist/backends/mac.d.ts +154 -0
  21. package/dist/backends/mac.js +881 -0
  22. package/dist/backends/mac.js.map +1 -0
  23. package/dist/backends/stubs/ios.d.ts +17 -0
  24. package/dist/backends/stubs/ios.js +32 -0
  25. package/dist/backends/stubs/ios.js.map +1 -0
  26. package/dist/backends/stubs/macos.d.ts +13 -0
  27. package/dist/backends/stubs/macos.js +27 -0
  28. package/dist/backends/stubs/macos.js.map +1 -0
  29. package/dist/backends/stubs/windows.d.ts +69 -0
  30. package/dist/backends/stubs/windows.js +191 -0
  31. package/dist/backends/stubs/windows.js.map +1 -0
  32. package/dist/cli.d.ts +37 -0
  33. package/dist/cli.js +177 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.js +14 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/server/action-mapping.d.ts +21 -0
  39. package/dist/server/action-mapping.js +153 -0
  40. package/dist/server/action-mapping.js.map +1 -0
  41. package/dist/server/app.d.ts +23 -0
  42. package/dist/server/app.js +157 -0
  43. package/dist/server/app.js.map +1 -0
  44. package/dist/server/tool-registry.d.ts +50 -0
  45. package/dist/server/tool-registry.js +504 -0
  46. package/dist/server/tool-registry.js.map +1 -0
  47. package/dist/util/adb-files.d.ts +92 -0
  48. package/dist/util/adb-files.js +221 -0
  49. package/dist/util/adb-files.js.map +1 -0
  50. package/dist/util/adb-shell.d.ts +80 -0
  51. package/dist/util/adb-shell.js +102 -0
  52. package/dist/util/adb-shell.js.map +1 -0
  53. package/dist/util/android-apps.d.ts +10 -0
  54. package/dist/util/android-apps.js +103 -0
  55. package/dist/util/android-apps.js.map +1 -0
  56. package/dist/util/image-dim.d.ts +27 -0
  57. package/dist/util/image-dim.js +37 -0
  58. package/dist/util/image-dim.js.map +1 -0
  59. package/dist/util/ui-xml.d.ts +20 -0
  60. package/dist/util/ui-xml.js +184 -0
  61. package/dist/util/ui-xml.js.map +1 -0
  62. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android-adb.js","sourceRoot":"","sources":["../../src/backends/android-adb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * SandboxBackend — abstract device-control surface used by every MCP tool.
3
+ *
4
+ * Mirrors the Python reference at `mcp_tools/backend.py`. Implementations live
5
+ * in `backends/{android-adb,desktop,stubs/...}.ts`. The MCP server's tool
6
+ * registry maps each MCP tool (`click`, `tap`, `screenshot`, ...) to the
7
+ * matching method here.
8
+ *
9
+ * Methods are intentionally narrow / verb-shaped — the action-mapping layer in
10
+ * `server/action-mapping.ts` translates a unified `Action` into the right
11
+ * method+args.
12
+ */
13
+ import type { BackendFamily, BackendOs, DeviceInfo, ExecuteCommandOutput, ListDirectoryEntry, ScreenshotOutput, ScreenSize, UiDumpOutput } from "@beeos-ai/device-common";
14
+ export type { BackendOs, BackendFamily, ScreenSize, UiDumpOutput, ExecuteCommandOutput, ListDirectoryEntry, ScreenshotOutput, };
15
+ export interface SandboxBackend {
16
+ /**
17
+ * Concrete operating system this backend drives. Wire-stable — the
18
+ * value flows through `/healthz.backend` and `info().type`.
19
+ */
20
+ readonly os: BackendOs;
21
+ /**
22
+ * Coarse family discriminator derived from `os`. Drives the MCP tool
23
+ * catalogue split (mobile gestures vs. desktop mouse verbs). Internal
24
+ * — never appears on the wire.
25
+ */
26
+ readonly family: BackendFamily;
27
+ /**
28
+ * Set of MCP tool names this backend advertises and answers.
29
+ *
30
+ * Drives `device-mcp-server`'s tool registry — at startup we filter
31
+ * `TOOLS` so `/healthz` and `/mcp/tools/list` only ever advertise
32
+ * tools that satisfy `backend.tools.has(name)`. `/mcp/tools/call`
33
+ * mirrors the same gate (returns 404 for filtered-out tools) so MCP
34
+ * clients never see an "unsupported" surprise after picking a tool
35
+ * out of the advertised list.
36
+ *
37
+ * Replaces the previous capability-bag + capability-port-interface
38
+ * model — the indirection through fine-grained capability kinds added
39
+ * no expressive power once we settled on OS-family as the primary
40
+ * discriminator.
41
+ *
42
+ * Distinct from `DeviceInfo.capabilities` — that field is a
43
+ * descriptive verb list returned to the agent for UX/prompt shaping;
44
+ * this set is the wire-level filter for the tool registry.
45
+ */
46
+ readonly tools: ReadonlySet<string>;
47
+ /**
48
+ * Connect / warm up the backend. Idempotent. Implementations may probe
49
+ * external state (e.g. `adb devices`) and throw `DeviceError` on failure.
50
+ */
51
+ connect(): Promise<void>;
52
+ disconnect(): Promise<void>;
53
+ info(): Promise<DeviceInfo>;
54
+ /**
55
+ * Capture a screenshot. Returns the encoded bytes plus the actual
56
+ * decoded image dimensions and format (see `ScreenshotOutput`).
57
+ *
58
+ * NOTE (0.2.3 breaking change): this used to return a bare `Buffer`.
59
+ * Callers MUST destructure `data` instead of treating the result as a
60
+ * Buffer directly. The new shape lets the wire layer populate
61
+ * `ScreenshotResult.width/height` consistently with the `b64` payload
62
+ * regardless of backend-side resizing.
63
+ */
64
+ screenshot(): Promise<ScreenshotOutput>;
65
+ screenSize(): Promise<ScreenSize>;
66
+ uiDump(): Promise<UiDumpOutput>;
67
+ click(x: number, y: number, button?: "left" | "right" | "middle", clicks?: number): Promise<void>;
68
+ doubleClick(x: number, y: number): Promise<void>;
69
+ rightClick(x: number, y: number): Promise<void>;
70
+ tap(x: number, y: number): Promise<void>;
71
+ longPress(x: number, y: number, durationMs?: number): Promise<void>;
72
+ drag(x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
73
+ swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
74
+ scroll(x: number, y: number, direction: "up" | "down" | "left" | "right", amount?: number): Promise<void>;
75
+ move(x: number, y: number): Promise<void>;
76
+ typeText(text: string): Promise<void>;
77
+ pressKey(key: string): Promise<void>;
78
+ hotkey(...keys: string[]): Promise<void>;
79
+ back(): Promise<void>;
80
+ home(): Promise<void>;
81
+ navigate(direction: "back" | "forward" | "up"): Promise<void>;
82
+ launchApp(pkgOrName: string, activity?: string): Promise<void>;
83
+ executeCommand(body: string, opts?: {
84
+ timeoutS?: number;
85
+ cwd?: string;
86
+ }): Promise<ExecuteCommandOutput>;
87
+ fileRead(path: string): Promise<Buffer>;
88
+ fileWrite(path: string, content: Buffer | string): Promise<void>;
89
+ listDirectory(path: string): Promise<ListDirectoryEntry[]>;
90
+ /**
91
+ * Optional hook for backends that need to install an APK / package.
92
+ * Not part of the unified Action verb set but the ACP wire still has
93
+ * `device/install` so we keep an explicit slot here.
94
+ */
95
+ install(path: string): Promise<void>;
96
+ }
97
+ /**
98
+ * Convenience base class — subclasses override only the verbs they support and
99
+ * unsupported verbs throw a `DeviceError("unsupported")` automatically.
100
+ *
101
+ * NOTE: keep the parameter lists in sync with `SandboxBackend` so overrides
102
+ * type-check against the same shape.
103
+ */
104
+ export declare abstract class BaseSandboxBackend implements SandboxBackend {
105
+ abstract readonly os: BackendOs;
106
+ /** Derived from `os` via `osFamily()` — never override. */
107
+ get family(): BackendFamily;
108
+ /**
109
+ * Default to "no tools" — concrete backends override with their real
110
+ * set. Choosing `empty` rather than "all" forces every backend to opt
111
+ * in explicitly; a forgotten override surfaces immediately as an
112
+ * empty `/healthz.tools` instead of leaking unsupported tools.
113
+ */
114
+ readonly tools: ReadonlySet<string>;
115
+ connect(): Promise<void>;
116
+ disconnect(): Promise<void>;
117
+ abstract info(): Promise<DeviceInfo>;
118
+ abstract screenshot(): Promise<ScreenshotOutput>;
119
+ abstract screenSize(): Promise<ScreenSize>;
120
+ uiDump(): Promise<UiDumpOutput>;
121
+ click(_x: number, _y: number, _button?: "left" | "right" | "middle", _clicks?: number): Promise<void>;
122
+ doubleClick(_x: number, _y: number): Promise<void>;
123
+ rightClick(_x: number, _y: number): Promise<void>;
124
+ tap(_x: number, _y: number): Promise<void>;
125
+ longPress(_x: number, _y: number, _durationMs?: number): Promise<void>;
126
+ drag(_x1: number, _y1: number, _x2: number, _y2: number, _durationMs?: number): Promise<void>;
127
+ swipe(_x1: number, _y1: number, _x2: number, _y2: number, _durationMs?: number): Promise<void>;
128
+ scroll(_x: number, _y: number, _direction: "up" | "down" | "left" | "right", _amount?: number): Promise<void>;
129
+ move(_x: number, _y: number): Promise<void>;
130
+ typeText(_text: string): Promise<void>;
131
+ pressKey(_key: string): Promise<void>;
132
+ hotkey(..._keys: string[]): Promise<void>;
133
+ back(): Promise<void>;
134
+ home(): Promise<void>;
135
+ navigate(_direction: "back" | "forward" | "up"): Promise<void>;
136
+ launchApp(_pkgOrName: string, _activity?: string): Promise<void>;
137
+ executeCommand(_body: string, _opts?: {
138
+ timeoutS?: number;
139
+ cwd?: string;
140
+ }): Promise<ExecuteCommandOutput>;
141
+ fileRead(_path: string): Promise<Buffer>;
142
+ fileWrite(_path: string, _content: Buffer | string): Promise<void>;
143
+ listDirectory(_path: string): Promise<ListDirectoryEntry[]>;
144
+ install(_path: string): Promise<void>;
145
+ /**
146
+ * Returns a rejected promise (not a sync throw) so callers using
147
+ * `await backend.foo()` always go through the async error pipe.
148
+ */
149
+ protected unsupported<T = never>(verb: string): Promise<T>;
150
+ }
@@ -0,0 +1,116 @@
1
+ /**
2
+ * SandboxBackend — abstract device-control surface used by every MCP tool.
3
+ *
4
+ * Mirrors the Python reference at `mcp_tools/backend.py`. Implementations live
5
+ * in `backends/{android-adb,desktop,stubs/...}.ts`. The MCP server's tool
6
+ * registry maps each MCP tool (`click`, `tap`, `screenshot`, ...) to the
7
+ * matching method here.
8
+ *
9
+ * Methods are intentionally narrow / verb-shaped — the action-mapping layer in
10
+ * `server/action-mapping.ts` translates a unified `Action` into the right
11
+ * method+args.
12
+ */
13
+ import { DeviceError, osFamily } from "@beeos-ai/device-common";
14
+ /**
15
+ * Convenience base class — subclasses override only the verbs they support and
16
+ * unsupported verbs throw a `DeviceError("unsupported")` automatically.
17
+ *
18
+ * NOTE: keep the parameter lists in sync with `SandboxBackend` so overrides
19
+ * type-check against the same shape.
20
+ */
21
+ export class BaseSandboxBackend {
22
+ /** Derived from `os` via `osFamily()` — never override. */
23
+ get family() {
24
+ return osFamily(this.os);
25
+ }
26
+ /**
27
+ * Default to "no tools" — concrete backends override with their real
28
+ * set. Choosing `empty` rather than "all" forces every backend to opt
29
+ * in explicitly; a forgotten override surfaces immediately as an
30
+ * empty `/healthz.tools` instead of leaking unsupported tools.
31
+ */
32
+ tools = new Set();
33
+ async connect() {
34
+ /* default no-op */
35
+ }
36
+ async disconnect() {
37
+ /* default no-op */
38
+ }
39
+ async uiDump() {
40
+ return { supported: false };
41
+ }
42
+ click(_x, _y, _button, _clicks) {
43
+ return this.unsupported("click");
44
+ }
45
+ doubleClick(_x, _y) {
46
+ return this.unsupported("double_click");
47
+ }
48
+ rightClick(_x, _y) {
49
+ return this.unsupported("right_click");
50
+ }
51
+ tap(_x, _y) {
52
+ return this.unsupported("tap");
53
+ }
54
+ longPress(_x, _y, _durationMs) {
55
+ return this.unsupported("long_press");
56
+ }
57
+ drag(_x1, _y1, _x2, _y2, _durationMs) {
58
+ return this.unsupported("drag");
59
+ }
60
+ swipe(_x1, _y1, _x2, _y2, _durationMs) {
61
+ return this.unsupported("swipe");
62
+ }
63
+ scroll(_x, _y, _direction, _amount) {
64
+ return this.unsupported("scroll");
65
+ }
66
+ move(_x, _y) {
67
+ return this.unsupported("move");
68
+ }
69
+ typeText(_text) {
70
+ return this.unsupported("type");
71
+ }
72
+ pressKey(_key) {
73
+ return this.unsupported("key");
74
+ }
75
+ hotkey(..._keys) {
76
+ return this.unsupported("hotkey");
77
+ }
78
+ back() {
79
+ return this.unsupported("back");
80
+ }
81
+ home() {
82
+ return this.unsupported("home");
83
+ }
84
+ navigate(_direction) {
85
+ return this.unsupported("navigate");
86
+ }
87
+ launchApp(_pkgOrName, _activity) {
88
+ return this.unsupported("launch_app");
89
+ }
90
+ executeCommand(_body, _opts) {
91
+ return this.unsupported("execute_command");
92
+ }
93
+ fileRead(_path) {
94
+ return this.unsupported("file_read");
95
+ }
96
+ fileWrite(_path, _content) {
97
+ return this.unsupported("file_write");
98
+ }
99
+ listDirectory(_path) {
100
+ return this.unsupported("list_directory");
101
+ }
102
+ install(_path) {
103
+ return this.unsupported("install");
104
+ }
105
+ /**
106
+ * Returns a rejected promise (not a sync throw) so callers using
107
+ * `await backend.foo()` always go through the async error pipe.
108
+ */
109
+ unsupported(verb) {
110
+ return Promise.reject(new DeviceError(`tool '${verb}' is not supported by backend '${this.os}'`, {
111
+ subtype: "unsupported",
112
+ retriable: false,
113
+ }));
114
+ }
115
+ }
116
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/backends/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * DesktopBackend — mock desktop sandbox for local dev / unit tests / CI.
3
+ *
4
+ * Migrated from `device-agent/src/adapters/device-desktop.ts`. The mock returns
5
+ * a fixed canvas, records every action into an in-memory log, and never
6
+ * touches the host. It supports `executeCommand` returning a deterministic
7
+ * mock stdout so callers can exercise the full code path.
8
+ */
9
+ import { type DeviceInfo } from "@beeos-ai/device-common";
10
+ import { BaseSandboxBackend, type ExecuteCommandOutput, type ScreenSize, type ScreenshotOutput } from "./base.js";
11
+ type MockDesktopOs = "desktop-macos" | "desktop-linux" | "desktop-windows";
12
+ export interface DesktopBackendOptions {
13
+ width?: number;
14
+ height?: number;
15
+ name?: string;
16
+ os?: MockDesktopOs;
17
+ }
18
+ interface DesktopAction {
19
+ verb: string;
20
+ args: Record<string, unknown>;
21
+ at: number;
22
+ }
23
+ export declare class DesktopBackend extends BaseSandboxBackend {
24
+ readonly os: MockDesktopOs;
25
+ readonly tools: ReadonlySet<string>;
26
+ /** In-memory action log, primarily for tests. */
27
+ readonly actions: DesktopAction[];
28
+ private readonly width;
29
+ private readonly height;
30
+ private readonly name;
31
+ private connected;
32
+ constructor(opts?: DesktopBackendOptions);
33
+ connect(): Promise<void>;
34
+ disconnect(): Promise<void>;
35
+ info(): Promise<DeviceInfo>;
36
+ screenshot(): Promise<ScreenshotOutput>;
37
+ screenSize(): Promise<ScreenSize>;
38
+ click(x: number, y: number, button?: "left" | "right" | "middle", clicks?: number): Promise<void>;
39
+ doubleClick(x: number, y: number): Promise<void>;
40
+ rightClick(x: number, y: number): Promise<void>;
41
+ tap(x: number, y: number): Promise<void>;
42
+ longPress(x: number, y: number, durationMs?: number): Promise<void>;
43
+ drag(x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
44
+ swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
45
+ scroll(x: number, y: number, direction: "up" | "down" | "left" | "right", amount?: number): Promise<void>;
46
+ move(x: number, y: number): Promise<void>;
47
+ typeText(text: string): Promise<void>;
48
+ pressKey(key: string): Promise<void>;
49
+ hotkey(...keys: string[]): Promise<void>;
50
+ back(): Promise<void>;
51
+ home(): Promise<void>;
52
+ navigate(direction: "back" | "forward" | "up"): Promise<void>;
53
+ launchApp(pkgOrName: string, activity?: string): Promise<void>;
54
+ executeCommand(body: string, opts?: {
55
+ timeoutS?: number;
56
+ cwd?: string;
57
+ }): Promise<ExecuteCommandOutput>;
58
+ install(path: string): Promise<void>;
59
+ fileWrite(path: string, content: Buffer | string): Promise<void>;
60
+ private record;
61
+ }
62
+ export {};
@@ -0,0 +1,176 @@
1
+ /**
2
+ * DesktopBackend — mock desktop sandbox for local dev / unit tests / CI.
3
+ *
4
+ * Migrated from `device-agent/src/adapters/device-desktop.ts`. The mock returns
5
+ * a fixed canvas, records every action into an in-memory log, and never
6
+ * touches the host. It supports `executeCommand` returning a deterministic
7
+ * mock stdout so callers can exercise the full code path.
8
+ */
9
+ import { randomBytes } from "node:crypto";
10
+ import { COMMON_TOOLS, DESKTOP_TOOLS, } from "@beeos-ai/device-common";
11
+ import { BaseSandboxBackend, } from "./base.js";
12
+ /**
13
+ * Mock desktop sandbox tool catalogue.
14
+ *
15
+ * The mock records gestures into an in-memory log without touching the
16
+ * host. We advertise the full common tool set MINUS `file_read` /
17
+ * `file_write` / `list_directory` (those deliberately stay unsupported
18
+ * so the integration test that asserts a strict "tool filtered out →
19
+ * 404" gate has something realistic to exercise) plus the full
20
+ * `DESKTOP_TOOLS` catalogue.
21
+ *
22
+ * Mobile-only tools (`tap`, `swipe`, `back`, `home`, `ui_dump`) are
23
+ * intentionally NOT advertised — the mock's `tap`/`swipe` overrides
24
+ * remain in place as a safety net for any direct callers, but the
25
+ * registry will never route to them on a desktop OS.
26
+ */
27
+ const MOCK_DESKTOP_TOOLS = new Set([
28
+ ...COMMON_TOOLS.filter((t) => !["file_read", "file_write", "list_directory"].includes(t)),
29
+ ...DESKTOP_TOOLS,
30
+ ]);
31
+ export class DesktopBackend extends BaseSandboxBackend {
32
+ os;
33
+ tools = MOCK_DESKTOP_TOOLS;
34
+ /** In-memory action log, primarily for tests. */
35
+ actions = [];
36
+ width;
37
+ height;
38
+ name;
39
+ connected = false;
40
+ constructor(opts = {}) {
41
+ super();
42
+ this.width = opts.width ?? 1920;
43
+ this.height = opts.height ?? 1080;
44
+ this.name = opts.name ?? "Desktop (mock)";
45
+ this.os = opts.os ?? defaultDesktopOs();
46
+ }
47
+ async connect() {
48
+ this.connected = true;
49
+ }
50
+ async disconnect() {
51
+ this.connected = false;
52
+ }
53
+ async info() {
54
+ const capabilities = [
55
+ "screenshot",
56
+ "tap",
57
+ "swipe",
58
+ "type",
59
+ "shell",
60
+ ];
61
+ return {
62
+ type: this.os,
63
+ name: this.name,
64
+ os: prettyOsName(this.os),
65
+ width: this.width,
66
+ height: this.height,
67
+ capabilities,
68
+ osVersion: "mock",
69
+ density: 96,
70
+ metadata: { currentApp: "Mock", connected: String(this.connected) },
71
+ };
72
+ }
73
+ async screenshot() {
74
+ // The mock canvas is a fixed 1×1 PNG — but agents simulate against
75
+ // the configured canvas dimensions, so we report those here so that
76
+ // tests asserting `ScreenshotResult.width === backend.width` work
77
+ // without paying for a real `sharp` decode.
78
+ return {
79
+ data: Buffer.from(TINY_PNG_BASE64, "base64"),
80
+ width: this.width,
81
+ height: this.height,
82
+ format: "png",
83
+ };
84
+ }
85
+ async screenSize() {
86
+ return { w: this.width, h: this.height };
87
+ }
88
+ async click(x, y, button = "left", clicks = 1) {
89
+ this.record("click", { x, y, button, clicks });
90
+ }
91
+ async doubleClick(x, y) {
92
+ this.record("double_click", { x, y });
93
+ }
94
+ async rightClick(x, y) {
95
+ this.record("right_click", { x, y });
96
+ }
97
+ async tap(x, y) {
98
+ this.record("tap", { x, y });
99
+ }
100
+ async longPress(x, y, durationMs) {
101
+ this.record("long_press", { x, y, durationMs });
102
+ }
103
+ async drag(x1, y1, x2, y2, durationMs) {
104
+ this.record("drag", { x1, y1, x2, y2, durationMs });
105
+ }
106
+ async swipe(x1, y1, x2, y2, durationMs) {
107
+ this.record("swipe", { x1, y1, x2, y2, durationMs });
108
+ }
109
+ async scroll(x, y, direction, amount) {
110
+ this.record("scroll", { x, y, direction, amount });
111
+ }
112
+ async move(x, y) {
113
+ this.record("move", { x, y });
114
+ }
115
+ async typeText(text) {
116
+ this.record("type", { text });
117
+ }
118
+ async pressKey(key) {
119
+ this.record("key", { key });
120
+ }
121
+ async hotkey(...keys) {
122
+ this.record("hotkey", { keys });
123
+ }
124
+ async back() {
125
+ this.record("back", {});
126
+ }
127
+ async home() {
128
+ this.record("home", {});
129
+ }
130
+ async navigate(direction) {
131
+ this.record("navigate", { direction });
132
+ }
133
+ async launchApp(pkgOrName, activity) {
134
+ this.record("launch_app", { pkgOrName, activity });
135
+ }
136
+ async executeCommand(body, opts) {
137
+ this.record("execute_command", { body, ...opts });
138
+ return {
139
+ stdout: `mock-stdout:${randomBytes(4).toString("hex")}`,
140
+ stderr: "",
141
+ exitCode: 0,
142
+ };
143
+ }
144
+ async install(path) {
145
+ this.record("install", { path });
146
+ }
147
+ async fileWrite(path, content) {
148
+ const len = typeof content === "string" ? Buffer.byteLength(content) : content.length;
149
+ this.record("file_write", { path, bytes: len });
150
+ }
151
+ record(verb, args) {
152
+ this.actions.push({ verb, args, at: Date.now() });
153
+ }
154
+ }
155
+ function defaultDesktopOs() {
156
+ switch (process.platform) {
157
+ case "darwin":
158
+ return "desktop-macos";
159
+ case "win32":
160
+ return "desktop-windows";
161
+ default:
162
+ return "desktop-linux";
163
+ }
164
+ }
165
+ function prettyOsName(t) {
166
+ switch (t) {
167
+ case "desktop-macos":
168
+ return "macOS";
169
+ case "desktop-windows":
170
+ return "Windows";
171
+ case "desktop-linux":
172
+ return "Linux";
173
+ }
174
+ }
175
+ const TINY_PNG_BASE64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";
176
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/backends/desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Backend registry — string → backend factory.
3
+ *
4
+ * Used by the CLI (`device-mcp-server --backend android ...`) and
5
+ * `server/app.ts` to resolve a `SandboxBackend` from configuration.
6
+ *
7
+ * **Naming convention** (after the self-hosted plan §3.4 "去掉 backend
8
+ * 私有词"):
9
+ *
10
+ * Canonical short name (CLI surface) Aliases (back-compat / verbose)
11
+ * --------------------------------- --------------------------------------
12
+ * adb → AndroidAdbBackend "android"
13
+ * macos → MacOsBackend "mac", "desktop-macos"
14
+ * linux → LinuxBackend "desktop-linux" (used to be the mock —
15
+ * now resolves to the real native
16
+ * LinuxBackend; the in-memory mock is
17
+ * still reachable via "mock-desktop"
18
+ * and is used by integration tests)
19
+ * windows → WindowsBackend "win", "desktop-windows"
20
+ * ios → IosBackend (zero caps stub, reserved for WDA / libimobiledevice)
21
+ *
22
+ * desktop "smart-resolve": MacOsBackend on darwin,
23
+ * LinuxBackend on linux, WindowsBackend
24
+ * on win32, mock elsewhere.
25
+ *
26
+ * mock-desktop DesktopBackend (in-memory, for tests
27
+ * — never picks itself in `desktop`).
28
+ */
29
+ import type { BackendFamily, BackendOs, SandboxBackend } from "./base.js";
30
+ import { AndroidAdbBackend, type AndroidAdbBackendOptions } from "./android-adb.js";
31
+ import { DesktopBackend, type DesktopBackendOptions } from "./desktop.js";
32
+ import { LinuxBackend, type LinuxBackendOptions } from "./linux.js";
33
+ import { MacOsBackend, type MacOsBackendOptions } from "./mac.js";
34
+ import { WindowsBackend, type WindowsBackendOptions } from "./stubs/windows.js";
35
+ import { IosBackend } from "./stubs/ios.js";
36
+ /**
37
+ * Public CLI surface — what `--backend` accepts. Intentionally narrow:
38
+ * the four short names from the plan (`adb`, `macos`, `linux`,
39
+ * `windows`) plus `desktop` for "smart-resolve to my OS" and a small
40
+ * back-compat alias set so existing devices.json entries written by
41
+ * older CLI versions still work.
42
+ */
43
+ export type BackendName = "adb" | "macos" | "linux" | "windows" | "desktop" | "android" | "mac" | "win" | "desktop-linux" | "desktop-windows" | "desktop-macos" | "mock-desktop" | "ios";
44
+ export interface CreateBackendOptions {
45
+ android?: AndroidAdbBackendOptions;
46
+ desktop?: DesktopBackendOptions;
47
+ macos?: MacOsBackendOptions;
48
+ linux?: LinuxBackendOptions;
49
+ windows?: WindowsBackendOptions;
50
+ }
51
+ /**
52
+ * Resolve any of the canonical / alias / smart-resolve names to a real
53
+ * backend instance. Aliases collapse early so the rest of the codebase
54
+ * only ever sees the canonical name when building options.
55
+ */
56
+ export declare function createBackend(name: BackendName, opts?: CreateBackendOptions): SandboxBackend;
57
+ /**
58
+ * `--backend` autocomplete / `--help` source. Lists canonical names
59
+ * first, then aliases, so help output reads top-down most-useful.
60
+ */
61
+ export declare const SUPPORTED_BACKENDS: BackendName[];
62
+ export type { SandboxBackend, BackendFamily, BackendOs, AndroidAdbBackendOptions, DesktopBackendOptions, LinuxBackendOptions, MacOsBackendOptions, WindowsBackendOptions, };
63
+ export { AndroidAdbBackend, DesktopBackend, LinuxBackend, MacOsBackend, WindowsBackend, IosBackend, };