@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,464 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP debug server (Fastify) — backed by AgentHost.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Python `DeviceAgentAPI` route table 1:1. Used for local testing,
|
|
5
|
+
* `curl`-friendly debugging, and the device-viewer web client. Production
|
|
6
|
+
* traffic flows through ACP — HTTP is opt-in.
|
|
7
|
+
*
|
|
8
|
+
* Tasks submitted via `POST /tasks` are forwarded to `AgentHost.submitTask`.
|
|
9
|
+
* The server keeps a private `HttpTaskStore` populated from `host.on(...)`
|
|
10
|
+
* events to back the legacy `/tasks/*` polling routes.
|
|
11
|
+
*
|
|
12
|
+
* adb-proxy routes are stubbed: they respond `404 not active` until the proxy
|
|
13
|
+
* is implemented.
|
|
14
|
+
*/
|
|
15
|
+
import Fastify from "fastify";
|
|
16
|
+
import cors from "@fastify/cors";
|
|
17
|
+
import multipart from "@fastify/multipart";
|
|
18
|
+
import { randomUUID } from "node:crypto";
|
|
19
|
+
import * as fs from "node:fs";
|
|
20
|
+
import * as os from "node:os";
|
|
21
|
+
import * as path from "node:path";
|
|
22
|
+
import { pipeline } from "node:stream/promises";
|
|
23
|
+
import { parseAcpAction } from "../../core/actions.js";
|
|
24
|
+
import { AcpError, DeviceError, VlmError } from "../../core/errors.js";
|
|
25
|
+
import { enterCorrelation, getLogger } from "../../logger/index.js";
|
|
26
|
+
/**
|
|
27
|
+
* Minimal task store driven by `AgentHost` events. Owned by the HTTP
|
|
28
|
+
* debug plugin so it can serve `/tasks` polling routes without reaching
|
|
29
|
+
* into the ACP plugin's session state.
|
|
30
|
+
*/
|
|
31
|
+
export class HttpTaskStore {
|
|
32
|
+
tasks = new Map();
|
|
33
|
+
submitted = new Map();
|
|
34
|
+
detach = null;
|
|
35
|
+
attach(host) {
|
|
36
|
+
if (this.detach)
|
|
37
|
+
return;
|
|
38
|
+
this.detach = host.on((ev) => this.onEvent(ev));
|
|
39
|
+
}
|
|
40
|
+
stop() {
|
|
41
|
+
if (this.detach) {
|
|
42
|
+
this.detach();
|
|
43
|
+
this.detach = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Track a task that this store submitted. Tasks submitted by other
|
|
48
|
+
* plugins (e.g. ACP `prompt`) will not appear in `/tasks` listings —
|
|
49
|
+
* the debug HTTP API only shows what was submitted through it.
|
|
50
|
+
*/
|
|
51
|
+
track(task, prompt) {
|
|
52
|
+
const rec = {
|
|
53
|
+
id: task.taskId,
|
|
54
|
+
prompt,
|
|
55
|
+
status: "pending",
|
|
56
|
+
createdAt: Date.now(),
|
|
57
|
+
startedAt: null,
|
|
58
|
+
completedAt: null,
|
|
59
|
+
result: null,
|
|
60
|
+
error: null,
|
|
61
|
+
steps: [],
|
|
62
|
+
};
|
|
63
|
+
this.tasks.set(task.taskId, rec);
|
|
64
|
+
this.submitted.set(task.taskId, task);
|
|
65
|
+
return rec;
|
|
66
|
+
}
|
|
67
|
+
list() {
|
|
68
|
+
return Array.from(this.tasks.values()).sort((a, b) => b.createdAt - a.createdAt);
|
|
69
|
+
}
|
|
70
|
+
get(id) {
|
|
71
|
+
return this.tasks.get(id);
|
|
72
|
+
}
|
|
73
|
+
cancel(id) {
|
|
74
|
+
const t = this.submitted.get(id);
|
|
75
|
+
if (!t)
|
|
76
|
+
return false;
|
|
77
|
+
return t.cancel();
|
|
78
|
+
}
|
|
79
|
+
pruneCompleted(olderThanMs = 60 * 60 * 1000) {
|
|
80
|
+
const cutoff = Date.now() - olderThanMs;
|
|
81
|
+
let removed = 0;
|
|
82
|
+
for (const [id, t] of this.tasks) {
|
|
83
|
+
if (t.status !== "completed" && t.status !== "failed" && t.status !== "cancelled")
|
|
84
|
+
continue;
|
|
85
|
+
const ts = t.completedAt ?? t.createdAt;
|
|
86
|
+
if (ts < cutoff) {
|
|
87
|
+
this.tasks.delete(id);
|
|
88
|
+
this.submitted.delete(id);
|
|
89
|
+
removed += 1;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return removed;
|
|
93
|
+
}
|
|
94
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
95
|
+
onEvent(ev) {
|
|
96
|
+
const rec = this.tasks.get(ev.taskId);
|
|
97
|
+
if (!rec)
|
|
98
|
+
return;
|
|
99
|
+
if (ev.type === "task:start") {
|
|
100
|
+
rec.status = "running";
|
|
101
|
+
rec.startedAt = ev.createdAt;
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (ev.type === "task:step") {
|
|
105
|
+
const step = ev.step;
|
|
106
|
+
const action = step.action ? step.action.kind : step.finished ? "done" : "wait";
|
|
107
|
+
const parameters = step.action ? extractActionParams(step.action) : {};
|
|
108
|
+
rec.steps.push({
|
|
109
|
+
index: step.stepIndex,
|
|
110
|
+
action,
|
|
111
|
+
parameters,
|
|
112
|
+
status: step.finished ? "completed" : "running",
|
|
113
|
+
reasoning: step.thinking,
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (ev.type === "task:end") {
|
|
118
|
+
rec.completedAt = ev.completedAt;
|
|
119
|
+
if (ev.error) {
|
|
120
|
+
rec.status = "failed";
|
|
121
|
+
rec.error = ev.error;
|
|
122
|
+
}
|
|
123
|
+
else if (ev.result.cancelled) {
|
|
124
|
+
rec.status = "cancelled";
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
rec.status = "completed";
|
|
128
|
+
rec.result = ev.result.finalMessage;
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// task:text / task:tool: ignored — HTTP debug API surfaces VlmStep records
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export class HttpServer {
|
|
136
|
+
opts;
|
|
137
|
+
app = null;
|
|
138
|
+
tasks = new HttpTaskStore();
|
|
139
|
+
constructor(opts) {
|
|
140
|
+
this.opts = {
|
|
141
|
+
devices: opts.devices,
|
|
142
|
+
host: opts.host,
|
|
143
|
+
bindHost: opts.bindHost ?? "127.0.0.1",
|
|
144
|
+
port: opts.port ?? 9090,
|
|
145
|
+
log: opts.log ?? false,
|
|
146
|
+
corsOrigins: opts.corsOrigins ?? "",
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async start() {
|
|
150
|
+
this.tasks.attach(this.opts.host);
|
|
151
|
+
const app = Fastify({ logger: this.opts.log });
|
|
152
|
+
await app.register(cors, {
|
|
153
|
+
origin: parseCorsOrigins(this.opts.corsOrigins),
|
|
154
|
+
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
|
|
155
|
+
allowedHeaders: ["Content-Type", "Authorization"],
|
|
156
|
+
maxAge: 86400,
|
|
157
|
+
});
|
|
158
|
+
await app.register(multipart, { limits: { fileSize: 200 * 1024 * 1024 } });
|
|
159
|
+
app.addHook("onRequest", (req, _reply, done) => {
|
|
160
|
+
const incoming = req.headers["x-request-id"] ??
|
|
161
|
+
req.headers["x-correlation-id"];
|
|
162
|
+
const requestId = incoming || randomUUID();
|
|
163
|
+
req.requestId = requestId;
|
|
164
|
+
enterCorrelation({ requestId });
|
|
165
|
+
done();
|
|
166
|
+
});
|
|
167
|
+
app.setErrorHandler(buildErrorHandler);
|
|
168
|
+
this.registerRoutes(app);
|
|
169
|
+
await app.listen({ host: this.opts.bindHost, port: this.opts.port });
|
|
170
|
+
this.app = app;
|
|
171
|
+
}
|
|
172
|
+
async stop() {
|
|
173
|
+
if (this.app)
|
|
174
|
+
await this.app.close();
|
|
175
|
+
this.app = null;
|
|
176
|
+
this.tasks.stop();
|
|
177
|
+
}
|
|
178
|
+
/** For tests: returns the underlying Fastify instance for `inject()` calls. */
|
|
179
|
+
get instance() {
|
|
180
|
+
return this.app;
|
|
181
|
+
}
|
|
182
|
+
registerRoutes(app) {
|
|
183
|
+
const { devices, host } = this.opts;
|
|
184
|
+
const tasks = this.tasks;
|
|
185
|
+
app.get("/health", async () => {
|
|
186
|
+
const reg = devices.get();
|
|
187
|
+
if (!reg)
|
|
188
|
+
return { status: "ok", device: null, connected: false };
|
|
189
|
+
const info = await reg.device.getInfo().catch(() => null);
|
|
190
|
+
return {
|
|
191
|
+
status: "ok",
|
|
192
|
+
device: info?.name ?? reg.id,
|
|
193
|
+
connected: !!info,
|
|
194
|
+
};
|
|
195
|
+
});
|
|
196
|
+
app.get("/device/info", async () => {
|
|
197
|
+
const info = await devices.active().getInfo();
|
|
198
|
+
return {
|
|
199
|
+
type: info.type,
|
|
200
|
+
name: info.name,
|
|
201
|
+
os: info.os,
|
|
202
|
+
version: info.osVersion,
|
|
203
|
+
screen: { width: info.width, height: info.height, density: info.density },
|
|
204
|
+
capabilities: info.capabilities,
|
|
205
|
+
};
|
|
206
|
+
});
|
|
207
|
+
app.get("/device/screenshot", async () => {
|
|
208
|
+
const ss = await devices.active().capture({ raw: true });
|
|
209
|
+
return { image: ss.imageBase64, format: ss.imageFormat };
|
|
210
|
+
});
|
|
211
|
+
app.get("/device/ui-tree", async () => {
|
|
212
|
+
const nodes = await devices.active().getUiTree();
|
|
213
|
+
return { nodes };
|
|
214
|
+
});
|
|
215
|
+
app.get("/device/screenshot.png", async (_req, reply) => {
|
|
216
|
+
const ss = await devices.active().capture({ raw: true });
|
|
217
|
+
const buf = Buffer.from(ss.imageBase64, "base64");
|
|
218
|
+
reply.header("Content-Type", "image/png");
|
|
219
|
+
return reply.send(buf);
|
|
220
|
+
});
|
|
221
|
+
app.post("/device/action", async (req) => {
|
|
222
|
+
const body = (req.body ?? {});
|
|
223
|
+
const action = body.action ?? "";
|
|
224
|
+
const params = body.parameters ?? {};
|
|
225
|
+
if (!action)
|
|
226
|
+
throw new DeviceError("action is required", { subtype: "invalid_args" });
|
|
227
|
+
if (action === "shell") {
|
|
228
|
+
if (process.env.BEEOS_SHELL_ALLOW !== "true") {
|
|
229
|
+
throw new AcpError("shell command execution is disabled — set BEEOS_SHELL_ALLOW=true to opt in", -32603, { category: "shell-disabled" });
|
|
230
|
+
}
|
|
231
|
+
const out = await devices.active().shell(params.command ?? "");
|
|
232
|
+
return { output: out };
|
|
233
|
+
}
|
|
234
|
+
const a = parseAcpAction(action, params);
|
|
235
|
+
await devices.active().apply(a);
|
|
236
|
+
return { ok: true };
|
|
237
|
+
});
|
|
238
|
+
app.post("/tasks", async (req, reply) => {
|
|
239
|
+
const body = (req.body ?? {});
|
|
240
|
+
const instruction = body.instruction ?? "";
|
|
241
|
+
if (!instruction) {
|
|
242
|
+
throw new AcpError("instruction is required", -32602);
|
|
243
|
+
}
|
|
244
|
+
const submitted = host.submitTask(instruction);
|
|
245
|
+
const rec = tasks.track(submitted, instruction);
|
|
246
|
+
return reply.status(201).send({
|
|
247
|
+
task_id: rec.id,
|
|
248
|
+
status: rec.status,
|
|
249
|
+
instruction: rec.prompt,
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
app.get("/tasks", async (req) => {
|
|
253
|
+
const limit = Number((req.query?.limit) ?? 50);
|
|
254
|
+
const list = tasks.list().slice(0, limit);
|
|
255
|
+
return {
|
|
256
|
+
tasks: list.map((t) => ({
|
|
257
|
+
id: t.id,
|
|
258
|
+
instruction: t.prompt,
|
|
259
|
+
status: t.status,
|
|
260
|
+
steps: t.steps.length,
|
|
261
|
+
elapsed: t.completedAt && t.startedAt ? Math.round((t.completedAt - t.startedAt) / 100) / 10 : 0,
|
|
262
|
+
created_at: t.createdAt,
|
|
263
|
+
})),
|
|
264
|
+
};
|
|
265
|
+
});
|
|
266
|
+
app.get("/tasks/:task_id", async (req) => {
|
|
267
|
+
const t = tasks.get(req.params.task_id);
|
|
268
|
+
if (!t)
|
|
269
|
+
throw new AcpError("Task not found", -32004);
|
|
270
|
+
return {
|
|
271
|
+
id: t.id,
|
|
272
|
+
instruction: t.prompt,
|
|
273
|
+
status: t.status,
|
|
274
|
+
steps: t.steps,
|
|
275
|
+
result: t.result,
|
|
276
|
+
error: t.error,
|
|
277
|
+
elapsed: t.completedAt && t.startedAt ? Math.round((t.completedAt - t.startedAt) / 100) / 10 : 0,
|
|
278
|
+
};
|
|
279
|
+
});
|
|
280
|
+
app.post("/tasks/:task_id/cancel", async (req) => {
|
|
281
|
+
const ok = tasks.cancel(req.params.task_id);
|
|
282
|
+
if (!ok)
|
|
283
|
+
throw new AcpError("Task not found or already done", -32004);
|
|
284
|
+
return { ok: true };
|
|
285
|
+
});
|
|
286
|
+
app.post("/prompt", async (req, reply) => {
|
|
287
|
+
const body = (req.body ?? {});
|
|
288
|
+
const instruction = body.instruction ?? body.prompt ?? "";
|
|
289
|
+
const timeoutMs = (body.timeout ?? 120) * 1000;
|
|
290
|
+
if (!instruction)
|
|
291
|
+
throw new AcpError("instruction is required", -32602);
|
|
292
|
+
const submitted = host.submitTask(instruction);
|
|
293
|
+
const rec = tasks.track(submitted, instruction);
|
|
294
|
+
const deadline = Date.now() + timeoutMs;
|
|
295
|
+
while (Date.now() < deadline) {
|
|
296
|
+
const cur = tasks.get(rec.id);
|
|
297
|
+
if (cur && (cur.status === "completed" || cur.status === "failed" || cur.status === "cancelled")) {
|
|
298
|
+
return {
|
|
299
|
+
task_id: cur.id,
|
|
300
|
+
status: cur.status,
|
|
301
|
+
result: cur.result,
|
|
302
|
+
error: cur.error,
|
|
303
|
+
steps: cur.steps,
|
|
304
|
+
elapsed: cur.completedAt && cur.startedAt ? Math.round((cur.completedAt - cur.startedAt) / 100) / 10 : 0,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
await sleep(1000);
|
|
308
|
+
}
|
|
309
|
+
return reply.status(202).send({
|
|
310
|
+
task_id: rec.id,
|
|
311
|
+
status: "running",
|
|
312
|
+
message: "Task still running, check /tasks/{task_id} for updates",
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
app.post("/device/install-apk", async (req) => {
|
|
316
|
+
const data = await req.file({ limits: { fileSize: 200 * 1024 * 1024 } });
|
|
317
|
+
// Accept either `file` (web frontend convention) or `apk` (legacy)
|
|
318
|
+
// multipart field name.
|
|
319
|
+
if (!data || (data.fieldname !== "file" && data.fieldname !== "apk")) {
|
|
320
|
+
throw new DeviceError("multipart field 'file' or 'apk' required", {
|
|
321
|
+
subtype: "invalid_args",
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
const filename = path.basename(data.filename ?? "upload.apk");
|
|
325
|
+
if (!filename.endsWith(".apk")) {
|
|
326
|
+
throw new DeviceError("only .apk files accepted", { subtype: "invalid_args" });
|
|
327
|
+
}
|
|
328
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "beeos_apk_"));
|
|
329
|
+
const tmpPath = path.join(tmpDir, filename);
|
|
330
|
+
let size = 0;
|
|
331
|
+
try {
|
|
332
|
+
await pipeline(data.file, fs.createWriteStream(tmpPath).on("drain", () => undefined));
|
|
333
|
+
size = fs.statSync(tmpPath).size;
|
|
334
|
+
await devices.active().install(tmpPath);
|
|
335
|
+
return { ok: true, filename, size };
|
|
336
|
+
}
|
|
337
|
+
finally {
|
|
338
|
+
try {
|
|
339
|
+
fs.unlinkSync(tmpPath);
|
|
340
|
+
}
|
|
341
|
+
catch { /* ignore */ }
|
|
342
|
+
try {
|
|
343
|
+
fs.rmdirSync(tmpDir);
|
|
344
|
+
}
|
|
345
|
+
catch { /* ignore */ }
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
// ── adb-proxy routes — stub-only until the proxy lands ─────────────────
|
|
349
|
+
const adbStubResp = (reply) => reply.status(404).send({ error: "ADB proxy not active" });
|
|
350
|
+
app.post("/adb-proxy/keys", async (_req, reply) => adbStubResp(reply));
|
|
351
|
+
app.delete("/adb-proxy/keys", async (_req, reply) => adbStubResp(reply));
|
|
352
|
+
app.get("/adb-proxy/status", async () => ({ active: false }));
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function sleep(ms) {
|
|
356
|
+
return new Promise((res) => setTimeout(res, ms));
|
|
357
|
+
}
|
|
358
|
+
function extractActionParams(a) {
|
|
359
|
+
const { kind: _kind, ...rest } = a;
|
|
360
|
+
return rest;
|
|
361
|
+
}
|
|
362
|
+
const DEFAULT_LOCAL_ORIGINS = [
|
|
363
|
+
"http://localhost:3000",
|
|
364
|
+
"http://127.0.0.1:3000",
|
|
365
|
+
"http://localhost:5173",
|
|
366
|
+
"http://127.0.0.1:5173",
|
|
367
|
+
"http://localhost:5174",
|
|
368
|
+
"http://127.0.0.1:5174",
|
|
369
|
+
];
|
|
370
|
+
/** Parse the `corsOrigins` config value into the shape `@fastify/cors` wants. */
|
|
371
|
+
function parseCorsOrigins(raw) {
|
|
372
|
+
const trimmed = (raw ?? "").trim();
|
|
373
|
+
if (trimmed === "*")
|
|
374
|
+
return true;
|
|
375
|
+
if (!trimmed)
|
|
376
|
+
return DEFAULT_LOCAL_ORIGINS;
|
|
377
|
+
const list = trimmed
|
|
378
|
+
.split(",")
|
|
379
|
+
.map((s) => s.trim())
|
|
380
|
+
.filter((s) => s.length > 0);
|
|
381
|
+
return list.length > 0 ? list : DEFAULT_LOCAL_ORIGINS;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Global Fastify error handler — every thrown error funnels through here.
|
|
385
|
+
*
|
|
386
|
+
* Response envelope: `{ error: { code, message, requestId, category?, subtype?, retriable? } }`.
|
|
387
|
+
* The handler also emits a structured log entry that includes the full stack
|
|
388
|
+
* (filtered through pino redact in production via the shared logger).
|
|
389
|
+
*/
|
|
390
|
+
export function buildErrorHandler(err, request, reply) {
|
|
391
|
+
const requestId = request.requestId ?? randomUUID();
|
|
392
|
+
const log = getLogger().child({ component: "http" });
|
|
393
|
+
if (err instanceof AcpError) {
|
|
394
|
+
const status = mapJsonRpcStatus(err.code);
|
|
395
|
+
log.warn({ requestId, route: request.url, code: err.code, err }, "acp error");
|
|
396
|
+
return reply.status(status).send({
|
|
397
|
+
error: {
|
|
398
|
+
code: err.code,
|
|
399
|
+
message: err.message,
|
|
400
|
+
requestId,
|
|
401
|
+
category: "acp",
|
|
402
|
+
...(err.data && typeof err.data === "object" ? { data: err.data } : {}),
|
|
403
|
+
},
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
if (err instanceof DeviceError) {
|
|
407
|
+
const status = err.subtype === "invalid_args" ? 400 : err.subtype === "not_ready" ? 409 : 502;
|
|
408
|
+
log.warn({ requestId, route: request.url, subtype: err.subtype, retriable: err.retriable, err }, "device error");
|
|
409
|
+
return reply.status(status).send({
|
|
410
|
+
error: {
|
|
411
|
+
code: -32001,
|
|
412
|
+
message: err.message,
|
|
413
|
+
requestId,
|
|
414
|
+
category: "device",
|
|
415
|
+
subtype: err.subtype,
|
|
416
|
+
retriable: err.retriable,
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
if (err instanceof VlmError) {
|
|
421
|
+
log.warn({ requestId, route: request.url, retriable: err.retriable, err }, "vlm error");
|
|
422
|
+
return reply.status(502).send({
|
|
423
|
+
error: {
|
|
424
|
+
code: -32002,
|
|
425
|
+
message: err.message,
|
|
426
|
+
requestId,
|
|
427
|
+
category: "vlm",
|
|
428
|
+
retriable: err.retriable,
|
|
429
|
+
},
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
// Fastify validation / 4xx errors carry a `statusCode`.
|
|
433
|
+
const fastifyErr = err;
|
|
434
|
+
if (fastifyErr.statusCode && fastifyErr.statusCode >= 400 && fastifyErr.statusCode < 500) {
|
|
435
|
+
log.warn({ requestId, route: request.url, statusCode: fastifyErr.statusCode, err }, "client error");
|
|
436
|
+
return reply.status(fastifyErr.statusCode).send({
|
|
437
|
+
error: {
|
|
438
|
+
code: -32602,
|
|
439
|
+
message: err.message,
|
|
440
|
+
requestId,
|
|
441
|
+
category: "client",
|
|
442
|
+
},
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
log.error({ requestId, route: request.url, err }, "unhandled error");
|
|
446
|
+
return reply.status(500).send({
|
|
447
|
+
error: {
|
|
448
|
+
code: -32000,
|
|
449
|
+
message: "internal server error",
|
|
450
|
+
requestId,
|
|
451
|
+
category: "internal",
|
|
452
|
+
},
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
function mapJsonRpcStatus(code) {
|
|
456
|
+
if (code === -32700 || code === -32600 || code === -32602)
|
|
457
|
+
return 400;
|
|
458
|
+
if (code === -32601 || code === -32004)
|
|
459
|
+
return 404;
|
|
460
|
+
if (code === -32603)
|
|
461
|
+
return 500;
|
|
462
|
+
return 400;
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/plugins/http-debug/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Port — IAgentCore.
|
|
3
|
+
*
|
|
4
|
+
* Represents the *entire* agent brain (potentially two-layered:
|
|
5
|
+
* outer orchestrator + inner mobile_use VLM loop) as a single black box
|
|
6
|
+
* that the rest of the process talks to. The core is intentionally
|
|
7
|
+
* **unaware** of:
|
|
8
|
+
*
|
|
9
|
+
* - ACP / Bridge / HTTP transports
|
|
10
|
+
* - SessionManager / TaskRunner accounting
|
|
11
|
+
* - the pi-coding-agent vs single-layer details
|
|
12
|
+
*
|
|
13
|
+
* Plugins (ACP, HTTP debug, agent-sync, ...) interact with the core
|
|
14
|
+
* indirectly through `AgentHost`. The host owns the IAgentCore instance
|
|
15
|
+
* and dispatches events; plugins never call `IAgentCore.run` directly.
|
|
16
|
+
*
|
|
17
|
+
* Implementations:
|
|
18
|
+
* - `adapters/agentcore-pi.ts` — pi-coding-agent two-layer orchestrator
|
|
19
|
+
* (default; outer = arouter/kimi-k2.6, inner = autoglm-9b via mobile_use)
|
|
20
|
+
* - `adapters/agentcore-inner-loop.ts` — single-layer fallback that wraps
|
|
21
|
+
* `vlm-inner-loop.ts` (selected by `--legacy-inner`)
|
|
22
|
+
*/
|
|
23
|
+
import type { Action } from "../core/actions.js";
|
|
24
|
+
/**
|
|
25
|
+
* Tool / action event surfaced by the agent core. Mirrors what an outer
|
|
26
|
+
* orchestrator would emit when calling a tool like `mobile_use`, `ground`,
|
|
27
|
+
* or `ui_xml`. For the legacy single-layer adapter, every step's
|
|
28
|
+
* `Action` is also reported as a synthetic `ToolCallEvent` (`name = action.kind`)
|
|
29
|
+
* so consumers can keep one code path.
|
|
30
|
+
*/
|
|
31
|
+
export interface ToolCallEvent {
|
|
32
|
+
/** Stable id local to this run (orchestrator-assigned). */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Tool name, e.g. `mobile_use`, `ground`, or for the legacy adapter: `tap`, `swipe`, ... */
|
|
35
|
+
name: string;
|
|
36
|
+
/** JSON-serializable arguments passed to the tool. */
|
|
37
|
+
args: Record<string, unknown>;
|
|
38
|
+
/**
|
|
39
|
+
* Lifecycle phase:
|
|
40
|
+
* - `start` — tool was invoked
|
|
41
|
+
* - `update` — partial result or progress
|
|
42
|
+
* - `end` — tool finished (`isError` and `result` populated)
|
|
43
|
+
*/
|
|
44
|
+
status: "start" | "update" | "end";
|
|
45
|
+
/** Free-form result blob (string output, structured JSON, …). */
|
|
46
|
+
result?: unknown;
|
|
47
|
+
/** Whether `end` represents a failure. */
|
|
48
|
+
isError?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Per-step record kept for backward compatibility with the legacy
|
|
52
|
+
* `IVlm.runTask` shape. The host translates `ToolCallEvent`s into
|
|
53
|
+
* `VlmStep`-style records for the ACP `tool_call_update` envelope.
|
|
54
|
+
*
|
|
55
|
+
* Re-exported under the `VlmStep` alias from `ports/vlm.ts` so existing
|
|
56
|
+
* imports keep working.
|
|
57
|
+
*/
|
|
58
|
+
export interface VlmStep {
|
|
59
|
+
/** Free-form thinking/commentary, rendered as `agent_message_chunk`. */
|
|
60
|
+
thinking: string;
|
|
61
|
+
/** The action the model wants the device to perform, or null when finished. */
|
|
62
|
+
action: Action | null;
|
|
63
|
+
/** True iff the model declared the task done. */
|
|
64
|
+
finished: boolean;
|
|
65
|
+
/** Final user-facing message (only meaningful when `finished`). */
|
|
66
|
+
message: string | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Structured error surfaced by the agent runtime mid-run. Mirrors the
|
|
70
|
+
* `agent-runtime` `AgentRunHooks.onError` payload one-for-one so the
|
|
71
|
+
* adapter can forward it without re-shaping.
|
|
72
|
+
*
|
|
73
|
+
* `fatal=true` — the runtime gave up (e.g. exhausted retry budget); a
|
|
74
|
+
* `task:end` with an `error` field is about to follow. UI should show
|
|
75
|
+
* a terminal failure notice.
|
|
76
|
+
* `fatal=false` — transient, the runtime will keep retrying. UI should
|
|
77
|
+
* surface a soft "still trying…" hint, throttled by AgentHost so a
|
|
78
|
+
* long retry storm doesn't spam the chat.
|
|
79
|
+
*/
|
|
80
|
+
export interface AgentCoreRunError {
|
|
81
|
+
code: string;
|
|
82
|
+
message: string;
|
|
83
|
+
fatal: boolean;
|
|
84
|
+
}
|
|
85
|
+
/** Optional callbacks an `IAgentCore` may invoke during `run()`. */
|
|
86
|
+
export interface AgentCoreRunCallbacks {
|
|
87
|
+
/** Streaming text delta — surfaced by ACP as `agent_message_chunk`. */
|
|
88
|
+
onText?: (text: string) => void | Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Streaming "thinking" delta — surfaced by ACP as `agent_thought_chunk`
|
|
91
|
+
* (a separate reasoning channel from the user-visible reply). Sources:
|
|
92
|
+
* VLM rationale per step (`AgentLoop`), planner `makePlan` / `replan`
|
|
93
|
+
* descriptions (`PlanExecutor.firePlan`), and any future o1-style
|
|
94
|
+
* reasoning tokens. Distinct from `onText` so the web UI can render
|
|
95
|
+
* thoughts in the reasoning side panel without polluting the main
|
|
96
|
+
* conversation stream.
|
|
97
|
+
*/
|
|
98
|
+
onReasoning?: (text: string) => void | Promise<void>;
|
|
99
|
+
/** Tool call lifecycle — start / update / end. */
|
|
100
|
+
onTool?: (event: ToolCallEvent) => void | Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Per-step record (legacy compatibility). Mainly used by the
|
|
103
|
+
* single-layer `InnerLoopAgent`.
|
|
104
|
+
*/
|
|
105
|
+
onStep?: (step: VlmStep & {
|
|
106
|
+
stepIndex: number;
|
|
107
|
+
}) => void | Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Mid-run error — typically a transient model 5xx that the runner is
|
|
110
|
+
* retrying. AgentHost translates this into a throttled `task:notice`
|
|
111
|
+
* so the UI shows "Model temporarily unavailable, retrying…" instead
|
|
112
|
+
* of going silent for the duration of the retry storm. The runtime
|
|
113
|
+
* adapter MAY also synthesise an `isError=true` `tool_call` for
|
|
114
|
+
* structured audit; the two are independent and complementary.
|
|
115
|
+
*/
|
|
116
|
+
onError?: (err: AgentCoreRunError) => void | Promise<void>;
|
|
117
|
+
}
|
|
118
|
+
/** Result of a single `run()` call. */
|
|
119
|
+
export interface AgentCoreRunResult {
|
|
120
|
+
/** Final user-facing reply. */
|
|
121
|
+
finalMessage: string;
|
|
122
|
+
/** Number of inner steps observed (0 for the pi adapter — opaque tools). */
|
|
123
|
+
steps: number;
|
|
124
|
+
/** True iff the run terminated due to abort / timeout. */
|
|
125
|
+
cancelled: boolean;
|
|
126
|
+
}
|
|
127
|
+
/** Options passed to `IAgentCore.run`. */
|
|
128
|
+
export interface AgentCoreRunOptions extends AgentCoreRunCallbacks {
|
|
129
|
+
/** Natural language task / prompt. */
|
|
130
|
+
task: string;
|
|
131
|
+
/** Soft cap on inner steps (legacy adapter); pi adapter may ignore. */
|
|
132
|
+
maxSteps?: number;
|
|
133
|
+
abortSignal?: AbortSignal;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* IAgentCore — the protocol-agnostic agent brain.
|
|
137
|
+
*
|
|
138
|
+
* Implementations MUST:
|
|
139
|
+
* - be safe to call concurrently with `setModel`; new tasks pick up the
|
|
140
|
+
* new model, in-flight tasks may keep the previous client.
|
|
141
|
+
* - report progress via the supplied callbacks.
|
|
142
|
+
* - honor `abortSignal` and reflect cancellation in the returned
|
|
143
|
+
* `AgentCoreRunResult.cancelled` flag.
|
|
144
|
+
*/
|
|
145
|
+
export interface IAgentCore {
|
|
146
|
+
/** Currently active model id (informational only — e.g. for logs). */
|
|
147
|
+
readonly modelName: string;
|
|
148
|
+
/** Optional human-friendly tag for the active provider/adapter. */
|
|
149
|
+
readonly providerName?: string;
|
|
150
|
+
/** Run a single task to completion. */
|
|
151
|
+
run(opts: AgentCoreRunOptions): Promise<AgentCoreRunResult>;
|
|
152
|
+
/**
|
|
153
|
+
* Hot-swap the underlying model. `provider` is a free-form tag
|
|
154
|
+
* ("openai", "openrouter", "arouter", …) used by the implementation
|
|
155
|
+
* to pick the right adapter; `model` is the upstream id.
|
|
156
|
+
*/
|
|
157
|
+
setModel(provider: string, model: string): Promise<void>;
|
|
158
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-core.js","sourceRoot":"","sources":["../../src/ports/agent-core.ts"],"names":[],"mappings":""}
|