@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,464 @@
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 { formatUiXmlToolOutput } from "../device/ui-xml.js";
33
+ import { setPiExtensionContext, } from "../pi-context.js";
34
+ import { ORCHESTRATOR_SYSTEM_PROMPT } from "../orchestrator-system-prompt.js";
35
+ // ── Adapter ─────────────────────────────────────────────────────────────
36
+ export class PiOrchestratorAgent {
37
+ session = null;
38
+ starting = null;
39
+ outer;
40
+ projectRoot;
41
+ systemPrompt;
42
+ logger;
43
+ createSessionFactory;
44
+ resolveModelFn;
45
+ mcpProvider;
46
+ grounderFactory;
47
+ mobileUseRunner;
48
+ uiXmlRunner;
49
+ cachedGrounder = null;
50
+ constructor(opts) {
51
+ this.projectRoot = opts.projectRoot;
52
+ this.outer = { ...opts.outer };
53
+ this.systemPrompt = opts.systemPrompt ?? ORCHESTRATOR_SYSTEM_PROMPT;
54
+ this.logger = opts.logger ?? {
55
+ warn: (..._args) => undefined,
56
+ info: (..._args) => undefined,
57
+ debug: (..._args) => undefined,
58
+ };
59
+ this.createSessionFactory = opts.createSession ?? defaultCreateSession;
60
+ this.resolveModelFn = opts.resolveModel ?? defaultResolveModel;
61
+ this.mcpProvider = opts.mcpProvider;
62
+ this.grounderFactory = opts.grounderFactory;
63
+ this.mobileUseRunner = opts.mobileUseRunner;
64
+ this.uiXmlRunner = opts.uiXmlRunner;
65
+ applyOuterEnvMapping(this.outer);
66
+ }
67
+ get modelName() {
68
+ return this.outer.model ?? "";
69
+ }
70
+ get providerName() {
71
+ const inferred = this.outer.provider || inferPiProvider(this.outer.baseUrl ?? "");
72
+ return inferred || undefined;
73
+ }
74
+ async run(opts) {
75
+ if (opts.abortSignal?.aborted) {
76
+ return { finalMessage: "", steps: 0, cancelled: true };
77
+ }
78
+ const session = await this.ensureSession();
79
+ let cancelled = false;
80
+ let toolCount = 0;
81
+ let finalText = "";
82
+ let streamingBuf = "";
83
+ const dispatchTool = async (event) => {
84
+ if (opts.onTool)
85
+ await opts.onTool(event);
86
+ };
87
+ const unsubscribe = session.subscribe(async (event) => {
88
+ switch (event.type) {
89
+ case "message_start": {
90
+ const msg = event.message;
91
+ if (msg?.role === "assistant")
92
+ streamingBuf = "";
93
+ break;
94
+ }
95
+ case "message_update": {
96
+ const ev = event.assistantMessageEvent;
97
+ if (ev?.type === "text_delta" && typeof ev.delta === "string") {
98
+ const delta = ev.delta;
99
+ streamingBuf += delta;
100
+ if (opts.onText)
101
+ await opts.onText(delta);
102
+ }
103
+ break;
104
+ }
105
+ case "message_end": {
106
+ const msg = event.message;
107
+ if (msg?.role === "assistant") {
108
+ if (streamingBuf.length > 0)
109
+ finalText = streamingBuf;
110
+ else {
111
+ const fromBlocks = extractAssistantText(msg);
112
+ if (fromBlocks)
113
+ finalText = fromBlocks;
114
+ }
115
+ }
116
+ break;
117
+ }
118
+ case "tool_execution_start": {
119
+ toolCount++;
120
+ const e = event;
121
+ await dispatchTool({
122
+ id: String(e.toolCallId ?? `t-${toolCount}`),
123
+ name: String(e.toolName ?? "tool"),
124
+ args: toRecord(e.args),
125
+ status: "start",
126
+ });
127
+ break;
128
+ }
129
+ case "tool_execution_update": {
130
+ const e = event;
131
+ await dispatchTool({
132
+ id: String(e.toolCallId ?? ""),
133
+ name: String(e.toolName ?? "tool"),
134
+ args: toRecord(e.args),
135
+ status: "update",
136
+ result: e.partialResult,
137
+ });
138
+ break;
139
+ }
140
+ case "tool_execution_end": {
141
+ const e = event;
142
+ await dispatchTool({
143
+ id: String(e.toolCallId ?? ""),
144
+ name: String(e.toolName ?? "tool"),
145
+ args: {},
146
+ status: "end",
147
+ result: e.result,
148
+ isError: !!e.isError,
149
+ });
150
+ break;
151
+ }
152
+ default:
153
+ break;
154
+ }
155
+ });
156
+ let abortHandler = null;
157
+ if (opts.abortSignal) {
158
+ abortHandler = () => {
159
+ cancelled = true;
160
+ session.abort().catch(() => undefined);
161
+ };
162
+ opts.abortSignal.addEventListener("abort", abortHandler, { once: true });
163
+ }
164
+ try {
165
+ await session.prompt(opts.task);
166
+ }
167
+ catch (e) {
168
+ if (cancelled) {
169
+ return {
170
+ finalMessage: finalText || streamingBuf,
171
+ steps: toolCount,
172
+ cancelled: true,
173
+ };
174
+ }
175
+ throw e;
176
+ }
177
+ finally {
178
+ if (abortHandler && opts.abortSignal) {
179
+ opts.abortSignal.removeEventListener("abort", abortHandler);
180
+ }
181
+ unsubscribe();
182
+ }
183
+ // Fall back to the accumulated streaming buffer when we never saw a
184
+ // terminal `message_end` for the assistant — this happens when the
185
+ // upstream session aborts mid-stream, when only non-assistant
186
+ // messages emit `message_end`, or when pi closes the stream early.
187
+ const message = finalText || streamingBuf;
188
+ return { finalMessage: message, steps: toolCount, cancelled };
189
+ }
190
+ async setModel(provider, model) {
191
+ if (!model)
192
+ return;
193
+ this.outer = { ...this.outer, provider, model };
194
+ applyOuterEnvMapping(this.outer);
195
+ if (!this.session)
196
+ return;
197
+ const resolved = this.resolveModelFn(provider, model, this.outer.baseUrl ?? "");
198
+ if (!resolved) {
199
+ this.logger.warn?.({ provider, model, baseUrl: this.outer.baseUrl }, "outer model resolution failed — keeping previous model");
200
+ return;
201
+ }
202
+ try {
203
+ await this.session.setModel(resolved);
204
+ }
205
+ catch (e) {
206
+ this.logger.warn?.({ err: e.message, provider, model }, "session.setModel failed");
207
+ }
208
+ }
209
+ /** Tear down the underlying pi session. Idempotent. */
210
+ async dispose() {
211
+ const s = this.session;
212
+ this.session = null;
213
+ this.starting = null;
214
+ this.cachedGrounder = null;
215
+ setPiExtensionContext(null);
216
+ if (s) {
217
+ try {
218
+ await s.abort();
219
+ }
220
+ catch {
221
+ /* ignore */
222
+ }
223
+ try {
224
+ s.dispose();
225
+ }
226
+ catch {
227
+ /* ignore */
228
+ }
229
+ }
230
+ }
231
+ // ── Internals ─────────────────────────────────────────────────────────
232
+ buildExtensionContext() {
233
+ // The pi extensions hard-fail when their context is missing, but the
234
+ // test seam (`createSession` injected) often doesn't need the
235
+ // context at all. Only install one when the bootstrap layer
236
+ // explicitly handed us an `mcpProvider`.
237
+ if (!this.mcpProvider)
238
+ return null;
239
+ const mcpProvider = this.mcpProvider;
240
+ const grounderFactory = this.grounderFactory;
241
+ const mobileUseRunner = this.mobileUseRunner;
242
+ const uiXmlRunner = this.uiXmlRunner;
243
+ return {
244
+ getMcpClient: () => mcpProvider(),
245
+ getGrounder: () => {
246
+ if (this.cachedGrounder)
247
+ return this.cachedGrounder;
248
+ if (!grounderFactory) {
249
+ throw new Error("PiOrchestratorAgent: ground tool invoked but no grounderFactory was provided");
250
+ }
251
+ this.cachedGrounder = grounderFactory();
252
+ return this.cachedGrounder;
253
+ },
254
+ runMobileUse: async (task, maxSteps, abortSignal) => {
255
+ if (!mobileUseRunner) {
256
+ throw new Error("PiOrchestratorAgent: mobile_use tool invoked but no mobileUseRunner was provided");
257
+ }
258
+ return mobileUseRunner(task, maxSteps, abortSignal);
259
+ },
260
+ getUiXml: async (query) => {
261
+ if (uiXmlRunner)
262
+ return uiXmlRunner(query);
263
+ // Default: dump the raw UI XML through the MCP runtime and
264
+ // feed it through `formatUiXmlToolOutput` — same shape the
265
+ // legacy `queryUiXml(device.raw, query)` produced on top of
266
+ // the Android driver. Backends that don't support a UI dump
267
+ // surface a clear "not supported" string so the orchestrator
268
+ // can fall back to `ground`.
269
+ const mcp = mcpProvider();
270
+ const dump = await mcp.uiDump({ format: "raw" });
271
+ if (!dump.supported) {
272
+ return "UI XML is not supported on this backend (use `ground` to locate elements)";
273
+ }
274
+ const xml = dump.content ?? "";
275
+ return formatUiXmlToolOutput(xml, query);
276
+ },
277
+ };
278
+ }
279
+ ensureSession() {
280
+ if (this.session)
281
+ return Promise.resolve(this.session);
282
+ if (this.starting)
283
+ return this.starting;
284
+ const promise = (async () => {
285
+ // Install the extension context BEFORE the resource loader runs:
286
+ // pi calls each extension's `default(api)` during `loader.reload()`,
287
+ // which today only registers tools (no immediate context reads),
288
+ // but we want the singleton ready in case an extension decides to
289
+ // pre-warm a device handle.
290
+ const ctx = this.buildExtensionContext();
291
+ if (ctx)
292
+ setPiExtensionContext(ctx);
293
+ const provider = this.outer.provider || inferPiProvider(this.outer.baseUrl ?? "");
294
+ const model = this.outer.model
295
+ ? this.resolveModelFn(provider, this.outer.model, this.outer.baseUrl ?? "")
296
+ : undefined;
297
+ const sess = await this.createSessionFactory({
298
+ projectRoot: this.projectRoot,
299
+ systemPrompt: this.systemPrompt,
300
+ model,
301
+ });
302
+ this.session = sess;
303
+ return sess;
304
+ })();
305
+ this.starting = promise;
306
+ // Clear `starting` after settlement so a subsequent failed run can
307
+ // re-attempt initialisation. On failure, clear the extension context
308
+ // too so a stale context doesn't survive across retries.
309
+ promise.then(() => {
310
+ if (this.starting === promise)
311
+ this.starting = null;
312
+ }, () => {
313
+ if (this.starting === promise)
314
+ this.starting = null;
315
+ setPiExtensionContext(null);
316
+ });
317
+ return promise;
318
+ }
319
+ }
320
+ // ── Helpers ────────────────────────────────────────────────────────────
321
+ /**
322
+ * Map our generic outer config to pi-ai's env-var contract. pi-ai reads
323
+ * provider-specific keys (e.g. `OPENROUTER_API_KEY`) from `process.env`,
324
+ * so we transparently set them when the caller hands us `outer.apiKey`
325
+ * + a recognised baseUrl. Never overwrites a key the caller already set.
326
+ *
327
+ * Recognised hosts:
328
+ * - openrouter.ai / arouter.ai → OPENROUTER_API_KEY
329
+ * - api.openai.com → OPENAI_API_KEY
330
+ * - api.anthropic.com → ANTHROPIC_API_KEY
331
+ * - generativelanguage.googleapis.com → GEMINI_API_KEY
332
+ */
333
+ export function applyOuterEnvMapping(outer) {
334
+ const key = outer.apiKey;
335
+ if (!key)
336
+ return;
337
+ const provider = (outer.provider || "").toLowerCase();
338
+ const url = (outer.baseUrl ?? "").toLowerCase();
339
+ const candidates = [provider, url];
340
+ const matchesAny = (needles) => candidates.some((c) => needles.some((n) => c.includes(n)));
341
+ if (matchesAny(["openrouter", "arouter.ai"])) {
342
+ if (!process.env.OPENROUTER_API_KEY)
343
+ process.env.OPENROUTER_API_KEY = key;
344
+ }
345
+ else if (matchesAny(["anthropic"])) {
346
+ if (!process.env.ANTHROPIC_API_KEY)
347
+ process.env.ANTHROPIC_API_KEY = key;
348
+ }
349
+ else if (matchesAny(["openai", "api.openai.com"])) {
350
+ if (!process.env.OPENAI_API_KEY)
351
+ process.env.OPENAI_API_KEY = key;
352
+ }
353
+ else if (matchesAny(["gemini", "generativelanguage.googleapis.com", "google"])) {
354
+ if (!process.env.GEMINI_API_KEY)
355
+ process.env.GEMINI_API_KEY = key;
356
+ }
357
+ }
358
+ /** Infer the pi-ai provider tag from a base URL. */
359
+ export function inferPiProvider(baseUrl) {
360
+ const url = (baseUrl ?? "").toLowerCase();
361
+ if (!url)
362
+ return "";
363
+ if (url.includes("openrouter.ai") || url.includes("arouter.ai"))
364
+ return "openrouter";
365
+ if (url.includes("api.openai.com"))
366
+ return "openai";
367
+ if (url.includes("anthropic.com"))
368
+ return "anthropic";
369
+ if (url.includes("generativelanguage.googleapis.com"))
370
+ return "google";
371
+ return "";
372
+ }
373
+ function toRecord(v) {
374
+ if (v && typeof v === "object" && !Array.isArray(v))
375
+ return v;
376
+ return {};
377
+ }
378
+ function extractAssistantText(message) {
379
+ if (message.role !== "assistant")
380
+ return "";
381
+ const c = message.content;
382
+ if (typeof c === "string")
383
+ return c;
384
+ if (!Array.isArray(c))
385
+ return "";
386
+ const parts = [];
387
+ for (const block of c) {
388
+ if (block &&
389
+ typeof block === "object" &&
390
+ "type" in block &&
391
+ block.type === "text") {
392
+ const t = block.text;
393
+ if (t)
394
+ parts.push(t);
395
+ }
396
+ }
397
+ return parts.join("");
398
+ }
399
+ // ── Default pi-ai / pi-coding-agent factory ─────────────────────────────
400
+ function defaultResolveModel(provider, modelId, baseUrl) {
401
+ if (!modelId)
402
+ return undefined;
403
+ const piProvider = (provider || inferPiProvider(baseUrl)).toLowerCase();
404
+ if (!piProvider)
405
+ return undefined;
406
+ let model;
407
+ try {
408
+ // pi-ai is a peer dep of pi-coding-agent which is already imported by
409
+ // chat.ts; it's safe to require here. Wrap in try/catch so a missing
410
+ // optional install doesn't blow up the whole adapter — `legacyInner`
411
+ // users may opt out.
412
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
413
+ const piAi = require("@mariozechner/pi-ai");
414
+ model = piAi.getModel(piProvider, modelId);
415
+ }
416
+ catch {
417
+ return undefined;
418
+ }
419
+ // ARouter is OpenRouter-compatible but lives at a different host. When
420
+ // the user explicitly pointed `outer.baseUrl` at arouter.ai (or another
421
+ // OpenRouter-clone), rewrite the resolved model's baseUrl so pi-ai's
422
+ // upstream HTTP call hits the right endpoint.
423
+ if (baseUrl && (baseUrl.toLowerCase().includes("arouter.ai") || piProvider === "openrouter")) {
424
+ const trimmed = baseUrl.replace(/\/$/, "");
425
+ if (trimmed && !trimmed.includes("openrouter.ai")) {
426
+ const suffix = trimmed.endsWith("/api/v1") || trimmed.endsWith("/v1") ? "" : "/api/v1";
427
+ model = { ...model, baseUrl: `${trimmed}${suffix}` };
428
+ }
429
+ }
430
+ return model;
431
+ }
432
+ const defaultCreateSession = async (cfg) => {
433
+ // Lazy-load to keep the adapter import-safe in environments where
434
+ // `@mariozechner/pi-coding-agent` isn't installed (e.g. tests using
435
+ // `legacyInner`).
436
+ const piAgent = (await import("@mariozechner/pi-coding-agent"));
437
+ const { createAgentSession, DefaultResourceLoader, getAgentDir } = piAgent;
438
+ const localSkills = await loadProjectSkillsLoaderOptions(cfg.projectRoot);
439
+ const loader = new DefaultResourceLoader({
440
+ cwd: cfg.projectRoot,
441
+ agentDir: getAgentDir(),
442
+ ...(cfg.systemPrompt ? { systemPromptOverride: () => cfg.systemPrompt } : {}),
443
+ ...localSkills,
444
+ });
445
+ await loader.reload();
446
+ const result = await createAgentSession({
447
+ resourceLoader: loader,
448
+ ...(cfg.model ? { model: cfg.model } : {}),
449
+ });
450
+ return result.session;
451
+ };
452
+ async function loadProjectSkillsLoaderOptions(projectRoot) {
453
+ try {
454
+ // The helper lives in the same package — we keep it on disk so the
455
+ // existing chat.ts CLI keeps working. Lazy-import to avoid a hard
456
+ // cycle through the public barrel.
457
+ const mod = (await import("../pi-local-skills.js"));
458
+ return mod.projectPiSkillsLoaderOptions?.(projectRoot) ?? {};
459
+ }
460
+ catch {
461
+ return {};
462
+ }
463
+ }
464
+ //# sourceMappingURL=agentcore-pi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentcore-pi.js","sourceRoot":"","sources":["../../src/adapters/agentcore-pi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Adapter — AgentRunnerCore (v0.3.0 default).
3
+ *
4
+ * Wraps the new `AgentRunner` (Hybrid Plan-Act runtime) behind the
5
+ * legacy `IAgentCore` port so the ACP plugin / `AgentHost` /
6
+ * `SessionManager` keep working without protocol changes.
7
+ *
8
+ * This is the **default** core path as of v0.3.0. The two opt-in
9
+ * decorators retained from earlier versions are:
10
+ * - `--legacy-inner` → `InnerLoopAgent` (single-layer fallback)
11
+ * - (default off) → `PiOrchestratorAgent` (outer LLM + inner
12
+ * mobile_use VLM, two-layer)
13
+ *
14
+ * The runner picks the strategy according to the user-tunable
15
+ * Plan-Act options:
16
+ * - `mode: "auto"` (default) → ReAct for short tasks, Plan-Act for
17
+ * long ones, with mid-run replan-fallback when ReAct stalls.
18
+ * - `mode: "always"` → straight Plan-Act
19
+ * - `mode: "never"` → pure ReAct
20
+ *
21
+ * Translation contract (IAgentCore → AgentRunner):
22
+ * - `opts.task` → `runner.task`
23
+ * - `opts.maxSteps` → `runner.maxSteps`
24
+ * - `opts.abortSignal` → `runner.signal`
25
+ * - `opts.onText` → `runner.hooks.onText`
26
+ * - `opts.onReasoning` → `runner.hooks.onReasoning` (planner plan
27
+ * descriptions + per-step VLM rationale; the
28
+ * ACP plugin translates this into
29
+ * `agent_thought_chunk`).
30
+ * - `opts.onTool` → synthesised from `runner.hooks.onTool` /
31
+ * `runner.hooks.onError` (start + end pair).
32
+ * - `opts.onStep` → synthesised from `runner.hooks.onStep`,
33
+ * mapped onto the legacy `VlmStep` shape so
34
+ * ACP `tool_call_update` envelopes keep their
35
+ * historical fields (`thinking`, `action`,
36
+ * `finished`, `message`).
37
+ */
38
+ import type { AgentCoreRunOptions, AgentCoreRunResult, IAgentCore } from "../ports/agent-core.js";
39
+ import { type AgentPlanMode } from "../agent-runtime/index.js";
40
+ import type { IModelAdapter } from "../agent-runtime/adapters/base.js";
41
+ import type { IPlanner } from "../agent-runtime/planner/base.js";
42
+ import type { IMcpRuntime } from "../mcp-client/runtime.js";
43
+ import type { Observation } from "@beeos-ai/device-common";
44
+ export interface AgentRunnerCoreOptions {
45
+ mcpProvider: () => IMcpRuntime;
46
+ /** Already-built adapter (typically `OpenAIAdapter` wrapping AutoGLMPhone). */
47
+ adapter: IModelAdapter;
48
+ /** Optional planner. When omitted the runner is pure ReAct. */
49
+ planner?: IPlanner;
50
+ /** Plan-mode policy. Defaults to `"auto"`. */
51
+ mode?: AgentPlanMode;
52
+ /** Default observation env. Defaults to `"mobile"`. */
53
+ env?: Observation["env"];
54
+ /** Default per-task max steps (overridable via `AgentCoreRunOptions.maxSteps`). */
55
+ defaultMaxSteps?: number;
56
+ /** Default per-task wall-clock timeout (ms). */
57
+ defaultTimeoutMs?: number;
58
+ /** Optional informational tag (e.g. `arouter` / `openrouter`). */
59
+ providerTag?: string;
60
+ }
61
+ export declare class AgentRunnerCore implements IAgentCore {
62
+ private readonly opts;
63
+ private currentModel;
64
+ private currentProvider;
65
+ constructor(opts: AgentRunnerCoreOptions);
66
+ get modelName(): string;
67
+ get providerName(): string | undefined;
68
+ run(opts: AgentCoreRunOptions): Promise<AgentCoreRunResult>;
69
+ setModel(provider: string, model: string): Promise<void>;
70
+ }