@elizaos/capacitor-desktop 1.0.0 → 2.0.3-beta.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shaw Walters and elizaOS Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # @elizaos/capacitor-desktop
2
+
3
+ Capacitor plugin that gives Eliza agent UIs access to native desktop OS capabilities. When running inside Electrobun it provides the full feature set; in a browser it falls back gracefully using Web APIs or safe unavailable results.
4
+
5
+ ## What it does
6
+
7
+ Adds the `Desktop` singleton to the renderer process with these capability groups:
8
+
9
+ | Capability | Node/Electrobun | Browser |
10
+ |---|---|---|
11
+ | System tray (icon, tooltip, menu) | Full | Unavailable return |
12
+ | Global keyboard shortcuts | Full | Unavailable return (`success: false`) |
13
+ | Auto-launch at login | Full | Unavailable return |
14
+ | Window management (size, position, fullscreen, opacity, always-on-top) | Full | Partial (fullscreen, focus, close) |
15
+ | Native notifications | Full | Web Notification API |
16
+ | Power monitor (battery, idle state) | Full | Battery API where available |
17
+ | App controls (quit, relaunch, getPath, getVersion) | Full | Limited (`getPath` throws) |
18
+ | Clipboard (text, HTML, RTF, image) | Full | Text + HTML via Clipboard API |
19
+ | Shell (openExternal, showItemInFolder, beep) | Full | `window.open`; others unavailable |
20
+ | System permissions (check/request) | Full via prober registry | camera, mic, location, notifications only |
21
+
22
+ ## Events
23
+
24
+ Subscribe via `Desktop.addListener(eventName, listener)`:
25
+
26
+ - **Tray:** `trayClick`, `trayDoubleClick`, `trayRightClick`, `trayMenuClick`
27
+ - **Shortcuts:** `shortcutPressed`
28
+ - **Notifications:** `notificationClick`, `notificationAction`, `notificationReply`
29
+ - **Window:** `windowFocus`, `windowBlur`, `windowMaximize`, `windowUnmaximize`, `windowMinimize`, `windowRestore`, `windowClose`
30
+ - **Power:** `powerSuspend`, `powerResume`, `powerOnAC`, `powerOnBattery`
31
+
32
+ ## Usage
33
+
34
+ ```typescript
35
+ import { Desktop } from "@elizaos/capacitor-desktop";
36
+
37
+ // System tray
38
+ await Desktop.createTray({
39
+ icon: "/path/to/icon.png",
40
+ tooltip: "My Agent",
41
+ menu: [
42
+ { id: "show", label: "Show" },
43
+ { id: "quit", label: "Quit" },
44
+ ],
45
+ });
46
+
47
+ Desktop.addListener("trayMenuClick", ({ itemId }) => {
48
+ if (itemId === "quit") Desktop.quit();
49
+ });
50
+
51
+ // Global shortcut
52
+ await Desktop.registerShortcut({ id: "toggle", accelerator: "CmdOrCtrl+Shift+Space" });
53
+ Desktop.addListener("shortcutPressed", ({ id }) => {
54
+ if (id === "toggle") Desktop.showWindow();
55
+ });
56
+
57
+ // Clipboard
58
+ await Desktop.writeToClipboard({ text: "hello" });
59
+ const { text } = await Desktop.readFromClipboard();
60
+
61
+ // System permission check
62
+ const state = await Desktop.checkPermission({ id: "microphone" });
63
+ if (state.status !== "granted") {
64
+ await Desktop.requestPermission({ id: "microphone", reason: "Voice input" });
65
+ }
66
+ ```
67
+
68
+ ## Platform availability
69
+
70
+ - **Node + Electrobun:** Full support for all capabilities.
71
+ - **Browser:** Notifications, clipboard, window focus/close/fullscreen, and permissions for `camera`, `microphone`, `location`, `notifications` work via Web APIs. System tray, global shortcuts, auto-launch, `getPath`, and `showItemInFolder` are unavailable.
72
+ - **iOS / Android:** Not supported.
73
+
74
+ ## Building
75
+
76
+ ```bash
77
+ bun run --cwd plugins/plugin-native-desktop build
78
+ ```
79
+
80
+ This runs `tsc` then rollup to produce `dist/esm/` (ESM), `dist/plugin.js` (IIFE), and `dist/plugin.cjs.js` (CJS).
81
+
82
+ ## Package name
83
+
84
+ The npm package name is `@elizaos/capacitor-desktop`. The directory is `plugins/plugin-native-desktop`.
@@ -107,6 +107,27 @@ export interface PowerMonitorState {
107
107
  idleState: "active" | "idle" | "locked" | "unknown";
108
108
  idleTime: number;
109
109
  }
