@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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP JSON-RPC 2.0 router.
|
|
3
|
+
*
|
|
4
|
+
* Parses incoming messages from the Bridge transport, dispatches to the
|
|
5
|
+
* matching handler, and returns the wire-format response string (or null for
|
|
6
|
+
* notifications).
|
|
7
|
+
*
|
|
8
|
+
* Wire types come from `@beeos-ai/beeos-types/acp` so the request /
|
|
9
|
+
* notification envelope is byte-compatible with the beeos-claw + web SDK
|
|
10
|
+
* implementations:
|
|
11
|
+
*
|
|
12
|
+
* import type { JsonRpcRequest, JsonRpcNotification } from
|
|
13
|
+
* "@beeos-ai/beeos-types/acp";
|
|
14
|
+
*
|
|
15
|
+
* The handler signatures still take the lenient legacy `AcpMessage` because
|
|
16
|
+
* many handlers tolerate `params` being either present or absent and use
|
|
17
|
+
* `params?.foo` indexing internally — keeping that shape avoids churn while
|
|
18
|
+
* still gaining a strict outer envelope check at parse time.
|
|
19
|
+
*
|
|
20
|
+
* Error mapping (ACP wire v2):
|
|
21
|
+
* - JSON parse error → -32700
|
|
22
|
+
* - method not found → -32601
|
|
23
|
+
* - AcpError → forwarded with its own `code` (default -32000)
|
|
24
|
+
* - DeviceError → -32001 + `data: { category: "device", subtype, retriable }`
|
|
25
|
+
* - VlmError → -32002 + `data: { category: "vlm", retriable }`
|
|
26
|
+
* - other Error → -32000 + `data: { category: "internal" }`
|
|
27
|
+
*/
|
|
28
|
+
import type { IBridgeTransport } from "../../ports/transport.js";
|
|
29
|
+
import { type InitializeOptions } from "./handlers/initialize.js";
|
|
30
|
+
import { AcpDeviceHandlers, type AcpMessage } from "./handlers/device.js";
|
|
31
|
+
import { AcpSessionHandlers } from "./handlers/session.js";
|
|
32
|
+
import { AcpModelHandlers, type ModelListProvider } from "./handlers/models.js";
|
|
33
|
+
import { AcpSkillsHandlers } from "./handlers/skills.js";
|
|
34
|
+
export interface AcpRouterOptions {
|
|
35
|
+
device: AcpDeviceHandlers;
|
|
36
|
+
session: AcpSessionHandlers;
|
|
37
|
+
models?: AcpModelHandlers;
|
|
38
|
+
skills?: AcpSkillsHandlers;
|
|
39
|
+
initialize?: InitializeOptions;
|
|
40
|
+
modelListProvider?: ModelListProvider;
|
|
41
|
+
/** Logger hook — defaults to a no-op. */
|
|
42
|
+
log?: (event: {
|
|
43
|
+
method?: string;
|
|
44
|
+
id?: unknown;
|
|
45
|
+
error?: unknown;
|
|
46
|
+
}) => void;
|
|
47
|
+
}
|
|
48
|
+
export declare class AcpRouter {
|
|
49
|
+
private readonly handlers;
|
|
50
|
+
private readonly notificationHandlers;
|
|
51
|
+
private readonly initOpts;
|
|
52
|
+
private readonly log;
|
|
53
|
+
constructor(opts: AcpRouterOptions);
|
|
54
|
+
handleMessage(raw: string): Promise<string | null>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Map a thrown error to the ACP wire-v2 JSON-RPC error envelope.
|
|
58
|
+
*
|
|
59
|
+
* Exported for unit tests; mirrors the contract documented at the top of this
|
|
60
|
+
* file (see "Error mapping").
|
|
61
|
+
*/
|
|
62
|
+
export declare function mapErrorResponse(id: AcpMessage["id"] | null, err: Error): string;
|
|
63
|
+
/**
|
|
64
|
+
* Wire the router to a transport. Pumps inbound messages into the router and
|
|
65
|
+
* sends responses back. Returns a `dispose` function.
|
|
66
|
+
*/
|
|
67
|
+
export declare function bindRouterToTransport(router: AcpRouter, transport: IBridgeTransport): () => Promise<void>;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP JSON-RPC 2.0 router.
|
|
3
|
+
*
|
|
4
|
+
* Parses incoming messages from the Bridge transport, dispatches to the
|
|
5
|
+
* matching handler, and returns the wire-format response string (or null for
|
|
6
|
+
* notifications).
|
|
7
|
+
*
|
|
8
|
+
* Wire types come from `@beeos-ai/beeos-types/acp` so the request /
|
|
9
|
+
* notification envelope is byte-compatible with the beeos-claw + web SDK
|
|
10
|
+
* implementations:
|
|
11
|
+
*
|
|
12
|
+
* import type { JsonRpcRequest, JsonRpcNotification } from
|
|
13
|
+
* "@beeos-ai/beeos-types/acp";
|
|
14
|
+
*
|
|
15
|
+
* The handler signatures still take the lenient legacy `AcpMessage` because
|
|
16
|
+
* many handlers tolerate `params` being either present or absent and use
|
|
17
|
+
* `params?.foo` indexing internally — keeping that shape avoids churn while
|
|
18
|
+
* still gaining a strict outer envelope check at parse time.
|
|
19
|
+
*
|
|
20
|
+
* Error mapping (ACP wire v2):
|
|
21
|
+
* - JSON parse error → -32700
|
|
22
|
+
* - method not found → -32601
|
|
23
|
+
* - AcpError → forwarded with its own `code` (default -32000)
|
|
24
|
+
* - DeviceError → -32001 + `data: { category: "device", subtype, retriable }`
|
|
25
|
+
* - VlmError → -32002 + `data: { category: "vlm", retriable }`
|
|
26
|
+
* - other Error → -32000 + `data: { category: "internal" }`
|
|
27
|
+
*/
|
|
28
|
+
import { AcpError, DeviceError, VlmError } from "../../core/errors.js";
|
|
29
|
+
import { runWithCorrelation } from "../../logger/index.js";
|
|
30
|
+
import { buildInitializeResponse, } from "./handlers/initialize.js";
|
|
31
|
+
import { AcpModelHandlers } from "./handlers/models.js";
|
|
32
|
+
import { AcpSkillsHandlers } from "./handlers/skills.js";
|
|
33
|
+
export class AcpRouter {
|
|
34
|
+
handlers = new Map();
|
|
35
|
+
notificationHandlers = new Map();
|
|
36
|
+
initOpts;
|
|
37
|
+
log;
|
|
38
|
+
constructor(opts) {
|
|
39
|
+
this.initOpts = opts.initialize ?? {};
|
|
40
|
+
this.log = opts.log ?? (() => undefined);
|
|
41
|
+
const m = opts.models ?? new AcpModelHandlers(opts.modelListProvider);
|
|
42
|
+
const sk = opts.skills ?? new AcpSkillsHandlers();
|
|
43
|
+
this.handlers.set("initialize", async (msg) => {
|
|
44
|
+
const resp = buildInitializeResponse(this.initOpts, (msg.params ?? {}));
|
|
45
|
+
return resp;
|
|
46
|
+
});
|
|
47
|
+
// Lightweight liveness probe. Mirrors the beeos-claw `ping` method —
|
|
48
|
+
// clients use it to verify the daemon's ACP stack is responsive
|
|
49
|
+
// independent of session state. Intentionally takes / returns nothing
|
|
50
|
+
// beyond `{ pong: true }`.
|
|
51
|
+
this.handlers.set("ping", async () => ({ pong: true }));
|
|
52
|
+
this.handlers.set("device/info", (msg) => opts.device.info(msg));
|
|
53
|
+
this.handlers.set("device/screenshot", (msg) => opts.device.screenshot(msg));
|
|
54
|
+
this.handlers.set("device/ui-tree", (msg) => opts.device.uiTree(msg));
|
|
55
|
+
this.handlers.set("device/action", (msg) => opts.device.action(msg));
|
|
56
|
+
this.handlers.set("device/install", (msg) => opts.device.install(msg));
|
|
57
|
+
this.handlers.set("device/shell", (msg) => opts.device.shell(msg));
|
|
58
|
+
this.handlers.set("session/new", (msg) => opts.session.new(msg));
|
|
59
|
+
this.handlers.set("session/load", (msg) => opts.session.load(msg));
|
|
60
|
+
this.handlers.set("session/list", (msg) => opts.session.list(msg));
|
|
61
|
+
this.handlers.set("session/prompt", (msg) => opts.session.prompt(msg));
|
|
62
|
+
this.handlers.set("session/rename", (msg) => opts.session.rename(msg));
|
|
63
|
+
this.handlers.set("session/delete", (msg) => opts.session.delete(msg));
|
|
64
|
+
this.handlers.set("session/clear", (msg) => opts.session.clear(msg));
|
|
65
|
+
this.handlers.set("session/cancel", (msg) => opts.session.cancel(msg));
|
|
66
|
+
this.handlers.set("session/set_mode", (msg) => opts.session.setMode(msg));
|
|
67
|
+
this.handlers.set("session/set_model", (msg) => opts.session.setModel(msg));
|
|
68
|
+
this.handlers.set("models/list", () => m.list());
|
|
69
|
+
this.handlers.set("skills/list", () => sk.list());
|
|
70
|
+
// Notifications (no id, no response)
|
|
71
|
+
this.notificationHandlers.set("session/cancel", (msg) => opts.session.cancel(msg));
|
|
72
|
+
}
|
|
73
|
+
async handleMessage(raw) {
|
|
74
|
+
let msg;
|
|
75
|
+
try {
|
|
76
|
+
msg = JSON.parse(raw);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return errorResponse(null, -32700, "Parse error");
|
|
80
|
+
}
|
|
81
|
+
const method = msg.method ?? "";
|
|
82
|
+
// Notifications (per JSON-RPC 2.0) MUST omit `id`; we treat any
|
|
83
|
+
// missing/null id as a notification regardless of which envelope
|
|
84
|
+
// alias the client picked.
|
|
85
|
+
const id = msg.id;
|
|
86
|
+
const params = typeof msg.params === "object" && msg.params !== null
|
|
87
|
+
? msg.params
|
|
88
|
+
: undefined;
|
|
89
|
+
const sessionId = params?.sessionId ?? undefined;
|
|
90
|
+
const requestId = id !== undefined && id !== null ? `acp-${String(id)}` : undefined;
|
|
91
|
+
this.log({ method, id });
|
|
92
|
+
// The handlers were written against the looser legacy `AcpMessage`
|
|
93
|
+
// shape (params is optional + indexable). Build a single object that
|
|
94
|
+
// satisfies both their input contract and the canonical wire types.
|
|
95
|
+
const legacy = {
|
|
96
|
+
jsonrpc: msg.jsonrpc,
|
|
97
|
+
id: id,
|
|
98
|
+
method,
|
|
99
|
+
params,
|
|
100
|
+
};
|
|
101
|
+
return runWithCorrelation({ requestId, sessionId }, async () => {
|
|
102
|
+
if (id === undefined || id === null) {
|
|
103
|
+
const handler = this.notificationHandlers.get(method);
|
|
104
|
+
if (handler) {
|
|
105
|
+
try {
|
|
106
|
+
await handler(legacy);
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
this.log({ method, error: e });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const handler = this.handlers.get(method);
|
|
115
|
+
if (!handler)
|
|
116
|
+
return errorResponse(id, -32601, `Method not found: ${method}`);
|
|
117
|
+
try {
|
|
118
|
+
const result = await handler(legacy);
|
|
119
|
+
return JSON.stringify({ jsonrpc: "2.0", id, result });
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
const err = e;
|
|
123
|
+
this.log({ method, id, error: err });
|
|
124
|
+
return mapErrorResponse(id, err);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function errorResponse(id, code, message, data) {
|
|
130
|
+
const error = { code, message };
|
|
131
|
+
if (data !== undefined)
|
|
132
|
+
error.data = data;
|
|
133
|
+
return JSON.stringify({ jsonrpc: "2.0", id: id ?? null, error });
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Map a thrown error to the ACP wire-v2 JSON-RPC error envelope.
|
|
137
|
+
*
|
|
138
|
+
* Exported for unit tests; mirrors the contract documented at the top of this
|
|
139
|
+
* file (see "Error mapping").
|
|
140
|
+
*/
|
|
141
|
+
export function mapErrorResponse(id, err) {
|
|
142
|
+
if (err instanceof AcpError) {
|
|
143
|
+
return errorResponse(id, err.code, err.message || "ACP error", err.data);
|
|
144
|
+
}
|
|
145
|
+
if (err instanceof DeviceError) {
|
|
146
|
+
return errorResponse(id, -32001, err.message || "Device error", {
|
|
147
|
+
category: "device",
|
|
148
|
+
subtype: err.subtype,
|
|
149
|
+
retriable: err.retriable,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (err instanceof VlmError) {
|
|
153
|
+
return errorResponse(id, -32002, err.message || "VLM error", {
|
|
154
|
+
category: "vlm",
|
|
155
|
+
retriable: err.retriable,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return errorResponse(id, -32000, err.message ?? String(err), {
|
|
159
|
+
category: "internal",
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Wire the router to a transport. Pumps inbound messages into the router and
|
|
164
|
+
* sends responses back. Returns a `dispose` function.
|
|
165
|
+
*/
|
|
166
|
+
export function bindRouterToTransport(router, transport) {
|
|
167
|
+
const onMessage = async (raw) => {
|
|
168
|
+
const resp = await router.handleMessage(raw);
|
|
169
|
+
if (resp) {
|
|
170
|
+
try {
|
|
171
|
+
await transport.send(resp);
|
|
172
|
+
}
|
|
173
|
+
catch { /* ignore — transport handles reconnect */ }
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
transport.on("message", onMessage);
|
|
177
|
+
return async () => transport.close();
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/inbound/acp/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inbound/cli/fleet-command — `device-agent fleet …` subcommand family.
|
|
3
|
+
*
|
|
4
|
+
* The fleet supervisor process is a single long-running daemon that:
|
|
5
|
+
*
|
|
6
|
+
* - Listens to ADB events (`adb track-devices`)
|
|
7
|
+
* - Watches `~/.beeos/devices.json` for binding changes
|
|
8
|
+
* - For every BOUND device, spawns and supervises:
|
|
9
|
+
* device-mcp-server (local AI tooling)
|
|
10
|
+
* device-agent (BeeOS cloud control daemon, Ed25519 → Agent Gateway)
|
|
11
|
+
* - Exposes a tiny HTTP status server on `127.0.0.1:7950` for the
|
|
12
|
+
* other CLI subcommands (`status`, `devices`, `restart`, `reload`).
|
|
13
|
+
*
|
|
14
|
+
* The CLI splits into two halves:
|
|
15
|
+
*
|
|
16
|
+
* server side: `start [--no-daemon]` → builds the `FleetSupervisor` and
|
|
17
|
+
* serves `/fleet/*` over HTTP.
|
|
18
|
+
* client side: `status | devices | restart | reload` → opens an HTTP
|
|
19
|
+
* connection to the running fleet on `:7950`.
|
|
20
|
+
*
|
|
21
|
+
* All client-side commands fail fast with an actionable hint when the
|
|
22
|
+
* fleet isn't running. There is intentionally NO auto-spawn: the user is
|
|
23
|
+
* expected to start the fleet via `fleet start` (foreground) or `fleet
|
|
24
|
+
* enable` (launchd / systemd, M5 in a follow-up plan).
|
|
25
|
+
*/
|
|
26
|
+
export interface FleetCommandIO {
|
|
27
|
+
stdout?: {
|
|
28
|
+
write(s: string): void;
|
|
29
|
+
};
|
|
30
|
+
stderr?: {
|
|
31
|
+
write(s: string): void;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export declare function fleetCommand(argv: string[], io?: FleetCommandIO): Promise<number>;
|