@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters/base — minimal contract every model adapter speaks.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python reference at
|
|
5
|
+
* /Users/heat/workspace/deviceagent_research/deviceagent/agent_runtime/adapters/base.py
|
|
6
|
+
*
|
|
7
|
+
* Each adapter is a stateless* function from `(Observation, StepHistory[])`
|
|
8
|
+
* → `Prediction`, where `Prediction.action` is the unified `Action` schema
|
|
9
|
+
* the MCP server understands. Adapters MUST NOT touch the device or the
|
|
10
|
+
* MCP client themselves — they only translate observations into actions.
|
|
11
|
+
*
|
|
12
|
+
* (* "stateless" only WRT the agent loop: an adapter MAY hold its own LLM
|
|
13
|
+
* client, prompt cache, etc. as long as it tolerates concurrent runs by
|
|
14
|
+
* different `AgentLoop` instances.)
|
|
15
|
+
*/
|
|
16
|
+
import type { Action, Observation } from "@beeos-ai/device-common";
|
|
17
|
+
/**
|
|
18
|
+
* Token / cost accounting reported by adapters per prediction. Aggregated by
|
|
19
|
+
* `AgentLoop` over a single run and surfaced via `AgentRunResult.usage`.
|
|
20
|
+
*/
|
|
21
|
+
export interface ModelUsage {
|
|
22
|
+
inputTokens: number;
|
|
23
|
+
outputTokens: number;
|
|
24
|
+
/** Cached prompt tokens, when the provider exposes them (OpenAI / Anthropic). */
|
|
25
|
+
cachedInputTokens?: number;
|
|
26
|
+
/** Approximate USD cost when the adapter knows the price; otherwise undefined. */
|
|
27
|
+
costUsd?: number;
|
|
28
|
+
/** Wall-clock time of the underlying model request. */
|
|
29
|
+
durationMs?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* One entry in the rolling history `AgentLoop` keeps so adapters can ground
|
|
33
|
+
* their next prediction on previous turns. The history is intentionally
|
|
34
|
+
* narrow — adapters that need richer context (full message arrays, image
|
|
35
|
+
* histories, scratchpad memory) should keep that internally.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Outcome of dispatching this step's action. The `AgentLoop` writes one of:
|
|
39
|
+
* - `"ok"` — action dispatched to MCP and returned without error
|
|
40
|
+
* - `"act_failed"` — MCP `/act` rejected (HTTP error, ADB error, …)
|
|
41
|
+
* - `"predict_failed"` — model adapter threw (no action produced)
|
|
42
|
+
* - `"skipped"` — pre-action sanity check vetoed dispatch
|
|
43
|
+
* - `"terminal"` — `done` / `fail` / `call_for_user` short-circuited the loop
|
|
44
|
+
*
|
|
45
|
+
* Used by reflectors and the planner replan path to decide whether to
|
|
46
|
+
* fire follow-up reasoning. Optional for backwards compatibility — older
|
|
47
|
+
* test fixtures predate the field.
|
|
48
|
+
*/
|
|
49
|
+
export type StepOutcome = "ok" | "act_failed" | "predict_failed" | "skipped" | "terminal";
|
|
50
|
+
export interface StepHistory {
|
|
51
|
+
/** 1-based step index. */
|
|
52
|
+
stepIdx: number;
|
|
53
|
+
/** Action emitted in this step (`null` only for the very first observation). */
|
|
54
|
+
action: Action | null;
|
|
55
|
+
/** Free-form rationale or thinking string from the adapter. */
|
|
56
|
+
rationale: string;
|
|
57
|
+
/**
|
|
58
|
+
* Short summary of what the screen looked like (e.g. "Home screen") so
|
|
59
|
+
* adapters that don't keep image history can still reason about progress.
|
|
60
|
+
*/
|
|
61
|
+
observationSummary: string;
|
|
62
|
+
/**
|
|
63
|
+
* Outcome of this step's action dispatch. See {@link StepOutcome}.
|
|
64
|
+
* Optional so existing test fixtures keep validating; new code paths
|
|
65
|
+
* (reflectors, replan context) MUST populate it.
|
|
66
|
+
*/
|
|
67
|
+
actionResult?: StepOutcome;
|
|
68
|
+
/**
|
|
69
|
+
* Adapter-reported confidence in `[0, 1]` for this step's prediction.
|
|
70
|
+
* Copied from `Prediction.confidence`. Optional — adapters that can't
|
|
71
|
+
* estimate confidence (no logprob support) leave it undefined and the
|
|
72
|
+
* reflector falls back to its whitelist-only trigger.
|
|
73
|
+
*/
|
|
74
|
+
confidence?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Populated only when `actionResult === "act_failed"` — the MCP error
|
|
77
|
+
* message / status. Reflectors splice this into their prompt so the
|
|
78
|
+
* grounder can see *why* the previous step failed on retry.
|
|
79
|
+
*/
|
|
80
|
+
actErrorMessage?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface Prediction {
|
|
83
|
+
/** Predicted next action. Use `done` / `fail` / `call_for_user` to stop. */
|
|
84
|
+
action: Action;
|
|
85
|
+
/** Free-form thinking / reasoning string surfaced via hooks. */
|
|
86
|
+
rationale: string;
|
|
87
|
+
/** Adapter's self-reported confidence in [0, 1]; 0.5 when unknown. */
|
|
88
|
+
confidence: number;
|
|
89
|
+
/** Token / cost accounting for this single prediction. */
|
|
90
|
+
usage: ModelUsage;
|
|
91
|
+
/** Raw provider response (model output / tool-call payload). For debug. */
|
|
92
|
+
rawResponse: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Optional hooks an adapter may call during a long inference (streaming
|
|
96
|
+
* tokens, tool-call detected). Wired through to the AgentLoop's `onText`
|
|
97
|
+
* / `onReasoning` hooks.
|
|
98
|
+
*/
|
|
99
|
+
export interface PredictHooks {
|
|
100
|
+
/** Streaming token delta from the underlying model. Best-effort. */
|
|
101
|
+
onText?: (delta: string) => void | Promise<void>;
|
|
102
|
+
/** Reasoning tokens (separate channel for OpenAI o1-style models). */
|
|
103
|
+
onReasoning?: (delta: string) => void | Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
export interface PredictOptions {
|
|
106
|
+
signal?: AbortSignal;
|
|
107
|
+
hooks?: PredictHooks;
|
|
108
|
+
}
|
|
109
|
+
export interface IModelAdapter {
|
|
110
|
+
/** Stable, lower-case identifier used by the registry (e.g. `openai`). */
|
|
111
|
+
readonly name: string;
|
|
112
|
+
/** Human-readable model identifier the adapter is configured against. */
|
|
113
|
+
readonly modelName?: string;
|
|
114
|
+
/**
|
|
115
|
+
* Whether this adapter consumes the per-step `Observation.uiDump`. When
|
|
116
|
+
* `false` (default — matches Open-AutoGLM upstream pure-vision flow,
|
|
117
|
+
* `phone_agent/agent.py:142-169` + `model/client.py:277-290` only feed
|
|
118
|
+
* `screenshot + {"current_app": ...}` text), the `AgentLoop` skips the
|
|
119
|
+
* `mcp.uiDump()` round-trip in `observe()`, saving 1–3 s per step on
|
|
120
|
+
* Android (uiautomator dump is not free on large apps).
|
|
121
|
+
*
|
|
122
|
+
* Set to `true` for adapters that splice the UI hierarchy XML into the
|
|
123
|
+
* model prompt (e.g. GUI-Owl, Qwen-VL with XML fine-tune, generic
|
|
124
|
+
* GPT-4V chains driven by HTML-style hierarchies).
|
|
125
|
+
*/
|
|
126
|
+
readonly consumesUiDump?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Predict the next `Action` given the current observation and history.
|
|
129
|
+
*
|
|
130
|
+
* Implementations SHOULD:
|
|
131
|
+
* - tolerate `signal.aborted` via `AbortSignal.throwIfAborted()` on slow paths
|
|
132
|
+
* - return a `wait` / `done` action rather than throwing for soft failures
|
|
133
|
+
* - report token usage when the provider surfaces it
|
|
134
|
+
*/
|
|
135
|
+
predictAction(observation: Observation, history: StepHistory[], opts?: PredictOptions): Promise<Prediction>;
|
|
136
|
+
/** Optional capability check; `undefined` means "trust the registry". */
|
|
137
|
+
supportsEnv?(env: Observation["env"]): boolean;
|
|
138
|
+
/** Release any underlying resources (HTTP agents, sockets, model pools). */
|
|
139
|
+
close?(): Promise<void>;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Convenience constructor — adapters that produce a fully-typed Action can
|
|
143
|
+
* skip filling in the boilerplate `usage`/`rawResponse` defaults.
|
|
144
|
+
*/
|
|
145
|
+
export declare function makePrediction(action: Action, init?: Partial<Omit<Prediction, "action">>): Prediction;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters/base — minimal contract every model adapter speaks.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python reference at
|
|
5
|
+
* /Users/heat/workspace/deviceagent_research/deviceagent/agent_runtime/adapters/base.py
|
|
6
|
+
*
|
|
7
|
+
* Each adapter is a stateless* function from `(Observation, StepHistory[])`
|
|
8
|
+
* → `Prediction`, where `Prediction.action` is the unified `Action` schema
|
|
9
|
+
* the MCP server understands. Adapters MUST NOT touch the device or the
|
|
10
|
+
* MCP client themselves — they only translate observations into actions.
|
|
11
|
+
*
|
|
12
|
+
* (* "stateless" only WRT the agent loop: an adapter MAY hold its own LLM
|
|
13
|
+
* client, prompt cache, etc. as long as it tolerates concurrent runs by
|
|
14
|
+
* different `AgentLoop` instances.)
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Convenience constructor — adapters that produce a fully-typed Action can
|
|
18
|
+
* skip filling in the boilerplate `usage`/`rawResponse` defaults.
|
|
19
|
+
*/
|
|
20
|
+
export function makePrediction(action, init = {}) {
|
|
21
|
+
return {
|
|
22
|
+
action,
|
|
23
|
+
rationale: init.rationale ?? "",
|
|
24
|
+
confidence: init.confidence ?? action.confidence ?? 0.5,
|
|
25
|
+
usage: init.usage ?? { inputTokens: 0, outputTokens: 0 },
|
|
26
|
+
rawResponse: init.rawResponse ?? "",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8IH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAA4C,EAAE;IAE9C,OAAO;QACL,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG;QACvD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;QACxD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters — barrel + side-effect import to populate the
|
|
3
|
+
* registry with the built-in adapters.
|
|
4
|
+
*
|
|
5
|
+
* Import this file (or any of its consumers, like `agent-runtime/core.ts`)
|
|
6
|
+
* exactly once at process start to ensure `mock`, `openai` and `ui-tars`
|
|
7
|
+
* are visible to `resolveAdapter`.
|
|
8
|
+
*/
|
|
9
|
+
export type { IModelAdapter, ModelUsage, PredictHooks, PredictOptions, Prediction, StepHistory, } from "./base.js";
|
|
10
|
+
export { makePrediction } from "./base.js";
|
|
11
|
+
export { available as availableAdapters, clearAdapters, registerAdapter, resolveAdapter, resolveAdapterSync, type AdapterDescriptor, } from "./registry.js";
|
|
12
|
+
export { MockAdapter, type MockAdapterOptions } from "./mock.js";
|
|
13
|
+
export { OpenAIAdapter, parsedToAction, type OpenAIAdapterOptions } from "./openai.js";
|
|
14
|
+
export { UITarsAdapter } from "./ui-tars.js";
|
|
15
|
+
import "./mock.js";
|
|
16
|
+
import "./openai.js";
|
|
17
|
+
import "./ui-tars.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters — barrel + side-effect import to populate the
|
|
3
|
+
* registry with the built-in adapters.
|
|
4
|
+
*
|
|
5
|
+
* Import this file (or any of its consumers, like `agent-runtime/core.ts`)
|
|
6
|
+
* exactly once at process start to ensure `mock`, `openai` and `ui-tars`
|
|
7
|
+
* are visible to `resolveAdapter`.
|
|
8
|
+
*/
|
|
9
|
+
export { makePrediction } from "./base.js";
|
|
10
|
+
export { available as availableAdapters, clearAdapters, registerAdapter, resolveAdapter, resolveAdapterSync, } from "./registry.js";
|
|
11
|
+
export { MockAdapter } from "./mock.js";
|
|
12
|
+
export { OpenAIAdapter, parsedToAction } from "./openai.js";
|
|
13
|
+
export { UITarsAdapter } from "./ui-tars.js";
|
|
14
|
+
import "./mock.js";
|
|
15
|
+
import "./openai.js";
|
|
16
|
+
import "./ui-tars.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,SAAS,IAAI,iBAAiB,EAC9B,aAAa,EACb,eAAe,EACf,cAAc,EACd,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters/mock — deterministic adapter for tests + dry-runs.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `agent_runtime/adapters/mock.py` from the Python reference.
|
|
5
|
+
*
|
|
6
|
+
* The adapter walks a queued script of `Action`s; once exhausted it emits
|
|
7
|
+
* `done` with a generated final-answer string. This makes AgentLoop tests
|
|
8
|
+
* fully deterministic without touching real LLMs.
|
|
9
|
+
*/
|
|
10
|
+
import { type Action, type Observation } from "@beeos-ai/device-common";
|
|
11
|
+
import type { IModelAdapter, Prediction, StepHistory } from "./base.js";
|
|
12
|
+
export interface MockAdapterOptions {
|
|
13
|
+
/** Pre-baked actions to emit, in order. */
|
|
14
|
+
script?: Action[];
|
|
15
|
+
/**
|
|
16
|
+
* Final action to emit once `script` is exhausted. Defaults to a `done`
|
|
17
|
+
* with `{ message: "mock-finished" }`.
|
|
18
|
+
*/
|
|
19
|
+
fallback?: Action;
|
|
20
|
+
/** Optional rationale prefix (e.g. "[mock]") prepended to each step. */
|
|
21
|
+
rationalePrefix?: string;
|
|
22
|
+
name?: string;
|
|
23
|
+
/**
|
|
24
|
+
* When `true`, the `AgentLoop` will fetch `mcp.uiDump()` per step. Defaults
|
|
25
|
+
* to `false` to mirror the upstream Open-AutoGLM pure-vision flow.
|
|
26
|
+
*/
|
|
27
|
+
consumesUiDump?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare class MockAdapter implements IModelAdapter {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly modelName = "mock";
|
|
32
|
+
readonly consumesUiDump: boolean;
|
|
33
|
+
private readonly script;
|
|
34
|
+
private readonly fallback;
|
|
35
|
+
private readonly rationalePrefix;
|
|
36
|
+
private cursor;
|
|
37
|
+
constructor(opts?: MockAdapterOptions);
|
|
38
|
+
/** Append additional actions to the running script (test helper). */
|
|
39
|
+
enqueue(...actions: Action[]): void;
|
|
40
|
+
/** Reset the script cursor (test helper). */
|
|
41
|
+
reset(): void;
|
|
42
|
+
supportsEnv(): boolean;
|
|
43
|
+
predictAction(_observation: Observation, history: StepHistory[]): Promise<Prediction>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters/mock — deterministic adapter for tests + dry-runs.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `agent_runtime/adapters/mock.py` from the Python reference.
|
|
5
|
+
*
|
|
6
|
+
* The adapter walks a queued script of `Action`s; once exhausted it emits
|
|
7
|
+
* `done` with a generated final-answer string. This makes AgentLoop tests
|
|
8
|
+
* fully deterministic without touching real LLMs.
|
|
9
|
+
*/
|
|
10
|
+
import { makeAction } from "@beeos-ai/device-common";
|
|
11
|
+
import { makePrediction } from "./base.js";
|
|
12
|
+
import { registerAdapter } from "./registry.js";
|
|
13
|
+
export class MockAdapter {
|
|
14
|
+
name;
|
|
15
|
+
modelName = "mock";
|
|
16
|
+
consumesUiDump;
|
|
17
|
+
script;
|
|
18
|
+
fallback;
|
|
19
|
+
rationalePrefix;
|
|
20
|
+
cursor = 0;
|
|
21
|
+
constructor(opts = {}) {
|
|
22
|
+
this.name = opts.name ?? "mock";
|
|
23
|
+
this.script = [...(opts.script ?? [])];
|
|
24
|
+
this.fallback = opts.fallback ?? makeAction("done", { payload: { message: "mock-finished" } });
|
|
25
|
+
this.rationalePrefix = opts.rationalePrefix ?? "";
|
|
26
|
+
this.consumesUiDump = opts.consumesUiDump ?? false;
|
|
27
|
+
}
|
|
28
|
+
/** Append additional actions to the running script (test helper). */
|
|
29
|
+
enqueue(...actions) {
|
|
30
|
+
this.script.push(...actions);
|
|
31
|
+
}
|
|
32
|
+
/** Reset the script cursor (test helper). */
|
|
33
|
+
reset() {
|
|
34
|
+
this.cursor = 0;
|
|
35
|
+
}
|
|
36
|
+
supportsEnv() {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
async predictAction(_observation, history) {
|
|
40
|
+
const action = this.cursor < this.script.length ? this.script[this.cursor++] : structuredClone(this.fallback);
|
|
41
|
+
const rationale = `${this.rationalePrefix}step=${history.length + 1} action=${action.type}`.trim();
|
|
42
|
+
return makePrediction(action, {
|
|
43
|
+
rationale,
|
|
44
|
+
confidence: action.confidence ?? 1,
|
|
45
|
+
usage: { inputTokens: 0, outputTokens: 0 },
|
|
46
|
+
rawResponse: JSON.stringify(action),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
registerAdapter({
|
|
51
|
+
name: "mock",
|
|
52
|
+
factory: () => new MockAdapter(),
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAiC,MAAM,yBAAyB,CAAC;AAGpF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAoBhD,MAAM,OAAO,WAAW;IACb,IAAI,CAAS;IACb,SAAS,GAAG,MAAM,CAAC;IACnB,cAAc,CAAU;IAEhB,MAAM,CAAW;IACjB,QAAQ,CAAS;IACjB,eAAe,CAAS;IACjC,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAY,OAA2B,EAAE;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;IACrD,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,GAAG,OAAiB;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAC7C,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,YAAyB,EAAE,OAAsB;QACnE,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjG,MAAM,SAAS,GACb,GAAG,IAAI,CAAC,eAAe,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACnF,OAAO,cAAc,CAAC,MAAM,EAAE;YAC5B,SAAS;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;YAC1C,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,CAAC;IACd,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE;CACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/adapters/openai — wraps the legacy `OpenAIClient` (which
|
|
3
|
+
* dispatches to the `model/adapters/*` registry) and exposes it under the
|
|
4
|
+
* new `IModelAdapter` contract.
|
|
5
|
+
*
|
|
6
|
+
* The translation has two parts:
|
|
7
|
+
* - request side: build legacy `Message[]` from the new `Observation` +
|
|
8
|
+
* `StepHistory` rolling context, then call `client.request()`.
|
|
9
|
+
* - response side: call `client.parseResponse()` to recover the legacy
|
|
10
|
+
* `ParsedAction`, then map onto the unified `Action` schema via
|
|
11
|
+
* `parsedToAction()`. Coordinate-system metadata is preserved on
|
|
12
|
+
* `payload._coordSystem` so the `AgentLoop` can scale to actual screen
|
|
13
|
+
* pixels before forwarding to the MCP `/act` route.
|
|
14
|
+
*/
|
|
15
|
+
import { type Action, type Observation } from "@beeos-ai/device-common";
|
|
16
|
+
import { type ModelConfig } from "../../model/client.js";
|
|
17
|
+
import type { ModelClient } from "../../model/base.js";
|
|
18
|
+
import { type ImageTransport } from "../../model/image/transport.js";
|
|
19
|
+
import type { ParsedAction } from "../../types.js";
|
|
20
|
+
import type { IModelAdapter, PredictOptions, Prediction, StepHistory } from "./base.js";
|
|
21
|
+
export interface OpenAIAdapterOptions extends ModelConfig {
|
|
22
|
+
/**
|
|
23
|
+
* Force a specific legacy model adapter (`autoglm`, `uitars`, `qwenvl`, ...)
|
|
24
|
+
* — overrides the auto-detection that runs against `modelName`.
|
|
25
|
+
*/
|
|
26
|
+
legacyAdapter?: string;
|
|
27
|
+
/** Display language for system prompts (forwarded to legacy adapters). */
|
|
28
|
+
lang?: "cn" | "en";
|
|
29
|
+
/**
|
|
30
|
+
* Reuse an existing ModelClient instead of constructing a new OpenAIClient.
|
|
31
|
+
* Used by the legacy `Agent` shim to avoid double allocation when an
|
|
32
|
+
* embedder already configured a fully custom client.
|
|
33
|
+
*/
|
|
34
|
+
client?: ModelClient;
|
|
35
|
+
/**
|
|
36
|
+
* Strategy for delivering compressed VLM images to the model. Defaults
|
|
37
|
+
* to `DataUrlTransport` (inline base64) — boot-time wire-up may swap
|
|
38
|
+
* in `HttpUrlTransport` / `FallbackTransport` per fleet config.
|
|
39
|
+
*/
|
|
40
|
+
imageTransport?: ImageTransport;
|
|
41
|
+
/**
|
|
42
|
+
* Override the `consumesUiDump` capability flag derived from the legacy
|
|
43
|
+
* adapter name. Useful when a downstream embedder feeds a UI-XML-aware
|
|
44
|
+
* system prompt into a generic VLM (e.g. GPT-4V) and wants the
|
|
45
|
+
* `AgentLoop` to populate `Observation.uiDump` for it.
|
|
46
|
+
*/
|
|
47
|
+
consumesUiDump?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare class OpenAIAdapter implements IModelAdapter {
|
|
50
|
+
readonly name: string;
|
|
51
|
+
readonly modelName: string;
|
|
52
|
+
readonly consumesUiDump: boolean;
|
|
53
|
+
private readonly client;
|
|
54
|
+
private readonly lang;
|
|
55
|
+
private readonly imageTransport;
|
|
56
|
+
private context;
|
|
57
|
+
private lastStepIdx;
|
|
58
|
+
constructor(opts?: OpenAIAdapterOptions);
|
|
59
|
+
supportsEnv(env: Observation["env"]): boolean;
|
|
60
|
+
predictAction(observation: Observation, history: StepHistory[], opts?: PredictOptions): Promise<Prediction>;
|
|
61
|
+
close(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
export declare function parsedToAction(parsed: ParsedAction): Action;
|