110
+ /**
111
+ * System permission probing surface — exposed by the Desktop plugin so
112
+ * the renderer can ask "is this permission granted?" / "request this
113
+ * permission" without triggering implicit OS dialogs.
114
+ *
115
+ * The id set mirrors the PermissionId from
116
+ * `@elizaos/shared/contracts/permissions`. Defined inline here to keep the
117
+ * Capacitor plugin package free of cross-package type imports.
118
+ */
119
+ export type DesktopPermissionId = "screen-recording" | "accessibility" | "reminders" | "calendar" | "health" | "screentime" | "contacts" | "notes" | "microphone" | "camera" | "location" | "shell" | "website-blocking" | "notifications" | "full-disk" | "automation" | "speech-recognition" | "photos" | "phone" | "messages" | "wifi" | "bluetooth" | "app-blocking" | "usage-access" | "overlay" | "write-settings" | "local-network" | "battery-optimization";
120
+ export type DesktopPermissionStatus = "granted" | "denied" | "not-determined" | "restricted" | "not-applicable";
121
+ export type DesktopPermissionRestrictedReason = "entitlement_required" | "platform_unsupported" | "os_policy";
122
+ export interface DesktopPermissionState {
123
+ id: DesktopPermissionId;
124
+ status: DesktopPermissionStatus;
125
+ restrictedReason?: DesktopPermissionRestrictedReason;
126
+ lastChecked: number;
127
+ lastRequested?: number;
128
+ canRequest: boolean;
129
+ platform: "darwin" | "win32" | "linux";
130
+ }
110
131
  export interface DesktopPlugin {
111
132
  createTray(options: TrayOptions): Promise<void>;
112
133
  updateTray(options: Partial<TrayOptions>): Promise<void>;
@@ -207,6 +228,13 @@ export interface DesktopPlugin {
207
228
  path: string;
208
229
  }): Promise<void>;
209
230
  beep(): Promise<void>;
