@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,72 @@
1
+ /**
2
+ * Adapter — InnerLoopAgent (single-layer fallback).
3
+ *
4
+ * Wraps the existing `InnerLoopVlm` (which already implements the legacy
5
+ * `IVlm` port and drives the screenshot→reason→act loop in `agent.ts`) so
6
+ * that it can be plugged into the `IAgentCore` slot.
7
+ *
8
+ * Selected by `--legacy-inner` / `BEEOS_LEGACY_INNER=true`. Useful when
9
+ * the pi-coding-agent two-layer adapter isn't available (offline, custom
10
+ * model with no orchestrator support, …) — the agent still works as an
11
+ * end-to-end VLM controller, just without an outer text LLM picking
12
+ * between tools.
13
+ *
14
+ * The adapter:
15
+ * - re-emits each VlmStep both as `onStep` (legacy compat) and as a
16
+ * synthetic `ToolCallEvent` (`name = action.kind`) so consumers that
17
+ * only care about tool calls keep working.
18
+ * - forwards `setModel(provider, model)` to `IVlm.setProvider`.
19
+ */
20
+ export class InnerLoopAgent {
21
+ vlm;
22
+ constructor(vlm) {
23
+ this.vlm = vlm;
24
+ }
25
+ get modelName() {
26
+ return this.vlm.modelName;
27
+ }
28
+ get providerName() {
29
+ return this.vlm.providerName;
30
+ }
31
+ async run(opts) {
32
+ const out = await this.vlm.runTask({
33
+ task: opts.task,
34
+ maxSteps: opts.maxSteps ?? 30,
35
+ abortSignal: opts.abortSignal,
36
+ onText: opts.onText,
37
+ onStep: async (step) => {
38
+ if (opts.onStep)
39
+ await opts.onStep(step);
40
+ // Surface the same step as a synthetic ToolCallEvent so plugins
41
+ // wired against `onTool` keep a single code path. We emit
42
+ // start+end back-to-back because the legacy IVlm does not stream
43
+ // tool progress separately from the step boundary.
44
+ if (opts.onTool && step.action) {
45
+ const id = `inner-${step.stepIndex}`;
46
+ const toolName = step.action.kind;
47
+ const args = actionParams(step.action);
48
+ const start = { id, name: toolName, args, status: "start" };
49
+ await opts.onTool(start);
50
+ const end = {
51
+ id,
52
+ name: toolName,
53
+ args,
54
+ status: "end",
55
+ result: step.thinking ?? "",
56
+ isError: false,
57
+ };
58
+ await opts.onTool(end);
59
+ }
60
+ },
61
+ });
62
+ return out;
63
+ }
64
+ async setModel(provider, model) {
65
+ await this.vlm.setProvider(provider, model);
66
+ }
67
+ }
68
+ function actionParams(a) {
69
+ const { kind: _kind, ...rest } = a;
70
+ return rest;
71
+ }
72
+ //# sourceMappingURL=agentcore-inner-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentcore-inner-loop.js","sourceRoot":"","sources":["../../src/adapters/agentcore-inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAE1C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAyB;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEzC,gEAAgE;gBAChE,0DAA0D;gBAC1D,iEAAiE;gBACjE,mDAAmD;gBACnD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC3E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAkB;wBACzB,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,IAAI;wBACJ,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;wBAC3B,OAAO,EAAE,KAAK;qBACf,CAAC;oBACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAa;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,YAAY,CAAC,CAAmB;IACvC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAA+C,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Adapter — PiOrchestratorAgent (two-layer outer orchestrator).
3
+ *
4
+ * Wraps `@mariozechner/pi-coding-agent`'s `AgentSession` so it can be
5
+ * plugged into the `IAgentCore` slot. The outer layer is the LLM that
6
+ * pi drives; the inner layer is whatever extensions are loaded from
7
+ * `<projectRoot>/.pi/extensions/` (e.g. `mobile_use`, `ground`,
8
+ * `ui_xml`). The adapter is **transport-agnostic** — it only knows about
9
+ * pi events and `AgentHost` callbacks.
10
+ *
11
+ * Key responsibilities:
12
+ * - Lazy session bootstrap (extension/skill scanning, model resolution)
13
+ * on first `run()` call.
14
+ * - Map pi's session events to `IAgentCore` callbacks:
15
+ * `message_update / text_delta` → `onText`
16
+ * `tool_execution_start/update/end` → `onTool` (start/update/end)
17
+ * `message_end (assistant role)` → captures the final assistant text
18
+ * - Translate `setModel(provider, model)` into pi-ai's `getModel()` and
19
+ * forward to `session.setModel`. Hot-swap is best-effort — when model
20
+ * resolution fails we keep the previous model and surface a warning.
21
+ * - Honor `abortSignal` by calling `session.abort()`.
22
+ * - Map ARouter / OpenRouter / OpenAI / Anthropic / Google base URLs to
23
+ * pi-ai's known provider env vars (e.g. `OPENROUTER_API_KEY`) so
24
+ * callers can pass a single `outer.apiKey` without exporting
25
+ * provider-specific env names.
26
+ *
27
+ * NOT responsibilities:
28
+ * - Loading extensions (caller passes the resourceLoader options).
29
+ * - Setting up the device — pi extensions read device handles from
30
+ * process env / DEVAGENT_HTTP_URL like before.
31
+ */
32
+ import type { AgentCoreRunOptions, AgentCoreRunResult, IAgentCore } from "../ports/agent-core.js";
33
+ import type { Logger } from "../logger/index.js";
34
+ import type { IGrounder } from "../grounding/grounder.js";
35
+ import type { IMcpRuntime } from "../mcp-client/runtime.js";
36
+ export interface PiOuterConfig {
37
+ /** API key for the outer LLM. Mapped to `OPENROUTER_API_KEY` etc. */
38
+ apiKey?: string;
39
+ /** Base URL — used to infer the pi-ai provider. Default ARouter. */
40
+ baseUrl?: string;
41
+ /** Upstream model id (e.g. `moonshotai/kimi-k2.6`). */
42
+ model?: string;
43
+ /**
44
+ * Optional explicit pi-ai provider tag (`openrouter`, `openai`, …).
45
+ * When empty the provider is inferred from `baseUrl`.
46
+ */
47
+ provider?: string;
48
+ }
49
+ /**
50
+ * Minimal AgentSession surface that the adapter actually consumes.
51
+ * Mirrors `@mariozechner/pi-coding-agent` so we can swap in a fake in
52
+ * unit tests without pulling pi-ai's heavy types into the test boundary.
53
+ */
54
+ export interface PiAgentSessionLike {
55
+ prompt(text: string): Promise<void>;
56
+ abort(): Promise<void>;
57
+ setModel(model: unknown): Promise<void>;
58
+ subscribe(listener: (event: PiSessionEvent) => void | Promise<void>): () => void;
59
+ dispose(): void;
60
+ }
61
+ /**
62
+ * Subset of pi's `AgentSessionEvent` we care about. Defined locally so
63
+ * tests don't need to import pi types and so the adapter is robust to
64
+ * upstream additions.
65
+ */
66
+ export type PiSessionEvent = {
67
+ type: "message_start";
68
+ message: PiMessageLike;
69
+ } | {
70
+ type: "message_update";
71
+ message: PiMessageLike;
72
+ assistantMessageEvent: PiAssistantEvent;
73
+ } | {
74
+ type: "message_end";
75
+ message: PiMessageLike;
76
+ } | {
77
+ type: "tool_execution_start";
78
+ toolCallId: string;
79
+ toolName: string;
80
+ args: unknown;
81
+ } | {
82
+ type: "tool_execution_update";
83
+ toolCallId: string;
84
+ toolName: string;
85
+ args: unknown;
86
+ partialResult: unknown;
87
+ } | {
88
+ type: "tool_execution_end";
89
+ toolCallId: string;
90
+ toolName: string;
91
+ result: unknown;
92
+ isError: boolean;
93
+ } | {
94
+ type: string;
95
+ [k: string]: unknown;
96
+ };
97
+ interface PiMessageLike {
98
+ role: string;
99
+ content: unknown;
100
+ }
101
+ type PiAssistantEvent = {
102
+ type: "text_delta";
103
+ delta: string;
104
+ [k: string]: unknown;
105
+ } | {
106
+ type: "thinking_delta";
107
+ delta: string;
108
+ [k: string]: unknown;
109
+ } | {
110
+ type: string;
111
+ [k: string]: unknown;
112
+ };
113
+ /**
114
+ * Test seam — provide a custom session factory. Default factory loads
115
+ * `@mariozechner/pi-coding-agent` lazily so building tests / standalone
116
+ * binaries that skip the orchestrator never imports pi-ai at all.
117
+ */
118
+ export interface PiSessionFactory {
119
+ (config: PiSessionFactoryConfig): Promise<PiAgentSessionLike>;
120
+ }
121
+ export interface PiSessionFactoryConfig {
122
+ projectRoot: string;
123
+ systemPrompt?: string;
124
+ /** Resolved pi-ai Model object (already URL-rewritten for ARouter). */
125
+ model?: unknown;
126
+ }
127
+ export interface PiOrchestratorAgentOptions {
128
+ /** Project root passed to pi's `DefaultResourceLoader`. */
129
+ projectRoot: string;
130
+ /** Outer-layer LLM config. */
131
+ outer: PiOuterConfig;
132
+ /**
133
+ * Optional override for pi's system prompt. Defaults to
134
+ * `ORCHESTRATOR_SYSTEM_PROMPT` (see `orchestrator-system-prompt.ts`).
135
+ */
136
+ systemPrompt?: string;
137
+ /** Structured logger; falls back to console.warn. */
138
+ logger?: Pick<Logger, "warn" | "info" | "debug">;
139
+ /** Inject a custom session factory (used by tests). */
140
+ createSession?: PiSessionFactory;
141
+ /** Override pi-ai `getModel`. Used by tests to skip the heavy import. */
142
+ resolveModel?: ModelResolver;
143
+ /**
144
+ * Resolves the active `IMcpRuntime` on every tool call. Typically
145
+ * `() => mcpClient` (the sibling `device-mcp-server` HTTP client) or an
146
+ * `InProcMcpClient` for local CLI usage. Resolved lazily so an ACP
147
+ * device switch (or autospawn restart) is reflected immediately on the
148
+ * next `mobile_use` / `ui_xml` / `ground` invocation.
149
+ */
150
+ mcpProvider?: () => IMcpRuntime;
151
+ /**
152
+ * Lazily build the grounder used by the `ground` extension. Called the
153
+ * first time the extension reads `getGrounder()` within a session.
154
+ * Typical implementation: `() => new HTTPGrounder(config.grounder)`.
155
+ */
156
+ grounderFactory?: () => IGrounder;
157
+ /**
158
+ * Run a `mobile_use` task end-to-end and return the final assistant
159
+ * message. Wraps `InnerLoopVlm.runTask`. Letting the bootstrap layer
160
+ * supply this keeps the heavy `OpenAIClient` instance shared with the
161
+ * legacy single-layer path (and lets tests stub it out).
162
+ */
163
+ mobileUseRunner?: (task: string, maxSteps: number, abortSignal?: AbortSignal) => Promise<string>;
164
+ /**
165
+ * Optional UI-XML formatter. When omitted the adapter calls
166
+ * `mcp.uiDump({ format: "raw" })` and feeds the result through
167
+ * `formatUiXmlToolOutput` — same behaviour the legacy `queryUiXml`
168
+ * used to provide on top of the raw `Device`. Tests can override to
169
+ * skip the dump path entirely.
170
+ */
171
+ uiXmlRunner?: (query?: string) => Promise<string>;
172
+ }
173
+ export interface ModelResolver {
174
+ (provider: string, modelId: string, baseUrl: string): unknown | undefined;
175
+ }
176
+ export declare class PiOrchestratorAgent implements IAgentCore {
177
+ private session;
178
+ private starting;
179
+ private outer;
180
+ private readonly projectRoot;
181
+ private readonly systemPrompt;
182
+ private readonly logger;
183
+ private readonly createSessionFactory;
184
+ private readonly resolveModelFn;
185
+ private readonly mcpProvider?;
186
+ private readonly grounderFactory?;
187
+ private readonly mobileUseRunner?;
188
+ private readonly uiXmlRunner?;
189
+ private cachedGrounder;
190
+ constructor(opts: PiOrchestratorAgentOptions);
191
+ get modelName(): string;
192
+ get providerName(): string | undefined;
193
+ run(opts: AgentCoreRunOptions): Promise<AgentCoreRunResult>;
194
+ setModel(provider: string, model: string): Promise<void>;
195
+ /** Tear down the underlying pi session. Idempotent. */
196
+ dispose(): Promise<void>;
197
+ private buildExtensionContext;
198
+ private ensureSession;
199
+ }
200
+ /**
201
+ * Map our generic outer config to pi-ai's env-var contract. pi-ai reads
202
+ * provider-specific keys (e.g. `OPENROUTER_API_KEY`) from `process.env`,
203
+ * so we transparently set them when the caller hands us `outer.apiKey`
204
+ * + a recognised baseUrl. Never overwrites a key the caller already set.
205
+ *
206
+ * Recognised hosts:
207
+ * - openrouter.ai / arouter.ai → OPENROUTER_API_KEY
208
+ * - api.openai.com → OPENAI_API_KEY
209
+ * - api.anthropic.com → ANTHROPIC_API_KEY
210
+ * - generativelanguage.googleapis.com → GEMINI_API_KEY
211
+ */
212
+ export declare function applyOuterEnvMapping(outer: PiOuterConfig): void;
213
+ /** Infer the pi-ai provider tag from a base URL. */
214
+ export declare function inferPiProvider(baseUrl: string): string;
215
+ export {};