@beeos-ai/device-agent 0.4.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 (398) hide show
  1. package/.pi/extensions/android-tools.ts +139 -0
  2. package/.pi/skills/.gitkeep +0 -0
  3. package/.pi/skills/ground-mobile-fallback/SKILL.md +50 -0
  4. package/LICENSE +201 -0
  5. package/dist/action/handler.d.ts +9 -0
  6. package/dist/action/handler.js +124 -0
  7. package/dist/action/handler.js.map +1 -0
  8. package/dist/adapters/agent-gateway-client.d.ts +256 -0
  9. package/dist/adapters/agent-gateway-client.js +332 -0
  10. package/dist/adapters/agent-gateway-client.js.map +1 -0
  11. package/dist/adapters/agentcore-inner-loop.d.ts +29 -0
  12. package/dist/adapters/agentcore-inner-loop.js +72 -0
  13. package/dist/adapters/agentcore-inner-loop.js.map +1 -0
  14. package/dist/adapters/agentcore-pi.d.ts +215 -0
  15. package/dist/adapters/agentcore-pi.js +464 -0
  16. package/dist/adapters/agentcore-pi.js.map +1 -0
  17. package/dist/adapters/agentcore-runner.d.ts +70 -0
  18. package/dist/adapters/agentcore-runner.js +255 -0
  19. package/dist/adapters/agentcore-runner.js.map +1 -0
  20. package/dist/adapters/device-android-adb.d.ts +41 -0
  21. package/dist/adapters/device-android-adb.js +279 -0
  22. package/dist/adapters/device-android-adb.js.map +1 -0
  23. package/dist/adapters/device-desktop.d.ts +37 -0
  24. package/dist/adapters/device-desktop.js +101 -0
  25. package/dist/adapters/device-desktop.js.map +1 -0
  26. package/dist/adapters/identity-file.d.ts +30 -0
  27. package/dist/adapters/identity-file.js +50 -0
  28. package/dist/adapters/identity-file.js.map +1 -0
  29. package/dist/adapters/transport-bridge-ws.d.ts +39 -0
  30. package/dist/adapters/transport-bridge-ws.js +49 -0
  31. package/dist/adapters/transport-bridge-ws.js.map +1 -0
  32. package/dist/adapters/vlm-inner-loop.d.ts +88 -0
  33. package/dist/adapters/vlm-inner-loop.js +199 -0
  34. package/dist/adapters/vlm-inner-loop.js.map +1 -0
  35. package/dist/agent-runtime/adapters/base.d.ts +145 -0
  36. package/dist/agent-runtime/adapters/base.js +29 -0
  37. package/dist/agent-runtime/adapters/base.js.map +1 -0
  38. package/dist/agent-runtime/adapters/index.d.ts +17 -0
  39. package/dist/agent-runtime/adapters/index.js +17 -0
  40. package/dist/agent-runtime/adapters/index.js.map +1 -0
  41. package/dist/agent-runtime/adapters/mock.d.ts +44 -0
  42. package/dist/agent-runtime/adapters/mock.js +54 -0
  43. package/dist/agent-runtime/adapters/mock.js.map +1 -0
  44. package/dist/agent-runtime/adapters/openai.d.ts +63 -0
  45. package/dist/agent-runtime/adapters/openai.js +302 -0
  46. package/dist/agent-runtime/adapters/openai.js.map +1 -0
  47. package/dist/agent-runtime/adapters/registry.d.ts +49 -0
  48. package/dist/agent-runtime/adapters/registry.js +129 -0
  49. package/dist/agent-runtime/adapters/registry.js.map +1 -0
  50. package/dist/agent-runtime/adapters/ui-tars.d.ts +13 -0
  51. package/dist/agent-runtime/adapters/ui-tars.js +22 -0
  52. package/dist/agent-runtime/adapters/ui-tars.js.map +1 -0
  53. package/dist/agent-runtime/agent-runner.d.ts +149 -0
  54. package/dist/agent-runtime/agent-runner.js +356 -0
  55. package/dist/agent-runtime/agent-runner.js.map +1 -0
  56. package/dist/agent-runtime/core.d.ts +170 -0
  57. package/dist/agent-runtime/core.js +624 -0
  58. package/dist/agent-runtime/core.js.map +1 -0
  59. package/dist/agent-runtime/index.d.ts +16 -0
  60. package/dist/agent-runtime/index.js +17 -0
  61. package/dist/agent-runtime/index.js.map +1 -0
  62. package/dist/agent-runtime/plan-executor.d.ts +118 -0
  63. package/dist/agent-runtime/plan-executor.js +501 -0
  64. package/dist/agent-runtime/plan-executor.js.map +1 -0
  65. package/dist/agent-runtime/planner/base.d.ts +128 -0
  66. package/dist/agent-runtime/planner/base.js +157 -0
  67. package/dist/agent-runtime/planner/base.js.map +1 -0
  68. package/dist/agent-runtime/planner/llm-planner.d.ts +58 -0
  69. package/dist/agent-runtime/planner/llm-planner.js +112 -0
  70. package/dist/agent-runtime/planner/llm-planner.js.map +1 -0
  71. package/dist/agent-runtime/planner/noop-planner.d.ts +13 -0
  72. package/dist/agent-runtime/planner/noop-planner.js +30 -0
  73. package/dist/agent-runtime/planner/noop-planner.js.map +1 -0
  74. package/dist/agent-runtime/planner/prompts.d.ts +33 -0
  75. package/dist/agent-runtime/planner/prompts.js +165 -0
  76. package/dist/agent-runtime/planner/prompts.js.map +1 -0
  77. package/dist/agent-runtime/reflection.d.ts +81 -0
  78. package/dist/agent-runtime/reflection.js +189 -0
  79. package/dist/agent-runtime/reflection.js.map +1 -0
  80. package/dist/agent-runtime/reflectors/action-reflector.d.ts +97 -0
  81. package/dist/agent-runtime/reflectors/action-reflector.js +233 -0
  82. package/dist/agent-runtime/reflectors/action-reflector.js.map +1 -0
  83. package/dist/agent-runtime/reflectors/policy.d.ts +53 -0
  84. package/dist/agent-runtime/reflectors/policy.js +106 -0
  85. package/dist/agent-runtime/reflectors/policy.js.map +1 -0
  86. package/dist/agent-runtime/reflectors/trajectory-reflector.d.ts +94 -0
  87. package/dist/agent-runtime/reflectors/trajectory-reflector.js +223 -0
  88. package/dist/agent-runtime/reflectors/trajectory-reflector.js.map +1 -0
  89. package/dist/agent-runtime/skills/embedding.d.ts +53 -0
  90. package/dist/agent-runtime/skills/embedding.js +134 -0
  91. package/dist/agent-runtime/skills/embedding.js.map +1 -0
  92. package/dist/agent-runtime/skills/fs-store.d.ts +88 -0
  93. package/dist/agent-runtime/skills/fs-store.js +483 -0
  94. package/dist/agent-runtime/skills/fs-store.js.map +1 -0
  95. package/dist/agent-runtime/skills/index.d.ts +10 -0
  96. package/dist/agent-runtime/skills/index.js +10 -0
  97. package/dist/agent-runtime/skills/index.js.map +1 -0
  98. package/dist/agent-runtime/skills/matcher-evolver.d.ts +88 -0
  99. package/dist/agent-runtime/skills/matcher-evolver.js +110 -0
  100. package/dist/agent-runtime/skills/matcher-evolver.js.map +1 -0
  101. package/dist/agent-runtime/skills/memory-store.d.ts +23 -0
  102. package/dist/agent-runtime/skills/memory-store.js +94 -0
  103. package/dist/agent-runtime/skills/memory-store.js.map +1 -0
  104. package/dist/agent-runtime/skills/normalise.d.ts +40 -0
  105. package/dist/agent-runtime/skills/normalise.js +152 -0
  106. package/dist/agent-runtime/skills/normalise.js.map +1 -0
  107. package/dist/agent-runtime/skills/replay.d.ts +46 -0
  108. package/dist/agent-runtime/skills/replay.js +106 -0
  109. package/dist/agent-runtime/skills/replay.js.map +1 -0
  110. package/dist/agent-runtime/skills/sqlite-store.d.ts +60 -0
  111. package/dist/agent-runtime/skills/sqlite-store.js +234 -0
  112. package/dist/agent-runtime/skills/sqlite-store.js.map +1 -0
  113. package/dist/agent-runtime/skills/types.d.ts +99 -0
  114. package/dist/agent-runtime/skills/types.js +14 -0
  115. package/dist/agent-runtime/skills/types.js.map +1 -0
  116. package/dist/agent.d.ts +110 -0
  117. package/dist/agent.js +162 -0
  118. package/dist/agent.js.map +1 -0
  119. package/dist/api.d.ts +27 -0
  120. package/dist/api.js +48 -0
  121. package/dist/api.js.map +1 -0
  122. package/dist/app/agent-host.d.ts +59 -0
  123. package/dist/app/agent-host.js +263 -0
  124. package/dist/app/agent-host.js.map +1 -0
  125. package/dist/app/device-manager.d.ts +28 -0
  126. package/dist/app/device-manager.js +64 -0
  127. package/dist/app/device-manager.js.map +1 -0
  128. package/dist/app/message-store.d.ts +55 -0
  129. package/dist/app/message-store.js +99 -0
  130. package/dist/app/message-store.js.map +1 -0
  131. package/dist/app/session-manager.d.ts +132 -0
  132. package/dist/app/session-manager.js +350 -0
  133. package/dist/app/session-manager.js.map +1 -0
  134. package/dist/bootstrap.d.ts +94 -0
  135. package/dist/bootstrap.js +459 -0
  136. package/dist/bootstrap.js.map +1 -0
  137. package/dist/chat.d.ts +16 -0
  138. package/dist/chat.js +175 -0
  139. package/dist/chat.js.map +1 -0
  140. package/dist/config/loader.d.ts +77 -0
  141. package/dist/config/loader.js +292 -0
  142. package/dist/config/loader.js.map +1 -0
  143. package/dist/config/schema.d.ts +162 -0
  144. package/dist/config/schema.js +243 -0
  145. package/dist/config/schema.js.map +1 -0
  146. package/dist/core/actions.d.ts +60 -0
  147. package/dist/core/actions.js +120 -0
  148. package/dist/core/actions.js.map +1 -0
  149. package/dist/core/errors.d.ts +8 -0
  150. package/dist/core/errors.js +9 -0
  151. package/dist/core/errors.js.map +1 -0
  152. package/dist/core/screen.d.ts +7 -0
  153. package/dist/core/screen.js +8 -0
  154. package/dist/core/screen.js.map +1 -0
  155. package/dist/core/session.d.ts +42 -0
  156. package/dist/core/session.js +29 -0
  157. package/dist/core/session.js.map +1 -0
  158. package/dist/debug/dump-system-prompt.d.ts +1 -0
  159. package/dist/debug/dump-system-prompt.js +34 -0
  160. package/dist/debug/dump-system-prompt.js.map +1 -0
  161. package/dist/device/android.d.ts +25 -0
  162. package/dist/device/android.js +231 -0
  163. package/dist/device/android.js.map +1 -0
  164. package/dist/device/apps.d.ts +3 -0
  165. package/dist/device/apps.js +77 -0
  166. package/dist/device/apps.js.map +1 -0
  167. package/dist/device/base.d.ts +20 -0
  168. package/dist/device/base.js +2 -0
  169. package/dist/device/base.js.map +1 -0
  170. package/dist/device/ui-xml.d.ts +29 -0
  171. package/dist/device/ui-xml.js +194 -0
  172. package/dist/device/ui-xml.js.map +1 -0
  173. package/dist/fleet/adapters/process/node-process-manager.d.ts +157 -0
  174. package/dist/fleet/adapters/process/node-process-manager.js +664 -0
  175. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -0
  176. package/dist/fleet/adapters/sources/local-adb.d.ts +105 -0
  177. package/dist/fleet/adapters/sources/local-adb.js +353 -0
  178. package/dist/fleet/adapters/sources/local-adb.js.map +1 -0
  179. package/dist/fleet/adapters/sources/remote-adb.d.ts +97 -0
  180. package/dist/fleet/adapters/sources/remote-adb.js +138 -0
  181. package/dist/fleet/adapters/sources/remote-adb.js.map +1 -0
  182. package/dist/fleet/adapters/state/beeos-cli-store.d.ts +72 -0
  183. package/dist/fleet/adapters/state/beeos-cli-store.js +250 -0
  184. package/dist/fleet/adapters/state/beeos-cli-store.js.map +1 -0
  185. package/dist/fleet/adapters/state/port-allocator.d.ts +43 -0
  186. package/dist/fleet/adapters/state/port-allocator.js +173 -0
  187. package/dist/fleet/adapters/state/port-allocator.js.map +1 -0
  188. package/dist/fleet/domain/device.d.ts +138 -0
  189. package/dist/fleet/domain/device.js +49 -0
  190. package/dist/fleet/domain/device.js.map +1 -0
  191. package/dist/fleet/domain/events.d.ts +102 -0
  192. package/dist/fleet/domain/events.js +15 -0
  193. package/dist/fleet/domain/events.js.map +1 -0
  194. package/dist/fleet/domain/fsm.d.ts +122 -0
  195. package/dist/fleet/domain/fsm.js +475 -0
  196. package/dist/fleet/domain/fsm.js.map +1 -0
  197. package/dist/fleet/http/status-client.d.ts +31 -0
  198. package/dist/fleet/http/status-client.js +115 -0
  199. package/dist/fleet/http/status-client.js.map +1 -0
  200. package/dist/fleet/http/status-server.d.ts +64 -0
  201. package/dist/fleet/http/status-server.js +200 -0
  202. package/dist/fleet/http/status-server.js.map +1 -0
  203. package/dist/fleet/index.d.ts +27 -0
  204. package/dist/fleet/index.js +17 -0
  205. package/dist/fleet/index.js.map +1 -0
  206. package/dist/fleet/installer/index.d.ts +12 -0
  207. package/dist/fleet/installer/index.js +13 -0
  208. package/dist/fleet/installer/index.js.map +1 -0
  209. package/dist/fleet/installer/launchd-mac.d.ts +73 -0
  210. package/dist/fleet/installer/launchd-mac.js +291 -0
  211. package/dist/fleet/installer/launchd-mac.js.map +1 -0
  212. package/dist/fleet/installer/service-spec.d.ts +70 -0
  213. package/dist/fleet/installer/service-spec.js +43 -0
  214. package/dist/fleet/installer/service-spec.js.map +1 -0
  215. package/dist/fleet/installer/spawn-env.d.ts +45 -0
  216. package/dist/fleet/installer/spawn-env.js +224 -0
  217. package/dist/fleet/installer/spawn-env.js.map +1 -0
  218. package/dist/fleet/ports/clock.d.ts +19 -0
  219. package/dist/fleet/ports/clock.js +26 -0
  220. package/dist/fleet/ports/clock.js.map +1 -0
  221. package/dist/fleet/ports/device-source.d.ts +28 -0
  222. package/dist/fleet/ports/device-source.js +18 -0
  223. package/dist/fleet/ports/device-source.js.map +1 -0
  224. package/dist/fleet/ports/process-manager.d.ts +110 -0
  225. package/dist/fleet/ports/process-manager.js +27 -0
  226. package/dist/fleet/ports/process-manager.js.map +1 -0
  227. package/dist/fleet/ports/state-registry.d.ts +49 -0
  228. package/dist/fleet/ports/state-registry.js +12 -0
  229. package/dist/fleet/ports/state-registry.js.map +1 -0
  230. package/dist/fleet/supervisor.d.ts +107 -0
  231. package/dist/fleet/supervisor.js +508 -0
  232. package/dist/fleet/supervisor.js.map +1 -0
  233. package/dist/grounding/grounder.d.ts +46 -0
  234. package/dist/grounding/grounder.js +82 -0
  235. package/dist/grounding/grounder.js.map +1 -0
  236. package/dist/inbound/acp/handlers/device.d.ts +43 -0
  237. package/dist/inbound/acp/handlers/device.js +153 -0
  238. package/dist/inbound/acp/handlers/device.js.map +1 -0
  239. package/dist/inbound/acp/handlers/initialize.d.ts +71 -0
  240. package/dist/inbound/acp/handlers/initialize.js +53 -0
  241. package/dist/inbound/acp/handlers/initialize.js.map +1 -0
  242. package/dist/inbound/acp/handlers/models.d.ts +16 -0
  243. package/dist/inbound/acp/handlers/models.js +23 -0
  244. package/dist/inbound/acp/handlers/models.js.map +1 -0
  245. package/dist/inbound/acp/handlers/session.d.ts +51 -0
  246. package/dist/inbound/acp/handlers/session.js +61 -0
  247. package/dist/inbound/acp/handlers/session.js.map +1 -0
  248. package/dist/inbound/acp/handlers/skills.d.ts +8 -0
  249. package/dist/inbound/acp/handlers/skills.js +9 -0
  250. package/dist/inbound/acp/handlers/skills.js.map +1 -0
  251. package/dist/inbound/acp/notifier.d.ts +35 -0
  252. package/dist/inbound/acp/notifier.js +45 -0
  253. package/dist/inbound/acp/notifier.js.map +1 -0
  254. package/dist/inbound/acp/router.d.ts +67 -0
  255. package/dist/inbound/acp/router.js +179 -0
  256. package/dist/inbound/acp/router.js.map +1 -0
  257. package/dist/inbound/cli/fleet-command.d.ts +34 -0
  258. package/dist/inbound/cli/fleet-command.js +792 -0
  259. package/dist/inbound/cli/fleet-command.js.map +1 -0
  260. package/dist/inbound/cli/main.d.ts +38 -0
  261. package/dist/inbound/cli/main.js +364 -0
  262. package/dist/inbound/cli/main.js.map +1 -0
  263. package/dist/inbound/cli/run-command.d.ts +101 -0
  264. package/dist/inbound/cli/run-command.js +405 -0
  265. package/dist/inbound/cli/run-command.js.map +1 -0
  266. package/dist/inbound/cli/skills-command.d.ts +39 -0
  267. package/dist/inbound/cli/skills-command.js +333 -0
  268. package/dist/inbound/cli/skills-command.js.map +1 -0
  269. package/dist/inbound/http/server.d.ts +7 -0
  270. package/dist/inbound/http/server.js +8 -0
  271. package/dist/inbound/http/server.js.map +1 -0
  272. package/dist/index.d.ts +66 -0
  273. package/dist/index.js +48 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/logger/index.d.ts +37 -0
  276. package/dist/logger/index.js +84 -0
  277. package/dist/logger/index.js.map +1 -0
  278. package/dist/mcp-client/autospawn.d.ts +67 -0
  279. package/dist/mcp-client/autospawn.js +173 -0
  280. package/dist/mcp-client/autospawn.js.map +1 -0
  281. package/dist/mcp-client/client.d.ts +78 -0
  282. package/dist/mcp-client/client.js +168 -0
  283. package/dist/mcp-client/client.js.map +1 -0
  284. package/dist/mcp-client/index.d.ts +7 -0
  285. package/dist/mcp-client/index.js +4 -0
  286. package/dist/mcp-client/index.js.map +1 -0
  287. package/dist/mcp-client/inproc.d.ts +47 -0
  288. package/dist/mcp-client/inproc.js +229 -0
  289. package/dist/mcp-client/inproc.js.map +1 -0
  290. package/dist/mcp-client/runtime.d.ts +34 -0
  291. package/dist/mcp-client/runtime.js +15 -0
  292. package/dist/mcp-client/runtime.js.map +1 -0
  293. package/dist/model/adapters/autoglm.d.ts +31 -0
  294. package/dist/model/adapters/autoglm.js +409 -0
  295. package/dist/model/adapters/autoglm.js.map +1 -0
  296. package/dist/model/adapters/base.d.ts +13 -0
  297. package/dist/model/adapters/base.js +27 -0
  298. package/dist/model/adapters/base.js.map +1 -0
  299. package/dist/model/adapters/guiowl.d.ts +1 -0
  300. package/dist/model/adapters/guiowl.js +253 -0
  301. package/dist/model/adapters/guiowl.js.map +1 -0
  302. package/dist/model/adapters/index.d.ts +6 -0
  303. package/dist/model/adapters/index.js +8 -0
  304. package/dist/model/adapters/index.js.map +1 -0
  305. package/dist/model/adapters/maiui.d.ts +1 -0
  306. package/dist/model/adapters/maiui.js +117 -0
  307. package/dist/model/adapters/maiui.js.map +1 -0
  308. package/dist/model/adapters/qwenvl.d.ts +1 -0
  309. package/dist/model/adapters/qwenvl.js +108 -0
  310. package/dist/model/adapters/qwenvl.js.map +1 -0
  311. package/dist/model/adapters/showui.d.ts +1 -0
  312. package/dist/model/adapters/showui.js +132 -0
  313. package/dist/model/adapters/showui.js.map +1 -0
  314. package/dist/model/adapters/tool-call.d.ts +6 -0
  315. package/dist/model/adapters/tool-call.js +102 -0
  316. package/dist/model/adapters/tool-call.js.map +1 -0
  317. package/dist/model/adapters/uitars.d.ts +1 -0
  318. package/dist/model/adapters/uitars.js +180 -0
  319. package/dist/model/adapters/uitars.js.map +1 -0
  320. package/dist/model/base.d.ts +32 -0
  321. package/dist/model/base.js +2 -0
  322. package/dist/model/base.js.map +1 -0
  323. package/dist/model/client.d.ts +26 -0
  324. package/dist/model/client.js +300 -0
  325. package/dist/model/client.js.map +1 -0
  326. package/dist/model/image/compress.d.ts +53 -0
  327. package/dist/model/image/compress.js +89 -0
  328. package/dist/model/image/compress.js.map +1 -0
  329. package/dist/model/image/transport.d.ts +134 -0
  330. package/dist/model/image/transport.js +154 -0
  331. package/dist/model/image/transport.js.map +1 -0
  332. package/dist/orchestrator-system-prompt.d.ts +6 -0
  333. package/dist/orchestrator-system-prompt.js +81 -0
  334. package/dist/orchestrator-system-prompt.js.map +1 -0
  335. package/dist/pi-context.d.ts +82 -0
  336. package/dist/pi-context.js +62 -0
  337. package/dist/pi-context.js.map +1 -0
  338. package/dist/pi-local-skills.d.ts +17 -0
  339. package/dist/pi-local-skills.js +24 -0
  340. package/dist/pi-local-skills.js.map +1 -0
  341. package/dist/plugins/acp/index.d.ts +46 -0
  342. package/dist/plugins/acp/index.js +111 -0
  343. package/dist/plugins/acp/index.js.map +1 -0
  344. package/dist/plugins/agent-sync/index.d.ts +40 -0
  345. package/dist/plugins/agent-sync/index.js +98 -0
  346. package/dist/plugins/agent-sync/index.js.map +1 -0
  347. package/dist/plugins/http-debug/index.d.ts +30 -0
  348. package/dist/plugins/http-debug/index.js +64 -0
  349. package/dist/plugins/http-debug/index.js.map +1 -0
  350. package/dist/plugins/http-debug/server.d.ts +92 -0
  351. package/dist/plugins/http-debug/server.js +464 -0
  352. package/dist/plugins/http-debug/server.js.map +1 -0
  353. package/dist/ports/agent-core.d.ts +158 -0
  354. package/dist/ports/agent-core.js +2 -0
  355. package/dist/ports/agent-core.js.map +1 -0
  356. package/dist/ports/agent-host.d.ts +125 -0
  357. package/dist/ports/agent-host.js +23 -0
  358. package/dist/ports/agent-host.js.map +1 -0
  359. package/dist/ports/device.d.ts +53 -0
  360. package/dist/ports/device.js +13 -0
  361. package/dist/ports/device.js.map +1 -0
  362. package/dist/ports/identity.d.ts +22 -0
  363. package/dist/ports/identity.js +9 -0
  364. package/dist/ports/identity.js.map +1 -0
  365. package/dist/ports/plugin.d.ts +62 -0
  366. package/dist/ports/plugin.js +35 -0
  367. package/dist/ports/plugin.js.map +1 -0
  368. package/dist/ports/transport.d.ts +32 -0
  369. package/dist/ports/transport.js +12 -0
  370. package/dist/ports/transport.js.map +1 -0
  371. package/dist/ports/vlm.d.ts +59 -0
  372. package/dist/ports/vlm.js +14 -0
  373. package/dist/ports/vlm.js.map +1 -0
  374. package/dist/test-lan-autoglm.d.ts +7 -0
  375. package/dist/test-lan-autoglm.js +46 -0
  376. package/dist/test-lan-autoglm.js.map +1 -0
  377. package/dist/test-mem-breakdown.d.ts +1 -0
  378. package/dist/test-mem-breakdown.js +103 -0
  379. package/dist/test-mem-breakdown.js.map +1 -0
  380. package/dist/test-mem.d.ts +1 -0
  381. package/dist/test-mem.js +60 -0
  382. package/dist/test-mem.js.map +1 -0
  383. package/dist/test-mobile-use.d.ts +1 -0
  384. package/dist/test-mobile-use.js +18 -0
  385. package/dist/test-mobile-use.js.map +1 -0
  386. package/dist/test-screenshot-loop.d.ts +1 -0
  387. package/dist/test-screenshot-loop.js +43 -0
  388. package/dist/test-screenshot-loop.js.map +1 -0
  389. package/dist/test-screenshot.d.ts +1 -0
  390. package/dist/test-screenshot.js +10 -0
  391. package/dist/test-screenshot.js.map +1 -0
  392. package/dist/test-ui-xml-dump.d.ts +15 -0
  393. package/dist/test-ui-xml-dump.js +49 -0
  394. package/dist/test-ui-xml-dump.js.map +1 -0
  395. package/dist/types.d.ts +69 -0
  396. package/dist/types.js +23 -0
  397. package/dist/types.js.map +1 -0
  398. package/package.json +94 -0
