@beeos-ai/device-agent 0.9.13 → 0.10.1

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 +144 -0
  74. package/dist/app/multi-device-host.js +242 -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 +74 -0
  95. package/dist/fleet/adapters/process/in-process-manager.js +212 -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 +28 -0
  98. package/dist/fleet/adapters/process/node-process-manager.js +13 -2
  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
@@ -8,18 +8,12 @@
8
8
  *
9
9
  * The agent runs as a two-layer system by default:
10
10
  *
11
- * - **outer** orchestrator — text LLM via pi-coding-agent
12
- * (default `moonshotai/kimi-k2.6` on ARouter)
13
- * - **mobileUse** inner VLM — vision-language device control loop
14
- * (default `AutoGLM-Phone-9B-Q4_K_M.gguf` with
15
- * the `autoglm` adapter)
16
- * - **grounder** visual ground — coordinate grounding tool used by the outer
17
- * layer when it needs precise tap targets.
18
- * Defaults to mirroring `mobileUse` so a
19
- * fully self-hosted setup still works.
11
+ * - **outer** orchestrator — text LLM via pi-coding-agent
12
+ * (default `moonshotai/kimi-k2.6` on ARouter)
13
+ * - **vlm** inner VLM — vision-language device control loop
14
+ * (default `AutoGLM-Phone-9B-Q4_K_M.gguf` with
15
+ * the `autoglm` adapter)
20
16
  *
21
- * The legacy single-layer mode is still available via `legacyInner: true`
22
- * (or `--legacy-inner`) — that path drives `vlm-inner-loop.ts` directly.
23
17
  */
24
18
  import { z } from "zod";
25
19
  export const RuntimeMode = z.enum(["android", "desktop"]);
@@ -44,7 +38,7 @@ export const DEFAULT_AROUTER_BASE_URL = "https://api.arouter.ai";
44
38
  /** Default outer orchestrator model when nothing is configured. */
45
39
  export const DEFAULT_OUTER_MODEL = "moonshotai/kimi-k2.6";
46
40
  /**
47
- * Default inner mobile_use VLM model when nothing is configured.
41
+ * Default inner VLM model when nothing is configured.
48
42
  *
49
43
  * The `llama/` prefix is the ARouter **provider** route — without it, the
50
44
  * gateway falls back to `openai/...` and the request is shipped to
@@ -52,20 +46,27 @@ export const DEFAULT_OUTER_MODEL = "moonshotai/kimi-k2.6";
52
46
  * surfaces the upstream error as a hollow `502 status code (no body)`.
53
47
  * See `docs/adr/` and the agent-runtime README for the full routing table.
54
48
  */
