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