@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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/agent-runner — unified, top-level entry point that the
|
|
3
|
+
* CLI, the ACP session manager, and the HTTP debug routes all share.
|
|
4
|
+
*
|
|
5
|
+
* It implements the **Hybrid Plan-Act strategy** described in the
|
|
6
|
+
* `device-agent autoglm phone driver — v0.3.0` plan:
|
|
7
|
+
*
|
|
8
|
+
* - With a `planner` and `mode: "always"` → straight Plan-Act
|
|
9
|
+
* (`PlanExecutor` from step 0).
|
|
10
|
+
* - With a `planner` and `mode: "auto"` (default):
|
|
11
|
+
* * Long task (≥ `taskMinChars`, default 30) → Plan-Act
|
|
12
|
+
* * Short task → ReAct (`AgentLoop`)
|
|
13
|
+
* with a mid-run **replan fallback**: when the inner loop
|
|
14
|
+
* exhausts an early step budget (`maxSteps * stepsRatioToReplan`,
|
|
15
|
+
* default 1/3) without finishing, we splice in a PlanExecutor
|
|
16
|
+
* seeded with the captured history for the remaining budget.
|
|
17
|
+
* - Without a `planner` (or `mode: "never"`) → AgentLoop only.
|
|
18
|
+
*
|
|
19
|
+
* The runner returns a uniform `AgentRunnerResult` so callers don't need
|
|
20
|
+
* to discriminate between the two execution paths.
|
|
21
|
+
*/
|
|
22
|
+
import type { Observation } from "@beeos-ai/device-common";
|
|
23
|
+
import type { IMcpRuntime } from "../mcp-client/runtime.js";
|
|
24
|
+
import type { IModelAdapter, ModelUsage, StepHistory } from "./adapters/base.js";
|
|
25
|
+
import { type AgentLoopTerminator, type AgentRunHooks } from "./core.js";
|
|
26
|
+
import type { IPlanner } from "./planner/base.js";
|
|
27
|
+
import { type ReflectorPolicy } from "./reflectors/policy.js";
|
|
28
|
+
import { type EmbeddingProvider, type SkillCacheStore, type SkillEvolverOptions, type SkillMatcherOptions, type SkillMatchOutcome, type SkillReplayResult } from "./skills/index.js";
|
|
29
|
+
export type AgentPlanMode = "auto" | "always" | "never";
|
|
30
|
+
export interface AgentRunnerOptions {
|
|
31
|
+
task: string;
|
|
32
|
+
env: Observation["env"];
|
|
33
|
+
mcp: IMcpRuntime;
|
|
34
|
+
adapter: IModelAdapter;
|
|
35
|
+
/** Optional planner. When omitted the runner is pure ReAct. */
|
|
36
|
+
planner?: IPlanner;
|
|
37
|
+
/** Plan-mode policy. Defaults to `"auto"`. */
|
|
38
|
+
mode?: AgentPlanMode;
|
|
39
|
+
/** Minimum task length (in chars) at which `auto` mode escalates to Plan-Act. Defaults to 30. */
|
|
40
|
+
taskMinChars?: number;
|
|
41
|
+
/**
|
|
42
|
+
* In short-task `auto` runs, fraction of `maxSteps` to spend on the
|
|
43
|
+
* pure ReAct phase before triggering the replan-fallback. Defaults
|
|
44
|
+
* to 1/3.
|
|
45
|
+
*/
|
|
46
|
+
stepsRatioToReplan?: number;
|
|
47
|
+
/** Per-call max steps. Defaults to 30. */
|
|
48
|
+
maxSteps?: number;
|
|
49
|
+
/** Wall-clock timeout. Defaults to 5 minutes. */
|
|
50
|
+
timeoutMs?: number;
|
|
51
|
+
/** Maximum number of `planner.replan()` calls inside Plan-Act. */
|
|
52
|
+
maxReplans?: number;
|
|
53
|
+
/** Optional outside cancellation. */
|
|
54
|
+
signal?: AbortSignal;
|
|
55
|
+
/** Streaming hooks forwarded to the inner loops. */
|
|
56
|
+
hooks?: AgentRunHooks;
|
|
57
|
+
/** Wait for human takeover instead of exiting on `call_for_user`. */
|
|
58
|
+
waitForUser?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Phase 1.4 / 2.4 reflector configuration. When omitted the runner
|
|
61
|
+
* resolves a policy from `process.env` (`ACTION_REFLECTOR=…`, etc.)
|
|
62
|
+
* via {@link buildReflectorPolicyFromEnv}, defaulting to *all reflectors
|
|
63
|
+
* off* (legacy behaviour preserved).
|
|
64
|
+
*/
|
|
65
|
+
reflectorPolicy?: ReflectorPolicy;
|
|
66
|
+
/**
|
|
67
|
+
* Phase 3 — skill memory. When provided, the runner consults the
|
|
68
|
+
* {@link SkillCacheStore} at task entry and, if a cached skill clears
|
|
69
|
+
* the cosine + success-rate gates, replays the cached action sequence
|
|
70
|
+
* before falling back to the planner. Always-off when the field is
|
|
71
|
+
* omitted (legacy behaviour preserved).
|
|
72
|
+
*/
|
|
73
|
+
skillMemory?: SkillMemoryConfig;
|
|
74
|
+
}
|
|
75
|
+
export interface SkillMemoryConfig {
|
|
76
|
+
/** Persistent or in-memory store. Required to enable the feature. */
|
|
77
|
+
store: SkillCacheStore;
|
|
78
|
+
/**
|
|
79
|
+
* Logical scope that partitions the cache (typically the foreground
|
|
80
|
+
* Android package or `"desktop"`). When omitted we fall back to
|
|
81
|
+
* `env` (e.g. `"android"`) so skills don't bleed across runtimes.
|
|
82
|
+
*/
|
|
83
|
+
appPackage?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Override for {@link matchSkill} thresholds. Defaults follow the
|
|
86
|
+
* plan: cosine ≥ 0.85, success-rate ≥ 0.7.
|
|
87
|
+
*/
|
|
88
|
+
matcher?: SkillMatcherOptions;
|
|
89
|
+
/** Override for {@link evolveSkill} merge / min-step thresholds. */
|
|
90
|
+
evolver?: SkillEvolverOptions;
|
|
91
|
+
/** Optional embedding provider; defaults to `HashEmbeddingProvider`. */
|
|
92
|
+
embedding?: EmbeddingProvider;
|
|
93
|
+
/**
|
|
94
|
+
* When `true` (default), a cache hit triggers SkillReplay; when
|
|
95
|
+
* `false`, the runner only updates counters / persists new skills.
|
|
96
|
+
* Useful for shadow-mode evaluation.
|
|
97
|
+
*/
|
|
98
|
+
replayOnHit?: boolean;
|
|
99
|
+
}
|
|
100
|
+
export interface AgentRunnerResult {
|
|
101
|
+
ok: boolean;
|
|
102
|
+
finalText: string;
|
|
103
|
+
steps: number;
|
|
104
|
+
usage: ModelUsage;
|
|
105
|
+
history: StepHistory[];
|
|
106
|
+
/** Which top-level path the runner took. */
|
|
107
|
+
mode: "react" | "plan" | "react+replan" | "skill_replay";
|
|
108
|
+
terminator: AgentLoopTerminator;
|
|
109
|
+
cancelled: boolean;
|
|
110
|
+
/** Plan-Act metrics; populated only when `mode !== "react"`. */
|
|
111
|
+
plansEmitted?: number;
|
|
112
|
+
replans?: number;
|
|
113
|
+
reactFallbackUsed?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Phase 2.1 — flat union of notes captured by every inner AgentLoop via
|
|
116
|
+
* the `take_note` action. Empty list when no notes were taken.
|
|
117
|
+
*/
|
|
118
|
+
notes: string[];
|
|
119
|
+
/**
|
|
120
|
+
* Phase 3 — skill-memory diagnostics. Populated only when a
|
|
121
|
+
* `skillMemory` config was supplied to {@link AgentRunner}.
|
|
122
|
+
*/
|
|
123
|
+
skill?: SkillRunDiagnostics;
|
|
124
|
+
}
|
|
125
|
+
export interface SkillRunDiagnostics {
|
|
126
|
+
/** Best match found at task entry, even if replay was declined. */
|
|
127
|
+
match?: SkillMatchOutcome;
|
|
128
|
+
/** When SkillReplay actually fired, the executor result. */
|
|
129
|
+
replay?: SkillReplayResult;
|
|
130
|
+
/** Whether SkillReplay produced the final answer (success). */
|
|
131
|
+
servedFromCache: boolean;
|
|
132
|
+
/** Outcome of {@link evolveSkill} at task end. */
|
|
133
|
+
evolution?: {
|
|
134
|
+
action: string;
|
|
135
|
+
skillId?: string;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export declare class AgentRunner {
|
|
139
|
+
private readonly opts;
|
|
140
|
+
private readonly reflector;
|
|
141
|
+
constructor(opts: AgentRunnerOptions);
|
|
142
|
+
run(): Promise<AgentRunnerResult>;
|
|
143
|
+
private recordEvolution;
|
|
144
|
+
private runWithoutSkillMemory;
|
|
145
|
+
private runReact;
|
|
146
|
+
private runPlan;
|
|
147
|
+
private runReactWithReplanFallback;
|
|
148
|
+
private spawnLoop;
|
|
149
|
+
}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-runtime/agent-runner — unified, top-level entry point that the
|
|
3
|
+
* CLI, the ACP session manager, and the HTTP debug routes all share.
|
|
4
|
+
*
|
|
5
|
+
* It implements the **Hybrid Plan-Act strategy** described in the
|
|
6
|
+
* `device-agent autoglm phone driver — v0.3.0` plan:
|
|
7
|
+
*
|
|
8
|
+
* - With a `planner` and `mode: "always"` → straight Plan-Act
|
|
9
|
+
* (`PlanExecutor` from step 0).
|
|
10
|
+
* - With a `planner` and `mode: "auto"` (default):
|
|
11
|
+
* * Long task (≥ `taskMinChars`, default 30) → Plan-Act
|
|
12
|
+
* * Short task → ReAct (`AgentLoop`)
|
|
13
|
+
* with a mid-run **replan fallback**: when the inner loop
|
|
14
|
+
* exhausts an early step budget (`maxSteps * stepsRatioToReplan`,
|
|
15
|
+
* default 1/3) without finishing, we splice in a PlanExecutor
|
|
16
|
+
* seeded with the captured history for the remaining budget.
|
|
17
|
+
* - Without a `planner` (or `mode: "never"`) → AgentLoop only.
|
|
18
|
+
*
|
|
19
|
+
* The runner returns a uniform `AgentRunnerResult` so callers don't need
|
|
20
|
+
* to discriminate between the two execution paths.
|
|
21
|
+
*/
|
|
22
|
+
import { getLogger } from "../logger/index.js";
|
|
23
|
+
import { AgentLoop, } from "./core.js";
|
|
24
|
+
import { PlanExecutor, } from "./plan-executor.js";
|
|
25
|
+
import { HierarchicalReflector } from "./reflection.js";
|
|
26
|
+
import { buildReflectorPolicyFromEnv, resolveActionReflector, resolveTrajectoryReflector, } from "./reflectors/policy.js";
|
|
27
|
+
import { evolveSkill, matchSkill, replaySkill, } from "./skills/index.js";
|
|
28
|
+
const DEFAULT_TASK_MIN_CHARS = 30;
|
|
29
|
+
const DEFAULT_STEPS_RATIO_TO_REPLAN = 1 / 3;
|
|
30
|
+
const DEFAULT_MAX_STEPS = 30;
|
|
31
|
+
const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;
|
|
32
|
+
const DEFAULT_MAX_REPLANS = 2;
|
|
33
|
+
const SUCCESS_TERMINATORS = new Set(["done"]);
|
|
34
|
+
const FAIL_FAST_TERMINATORS = new Set([
|
|
35
|
+
"fail",
|
|
36
|
+
"call_for_user",
|
|
37
|
+
"cancelled",
|
|
38
|
+
]);
|
|
39
|
+
export class AgentRunner {
|
|
40
|
+
opts;
|
|
41
|
+
reflector;
|
|
42
|
+
constructor(opts) {
|
|
43
|
+
this.opts = opts;
|
|
44
|
+
const policy = opts.reflectorPolicy ?? buildReflectorPolicyFromEnv();
|
|
45
|
+
this.reflector = new HierarchicalReflector({
|
|
46
|
+
adapter: opts.adapter,
|
|
47
|
+
actionReflector: resolveActionReflector(policy),
|
|
48
|
+
trajectoryReflector: resolveTrajectoryReflector(policy),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async run() {
|
|
52
|
+
const skillMem = this.opts.skillMemory;
|
|
53
|
+
if (!skillMem) {
|
|
54
|
+
return this.runWithoutSkillMemory();
|
|
55
|
+
}
|
|
56
|
+
// ── Phase 3.2 — skill-memory wrapper ──────────────────────────────
|
|
57
|
+
const log = getLogger().child({ component: "agent-runner.skills" });
|
|
58
|
+
const appPackage = skillMem.appPackage ?? this.opts.env;
|
|
59
|
+
const replayOnHit = skillMem.replayOnHit ?? true;
|
|
60
|
+
const diag = { servedFromCache: false };
|
|
61
|
+
let match;
|
|
62
|
+
try {
|
|
63
|
+
match = await matchSkill({
|
|
64
|
+
store: skillMem.store,
|
|
65
|
+
appPackage,
|
|
66
|
+
taskSummary: this.opts.task,
|
|
67
|
+
embedding: skillMem.embedding,
|
|
68
|
+
options: skillMem.matcher,
|
|
69
|
+
});
|
|
70
|
+
diag.match = match;
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
log.warn({ err: e instanceof Error ? e.message : String(e) }, "skill.match-failed");
|
|
74
|
+
}
|
|
75
|
+
if (match?.replay && match.best && replayOnHit) {
|
|
76
|
+
const cached = match.best.skill;
|
|
77
|
+
log.info({
|
|
78
|
+
skillId: cached.id,
|
|
79
|
+
score: match.best.score,
|
|
80
|
+
steps: cached.actionSequence.length,
|
|
81
|
+
appPackage,
|
|
82
|
+
}, "skill.replay-start");
|
|
83
|
+
const maxSteps = this.opts.maxSteps ?? DEFAULT_MAX_STEPS;
|
|
84
|
+
const timeoutMs = this.opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
85
|
+
const replay = await replaySkill({
|
|
86
|
+
mcp: this.opts.mcp,
|
|
87
|
+
env: this.opts.env,
|
|
88
|
+
sequence: cached.actionSequence,
|
|
89
|
+
maxSteps: Math.max(cached.actionSequence.length, maxSteps),
|
|
90
|
+
timeoutMs,
|
|
91
|
+
signal: this.opts.signal,
|
|
92
|
+
hooks: this.opts.hooks,
|
|
93
|
+
});
|
|
94
|
+
diag.replay = replay;
|
|
95
|
+
if (replay.success) {
|
|
96
|
+
diag.servedFromCache = true;
|
|
97
|
+
const evolved = await this.recordEvolution({
|
|
98
|
+
rawSequence: cached.actionSequence,
|
|
99
|
+
success: true,
|
|
100
|
+
replayedSkillId: cached.id,
|
|
101
|
+
appPackage,
|
|
102
|
+
});
|
|
103
|
+
diag.evolution = evolved;
|
|
104
|
+
const usage = { inputTokens: 0, outputTokens: 0, costUsd: 0 };
|
|
105
|
+
return {
|
|
106
|
+
ok: true,
|
|
107
|
+
finalText: "skill-replay completed",
|
|
108
|
+
steps: replay.stepsRun,
|
|
109
|
+
usage,
|
|
110
|
+
history: [],
|
|
111
|
+
mode: "skill_replay",
|
|
112
|
+
terminator: "done",
|
|
113
|
+
cancelled: false,
|
|
114
|
+
notes: [],
|
|
115
|
+
skill: diag,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// Replay failed → record the failure and fall through to the
|
|
119
|
+
// normal Plan-Act / ReAct path.
|
|
120
|
+
const evolvedFail = await this.recordEvolution({
|
|
121
|
+
rawSequence: cached.actionSequence,
|
|
122
|
+
success: false,
|
|
123
|
+
replayedSkillId: cached.id,
|
|
124
|
+
appPackage,
|
|
125
|
+
});
|
|
126
|
+
diag.evolution = evolvedFail;
|
|
127
|
+
log.info({
|
|
128
|
+
skillId: cached.id,
|
|
129
|
+
failedAt: replay.failedAt?.stepIdx,
|
|
130
|
+
reason: replay.failedAt?.reason,
|
|
131
|
+
}, "skill.replay-bailed");
|
|
132
|
+
}
|
|
133
|
+
const baseline = await this.runWithoutSkillMemory();
|
|
134
|
+
// Only attempt to evolve when we didn't already record a replay
|
|
135
|
+
// outcome.
|
|
136
|
+
if (!diag.evolution) {
|
|
137
|
+
try {
|
|
138
|
+
const rawSequence = baseline.history
|
|
139
|
+
.map((h) => h.action)
|
|
140
|
+
.filter((a) => !!a);
|
|
141
|
+
const evolved = await this.recordEvolution({
|
|
142
|
+
rawSequence,
|
|
143
|
+
success: baseline.ok,
|
|
144
|
+
appPackage,
|
|
145
|
+
});
|
|
146
|
+
diag.evolution = evolved;
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
log.warn({ err: e instanceof Error ? e.message : String(e) }, "skill.evolve-failed");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { ...baseline, skill: diag };
|
|
153
|
+
}
|
|
154
|
+
async recordEvolution(args) {
|
|
155
|
+
const skillMem = this.opts.skillMemory;
|
|
156
|
+
if (!skillMem)
|
|
157
|
+
return undefined;
|
|
158
|
+
return evolveSkill({
|
|
159
|
+
store: skillMem.store,
|
|
160
|
+
appPackage: args.appPackage,
|
|
161
|
+
taskSummary: this.opts.task,
|
|
162
|
+
rawSequence: args.rawSequence,
|
|
163
|
+
success: args.success,
|
|
164
|
+
replayedSkillId: args.replayedSkillId,
|
|
165
|
+
embedding: skillMem.embedding,
|
|
166
|
+
options: skillMem.evolver,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async runWithoutSkillMemory() {
|
|
170
|
+
const mode = this.opts.mode ?? "auto";
|
|
171
|
+
const maxSteps = this.opts.maxSteps ?? DEFAULT_MAX_STEPS;
|
|
172
|
+
const timeoutMs = this.opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
173
|
+
const taskMinChars = this.opts.taskMinChars ?? DEFAULT_TASK_MIN_CHARS;
|
|
174
|
+
const ratio = this.opts.stepsRatioToReplan ?? DEFAULT_STEPS_RATIO_TO_REPLAN;
|
|
175
|
+
const maxReplans = this.opts.maxReplans ?? DEFAULT_MAX_REPLANS;
|
|
176
|
+
const planner = this.opts.planner;
|
|
177
|
+
const taskLen = this.opts.task.length;
|
|
178
|
+
// ── Resolve effective execution mode ───────────────────────────────
|
|
179
|
+
if (mode === "always") {
|
|
180
|
+
if (!planner) {
|
|
181
|
+
throw new Error("AgentRunner: mode=\"always\" requires a planner");
|
|
182
|
+
}
|
|
183
|
+
return this.runPlan({ maxSteps, timeoutMs, maxReplans, planner });
|
|
184
|
+
}
|
|
185
|
+
if (mode === "never" || !planner) {
|
|
186
|
+
return this.runReact({ maxSteps, timeoutMs });
|
|
187
|
+
}
|
|
188
|
+
// mode === "auto"
|
|
189
|
+
if (taskLen >= taskMinChars) {
|
|
190
|
+
return this.runPlan({ maxSteps, timeoutMs, maxReplans, planner });
|
|
191
|
+
}
|
|
192
|
+
// Short task — ReAct first, with mid-run replan fallback.
|
|
193
|
+
return this.runReactWithReplanFallback({
|
|
194
|
+
maxSteps,
|
|
195
|
+
timeoutMs,
|
|
196
|
+
maxReplans,
|
|
197
|
+
planner,
|
|
198
|
+
ratio,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
/* ───────────────────────────── pure ReAct ────────────────────────── */
|
|
202
|
+
async runReact(args) {
|
|
203
|
+
const result = await this.spawnLoop({
|
|
204
|
+
task: this.opts.task,
|
|
205
|
+
maxSteps: args.maxSteps,
|
|
206
|
+
timeoutMs: args.timeoutMs,
|
|
207
|
+
});
|
|
208
|
+
return {
|
|
209
|
+
ok: SUCCESS_TERMINATORS.has(result.terminator),
|
|
210
|
+
finalText: result.finalText,
|
|
211
|
+
steps: result.steps,
|
|
212
|
+
usage: result.usage,
|
|
213
|
+
history: result.history,
|
|
214
|
+
mode: "react",
|
|
215
|
+
terminator: result.terminator,
|
|
216
|
+
cancelled: result.cancelled,
|
|
217
|
+
notes: result.notes,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/* ──────────────────────────── pure Plan-Act ──────────────────────── */
|
|
221
|
+
async runPlan(args) {
|
|
222
|
+
const exec = new PlanExecutor({
|
|
223
|
+
planner: args.planner,
|
|
224
|
+
adapter: this.opts.adapter,
|
|
225
|
+
mcp: this.opts.mcp,
|
|
226
|
+
goal: this.opts.task,
|
|
227
|
+
env: this.opts.env,
|
|
228
|
+
maxSteps: args.maxSteps,
|
|
229
|
+
timeoutMs: args.timeoutMs,
|
|
230
|
+
maxReplans: args.maxReplans,
|
|
231
|
+
signal: this.opts.signal,
|
|
232
|
+
hooks: this.opts.hooks,
|
|
233
|
+
reflector: this.reflector,
|
|
234
|
+
});
|
|
235
|
+
const r = await exec.run();
|
|
236
|
+
return convertPlanResult(r, /*mode*/ "plan");
|
|
237
|
+
}
|
|
238
|
+
/* ────────────────────── ReAct + fallback to Plan ─────────────────── */
|
|
239
|
+
async runReactWithReplanFallback(args) {
|
|
240
|
+
const reactBudget = Math.max(1, Math.ceil(args.maxSteps * args.ratio));
|
|
241
|
+
const start = Date.now();
|
|
242
|
+
const reactResult = await this.spawnLoop({
|
|
243
|
+
task: this.opts.task,
|
|
244
|
+
maxSteps: reactBudget,
|
|
245
|
+
timeoutMs: args.timeoutMs,
|
|
246
|
+
});
|
|
247
|
+
if (SUCCESS_TERMINATORS.has(reactResult.terminator)) {
|
|
248
|
+
return {
|
|
249
|
+
ok: true,
|
|
250
|
+
finalText: reactResult.finalText,
|
|
251
|
+
steps: reactResult.steps,
|
|
252
|
+
usage: reactResult.usage,
|
|
253
|
+
history: reactResult.history,
|
|
254
|
+
mode: "react",
|
|
255
|
+
terminator: reactResult.terminator,
|
|
256
|
+
cancelled: reactResult.cancelled,
|
|
257
|
+
notes: reactResult.notes,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
if (FAIL_FAST_TERMINATORS.has(reactResult.terminator)) {
|
|
261
|
+
// The model explicitly gave up / requested takeover / was cancelled
|
|
262
|
+
// — the planner can't help, surface it directly.
|
|
263
|
+
return {
|
|
264
|
+
ok: false,
|
|
265
|
+
finalText: reactResult.finalText,
|
|
266
|
+
steps: reactResult.steps,
|
|
267
|
+
usage: reactResult.usage,
|
|
268
|
+
history: reactResult.history,
|
|
269
|
+
mode: "react",
|
|
270
|
+
terminator: reactResult.terminator,
|
|
271
|
+
cancelled: reactResult.cancelled,
|
|
272
|
+
notes: reactResult.notes,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// Step budget / timeout / reflection veto / soft error — escalate to
|
|
276
|
+
// Plan-Act with the remaining budget.
|
|
277
|
+
const elapsed = Date.now() - start;
|
|
278
|
+
const remainingTimeMs = Math.max(1000, args.timeoutMs - elapsed);
|
|
279
|
+
const remainingSteps = Math.max(1, args.maxSteps - reactResult.steps);
|
|
280
|
+
// Seed: pre-existing history isn't replayable through PlanExecutor's
|
|
281
|
+
// sub-loops (each AgentLoop owns its own history), so we surface the
|
|
282
|
+
// ReAct-phase totals through the result mirroring instead.
|
|
283
|
+
const exec = new PlanExecutor({
|
|
284
|
+
planner: args.planner,
|
|
285
|
+
adapter: this.opts.adapter,
|
|
286
|
+
mcp: this.opts.mcp,
|
|
287
|
+
goal: this.opts.task,
|
|
288
|
+
env: this.opts.env,
|
|
289
|
+
maxSteps: remainingSteps,
|
|
290
|
+
timeoutMs: remainingTimeMs,
|
|
291
|
+
maxReplans: args.maxReplans,
|
|
292
|
+
signal: this.opts.signal,
|
|
293
|
+
hooks: this.opts.hooks,
|
|
294
|
+
reflector: this.reflector,
|
|
295
|
+
});
|
|
296
|
+
const r = await exec.run();
|
|
297
|
+
// Aggregate.
|
|
298
|
+
const usage = {
|
|
299
|
+
inputTokens: reactResult.usage.inputTokens + r.usage.inputTokens,
|
|
300
|
+
outputTokens: reactResult.usage.outputTokens + r.usage.outputTokens,
|
|
301
|
+
};
|
|
302
|
+
if (reactResult.usage.cachedInputTokens || r.usage.cachedInputTokens) {
|
|
303
|
+
usage.cachedInputTokens =
|
|
304
|
+
(reactResult.usage.cachedInputTokens ?? 0) + (r.usage.cachedInputTokens ?? 0);
|
|
305
|
+
}
|
|
306
|
+
if (reactResult.usage.costUsd || r.usage.costUsd) {
|
|
307
|
+
usage.costUsd = (reactResult.usage.costUsd ?? 0) + (r.usage.costUsd ?? 0);
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
ok: r.ok,
|
|
311
|
+
finalText: r.finalText || reactResult.finalText,
|
|
312
|
+
steps: reactResult.steps + r.steps,
|
|
313
|
+
usage,
|
|
314
|
+
history: [...reactResult.history, ...r.history],
|
|
315
|
+
mode: "react+replan",
|
|
316
|
+
terminator: r.terminator,
|
|
317
|
+
cancelled: r.cancelled,
|
|
318
|
+
plansEmitted: r.plansEmitted,
|
|
319
|
+
replans: r.replans,
|
|
320
|
+
reactFallbackUsed: r.reactFallbackUsed,
|
|
321
|
+
notes: [...reactResult.notes, ...r.notes],
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/* ──────────────────────────── helpers ────────────────────────────── */
|
|
325
|
+
spawnLoop(args) {
|
|
326
|
+
return new AgentLoop({
|
|
327
|
+
task: args.task,
|
|
328
|
+
env: this.opts.env,
|
|
329
|
+
mcp: this.opts.mcp,
|
|
330
|
+
adapter: this.opts.adapter,
|
|
331
|
+
maxSteps: args.maxSteps,
|
|
332
|
+
timeoutMs: args.timeoutMs,
|
|
333
|
+
signal: this.opts.signal,
|
|
334
|
+
waitForUser: this.opts.waitForUser,
|
|
335
|
+
hooks: this.opts.hooks,
|
|
336
|
+
reflector: this.reflector,
|
|
337
|
+
}).run();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
function convertPlanResult(r, mode) {
|
|
341
|
+
return {
|
|
342
|
+
ok: r.ok,
|
|
343
|
+
finalText: r.finalText,
|
|
344
|
+
steps: r.steps,
|
|
345
|
+
usage: r.usage,
|
|
346
|
+
history: r.history,
|
|
347
|
+
mode,
|
|
348
|
+
terminator: r.terminator,
|
|
349
|
+
cancelled: r.cancelled,
|
|
350
|
+
plansEmitted: r.plansEmitted,
|
|
351
|
+
replans: r.replans,
|
|
352
|
+
reactFallbackUsed: r.reactFallbackUsed,
|
|
353
|
+
notes: r.notes,
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=agent-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/agent-runtime/agent-runner.ts"],"names":[],"mappings":"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"}
|