@beeos-ai/device-agent 0.9.13 → 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 (187) hide show
  1. package/dist/adapters/device-compat.d.ts +14 -0
  2. package/dist/adapters/device-compat.js +71 -0
  3. package/dist/adapters/device-compat.js.map +1 -0
  4. package/dist/agent-runtime/adapters/index.d.ts +1 -3
  5. package/dist/agent-runtime/adapters/index.js +1 -3
  6. package/dist/agent-runtime/adapters/index.js.map +1 -1
  7. package/dist/agent-runtime/adapters/openai.d.ts +5 -5
  8. package/dist/agent-runtime/adapters/openai.js +19 -6
  9. package/dist/agent-runtime/adapters/openai.js.map +1 -1
  10. package/dist/agent-runtime/adapters/registry.d.ts +1 -1
  11. package/dist/agent-runtime/adapters/registry.js +3 -3
  12. package/dist/agent-runtime/adapters/registry.js.map +1 -1
  13. package/dist/agent-runtime/agent-runner.d.ts +1 -1
  14. package/dist/agent-runtime/factory.d.ts +22 -0
  15. package/dist/agent-runtime/factory.js +25 -0
  16. package/dist/agent-runtime/factory.js.map +1 -0
  17. package/dist/agent-runtime/index.d.ts +9 -4
  18. package/dist/agent-runtime/index.js +9 -4
  19. package/dist/agent-runtime/index.js.map +1 -1
  20. package/dist/{model → agent-runtime/models}/base.d.ts +1 -1
  21. package/dist/{model → agent-runtime/models}/base.js.map +1 -1
  22. package/dist/{model → agent-runtime/models}/client.d.ts +3 -3
  23. package/dist/{model → agent-runtime/models}/client.js +2 -2
  24. package/dist/agent-runtime/models/client.js.map +1 -0
  25. package/dist/agent-runtime/models/image/compress.js.map +1 -0
  26. package/dist/{model → agent-runtime/models}/image/transport.d.ts +2 -2
  27. package/dist/{model → agent-runtime/models}/image/transport.js +1 -1
  28. package/dist/agent-runtime/models/image/transport.js.map +1 -0
  29. package/dist/agent-runtime/models/vlm/autoglm.js.map +1 -0
  30. package/dist/{model/adapters → agent-runtime/models/vlm}/base.d.ts +1 -1
  31. package/dist/agent-runtime/models/vlm/base.js.map +1 -0
  32. package/dist/{model/adapters → agent-runtime/models/vlm}/general.js +19 -25
  33. package/dist/agent-runtime/models/vlm/general.js.map +1 -0
  34. package/dist/{model/adapters → agent-runtime/models/vlm}/guiowl.js +1 -1
  35. package/dist/agent-runtime/models/vlm/guiowl.js.map +1 -0
  36. package/dist/{model/adapters → agent-runtime/models/vlm}/index.d.ts +0 -2
  37. package/dist/agent-runtime/models/vlm/index.js +7 -0
  38. package/dist/agent-runtime/models/vlm/index.js.map +1 -0
  39. package/dist/{model/adapters → agent-runtime/models/vlm}/maiui.js +1 -1
  40. package/dist/agent-runtime/models/vlm/maiui.js.map +1 -0
  41. package/dist/{model/adapters → agent-runtime/models/vlm}/qwenvl.js +1 -1
  42. package/dist/agent-runtime/models/vlm/qwenvl.js.map +1 -0
  43. package/dist/{model/adapters → agent-runtime/models/vlm/shared}/tool-call.d.ts +1 -1
  44. package/dist/agent-runtime/models/vlm/shared/tool-call.js.map +1 -0
  45. package/dist/agent-runtime/modes/hybrid/index.d.ts +58 -0
  46. package/dist/{adapters/agentcore-runner.js → agent-runtime/modes/hybrid/index.js} +21 -54
  47. package/dist/agent-runtime/modes/hybrid/index.js.map +1 -0
  48. package/dist/agent-runtime/{planner → modes/hybrid/planner}/base.d.ts +2 -2
  49. package/dist/agent-runtime/modes/hybrid/planner/base.js.map +1 -0
  50. package/dist/agent-runtime/modes/hybrid/planner/llm-planner.js.map +1 -0
  51. package/dist/agent-runtime/modes/hybrid/planner/noop-planner.js.map +1 -0
  52. package/dist/agent-runtime/{planner → modes/hybrid/planner}/prompts.d.ts +2 -2
  53. package/dist/agent-runtime/modes/hybrid/planner/prompts.js.map +1 -0
  54. package/dist/{adapters → agent-runtime/modes/orchestrator}/app-guide.d.ts +1 -1
  55. package/dist/{adapters → agent-runtime/modes/orchestrator}/app-guide.js +51 -6
  56. package/dist/agent-runtime/modes/orchestrator/app-guide.js.map +1 -0
  57. package/dist/{adapters/agentcore-orchestrator.d.ts → agent-runtime/modes/orchestrator/index.d.ts} +5 -6
  58. package/dist/{adapters/agentcore-orchestrator.js → agent-runtime/modes/orchestrator/index.js} +30 -21
  59. package/dist/agent-runtime/modes/orchestrator/index.js.map +1 -0
  60. package/dist/{adapters/orchestrator-agent-prompt.js → agent-runtime/modes/orchestrator/prompt.js} +5 -11
  61. package/dist/agent-runtime/modes/orchestrator/prompt.js.map +1 -0
  62. package/dist/agent-runtime/plan-executor.d.ts +1 -1
  63. package/dist/agent-runtime/reflection.js +46 -36
  64. package/dist/agent-runtime/reflection.js.map +1 -1
  65. package/dist/agent-runtime/vlm.d.ts +17 -0
  66. package/dist/agent-runtime/vlm.js +18 -0
  67. package/dist/agent-runtime/vlm.js.map +1 -0
  68. package/dist/api.d.ts +9 -20
  69. package/dist/api.js +26 -33
  70. package/dist/api.js.map +1 -1
  71. package/dist/app/agent-host.js +11 -0
  72. package/dist/app/agent-host.js.map +1 -1
  73. package/dist/app/multi-device-host.d.ts +143 -0
  74. package/dist/app/multi-device-host.js +237 -0
  75. package/dist/app/multi-device-host.js.map +1 -0
  76. package/dist/app/plugin-commands/device-status-command.d.ts +28 -0
  77. package/dist/app/plugin-commands/device-status-command.js +101 -0
  78. package/dist/app/plugin-commands/device-status-command.js.map +1 -0
  79. package/dist/app/session-manager.d.ts +1 -0
  80. package/dist/app/session-manager.js +12 -11
  81. package/dist/app/session-manager.js.map +1 -1
  82. package/dist/bootstrap.d.ts +0 -2
  83. package/dist/bootstrap.js +131 -78
  84. package/dist/bootstrap.js.map +1 -1
  85. package/dist/config/loader.d.ts +4 -19
  86. package/dist/config/loader.js +64 -89
  87. package/dist/config/loader.js.map +1 -1
  88. package/dist/config/schema.d.ts +26 -40
  89. package/dist/config/schema.js +30 -57
  90. package/dist/config/schema.js.map +1 -1
  91. package/dist/core/task-outcome.d.ts +32 -0
  92. package/dist/core/task-outcome.js +68 -0
  93. package/dist/core/task-outcome.js.map +1 -0
  94. package/dist/fleet/adapters/process/in-process-manager.d.ts +76 -0
  95. package/dist/fleet/adapters/process/in-process-manager.js +206 -0
  96. package/dist/fleet/adapters/process/in-process-manager.js.map +1 -0
  97. package/dist/fleet/adapters/process/node-process-manager.d.ts +19 -0
  98. package/dist/fleet/adapters/process/node-process-manager.js +1 -1
  99. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -1
  100. package/dist/fleet/supervisor.d.ts +21 -0
  101. package/dist/fleet/supervisor.js +204 -9
  102. package/dist/fleet/supervisor.js.map +1 -1
  103. package/dist/inbound/acp/handlers/models.js +0 -1
  104. package/dist/inbound/acp/handlers/models.js.map +1 -1
  105. package/dist/inbound/cli/fleet-command.d.ts +32 -0
  106. package/dist/inbound/cli/fleet-command.js +51 -2
  107. package/dist/inbound/cli/fleet-command.js.map +1 -1
  108. package/dist/inbound/cli/main.d.ts +3 -8
  109. package/dist/inbound/cli/main.js +14 -54
  110. package/dist/inbound/cli/main.js.map +1 -1
  111. package/dist/inbound/cli/run-command.d.ts +2 -2
  112. package/dist/inbound/cli/run-command.js +10 -9
  113. package/dist/inbound/cli/run-command.js.map +1 -1
  114. package/dist/index.d.ts +8 -7
  115. package/dist/index.js +4 -5
  116. package/dist/index.js.map +1 -1
  117. package/dist/plugins/message-bus/device-command.d.ts +70 -0
  118. package/dist/plugins/message-bus/device-command.js +197 -0
  119. package/dist/plugins/message-bus/device-command.js.map +1 -0
  120. package/dist/plugins/message-bus/index.d.ts +16 -0
  121. package/dist/plugins/message-bus/index.js +17 -0
  122. package/dist/plugins/message-bus/index.js.map +1 -1
  123. package/dist/plugins/message-bus/ms-channel-notifier.js +30 -2
  124. package/dist/plugins/message-bus/ms-channel-notifier.js.map +1 -1
  125. package/dist/ports/agent-core.d.ts +12 -6
  126. package/dist/ports/agent-host.d.ts +2 -0
  127. package/package.json +1 -1
  128. package/dist/adapters/agentcore-inner-loop.d.ts +0 -28
  129. package/dist/adapters/agentcore-inner-loop.js +0 -71
  130. package/dist/adapters/agentcore-inner-loop.js.map +0 -1
  131. package/dist/adapters/agentcore-orchestrator.js.map +0 -1
  132. package/dist/adapters/agentcore-runner.d.ts +0 -70
  133. package/dist/adapters/agentcore-runner.js.map +0 -1
  134. package/dist/adapters/app-guide.js.map +0 -1
  135. package/dist/adapters/orchestrator-agent-prompt.js.map +0 -1
  136. package/dist/adapters/vlm-inner-loop.d.ts +0 -94
  137. package/dist/adapters/vlm-inner-loop.js +0 -202
  138. package/dist/adapters/vlm-inner-loop.js.map +0 -1
  139. package/dist/agent-runtime/adapters/ui-tars.d.ts +0 -13
  140. package/dist/agent-runtime/adapters/ui-tars.js +0 -22
  141. package/dist/agent-runtime/adapters/ui-tars.js.map +0 -1
  142. package/dist/agent-runtime/planner/base.js.map +0 -1
  143. package/dist/agent-runtime/planner/llm-planner.js.map +0 -1
  144. package/dist/agent-runtime/planner/noop-planner.js.map +0 -1
  145. package/dist/agent-runtime/planner/prompts.js.map +0 -1
  146. package/dist/agent.d.ts +0 -110
  147. package/dist/agent.js +0 -162
  148. package/dist/agent.js.map +0 -1
  149. package/dist/grounding/grounder.d.ts +0 -46
  150. package/dist/grounding/grounder.js +0 -82
  151. package/dist/grounding/grounder.js.map +0 -1
  152. package/dist/model/adapters/autoglm.js.map +0 -1
  153. package/dist/model/adapters/base.js.map +0 -1
  154. package/dist/model/adapters/general.js.map +0 -1
  155. package/dist/model/adapters/guiowl.js.map +0 -1
  156. package/dist/model/adapters/index.js +0 -9
  157. package/dist/model/adapters/index.js.map +0 -1
  158. package/dist/model/adapters/maiui.js.map +0 -1
  159. package/dist/model/adapters/qwenvl.js.map +0 -1
  160. package/dist/model/adapters/showui.d.ts +0 -1
  161. package/dist/model/adapters/showui.js +0 -132
  162. package/dist/model/adapters/showui.js.map +0 -1
  163. package/dist/model/adapters/tool-call.js.map +0 -1
  164. package/dist/model/adapters/uitars.d.ts +0 -1
  165. package/dist/model/adapters/uitars.js +0 -176
  166. package/dist/model/adapters/uitars.js.map +0 -1
  167. package/dist/model/client.js.map +0 -1
  168. package/dist/model/image/compress.js.map +0 -1
  169. package/dist/model/image/transport.js.map +0 -1
  170. /package/dist/{model → agent-runtime/models}/base.js +0 -0
  171. /package/dist/{model → agent-runtime/models}/image/compress.d.ts +0 -0
  172. /package/dist/{model → agent-runtime/models}/image/compress.js +0 -0
  173. /package/dist/{model/adapters → agent-runtime/models/vlm}/autoglm.d.ts +0 -0
  174. /package/dist/{model/adapters → agent-runtime/models/vlm}/autoglm.js +0 -0
  175. /package/dist/{model/adapters → agent-runtime/models/vlm}/base.js +0 -0
  176. /package/dist/{model/adapters → agent-runtime/models/vlm}/general.d.ts +0 -0
  177. /package/dist/{model/adapters → agent-runtime/models/vlm}/guiowl.d.ts +0 -0
  178. /package/dist/{model/adapters → agent-runtime/models/vlm}/maiui.d.ts +0 -0
  179. /package/dist/{model/adapters → agent-runtime/models/vlm}/qwenvl.d.ts +0 -0
  180. /package/dist/{model/adapters → agent-runtime/models/vlm/shared}/tool-call.js +0 -0
  181. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/base.js +0 -0
  182. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/llm-planner.d.ts +0 -0
  183. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/llm-planner.js +0 -0
  184. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/noop-planner.d.ts +0 -0
  185. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/noop-planner.js +0 -0
  186. /package/dist/agent-runtime/{planner → modes/hybrid/planner}/prompts.js +0 -0
  187. /package/dist/{adapters/orchestrator-agent-prompt.d.ts → agent-runtime/modes/orchestrator/prompt.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agent-host.js","sourceRoot":"","sources":["../../src/app/agent-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-host.js","sourceRoot":"","sources":["../../src/app/agent-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Application — MultiDeviceHost.
3
+ *
4
+ * Hosts N per-device agent runtimes inside a SINGLE OS process. This is the
5
+ * spine of the "one process controls many devices" refactor.
6
+ *
7
+ * Design premise (see dev_docs device-agent refactor notes): `bootstrap()`
8
+ * is already a self-contained, config-driven per-device runtime factory — it
9
+ * loads one identity, builds one device adapter, one AgentHost, one
10
+ * SessionManager, one message-bus connection, and returns its own `stop()`.
11
+ * The whole function body is per-device; the only genuinely process-shared
12
+ * things are the `device-mcp-server` (already a singleton multi-device server
13
+ * the runtimes reach over HTTP) and the logger.
14
+ *
15
+ * So MultiDeviceHost does NOT re-implement bootstrap. It composes it:
16
+ *
17
+ * - For every {@link DeviceBinding} it derives a per-device `Config`
18
+ * override (mirroring the fleet supervisor's `spawnOptionsFor` +
19
+ * node-process-manager daemon argv mapping) and calls `bootstrap()`
20
+ * once. Every runtime points its `McpClient` at the SAME shared
21
+ * `mcpUrl` with `defaultDevice = serial`, so all per-device tool calls
22
+ * route through the one BackendRegistry MCP process.
23
+ *
24
+ * - Each runtime gets a `logger.child({ device: serial })` so every log
25
+ * line is attributable to a device once N runtimes interleave in one
26
+ * stdout.
27
+ *
28
+ * - `addDevice` is fault-isolated: a runtime that fails to boot (bridge
29
+ * discovery failure, bad key, offline gateway) logs and is skipped —
30
+ * it never throws up and takes the other devices down. This is the
31
+ * CPU/heap/failure isolation that separate processes gave us for free
32
+ * and that we now have to restore in code.
33
+ *
34
+ * What MultiDeviceHost intentionally does NOT own:
35
+ *
36
+ * - The shared `device-mcp-server` process. The caller (fleet / CLI)
37
+ * owns its lifecycle and passes the resolved `mcpUrl`. Keeping the MCP
38
+ * out of here means a future autospawn-once strategy can live in one
39
+ * place without touching the per-device composition.
40
+ * - scrcpy-bridge. It is a native binary and cannot live in-process; the
41
+ * fleet supervisor continues to spawn it per device.
42
+ */
43
+ import type { Config } from "../config/schema.js";
44
+ import type { DeviceBinding } from "../fleet/domain/device.js";
45
+ import { type Logger } from "../logger/index.js";
46
+ export interface MultiDeviceHostOptions {
47
+ /**
48
+ * Shared `device-mcp-server` base URL every per-device runtime routes
49
+ * through. Each runtime sets `defaultDevice = serial` so the singleton
50
+ * BackendRegistry resolves the right backend per tool call.
51
+ */
52
+ mcpUrl: string;
53
+ /**
54
+ * Base config applied to EVERY device before the per-device binding
55
+ * override (logLevel, vlm.*, outer.*, planMode, messageBus.enabled, …).
56
+ * Nested groups here REPLACE the loaded ones wholesale — that is the
57
+ * intent: this is the shared fleet-wide configuration.
58
+ */
59
+ baseConfig?: Partial<Config>;
60
+ /**
61
+ * Fallback Agent Gateway URL when a binding carries no per-device
62
+ * `agentGatewayUrl` override. Mirrors the supervisor's
63
+ * `defaultAgentGatewayUrl`.
64
+ */
65
+ defaultAgentGatewayUrl?: string;
66
+ /** Optional explicit Bridge WS URL forwarded to every runtime. */
67
+ bridgeUrl?: string;
68
+ /** Optional region forwarded to every runtime (bridge discovery). */
69
+ region?: string;
70
+ /** Process-level logger; per-device child loggers are derived from it. */
71
+ logger?: Logger;
72
+ /** Version string surfaced in each runtime's agent-sync declaration. */
73
+ version?: string;
74
+ }
75
+ export interface DeviceRuntimeSnapshot {
76
+ serial: string;
77
+ name: string;
78
+ instanceId: string | null;
79
+ }
80
+ export declare class MultiDeviceHost {
81
+ private readonly mcpUrl;
82
+ private readonly baseConfig;
83
+ private readonly defaultAgentGatewayUrl;
84
+ private readonly bridgeUrl;
85
+ private readonly region;
86
+ private readonly log;
87
+ private readonly version;
88
+ private readonly runtimes;
89
+ /**
90
+ * Serialises `addDevice` / `removeDevice` per serial so two rapid
91
+ * binding events for the same device can't race into a double-boot or a
92
+ * boot/teardown interleave.
93
+ */
94
+ private readonly inflight;
95
+ private stopped;
96
+ constructor(opts: MultiDeviceHostOptions);
97
+ /** Number of currently-running device runtimes. */
98
+ get size(): number;
99
+ has(serial: string): boolean;
100
+ /**
101
+ * Boot a per-device runtime for `binding`. Idempotent (a serial already
102
+ * running is a no-op) and fault-isolated (a boot failure is logged, never
103
+ * thrown — the other devices keep running). Serialised per serial.
104
+ */
105
+ addDevice(binding: DeviceBinding, opts?: {
106
+ configFile?: string;
107
+ }): Promise<void>;
108
+ /**
109
+ * Stop and drop the runtime for `serial`. No-op if not running.
110
+ * Serialised per serial.
111
+ */
112
+ removeDevice(serial: string): Promise<void>;
113
+ /** Read-only view of running runtimes (for a fleet status endpoint). */
114
+ snapshot(): DeviceRuntimeSnapshot[];
115
+ /**
116
+ * Reconcile the running set against a desired binding list: boot any
117
+ * newly-present device, tear down any that disappeared. Lets a poll loop
118
+ * (BeeosCliStore) drive the host with one call.
119
+ */
120
+ reconcile(desired: DeviceBinding[]): Promise<void>;
121
+ /** Stop every runtime in parallel. Safe to call multiple times. */
122
+ stop(): Promise<void>;
123
+ /**
124
+ * Per-device `Config` override derived from a binding. Mirrors the fleet
125
+ * supervisor's `spawnOptionsFor()` and the node-process-manager daemon
126
+ * argv assembly so an in-process runtime is wired identically to a
127
+ * spawned daemon child:
128
+ *
129
+ * --key <keyFile> → keyFile
130
+ * --mcp-url <shared> → mcpUrl (+ mcpAutospawn=false)
131
+ * --device <serial> / --adb <s> → adbSerial (ADB backends only)
132
+ * --agent-gateway-url <url> → agentGatewayUrl (per-device > default)
133
+ * --http --http-port <p> → httpEnabled + httpPort (sticky)
134
+ * backend == "adb" ? android → mode
135
+ *
136
+ * The shared `baseConfig` (vlm/outer/planMode/messageBus/…) is layered
137
+ * UNDER the per-device fields so a device can never silently lose its
138
+ * identity or routing to a fleet-wide default.
139
+ */
140
+ private bindingToConfig;
141
+ /** FIFO-per-serial serialiser so add/remove for one device never race. */
142
+ private serialize;
143
+ }
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Application — MultiDeviceHost.
3
+ *
4
+ * Hosts N per-device agent runtimes inside a SINGLE OS process. This is the
5
+ * spine of the "one process controls many devices" refactor.
6
+ *
7
+ * Design premise (see dev_docs device-agent refactor notes): `bootstrap()`
8
+ * is already a self-contained, config-driven per-device runtime factory — it
9
+ * loads one identity, builds one device adapter, one AgentHost, one
10
+ * SessionManager, one message-bus connection, and returns its own `stop()`.
11
+ * The whole function body is per-device; the only genuinely process-shared
12
+ * things are the `device-mcp-server` (already a singleton multi-device server
13
+ * the runtimes reach over HTTP) and the logger.
14
+ *
15
+ * So MultiDeviceHost does NOT re-implement bootstrap. It composes it:
16
+ *
17
+ * - For every {@link DeviceBinding} it derives a per-device `Config`
18
+ * override (mirroring the fleet supervisor's `spawnOptionsFor` +
19
+ * node-process-manager daemon argv mapping) and calls `bootstrap()`
20
+ * once. Every runtime points its `McpClient` at the SAME shared
21
+ * `mcpUrl` with `defaultDevice = serial`, so all per-device tool calls
22
+ * route through the one BackendRegistry MCP process.
23
+ *
24
+ * - Each runtime gets a `logger.child({ device: serial })` so every log
25
+ * line is attributable to a device once N runtimes interleave in one
26
+ * stdout.
27
+ *
28
+ * - `addDevice` is fault-isolated: a runtime that fails to boot (bridge
29
+ * discovery failure, bad key, offline gateway) logs and is skipped —
30
+ * it never throws up and takes the other devices down. This is the
31
+ * CPU/heap/failure isolation that separate processes gave us for free
32
+ * and that we now have to restore in code.
33
+ *
34
+ * What MultiDeviceHost intentionally does NOT own:
35
+ *
36
+ * - The shared `device-mcp-server` process. The caller (fleet / CLI)
37
+ * owns its lifecycle and passes the resolved `mcpUrl`. Keeping the MCP
38
+ * out of here means a future autospawn-once strategy can live in one
39
+ * place without touching the per-device composition.
40
+ * - scrcpy-bridge. It is a native binary and cannot live in-process; the
41
+ * fleet supervisor continues to spawn it per device.
42
+ */
43
+ import { bootstrap } from "../bootstrap.js";
44
+ import { getLogger } from "../logger/index.js";
45
+ export class MultiDeviceHost {
46
+ mcpUrl;
47
+ baseConfig;
48
+ defaultAgentGatewayUrl;
49
+ bridgeUrl;
50
+ region;
51
+ log;
52
+ version;
53
+ runtimes = new Map();
54
+ /**
55
+ * Serialises `addDevice` / `removeDevice` per serial so two rapid
56
+ * binding events for the same device can't race into a double-boot or a
57
+ * boot/teardown interleave.
58
+ */
59
+ inflight = new Map();
60
+ stopped = false;
61
+ constructor(opts) {
62
+ this.mcpUrl = opts.mcpUrl;
63
+ this.baseConfig = opts.baseConfig ?? {};
64
+ this.defaultAgentGatewayUrl = opts.defaultAgentGatewayUrl;
65
+ this.bridgeUrl = opts.bridgeUrl;
66
+ this.region = opts.region;
67
+ this.log = opts.logger ?? getLogger();
68
+ this.version = opts.version ?? "0.0.0";
69
+ }
70
+ /** Number of currently-running device runtimes. */
71
+ get size() {
72
+ return this.runtimes.size;
73
+ }
74
+ has(serial) {
75
+ return this.runtimes.has(serial);
76
+ }
77
+ /**
78
+ * Boot a per-device runtime for `binding`. Idempotent (a serial already
79
+ * running is a no-op) and fault-isolated (a boot failure is logged, never
80
+ * thrown — the other devices keep running). Serialised per serial.
81
+ */
82
+ async addDevice(binding, opts = {}) {
83
+ if (this.stopped)
84
+ return;
85
+ return this.serialize(binding.serial, async () => {
86
+ if (this.stopped || this.runtimes.has(binding.serial))
87
+ return;
88
+ const childLog = this.log.child({ device: binding.serial });
89
+ const configOverride = this.bindingToConfig(binding);
90
+ // Per-instance VLM / orchestrator config (model, key, baseUrl). The
91
+ // supervisor path materialises `~/.beeos/state.json#agent_config` to a
92
+ // file and the spawned daemon reads it via `--vlm-config-file`; in-process
93
+ // we feed the same file to `bootstrap` as `flags.configFile` so the
94
+ // runtime gets the right model instead of falling back to defaults
95
+ // (the cause of "MODEL PREDICT FAILED" when this was missing).
96
+ const flags = opts.configFile ? { configFile: opts.configFile } : undefined;
97
+ try {
98
+ const agent = await bootstrap({
99
+ flags,
100
+ configOverride,
101
+ logger: childLog,
102
+ version: this.version,
103
+ });
104
+ // A teardown may have raced in while bootstrap was awaiting the
105
+ // network; if so, undo immediately so we don't leak a runtime.
106
+ if (this.stopped || this.runtimes.has(binding.serial)) {
107
+ await agent.stop().catch(() => undefined);
108
+ return;
109
+ }
110
+ this.runtimes.set(binding.serial, { serial: binding.serial, binding, agent });
111
+ childLog.info({ name: binding.name, instanceId: binding.instanceId, total: this.runtimes.size }, "device runtime started");
112
+ }
113
+ catch (e) {
114
+ // Isolate: one device's boot failure must not abort the fleet.
115
+ childLog.error({ err: e.message, name: binding.name }, "device runtime failed to start (skipped, other devices unaffected)");
116
+ }
117
+ });
118
+ }
119
+ /**
120
+ * Stop and drop the runtime for `serial`. No-op if not running.
121
+ * Serialised per serial.
122
+ */
123
+ async removeDevice(serial) {
124
+ return this.serialize(serial, async () => {
125
+ const handle = this.runtimes.get(serial);
126
+ if (!handle)
127
+ return;
128
+ this.runtimes.delete(serial);
129
+ try {
130
+ await handle.agent.stop();
131
+ this.log.info({ device: serial, total: this.runtimes.size }, "device runtime stopped");
132
+ }
133
+ catch (e) {
134
+ this.log.warn({ device: serial, err: e.message }, "device runtime stop failed");
135
+ }
136
+ });
137
+ }
138
+ /** Read-only view of running runtimes (for a fleet status endpoint). */
139
+ snapshot() {
140
+ return [...this.runtimes.values()].map((h) => ({
141
+ serial: h.serial,
142
+ name: h.binding.name,
143
+ instanceId: h.binding.instanceId,
144
+ }));
145
+ }
146
+ /**
147
+ * Reconcile the running set against a desired binding list: boot any
148
+ * newly-present device, tear down any that disappeared. Lets a poll loop
149
+ * (BeeosCliStore) drive the host with one call.
150
+ */
151
+ async reconcile(desired) {
152
+ if (this.stopped)
153
+ return;
154
+ const wanted = new Map(desired.map((b) => [b.serial, b]));
155
+ const toRemove = [...this.runtimes.keys()].filter((s) => !wanted.has(s));
156
+ const toAdd = desired.filter((b) => !this.runtimes.has(b.serial));
157
+ await Promise.all([
158
+ ...toRemove.map((s) => this.removeDevice(s)),
159
+ ...toAdd.map((b) => this.addDevice(b)),
160
+ ]);
161
+ }
162
+ /** Stop every runtime in parallel. Safe to call multiple times. */
163
+ async stop() {
164
+ if (this.stopped)
165
+ return;
166
+ this.stopped = true;
167
+ const handles = [...this.runtimes.values()];
168
+ this.runtimes.clear();
169
+ this.log.info({ count: handles.length }, "multi-device host shutting down");
170
+ await Promise.all(handles.map((h) => h.agent.stop().catch((e) => this.log.warn({ device: h.serial, err: e.message }, "device runtime stop failed during host shutdown"))));
171
+ this.log.info("multi-device host stopped");
172
+ }
173
+ /**
174
+ * Per-device `Config` override derived from a binding. Mirrors the fleet
175
+ * supervisor's `spawnOptionsFor()` and the node-process-manager daemon
176
+ * argv assembly so an in-process runtime is wired identically to a
177
+ * spawned daemon child:
178
+ *
179
+ * --key <keyFile> → keyFile
180
+ * --mcp-url <shared> → mcpUrl (+ mcpAutospawn=false)
181
+ * --device <serial> / --adb <s> → adbSerial (ADB backends only)
182
+ * --agent-gateway-url <url> → agentGatewayUrl (per-device > default)
183
+ * --http --http-port <p> → httpEnabled + httpPort (sticky)
184
+ * backend == "adb" ? android → mode
185
+ *
186
+ * The shared `baseConfig` (vlm/outer/planMode/messageBus/…) is layered
187
+ * UNDER the per-device fields so a device can never silently lose its
188
+ * identity or routing to a fleet-wide default.
189
+ */
190
+ bindingToConfig(binding) {
191
+ // Only ADB devices get an `--adb`/serial; desktop / self-attach
192
+ // backends (macos/linux/windows/desktop/mock-desktop) have no ADB
193
+ // transport to point at. Mirrors node-process-manager `isAdbBackend`.
194
+ const isAdbBackend = typeof binding.backend === "string" ? binding.backend === "adb" : true;
195
+ const cfg = {
196
+ ...this.baseConfig,
197
+ keyFile: binding.keyFile,
198
+ mode: isAdbBackend ? "android" : "desktop",
199
+ mcpUrl: this.mcpUrl,
200
+ // The host owns the single shared MCP; runtimes must never autospawn
201
+ // their own sibling.
202
+ mcpAutospawn: false,
203
+ };
204
+ if (isAdbBackend) {
205
+ // Canonical 0.4.0 device id is `--device <serial>`; the ADB transport
206
+ // is `--adb <adbSerial ?? serial>`. `config.adbSerial` drives both the
207
+ // AndroidAdbAdapter target and the McpClient `defaultDevice`, so it
208
+ // must be the ADB transport serial the BackendRegistry discovered.
209
+ cfg.adbSerial = binding.adbSerial ?? binding.serial;
210
+ }
211
+ const agw = binding.agentGatewayUrl ?? this.defaultAgentGatewayUrl;
212
+ if (agw)
213
+ cfg.agentGatewayUrl = agw;
214
+ if (this.bridgeUrl)
215
+ cfg.bridgeUrl = this.bridgeUrl;
216
+ if (this.region)
217
+ cfg.region = this.region;
218
+ // HTTP debug is a LOCAL-ONLY (127.0.0.1), default-off REST surface — the
219
+ // cloud never touches it (cloud↔device-agent is the two outbound WS
220
+ // channels: Bridge WS for ACP + Centrifugo WS for the Message Service).
221
+ // Per-device debug servers don't belong in a shared process (N listeners,
222
+ // N ports); a single aggregated endpoint would be the right design if it
223
+ // is ever needed. So we force it OFF here regardless of binding.httpPort
224
+ // or any baseConfig — no port to collide on.
225
+ cfg.httpEnabled = false;
226
+ return cfg;
227
+ }
228
+ /** FIFO-per-serial serialiser so add/remove for one device never race. */
229
+ serialize(serial, fn) {
230
+ const prev = this.inflight.get(serial) ?? Promise.resolve();
231
+ const next = prev.then(fn, fn);
232
+ // Keep the chain alive but don't let a rejection wedge the serial.
233
+ this.inflight.set(serial, next.catch(() => undefined));
234
+ return next;
235
+ }
236
+ }
237
+ //# sourceMappingURL=multi-device-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-device-host.js","sourceRoot":"","sources":["../../src/app/multi-device-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAe,MAAM,oBAAoB,CAAC;AA4C5D,MAAM,OAAO,eAAe;IACT,MAAM,CAAS;IACf,UAAU,CAAkB;IAC5B,sBAAsB,CAAqB;IAC3C,SAAS,CAAqB;IAC9B,MAAM,CAAqB;IAC3B,GAAG,CAAS;IACZ,OAAO,CAAS;IAEhB,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnE;;;;OAIG;IACc,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IACrD,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,IAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;IACzC,CAAC;IAED,mDAAmD;IACnD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,OAAsB,EACtB,OAAgC,EAAE;QAElC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACrD,oEAAoE;YACpE,uEAAuE;YACvE,2EAA2E;YAC3E,oEAAoE;YACpE,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAE5E,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC;oBAC5B,KAAK;oBACL,cAAc;oBACd,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;gBACH,gEAAgE;gBAChE,+DAA+D;gBAC/D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9E,QAAQ,CAAC,IAAI,CACX,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EACjF,wBAAwB,CACzB,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,+DAA+D;gBAC/D,QAAQ,CAAC,KAAK,CACZ,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACjD,oEAAoE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACzF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAC7C,4BAA4B,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACpB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU;SACjC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,OAAwB;QACtC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAAC;QAC5E,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAC/C,iDAAiD,CAClD,CACF,CACF,CACF,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,eAAe,CAAC,OAAsB;QAC5C,gEAAgE;QAChE,kEAAkE;QAClE,sEAAsE;QACtE,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzE,MAAM,GAAG,GAAoB;YAC3B,GAAG,IAAI,CAAC,UAAU;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,qEAAqE;YACrE,qBAAqB;YACrB,YAAY,EAAE,KAAK;SACpB,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,mEAAmE;YACnE,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;QACtD,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,GAAG;YAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC;QAEnC,IAAI,IAAI,CAAC,SAAS;YAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1C,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,6CAA6C;QAC7C,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;QAExB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0EAA0E;IAClE,SAAS,CAAC,MAAc,EAAE,EAAuB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,mEAAmE;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAC5B,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Read-only device status slash commands.
3
+ *
4
+ * These commands intentionally return plain text instead of attachments so
5
+ * both ACP web chat and message-bus/A2A callers can render the same payload.
6
+ */
7
+ import type { IMcpRuntime } from "../../mcp-client/runtime.js";
8
+ import type { PluginCommand, PluginCommandContext, PluginCommandResult } from "./types.js";
9
+ type McpProvider = () => IMcpRuntime;
10
+ export declare class BatteryCommandHandler implements PluginCommand {
11
+ private readonly mcpProvider;
12
+ readonly name = "battery";
13
+ readonly description = "Show device battery level, charging state, temperature, voltage, and health";
14
+ readonly emoji = "\uD83D\uDD0B";
15
+ readonly acceptsArgs = false;
16
+ constructor(mcpProvider: McpProvider);
17
+ handle(_ctx: PluginCommandContext): Promise<PluginCommandResult>;
18
+ }
19
+ export declare class StorageCommandHandler implements PluginCommand {
20
+ private readonly mcpProvider;
21
+ readonly name = "storage";
22
+ readonly description = "Show internal storage usage and available space";
23
+ readonly emoji = "\uD83D\uDCBE";
24
+ readonly acceptsArgs = false;
25
+ constructor(mcpProvider: McpProvider);
26
+ handle(_ctx: PluginCommandContext): Promise<PluginCommandResult>;
27
+ }
28
+ export {};
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Read-only device status slash commands.
3
+ *
4
+ * These commands intentionally return plain text instead of attachments so
5
+ * both ACP web chat and message-bus/A2A callers can render the same payload.
6
+ */
7
+ export class BatteryCommandHandler {
8
+ mcpProvider;
9
+ name = "battery";
10
+ description = "Show device battery level, charging state, temperature, voltage, and health";
11
+ emoji = "🔋";
12
+ acceptsArgs = false;
13
+ constructor(mcpProvider) {
14
+ this.mcpProvider = mcpProvider;
15
+ }
16
+ async handle(_ctx) {
17
+ const info = await callReadOnlyTool(this.mcpProvider(), "get_battery");
18
+ return { text: formatBattery(info) };
19
+ }
20
+ }
21
+ export class StorageCommandHandler {
22
+ mcpProvider;
23
+ name = "storage";
24
+ description = "Show internal storage usage and available space";
25
+ emoji = "💾";
26
+ acceptsArgs = false;
27
+ constructor(mcpProvider) {
28
+ this.mcpProvider = mcpProvider;
29
+ }
30
+ async handle(_ctx) {
31
+ const info = await callReadOnlyTool(this.mcpProvider(), "get_storage");
32
+ return { text: formatStorage(info) };
33
+ }
34
+ }
35
+ async function callReadOnlyTool(mcp, tool) {
36
+ if (typeof mcp.callTool !== "function") {
37
+ throw new Error("device runtime does not support direct MCP tool calls");
38
+ }
39
+ const out = await mcp.callTool(tool, {});
40
+ if (!out.ok) {
41
+ throw new Error(toolErrorMessage(out.structured, tool));
42
+ }
43
+ if (!out.structured) {
44
+ throw new Error(`${tool} returned no structured content`);
45
+ }
46
+ return out.structured;
47
+ }
48
+ function formatBattery(info) {
49
+ const power = [
50
+ info.acPowered ? "AC" : "",
51
+ info.usbPowered ? "USB" : "",
52
+ ].filter(Boolean).join(" + ") || "battery";
53
+ return [
54
+ "Battery",
55
+ `- Level: ${info.level}%`,
56
+ `- Status: ${formatToken(info.status)}`,
57
+ `- Power: ${power}`,
58
+ `- Temperature: ${formatNumber(info.temperatureC, 1)} °C`,
59
+ `- Voltage: ${Math.round(info.voltageMv).toLocaleString("en-US")} mV`,
60
+ `- Health: ${formatToken(info.health)}`,
61
+ ].join("\n");
62
+ }
63
+ function formatStorage(info) {
64
+ return [
65
+ "Storage",
66
+ `- Used: ${formatBytes(info.usedBytes)} / ${formatBytes(info.totalBytes)} (${formatNumber(info.usedPercent, 1)}%)`,
67
+ `- Available: ${formatBytes(info.availableBytes)}`,
68
+ ].join("\n");
69
+ }
70
+ function formatBytes(bytes) {
71
+ if (!Number.isFinite(bytes) || bytes < 0)
72
+ return "unknown";
73
+ const units = ["B", "KiB", "MiB", "GiB", "TiB"];
74
+ let value = bytes;
75
+ let unit = 0;
76
+ while (value >= 1024 && unit < units.length - 1) {
77
+ value /= 1024;
78
+ unit += 1;
79
+ }
80
+ const digits = unit === 0 ? 0 : 1;
81
+ return `${value.toFixed(digits)} ${units[unit]}`;
82
+ }
83
+ function formatNumber(value, fractionDigits) {
84
+ if (!Number.isFinite(value))
85
+ return "unknown";
86
+ return value.toFixed(fractionDigits);
87
+ }
88
+ function formatToken(value) {
89
+ return value.replace(/_/g, " ");
90
+ }
91
+ function toolErrorMessage(structured, tool) {
92
+ if (structured && typeof structured === "object") {
93
+ const rec = structured;
94
+ if (typeof rec.error === "string" && rec.error)
95
+ return rec.error;
96
+ if (typeof rec.message === "string" && rec.message)
97
+ return rec.message;
98
+ }
99
+ return `${tool} failed`;
100
+ }
101
+ //# sourceMappingURL=device-status-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-status-command.js","sourceRoot":"","sources":["../../../src/app/plugin-commands/device-status-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,OAAO,qBAAqB;IAMH;IALpB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,6EAA6E,CAAC;IAC5F,KAAK,GAAG,IAAI,CAAC;IACb,WAAW,GAAG,KAAK,CAAC;IAE7B,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEzD,KAAK,CAAC,MAAM,CAAC,IAA0B;QACrC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAc,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QACpF,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IAMH;IALpB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,iDAAiD,CAAC;IAChE,KAAK,GAAG,IAAI,CAAC;IACb,WAAW,GAAG,KAAK,CAAC;IAE7B,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEzD,KAAK,CAAC,MAAM,CAAC,IAA0B;QACrC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAc,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QACpF,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF;AAED,KAAK,UAAU,gBAAgB,CAC7B,GAAgB,EAChB,IAAmC;IAEnC,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC,UAAU,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;IAE3C,OAAO;QACL,SAAS;QACT,YAAY,IAAI,CAAC,KAAK,GAAG;QACzB,aAAa,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACvC,YAAY,KAAK,EAAE;QACnB,kBAAkB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK;QACzD,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK;QACrE,aAAa,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,OAAO;QACL,SAAS;QACT,WAAW,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI;QAClH,gBAAgB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,cAAsB;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAmB,EAAE,IAAY;IACzD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,UAAqC,CAAC;QAClD,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;QACjE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,IAAI,SAAS,CAAC;AAC1B,CAAC"}
@@ -315,6 +315,7 @@ export declare class SessionManager {
315
315
  * recursively bloat).
316
316
  */
317
317
  private _executePrompt;
318
+ private matchPluginCommand;
318
319
  /**
319
320
  * Build a `[Conversation history ...]` preamble from prior store
320
321
  * records on `sessionId`. Pure function — caller (`_executePrompt`)