@@ -0,0 +1,302 @@
1
+ /**
2
+ * agent-runtime/adapters/openai — wraps the legacy `OpenAIClient` (which
3
+ * dispatches to the `model/adapters/*` registry) and exposes it under the
4
+ * new `IModelAdapter` contract.
5
+ *
6
+ * The translation has two parts:
7
+ * - request side: build legacy `Message[]` from the new `Observation` +
8
+ * `StepHistory` rolling context, then call `client.request()`.
9
+ * - response side: call `client.parseResponse()` to recover the legacy
10
+ * `ParsedAction`, then map onto the unified `Action` schema via
11
+ * `parsedToAction()`. Coordinate-system metadata is preserved on
12
+ * `payload._coordSystem` so the `AgentLoop` can scale to actual screen
13
+ * pixels before forwarding to the MCP `/act` route.
14
+ */
15
+ import { makeAction } from "@beeos-ai/device-common";
16
+ import { OpenAIClient } from "../../model/client.js";
17
+ import { compressForVlm } from "../../model/image/compress.js";
18
+ import { DataUrlTransport } from "../../model/image/transport.js";
19
+ import { getLogger } from "../../logger/index.js";
20
+ import { makeScreenInfo } from "../../types.js";
21
+ import { makePrediction } from "./base.js";
22
+ import { registerAdapter } from "./registry.js";
23
+ /**
24
+ * Legacy `model/adapters/*` names that splice the UI hierarchy XML into the
25
+ * VLM prompt. The default for everything else is the Open-AutoGLM upstream
26
+ * pure-vision flow (screenshot + `current_app` only) — adding adapters that
27
+ * truly read `screenInfo.uiXml` to this set will let `AgentLoop.observe()`
28
+ * fetch `mcp.uiDump()` for them automatically.
29
+ */
30
+ const LEGACY_ADAPTERS_CONSUMING_UI_DUMP = new Set(["guiowl"]);
31
+ export class OpenAIAdapter {
32
+ name;
33
+ modelName;
34
+ consumesUiDump;
35
+ client;
36
+ lang;
37
+ imageTransport;
38
+ context = [];
39
+ lastStepIdx = 0;
40
+ constructor(opts = {}) {
41
+ this.client =
42
+ opts.client ??
43
+ new OpenAIClient({
44
+ ...opts,
45
+ adapter: opts.legacyAdapter,
46
+ });
47
+ this.modelName = this.client.modelName;
48
+ this.name = `openai:${this.client.adapterName}`;
49
+ this.lang = opts.lang ?? "cn";
50
+ this.imageTransport = opts.imageTransport ?? new DataUrlTransport();
51
+ this.consumesUiDump =
52
+ opts.consumesUiDump ??
53
+ LEGACY_ADAPTERS_CONSUMING_UI_DUMP.has(this.client.adapterName.toLowerCase());
54
+ }
55
+ supportsEnv(env) {
56
+ // Mobile/computer/browser are all serviced by the same legacy adapters —
57
+ // they only differ in the system-prompt vocabulary which is the legacy
58
+ // adapter's concern.
59
+ return env === "mobile" || env === "computer" || env === "browser";
60
+ }
61
+ async predictAction(observation, history, opts = {}) {
62
+ if (history.length === 0 || history.length < this.lastStepIdx) {
63
+ // New run started — clear adapter-internal context.
64
+ this.context = [];
65
+ }
66
+ this.lastStepIdx = history.length;
67
+ const isFirst = history.length === 0;
68
+ const screenInfo = await observationToScreenInfo(observation, this.imageTransport);
69
+ this.context = this.client.buildMessages(observation.task, screenInfo, this.context, isFirst, this.lang);
70
+ const startedAt = Date.now();
71
+ let response;
72
+ try {
73
+ response = await this.client.request(this.context, {
74
+ signal: opts.signal,
75
+ onTextDelta: opts.hooks?.onText,
76
+ });
77
+ }
78
+ catch (e) {
79
+ // Surface upstream HTTP details so MODEL_PREDICT_FAILED is debuggable
80
+ // from logs without resorting to network capture. We catch + rethrow —
81
+ // the AgentLoop's existing handler will fire `onError`.
82
+ const anyE = e;
83
+ getLogger().warn({
84
+ component: "vlm-predict",
85
+ stage: "predict",
86
+ status: anyE?.status,
87
+ code: anyE?.code,
88
+ type: anyE?.type,
89
+ upstreamMessage: anyE?.error?.message,
90
+ message: anyE?.message,
91
+ requestId: anyE?.response?.headers?.["x-request-id"],
92
+ durationMs: Date.now() - startedAt,
93
+ contextMessages: this.context.length,
94
+ }, "vlm.predict.failed");
95
+ throw e;
96
+ }
97
+ const durationMs = Date.now() - startedAt;
98
+ let parsed;
99
+ try {
100
+ parsed = this.client.parseResponse(response.rawContent);
101
+ }
102
+ catch {
103
+ parsed = {
104
+ actionType: "wait",
105
+ params: { duration_seconds: 2 },
106
+ thinking: response.thinking,
107
+ coordSystem: "0-1000",
108
+ shouldFinish: false,
109
+ finishMessage: null,
110
+ };
111
+ }
112
+ this.context = this.client.updateContext(this.context, response, parsed);
113
+ const action = parsedToAction(parsed);
114
+ return makePrediction(action, {
115
+ rationale: parsed.thinking || response.thinking || "",
116
+ confidence: 0.5,
117
+ usage: { inputTokens: 0, outputTokens: 0, durationMs },
118
+ rawResponse: response.rawContent,
119
+ });
120
+ }
121
+ async close() {
122
+ this.context = [];
123
+ }
124
+ }
125
+ /* -------------------------------------------------------------------------- */
126
+ /* Translation: ParsedAction → unified Action */
127
+ /* -------------------------------------------------------------------------- */
128
+ export function parsedToAction(parsed) {
129
+ const meta = {
130
+ _coordSystem: parsed.coordSystem,
131
+ _legacyType: parsed.actionType,
132
+ };
133
+ const rationale = parsed.thinking || undefined;
134
+ switch (parsed.actionType) {
135
+ case "tap":
136
+ case "click":
137
+ return makeAction("tap", {
138
+ target: { kind: "point", x: numParam(parsed.params, "x"), y: numParam(parsed.params, "y") },
139
+ payload: { ...meta },
140
+ rationale,
141
+ });
142
+ case "double_tap":
143
+ case "double_click":
144
+ return makeAction("double_click", {
145
+ target: { kind: "point", x: numParam(parsed.params, "x"), y: numParam(parsed.params, "y") },
146
+ payload: { ...meta },
147
+ rationale,
148
+ });
149
+ case "long_press":
150
+ return makeAction("long_press", {
151
+ target: { kind: "point", x: numParam(parsed.params, "x"), y: numParam(parsed.params, "y") },
152
+ payload: { ...meta, durationMs: numParam(parsed.params, "duration_ms", 1000) },
153
+ rationale,
154
+ });
155
+ case "swipe":
156
+ return makeAction("swipe", {
157
+ target: {
158
+ kind: "box",
159
+ x1: numParam(parsed.params, "start_x"),
160
+ y1: numParam(parsed.params, "start_y"),
161
+ x2: numParam(parsed.params, "end_x"),
162
+ y2: numParam(parsed.params, "end_y"),
163
+ },
164
+ payload: { ...meta, durationMs: numParam(parsed.params, "duration_ms", 300) },
165
+ rationale,
166
+ });
167
+ case "type":
168
+ return makeAction("type", {
169
+ payload: { ...meta, text: stringParam(parsed.params, "text", "") },
170
+ rationale,
171
+ });
172
+ case "open_app":
173
+ case "launch_app":
174
+ return makeAction("launch_app", {
175
+ payload: {
176
+ ...meta,
177
+ packageOrName: stringParam(parsed.params, "app_name", undefined) ??
178
+ stringParam(parsed.params, "package", undefined) ??
179
+ "",
180
+ },
181
+ rationale,
182
+ });
183
+ case "press_back":
184
+ case "back":
185
+ return makeAction("back", { payload: { ...meta }, rationale });
186
+ case "press_home":
187
+ case "home":
188
+ return makeAction("home", { payload: { ...meta }, rationale });
189
+ case "wait":
190
+ return makeAction("wait", {
191
+ payload: { ...meta, durationSeconds: numParam(parsed.params, "duration_seconds", 2) },
192
+ rationale,
193
+ });
194
+ case "takeover":
195
+ case "call_for_user":
196
+ return makeAction("call_for_user", {
197
+ payload: { ...meta, message: stringParam(parsed.params, "message", "") },
198
+ rationale,
199
+ });
200
+ case "take_note":
201
+ return makeAction("take_note", {
202
+ payload: { ...meta, note: stringParam(parsed.params, "note", "") },
203
+ rationale,
204
+ });
205
+ case "finish":
206
+ case "done":
207
+ return makeAction("done", {
208
+ payload: { ...meta, message: parsed.finishMessage ?? stringParam(parsed.params, "message", "") },
209
+ rationale,
210
+ });
211
+ case "fail":
212
+ return makeAction("fail", {
213
+ payload: { ...meta, message: parsed.finishMessage ?? stringParam(parsed.params, "message", "") },
214
+ rationale,
215
+ });
216
+ case "scroll":
217
+ return makeAction("scroll", {
218
+ target: {
219
+ kind: "point",
220
+ x: numParam(parsed.params, "x", 500),
221
+ y: numParam(parsed.params, "y", 500),
222
+ },
223
+ payload: { ...meta, direction: stringParam(parsed.params, "direction", "down") },
224
+ rationale,
225
+ });
226
+ default:
227
+ // Unknown verb — fall back to a wait so the loop keeps making progress
228
+ // instead of throwing on adapter quirks.
229
+ return makeAction("wait", {
230
+ payload: { ...meta, durationSeconds: 1 },
231
+ rationale: `unknown legacy actionType=${parsed.actionType}`,
232
+ });
233
+ }
234
+ }
235
+ function numParam(p, key, fallback) {
236
+ const v = p[key];
237
+ if (typeof v === "number" && Number.isFinite(v))
238
+ return v;
239
+ if (fallback !== undefined)
240
+ return fallback;
241
+ return 0;
242
+ }
243
+ function stringParam(p, key, fallback) {
244
+ const v = p[key];
245
+ if (typeof v === "string")
246
+ return v;
247
+ return fallback;
248
+ }
249
+ async function observationToScreenInfo(o, transport) {
250
+ let imageRef = null;
251
+ if (o.screenshotB64) {
252
+ // Compress at the device-agent edge so every downstream transport
253
+ // (data-url today, http-url tomorrow) sees ARouter-compliant bytes.
254
+ // mcp-server delivers raw screen captures (PNG/JPEG full-res), so
255
+ // the first 1280-edge re-encode here is what keeps the OpenAI body
256
+ // under the 5MB ARouter cap. See `compress.ts` module docstring for
257
+ // the JPEG-q80 / 1280-edge rationale.
258
+ //
259
+ // Observability: emit a single structured `vlm.image.prepared` line
260
+ // covering both compress + transport timings. Metrics aggregators
261
+ // (Loki / CloudWatch) derive image_size_bytes / upload_duration_ms
262
+ // counters from these JSON fields. Keeping the emit at the
263
+ // orchestration layer (rather than inside `compressForVlm` /
264
+ // `transport.send`) avoids polluting hot paths and lets a fleet
265
+ // attribute a screenshot to a uniform stage label.
266
+ const t0 = Date.now();
267
+ const raw = Buffer.from(o.screenshotB64, "base64");
268
+ const compressed = await compressForVlm(raw);
269
+ const t1 = Date.now();
270
+ imageRef = await transport.send(compressed.bytes, compressed.mime);
271
+ const t2 = Date.now();
272
+ getLogger().info({
273
+ component: "vlm-image",
274
+ stage: "predict",
275
+ inputBytes: raw.length,
276
+ outputBytes: compressed.bytes.length,
277
+ width: compressed.width,
278
+ height: compressed.height,
279
+ mime: compressed.mime,
280
+ compressMs: t1 - t0,
281
+ transport: transport.name,
282
+ transportMs: t2 - t1,
283
+ refKind: imageRef.kind,
284
+ }, "vlm.image.prepared");
285
+ }
286
+ return makeScreenInfo({
287
+ imageRef,
288
+ width: o.screenW,
289
+ height: o.screenH,
290
+ currentApp: typeof o.extra?.currentApp === "string" ? o.extra.currentApp : "",
291
+ uiXml: o.uiDump ?? null,
292
+ });
293
+ }
294
+ /* -------------------------------------------------------------------------- */
295
+ /* Registry */
296
+ /* -------------------------------------------------------------------------- */
297
+ registerAdapter({
298
+ name: "openai",
299
+ modelPatterns: [/^gpt-/, /^o1-/, /^o3-/, /openai/, /autoglm/, /^glm-/, /qwen/, /maiui/, /guiowl/, /showui/],
300
+ factory: () => new OpenAIAdapter(),
301
+ });
302
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * agent-runtime/adapters/registry — name → adapter resolver.
3
+ *
4
+ * Mirrors the Python reference at
5
+ * /Users/heat/workspace/deviceagent_research/deviceagent/agent_runtime/adapters/registry.py
6
+ *
7
+ * Adapters call `registerAdapter(myAdapter)` at module load time. Callers ask
8
+ * for one by either:
9
+ * - explicit adapter name (`resolveAdapter("mock")`)
10
+ * - model name (`resolveAdapter("gpt-4o")` → first adapter whose
11
+ * `supportsModel` matches; falls back to the env-default adapter)
12
+ *
13
+ * The registry is intentionally per-process — adapters are stateless WRT
14
+ * runs (any per-session state lives in the adapter instance itself).
15
+ */
16
+ import type { IModelAdapter } from "./base.js";
17
+ export interface AdapterDescriptor {
18
+ /** Stable adapter id (lower-case, alpha-numeric, dashes only). */
19
+ name: string;
20
+ /**
21
+ * Optional regex / string list used by `resolveAdapter(modelName)` to pick
22
+ * an adapter from a free-form model identifier. First match wins.
23
+ */
24
+ modelPatterns?: Array<RegExp | string>;
25
+ /** Lazy factory to build an instance the first time it is asked for. */
26
+ factory: () => IModelAdapter | Promise<IModelAdapter>;
27
+ }
28
+ /**
29
+ * Register a new adapter. Calling twice with the same `name` is allowed and
30
+ * replaces the previous descriptor (test helpers rely on this).
31
+ */
32
+ export declare function registerAdapter(descriptor: AdapterDescriptor): void;
33
+ /**
34
+ * Resolve an adapter by exact name or by free-form model identifier.
35
+ *
36
+ * Resolution order:
37
+ * 1. `name` matches a registered descriptor exactly → use it.
38
+ * 2. `name` matches some descriptor's `modelPatterns` → use the first match.
39
+ * 3. `process.env.MOBILE_USE_MODEL_ADAPTER` is registered → use it.
40
+ * 4. `mock` (always registered when `./mock.js` is imported) → use it.
41
+ * 5. Throw.
42
+ */
43
+ export declare function resolveAdapter(name: string | undefined): Promise<IModelAdapter>;
44
+ /** Synchronous variant for callers that registered eager adapters only. */
45
+ export declare function resolveAdapterSync(name: string | undefined): IModelAdapter;
46
+ /** List adapter names currently registered, sorted alphabetically. */
47
+ export declare function available(): string[];
48
+ /** Test helper — clears every registered adapter. */
49
+ export declare function clearAdapters(): void;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * agent-runtime/adapters/registry — name → adapter resolver.
3
+ *
4
+ * Mirrors the Python reference at
5
+ * /Users/heat/workspace/deviceagent_research/deviceagent/agent_runtime/adapters/registry.py
6
+ *
7
+ * Adapters call `registerAdapter(myAdapter)` at module load time. Callers ask
8
+ * for one by either:
9
+ * - explicit adapter name (`resolveAdapter("mock")`)
10
+ * - model name (`resolveAdapter("gpt-4o")` → first adapter whose
11
+ * `supportsModel` matches; falls back to the env-default adapter)
12
+ *
13
+ * The registry is intentionally per-process — adapters are stateless WRT
14
+ * runs (any per-session state lives in the adapter instance itself).
15
+ */
16
+ const descriptors = new Map();
17
+ const instances = new Map();
18
+ /**
19
+ * Register a new adapter. Calling twice with the same `name` is allowed and
20
+ * replaces the previous descriptor (test helpers rely on this).
21
+ */
22
+ export function registerAdapter(descriptor) {
23
+ const key = normalizeName(descriptor.name);
24
+ descriptors.set(key, { ...descriptor, name: key });
25
+ instances.delete(key); // re-register invalidates cached instance
26
+ }
27
+ /**
28
+ * Resolve an adapter by exact name or by free-form model identifier.
29
+ *
30
+ * Resolution order:
31
+ * 1. `name` matches a registered descriptor exactly → use it.
32
+ * 2. `name` matches some descriptor's `modelPatterns` → use the first match.
33
+ * 3. `process.env.MOBILE_USE_MODEL_ADAPTER` is registered → use it.
34
+ * 4. `mock` (always registered when `./mock.js` is imported) → use it.
35
+ * 5. Throw.
36
+ */
37
+ export async function resolveAdapter(name) {
38
+ const trimmed = name?.trim() ?? "";
39
+ if (trimmed) {
40
+ const exact = descriptors.get(normalizeName(trimmed));
41
+ if (exact)
42
+ return await getInstance(exact);
43
+ const lower = trimmed.toLowerCase();
44
+ for (const desc of descriptors.values()) {
45
+ if (matchesAny(desc.modelPatterns, lower))
46
+ return await getInstance(desc);
47
+ }
48
+ }
49
+ const envFallback = process.env.MOBILE_USE_MODEL_ADAPTER?.trim();
50
+ if (envFallback) {
51
+ const desc = descriptors.get(normalizeName(envFallback));
52
+ if (desc)
53
+ return await getInstance(desc);
54
+ }
55
+ const mock = descriptors.get("mock");
56
+ if (mock)
57
+ return await getInstance(mock);
58
+ throw new Error(`No model adapter for "${name ?? ""}". ` +
59
+ `Available: ${available().join(", ") || "(none registered)"}`);
60
+ }
61
+ /** Synchronous variant for callers that registered eager adapters only. */
62
+ export function resolveAdapterSync(name) {
63
+ const trimmed = name?.trim() ?? "";
64
+ const desc = pickDescriptor(trimmed);
65
+ if (!desc) {
66
+ throw new Error(`No model adapter for "${name ?? ""}". ` +
67
+ `Available: ${available().join(", ") || "(none registered)"}`);
68
+ }
69
+ const cached = instances.get(desc.name);
70
+ if (cached)
71
+ return cached;
72
+ const made = desc.factory();
73
+ if (isPromise(made)) {
74
+ throw new Error(`Adapter "${desc.name}" requires async resolveAdapter()`);
75
+ }
76
+ instances.set(desc.name, made);
77
+ return made;
78
+ }
79
+ /** List adapter names currently registered, sorted alphabetically. */
80
+ export function available() {
81
+ return [...descriptors.keys()].sort();
82
+ }
83
+ /** Test helper — clears every registered adapter. */
84
+ export function clearAdapters() {
85
+ descriptors.clear();
86
+ instances.clear();
87
+ }
88
+ /* -------------------------------------------------------------------------- */
89
+ /* Internals */
90
+ /* -------------------------------------------------------------------------- */
91
+ function pickDescriptor(name) {
92
+ if (name) {
93
+ const exact = descriptors.get(normalizeName(name));
94
+ if (exact)
95
+ return exact;
96
+ const lower = name.toLowerCase();
97
+ for (const desc of descriptors.values()) {
98
+ if (matchesAny(desc.modelPatterns, lower))
99
+ return desc;
100
+ }
101
+ }
102
+ const envFallback = process.env.MOBILE_USE_MODEL_ADAPTER?.trim();
103
+ if (envFallback) {
104
+ const desc = descriptors.get(normalizeName(envFallback));
105
+ if (desc)
106
+ return desc;
107
+ }
108
+ return descriptors.get("mock");
109
+ }
110
+ async function getInstance(desc) {
111
+ const cached = instances.get(desc.name);
112
+ if (cached)
113
+ return cached;
114
+ const made = await desc.factory();
115
+ instances.set(desc.name, made);
116
+ return made;
117
+ }
118
+ function matchesAny(patterns, value) {
119
+ if (!patterns || patterns.length === 0)
120
+ return false;
121
+ return patterns.some((p) => (typeof p === "string" ? value.includes(p.toLowerCase()) : p.test(value)));
122
+ }
123
+ function normalizeName(name) {
124
+ return name.trim().toLowerCase();
125
+ }
126
+ function isPromise(v) {
127
+ return typeof v === "object" && v !== null && typeof v.then === "function";
128
+ }
129
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * agent-runtime/adapters/ui-tars — convenience wrapper that pre-binds the
3
+ * `OpenAIAdapter` to the legacy `uitars` model adapter.
4
+ *
5
+ * UI-TARS / Doubao-1.5-UI-TARS uses smart_resize coordinates and a custom
6
+ * `Thought:/Action:` output format — the legacy `model/adapters/uitars.ts`
7
+ * implements both. We just expose a separate registry entry so callers can
8
+ * say `resolveAdapter("ui-tars")` without fiddling with `legacyAdapter`.
9
+ */
10
+ import { OpenAIAdapter, type OpenAIAdapterOptions } from "./openai.js";
11
+ export declare class UITarsAdapter extends OpenAIAdapter {
12
+ constructor(opts?: OpenAIAdapterOptions);
13
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * agent-runtime/adapters/ui-tars — convenience wrapper that pre-binds the
3
+ * `OpenAIAdapter` to the legacy `uitars` model adapter.
4
+ *
5
+ * UI-TARS / Doubao-1.5-UI-TARS uses smart_resize coordinates and a custom
6
+ * `Thought:/Action:` output format — the legacy `model/adapters/uitars.ts`
7
+ * implements both. We just expose a separate registry entry so callers can
8
+ * say `resolveAdapter("ui-tars")` without fiddling with `legacyAdapter`.
9
+ */
10
+ import { OpenAIAdapter } from "./openai.js";
11
+ import { registerAdapter } from "./registry.js";
12
+ export class UITarsAdapter extends OpenAIAdapter {
13
+ constructor(opts = {}) {
14
+ super({ ...opts, legacyAdapter: "uitars" });
15
+ }
16
+ }
17
+ registerAdapter({
18
+ name: "ui-tars",
19
+ modelPatterns: [/uitars/, /ui[-_]?tars/, /doubao.*ui/, /ui.*tars/],
20
+ factory: () => new UITarsAdapter(),
21
+ });
22
+ //# sourceMappingURL=ui-tars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-tars.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/ui-tars.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAA6B,EAAE;QACzC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,eAAe,CAAC;IACd,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC;IAClE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE;CACnC,CAAC,CAAC"}