@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,256 @@
1
+ /**
2
+ * Adapter — Agent Gateway HTTP client (Ed25519-authenticated).
3
+ *
4
+ * Mirrors the Python `agent_gateway_client.py` and the Go middleware in
5
+ * `backend/services/agent-gateway/internal/agentauth/verify.go`:
6
+ *
7
+ * - Headers: X-Agent-Public-Key / X-Agent-Signature / X-Agent-Timestamp / X-Agent-Nonce
8
+ * - Signature: ed25519(privateKey, "METHOD|PATH|timestamp|nonce") (PATH excludes query)
9
+ * - Timestamp: unix seconds (string)
10
+ * - Nonce: random UUID v4 (replay-protected by Redis with ±5 min skew)
11
+ *
12
+ * Endpoints used:
13
+ * - `fetchBridgeConfig()` — `GET /api/v1/bridge/config` (geo-aware Bridge URL)
14
+ * - `syncAgents()` — `POST /api/v1/agents/sync` (Agent Identity registration)
15
+ */
16
+ export interface BridgeConfig {
17
+ url: string;
18
+ region: string;
19
+ }
20
+ export interface AgentGatewayIdentity {
21
+ publicKey: Uint8Array;
22
+ privateKey: Uint8Array;
23
+ }
24
+ export interface FetchBridgeConfigOptions {
25
+ /** Agent Gateway base URL, e.g. `https://agent-gw.beeos.ai`. */
26
+ agentGatewayUrl: string;
27
+ /** Optional preferred region for geo-aware bridge allocation. */
28
+ region?: string;
29
+ /** Ed25519 identity used to sign the request. */
30
+ identity: AgentGatewayIdentity;
31
+ /** Default 10s. */
32
+ timeoutMs?: number;
33
+ /** Test seam. Defaults to `globalThis.fetch`. */
34
+ fetchImpl?: typeof fetch;
35
+ /** Test seam. Defaults to `Date.now()`. */
36
+ now?: () => number;
37
+ /** Test seam. Defaults to `crypto.randomUUID()`. */
38
+ randomUUID?: () => string;
39
+ }
40
+ export declare class AgentGatewayError extends Error {
41
+ readonly status?: number | undefined;
42
+ readonly body?: string | undefined;
43
+ constructor(message: string, status?: number | undefined, body?: string | undefined);
44
+ }
45
+ /**
46
+ * GET /api/v1/bridge/config — returns the bridge WebSocket URL plus the
47
+ * region it was allocated in. Throws `AgentGatewayError` on non-2xx
48
+ * responses or transport failures.
49
+ */
50
+ export declare function fetchBridgeConfig(opts: FetchBridgeConfigOptions): Promise<BridgeConfig>;
51
+ export interface AgentCapabilitiesInput {
52
+ canvas?: boolean;
53
+ terminal?: boolean;
54
+ webSsh?: boolean;
55
+ fileSystem?: boolean;
56
+ image?: boolean;
57
+ audio?: boolean;
58
+ mcp?: boolean;
59
+ cron?: boolean;
60
+ streaming?: boolean;
61
+ pushNotifications?: boolean;
62
+ }
63
+ export interface AgentSkillInput {
64
+ name: string;
65
+ description?: string;
66
+ emoji?: string;
67
+ id?: string;
68
+ tags?: string[];
69
+ inputModes?: string[];
70
+ outputModes?: string[];
71
+ }
72
+ export interface AgentDeclarationInput {
73
+ name: string;
74
+ description?: string;
75
+ version?: string;
76
+ capabilities?: AgentCapabilitiesInput;
77
+ skills?: AgentSkillInput[];
78
+ avatarUrl?: string;
79
+ homepage?: string;
80
+ }
81
+ export interface SyncedAgentRecord {
82
+ id: string;
83
+ instanceId?: string;
84
+ name: string;
85
+ displayName?: string;
86
+ description?: string;
87
+ version?: string;
88
+ status?: string;
89
+ }
90
+ export interface SyncAgentsResult {
91
+ created: number;
92
+ updated: number;
93
+ deactivated: number;
94
+ agents: SyncedAgentRecord[];
95
+ }
96
+ export interface SyncAgentsOptions {
97
+ agentGatewayUrl: string;
98
+ identity: AgentGatewayIdentity;
99
+ agents: AgentDeclarationInput[];
100
+ timeoutMs?: number;
101
+ fetchImpl?: typeof fetch;
102
+ now?: () => number;
103
+ randomUUID?: () => string;
104
+ }
105
+ export interface AgentConfigModel {
106
+ id: string;
107
+ name: string;
108
+ provider: string;
109
+ }
110
+ export interface AgentConfigPayload {
111
+ /**
112
+ * VLM API key — empty string means the dashboard hasn't configured
113
+ * `AROUTER_API_KEY` yet (the GW serializes the field with
114
+ * `omitempty`, so absence and emptiness collapse).
115
+ */
116
+ vlmApiKey: string;
117
+ /**
118
+ * Currently-selected default model for this instance (mirrors
119
+ * `instances.model_primary`). Empty when nothing has been picked
120
+ * yet — agent should fall back to its own zod default.
121
+ */
122
+ vlmModel: string;
123
+ availableModels: AgentConfigModel[];
124
+ /**
125
+ * True iff the GW response either omitted `vlm_api_key` entirely or
126
+ * returned an empty string. Lets callers warn the user without
127
+ * having to reach into the omitempty wire convention themselves.
128
+ */
129
+ keyMissing: boolean;
130
+ }
131
+ export interface FetchAgentConfigOptions {
132
+ agentGatewayUrl: string;
133
+ identity: AgentGatewayIdentity;
134
+ timeoutMs?: number;
135
+ fetchImpl?: typeof fetch;
136
+ now?: () => number;
137
+ randomUUID?: () => string;
138
+ }
139
+ /**
140
+ * GET /api/v1/agent/config — fetch the user-scoped VLM configuration
141
+ * (ARouter API key, default model, list of selectable models).
142
+ *
143
+ * `vlm_base_url` is intentionally not part of the response (per ADR
144
+ * — base URL is a deployment detail). device-agent's loader applies
145
+ * its own zod default (`https://api.arouter.ai`).
146
+ *
147
+ * Currently exposed for tests and future ACP `session.setModel`
148
+ * round-trips. The CLI is the primary consumer at attach time and
149
+ * uses `@beeos/core::fetchAgentConfig` to talk to the same endpoint.
150
+ */
151
+ export declare function fetchAgentConfig(opts: FetchAgentConfigOptions): Promise<AgentConfigPayload>;
152
+ export interface UpdateAgentConfigOptions {
153
+ agentGatewayUrl: string;
154
+ identity: AgentGatewayIdentity;
155
+ modelPrimary: string;
156
+ timeoutMs?: number;
157
+ fetchImpl?: typeof fetch;
158
+ now?: () => number;
159
+ randomUUID?: () => string;
160
+ }
161
+ /**
162
+ * PUT /api/v1/agent/config — persist the user-selected default model
163
+ * back to the platform instance (`instances.model_primary`). Future
164
+ * ACP `session.setModel` will likely call this; for today the
165
+ * adapter is shipped to keep the contract symmetric with the GET.
166
+ */
167
+ export declare function updateAgentConfig(opts: UpdateAgentConfigOptions): Promise<void>;
168
+ /**
169
+ * POST /api/v1/agents/sync — declare the full set of agents this
170
+ * instance hosts. Agent Identity Service reconciles on the platform
171
+ * side (create / update / deactivate). Throws `AgentGatewayError`
172
+ * on non-2xx or transport failures.
173
+ *
174
+ * For device-agent this is called once per boot with a single
175
+ * agent declaration so the device shows up in the platform's Agents
176
+ * directory (Dashboard → Agents).
177
+ */
178
+ export declare function syncAgents(opts: SyncAgentsOptions): Promise<SyncAgentsResult>;
179
+ /**
180
+ * Result of `POST /api/v1/agent/files/presign`. The `downloadUrl` and
181
+ * `downloadExpiresIn` fields are populated when the storage backend
182
+ * supports pre-signed downloads (S3 / MinIO); `LocalStore` in
183
+ * dev returns empty strings, in which case callers must fall back to
184
+ * `GET /api/v1/agent/files/{id}/resolve` after `confirm`.
185
+ *
186
+ * `downloadExpiresIn` is in seconds. The default Runtime config is
187
+ * 24 h (86400) and the hard cap is 168 h / 7 d (604800) per AWS
188
+ * SigV4. The TTL is set on the Runtime side via the
189
+ * `PRESIGN_DOWNLOAD_TTL` env.
190
+ */
191
+ export interface PresignFilePair {
192
+ fileId: string;
193
+ uploadUrl: string;
194
+ downloadUrl: string;
195
+ downloadExpiresIn: number;
196
+ }
197
+ export interface PresignFileUploadOptions {
198
+ agentGatewayUrl: string;
199
+ identity: AgentGatewayIdentity;
200
+ fileName: string;
201
+ mimeType: string;
202
+ timeoutMs?: number;
203
+ fetchImpl?: typeof fetch;
204
+ now?: () => number;
205
+ randomUUID?: () => string;
206
+ }
207
+ /**
208
+ * Pre-sign a paired PUT + GET URL for a file the agent is about to
209
+ * stage. The Agent Gateway resolves the calling agent's `instanceId` /
210
+ * `ownerId` from the Ed25519 signature and forwards both to the
211
+ * Runtime FileService — the client never needs to know either.
212
+ *
213
+ * The returned `downloadUrl` is suitable for embedding directly as an
214
+ * OpenAI vision `image_url` part: it is publicly fetchable for up to
215
+ * `downloadExpiresIn` seconds without any platform credential. Callers
216
+ * that ship images to a remote VLM should:
217
+ *
218
+ * 1. Call this method with `{ fileName, mimeType }`.
219
+ * 2. PUT the bytes to `uploadUrl` (S3 sigv4 — no auth headers needed).
220
+ * 3. Use `downloadUrl` in the chat-completion message.
221
+ *
222
+ * No `confirm` round-trip is required for VLM use — `confirm` is only
223
+ * needed when the platform's file index ought to surface the upload
224
+ * (e.g. user-visible attachments). Throws `AgentGatewayError` on
225
+ * non-2xx responses.
226
+ */
227
+ export declare function presignFileUpload(opts: PresignFileUploadOptions): Promise<PresignFilePair>;
228
+ /**
229
+ * PUT the staged bytes to the pre-signed S3 / MinIO URL.
230
+ * Pre-signed URLs already encode the auth, so the call is a single
231
+ * unauthenticated HTTP PUT. The `Content-Type` header MUST match the
232
+ * one passed to `presignFileUpload` — S3's sigv4 binds the header
233
+ * into the signature.
234
+ *
235
+ * Returns silently on success; throws `AgentGatewayError` on non-2xx
236
+ * (preserves status code for caller's transport-level fallback).
237
+ */
238
+ export declare function putPresignedBytes(opts: {
239
+ uploadUrl: string;
240
+ bytes: Uint8Array;
241
+ mimeType: string;
242
+ timeoutMs?: number;
243
+ fetchImpl?: typeof fetch;
244
+ }): Promise<void>;
245
+ /**
246
+ * Build the four `X-Agent-*` Ed25519 auth headers for an HTTP request.
247
+ * Exposed for unit tests and adapters that talk to other AGW endpoints.
248
+ */
249
+ export declare function buildAuthHeaders(opts: {
250
+ method: string;
251
+ /** URL path WITHOUT query string. */
252
+ path: string;
253
+ identity: AgentGatewayIdentity;
254
+ now?: () => number;
255
+ randomUUID?: () => string;
256
+ }): Record<string, string>;
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Adapter — Agent Gateway HTTP client (Ed25519-authenticated).
3
+ *
4
+ * Mirrors the Python `agent_gateway_client.py` and the Go middleware in
5
+ * `backend/services/agent-gateway/internal/agentauth/verify.go`:
6
+ *
7
+ * - Headers: X-Agent-Public-Key / X-Agent-Signature / X-Agent-Timestamp / X-Agent-Nonce
8
+ * - Signature: ed25519(privateKey, "METHOD|PATH|timestamp|nonce") (PATH excludes query)
9
+ * - Timestamp: unix seconds (string)
10
+ * - Nonce: random UUID v4 (replay-protected by Redis with ±5 min skew)
11
+ *
12
+ * Endpoints used:
13
+ * - `fetchBridgeConfig()` — `GET /api/v1/bridge/config` (geo-aware Bridge URL)
14
+ * - `syncAgents()` — `POST /api/v1/agents/sync` (Agent Identity registration)
15
+ */
16
+ import { sign } from "@beeos-ai/bridge-client";
17
+ export class AgentGatewayError extends Error {
18
+ status;
19
+ body;
20
+ constructor(message, status, body) {
21
+ super(message);
22
+ this.status = status;
23
+ this.body = body;
24
+ this.name = "AgentGatewayError";
25
+ }
26
+ }
27
+ /**
28
+ * GET /api/v1/bridge/config — returns the bridge WebSocket URL plus the
29
+ * region it was allocated in. Throws `AgentGatewayError` on non-2xx
30
+ * responses or transport failures.
31
+ */
32
+ export async function fetchBridgeConfig(opts) {
33
+ const path = "/api/v1/bridge/config";
34
+ const query = opts.region ? `?region=${encodeURIComponent(opts.region)}` : "";
35
+ const url = `${trimSlash(opts.agentGatewayUrl)}${path}${query}`;
36
+ const headers = buildAuthHeaders({
37
+ method: "GET",
38
+ path,
39
+ identity: opts.identity,
40
+ now: opts.now,
41
+ randomUUID: opts.randomUUID,
42
+ });
43
+ const data = await gwGet(url, headers, opts.timeoutMs ?? 10_000, opts.fetchImpl);
44
+ const u = data.url;
45
+ const r = data.region;
46
+ if (typeof u !== "string" || u.length === 0) {
47
+ throw new AgentGatewayError(`bridge/config: missing 'url' in response (got ${JSON.stringify(data)})`);
48
+ }
49
+ return { url: u, region: typeof r === "string" ? r : "" };
50
+ }
51
+ /**
52
+ * GET /api/v1/agent/config — fetch the user-scoped VLM configuration
53
+ * (ARouter API key, default model, list of selectable models).
54
+ *
55
+ * `vlm_base_url` is intentionally not part of the response (per ADR
56
+ * — base URL is a deployment detail). device-agent's loader applies
57
+ * its own zod default (`https://api.arouter.ai`).
58
+ *
59
+ * Currently exposed for tests and future ACP `session.setModel`
60
+ * round-trips. The CLI is the primary consumer at attach time and
61
+ * uses `@beeos/core::fetchAgentConfig` to talk to the same endpoint.
62
+ */
63
+ export async function fetchAgentConfig(opts) {
64
+ const path = "/api/v1/agent/config";
65
+ const url = `${trimSlash(opts.agentGatewayUrl)}${path}`;
66
+ const headers = buildAuthHeaders({
67
+ method: "GET",
68
+ path,
69
+ identity: opts.identity,
70
+ now: opts.now,
71
+ randomUUID: opts.randomUUID,
72
+ });
73
+ const data = (await gwGet(url, headers, opts.timeoutMs ?? 10_000, opts.fetchImpl));
74
+ const obj = (data ?? {});
75
+ const apiKeyField = obj["vlm_api_key"];
76
+ const vlmApiKey = typeof apiKeyField === "string" ? apiKeyField : "";
77
+ const modelField = obj["vlm_model"];
78
+ const vlmModel = typeof modelField === "string" ? modelField : "";
79
+ const rawModels = Array.isArray(obj["available_models"])
80
+ ? obj["available_models"]
81
+ : [];
82
+ const availableModels = rawModels
83
+ .filter((m) => !!m && typeof m === "object")
84
+ .map((m) => ({
85
+ id: typeof m["id"] === "string" ? m["id"] : "",
86
+ name: typeof m["name"] === "string" ? m["name"] : "",
87
+ provider: typeof m["provider"] === "string"
88
+ ? m["provider"]
89
+ : "",
90
+ }));
91
+ return {
92
+ vlmApiKey,
93
+ vlmModel,
94
+ availableModels,
95
+ keyMissing: !("vlm_api_key" in obj) || vlmApiKey === "",
96
+ };
97
+ }
98
+ /**
99
+ * PUT /api/v1/agent/config — persist the user-selected default model
100
+ * back to the platform instance (`instances.model_primary`). Future
101
+ * ACP `session.setModel` will likely call this; for today the
102
+ * adapter is shipped to keep the contract symmetric with the GET.
103
+ */
104
+ export async function updateAgentConfig(opts) {
105
+ const path = "/api/v1/agent/config";
106
+ const url = `${trimSlash(opts.agentGatewayUrl)}${path}`;
107
+ const body = JSON.stringify({ model_primary: opts.modelPrimary });
108
+ const headers = {
109
+ ...buildAuthHeaders({
110
+ method: "PUT",
111
+ path,
112
+ identity: opts.identity,
113
+ now: opts.now,
114
+ randomUUID: opts.randomUUID,
115
+ }),
116
+ "Content-Type": "application/json",
117
+ };
118
+ await gwRequest("PUT", url, headers, body, opts.timeoutMs ?? 10_000, opts.fetchImpl);
119
+ }
120
+ /**
121
+ * POST /api/v1/agents/sync — declare the full set of agents this
122
+ * instance hosts. Agent Identity Service reconciles on the platform
123
+ * side (create / update / deactivate). Throws `AgentGatewayError`
124
+ * on non-2xx or transport failures.
125
+ *
126
+ * For device-agent this is called once per boot with a single
127
+ * agent declaration so the device shows up in the platform's Agents
128
+ * directory (Dashboard → Agents).
129
+ */
130
+ export async function syncAgents(opts) {
131
+ const path = "/api/v1/agents/sync";
132
+ const url = `${trimSlash(opts.agentGatewayUrl)}${path}`;
133
+ const body = JSON.stringify({ agents: opts.agents });
134
+ const headers = {
135
+ ...buildAuthHeaders({
136
+ method: "POST",
137
+ path,
138
+ identity: opts.identity,
139
+ now: opts.now,
140
+ randomUUID: opts.randomUUID,
141
+ }),
142
+ "Content-Type": "application/json",
143
+ };
144
+ const data = await gwRequest("POST", url, headers, body, opts.timeoutMs ?? 10_000, opts.fetchImpl);
145
+ // Agent Gateway returns the standard `{success, data, ...}` envelope —
146
+ // counts live at top level (created/updated/deactivated), platform agent
147
+ // records live under `data`.
148
+ const obj = (data ?? {});
149
+ const agentsRaw = Array.isArray(obj.data) ? obj.data : [];
150
+ const agents = agentsRaw
151
+ .filter((a) => !!a && typeof a === "object")
152
+ .map((a) => ({
153
+ id: String(a.id ?? ""),
154
+ instanceId: typeof a.instanceId === "string" ? a.instanceId : undefined,
155
+ name: String(a.name ?? ""),
156
+ displayName: typeof a.displayName === "string" ? a.displayName : undefined,
157
+ description: typeof a.description === "string" ? a.description : undefined,
158
+ version: typeof a.version === "string" ? a.version : undefined,
159
+ status: typeof a.status === "string" ? a.status : undefined,
160
+ }));
161
+ return {
162
+ created: typeof obj.created === "number" ? obj.created : 0,
163
+ updated: typeof obj.updated === "number" ? obj.updated : 0,
164
+ deactivated: typeof obj.deactivated === "number" ? obj.deactivated : 0,
165
+ agents,
166
+ };
167
+ }
168
+ /**
169
+ * Pre-sign a paired PUT + GET URL for a file the agent is about to
170
+ * stage. The Agent Gateway resolves the calling agent's `instanceId` /
171
+ * `ownerId` from the Ed25519 signature and forwards both to the
172
+ * Runtime FileService — the client never needs to know either.
173
+ *
174
+ * The returned `downloadUrl` is suitable for embedding directly as an
175
+ * OpenAI vision `image_url` part: it is publicly fetchable for up to
176
+ * `downloadExpiresIn` seconds without any platform credential. Callers
177
+ * that ship images to a remote VLM should:
178
+ *
179
+ * 1. Call this method with `{ fileName, mimeType }`.
180
+ * 2. PUT the bytes to `uploadUrl` (S3 sigv4 — no auth headers needed).
181
+ * 3. Use `downloadUrl` in the chat-completion message.
182
+ *
183
+ * No `confirm` round-trip is required for VLM use — `confirm` is only
184
+ * needed when the platform's file index ought to surface the upload
185
+ * (e.g. user-visible attachments). Throws `AgentGatewayError` on
186
+ * non-2xx responses.
187
+ */
188
+ export async function presignFileUpload(opts) {
189
+ const path = "/api/v1/agent/files/presign";
190
+ const url = `${trimSlash(opts.agentGatewayUrl)}${path}`;
191
+ const body = JSON.stringify({
192
+ fileName: opts.fileName,
193
+ mimeType: opts.mimeType,
194
+ });
195
+ const headers = {
196
+ ...buildAuthHeaders({
197
+ method: "POST",
198
+ path,
199
+ identity: opts.identity,
200
+ now: opts.now,
201
+ randomUUID: opts.randomUUID,
202
+ }),
203
+ "Content-Type": "application/json",
204
+ };
205
+ const data = (await gwRequest("POST", url, headers, body, opts.timeoutMs ?? 10_000, opts.fetchImpl));
206
+ const obj = (data ?? {});
207
+ const fileId = typeof obj.fileId === "string" ? obj.fileId : "";
208
+ const uploadUrl = typeof obj.uploadUrl === "string" ? obj.uploadUrl : "";
209
+ const downloadUrl = typeof obj.downloadUrl === "string" ? obj.downloadUrl : "";
210
+ const downloadExpiresIn = typeof obj.downloadExpiresIn === "number" ? obj.downloadExpiresIn : 0;
211
+ if (!fileId || !uploadUrl) {
212
+ throw new AgentGatewayError(`files/presign: missing fileId/uploadUrl (got ${JSON.stringify(data)})`);
213
+ }
214
+ return { fileId, uploadUrl, downloadUrl, downloadExpiresIn };
215
+ }
216
+ /**
217
+ * PUT the staged bytes to the pre-signed S3 / MinIO URL.
218
+ * Pre-signed URLs already encode the auth, so the call is a single
219
+ * unauthenticated HTTP PUT. The `Content-Type` header MUST match the
220
+ * one passed to `presignFileUpload` — S3's sigv4 binds the header
221
+ * into the signature.
222
+ *
223
+ * Returns silently on success; throws `AgentGatewayError` on non-2xx
224
+ * (preserves status code for caller's transport-level fallback).
225
+ */
226
+ export async function putPresignedBytes(opts) {
227
+ const f = opts.fetchImpl ?? globalThis.fetch;
228
+ if (typeof f !== "function") {
229
+ throw new AgentGatewayError("global fetch is not available (Node >=18 required)");
230
+ }
231
+ const ctrl = new AbortController();
232
+ const timer = setTimeout(() => ctrl.abort(), opts.timeoutMs ?? 30_000);
233
+ try {
234
+ // Node's fetch typings narrow `body` to `BodyInit`, which technically
235
+ // accepts an `ArrayBuffer` but not the generic `Uint8Array<ArrayBufferLike>`
236
+ // shape produced by callers (compressForVlm output, etc.). At runtime
237
+ // a Uint8Array is a perfectly valid `BodyInit` for Node fetch — the
238
+ // cast keeps the byte-exact PUT contract without an extra copy.
239
+ const resp = await f(opts.uploadUrl, {
240
+ method: "PUT",
241
+ headers: { "Content-Type": opts.mimeType },
242
+ body: opts.bytes,
243
+ signal: ctrl.signal,
244
+ });
245
+ if (!resp.ok) {
246
+ const text = await safeReadBody(resp);
247
+ throw new AgentGatewayError(`presigned PUT failed: ${resp.status} ${resp.statusText}`, resp.status, text);
248
+ }
249
+ }
250
+ catch (e) {
251
+ if (e instanceof AgentGatewayError)
252
+ throw e;
253
+ if (e.name === "AbortError") {
254
+ throw new AgentGatewayError(`presigned PUT timed out after ${opts.timeoutMs ?? 30_000}ms`);
255
+ }
256
+ throw new AgentGatewayError(`presigned PUT failed: ${e.message}`);
257
+ }
258
+ finally {
259
+ clearTimeout(timer);
260
+ }
261
+ }
262
+ /**
263
+ * Build the four `X-Agent-*` Ed25519 auth headers for an HTTP request.
264
+ * Exposed for unit tests and adapters that talk to other AGW endpoints.
265
+ */
266
+ export function buildAuthHeaders(opts) {
267
+ const tsMs = opts.now ? opts.now() : Date.now();
268
+ const timestamp = Math.floor(tsMs / 1000).toString();
269
+ const nonce = opts.randomUUID ? opts.randomUUID() : globalThis.crypto.randomUUID();
270
+ const message = `${opts.method.toUpperCase()}|${opts.path}|${timestamp}|${nonce}`;
271
+ const signature = sign(message, opts.identity.privateKey);
272
+ return {
273
+ "X-Agent-Public-Key": Buffer.from(opts.identity.publicKey).toString("base64"),
274
+ "X-Agent-Signature": Buffer.from(signature).toString("base64"),
275
+ "X-Agent-Timestamp": timestamp,
276
+ "X-Agent-Nonce": nonce,
277
+ };
278
+ }
279
+ async function gwGet(url, headers, timeoutMs, fetchImpl) {
280
+ return gwRequest("GET", url, headers, undefined, timeoutMs, fetchImpl);
281
+ }
282
+ async function gwRequest(method, url, headers, body, timeoutMs, fetchImpl) {
283
+ const f = fetchImpl ?? globalThis.fetch;
284
+ if (typeof f !== "function") {
285
+ throw new AgentGatewayError("global fetch is not available (Node >=18 required)");
286
+ }
287
+ const ctrl = new AbortController();
288
+ const timer = setTimeout(() => ctrl.abort(), timeoutMs);
289
+ try {
290
+ const init = { method, headers, signal: ctrl.signal };
291
+ if (body !== undefined)
292
+ init.body = body;
293
+ const resp = await f(url, init);
294
+ if (!resp.ok) {
295
+ const text = await safeReadBody(resp);
296
+ throw new AgentGatewayError(`agent gateway request failed: ${resp.status} ${resp.statusText}`, resp.status, text);
297
+ }
298
+ const text = await resp.text();
299
+ if (!text)
300
+ return null;
301
+ try {
302
+ return JSON.parse(text);
303
+ }
304
+ catch {
305
+ return text;
306
+ }
307
+ }
308
+ catch (e) {
309
+ if (e instanceof AgentGatewayError)
310
+ throw e;
311
+ if (e.name === "AbortError") {
312
+ throw new AgentGatewayError(`agent gateway request timed out after ${timeoutMs}ms`);
313
+ }
314
+ throw new AgentGatewayError(`agent gateway request failed: ${e.message}`);
315
+ }
316
+ finally {
317
+ clearTimeout(timer);
318
+ }
319
+ }
320
+ async function safeReadBody(resp) {
321
+ try {
322
+ const t = await resp.text();
323
+ return t.slice(0, 500);
324
+ }
325
+ catch {
326
+ return "";
327
+ }
328
+ }
329
+ function trimSlash(s) {
330
+ return s.endsWith("/") ? s.slice(0, -1) : s;
331
+ }
332
+ //# sourceMappingURL=agent-gateway-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-gateway-client.js","sourceRoot":"","sources":["../../src/adapters/agent-gateway-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
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
+ import type { AgentCoreRunOptions, AgentCoreRunResult, IAgentCore } from "../ports/agent-core.js";
21
+ import type { IVlm } from "../ports/vlm.js";
22
+ export declare class InnerLoopAgent implements IAgentCore {
23
+ private readonly vlm;
24
+ constructor(vlm: IVlm);
25
+ get modelName(): string;
26
+ get providerName(): string | undefined;
27
+ run(opts: AgentCoreRunOptions): Promise<AgentCoreRunResult>;
28
+ setModel(provider: string, model: string): Promise<void>;
29
+ }