@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.
- package/.pi/extensions/android-tools.ts +139 -0
- package/.pi/skills/.gitkeep +0 -0
- package/.pi/skills/ground-mobile-fallback/SKILL.md +50 -0
- package/LICENSE +201 -0
- package/dist/action/handler.d.ts +9 -0
- package/dist/action/handler.js +124 -0
- package/dist/action/handler.js.map +1 -0
- package/dist/adapters/agent-gateway-client.d.ts +256 -0
- package/dist/adapters/agent-gateway-client.js +332 -0
- package/dist/adapters/agent-gateway-client.js.map +1 -0
- package/dist/adapters/agentcore-inner-loop.d.ts +29 -0
- package/dist/adapters/agentcore-inner-loop.js +72 -0
- package/dist/adapters/agentcore-inner-loop.js.map +1 -0
- package/dist/adapters/agentcore-pi.d.ts +215 -0
- package/dist/adapters/agentcore-pi.js +464 -0
- package/dist/adapters/agentcore-pi.js.map +1 -0
- package/dist/adapters/agentcore-runner.d.ts +70 -0
- package/dist/adapters/agentcore-runner.js +255 -0
- package/dist/adapters/agentcore-runner.js.map +1 -0
- package/dist/adapters/device-android-adb.d.ts +41 -0
- package/dist/adapters/device-android-adb.js +279 -0
- package/dist/adapters/device-android-adb.js.map +1 -0
- package/dist/adapters/device-desktop.d.ts +37 -0
- package/dist/adapters/device-desktop.js +101 -0
- package/dist/adapters/device-desktop.js.map +1 -0
- package/dist/adapters/identity-file.d.ts +30 -0
- package/dist/adapters/identity-file.js +50 -0
- package/dist/adapters/identity-file.js.map +1 -0
- package/dist/adapters/transport-bridge-ws.d.ts +39 -0
- package/dist/adapters/transport-bridge-ws.js +49 -0
- package/dist/adapters/transport-bridge-ws.js.map +1 -0
- package/dist/adapters/vlm-inner-loop.d.ts +88 -0
- package/dist/adapters/vlm-inner-loop.js +199 -0
- package/dist/adapters/vlm-inner-loop.js.map +1 -0
- package/dist/agent-runtime/adapters/base.d.ts +145 -0
- package/dist/agent-runtime/adapters/base.js +29 -0
- package/dist/agent-runtime/adapters/base.js.map +1 -0
- package/dist/agent-runtime/adapters/index.d.ts +17 -0
- package/dist/agent-runtime/adapters/index.js +17 -0
- package/dist/agent-runtime/adapters/index.js.map +1 -0
- package/dist/agent-runtime/adapters/mock.d.ts +44 -0
- package/dist/agent-runtime/adapters/mock.js +54 -0
- package/dist/agent-runtime/adapters/mock.js.map +1 -0
- package/dist/agent-runtime/adapters/openai.d.ts +63 -0
- package/dist/agent-runtime/adapters/openai.js +302 -0
- package/dist/agent-runtime/adapters/openai.js.map +1 -0
- package/dist/agent-runtime/adapters/registry.d.ts +49 -0
- package/dist/agent-runtime/adapters/registry.js +129 -0
- package/dist/agent-runtime/adapters/registry.js.map +1 -0
- package/dist/agent-runtime/adapters/ui-tars.d.ts +13 -0
- package/dist/agent-runtime/adapters/ui-tars.js +22 -0
- package/dist/agent-runtime/adapters/ui-tars.js.map +1 -0
- package/dist/agent-runtime/agent-runner.d.ts +149 -0
- package/dist/agent-runtime/agent-runner.js +356 -0
- package/dist/agent-runtime/agent-runner.js.map +1 -0
- package/dist/agent-runtime/core.d.ts +170 -0
- package/dist/agent-runtime/core.js +624 -0
- package/dist/agent-runtime/core.js.map +1 -0
- package/dist/agent-runtime/index.d.ts +16 -0
- package/dist/agent-runtime/index.js +17 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/agent-runtime/plan-executor.d.ts +118 -0
- package/dist/agent-runtime/plan-executor.js +501 -0
- package/dist/agent-runtime/plan-executor.js.map +1 -0
- package/dist/agent-runtime/planner/base.d.ts +128 -0
- package/dist/agent-runtime/planner/base.js +157 -0
- package/dist/agent-runtime/planner/base.js.map +1 -0
- package/dist/agent-runtime/planner/llm-planner.d.ts +58 -0
- package/dist/agent-runtime/planner/llm-planner.js +112 -0
- package/dist/agent-runtime/planner/llm-planner.js.map +1 -0
- package/dist/agent-runtime/planner/noop-planner.d.ts +13 -0
- package/dist/agent-runtime/planner/noop-planner.js +30 -0
- package/dist/agent-runtime/planner/noop-planner.js.map +1 -0
- package/dist/agent-runtime/planner/prompts.d.ts +33 -0
- package/dist/agent-runtime/planner/prompts.js +165 -0
- package/dist/agent-runtime/planner/prompts.js.map +1 -0
- package/dist/agent-runtime/reflection.d.ts +81 -0
- package/dist/agent-runtime/reflection.js +189 -0
- package/dist/agent-runtime/reflection.js.map +1 -0
- package/dist/agent-runtime/reflectors/action-reflector.d.ts +97 -0
- package/dist/agent-runtime/reflectors/action-reflector.js +233 -0
- package/dist/agent-runtime/reflectors/action-reflector.js.map +1 -0
- package/dist/agent-runtime/reflectors/policy.d.ts +53 -0
- package/dist/agent-runtime/reflectors/policy.js +106 -0
- package/dist/agent-runtime/reflectors/policy.js.map +1 -0
- package/dist/agent-runtime/reflectors/trajectory-reflector.d.ts +94 -0
- package/dist/agent-runtime/reflectors/trajectory-reflector.js +223 -0
- package/dist/agent-runtime/reflectors/trajectory-reflector.js.map +1 -0
- package/dist/agent-runtime/skills/embedding.d.ts +53 -0
- package/dist/agent-runtime/skills/embedding.js +134 -0
- package/dist/agent-runtime/skills/embedding.js.map +1 -0
- package/dist/agent-runtime/skills/fs-store.d.ts +88 -0
- package/dist/agent-runtime/skills/fs-store.js +483 -0
- package/dist/agent-runtime/skills/fs-store.js.map +1 -0
- package/dist/agent-runtime/skills/index.d.ts +10 -0
- package/dist/agent-runtime/skills/index.js +10 -0
- package/dist/agent-runtime/skills/index.js.map +1 -0
- package/dist/agent-runtime/skills/matcher-evolver.d.ts +88 -0
- package/dist/agent-runtime/skills/matcher-evolver.js +110 -0
- package/dist/agent-runtime/skills/matcher-evolver.js.map +1 -0
- package/dist/agent-runtime/skills/memory-store.d.ts +23 -0
- package/dist/agent-runtime/skills/memory-store.js +94 -0
- package/dist/agent-runtime/skills/memory-store.js.map +1 -0
- package/dist/agent-runtime/skills/normalise.d.ts +40 -0
- package/dist/agent-runtime/skills/normalise.js +152 -0
- package/dist/agent-runtime/skills/normalise.js.map +1 -0
- package/dist/agent-runtime/skills/replay.d.ts +46 -0
- package/dist/agent-runtime/skills/replay.js +106 -0
- package/dist/agent-runtime/skills/replay.js.map +1 -0
- package/dist/agent-runtime/skills/sqlite-store.d.ts +60 -0
- package/dist/agent-runtime/skills/sqlite-store.js +234 -0
- package/dist/agent-runtime/skills/sqlite-store.js.map +1 -0
- package/dist/agent-runtime/skills/types.d.ts +99 -0
- package/dist/agent-runtime/skills/types.js +14 -0
- package/dist/agent-runtime/skills/types.js.map +1 -0
- package/dist/agent.d.ts +110 -0
- package/dist/agent.js +162 -0
- package/dist/agent.js.map +1 -0
- package/dist/api.d.ts +27 -0
- package/dist/api.js +48 -0
- package/dist/api.js.map +1 -0
- package/dist/app/agent-host.d.ts +59 -0
- package/dist/app/agent-host.js +263 -0
- package/dist/app/agent-host.js.map +1 -0
- package/dist/app/device-manager.d.ts +28 -0
- package/dist/app/device-manager.js +64 -0
- package/dist/app/device-manager.js.map +1 -0
- package/dist/app/message-store.d.ts +55 -0
- package/dist/app/message-store.js +99 -0
- package/dist/app/message-store.js.map +1 -0
- package/dist/app/session-manager.d.ts +132 -0
- package/dist/app/session-manager.js +350 -0
- package/dist/app/session-manager.js.map +1 -0
- package/dist/bootstrap.d.ts +94 -0
- package/dist/bootstrap.js +459 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/chat.d.ts +16 -0
- package/dist/chat.js +175 -0
- package/dist/chat.js.map +1 -0
- package/dist/config/loader.d.ts +77 -0
- package/dist/config/loader.js +292 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +162 -0
- package/dist/config/schema.js +243 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/actions.d.ts +60 -0
- package/dist/core/actions.js +120 -0
- package/dist/core/actions.js.map +1 -0
- package/dist/core/errors.d.ts +8 -0
- package/dist/core/errors.js +9 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/screen.d.ts +7 -0
- package/dist/core/screen.js +8 -0
- package/dist/core/screen.js.map +1 -0
- package/dist/core/session.d.ts +42 -0
- package/dist/core/session.js +29 -0
- package/dist/core/session.js.map +1 -0
- package/dist/debug/dump-system-prompt.d.ts +1 -0
- package/dist/debug/dump-system-prompt.js +34 -0
- package/dist/debug/dump-system-prompt.js.map +1 -0
- package/dist/device/android.d.ts +25 -0
- package/dist/device/android.js +231 -0
- package/dist/device/android.js.map +1 -0
- package/dist/device/apps.d.ts +3 -0
- package/dist/device/apps.js +77 -0
- package/dist/device/apps.js.map +1 -0
- package/dist/device/base.d.ts +20 -0
- package/dist/device/base.js +2 -0
- package/dist/device/base.js.map +1 -0
- package/dist/device/ui-xml.d.ts +29 -0
- package/dist/device/ui-xml.js +194 -0
- package/dist/device/ui-xml.js.map +1 -0
- package/dist/fleet/adapters/process/node-process-manager.d.ts +157 -0
- package/dist/fleet/adapters/process/node-process-manager.js +664 -0
- package/dist/fleet/adapters/process/node-process-manager.js.map +1 -0
- package/dist/fleet/adapters/sources/local-adb.d.ts +105 -0
- package/dist/fleet/adapters/sources/local-adb.js +353 -0
- package/dist/fleet/adapters/sources/local-adb.js.map +1 -0
- package/dist/fleet/adapters/sources/remote-adb.d.ts +97 -0
- package/dist/fleet/adapters/sources/remote-adb.js +138 -0
- package/dist/fleet/adapters/sources/remote-adb.js.map +1 -0
- package/dist/fleet/adapters/state/beeos-cli-store.d.ts +72 -0
- package/dist/fleet/adapters/state/beeos-cli-store.js +250 -0
- package/dist/fleet/adapters/state/beeos-cli-store.js.map +1 -0
- package/dist/fleet/adapters/state/port-allocator.d.ts +43 -0
- package/dist/fleet/adapters/state/port-allocator.js +173 -0
- package/dist/fleet/adapters/state/port-allocator.js.map +1 -0
- package/dist/fleet/domain/device.d.ts +138 -0
- package/dist/fleet/domain/device.js +49 -0
- package/dist/fleet/domain/device.js.map +1 -0
- package/dist/fleet/domain/events.d.ts +102 -0
- package/dist/fleet/domain/events.js +15 -0
- package/dist/fleet/domain/events.js.map +1 -0
- package/dist/fleet/domain/fsm.d.ts +122 -0
- package/dist/fleet/domain/fsm.js +475 -0
- package/dist/fleet/domain/fsm.js.map +1 -0
- package/dist/fleet/http/status-client.d.ts +31 -0
- package/dist/fleet/http/status-client.js +115 -0
- package/dist/fleet/http/status-client.js.map +1 -0
- package/dist/fleet/http/status-server.d.ts +64 -0
- package/dist/fleet/http/status-server.js +200 -0
- package/dist/fleet/http/status-server.js.map +1 -0
- package/dist/fleet/index.d.ts +27 -0
- package/dist/fleet/index.js +17 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/installer/index.d.ts +12 -0
- package/dist/fleet/installer/index.js +13 -0
- package/dist/fleet/installer/index.js.map +1 -0
- package/dist/fleet/installer/launchd-mac.d.ts +73 -0
- package/dist/fleet/installer/launchd-mac.js +291 -0
- package/dist/fleet/installer/launchd-mac.js.map +1 -0
- package/dist/fleet/installer/service-spec.d.ts +70 -0
- package/dist/fleet/installer/service-spec.js +43 -0
- package/dist/fleet/installer/service-spec.js.map +1 -0
- package/dist/fleet/installer/spawn-env.d.ts +45 -0
- package/dist/fleet/installer/spawn-env.js +224 -0
- package/dist/fleet/installer/spawn-env.js.map +1 -0
- package/dist/fleet/ports/clock.d.ts +19 -0
- package/dist/fleet/ports/clock.js +26 -0
- package/dist/fleet/ports/clock.js.map +1 -0
- package/dist/fleet/ports/device-source.d.ts +28 -0
- package/dist/fleet/ports/device-source.js +18 -0
- package/dist/fleet/ports/device-source.js.map +1 -0
- package/dist/fleet/ports/process-manager.d.ts +110 -0
- package/dist/fleet/ports/process-manager.js +27 -0
- package/dist/fleet/ports/process-manager.js.map +1 -0
- package/dist/fleet/ports/state-registry.d.ts +49 -0
- package/dist/fleet/ports/state-registry.js +12 -0
- package/dist/fleet/ports/state-registry.js.map +1 -0
- package/dist/fleet/supervisor.d.ts +107 -0
- package/dist/fleet/supervisor.js +508 -0
- package/dist/fleet/supervisor.js.map +1 -0
- package/dist/grounding/grounder.d.ts +46 -0
- package/dist/grounding/grounder.js +82 -0
- package/dist/grounding/grounder.js.map +1 -0
- package/dist/inbound/acp/handlers/device.d.ts +43 -0
- package/dist/inbound/acp/handlers/device.js +153 -0
- package/dist/inbound/acp/handlers/device.js.map +1 -0
- package/dist/inbound/acp/handlers/initialize.d.ts +71 -0
- package/dist/inbound/acp/handlers/initialize.js +53 -0
- package/dist/inbound/acp/handlers/initialize.js.map +1 -0
- package/dist/inbound/acp/handlers/models.d.ts +16 -0
- package/dist/inbound/acp/handlers/models.js +23 -0
- package/dist/inbound/acp/handlers/models.js.map +1 -0
- package/dist/inbound/acp/handlers/session.d.ts +51 -0
- package/dist/inbound/acp/handlers/session.js +61 -0
- package/dist/inbound/acp/handlers/session.js.map +1 -0
- package/dist/inbound/acp/handlers/skills.d.ts +8 -0
- package/dist/inbound/acp/handlers/skills.js +9 -0
- package/dist/inbound/acp/handlers/skills.js.map +1 -0
- package/dist/inbound/acp/notifier.d.ts +35 -0
- package/dist/inbound/acp/notifier.js +45 -0
- package/dist/inbound/acp/notifier.js.map +1 -0
- package/dist/inbound/acp/router.d.ts +67 -0
- package/dist/inbound/acp/router.js +179 -0
- package/dist/inbound/acp/router.js.map +1 -0
- package/dist/inbound/cli/fleet-command.d.ts +34 -0
- package/dist/inbound/cli/fleet-command.js +792 -0
- package/dist/inbound/cli/fleet-command.js.map +1 -0
- package/dist/inbound/cli/main.d.ts +38 -0
- package/dist/inbound/cli/main.js +364 -0
- package/dist/inbound/cli/main.js.map +1 -0
- package/dist/inbound/cli/run-command.d.ts +101 -0
- package/dist/inbound/cli/run-command.js +405 -0
- package/dist/inbound/cli/run-command.js.map +1 -0
- package/dist/inbound/cli/skills-command.d.ts +39 -0
- package/dist/inbound/cli/skills-command.js +333 -0
- package/dist/inbound/cli/skills-command.js.map +1 -0
- package/dist/inbound/http/server.d.ts +7 -0
- package/dist/inbound/http/server.js +8 -0
- package/dist/inbound/http/server.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/index.d.ts +37 -0
- package/dist/logger/index.js +84 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/mcp-client/autospawn.d.ts +67 -0
- package/dist/mcp-client/autospawn.js +173 -0
- package/dist/mcp-client/autospawn.js.map +1 -0
- package/dist/mcp-client/client.d.ts +78 -0
- package/dist/mcp-client/client.js +168 -0
- package/dist/mcp-client/client.js.map +1 -0
- package/dist/mcp-client/index.d.ts +7 -0
- package/dist/mcp-client/index.js +4 -0
- package/dist/mcp-client/index.js.map +1 -0
- package/dist/mcp-client/inproc.d.ts +47 -0
- package/dist/mcp-client/inproc.js +229 -0
- package/dist/mcp-client/inproc.js.map +1 -0
- package/dist/mcp-client/runtime.d.ts +34 -0
- package/dist/mcp-client/runtime.js +15 -0
- package/dist/mcp-client/runtime.js.map +1 -0
- package/dist/model/adapters/autoglm.d.ts +31 -0
- package/dist/model/adapters/autoglm.js +409 -0
- package/dist/model/adapters/autoglm.js.map +1 -0
- package/dist/model/adapters/base.d.ts +13 -0
- package/dist/model/adapters/base.js +27 -0
- package/dist/model/adapters/base.js.map +1 -0
- package/dist/model/adapters/guiowl.d.ts +1 -0
- package/dist/model/adapters/guiowl.js +253 -0
- package/dist/model/adapters/guiowl.js.map +1 -0
- package/dist/model/adapters/index.d.ts +6 -0
- package/dist/model/adapters/index.js +8 -0
- package/dist/model/adapters/index.js.map +1 -0
- package/dist/model/adapters/maiui.d.ts +1 -0
- package/dist/model/adapters/maiui.js +117 -0
- package/dist/model/adapters/maiui.js.map +1 -0
- package/dist/model/adapters/qwenvl.d.ts +1 -0
- package/dist/model/adapters/qwenvl.js +108 -0
- package/dist/model/adapters/qwenvl.js.map +1 -0
- package/dist/model/adapters/showui.d.ts +1 -0
- package/dist/model/adapters/showui.js +132 -0
- package/dist/model/adapters/showui.js.map +1 -0
- package/dist/model/adapters/tool-call.d.ts +6 -0
- package/dist/model/adapters/tool-call.js +102 -0
- package/dist/model/adapters/tool-call.js.map +1 -0
- package/dist/model/adapters/uitars.d.ts +1 -0
- package/dist/model/adapters/uitars.js +180 -0
- package/dist/model/adapters/uitars.js.map +1 -0
- package/dist/model/base.d.ts +32 -0
- package/dist/model/base.js +2 -0
- package/dist/model/base.js.map +1 -0
- package/dist/model/client.d.ts +26 -0
- package/dist/model/client.js +300 -0
- package/dist/model/client.js.map +1 -0
- package/dist/model/image/compress.d.ts +53 -0
- package/dist/model/image/compress.js +89 -0
- package/dist/model/image/compress.js.map +1 -0
- package/dist/model/image/transport.d.ts +134 -0
- package/dist/model/image/transport.js +154 -0
- package/dist/model/image/transport.js.map +1 -0
- package/dist/orchestrator-system-prompt.d.ts +6 -0
- package/dist/orchestrator-system-prompt.js +81 -0
- package/dist/orchestrator-system-prompt.js.map +1 -0
- package/dist/pi-context.d.ts +82 -0
- package/dist/pi-context.js +62 -0
- package/dist/pi-context.js.map +1 -0
- package/dist/pi-local-skills.d.ts +17 -0
- package/dist/pi-local-skills.js +24 -0
- package/dist/pi-local-skills.js.map +1 -0
- package/dist/plugins/acp/index.d.ts +46 -0
- package/dist/plugins/acp/index.js +111 -0
- package/dist/plugins/acp/index.js.map +1 -0
- package/dist/plugins/agent-sync/index.d.ts +40 -0
- package/dist/plugins/agent-sync/index.js +98 -0
- package/dist/plugins/agent-sync/index.js.map +1 -0
- package/dist/plugins/http-debug/index.d.ts +30 -0
- package/dist/plugins/http-debug/index.js +64 -0
- package/dist/plugins/http-debug/index.js.map +1 -0
- package/dist/plugins/http-debug/server.d.ts +92 -0
- package/dist/plugins/http-debug/server.js +464 -0
- package/dist/plugins/http-debug/server.js.map +1 -0
- package/dist/ports/agent-core.d.ts +158 -0
- package/dist/ports/agent-core.js +2 -0
- package/dist/ports/agent-core.js.map +1 -0
- package/dist/ports/agent-host.d.ts +125 -0
- package/dist/ports/agent-host.js +23 -0
- package/dist/ports/agent-host.js.map +1 -0
- package/dist/ports/device.d.ts +53 -0
- package/dist/ports/device.js +13 -0
- package/dist/ports/device.js.map +1 -0
- package/dist/ports/identity.d.ts +22 -0
- package/dist/ports/identity.js +9 -0
- package/dist/ports/identity.js.map +1 -0
- package/dist/ports/plugin.d.ts +62 -0
- package/dist/ports/plugin.js +35 -0
- package/dist/ports/plugin.js.map +1 -0
- package/dist/ports/transport.d.ts +32 -0
- package/dist/ports/transport.js +12 -0
- package/dist/ports/transport.js.map +1 -0
- package/dist/ports/vlm.d.ts +59 -0
- package/dist/ports/vlm.js +14 -0
- package/dist/ports/vlm.js.map +1 -0
- package/dist/test-lan-autoglm.d.ts +7 -0
- package/dist/test-lan-autoglm.js +46 -0
- package/dist/test-lan-autoglm.js.map +1 -0
- package/dist/test-mem-breakdown.d.ts +1 -0
- package/dist/test-mem-breakdown.js +103 -0
- package/dist/test-mem-breakdown.js.map +1 -0
- package/dist/test-mem.d.ts +1 -0
- package/dist/test-mem.js +60 -0
- package/dist/test-mem.js.map +1 -0
- package/dist/test-mobile-use.d.ts +1 -0
- package/dist/test-mobile-use.js +18 -0
- package/dist/test-mobile-use.js.map +1 -0
- package/dist/test-screenshot-loop.d.ts +1 -0
- package/dist/test-screenshot-loop.js +43 -0
- package/dist/test-screenshot-loop.js.map +1 -0
- package/dist/test-screenshot.d.ts +1 -0
- package/dist/test-screenshot.js +10 -0
- package/dist/test-screenshot.js.map +1 -0
- package/dist/test-ui-xml-dump.d.ts +15 -0
- package/dist/test-ui-xml-dump.js +49 -0
- package/dist/test-ui-xml-dump.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap — wire up the agent core, host, and plugins.
|
|
3
|
+
*
|
|
4
|
+
* High-level flow:
|
|
5
|
+
*
|
|
6
|
+
* 1. Load identity (Ed25519 keypair on disk).
|
|
7
|
+
* 2. Discover Bridge URL via Agent Gateway (when not standalone).
|
|
8
|
+
* 3. Build the device adapter (`IDevice`) and a `DeviceManager`.
|
|
9
|
+
* 4. Build the agent core (v0.3.0 default = AgentRunner Hybrid Plan-Act):
|
|
10
|
+
* - default → `AgentRunnerCore`
|
|
11
|
+
* (one shared `AgentRunner` driving the new agent-runtime
|
|
12
|
+
* `AgentLoop` + optional `LLMPlanner` via OpenAI-compat client.
|
|
13
|
+
* Wired to the AutoGLM-Phone family via the `OpenAIAdapter`
|
|
14
|
+
* adapter registry pattern.)
|
|
15
|
+
* - `legacyInner: true` → `InnerLoopAgent` over `InnerLoopVlm`
|
|
16
|
+
* (single-layer fallback; opt-in)
|
|
17
|
+
* - `pi: true` → `PiOrchestratorAgent`
|
|
18
|
+
* (outer text LLM + inner mobile_use VLM; opt-in)
|
|
19
|
+
* 5. Construct `AgentHostImpl` around the agent.
|
|
20
|
+
* 6. Register plugins in this order: agent-sync, http-debug, acp.
|
|
21
|
+
* The acp plugin is started LAST so the bridge connection only opens
|
|
22
|
+
* after agent-sync has registered the device-agent in the platform's
|
|
23
|
+
* Agents directory.
|
|
24
|
+
* 7. Run `init()` on every plugin sequentially, then `start()`.
|
|
25
|
+
* 8. Return a `stop()` function that tears down plugins in reverse order.
|
|
26
|
+
*
|
|
27
|
+
* Custom callers (tests, EdgeAgent embeds, alternate CLIs) can call
|
|
28
|
+
* `bootstrap()` directly with a custom plugin list to compose the agent
|
|
29
|
+
* however they want — every behavior beyond the core (HTTP, ACP, sync,
|
|
30
|
+
* any future skill plugin) is opt-in.
|
|
31
|
+
*/
|
|
32
|
+
import { getLogger } from "./logger/index.js";
|
|
33
|
+
import { loadConfig } from "./config/loader.js";
|
|
34
|
+
import { FileIdentity } from "./adapters/identity-file.js";
|
|
35
|
+
import { AndroidAdbAdapter } from "./adapters/device-android-adb.js";
|
|
36
|
+
import { DesktopAdapter } from "./adapters/device-desktop.js";
|
|
37
|
+
import { InnerLoopVlm, unwrapInnerDevice } from "./adapters/vlm-inner-loop.js";
|
|
38
|
+
import { InnerLoopAgent } from "./adapters/agentcore-inner-loop.js";
|
|
39
|
+
import { PiOrchestratorAgent } from "./adapters/agentcore-pi.js";
|
|
40
|
+
import { AgentRunnerCore } from "./adapters/agentcore-runner.js";
|
|
41
|
+
import { OpenAIAdapter } from "./agent-runtime/adapters/openai.js";
|
|
42
|
+
import { LLMPlanner } from "./agent-runtime/planner/llm-planner.js";
|
|
43
|
+
import { OpenAIClient } from "./model/client.js";
|
|
44
|
+
import { fetchBridgeConfig, } from "./adapters/agent-gateway-client.js";
|
|
45
|
+
import { AgentGatewayFileClient, DataUrlTransport, FallbackTransport, HttpUrlTransport, } from "./model/image/transport.js";
|
|
46
|
+
import { DeviceManager } from "./app/device-manager.js";
|
|
47
|
+
import { AgentHostImpl } from "./app/agent-host.js";
|
|
48
|
+
import { AcpPlugin } from "./plugins/acp/index.js";
|
|
49
|
+
import { HttpDebugPlugin } from "./plugins/http-debug/index.js";
|
|
50
|
+
import { AgentSyncPlugin } from "./plugins/agent-sync/index.js";
|
|
51
|
+
import { HTTPGrounder } from "./grounding/grounder.js";
|
|
52
|
+
import { formatUiXmlToolOutput } from "./device/ui-xml.js";
|
|
53
|
+
import { McpClient, InProcMcpClient, autospawnMcpServer, } from "./mcp-client/index.js";
|
|
54
|
+
export async function bootstrap(opts = {}) {
|
|
55
|
+
const log = opts.logger ?? getLogger();
|
|
56
|
+
const config = { ...loadConfig(opts.flags ?? {}), ...(opts.configOverride ?? {}) };
|
|
57
|
+
log.level = config.logLevel;
|
|
58
|
+
// ── Identity (always loaded — used both for AGW discovery and bridge auth)
|
|
59
|
+
const identity = new FileIdentity({ keyFile: config.keyFile });
|
|
60
|
+
let kp = null;
|
|
61
|
+
if (!config.standalone) {
|
|
62
|
+
kp = await identity.ensure();
|
|
63
|
+
log.info({ fingerprint: await identity.fingerprint(), keyFile: identity.path }, "ed25519 identity ready");
|
|
64
|
+
}
|
|
65
|
+
// ── Bridge URL discovery ────────────────────────────────────────────────
|
|
66
|
+
if (!config.standalone && !config.bridgeUrl) {
|
|
67
|
+
if (!kp || !config.agentGatewayUrl) {
|
|
68
|
+
throw new BootstrapError("bridgeUrl discovery requires --agent-gateway-url and --key (or pass --bridge to override)", 2);
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
log.info({ agentGatewayUrl: config.agentGatewayUrl, region: config.region || "(default)" }, "discovering bridge URL via Agent Gateway");
|
|
72
|
+
const bc = await fetchBridgeConfig({
|
|
73
|
+
agentGatewayUrl: config.agentGatewayUrl,
|
|
74
|
+
region: config.region || undefined,
|
|
75
|
+
identity: kp,
|
|
76
|
+
});
|
|
77
|
+
config.bridgeUrl = bc.url;
|
|
78
|
+
log.info({ bridgeUrl: bc.url, region: bc.region }, "bridge URL resolved");
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
const ae = e;
|
|
82
|
+
throw new BootstrapError(`bridge URL discovery failed: ${ae.message}`, 3, { status: ae.status, body: ae.body });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
log.info({
|
|
86
|
+
mode: config.mode,
|
|
87
|
+
bridge: config.standalone ? "(standalone)" : config.bridgeUrl,
|
|
88
|
+
http: config.httpEnabled ? `${config.httpHost}:${config.httpPort}` : "(off)",
|
|
89
|
+
mcpUrl: config.mcpUrl || "(off)",
|
|
90
|
+
mobileUseModel: config.mobileUse.model || "(default)",
|
|
91
|
+
core: config.legacyInner
|
|
92
|
+
? "InnerLoopAgent (legacyInner=true)"
|
|
93
|
+
: config.pi
|
|
94
|
+
? `PiOrchestratorAgent (pi=true, outer=${config.outer.model})`
|
|
95
|
+
: `AgentRunnerCore (default, plan=${config.planMode})`,
|
|
96
|
+
}, "device-agent booting");
|
|
97
|
+
// ── MCP server: autospawn or probe an external one ──────────────────────
|
|
98
|
+
// Three modes:
|
|
99
|
+
// 1. `mcpAutospawn=true` → fork the sibling `device-mcp-server` here,
|
|
100
|
+
// then point an `McpClient` at the auto-allocated port.
|
|
101
|
+
// 2. `mcpUrl` is set → just probe `/healthz` until ready.
|
|
102
|
+
// 3. Neither → legacy in-process device adapter (deprecated
|
|
103
|
+
// after 0.2.0; warned about below).
|
|
104
|
+
let mcp;
|
|
105
|
+
let mcpHandle;
|
|
106
|
+
if (config.mcpAutospawn) {
|
|
107
|
+
if (config.mcpUrl) {
|
|
108
|
+
log.warn({ mcpUrl: config.mcpUrl }, "mcp: --mcp-autospawn overrides --mcp-url; spawning a fresh sibling");
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
mcpHandle = await autospawnMcpServer({
|
|
112
|
+
backend: config.mode === "desktop" ? "desktop" : "android",
|
|
113
|
+
adbSerial: config.adbSerial,
|
|
114
|
+
logger: log,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
throw new BootstrapError(`MCP autospawn failed: ${e.message}`, 5, { code: "MCP_AUTOSPAWN_FAILED" });
|
|
119
|
+
}
|
|
120
|
+
config.mcpUrl = mcpHandle.url;
|
|
121
|
+
log.info({ mcpUrl: mcpHandle.url, pid: mcpHandle.child.pid }, "mcp: autospawned");
|
|
122
|
+
}
|
|
123
|
+
if (config.mcpUrl) {
|
|
124
|
+
mcp = new McpClient({ baseUrl: config.mcpUrl });
|
|
125
|
+
try {
|
|
126
|
+
const h = await mcp.waitUntilReady({
|
|
127
|
+
attempts: config.mcpReadyAttempts,
|
|
128
|
+
attemptDelayMs: config.mcpReadyAttemptDelayMs,
|
|
129
|
+
});
|
|
130
|
+
log.info({ mcpUrl: config.mcpUrl, backend: h.backend, tools: h.tools?.length ?? 0 }, "mcp server ready");
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
// Tear down a child we just spawned so we don't leak processes on
|
|
134
|
+
// a probe failure during cold start.
|
|
135
|
+
if (mcpHandle) {
|
|
136
|
+
await mcpHandle.stop().catch(() => undefined);
|
|
137
|
+
}
|
|
138
|
+
const ue = e;
|
|
139
|
+
throw new BootstrapError(`MCP server probe failed at ${config.mcpUrl}: ${ue.message}`, 4, { code: ue.code ?? "MCP_UNREACHABLE", url: config.mcpUrl });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
log.warn("mcp: no --mcp-url and --mcp-autospawn=false — using in-process device adapter (deprecated after 0.2.0)");
|
|
144
|
+
}
|
|
145
|
+
// ── Outbound device adapter ──────────────────────────────────────────────
|
|
146
|
+
const device = opts.deviceOverride ??
|
|
147
|
+
(config.mode === "desktop"
|
|
148
|
+
? new DesktopAdapter()
|
|
149
|
+
: new AndroidAdbAdapter({ serial: config.adbSerial }));
|
|
150
|
+
const devices = new DeviceManager();
|
|
151
|
+
await devices.register(device);
|
|
152
|
+
log.info(`device registered: ${(await device.getInfo().catch(() => null))?.name ?? "?"}`);
|
|
153
|
+
// ── MCP runtime resolver ────────────────────────────────────────────────
|
|
154
|
+
// The pi orchestrator and the ACP plugin both consume the device through
|
|
155
|
+
// an `IMcpRuntime` rather than reaching into `DeviceManager` directly.
|
|
156
|
+
// When `config.mcpUrl` is set we hand them the sibling HTTP client;
|
|
157
|
+
// otherwise we wrap the legacy in-process device in `InProcMcpClient`
|
|
158
|
+
// so existing single-process deployments keep working with no behaviour
|
|
159
|
+
// change. The InProc bridge is given the high-level `IDevice` so ACP
|
|
160
|
+
// `device/info`, `device/install`, and `device/shell` work in the
|
|
161
|
+
// legacy path too.
|
|
162
|
+
const mcpProvider = mcp
|
|
163
|
+
? () => mcp
|
|
164
|
+
: () => {
|
|
165
|
+
const idevice = devices.active();
|
|
166
|
+
return new InProcMcpClient(unwrapInnerDevice(idevice), { idevice });
|
|
167
|
+
};
|
|
168
|
+
// ── VLM image transport ─────────────────────────────────────────────────
|
|
169
|
+
// Single source of truth for the screenshot delivery strategy. We build
|
|
170
|
+
// it once here and inject the SAME instance into both the OpenAI adapter
|
|
171
|
+
// (used by AgentRunnerCore) and the HTTPGrounder (used by the pi
|
|
172
|
+
// orchestrator) so a fleet-wide config flip is atomic and metrics
|
|
173
|
+
// attribute uniformly.
|
|
174
|
+
const imageTransport = buildImageTransport(config, kp, log);
|
|
175
|
+
log.info({
|
|
176
|
+
transport: imageTransport.name,
|
|
177
|
+
keyPrefix: config.vlmImageKeyPrefix,
|
|
178
|
+
}, "vlm image transport ready");
|
|
179
|
+
// ── Agent core ───────────────────────────────────────────────────────────
|
|
180
|
+
const agent = opts.agentOverride ?? buildAgentCore(config, devices, mcpProvider, imageTransport, log);
|
|
181
|
+
const host = new AgentHostImpl({
|
|
182
|
+
agent,
|
|
183
|
+
devices,
|
|
184
|
+
identity,
|
|
185
|
+
logger: log,
|
|
186
|
+
defaultMaxSteps: config.maxSteps,
|
|
187
|
+
});
|
|
188
|
+
// ── Plugins ──────────────────────────────────────────────────────────────
|
|
189
|
+
const plugins = opts.pluginsOverride ??
|
|
190
|
+
buildDefaultPlugins({
|
|
191
|
+
config,
|
|
192
|
+
devices,
|
|
193
|
+
identity,
|
|
194
|
+
keypair: kp,
|
|
195
|
+
version: opts.version ?? "0.0.0",
|
|
196
|
+
buildDeclarations: opts.buildDeclarations,
|
|
197
|
+
mcpProvider,
|
|
198
|
+
});
|
|
199
|
+
const ctx = { host, config, log };
|
|
200
|
+
for (const p of plugins) {
|
|
201
|
+
if (p.init)
|
|
202
|
+
await p.init(ctx);
|
|
203
|
+
}
|
|
204
|
+
for (const p of plugins) {
|
|
205
|
+
if (p.start)
|
|
206
|
+
await p.start();
|
|
207
|
+
}
|
|
208
|
+
let stopped = false;
|
|
209
|
+
const stop = async () => {
|
|
210
|
+
if (stopped)
|
|
211
|
+
return;
|
|
212
|
+
stopped = true;
|
|
213
|
+
log.info("shutting down…");
|
|
214
|
+
for (const p of [...plugins].reverse()) {
|
|
215
|
+
if (!p.stop)
|
|
216
|
+
continue;
|
|
217
|
+
try {
|
|
218
|
+
await p.stop();
|
|
219
|
+
}
|
|
220
|
+
catch (e) {
|
|
221
|
+
log.warn({ err: e.message, plugin: p.name }, "plugin stop failed");
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
await host.cancelAll();
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
/* ignore */
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
await devices.disconnectAll();
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
/* ignore */
|
|
235
|
+
}
|
|
236
|
+
if (mcpHandle) {
|
|
237
|
+
try {
|
|
238
|
+
await mcpHandle.stop();
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
log.warn({ err: e.message }, "mcp: autospawn stop failed");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
log.info("bye.");
|
|
245
|
+
};
|
|
246
|
+
return { config, host, devices, identity, plugins, mcp, stop };
|
|
247
|
+
}
|
|
248
|
+
function buildDefaultPlugins(opts) {
|
|
249
|
+
const plugins = [];
|
|
250
|
+
// agent-sync — register with the platform Agents directory (best effort).
|
|
251
|
+
if (opts.config.agentGatewayUrl && opts.keypair && !opts.config.standalone) {
|
|
252
|
+
plugins.push(new AgentSyncPlugin({
|
|
253
|
+
loadIdentity: async () => opts.keypair,
|
|
254
|
+
buildDeclarations: async () => {
|
|
255
|
+
const dev = opts.devices.get();
|
|
256
|
+
const info = dev ? await dev.device.getInfo().catch(() => null) : null;
|
|
257
|
+
if (opts.buildDeclarations) {
|
|
258
|
+
return opts.buildDeclarations(info ? { name: info.name, type: info.type } : null);
|
|
259
|
+
}
|
|
260
|
+
return [defaultDeviceAgentDeclaration({ info, version: opts.version })];
|
|
261
|
+
},
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
// http-debug — local Fastify REST API.
|
|
265
|
+
if (opts.config.httpEnabled && !opts.config.disableHttp) {
|
|
266
|
+
plugins.push(new HttpDebugPlugin({ devices: opts.devices }));
|
|
267
|
+
}
|
|
268
|
+
// acp — Bridge WS + ACP JSON-RPC.
|
|
269
|
+
if (!opts.config.standalone && !opts.config.disableAcp && opts.keypair) {
|
|
270
|
+
plugins.push(new AcpPlugin({ mcpProvider: opts.mcpProvider, keypair: opts.keypair }));
|
|
271
|
+
}
|
|
272
|
+
return plugins;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Resolve the VLM `ImageTransport` from config + identity.
|
|
276
|
+
*
|
|
277
|
+
* Resolution rules:
|
|
278
|
+
*
|
|
279
|
+
* - `vlmImageTransport: "data-url"` (default) → inline base64. Always
|
|
280
|
+
* succeeds, capped at the upstream's body limit (≈5 MB on ARouter).
|
|
281
|
+
* - `vlmImageTransport: "http-url"` AND we have an Ed25519 keypair AND
|
|
282
|
+
* an Agent Gateway URL → `FallbackTransport(HttpUrlTransport, DataUrl)`.
|
|
283
|
+
* The fallback exists so a transient Agent Gateway / S3 failure
|
|
284
|
+
* gracefully degrades into the legacy data-url path instead of
|
|
285
|
+
* killing the whole task.
|
|
286
|
+
* - `vlmImageTransport: "http-url"` but no keypair / standalone mode →
|
|
287
|
+
* log a warning and fall back to `DataUrlTransport`. The standalone
|
|
288
|
+
* CLI cannot mint Ed25519-signed presigns and there is no other
|
|
289
|
+
* auth path for the file presign endpoint.
|
|
290
|
+
*/
|
|
291
|
+
function buildImageTransport(config, kp, log) {
|
|
292
|
+
if (config.vlmImageTransport !== "http-url") {
|
|
293
|
+
return new DataUrlTransport();
|
|
294
|
+
}
|
|
295
|
+
if (!kp || !config.agentGatewayUrl || config.standalone) {
|
|
296
|
+
log.warn({
|
|
297
|
+
standalone: config.standalone,
|
|
298
|
+
hasKeypair: !!kp,
|
|
299
|
+
hasAgentGatewayUrl: !!config.agentGatewayUrl,
|
|
300
|
+
}, "vlmImageTransport=http-url requested but no Ed25519 identity / agent-gateway available; falling back to data-url");
|
|
301
|
+
return new DataUrlTransport();
|
|
302
|
+
}
|
|
303
|
+
const fileClient = new AgentGatewayFileClient({
|
|
304
|
+
agentGatewayUrl: config.agentGatewayUrl,
|
|
305
|
+
identity: kp,
|
|
306
|
+
});
|
|
307
|
+
const primary = new HttpUrlTransport(fileClient, {
|
|
308
|
+
keyPrefix: config.vlmImageKeyPrefix,
|
|
309
|
+
});
|
|
310
|
+
return new FallbackTransport(primary, new DataUrlTransport(), {
|
|
311
|
+
logger: {
|
|
312
|
+
warn: (msg, fields) => log.warn(fields ?? {}, msg),
|
|
313
|
+
},
|
|
314
|
+
// Distinct counter-friendly event so dashboards can compute
|
|
315
|
+
// `transport_fallback_total` without parsing the human-readable
|
|
316
|
+
// warn message. Pairs with the `vlm.image.prepared` event emitted
|
|
317
|
+
// from observationToScreenInfo / grounder.ground to give a complete
|
|
318
|
+
// picture of transport health.
|
|
319
|
+
onFallback: (reason) => {
|
|
320
|
+
log.warn({
|
|
321
|
+
component: "vlm-image",
|
|
322
|
+
event: "transport_fallback",
|
|
323
|
+
primary: primary.name,
|
|
324
|
+
fallback: "data-url",
|
|
325
|
+
error: reason instanceof Error ? reason.message : String(reason),
|
|
326
|
+
}, "vlm.image.transport_fallback");
|
|
327
|
+
},
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
function buildAgentCore(config, devices, mcpProvider, imageTransport, log) {
|
|
331
|
+
// Prefer the explicit `mobileUse` section; fall back to the deprecated
|
|
332
|
+
// top-level vlm* fields the loader still mirrors over.
|
|
333
|
+
const apiKey = config.mobileUse.apiKey || config.vlmApiKey || undefined;
|
|
334
|
+
const baseUrl = config.mobileUse.baseUrl || config.vlmBaseUrl || undefined;
|
|
335
|
+
const modelName = config.mobileUse.model || config.vlmModel || undefined;
|
|
336
|
+
// ── opt-in: legacy single-layer ──────────────────────────────────────
|
|
337
|
+
if (config.legacyInner) {
|
|
338
|
+
log.info("agent core: legacyInner=true → InnerLoopAgent (single-layer)");
|
|
339
|
+
const vlm = new InnerLoopVlm(devices.active(), {
|
|
340
|
+
apiKey,
|
|
341
|
+
baseUrl,
|
|
342
|
+
modelName,
|
|
343
|
+
maxSteps: config.maxSteps,
|
|
344
|
+
});
|
|
345
|
+
return new InnerLoopAgent(vlm);
|
|
346
|
+
}
|
|
347
|
+
// ── opt-in: pi-coding-agent two-layer orchestrator ───────────────────
|
|
348
|
+
if (config.pi) {
|
|
349
|
+
log.info({
|
|
350
|
+
outerModel: config.outer.model,
|
|
351
|
+
mobileUseModel: modelName,
|
|
352
|
+
grounderModel: config.grounder.model,
|
|
353
|
+
}, "agent core: pi=true → PiOrchestratorAgent (two-layer)");
|
|
354
|
+
const vlm = new InnerLoopVlm(devices.active(), {
|
|
355
|
+
apiKey,
|
|
356
|
+
baseUrl,
|
|
357
|
+
modelName,
|
|
358
|
+
maxSteps: config.maxSteps,
|
|
359
|
+
});
|
|
360
|
+
return new PiOrchestratorAgent({
|
|
361
|
+
projectRoot: process.cwd(),
|
|
362
|
+
outer: {
|
|
363
|
+
apiKey: config.outer.apiKey || undefined,
|
|
364
|
+
baseUrl: config.outer.baseUrl || undefined,
|
|
365
|
+
model: config.outer.model || undefined,
|
|
366
|
+
provider: config.outer.provider || undefined,
|
|
367
|
+
},
|
|
368
|
+
logger: log,
|
|
369
|
+
mcpProvider,
|
|
370
|
+
grounderFactory: () => new HTTPGrounder({
|
|
371
|
+
baseUrl: config.grounder.baseUrl || undefined,
|
|
372
|
+
apiKey: config.grounder.apiKey || undefined,
|
|
373
|
+
model: config.grounder.model || undefined,
|
|
374
|
+
imageTransport,
|
|
375
|
+
}),
|
|
376
|
+
mobileUseRunner: async (task, max, signal) => {
|
|
377
|
+
const r = await vlm.runTask({ task, maxSteps: max, abortSignal: signal });
|
|
378
|
+
return r.finalMessage;
|
|
379
|
+
},
|
|
380
|
+
uiXmlRunner: async (q) => {
|
|
381
|
+
const dump = await mcpProvider().uiDump({ format: "raw" });
|
|
382
|
+
if (!dump.supported) {
|
|
383
|
+
return "UI XML is not supported on this backend (use `ground` to locate elements)";
|
|
384
|
+
}
|
|
385
|
+
return formatUiXmlToolOutput(dump.content ?? "", q);
|
|
386
|
+
},
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
// ── default (v0.3.0): AgentRunner Hybrid Plan-Act ────────────────────
|
|
390
|
+
log.info({
|
|
391
|
+
mobileUseModel: modelName,
|
|
392
|
+
planMode: config.planMode,
|
|
393
|
+
plannerModel: config.plannerModel || modelName,
|
|
394
|
+
}, "agent core: AgentRunnerCore (Hybrid Plan-Act, default)");
|
|
395
|
+
const adapterClient = new OpenAIClient({
|
|
396
|
+
apiKey,
|
|
397
|
+
baseUrl,
|
|
398
|
+
modelName,
|
|
399
|
+
});
|
|
400
|
+
const adapter = new OpenAIAdapter({ client: adapterClient, lang: "cn", imageTransport });
|
|
401
|
+
// Optional planner — defaults to using the same OpenAI-compat endpoint
|
|
402
|
+
// as the VLM, but a separate text-only client (`plannerModel`) if the
|
|
403
|
+
// operator points to a cheaper chat-only model.
|
|
404
|
+
let planner;
|
|
405
|
+
if (config.planMode !== "never") {
|
|
406
|
+
const plannerModel = config.plannerModel || modelName || undefined;
|
|
407
|
+
const plannerBaseUrl = config.plannerBaseUrl || baseUrl;
|
|
408
|
+
const plannerApiKey = config.plannerApiKey || apiKey;
|
|
409
|
+
planner = new LLMPlanner({
|
|
410
|
+
modelName: plannerModel,
|
|
411
|
+
baseUrl: plannerBaseUrl,
|
|
412
|
+
apiKey: plannerApiKey,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
return new AgentRunnerCore({
|
|
416
|
+
mcpProvider,
|
|
417
|
+
adapter,
|
|
418
|
+
planner,
|
|
419
|
+
mode: config.planMode,
|
|
420
|
+
env: config.mode === "desktop" ? "computer" : "mobile",
|
|
421
|
+
defaultMaxSteps: config.maxSteps,
|
|
422
|
+
providerTag: config.mobileUse.provider || undefined,
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
function defaultDeviceAgentDeclaration(opts) {
|
|
426
|
+
const deviceName = opts.info?.name ?? "unknown-device";
|
|
427
|
+
const platform = opts.info?.type ?? "device";
|
|
428
|
+
const description = `BeeOS device-agent on ${platform} (${deviceName}). Provides ADB/desktop control, screenshots, UI tree, app install, and shell.`;
|
|
429
|
+
return {
|
|
430
|
+
name: "device",
|
|
431
|
+
description,
|
|
432
|
+
version: opts.version,
|
|
433
|
+
capabilities: { streaming: true },
|
|
434
|
+
skills: [
|
|
435
|
+
{ name: "screenshot", description: "Capture a PNG screenshot of the device screen.", emoji: "📸", outputModes: ["image/png"] },
|
|
436
|
+
{ name: "ui_tree", description: "Dump the current UI hierarchy.", emoji: "🌲", outputModes: ["application/xml", "application/json"] },
|
|
437
|
+
{ name: "tap", description: "Tap at (x, y) screen coordinates.", emoji: "👆" },
|
|
438
|
+
{ name: "swipe", description: "Swipe between two points with optional duration.", emoji: "↔️" },
|
|
439
|
+
{ name: "type_text", description: "Type Unicode text into the focused input.", emoji: "⌨️" },
|
|
440
|
+
{ name: "press_key", description: "Press an Android key code.", emoji: "🔘" },
|
|
441
|
+
{ name: "install_apk", description: "Install an APK file.", emoji: "📦" },
|
|
442
|
+
{ name: "open_app", description: "Launch an app by package or display name.", emoji: "🚀" },
|
|
443
|
+
{ name: "shell", description: "Run a sandboxed shell command (requires BEEOS_SHELL_ALLOW=true).", emoji: "🐚" },
|
|
444
|
+
],
|
|
445
|
+
avatarUrl: "",
|
|
446
|
+
homepage: "",
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
export class BootstrapError extends Error {
|
|
450
|
+
exitCode;
|
|
451
|
+
details;
|
|
452
|
+
constructor(message, exitCode, details) {
|
|
453
|
+
super(message);
|
|
454
|
+
this.exitCode = exitCode;
|
|
455
|
+
this.details = details;
|
|
456
|
+
this.name = "BootstrapError";
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/chat.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone interactive chat CLI for the two-layer agent.
|
|
3
|
+
*
|
|
4
|
+
* Same UX as before — `pnpm run chat` opens a REPL that drives the outer
|
|
5
|
+
* orchestrator (pi-coding-agent) over `ORCH_*` env vars, with the inner
|
|
6
|
+
* `mobile_use` / `ground` / `ui_xml` extensions loaded from
|
|
7
|
+
* `<projectRoot>/.pi/extensions/`. Internally it now goes through the
|
|
8
|
+
* `PiOrchestratorAgent` adapter so there is exactly **one** code path
|
|
9
|
+
* for "construct a pi session with our system prompt and our extension
|
|
10
|
+
* context", shared with the production `bootstrap.ts` flow.
|
|
11
|
+
*
|
|
12
|
+
* `chat.ts` does NOT start the ACP bridge / HTTP debug / agent-sync
|
|
13
|
+
* plugins; it's a developer convenience to manually drive the agent
|
|
14
|
+
* against a local device. For production runs use `pnpm start`.
|
|
15
|
+
*/
|
|
16
|
+
import "dotenv/config";
|