55
- export const DEFAULT_MOBILE_USE_MODEL = "llama/AutoGLM-Phone-9B-Q4_K_M.gguf";
56
- /** Default mobile_use adapter (forwarded to OpenAIClient when constructing the inner loop). */
57
- export const DEFAULT_MOBILE_USE_PROVIDER = "autoglm";
49
+ export const DEFAULT_VLM_MODEL = "llama/AutoGLM-Phone-9B-Q4_K_M.gguf";
50
+ /**
51
+ * Default VLM adapter. Intentionally EMPTY: an unset provider means
52
+ * "auto-detect the adapter from the model name" (`detectAdapter`), which
53
+ * already falls back to `autoglm` when no pattern matches. Forcing
54
+ * `autoglm` here would short-circuit detection and mis-parse e.g.
55
+ * `general` models whose name carries no detectable pattern. Set a
56
+ * non-empty `vlmProvider` (config / `VLM_PROVIDER` / `--vlm-provider`)
57
+ * to override.
58
+ */
59
+ export const DEFAULT_VLM_PROVIDER = "";
58
60
  /**
59
61
  * Group-specific defaults exported for `loader.ts` to perform a
60
62
  * post-merge `applyGroupDefaults` pass.
61
63
  *
62
64
  * Why exported (and why loader does the backfill rather than zod):
63
65
  * `zod.default(v)` only fires when the input field is `undefined`.
64
- * When `loader` ends up producing `mobileUse: { apiKey: "x" }` (e.g.
65
- * from the legacy `vlm_api_key` mirror, or from `GUI_AGENT_API_KEY`
66
- * alone), zod sees the object and skips the whole `.default(...)` —
67
- * then `LlmSection`'s inner `model: z.string().default("")` fills
68
- * the missing field with empty string. Net result: `mobileUse.model`
66
+ * When `loader` ends up producing `vlm: { apiKey: "x" }` (e.g. from
67
+ * `VLM_API_KEY` alone), zod sees the object and skips the whole
68
+ * `.default(...)` — then `LlmSection`'s inner `model: z.string().default("")`
69
+ * fills the missing field with empty string. Net result: `vlm.model`
69
70
  * silently becomes `""` and the agent boots without a model.
70
71
  *
71
72
  * Loader is the right place to express "deep-merge group defaults"
@@ -82,19 +83,13 @@ export const OUTER_DEFAULTS = {
82
83
  model: DEFAULT_OUTER_MODEL,
83
84
  provider: "",
84
85
  };
85
- export const MOBILE_USE_DEFAULTS = {
86
+ export const VLM_DEFAULTS = {
86
87
  baseUrl: DEFAULT_AROUTER_BASE_URL,
87
- model: DEFAULT_MOBILE_USE_MODEL,
88
- provider: DEFAULT_MOBILE_USE_PROVIDER,
89
- };
90
- export const GROUNDER_DEFAULTS = {
91
- baseUrl: DEFAULT_AROUTER_BASE_URL,
92
- model: DEFAULT_MOBILE_USE_MODEL,
93
- provider: DEFAULT_MOBILE_USE_PROVIDER,
88
+ model: DEFAULT_VLM_MODEL,
89
+ provider: DEFAULT_VLM_PROVIDER,
94
90
  };
95
91
  const outerDefaults = LlmSection.parse({ ...OUTER_DEFAULTS });
96
- const mobileUseDefaults = LlmSection.parse({ ...MOBILE_USE_DEFAULTS });
97
- const grounderDefaults = LlmSection.parse({ ...GROUNDER_DEFAULTS });
92
+ const vlmDefaults = LlmSection.parse({ ...VLM_DEFAULTS });
98
93
  export const Config = z
99
94
  .object({
100
95
  /** Standalone mode: skip Bridge handshake, only run HTTP/CLI. */
@@ -144,21 +139,10 @@ export const Config = z
144
139
  */
145
140
  outer: LlmSection.default(outerDefaults),
146
141
  /**
147
- * Inner mobile_use VLM. Performs the screenshot→reason→act loop.
148
- * Maps from `GUI_AGENT_*` env / `--mobile-use-*` flags.
149
- */
150
- mobileUse: LlmSection.default(mobileUseDefaults),
151
- /**
152
- * Visual grounder used by the outer layer for precise coordinate
153
- * grounding. Maps from `GROUNDER_*` env / `--grounder-*` flags.
154
- */
155
- grounder: LlmSection.default(grounderDefaults),
156
- /**
157
- * Force the legacy single-layer adapter (vlm-inner-loop) instead of
158
- * the v0.3.0 default `AgentRunnerCore`. Maps from `--legacy-inner`
159
- * / `BEEOS_LEGACY_INNER`. Default `false`.
142
+ * Inner VLM. Performs the screenshot→reason→act loop.
143
+ * Maps from `VLM_*` env / `--vlm-*` flags.
160
144
  */
161
- legacyInner: z.boolean().default(false),
145
+ vlm: LlmSection.default(vlmDefaults),
162
146
  /**
163
147
  * Enable OrchestratorAgent (OpenAI tool-calling outer loop + inner
164
148
  * mobile_use VLM) instead of the default `AgentRunnerCore`. Maps from
@@ -177,26 +161,15 @@ export const Config = z
177
161
  * → reuse `mobileUse.model`. Maps from `--planner-model`.
178
162
  */
179
163
  plannerModel: z.string().default(""),
180
- /** Optional planner base URL. Empty → reuse `mobileUse.baseUrl`. */
164
+ /** Optional planner base URL. Empty → reuse `vlm.baseUrl`. */
181
165
  plannerBaseUrl: z.string().default(""),
