@beeos-ai/device-agent 0.12.7 → 0.14.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 (149) hide show
  1. package/dist/agent-runtime/adapters/base.d.ts +2 -0
  2. package/dist/agent-runtime/adapters/base.js +1 -0
  3. package/dist/agent-runtime/adapters/base.js.map +1 -1
  4. package/dist/agent-runtime/adapters/openai.js +39 -17
  5. package/dist/agent-runtime/adapters/openai.js.map +1 -1
  6. package/dist/agent-runtime/advanced/app-card.d.ts +23 -0
  7. package/dist/agent-runtime/advanced/app-card.js +99 -0
  8. package/dist/agent-runtime/advanced/app-card.js.map +1 -0
  9. package/dist/agent-runtime/advanced/knowledge.d.ts +15 -0
  10. package/dist/agent-runtime/advanced/knowledge.js +85 -0
  11. package/dist/agent-runtime/advanced/knowledge.js.map +1 -0
  12. package/dist/agent-runtime/advanced/subgoal-verifier.d.ts +37 -0
  13. package/dist/agent-runtime/advanced/subgoal-verifier.js +190 -0
  14. package/dist/agent-runtime/advanced/subgoal-verifier.js.map +1 -0
  15. package/dist/agent-runtime/advanced/task-state.d.ts +20 -0
  16. package/dist/agent-runtime/advanced/task-state.js +60 -0
  17. package/dist/agent-runtime/advanced/task-state.js.map +1 -0
  18. package/dist/agent-runtime/agent-runner.d.ts +16 -27
  19. package/dist/agent-runtime/agent-runner.js +19 -132
  20. package/dist/agent-runtime/agent-runner.js.map +1 -1
  21. package/dist/agent-runtime/core.d.ts +8 -0
  22. package/dist/agent-runtime/core.js +24 -2
  23. package/dist/agent-runtime/core.js.map +1 -1
  24. package/dist/agent-runtime/execution-mode.d.ts +28 -0
  25. package/dist/agent-runtime/execution-mode.js +51 -0
  26. package/dist/agent-runtime/execution-mode.js.map +1 -0
  27. package/dist/agent-runtime/factory.d.ts +6 -4
  28. package/dist/agent-runtime/factory.js +4 -4
  29. package/dist/agent-runtime/factory.js.map +1 -1
  30. package/dist/agent-runtime/index.d.ts +9 -2
  31. package/dist/agent-runtime/index.js +7 -0
  32. package/dist/agent-runtime/index.js.map +1 -1
  33. package/dist/agent-runtime/models/base.d.ts +2 -0
  34. package/dist/agent-runtime/models/client.d.ts +1 -0
  35. package/dist/agent-runtime/models/client.js +90 -1
  36. package/dist/agent-runtime/models/client.js.map +1 -1
  37. package/dist/agent-runtime/models/runtime-registry.d.ts +28 -0
  38. package/dist/agent-runtime/models/runtime-registry.js +59 -0
  39. package/dist/agent-runtime/models/runtime-registry.js.map +1 -0
  40. package/dist/agent-runtime/models/vlm/autoglm.js +14 -9
  41. package/dist/agent-runtime/models/vlm/autoglm.js.map +1 -1
  42. package/dist/agent-runtime/models/vlm/base.d.ts +15 -1
  43. package/dist/agent-runtime/models/vlm/base.js +31 -10
  44. package/dist/agent-runtime/models/vlm/base.js.map +1 -1
  45. package/dist/agent-runtime/models/vlm/general.d.ts +7 -1
  46. package/dist/agent-runtime/models/vlm/general.js +43 -9
  47. package/dist/agent-runtime/models/vlm/general.js.map +1 -1
  48. package/dist/agent-runtime/models/vlm/guiowl.js +4 -13
  49. package/dist/agent-runtime/models/vlm/guiowl.js.map +1 -1
  50. package/dist/agent-runtime/models/vlm/index.d.ts +1 -0
  51. package/dist/agent-runtime/models/vlm/index.js +1 -0
  52. package/dist/agent-runtime/models/vlm/index.js.map +1 -1
  53. package/dist/agent-runtime/models/vlm/maiui.js +4 -6
  54. package/dist/agent-runtime/models/vlm/maiui.js.map +1 -1
  55. package/dist/agent-runtime/models/vlm/qwen38.d.ts +1 -0
  56. package/dist/agent-runtime/models/vlm/qwen38.js +241 -0
  57. package/dist/agent-runtime/models/vlm/qwen38.js.map +1 -0
  58. package/dist/agent-runtime/models/vlm/qwenvl.js +4 -6
  59. package/dist/agent-runtime/models/vlm/qwenvl.js.map +1 -1
  60. package/dist/agent-runtime/models/vlm/shared/tool-call.d.ts +6 -2
  61. package/dist/agent-runtime/models/vlm/shared/tool-call.js +91 -17
  62. package/dist/agent-runtime/models/vlm/shared/tool-call.js.map +1 -1
  63. package/dist/agent-runtime/modes/hybrid/index.d.ts +25 -13
  64. package/dist/agent-runtime/modes/hybrid/index.js +74 -28
  65. package/dist/agent-runtime/modes/hybrid/index.js.map +1 -1
  66. package/dist/agent-runtime/modes/hybrid/planner/base.d.ts +4 -0
  67. package/dist/agent-runtime/modes/hybrid/planner/base.js.map +1 -1
  68. package/dist/agent-runtime/modes/hybrid/planner/llm-planner.js +2 -0
  69. package/dist/agent-runtime/modes/hybrid/planner/llm-planner.js.map +1 -1
  70. package/dist/agent-runtime/modes/hybrid/planner/noop-planner.d.ts +1 -1
  71. package/dist/agent-runtime/modes/hybrid/planner/noop-planner.js +1 -1
  72. package/dist/agent-runtime/modes/hybrid/planner/prompts.d.ts +2 -0
  73. package/dist/agent-runtime/modes/hybrid/planner/prompts.js +8 -0
  74. package/dist/agent-runtime/modes/hybrid/planner/prompts.js.map +1 -1
  75. package/dist/agent-runtime/modes/orchestrator/index.d.ts +6 -0
  76. package/dist/agent-runtime/modes/orchestrator/index.js +4 -0
  77. package/dist/agent-runtime/modes/orchestrator/index.js.map +1 -1
  78. package/dist/agent-runtime/observation-mode.d.ts +2 -0
  79. package/dist/agent-runtime/observation-mode.js +2 -0
  80. package/dist/agent-runtime/observation-mode.js.map +1 -1
  81. package/dist/agent-runtime/plan-executor.d.ts +8 -2
  82. package/dist/agent-runtime/plan-executor.js +109 -14
  83. package/dist/agent-runtime/plan-executor.js.map +1 -1
  84. package/dist/agent-runtime/reflectors/policy.d.ts +2 -5
  85. package/dist/agent-runtime/reflectors/policy.js +6 -14
  86. package/dist/agent-runtime/reflectors/policy.js.map +1 -1
  87. package/dist/agent-runtime/reflectors/trajectory-reflector.d.ts +3 -4
  88. package/dist/agent-runtime/reflectors/trajectory-reflector.js +4 -4
  89. package/dist/agent-runtime/reflectors/trajectory-reflector.js.map +1 -1
  90. package/dist/agent-runtime/skills/replay.js +1 -0
  91. package/dist/agent-runtime/skills/replay.js.map +1 -1
  92. package/dist/agent-runtime/vlm.d.ts +2 -3
  93. package/dist/agent-runtime/vlm.js +2 -3
  94. package/dist/agent-runtime/vlm.js.map +1 -1
  95. package/dist/api.js +1 -0
  96. package/dist/api.js.map +1 -1
  97. package/dist/app/agent-host.js +3 -3
  98. package/dist/app/agent-host.js.map +1 -1
  99. package/dist/app/multi-device-host.d.ts +2 -2
  100. package/dist/app/multi-device-host.js +1 -1
  101. package/dist/app/session-manager.d.ts +20 -3
  102. package/dist/app/session-manager.js +33 -4
  103. package/dist/app/session-manager.js.map +1 -1
  104. package/dist/bootstrap.d.ts +2 -8
  105. package/dist/bootstrap.js +61 -103
  106. package/dist/bootstrap.js.map +1 -1
  107. package/dist/config/loader.d.ts +2 -9
  108. package/dist/config/loader.js +32 -34
  109. package/dist/config/loader.js.map +1 -1
  110. package/dist/config/schema.d.ts +5 -29
  111. package/dist/config/schema.js +8 -42
  112. package/dist/config/schema.js.map +1 -1
  113. package/dist/device/apps.js +51 -1
  114. package/dist/device/apps.js.map +1 -1
  115. package/dist/fleet/adapters/process/in-process-manager.d.ts +1 -1
  116. package/dist/fleet/adapters/process/node-process-manager.d.ts +7 -0
  117. package/dist/fleet/adapters/process/node-process-manager.js +29 -8
  118. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -1
  119. package/dist/inbound/acp/handlers/session.d.ts +4 -1
  120. package/dist/inbound/acp/handlers/session.js +24 -10
  121. package/dist/inbound/acp/handlers/session.js.map +1 -1
  122. package/dist/inbound/cli/benchmark-command.d.ts +17 -0
  123. package/dist/inbound/cli/benchmark-command.js +158 -0
  124. package/dist/inbound/cli/benchmark-command.js.map +1 -0
  125. package/dist/inbound/cli/fleet-command.d.ts +12 -1
  126. package/dist/inbound/cli/fleet-command.js +38 -9
  127. package/dist/inbound/cli/fleet-command.js.map +1 -1
  128. package/dist/inbound/cli/main.d.ts +2 -6
  129. package/dist/inbound/cli/main.js +49 -33
  130. package/dist/inbound/cli/main.js.map +1 -1
  131. package/dist/inbound/cli/run-artifacts.d.ts +61 -0
  132. package/dist/inbound/cli/run-artifacts.js +247 -0
  133. package/dist/inbound/cli/run-artifacts.js.map +1 -0
  134. package/dist/inbound/cli/run-command.d.ts +23 -20
  135. package/dist/inbound/cli/run-command.js +157 -159
  136. package/dist/inbound/cli/run-command.js.map +1 -1
  137. package/dist/index.d.ts +9 -3
  138. package/dist/index.js +5 -2
  139. package/dist/index.js.map +1 -1
  140. package/dist/plugins/http-debug/early-health.d.ts +11 -0
  141. package/dist/plugins/http-debug/early-health.js +51 -0
  142. package/dist/plugins/http-debug/early-health.js.map +1 -0
  143. package/dist/plugins/http-debug/index.js +2 -0
  144. package/dist/plugins/http-debug/index.js.map +1 -1
  145. package/dist/plugins/message-bus/inbound.js +7 -6
  146. package/dist/plugins/message-bus/inbound.js.map +1 -1
  147. package/dist/ports/agent-core.d.ts +13 -13
  148. package/dist/ports/agent-host.d.ts +4 -1
  149. package/package.json +4 -4