231
+ checkPermission(options: {
232
+ id: DesktopPermissionId;
233
+ }): Promise<DesktopPermissionState>;
234
+ requestPermission(options: {
235
+ id: DesktopPermissionId;
236
+ reason: string;
237
+ }): Promise<DesktopPermissionState>;
210
238
  addListener(eventName: "trayClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
211
239
  addListener(eventName: "trayDoubleClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
212
240
  addListener(eventName: "trayRightClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
package/dist/esm/web.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { WebPlugin } from "@capacitor/core";
2
- import type { AutoLaunchOptions, GlobalShortcut, GlobalShortcutEvent, NotificationEvent, NotificationOptions, PowerMonitorState, TrayClickEvent, TrayMenuClickEvent, TrayMenuItem, TrayOptions, WindowBounds, WindowOptions } from "./definitions";
2
+ import type { AutoLaunchOptions, DesktopPermissionId, DesktopPermissionState, GlobalShortcut, GlobalShortcutEvent, NotificationEvent, NotificationOptions, PowerMonitorState, TrayClickEvent, TrayMenuClickEvent, TrayMenuItem, TrayOptions, WindowBounds, WindowOptions } from "./definitions";
3
3
  type DesktopEventData = TrayClickEvent | TrayMenuClickEvent | GlobalShortcutEvent | NotificationEvent | undefined;
4
4
  export declare class DesktopWeb extends WebPlugin {
5
5
  private pluginListeners;
@@ -106,6 +106,13 @@ export declare class DesktopWeb extends WebPlugin {
106
106
  }>;
107
107
  removeAllListeners(): Promise<void>;
108
108
  protected notifyListeners(eventName: string, data: DesktopEventData): void;
109
+ checkPermission(options: {
110
+ id: DesktopPermissionId;
111
+ }): Promise<DesktopPermissionState>;
112
+ requestPermission(options: {
113
+ id: DesktopPermissionId;
114
+ reason: string;
115
+ }): Promise<DesktopPermissionState>;
109
116
  }
110
117
  export {};
111
118
  //# sourceMappingURL=web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
package/dist/esm/web.js CHANGED
@@ -1,49 +1,171 @@
1
1
  import { WebPlugin } from "@capacitor/core";
2
- // No-op for features unavailable on web; callers should check return values.
3
- const webUnavailable = (_feature) => { };
2
+ const BROWSER_PERMISSION_IDS = new Set([
3
+ "camera",
4
+ "microphone",
5
+ "location",
6
+ "notifications",
7
+ ]);
8
+ const SAFE_EXTERNAL_PROTOCOLS = new Set(["http:", "https:", "mailto:", "tel:"]);
9
+ function assertSafeExternalUrl(url) {
10
+ if (typeof url !== "string" || url.trim().length === 0) {
11
+ throw new Error("url must be a non-empty external URL");
12
+ }
13
+ let parsed;
14
+ try {
15
+ parsed = new URL(url);
16
+ }
17
+ catch {
18
+ throw new Error("url must be a valid external URL");
19
+ }
20
+ if (!SAFE_EXTERNAL_PROTOCOLS.has(parsed.protocol)) {
21
+ throw new Error("url protocol is not allowed");
22
+ }
23
+ return parsed.toString();
24
+ }
25
+ function getDesktopRpc() {
26
+ const g = globalThis;
27
+ if (typeof window !== "undefined") {
28
+ return window.__ELIZA_ELECTROBUN_RPC__;
29
+ }
30
+ return g.window?.__ELIZA_ELECTROBUN_RPC__ ?? g.__ELIZA_ELECTROBUN_RPC__;
31
+ }
32
+ function currentPlatform() {
33
+ const proc = globalThis.process;
34
+ const p = proc?.platform;
35
+ if (p === "darwin" || p === "win32" || p === "linux")
36
+ return p;
37
+ if (typeof navigator !== "undefined") {
38
+ const platform = navigator.platform.toLowerCase();
39
+ if (platform.includes("mac"))
40
+ return "darwin";
41
+ if (platform.includes("win"))
42
+ return "win32";
43
+ }
44
+ return "linux";
45
+ }
46
+ function isRecord(value) {
47
+ return Boolean(value) && typeof value === "object";
48
+ }
49
+ function isDesktopPermissionState(value, id) {
50
+ return (isRecord(value) &&
51
+ value.id === id &&
52
+ typeof value.status === "string" &&
53
+ typeof value.canRequest === "boolean" &&
54
+ typeof value.lastChecked === "number");
55
+ }
56
+ function stateFromStatus(id, status, options = {}) {
57
+ const state = {
58
+ id,
59
+ status,
60
+ lastChecked: options.lastChecked ?? Date.now(),
61
+ canRequest: options.canRequest ?? status === "not-determined",
62
+ platform: options.platform ?? currentPlatform(),
63
+ };
64
+ if (options.lastRequested !== undefined) {
65
+ state.lastRequested = options.lastRequested;
66
+ }
67
+ if (options.restrictedReason !== undefined) {
68
+ state.restrictedReason = options.restrictedReason;
69
+ }
70
+ return state;
71
+ }
72
+ function mapBrowserPermissionState(state) {
73
+ if (state === "granted")
74
+ return "granted";
75
+ if (state === "denied")
76
+ return "denied";
77
+ if (state === "prompt" || state === "default")
78
+ return "not-determined";
79
+ return null;
80
+ }
81
+ async function queryBrowserPermission(id) {
82
+ if (!BROWSER_PERMISSION_IDS.has(id) || typeof navigator === "undefined") {
83
+ return null;
84
+ }
85
+ if (id === "notifications" && typeof Notification !== "undefined") {
86
+ const status = mapBrowserPermissionState(Notification.permission);
87
+ return status ? stateFromStatus(id, status) : null;
88
+ }
89
+ if (!navigator.permissions?.query) {
90
+ return null;
91
+ }
92
+ const permissionName = id === "location" ? "geolocation" : id;
93
+ try {
94
+ const result = await navigator.permissions.query({
95
+ name: permissionName,
96
+ });
97
+ const status = mapBrowserPermissionState(result.state);
98
+ return status ? stateFromStatus(id, status) : null;
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ }
104
+ async function requestBrowserPermission(id) {
105
+ if (!BROWSER_PERMISSION_IDS.has(id) || typeof navigator === "undefined") {
106
+ return null;
107
+ }
108
+ if (id === "camera" || id === "microphone") {
109
+ try {
110
+ const stream = await navigator.mediaDevices?.getUserMedia?.({
111
+ video: id === "camera",
112
+ audio: id === "microphone",
113
+ });
114
+ for (const track of stream?.getTracks?.() ?? []) {
115
+ track.stop();
116
+ }
117
+ }
118
+ catch {
119
+ // Query below returns denied when the browser recorded a denial.
120
+ }
121
+ const checked = await queryBrowserPermission(id);
122
+ return checked ? { ...checked, lastRequested: Date.now() } : null;
123
+ }
124
+ if (id === "location" && navigator.geolocation) {
125
+ const requestedStatus = await new Promise((resolve) => {
126
+ navigator.geolocation.getCurrentPosition(() => resolve("granted"), (err) => resolve(err.code === err.PERMISSION_DENIED ? "denied" : null), { maximumAge: 0, timeout: 10000 });
127
+ });
128
+ const checked = await queryBrowserPermission(id);
129
+ if (checked)
130
+ return { ...checked, lastRequested: Date.now() };
131
+ return requestedStatus
132
+ ? stateFromStatus(id, requestedStatus, { lastRequested: Date.now() })
133
+ : null;
134
+ }
135
+ if (id === "notifications" && typeof Notification !== "undefined") {
136
+ const status = mapBrowserPermissionState(await Notification.requestPermission());
137
+ return status
138
+ ? stateFromStatus(id, status, { lastRequested: Date.now() })
139
+ : null;
140
+ }
141
+ return queryBrowserPermission(id);
142
+ }
4
143
  export class DesktopWeb extends WebPlugin {
5
144
  constructor() {
6
145
  super(...arguments);
7
146
  this.pluginListeners = [];
8
147
  }
9
148
  // System Tray - Not available in browser
10
- async createTray(_options) {
11
- webUnavailable("System tray");
12
- }
13
- async updateTray(_options) {
14
- webUnavailable("System tray");
15
- }
16
- async destroyTray() {
17
- webUnavailable("System tray");
18
- }
19
- async setTrayMenu(_options) {
20
- webUnavailable("System tray");
21
- }
149
+ async createTray(_options) { }
150
+ async updateTray(_options) { }
151
+ async destroyTray() { }
152
+ async setTrayMenu(_options) { }
22
153
  // Global Shortcuts - Not available in browser
23
154
  async registerShortcut(_options) {
24
- webUnavailable("Global shortcuts");
25
155
  return { success: false };
26
156
  }
27
- async unregisterShortcut(_options) {
28
- webUnavailable("Global shortcuts");
29
- }
30
- async unregisterAllShortcuts() {
31
- webUnavailable("Global shortcuts");
32
- }
157
+ async unregisterShortcut(_options) { }
158
+ async unregisterAllShortcuts() { }
33
159
  async isShortcutRegistered(_options) {
34
160
  return { registered: false };
35
161
  }
36
162
  // Auto Launch - Not available in browser
37
- async setAutoLaunch(_options) {
38
- webUnavailable("Auto launch");
39
- }
163
+ async setAutoLaunch(_options) { }
40
164
  async getAutoLaunchStatus() {
41
165
  return { enabled: false, openAsHidden: false };
42
166
  }
43
167
  // Window Management - Limited in browser
44
- async setWindowOptions(_options) {
45
- webUnavailable("Window options");
46
- }
168
+ async setWindowOptions(_options) { }
47
169
  async getWindowBounds() {
48
170
  return {
49
171
  x: window.screenX,
@@ -52,27 +174,17 @@ export class DesktopWeb extends WebPlugin {
52
174
  height: window.outerHeight,
53
175
  };
54
176
  }
55
- async setWindowBounds(_options) {
56
- webUnavailable("Setting window bounds");
57
- }
58
- async minimizeWindow() {
59
- webUnavailable("Window minimize");
60
- }
61
- async maximizeWindow() {
62
- webUnavailable("Window maximize");
63
- }
64
- async unmaximizeWindow() {
65
- webUnavailable("Window unmaximize");
66
- }
177
+ async setWindowBounds(_options) { }
178
+ async minimizeWindow() { }
179
+ async maximizeWindow() { }
180
+ async unmaximizeWindow() { }
67
181
  async closeWindow() {
68
182
  window.close();
69
183
  }
70
184
  async showWindow() {
71
185
  window.focus();
72
186
  }
73
- async hideWindow() {
74
- webUnavailable("Window hide");
75
- }
187
+ async hideWindow() { }
76
188
  async focusWindow() {
77
189
  window.focus();
78
190
  }
@@ -88,17 +200,13 @@ export class DesktopWeb extends WebPlugin {
88
200
  async isWindowFocused() {
89
201
  return { focused: document.hasFocus() };
90
202
  }
91
- async setAlwaysOnTop(_options) {
92
- webUnavailable("Always on top");
93
- }
203
+ async setAlwaysOnTop(_options) { }
94
204
  async setFullscreen(options) {
95
205
  options.flag
96
206
  ? document.documentElement.requestFullscreen()
97
207
  : document.exitFullscreen();
98
208
  }
99
- async setOpacity(_options) {
100
- webUnavailable("Window opacity");
101
- }
209
+ async setOpacity(_options) { }
102
210
  // Notifications - Using Web Notification API
103
211
  async showNotification(options) {
104
212
  const id = `notification_${Date.now()}`;
@@ -140,10 +248,14 @@ export class DesktopWeb extends WebPlugin {
140
248
  if (getBattery) {
141
249
  try {
142
250
  const battery = await getBattery.call(navigator);
251
+ const level = typeof battery.level === "number" && Number.isFinite(battery.level)
252
+ ? Math.max(0, Math.min(100, battery.level * 100))
253
+ : undefined;
254
+ const charging = typeof battery.charging === "boolean" ? battery.charging : undefined;
143
255
  return {
144
- onBattery: !battery.charging,
145
- batteryLevel: battery.level * 100,
146
- isCharging: battery.charging,
256
+ onBattery: charging === undefined ? false : !charging,
257
+ batteryLevel: level,
258
+ isCharging: charging,
147
259
  idleState: "active", // Idle detection not available on web
148
260
  idleTime: 0,
149
261
  };
@@ -204,11 +316,9 @@ export class DesktopWeb extends WebPlugin {
204
316
  }
205
317
  // Shell
206
318
  async openExternal(options) {
207
- window.open(options.url, "_blank");
208
- }
209
- async showItemInFolder(_options) {
210
- webUnavailable("Show in folder");
319
+ window.open(assertSafeExternalUrl(options.url), "_blank", "noopener");
211
320
  }
321
+ async showItemInFolder(_options) { }
212
322
  async beep() {
213
323
  const ctx = new AudioContext();
214
324
  const osc = ctx.createOscillator();
@@ -269,4 +379,40 @@ export class DesktopWeb extends WebPlugin {
269
379
  l.callback(data);
270
380
  });
271
381
  }
382
+ async checkPermission(options) {
383
+ const rpc = getDesktopRpc();
384
+ const request = rpc?.request?.permissionsCheck;
385
+ if (request) {
386
+ const bridged = await request.call(rpc.request, { id: options.id });
387
+ if (isDesktopPermissionState(bridged, options.id))
388
+ return bridged;
389
+ }
390
+ const browserState = await queryBrowserPermission(options.id);
391
+ if (browserState)
392
+ return browserState;
393
+ return {
394
+ id: options.id,
395
+ status: "not-applicable",
396
+ restrictedReason: "platform_unsupported",
397
+ lastChecked: Date.now(),
398
+ canRequest: false,
399
+ platform: currentPlatform(),
400
+ };
401
+ }
402
+ async requestPermission(options) {
403
+ const rpc = getDesktopRpc();
404
+ const request = rpc?.request?.permissionsRequest;
405
+ if (request) {
406
+ const bridged = await request.call(rpc.request, { id: options.id });
407
+ if (isDesktopPermissionState(bridged, options.id)) {
408
+ if (bridged.status === "not-determined" &&
409
+ BROWSER_PERMISSION_IDS.has(options.id)) {
410
+ return (await requestBrowserPermission(options.id)) ?? bridged;
411
+ }
412
+ return bridged;
413
+ }
414
+ }
415
+ return ((await requestBrowserPermission(options.id)) ??
416
+ this.checkPermission({ id: options.id }));
417
+ }
272
418
  }