182
- /** Optional planner API key. Empty → reuse `mobileUse.apiKey`. */
166
+ /** Optional planner API key. Empty → reuse `vlm.apiKey`. */
183
167
  plannerApiKey: z.string().default(""),
184
168
  // ── Plugin toggles ────────────────────────────────────────────────────
185
169
  /** Disable the ACP plugin (Bridge WS). Maps from `--no-acp`. */
186
170
  disableAcp: z.boolean().default(false),
187
171
  /** Disable the HTTP debug plugin. Maps from `--no-http`. */
188
172
  disableHttp: z.boolean().default(false),
189
- // ── Backward-compat top-level VLM fields ─────────────────────────────
190
- /**
191
- * @deprecated since the two-layer split — mirrored to `mobileUse.apiKey`
192
- * by the loader. New configs should use `mobileUse.apiKey` (and/or
193
- * `outer.apiKey` / `grounder.apiKey`) instead.
194
- */
195
- vlmApiKey: z.string().default(""),
196
- /** @deprecated mirrored to `mobileUse.baseUrl`. */
197
- vlmBaseUrl: z.string().default(DEFAULT_AROUTER_BASE_URL),
198
- /** @deprecated mirrored to `mobileUse.model`. */
199
- vlmModel: z.string().default(""),
200
173
  httpEnabled: z.boolean().default(false),
201
174
  httpHost: z.string().default("127.0.0.1"),
202
175
  httpPort: z.coerce.number().int().positive().default(9090),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type AgentBayTaskStatus = "running" | "completed" | "failed" | "cancelled" | "unsupported";