@@ -18,15 +18,39 @@ import * as url from "node:url";
18
18
  import { bootstrap, BootstrapError } from "../../bootstrap.js";
19
19
  import { getLogger } from "../../logger/index.js";
20
20
  import { runCommand } from "./run-command.js";
21
+ import { benchmarkCommand } from "./benchmark-command.js";
21
22
  import { fleetCommand } from "./fleet-command.js";
22
23
  import { skillsCommand } from "./skills-command.js";
24
+ import { parseObservationMode } from "../../agent-runtime/observation-mode.js";
23
25
  export async function main(argv = process.argv.slice(2)) {
24
26
  // Subcommand dispatch — `device-agent run ...` runs a one-shot Plan-Act
25
27
  // task without going through the ACP bootstrap. `device-agent fleet ...`
26
28
  // drives the multi-device supervisor (start / status / devices / restart /
27
29
  // reload). Everything else falls through to the daemon path.
28
30
  if (argv[0] === "run") {
29
- return runCommand(argv.slice(1));
31
+ const controller = new AbortController();
32
+ let signalExitCode;
33
+ const onSigint = () => {
34
+ signalExitCode = 130;
35
+ controller.abort();
36
+ };
37
+ const onSigterm = () => {
38
+ signalExitCode = 143;
39
+ controller.abort();
40
+ };
41
+ process.once("SIGINT", onSigint);
42
+ process.once("SIGTERM", onSigterm);
43
+ try {
44
+ const code = await runCommand(argv.slice(1), {}, { signal: controller.signal });
45
+ return signalExitCode ?? code;
46
+ }
47
+ finally {
48
+ process.off("SIGINT", onSigint);
49
+ process.off("SIGTERM", onSigterm);
50
+ }
51
+ }
52
+ if (argv[0] === "benchmark") {
53
+ return benchmarkCommand(argv.slice(1));
30
54
  }
31
55
  if (argv[0] === "fleet") {
32
56
  return fleetCommand(argv.slice(1));
@@ -70,19 +94,14 @@ export async function main(argv = process.argv.slice(2)) {
70
94
  /**
71
95
  * Parse `argv` into the structured `CliFlags` consumed by `loadConfig`.
72
96
  *
73
- * Two LLM groups are exposed as dedicated flag families so each layer
74
- * can be tuned independently — see `config/loader.ts` for how they
75
- * resolve against env vars and the JSON config file:
76
- *
77
- * --outer-* outer orchestrator (tool-calling driver LLM)
78
- * --vlm-* inner VLM (screenshot→reason→act loop)
97
+ * The primary model can be configured through either the canonical
98
+ * `--model` family or the legacy `--vlm-*` aliases.
79
99
  */
80
100
  export function parseArgs(argv) {
81
101
  const out = {};
82
102
  // Lazy-init helpers — only allocate when the user actually passes one
83
103
  // of the three group's flags so empty objects don't end up populating
84
104
  // `flagLayer` in the loader.
85
- const outer = () => (out.outer ??= {});
86
105
  const vlm = () => (out.vlm ??= {});
87
106
  for (let i = 0; i < argv.length; i++) {
88
107
  const a = argv[i];
@@ -113,6 +132,9 @@ export function parseArgs(argv) {
113
132
  case "--key":
114
133
  out.key = next();
115
134
  break;
135
+ case "--identity-key-file":
136
+ out.key = next();
137
+ break;
116
138
  case "--agent-gateway-url":
117
139
  out.agentGatewayUrl = next();
118
140
  break;
@@ -143,18 +165,15 @@ export function parseArgs(argv) {
143
165
  case "--mcp-autospawn":
144
166
  out.mcpAutospawn = true;
145
167
  break;
146
- // ── outer orchestrator LLM ────────────────────────────────────────
147
- case "--outer-api-key":
148
- outer().apiKey = next();
149
- break;
150
- case "--outer-base-url":
151
- outer().baseUrl = next();
168
+ // Canonical OpenAI-compatible primary model triple.
169
+ case "--api-key":
170
+ vlm().apiKey = next();
152
171
  break;
153
- case "--outer-model":
154
- outer().model = next();
172
+ case "--base-url":
173
+ vlm().baseUrl = next();
155
174
  break;
156
- case "--outer-provider":
157
- outer().provider = next();
175
+ case "--model":
176
+ vlm().model = next();
158
177
  break;
159
178
  // ── inner VLM ────────────────────────────────────────────────────
160
179
  case "--vlm-api-key":
@@ -171,14 +190,11 @@ export function parseArgs(argv) {
171
190
  break;
172
191
  case "--observation-mode": {
173
192
  const value = next();
174
- if (value === "auto" || value === "vision" || value === "xml" || value === "hybrid") {
175
- out.observationMode = value;
176
- }
193
+ const observationMode = parseObservationMode(value);
194
+ if (observationMode)
195
+ out.observationMode = observationMode;
177
196
  break;
178
197
  }
179
- case "--orchestrator":
180
- out.orchestrator = true;
181
- break;
182
198
  case "--no-acp":
183
199
  out.noAcp = true;
184
200
  break;
@@ -231,16 +247,17 @@ function printUsage() {
231
247
  Usage:
232
248
  device-agent [options]
233
249
  device-agent run --task "..." [options] (one-shot Plan-Act runner; --help for details)
250
+ device-agent benchmark --tasks tasks.txt (repeatable task suite with trace artifacts)
234
251
  device-agent fleet <subcommand> ... (multi-device supervisor; \`fleet --help\` for details)
235
252
  device-agent skills <subcommand> ... (skill cache CLI; \`skills --help\` for details)
236
253
  Recommended (sibling MCP server):
237
254
  device-agent --mcp-url http://127.0.0.1:7900 --bridge wss://...
238
255
  device-agent --mcp-autospawn --mode android --adb <serial>
239
256
 
240
- One-shot Plan-Act (v0.3.0):
257
+ One-shot task:
241
258
  device-agent run --task "打开微信,发一条朋友圈" \\
242
259
  --mcp http://127.0.0.1:7900 --model autoglm-phone-9b \\
243
- --base-url https://autoglm-mobile-9b.arouter.ai/v1 --plan auto
260
+ --base-url https://autoglm-mobile-9b.arouter.ai/v1 --execution-mode fast
244
261
 
245
262
  Legacy single-process (deprecated after 0.2.0):
246
263
  device-agent --standalone --http --mode desktop
@@ -250,7 +267,8 @@ Options:
250
267
  --standalone Skip Bridge handshake; HTTP API only
251
268
  --bridge <url> Bridge WebSocket URL (override; e.g. wss://bridge.beeos.ai:18443)
252
269
  --service <name> Bridge service name (default: acp)
253
- --key <path> Ed25519 identity key file (default: ~/.beeos/device-agent.key)
270
+ --identity-key-file <path> Ed25519 identity key file (default: ~/.beeos/device-agent.key)
271
+ --key <path> Deprecated alias for --identity-key-file
254
272
  --agent-gateway-url <url> Agent Gateway base URL (default: https://agent-gw.beeos.ai)
255
273
  --region <name> Preferred region for bridge allocation
256
274
  --mcp-url <url> Sibling device-mcp-server URL (probe at boot; e.g. http://127.0.0.1:7900)
@@ -260,16 +278,14 @@ Options:
260
278
  --device <id> Alias for --adb — logical device id passed on every MCP tool call
261
279
  --adb-host <host> ADB server host (legacy in-process; default: 127.0.0.1)
262
280
  --adb-port <port> ADB server port (legacy in-process; default: 5037)
263
- --outer-api-key <key> Outer orchestrator LLM API key (driver of the two-layer agent)
264
- --outer-base-url <url> Outer orchestrator base URL (default ARouter)
265
- --outer-model <name> Outer orchestrator model (default moonshotai/kimi-k2.6)
266
- --outer-provider <name> Outer adapter (openrouter / openai / anthropic / google)
281
+ --api-key <key> Primary model API key (or OPENAI_API_KEY)
282
+ --base-url <url> Primary OpenAI-compatible base URL (or OPENAI_BASE_URL)
283
+ --model <name> Primary model id (or OPENAI_MODEL)
267
284
  --vlm-api-key <key> Inner VLM API key
268
285
  --vlm-base-url <url> Inner VLM base URL
269
286
  --vlm-model <name> Inner VLM model id
270
287
  --vlm-provider <p> Inner VLM adapter (autoglm / qwen-vl / …)
271
- --observation-mode <mode> auto | vision | xml | hybrid (default: auto)
272
- --orchestrator Force the two-layer OrchestratorAgent (outer tool-calling LLM + inner VLM)
288
+ --observation-mode <mode> auto | structure | vision | hybrid (default: auto; xml/a11y compatible)
273
289
  --no-acp Disable the ACP plugin (Bridge WS)
274
290
  --no-http Disable the HTTP debug plugin
275
291
  --http Enable HTTP debug REST API
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/inbound/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,IAAI,MAA6C,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACxE,OAAO,CAAC,CAAC,QAAQ,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE;QAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,sEAAsE;IACtE,sEAAsE;IACtE,6BAA6B;IAC7B,MAAM,KAAK,GAAG,GAAmC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,GAAiC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IAEjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,GAAW,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAAC,MAAM;YACtC,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC5C,KAAK,cAAc;gBAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;gBAAC,MAAM;YAClD,KAAK,UAAU;gBAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC5C,KAAK,WAAW;gBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC9C,KAAK,OAAO;gBAAE,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACtC,KAAK,qBAAqB;gBAAE,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAChE,KAAK,UAAU;gBAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC5C,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACxC,KAAK,OAAO;gBAAE,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACtC,KAAK,UAAU;gBACb,8DAA8D;gBAC9D,gEAAgE;gBAChE,gCAAgC;gBAChC,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,YAAY;gBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC/C,KAAK,YAAY;gBAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAC,MAAM;YACvD,KAAK,WAAW;gBAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC7C,KAAK,iBAAiB;gBAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,MAAM;YAEvD,qEAAqE;YACrE,KAAK,iBAAiB;gBAAE,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACvD,KAAK,kBAAkB;gBAAE,KAAK,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACzD,KAAK,eAAe;gBAAE,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACpD,KAAK,kBAAkB;gBAAE,KAAK,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAE1D,oEAAoE;YACpE,KAAK,eAAe;gBAAE,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACnD,KAAK,gBAAgB;gBAAE,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACrD,KAAK,aAAa;gBAAE,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAChD,KAAK,gBAAgB;gBAAE,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACtD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpF,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC9B,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,gBAAgB;gBAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,MAAM;YACtD,KAAK,UAAU;gBAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzC,KAAK,WAAW;gBAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC3C,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAAC,MAAM;YACtC,KAAK,aAAa;gBAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACjD,KAAK,aAAa;gBAAE,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAC,MAAM;YACzD,KAAK,qBAAqB;gBAAE,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAChE,KAAK,aAAa;gBAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACjD,KAAK,UAAU,CAAC;YAChB,KAAK,mBAAmB;gBAAE,GAAG,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YACzD,KAAK,eAAe;gBAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;gBAAC,MAAM;YACnD,KAAK,kBAAkB;gBAAE,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;gBAAC,MAAM;YACvD,KAAK,kBAAkB;gBAAE,GAAG,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC;gBAAC,MAAM;YAC3D;gBACE,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,iEAAiE;oBACjE,6DAA6D;oBAC7D,0DAA0D;oBAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,IAAI,CAAC,CAAC;gBACrE,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DtB,CAAC,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,uEAAuE;IACvE,oEAAoE;IACpE,2EAA2E;IAC3E,gCAAgC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACzD,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;KAC7D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAyB,CAAC;YAC3E,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4DAA4D;AAC5D,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,gCAAgC;AAChC,EAAE;AACF,mEAAmE;AACnE,8DAA8D;AAC9D,+EAA+E;AAC/E,EAAE;AACF,uEAAuE;AACvE,mEAAmE;AACnE,oEAAoE;AACpE,uEAAuE;AACvE,eAAe;AACf,EAAE;AACF,uEAAuE;AACvE,mEAAmE;AACnE,6BAA6B;AAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,UAAU,EAAE,CAAC;IACf,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;AACH,CAAC;AACD,IAAI,QAAQ,EAAE,CAAC;IACb,IAAI,EAAE;SACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/inbound/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export interface ArtifactMcp {
2
+ screenshot?(): Promise<{
3
+ b64: string;
4
+ format?: string;
5
+ width?: number;
6
+ height?: number;
7
+ deviceWidth?: number;
8
+ deviceHeight?: number;
9
+ currentApp?: string;
10
+ }>;
11
+ uiDump?(opts?: {
12
+ format?: "raw";
13
+ }): Promise<{
14
+ supported?: boolean;
15
+ content?: string;
16
+ }>;
17
+ }
18
+ export interface RunArtifactSummary {
19
+ exitCode: number;
20
+ configuration: Record<string, unknown>;
21
+ result?: Record<string, unknown>;
22
+ }
23
+ export declare class RunArtifactRecorder {
24
+ readonly runDir: string;
25
+ readonly startedAt: Date;
26
+ private finished;
27
+ private stepSequence;
28
+ private readonly openSteps;
29
+ private readonly artifacts;
30
+ constructor(outputRoot: string, task: string);
31
+ record(event: Record<string, unknown>): void;
32
+ /** Persist the exact frame that will be sent to the model for this round. */
33
+ captureObservation(event: {
34
+ index: number;
35
+ observation: {
36
+ screenW: number;
37
+ screenH: number;
38
+ screenshotB64: string;
39
+ uiDump?: string;
40
+ extra?: Record<string, unknown>;
41
+ screenStateHash?: string;
42
+ };
43
+ }): void;
44
+ /** Complete the most recent observation record with the model decision. */
45
+ completeStep(step: {
46
+ index: number;
47
+ rationale: string;
48
+ action: unknown;
49
+ prediction?: {
50
+ modelInput?: unknown;
51
+ rawResponse?: string;
52
+ confidence?: number;
53
+ usage?: unknown;
54
+ };
55
+ finished: boolean;
56
+ }): void;
57
+ capture(mcp: ArtifactMcp, phase: "before" | "after"): Promise<void>;
58
+ finish(summary: RunArtifactSummary): void;
59
+ }
60
+ export declare function expandPath(path: string): string;
61
+ export declare function formatTimestamp(date: Date): string;
@@ -0,0 +1,247 @@
1
+ import { appendFileSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { isAbsolute, join, resolve } from "node:path";
4
+ export class RunArtifactRecorder {
5
+ runDir;
6
+ startedAt = new Date();
7
+ finished = false;
8
+ stepSequence = 0;
9
+ openSteps = [];
10
+ artifacts = new Set();
11
+ constructor(outputRoot, task) {
12
+ const root = expandPath(outputRoot);
13
+ this.runDir = join(root, `${formatTimestamp(this.startedAt)}-${slugify(task)}-${process.pid}`);
14
+ mkdirSync(this.runDir, { recursive: true });
15
+ writeFileSync(join(this.runDir, "events.jsonl"), "", "utf8");
16
+ this.artifacts.add("events.jsonl");
17
+ }
18
+ record(event) {
19
+ appendFileSync(join(this.runDir, "events.jsonl"), `${JSON.stringify({ recordedAt: new Date().toISOString(), ...event })}\n`, "utf8");
20
+ }
21
+ /** Persist the exact frame that will be sent to the model for this round. */
22
+ captureObservation(event) {
23
+ const sequence = ++this.stepSequence;
24
+ const stepsDir = join(this.runDir, "steps");
25
+ const prefix = `step-${String(sequence).padStart(3, "0")}`;
26
+ let screenshotFile = null;
27
+ let uiDumpFile = null;
28
+ mkdirSync(stepsDir, { recursive: true });
29
+ if (event.observation.screenshotB64) {
30
+ const image = Buffer.from(event.observation.screenshotB64, "base64");
31
+ const extension = detectImageExtension(image);
32
+ screenshotFile = `${prefix}-observation.${extension}`;
33
+ writeFileSync(join(stepsDir, screenshotFile), image);
34
+ this.artifacts.add(`steps/${screenshotFile}`);
35
+ }
36
+ if (event.observation.uiDump) {
37
+ uiDumpFile = `${prefix}-observation.xml`;
38
+ writeFileSync(join(stepsDir, uiDumpFile), event.observation.uiDump, "utf8");
39
+ this.artifacts.add(`steps/${uiDumpFile}`);
40
+ }
41
+ const metadataFile = `${prefix}.json`;
42
+ const metadataPath = join(stepsDir, metadataFile);
43
+ const document = {
44
+ sequence,
45
+ agentStepIndex: event.index,
46
+ observedAt: new Date().toISOString(),
47
+ phase: "before_action",
48
+ observation: {
49
+ screenW: event.observation.screenW,
50
+ screenH: event.observation.screenH,
51
+ currentApp: event.observation.extra?.currentApp ?? null,
52
+ screenStateHash: event.observation.screenStateHash ?? null,
53
+ },
54
+ screenshotFile,
55
+ uiDumpFile,
56
+ rationale: null,
57
+ action: null,
58
+ modelInput: null,
59
+ modelRawOutput: null,
60
+ confidence: null,
61
+ usage: null,
62
+ finished: null,
63
+ completedAt: null,
64
+ };
65
+ writeJson(metadataPath, document);
66
+ this.openSteps.push({ agentStepIndex: event.index, metadataPath, document });
67
+ this.artifacts.add(`steps/${metadataFile}`);
68
+ }
69
+ /** Complete the most recent observation record with the model decision. */
70
+ completeStep(step) {
71
+ const record = [...this.openSteps]
72
+ .reverse()
73
+ .find((candidate) => candidate.agentStepIndex === step.index && candidate.document.action === null);
74
+ if (!record)
75
+ return;
76
+ record.document.rationale = step.rationale;
77
+ record.document.action = step.action;
78
+ record.document.modelInput = externalizeImages(step.prediction?.modelInput ?? null, record.document.screenshotFile);
79
+ record.document.modelRawOutput = step.prediction?.rawResponse ?? null;
80
+ record.document.confidence = step.prediction?.confidence ?? null;
81
+ record.document.usage = step.prediction?.usage ?? null;
82
+ record.document.finished = step.finished;
83
+ record.document.completedAt = new Date().toISOString();
84
+ writeJson(record.metadataPath, record.document);
85
+ }
86
+ async capture(mcp, phase) {
87
+ const errors = [];
88
+ if (typeof mcp.screenshot === "function") {
89
+ try {
90
+ const screenshot = await withTimeout(mcp.screenshot(), 10_000, `${phase} screenshot`);
91
+ const format = screenshot.format === "jpeg" ? "jpg" : "png";
92
+ const imageName = `${phase}.${format}`;
93
+ const metadataName = `${phase}.screenshot.json`;
94
+ const { b64, ...metadata } = screenshot;
95
+ writeFileSync(join(this.runDir, imageName), Buffer.from(b64, "base64"));
96
+ writeFileSync(join(this.runDir, metadataName), `${JSON.stringify(metadata, null, 2)}\n`, "utf8");
97
+ this.artifacts.add(imageName);
98
+ this.artifacts.add(metadataName);
99
+ }
100
+ catch (error) {
101
+ errors.push(`screenshot: ${error.message}`);
102
+ }
103
+ }
104
+ if (typeof mcp.uiDump === "function") {
105
+ try {
106
+ const dump = await withTimeout(mcp.uiDump({ format: "raw" }), 10_000, `${phase} UI dump`);
107
+ if (dump.supported !== false && typeof dump.content === "string") {
108
+ const xmlName = `${phase}.xml`;
109
+ writeFileSync(join(this.runDir, xmlName), dump.content, "utf8");
110
+ this.artifacts.add(xmlName);
111
+ }
112
+ }
113
+ catch (error) {
114
+ errors.push(`uiDump: ${error.message}`);
115
+ }
116
+ }
117
+ if (errors.length > 0) {
118
+ const errorName = `${phase}.capture-errors.txt`;
119
+ writeFileSync(join(this.runDir, errorName), `${errors.join("\n")}\n`, "utf8");
120
+ this.artifacts.add(errorName);
121
+ }
122
+ }
123
+ finish(summary) {
124
+ if (this.finished)
125
+ return;
126
+ this.finished = true;
127
+ this.artifacts.add("episode.json");
128
+ this.artifacts.add("summary.json");
129
+ const completedAt = new Date();
130
+ const coordinateSystems = [...new Set(this.openSteps
131
+ .map((step) => coordinateSystemOf(step.document.action))
132
+ .filter((value) => Boolean(value)))];
133
+ const firstObservation = this.openSteps[0]?.document.observation ?? {};
134
+ const episode = {
135
+ version: 1,
136
+ taskName: summary.configuration.task ?? null,
137
+ startedAt: this.startedAt.toISOString(),
138
+ completedAt: completedAt.toISOString(),
139
+ model: {
140
+ name: summary.configuration.modelName ?? null,
141
+ adapter: summary.configuration.adapter ?? null,
142
+ baseUrl: summary.configuration.baseUrl ?? null,
143
+ },
144
+ execution: {
145
+ mode: summary.configuration.executionMode ?? null,
146
+ plannerPolicy: summary.configuration.plannerPolicy ?? null,
147
+ observationMode: summary.configuration.observationMode ?? null,
148
+ },
149
+ deviceInfo: {
150
+ target: summary.configuration.device ?? null,
151
+ screenWidth: firstObservation.screenW ?? null,
152
+ screenHeight: firstObservation.screenH ?? null,
153
+ initialApp: firstObservation.currentApp ?? null,
154
+ },
155
+ coordinateSystems,
156
+ totalSteps: this.openSteps.length,
157
+ result: summary.result ?? null,
158
+ episode: this.openSteps.map((step) => step.document),
159
+ };
160
+ writeJson(join(this.runDir, "episode.json"), episode);
161
+ const document = {
162
+ version: 1,
163
+ runDir: this.runDir,
164
+ startedAt: this.startedAt.toISOString(),
165
+ completedAt: completedAt.toISOString(),
166
+ durationMs: completedAt.getTime() - this.startedAt.getTime(),
167
+ ...summary,
168
+ artifacts: [...this.artifacts].sort(),
169
+ };
170
+ writeFileSync(join(this.runDir, "summary.json"), `${JSON.stringify(document, null, 2)}\n`, "utf8");
171
+ }
172
+ }
173
+ function writeJson(path, value) {
174
+ writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`, "utf8");
175
+ }
176
+ function detectImageExtension(image) {
177
+ const isPng = image.length >= 8 &&
178
+ image[0] === 0x89 &&
179
+ image[1] === 0x50 &&
180
+ image[2] === 0x4e &&
181
+ image[3] === 0x47;
182
+ return isPng ? "png" : "jpg";
183
+ }
184
+ function externalizeImages(value, screenshotFile) {
185
+ if (Array.isArray(value)) {
186
+ return value.map((item) => externalizeImages(item, screenshotFile));
187
+ }
188
+ if (!value || typeof value !== "object")
189
+ return value;
190
+ const output = {};
191
+ for (const [key, item] of Object.entries(value)) {
192
+ if (screenshotFile &&
193
+ key === "url" &&
194
+ typeof item === "string" &&
195
+ item.startsWith("data:image/")) {
196
+ output[key] = `steps/${screenshotFile}`;
197
+ }
198
+ else {
199
+ output[key] = externalizeImages(item, screenshotFile);
200
+ }
201
+ }
202
+ return output;
203
+ }
204
+ function coordinateSystemOf(action) {
205
+ if (!action || typeof action !== "object")
206
+ return undefined;
207
+ const payload = action.payload;
208
+ if (!payload || typeof payload !== "object")
209
+ return undefined;
210
+ const value = payload._coordSystem;
211
+ return typeof value === "string" ? value : undefined;
212
+ }
213
+ export function expandPath(path) {
214
+ if (path === "~")
215
+ return homedir();
216
+ if (path.startsWith("~/"))
217
+ return resolve(homedir(), path.slice(2));
218
+ return isAbsolute(path) ? path : resolve(path);
219
+ }
220
+ export function formatTimestamp(date) {
221
+ return date.toISOString().replace(/[-:]/g, "").replace("T", "-").replace(".", "-").replace("Z", "");
222
+ }
223
+ function slugify(task) {
224
+ const slug = task
225
+ .normalize("NFKD")
226
+ .replace(/[^a-zA-Z0-9]+/g, "-")
227
+ .replace(/^-+|-+$/g, "")
228
+ .slice(0, 48)
229
+ .toLowerCase();
230
+ return slug || "task";
231
+ }
232
+ async function withTimeout(promise, timeoutMs, label) {
233
+ let timer;
234
+ try {
235
+ return await Promise.race([
236
+ promise,
237
+ new Promise((_, reject) => {
238
+ timer = setTimeout(() => reject(new Error(`${label} timed out after ${timeoutMs}ms`)), timeoutMs);
239
+ }),
240
+ ]);
241
+ }
242
+ finally {
243
+ if (timer)
244
+ clearTimeout(timer);
245
+ }
246
+ }
247
+ //# sourceMappingURL=run-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-artifacts.js","sourceRoot":"","sources":["../../../src/inbound/cli/run-artifacts.ts"],"names":[],"mappings":"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"}
@@ -9,18 +9,13 @@
9
9
  * This bypasses the ACP/Bridge bootstrap entirely — for that, use plain
10
10
  * `device-agent` without the `run` sub-command.
11
11
  *
12
- * Design contract:
13
- * - `--plan auto` (default): Hybrid strategy in `AgentRunner`. Long
14
- * tasks (≥30 chars) start with `LLMPlanner` + `PlanExecutor`; short
15
- * tasks start with pure `AgentLoop` and escalate to Plan-Act when
16
- * they burn through `1/3 * maxSteps`.
17
- * - `--plan always`: skip the heuristic, always plan.
18
- * - `--plan never`: skip the planner entirely (pure ReAct).
19
- * - `--planner-model` defaults to `glm-4-flash` (cheap chat-only model
20
- * on ARouter).
12
+ * Execution is selected exclusively through `--execution-mode`:
13
+ * Fast uses ReAct, Reasoning uses Plan-Act, and Advanced adds extended
14
+ * budgets, reflection, knowledge, skills, and verification.
21
15
  */
22
- import { AgentRunner, type AgentPlanMode, type AgentRunnerResult } from "../../agent-runtime/index.js";
23
- import type { ObservationMode } from "../../agent-runtime/observation-mode.js";
16
+ import { AgentRunner, type AgentRunnerResult, type ExecutionMode } from "../../agent-runtime/index.js";
17
+ import { type ObservationMode } from "../../agent-runtime/observation-mode.js";
18
+ import { type ArtifactMcp } from "./run-artifacts.js";
24
19
  export interface RunCommandFlags {
25
20
  task?: string;
26
21
  mcp?: string;
@@ -37,7 +32,8 @@ export interface RunCommandFlags {
37
32
  model?: string;
38
33
  baseUrl?: string;
39
34
  apiKey?: string;
40
- plan?: AgentPlanMode;
35
+ /** Product execution profile. Defaults to Fast. */
36
+ executionMode?: ExecutionMode;
41
37
  plannerModel?: string;
42
38
  plannerBaseUrl?: string;
43
39
  plannerApiKey?: string;
@@ -46,17 +42,15 @@ export interface RunCommandFlags {
46
42
  env?: "mobile" | "computer" | "browser";
47
43
  lang?: "cn" | "en";
48
44
  json?: boolean;
45
+ /** Save a timestamped trace bundle below this directory. Disabled by default. */
46
+ outputDir?: string;
49
47
  help?: boolean;
50
- outerModel?: string;
51
- outerBaseUrl?: string;
52
- outerApiKey?: string;
53
- outerProvider?: string;
54
- /** Legacy adapter name for the inner VLM (autoglm | general | qwenvl | …). */
55
- provider?: string;
48
+ /** Prompt/action protocol adapter for the inner VLM. */
49
+ adapter?: string;
50
+ /** Internal marker used to warn callers of the deprecated CLI alias. */
51
+ deprecatedProviderUsed?: boolean;
56
52
  /** Inputs collected per step; `auto` follows the selected model adapter. */
57
53
  observationMode?: ObservationMode;
58
- /** Enable OrchestratorAgent (OpenAI tool-calling outer + inner VLM). */
59
- orchestrator?: boolean;
60
54
  }
61
55
  export declare function parseRunArgs(argv: string[]): RunCommandFlags;
62
56
  /** Accepts: `30000`, `30s`, `5m`, `2h`, plain numbers (ms). */
@@ -73,6 +67,8 @@ export interface RunCommandIO {
73
67
  };
74
68
  }
75
69
  export interface RunCommandDeps {
70
+ /** Optional owner cancellation propagated to model, planner, and MCP work. */
71
+ signal?: AbortSignal;
76
72
  /** Override McpClient construction (tests use this to inject mocks). */
77
73
  mcpFactory?: (baseUrl: string) => MinimalMcp;
78
74
  /** Override OpenAIClient construction. */
@@ -80,6 +76,7 @@ export interface RunCommandDeps {
80
76
  baseUrl: string;
81
77
  apiKey: string;
82
78
  modelName: string;
79
+ adapter?: string;
83
80
  }) => MinimalModelClient;
84
81
  /** Override planner construction (returns `undefined` to disable). */
85
82
  plannerFactory?: (cfg: {
@@ -89,12 +86,18 @@ export interface RunCommandDeps {
89
86
  }) => MinimalPlanner | undefined;
90
87
  /** Override AgentRunner construction. */
91
88
  runnerFactory?: (opts: ConstructorParameters<typeof AgentRunner>[0]) => RunnerLike;
89
+ /** Receives the created trace directory (used by the benchmark command). */
90
+ onRecordingCreated?: (runDir: string) => void;
91
+ /** Override Fleet MCP resolution (tests use this to avoid loopback I/O). */
92
+ deviceMcpResolver?: (target: string) => Promise<string>;
92
93
  }
93
94
  export interface MinimalMcp {
94
95
  waitUntilReady?(opts?: {
95
96
  attempts?: number;
96
97
  attemptDelayMs?: number;
97
98
  }): Promise<unknown>;
99
+ screenshot?: ArtifactMcp["screenshot"];
100
+ uiDump?: ArtifactMcp["uiDump"];
98
101
  }
99
102
  interface MinimalModelClient {
100
103
  modelName: string;