2
+ export type AgentTaskReason = "done" | "fail" | "call_for_user" | "step_budget" | "timeout" | "reflection_veto" | "cancelled" | "error";
3
+ export interface AgentCoreTaskOutcomeFields {
4
+ taskStatus: AgentBayTaskStatus;
5
+ taskReason: AgentTaskReason;
6
+ taskAction?: string;
7
+ taskProduct?: string;
8
+ taskError?: string;
9
+ }
10
+ export interface AgentTaskOutcome extends AgentCoreTaskOutcomeFields {
11
+ taskId: string;
12
+ }
13
+ export declare function deriveTaskOutcome(args: {
14
+ taskId: string;
15
+ result: {
16
+ finalMessage: string;
17
+ cancelled: boolean;
18
+ taskStatus?: AgentBayTaskStatus;
19
+ taskReason?: AgentTaskReason;
20
+ taskAction?: string;
21
+ taskProduct?: string;
22
+ taskError?: string;
23
+ };
24
+ error?: string;
25
+ }): AgentTaskOutcome;
26
+ export declare function taskOutcomeFromTerminator(args: {
27
+ terminator: string;
28
+ finalMessage?: string;
29
+ taskAction?: string;
30
+ taskError?: string;
31
+ }): AgentCoreTaskOutcomeFields;
32
+ export declare function toAgentBayTaskPayload(outcome: AgentTaskOutcome | AgentCoreTaskOutcomeFields): Record<string, unknown>;
@@ -0,0 +1,68 @@
1
+ export function deriveTaskOutcome(args) {
2
+ const { taskId, result, error } = args;
3
+ const taskStatus = result.taskStatus ?? (error
4
+ ? "failed"
5
+ : result.cancelled
6
+ ? "cancelled"
7
+ : "completed");
8
+ const taskReason = result.taskReason ?? (error
9
+ ? result.cancelled
10
+ ? "cancelled"
11
+ : "error"
12
+ : result.cancelled
13
+ ? "cancelled"
14
+ : "done");
15
+ const taskProduct = result.taskProduct ?? (result.finalMessage || undefined);
16
+ const taskError = result.taskError ?? error;
17
+ return {
18
+ taskId,
19
+ taskStatus,
20
+ taskReason,
21
+ ...(result.taskAction ? { taskAction: result.taskAction } : {}),
22
+ ...(taskProduct ? { taskProduct } : {}),
23
+ ...(taskError ? { taskError } : {}),
24
+ };
25
+ }
26
+ export function taskOutcomeFromTerminator(args) {
27
+ const { terminator, finalMessage, taskAction, taskError } = args;
28
+ const base = {
29
+ ...(taskAction ? { taskAction } : {}),
30
+ ...(finalMessage ? { taskProduct: finalMessage } : {}),
31
+ ...(taskError ? { taskError } : {}),
32
+ };
33
+ switch (terminator) {
34
+ case "done":
35
+ return { taskStatus: "completed", taskReason: "done", ...base };
36
+ case "cancelled":
37
+ return { taskStatus: "cancelled", taskReason: "cancelled", ...base };
38
+ case "call_for_user":
39
+ return { taskStatus: "failed", taskReason: "call_for_user", ...base };
40
+ case "step_budget":
41
+ return { taskStatus: "failed", taskReason: "step_budget", ...base };
42
+ case "timeout":
43
+ return { taskStatus: "failed", taskReason: "timeout", ...base };
44
+ case "reflection_veto":
45
+ return { taskStatus: "failed", taskReason: "reflection_veto", ...base };
46
+ case "fail":
47
+ return { taskStatus: "failed", taskReason: "fail", ...base };
48
+ case "error":
49
+ default:
50
+ return { taskStatus: "failed", taskReason: "error", ...base };
51
+ }
52
+ }
53
+ export function toAgentBayTaskPayload(outcome) {
54
+ const payload = {
55
+ task_status: outcome.taskStatus,
56
+ task_reason: outcome.taskReason,
57
+ };
58
+ if ("taskId" in outcome)
59
+ payload.task_id = outcome.taskId;
60
+ if (outcome.taskAction)
61
+ payload.task_action = outcome.taskAction;
62
+ if (outcome.taskProduct)
63
+ payload.task_product = outcome.taskProduct;
64
+ if (outcome.taskError)
65
+ payload.task_error = outcome.taskError;
66
+ return payload;
67
+ }
68
+ //# sourceMappingURL=task-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-outcome.js","sourceRoot":"","sources":["../../src/core/task-outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Adapter — `IProcessManager` that hosts the device-agent DAEMON in-process.
3
+ *
4
+ * This is the production "one process controls many devices" path. The fleet
5
+ * supervisor and its pure FSM are UNCHANGED: they still believe they are
6
+ * spawning a daemon child per device. This adapter intercepts only the daemon
7
+ * lifecycle and redirects it to an in-process {@link MultiDeviceHost}, while
8
+ * delegating EVERYTHING else (mcp + scrcpy spawn/kill, liveness, pid) to a
9
+ * real {@link NodeProcessManager}.
10
+ *
11
+ * Topology this produces:
12
+ *
13
+ * device-agent fleet start --in-process (this OS process)
14
+ * ├── device-mcp-server (one shared child, via delegate) ← still a child
15
+ * ├── scrcpy-bridge × N (per device, via delegate) ← still children
16
+ * └── MultiDeviceHost (the N device-agent daemons, in-process)
17
+ *
18
+ * So the N ~50 MB agent daemons collapse into one process (deduplicated
19
+ * module/runtime baseline), but live video (scrcpy) and the shared MCP keep
20
+ * their own processes exactly as before.
21
+ *
22
+ * Why wrap instead of edit the supervisor: keeping `supervisor.ts` /
23
+ * `node-process-manager.ts` byte-identical to upstream means zero merge
24
+ * friction and the daemon's failover / activeAdbSerial / vlm-config logic is
25
+ * reused verbatim — `spawnDaemon` already receives the post-failover active
26
+ * transport in `opts.adbSerial` and the instance id for the per-device VLM
27
+ * config in `opts.instanceId`.
28
+ */
29
+ import type { IProcessManager, ManagedProcess, ProcessEventListener, SpawnOptions, SpawnScrcpyOptions } from "../../ports/process-manager.js";
30
+ import { NodeProcessManager } from "./node-process-manager.js";
31
+ import type { Config } from "../../../config/schema.js";
32
+ import type { Logger } from "../../../logger/index.js";
33
+ export interface InProcessProcessManagerOptions {
34
+ /** Real process manager that owns the mcp + scrcpy children. */
35
+ delegate: NodeProcessManager;
36
+ /** Pino logger; the hosted MultiDeviceHost derives per-device children from it. */
37
+ logger: Logger;
38
+ /** Fallback Agent Gateway URL for bindings without a per-device override. */
39
+ defaultAgentGatewayUrl?: string;
40
+ /** Shared fleet-wide base config (vlm/outer/planMode/…) applied to every runtime. */
41
+ baseConfig?: Partial<Config>;
42
+ /** Bind host of the shared mcp (default 127.0.0.1, matches NodeProcessManager). */
43
+ mcpHost?: string;
44
+ }
45
+ export declare class InProcessProcessManager implements IProcessManager {
46
+ private readonly delegate;
47
+ private readonly log;
48
+ private readonly defaultAgentGatewayUrl;
49
+ private readonly baseConfig;
50
+ private readonly mcpHost;
51
+ /** Lazily built on the first spawnDaemon. */
52
+ private host;
53
+ private readonly listeners;
54
+ constructor(opts: InProcessProcessManagerOptions);
55
+ start(): Promise<void>;
56
+ stop(): Promise<void>;
57
+ spawnMcp(opts: SpawnOptions): Promise<void>;
58
+ killMcp(serial: string, opts?: {
59
+ expected?: boolean;
60
+ }): Promise<void>;
61
+ spawnScrcpy(opts: SpawnScrcpyOptions): Promise<void>;
62
+ killScrcpy(serial: string, opts?: {
63
+ expected?: boolean;
64
+ }): Promise<void>;
65
+ spawnDaemon(opts: SpawnOptions): Promise<void>;
66
+ killDaemon(serial: string, opts?: {
67
+ expected?: boolean;
68
+ }): Promise<void>;
69
+ isAlive(serial: string, which: ManagedProcess): boolean;
70
+ pid(serial: string, which: ManagedProcess): number | null;
71
+ on(listener: ProcessEventListener): () => void;
72
+ private ensureHost;
73
+ private emit;
74
+ }
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Adapter — `IProcessManager` that hosts the device-agent DAEMON in-process.
3
+ *
4
+ * This is the production "one process controls many devices" path. The fleet
5
+ * supervisor and its pure FSM are UNCHANGED: they still believe they are
6
+ * spawning a daemon child per device. This adapter intercepts only the daemon
7
+ * lifecycle and redirects it to an in-process {@link MultiDeviceHost}, while
8
+ * delegating EVERYTHING else (mcp + scrcpy spawn/kill, liveness, pid) to a
9
+ * real {@link NodeProcessManager}.
10
+ *
11
+ * Topology this produces:
12
+ *
13
+ * device-agent fleet start --in-process (this OS process)
14
+ * ├── device-mcp-server (one shared child, via delegate) ← still a child
15
+ * ├── scrcpy-bridge × N (per device, via delegate) ← still children
16
+ * └── MultiDeviceHost (the N device-agent daemons, in-process)
17
+ *
18
+ * So the N ~50 MB agent daemons collapse into one process (deduplicated
19
+ * module/runtime baseline), but live video (scrcpy) and the shared MCP keep
20
+ * their own processes exactly as before.
21
+ *
22
+ * Why wrap instead of edit the supervisor: keeping `supervisor.ts` /
23
+ * `node-process-manager.ts` byte-identical to upstream means zero merge
24
+ * friction and the daemon's failover / activeAdbSerial / vlm-config logic is
25
+ * reused verbatim — `spawnDaemon` already receives the post-failover active
26
+ * transport in `opts.adbSerial` and the instance id for the per-device VLM
27
+ * config in `opts.instanceId`.
28
+ */
29
+ import * as path from "node:path";
30
+ import * as fs from "node:fs";
31
+ import { materializeInlineAgentConfig } from "./node-process-manager.js";
32
+ import { MultiDeviceHost } from "../../../app/multi-device-host.js";
33
+ import { getBeeosHome } from "../../../config/paths.js";
34
+ export class InProcessProcessManager {
35
+ delegate;
36
+ log;
37
+ defaultAgentGatewayUrl;
38
+ baseConfig;
39
+ mcpHost;
40
+ /** Lazily built on the first spawnDaemon. */
41
+ host = null;
42
+ listeners = new Set();
43
+ constructor(opts) {
44
+ this.delegate = opts.delegate;
45
+ this.log = opts.logger;
46
+ this.defaultAgentGatewayUrl = opts.defaultAgentGatewayUrl;
47
+ this.baseConfig = opts.baseConfig;
48
+ this.mcpHost = opts.mcpHost ?? "127.0.0.1";
49
+ }
50
+ async start() {
51
+ await this.delegate.start();
52
+ }
53
+ async stop() {
54
+ // Tear down hosted runtimes first (closes their WS + flushes sessions),
55
+ // then the mcp/scrcpy children the delegate owns.
56
+ if (this.host)
57
+ await this.host.stop().catch(() => { });
58
+ await this.delegate.stop();
59
+ }
60
+ // ── mcp / scrcpy: delegated verbatim (still real child processes) ─────────
61
+ spawnMcp(opts) {
62
+ // Deliberately NO port caching here. The singleton's real listening port
63
+ // lives on the delegate (`globalMcpPort`) and can change across mcp
64
+ // restarts — it adopts the sticky port of whichever device re-boots it.
65
+ // spawnDaemon reads the live port from the delegate on every call, exactly
66
+ // like classic NodeProcessManager.spawnDaemon. (Caching the first
67
+ // `opts.mcpPort` here was the bug that left runtimes dialing a dead port
68
+ // after an mcp restart on a different device's sticky port.)
69
+ return this.delegate.spawnMcp(opts);
70
+ }
71
+ killMcp(serial, opts) {
72
+ return this.delegate.killMcp(serial, opts);
73
+ }
74
+ spawnScrcpy(opts) {
75
+ return this.delegate.spawnScrcpy(opts);
76
+ }
77
+ killScrcpy(serial, opts) {
78
+ return this.delegate.killScrcpy(serial, opts);
79
+ }
80
+ // ── daemon: hosted in-process ────────────────────────────────────────────
81
+ async spawnDaemon(opts) {
82
+ // Always route the runtime at the LIVE singleton mcp port — mirrors classic
83
+ // NodeProcessManager.spawnDaemon (`globalMcpPort > 0 ? globalMcpPort :
84
+ // opts.mcpPort`). `opts.mcpPort` is only the per-device sticky fallback for
85
+ // the device that first boots the singleton; once it is up, and after any
86
+ // mcp restart that landed it on a different device's sticky port, the
87
+ // actual port differs and every runtime must follow it.
88
+ const mcpUrl = `http://${this.mcpHost}:${this.delegate.effectiveMcpPort(opts.mcpPort)}`;
89
+ const host = this.ensureHost(mcpUrl);
90
+ // Per-instance VLM/orchestrator config: materialise the same file the
91
+ // spawned daemon would read via `--vlm-config-file`, then fall back to the
92
+ // legacy `~/.beeos/<instanceId>.config.json` if present.
93
+ let configFile;
94
+ if (opts.instanceId) {
95
+ const fromState = await materializeInlineAgentConfig(opts.instanceId);
96
+ if (fromState) {
97
+ configFile = fromState;
98
+ }
99
+ else {
100
+ const legacy = path.join(getBeeosHome(), `${opts.instanceId}.config.json`);
101
+ if (await fileExists(legacy))
102
+ configFile = legacy;
103
+ }
104
+ }
105
+ await host.addDevice(spawnOptionsToBinding(opts), { configFile, mcpUrl });
106
+ // Translate boot outcome into the lifecycle events the FSM expects. A
107
+ // boot failure is fault-isolated inside the host (no throw), so we must
108
+ // detect it via `has()` and report `daemon_exited` (unexpected) — that
109
+ // drives the FSM's backoff + respawn exactly like a crashed child.
110
+ if (host.has(opts.serial)) {
111
+ this.emit({ kind: "daemon_started", serial: opts.serial, pid: process.pid });
112
+ }
113
+ else {
114
+ this.emit({
115
+ kind: "daemon_exited",
116
+ serial: opts.serial,
117
+ code: 1,
118
+ signal: null,
119
+ expected: false,
120
+ });
121
+ }
122
+ }
123
+ async killDaemon(serial, opts) {
124
+ const wasRunning = this.host?.has(serial) ?? false;
125
+ if (this.host)
126
+ await this.host.removeDevice(serial);
127
+ if (wasRunning) {
128
+ this.emit({
129
+ kind: "daemon_exited",
130
+ serial,
131
+ code: null,
132
+ signal: "SIGTERM",
133
+ expected: opts?.expected ?? true,
134
+ });
135
+ }
136
+ }
137
+ // ── introspection ────────────────────────────────────────────────────────
138
+ isAlive(serial, which) {
139
+ if (which === "daemon")
140
+ return this.host?.has(serial) ?? false;
141
+ return this.delegate.isAlive(serial, which);
142
+ }
143
+ pid(serial, which) {
144
+ // Hosted daemons share THIS process — report our own pid when present.
145
+ if (which === "daemon")
146
+ return this.host?.has(serial) ? process.pid : null;
147
+ return this.delegate.pid(serial, which);
148
+ }
149
+ on(listener) {
150
+ // Fan in BOTH the delegate's mcp/scrcpy events and our synthetic daemon
151
+ // events. The delegate never emits daemon events (we never call its
152
+ // spawnDaemon), so there is no duplication.
153
+ const offDelegate = this.delegate.on(listener);
154
+ this.listeners.add(listener);
155
+ return () => {
156
+ offDelegate();
157
+ this.listeners.delete(listener);
158
+ };
159
+ }
160
+ // ── internals ─────────────────────────────────────────────────────────────
161
+ ensureHost(defaultMcpUrl) {
162
+ if (this.host)
163
+ return this.host;
164
+ this.host = new MultiDeviceHost({
165
+ // Fallback only — spawnDaemon passes a per-device `mcpUrl` override on
166
+ // every addDevice (computed from the live singleton port), so this
167
+ // constructor default is never actually used to route a runtime.
168
+ mcpUrl: defaultMcpUrl,
169
+ defaultAgentGatewayUrl: this.defaultAgentGatewayUrl,
170
+ ...(this.baseConfig ? { baseConfig: this.baseConfig } : {}),
171
+ logger: this.log,
172
+ });
173
+ return this.host;
174
+ }
175
+ emit(event) {
176
+ for (const l of this.listeners) {
177
+ try {
178
+ l(event);
179
+ }
180
+ catch (e) {
181
+ this.log.warn({ err: e.message }, "in-process manager: listener threw");
182
+ }
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * Project a supervisor-built `SpawnOptions` onto the `DeviceBinding` the host
188
+ * consumes. `opts.adbSerial` is already the post-failover ACTIVE transport, so
189
+ * the in-process runtime targets the same device the spawned daemon would.
190
+ */
191
+ function spawnOptionsToBinding(opts) {
192
+ return {
193
+ serial: opts.serial,
194
+ adbSerial: opts.adbSerial,
195
+ name: opts.name ?? opts.serial,
196
+ instanceId: opts.instanceId ?? null,
197
+ keyFile: opts.keyFile,
198
+ agentGatewayUrl: opts.agentGatewayUrl,
199
+ backend: opts.backend,
200
+ // httpPort intentionally dropped — MultiDeviceHost forces HTTP debug off.
201
+ };
202
+ }
203
+ async function fileExists(p) {
204
+ try {
205
+ await fs.promises.access(p);
206
+ return true;
207
+ }
208
+ catch {
209
+ return false;
210
+ }
211
+ }
212
+ //# sourceMappingURL=in-process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-process-manager.js","sourceRoot":"","sources":["../../../../src/fleet/adapters/process/in-process-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAW9B,OAAO,EAAsB,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAexD,MAAM,OAAO,uBAAuB;IACjB,QAAQ,CAAqB;IAC7B,GAAG,CAAS;IACZ,sBAAsB,CAAqB;IAC3C,UAAU,CAA8B;IACxC,OAAO,CAAS;IAEjC,6CAA6C;IACrC,IAAI,GAA2B,IAAI,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE7D,YAAY,IAAoC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,wEAAwE;QACxE,kDAAkD;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAE7E,QAAQ,CAAC,IAAkB;QACzB,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,2EAA2E;QAC3E,kEAAkE;QAClE,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,MAAc,EAAE,IAA6B;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,WAAW,CAAC,IAAwB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,UAAU,CAAC,MAAc,EAAE,IAA6B;QACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,WAAW,CAAC,IAAkB;QAClC,4EAA4E;QAC5E,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,wDAAwD;QACxD,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAErC,sEAAsE;QACtE,2EAA2E;QAC3E,yDAAyD;QACzD,IAAI,UAA8B,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,SAAS,EAAE,CAAC;gBACd,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,cAAc,CAAC,CAAC;gBAC3E,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC;oBAAE,UAAU,GAAG,MAAM,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1E,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;QACvE,mEAAmE;QACnE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAA6B;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,MAAM;gBACN,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4EAA4E;IAE5E,OAAO,CAAC,MAAc,EAAE,KAAqB;QAC3C,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAqB;QACvC,uEAAuE;QACvE,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,EAAE,CAAC,QAA8B;QAC/B,wEAAwE;QACxE,oEAAoE;QACpE,4CAA4C;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,6EAA6E;IAErE,UAAU,CAAC,aAAqB;QACtC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC;YAC9B,uEAAuE;YACvE,mEAAmE;YACnE,iEAAiE;YACjE,MAAM,EAAE,aAAa;YACrB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,EAAE,IAAI,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,IAAI,CAAC,KAAmB;QAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,CAAC,CAAC,KAAK,CAAC,CAAC;YACX,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAkB;IAC/C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;QAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,OAAO,EAAE,IAAI,CAAC,OAAmC;QACjD,0EAA0E;KAC3E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -241,6 +241,15 @@ export declare class NodeProcessManager implements IProcessManager {
241
241
  * A no-op when the singleton is already gone.
242
242
  */
243
243
  private killGlobalMcp;
244
+ /**
245
+ * The port a daemon's `--mcp-url` must target: the live singleton
246
+ * `globalMcpPort` when the shared mcp is up, else the supplied per-device
247
+ * fallback (`opts.mcpPort`) for direct/test invocations with no prior
248
+ * `spawnMcp`. Exposed so `InProcessProcessManager` can route its in-process
249
+ * runtimes at the SAME live port classic daemons use — and follow it across
250
+ * mcp restarts instead of caching a stale port.
251
+ */
252
+ effectiveMcpPort(fallback: number): number;
244
253
  spawnDaemon(opts: SpawnOptions): Promise<void>;
245
254
  spawnScrcpy(opts: SpawnScrcpyOptions): Promise<void>;
246
255
  killMcp(serial: string, opts?: {
@@ -257,3 +266,22 @@ export declare class NodeProcessManager implements IProcessManager {
257
266
  private killChild;
258
267
  private emit;
259
268
  }
269
+ /**
270
+ * Read `state.json` and, if a `kind=device` agent with the given
271
+ * `instance_id` carries an inline `agent_config`, materialise it to a
272
+ * stable path under `~/.beeos/runtime/agent-config/<instance_id>.json`
273
+ * and return that path. Returns `null` when state.json is absent /
274
+ * malformed / forward-versioned / has no inline payload — caller then
275
+ * falls back to the legacy `~/.beeos/<instance_id>.config.json`.
276
+ *
277
+ * Why a temp file (rather than a `--vlm-config-json '<payload>'`
278
+ * flag) — keeping the existing CLI flag interface unchanged means
279
+ * the dual-write Step 3 doesn't have to ship in lockstep with a
280
+ * device-agent flag-parser change. The file lives under a stable
281
+ * path so successive spawns are idempotent (the FSM may respawn
282
+ * many times before the operator next runs `beeos device attach`).
283
+ *
284
+ * Round 5: shape parsing delegated to the shared `readStateJson`
285
+ * helper; this function just projects + materialises.
286
+ */
287
+ export declare function materializeInlineAgentConfig(instanceId: string): Promise<string | null>;