@xopcai/xopc 0.0.412 → 0.0.414
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/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BrGZdh5N.js → agent-avatar-dicebear-ClobpdW3.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-mf0jgEPE.js +1 -0
- package/dist/gateway/static/root/assets/agents-CKhZ4UYQ.js +77 -0
- package/dist/gateway/static/root/assets/{agents-admin-api-uGDeJR1f.js → agents-admin-api-CeBkHnl8.js} +1 -1
- package/dist/gateway/static/root/assets/app-management-settings-panel-CLunLNGp.js +1 -0
- package/dist/gateway/static/root/assets/app-window-DXFNqt_0.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-DBEgoE9g.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-BZ_MaQJf.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-DAmsio91.js → archive-plugin-JElK4Goq.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BVutrwON.js → automations-page-CZ0UqwyU.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CHUDHNVL.js +8 -0
- package/dist/gateway/static/root/assets/{binary-plugins-41QCRAxz.js → binary-plugins-CXFawow6.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BQ8AA-Ot.js → block-editor-BoduwSYI.js} +30 -30
- package/dist/gateway/static/root/assets/{browser-automation-inputs-D4-vQc4g.js → browser-automation-inputs-D1pDgMJu.js} +1 -1
- package/dist/gateway/static/root/assets/browser-automations-page-DStDm9y1.js +3 -0
- package/dist/gateway/static/root/assets/browser-settings-page-6I4oetKt.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-Bpeh6E22.js +1 -0
- package/dist/gateway/static/root/assets/capabilities-page-C-EecWbS.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-BQoCPk3x.js +8 -0
- package/dist/gateway/static/root/assets/{capability-header-actions-CDgI-YZF.js → capability-header-actions-BasrAWA0.js} +1 -1
- package/dist/gateway/static/root/assets/channels-BKf_-Mdt.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CUkCx_9x.js → chat-terminal-dock-CwQbzcZ_.js} +2 -2
- package/dist/gateway/static/root/assets/chevron-down-ccbiQQz_.js +1 -0
- package/dist/gateway/static/root/assets/computer-settings-page-DNWeJKfF.js +1 -0
- package/dist/gateway/static/root/assets/{connector-service-page-49mgdRET.js → connector-service-page-CxHgC5RM.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-CUBg8spT.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-BpBjADAk.js → date-picker-CXxLbLJb.js} +1 -1
- package/dist/gateway/static/root/assets/dependency-picker-DVuWMrSj.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-KbVLtAlO.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-BDlg9g4s.js +1 -0
- package/dist/gateway/static/root/assets/device-pairing-wizard-PmP_vGem.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-DwXqp_iu.js → directory-picker-path-field-a7xEodzo.js} +1 -1
- package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +1 -0
- package/dist/gateway/static/root/assets/extension-debug-page-CHelH5u_.js +1 -0
- package/dist/gateway/static/root/assets/{extension-page-Bri62YsN.js → extension-page-CrVHmS9-.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CiMybi0r.js +1 -0
- package/dist/gateway/static/root/assets/eye-CABVeTq0.js +1 -0
- package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-BVqYVaGy.js → gateway-config-swr-DF_HV6NP.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-CY1LBGBS.js → gateway-realtime-DMAzNlm-.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-CoIgC1Al.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-DnrQ28E2.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CPKGkr6D.js → gateway-startup-retry-B91CBTzO.js} +1 -1
- package/dist/gateway/static/root/assets/highlight-code-AMjU04kR.js +1 -0
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-Ci1QpkBn.js → highlighted-body-KQOG7T2V-8ACAVktj.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-pTwVME-g.js +2 -0
- package/dist/gateway/static/root/assets/{image-generation-api-N5MYXlxr.js → image-generation-api-CVBaWmrV.js} +1 -1
- package/dist/gateway/static/root/assets/imports-page-C5IP3e6d.js +1 -0
- package/dist/gateway/static/root/assets/index-BLL0wKRZ.css +1 -0
- package/dist/gateway/static/root/assets/index-ygkHNYyo.js +710 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BhU6VYvd.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-Cwl6EvuX.js +1 -0
- package/dist/gateway/static/root/assets/{local-apps-page-BjzaB1ls.js → local-apps-page-DcP1Bdlk.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-BCaC-1rH.js → local-session-drafts-DvmwiLUx.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-DAgpZxAS.js → locale-store-JogcXC4J.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-CS3hcTOq.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-DC-Y_-GP.js +1 -0
- package/dist/gateway/static/root/assets/{media-plugins-8mlDAjD6.js → media-plugins-BnPpcJ2J.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-vckgHpON.js +1 -0
- package/dist/gateway/static/root/assets/{messages-DMXSIJUO.js → messages-RzwPiQNL.js} +2 -2
- package/dist/gateway/static/root/assets/note-detail-panel-C7u4dxEk.js +5 -0
- package/dist/gateway/static/root/assets/note-image-lightbox-jvqYtySx.js +1 -0
- package/dist/gateway/static/root/assets/notes-page-Bs7F5Hpf.js +8 -0
- package/dist/gateway/static/root/assets/page-context-capture-button-DO_yhXS1.js +1 -0
- package/dist/gateway/static/root/assets/personal-page-BexL2-PQ.js +1 -0
- package/dist/gateway/static/root/assets/personal-settings-panel-BKA4fbYH.js +1 -0
- package/dist/gateway/static/root/assets/phone-dependencies-card-ChFtdFhA.js +1 -0
- package/dist/gateway/static/root/assets/phone-model-picker-CZoIAQ1j.js +1 -0
- package/dist/gateway/static/root/assets/phone-settings-page-DRyK0nHH.js +1 -0
- package/dist/gateway/static/root/assets/plugin-details-dialog-B-N61jJH.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-n6Shdp3u.js → preview-open-alternatives-FGqN-mQx.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-BPF5rRTI.js → product-open-page-CwnHLfdL.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-BOsGPNbw.js → product-preview-content-BD6k5hF9.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-DtKmFBml.js +7 -0
- package/dist/gateway/static/root/assets/projects-page-CFZIz9mc.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-B6kqbuw8.js → registry-api-BGqSwITi.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CWEc7W0m.js +1 -0
- package/dist/gateway/static/root/assets/runtime-tools-api-CSm5SpnR.js +5 -0
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-q_oswAdV.js +1 -0
- package/dist/gateway/static/root/assets/{schema-form-cXD1BC02.js → schema-form-DoVn5jJK.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-D6-Vz8xK.js → session-api-DTxZyMta.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-DWbcMHcj.js → session-manager-B2HDomj4.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-BuPqNxpd.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-QTVDCGJG.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BXeszXR7.js → settings-form-section-Ce8vVv-9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CNmh4YmR.js → settings-page-DP2w3ejC.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-Dx5S-Msc.js → settings-page-header-CYpuTXUW.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-layout-B20AfmFG.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-ZmlE8jIE.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-CS9cOCgX.js → share-preview-page-DV4dKrmG.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CtNxWqW-.js +1 -0
- package/dist/gateway/static/root/assets/{skill-api-B5lDCuOH.js → skill-api-DTdejInH.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Egaf8PqZ.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-C6FKxf4J.js +2 -0
- package/dist/gateway/static/root/assets/system-settings-panel-Baxkhov7.js +1 -0
- package/dist/gateway/static/root/assets/task-detail-page-C77-rpkt.js +2 -0
- package/dist/gateway/static/root/assets/{task-result-evidence-HJO1BlJm.js → task-result-evidence-DIGSC4qF.js} +1 -1
- package/dist/gateway/static/root/assets/tracing-settings-page-BaU8frtc.js +1 -0
- package/dist/gateway/static/root/assets/{tunnel-api-DXU94F2Y.js → tunnel-api-BCcOUsqu.js} +1 -1
- package/dist/gateway/static/root/assets/usage-page-BFeIbpbi.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-B1z_TIBu.js → use-autosave-C1X47WVb.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-u8zY5jea.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-HOLjEhh3.js → voice-api-key-field-Bk4DQMTw.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-CPKzUb4R.js → voice-config-api-D7xsWrdh.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-C9RklDaR.js → work-discovery-overlay-B7_NmTB5.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CWwGTBib.js → xopc-cloud-account-card-CJ_akAvc.js} +1 -1
- package/dist/gateway/static/root/index.html +19 -14
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/capabilities.js +1 -0
- package/dist/src/agent/background-review/prompts.js +4 -3
- package/dist/src/agent/embedded/run-turn.js +1 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js +7 -3
- package/dist/src/agent/prompt/system-prompt.js +1 -1
- package/dist/src/agent/tool-manuals/index.js +7 -0
- package/dist/src/agent/tool-manuals/phone.d.ts +1 -0
- package/dist/src/agent/tool-manuals/phone.js +16 -0
- package/dist/src/agent/tools/factory.js +15 -0
- package/dist/src/agent/tools/knowledge-memory-tool.js +1 -1
- package/dist/src/agent/tools/personal-task-tool.d.ts +2 -1
- package/dist/src/agent/tools/personal-task-tool.js +43 -20
- package/dist/src/agent/tools/phone-use-tool.d.ts +8 -0
- package/dist/src/agent/tools/phone-use-tool.js +49 -0
- package/dist/src/agent/tools/session-recall-tool.js +2 -1
- package/dist/src/agent/tools/session-search-tool.js +11 -5
- package/dist/src/agent/tools/user-context-tool.js +1 -1
- package/dist/src/agent-config/index.js +2 -2
- package/dist/src/agent-config/resolver.js +5 -0
- package/dist/src/agent-config/schema.d.ts +24 -0
- package/dist/src/agent-config/schema.js +5 -2
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension.js +2 -2
- package/dist/src/cli/commands/runtime.js +32 -4
- package/dist/src/computer/diagnostics.d.ts +1 -1
- package/dist/src/config/models-json.d.ts +36 -0
- package/dist/src/config/models-json.js +9 -0
- package/dist/src/config/schema.d.ts +12 -0
- package/dist/src/config/schema.js +6 -2
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +7 -1
- package/dist/src/gateway/agent-builtin-tools.js +7 -0
- package/dist/src/gateway/global-defaults-admin.js +2 -0
- package/dist/src/gateway/hono/lib/config-payload.d.ts +8 -0
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/models.js +3 -0
- package/dist/src/gateway/hono/routes/phone-dependencies.d.ts +3 -0
- package/dist/src/gateway/hono/routes/phone-dependencies.js +137 -0
- package/dist/src/gateway/hono/routes/phone.d.ts +4 -0
- package/dist/src/gateway/hono/routes/phone.js +466 -0
- package/dist/src/gateway/hono/routes/runtime-tools.js +2 -0
- package/dist/src/gateway/server.js +1 -0
- package/dist/src/gateway/service/config-coordinator.d.ts +8 -0
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.d.ts +2 -0
- package/dist/src/gateway/service.js +12 -7
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/knowledge-memory/repository.js +5 -0
- package/dist/src/memory-learning/forget-capture.js +12 -3
- package/dist/src/memory-learning/forgotten-history.d.ts +4 -0
- package/dist/src/memory-learning/forgotten-history.js +71 -4
- package/dist/src/memory-learning/work-capture.d.ts +1 -0
- package/dist/src/memory-learning/work-capture.js +28 -17
- package/dist/src/personal-agent/prompts.js +3 -2
- package/dist/src/phone/adb-driver.d.ts +38 -0
- package/dist/src/phone/adb-driver.js +392 -0
- package/dist/src/phone/app-access.d.ts +10 -0
- package/dist/src/phone/app-access.js +21 -0
- package/dist/src/phone/applications.d.ts +4 -0
- package/dist/src/phone/applications.js +49 -0
- package/dist/src/phone/cloud-adb.d.ts +35 -0
- package/dist/src/phone/cloud-adb.js +273 -0
- package/dist/src/phone/cloud-phones.d.ts +29 -0
- package/dist/src/phone/cloud-phones.js +142 -0
- package/dist/src/phone/cloud-scrcpy.d.ts +20 -0
- package/dist/src/phone/cloud-scrcpy.js +123 -0
- package/dist/src/phone/contracts.d.ts +212 -0
- package/dist/src/phone/contracts.js +116 -0
- package/dist/src/phone/interactive-session.d.ts +34 -0
- package/dist/src/phone/interactive-session.js +164 -0
- package/dist/src/phone/live-provider.d.ts +57 -0
- package/dist/src/phone/live-provider.js +18 -0
- package/dist/src/phone/live-state.d.ts +28 -0
- package/dist/src/phone/live-state.js +71 -0
- package/dist/src/phone/model-adapter.d.ts +31 -0
- package/dist/src/phone/model-adapter.js +350 -0
- package/dist/src/phone/repository.d.ts +19 -0
- package/dist/src/phone/repository.js +101 -0
- package/dist/src/phone/runtime.d.ts +88 -0
- package/dist/src/phone/runtime.js +924 -0
- package/dist/src/phone/scrcpy-assets.d.ts +4 -0
- package/dist/src/phone/scrcpy-assets.js +16 -0
- package/dist/src/phone/scrcpy.d.ts +59 -0
- package/dist/src/phone/scrcpy.js +337 -0
- package/dist/src/phone/stream-gateway.d.ts +26 -0
- package/dist/src/phone/stream-gateway.js +210 -0
- package/dist/src/process/phone-process.d.ts +4 -0
- package/dist/src/process/phone-process.js +38 -0
- package/dist/src/providers/extension-stream-bridge.js +8 -1
- package/dist/src/providers/model-call.js +6 -2
- package/dist/src/providers/model-catalog-persistence.js +3 -0
- package/dist/src/providers/model-catalog-types.d.ts +3 -0
- package/dist/src/providers/model-reference-auditor.js +5 -1
- package/dist/src/providers/model-registry.js +3 -0
- package/dist/src/runtime-tools/archive.d.ts +2 -2
- package/dist/src/runtime-tools/downloader.d.ts +2 -2
- package/dist/src/runtime-tools/errors.d.ts +3 -3
- package/dist/src/runtime-tools/phone-dependencies.d.ts +40 -0
- package/dist/src/runtime-tools/phone-dependencies.js +188 -0
- package/dist/src/runtime-tools/phone-dependency-catalog.d.ts +16 -0
- package/dist/src/runtime-tools/phone-dependency-catalog.js +51 -0
- package/dist/src/runtime-tools/types.d.ts +1 -0
- package/dist/src/storage/sqlite/context-extraction-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/context-extraction-repository.js +12 -2
- package/dist/src/tasks/task-research-result.js +19 -2
- package/dist/src/usage/cloud-receipts.d.ts +5 -1
- package/dist/src/usage/cloud-receipts.js +10 -4
- package/dist/src/usage/cloud-wire.d.ts +37 -0
- package/dist/src/usage/cloud-wire.js +181 -0
- package/dist/src/usage/recorder.js +5 -4
- package/dist/src/user-model/capture/semantic.js +2 -2
- package/dist/src/voice/platform-catalog.d.ts +3 -0
- package/package.json +10 -5
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BjZpom5V.js +0 -1
- package/dist/gateway/static/root/assets/agents-s3ws5Qi-.js +0 -77
- package/dist/gateway/static/root/assets/app-management-settings-panel-C6DHuX0L.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-DYGY92Yr.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-PpT_YMmD.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-G6-9IYbR.js +0 -8
- package/dist/gateway/static/root/assets/browser-automations-page-o3jNFlCb.js +0 -3
- package/dist/gateway/static/root/assets/browser-settings-page-G0dVwiX4.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-B9b5KCBb.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-page-BZQanmZY.js +0 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-D-YadSx_.js +0 -8
- package/dist/gateway/static/root/assets/channels-3WX3f0bR.js +0 -1
- package/dist/gateway/static/root/assets/computer-settings-page-CuZrL9gL.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-Bjj2wAeG.js +0 -1
- package/dist/gateway/static/root/assets/dependency-picker-R8kdHLr3.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-BpiosRqb.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-9h6evrKB.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-CZ5lwiLE.js +0 -1
- package/dist/gateway/static/root/assets/extension-debug-page-Bj93A2Gn.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-BSo6vRhS.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-Dafw95ol.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-DgEwWJwz.js +0 -1
- package/dist/gateway/static/root/assets/highlight-code-CSFBakwF.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BKj-aPsL.js +0 -2
- package/dist/gateway/static/root/assets/imports-page-YfaRnpk1.js +0 -1
- package/dist/gateway/static/root/assets/index-CiDVRMmX.js +0 -710
- package/dist/gateway/static/root/assets/index-caRW34rg.css +0 -1
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BTQcPOix.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-kCZ_fbSZ.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-5Jt3uqYt.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-DOQMLPrI.js +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-B4nztFE4.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-1wsKlkk3.js +0 -5
- package/dist/gateway/static/root/assets/note-image-lightbox-B82cToeV.js +0 -1
- package/dist/gateway/static/root/assets/notes-page-DKREWOku.js +0 -8
- package/dist/gateway/static/root/assets/page-context-capture-button-oSJIFF3E.js +0 -1
- package/dist/gateway/static/root/assets/personal-page-CoqQTkkS.js +0 -1
- package/dist/gateway/static/root/assets/personal-settings-panel-BgcJLmZN.js +0 -1
- package/dist/gateway/static/root/assets/plugin-details-dialog-CdOJ3Tir.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-ZADyvA7-.js +0 -7
- package/dist/gateway/static/root/assets/projects-page-BkRe6Z8S.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CCGf5kF4.js +0 -1
- package/dist/gateway/static/root/assets/runtime-tools-api-CY3R7unQ.js +0 -5
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BxaxVlwM.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B81rRu2-.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DLHGV-I-.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-gEqkJWyw.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-D9Ul96XW.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-NLAaNaDn.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-dWeFt-6J.js +0 -2
- package/dist/gateway/static/root/assets/system-settings-panel-DdDsFdCh.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-DO3FM--W.js +0 -2
- package/dist/gateway/static/root/assets/tracing-settings-page-Dm3yToJ1.js +0 -1
- package/dist/gateway/static/root/assets/usage-page-DJJhACRJ.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-DnZ4qFaO.js +0 -2
|
@@ -372,6 +372,12 @@ export declare const CustomModelSchema: z.ZodObject<{
|
|
|
372
372
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
373
373
|
}>;
|
|
374
374
|
}, z.core.$strict>>;
|
|
375
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
376
|
+
profile: z.ZodEnum<{
|
|
377
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
378
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
379
|
+
}>;
|
|
380
|
+
}, z.core.$strict>>;
|
|
375
381
|
id: z.ZodString;
|
|
376
382
|
name: z.ZodOptional<z.ZodString>;
|
|
377
383
|
api: z.ZodOptional<z.ZodEnum<{
|
|
@@ -454,6 +460,12 @@ export declare const ModelOverrideSchema: z.ZodObject<{
|
|
|
454
460
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
455
461
|
}>;
|
|
456
462
|
}, z.core.$strict>>;
|
|
463
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
464
|
+
profile: z.ZodEnum<{
|
|
465
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
466
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
467
|
+
}>;
|
|
468
|
+
}, z.core.$strict>>;
|
|
457
469
|
name: z.ZodOptional<z.ZodString>;
|
|
458
470
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
459
471
|
thinkingLevelMap: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
@@ -540,6 +552,12 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
540
552
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
541
553
|
}>;
|
|
542
554
|
}, z.core.$strict>>;
|
|
555
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
556
|
+
profile: z.ZodEnum<{
|
|
557
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
558
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
559
|
+
}>;
|
|
560
|
+
}, z.core.$strict>>;
|
|
543
561
|
id: z.ZodString;
|
|
544
562
|
name: z.ZodOptional<z.ZodString>;
|
|
545
563
|
api: z.ZodOptional<z.ZodEnum<{
|
|
@@ -622,6 +640,12 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
622
640
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
623
641
|
}>;
|
|
624
642
|
}, z.core.$strict>>;
|
|
643
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
644
|
+
profile: z.ZodEnum<{
|
|
645
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
646
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
647
|
+
}>;
|
|
648
|
+
}, z.core.$strict>>;
|
|
625
649
|
name: z.ZodOptional<z.ZodString>;
|
|
626
650
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
627
651
|
thinkingLevelMap: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
@@ -823,6 +847,12 @@ export declare const ModelsJsonSchema: z.ZodObject<{
|
|
|
823
847
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
824
848
|
}>;
|
|
825
849
|
}, z.core.$strict>>;
|
|
850
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
851
|
+
profile: z.ZodEnum<{
|
|
852
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
853
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
854
|
+
}>;
|
|
855
|
+
}, z.core.$strict>>;
|
|
826
856
|
id: z.ZodString;
|
|
827
857
|
name: z.ZodOptional<z.ZodString>;
|
|
828
858
|
api: z.ZodOptional<z.ZodEnum<{
|
|
@@ -905,6 +935,12 @@ export declare const ModelsJsonSchema: z.ZodObject<{
|
|
|
905
935
|
"openai-responses-computer-v1": "openai-responses-computer-v1";
|
|
906
936
|
}>;
|
|
907
937
|
}, z.core.$strict>>;
|
|
938
|
+
phoneUse: z.ZodOptional<z.ZodObject<{
|
|
939
|
+
profile: z.ZodEnum<{
|
|
940
|
+
"autoglm-phone-v1": "autoglm-phone-v1";
|
|
941
|
+
"structured-phone-v1": "structured-phone-v1";
|
|
942
|
+
}>;
|
|
943
|
+
}, z.core.$strict>>;
|
|
908
944
|
name: z.ZodOptional<z.ZodString>;
|
|
909
945
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
910
946
|
thinkingLevelMap: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
|
|
3
3
|
import { init_paths, resolveModelsJsonPath } from "./paths.js";
|
|
4
|
+
import { PhoneModelMetadataSchema, init_contracts } from "../phone/contracts.js";
|
|
4
5
|
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
5
6
|
import { init_model_policy, isComputerModel } from "../computer/model-policy.js";
|
|
6
7
|
import { assertCurrentModelProvider, init_provider_policy } from "../providers/provider-policy.js";
|
|
@@ -124,6 +125,11 @@ function validateModelsConfig(config) {
|
|
|
124
125
|
});
|
|
125
126
|
if (providerConfig.models) for (let i = 0; i < providerConfig.models.length; i++) {
|
|
126
127
|
const model = providerConfig.models[i];
|
|
128
|
+
if (model.phoneUse && (!model.input?.includes("image") || (model.api ?? providerConfig.api) !== "openai-completions")) errors.push({
|
|
129
|
+
path: `providers.${providerName}.models[${i}].phoneUse`,
|
|
130
|
+
message: "Phone Use requires image input and OpenAI Chat Completions",
|
|
131
|
+
severity: "error"
|
|
132
|
+
});
|
|
127
133
|
if (model.computerUse && !isComputerModel({
|
|
128
134
|
...model,
|
|
129
135
|
api: model.api ?? providerConfig.api
|
|
@@ -237,6 +243,7 @@ function modelsJsonExists(path = resolveModelsJsonPath()) {
|
|
|
237
243
|
}
|
|
238
244
|
var OpenRouterRoutingSchema, VercelGatewayRoutingSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenAICompatSchema, ImageGenerationResolutionSchema, ImageGenerationQualitySchema, ImageGenerationOutputFormatSchema, ImageGenerationBackgroundSchema, ImageGeometrySchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, CustomModelSchema, ModelOverrideSchema, ProviderConfigSchema, ModelsJsonSchema, PROVIDER_ID_REGEX, RESERVED_PROVIDER_IDS;
|
|
239
245
|
var init_models_json = __esmMin((() => {
|
|
246
|
+
init_contracts();
|
|
240
247
|
init_src();
|
|
241
248
|
init_write_file_atomic();
|
|
242
249
|
init_paths();
|
|
@@ -374,6 +381,7 @@ var init_models_json = __esmMin((() => {
|
|
|
374
381
|
CustomModelSchema = z.object({
|
|
375
382
|
supportsTools: z.boolean().optional(),
|
|
376
383
|
computerUse: z.object({ profile: ComputerProfileSchema }).strict().optional(),
|
|
384
|
+
phoneUse: PhoneModelMetadataSchema.optional(),
|
|
377
385
|
id: z.string().min(1),
|
|
378
386
|
name: z.string().min(1).optional(),
|
|
379
387
|
api: z.enum([
|
|
@@ -411,6 +419,7 @@ var init_models_json = __esmMin((() => {
|
|
|
411
419
|
ModelOverrideSchema = z.object({
|
|
412
420
|
supportsTools: z.boolean().optional(),
|
|
413
421
|
computerUse: z.object({ profile: ComputerProfileSchema }).strict().optional(),
|
|
422
|
+
phoneUse: PhoneModelMetadataSchema.optional(),
|
|
414
423
|
name: z.string().min(1).optional(),
|
|
415
424
|
reasoning: z.boolean().optional(),
|
|
416
425
|
thinkingLevelMap: z.partialRecord(z.enum([
|
|
@@ -49,6 +49,10 @@ export declare const AgentModelsSchema: z.ZodObject<{
|
|
|
49
49
|
primary: z.ZodString;
|
|
50
50
|
fallbacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
51
51
|
}, z.core.$strict>>>;
|
|
52
|
+
phoneUse: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
53
|
+
primary: z.ZodString;
|
|
54
|
+
fallbacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
55
|
+
}, z.core.$strict>>>;
|
|
52
56
|
imageGeneration: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
53
57
|
primary: z.ZodString;
|
|
54
58
|
fallbacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
@@ -1774,6 +1778,14 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
1774
1778
|
maxSessionDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
1775
1779
|
idleGrantTtlMs: z.ZodDefault<z.ZodNumber>;
|
|
1776
1780
|
}, z.core.$strict>>;
|
|
1781
|
+
phone: z.ZodPrefault<z.ZodObject<{
|
|
1782
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1783
|
+
adbPath: z.ZodOptional<z.ZodString>;
|
|
1784
|
+
maxActionsPerSession: z.ZodDefault<z.ZodNumber>;
|
|
1785
|
+
maxModelRequests: z.ZodDefault<z.ZodNumber>;
|
|
1786
|
+
maxOperationDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
1787
|
+
maxSessionDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
1788
|
+
}, z.core.$strict>>;
|
|
1777
1789
|
tunnel: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
1778
1790
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1779
1791
|
brokerUrl: z.ZodDefault<z.ZodString>;
|
|
@@ -3,13 +3,14 @@ import { AgentModelsOverrideSchema, ImageGenerationRouteSchema, ModelRouteSchema
|
|
|
3
3
|
import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
|
|
4
4
|
import { init_agent_config } from "../agent-config/index.js";
|
|
5
5
|
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
6
|
+
import { PhoneConfigSchema, init_contracts } from "../phone/contracts.js";
|
|
6
7
|
import { getModelUsageOrigin, init_model_usage } from "../providers/model-usage.js";
|
|
7
8
|
import { TracingConfigSchema, init_config } from "../observability/config.js";
|
|
8
9
|
import { OutboundProxySchema, init_outbound_proxy } from "./outbound-proxy.js";
|
|
9
10
|
import { ComputerConfigSchema, init_config as init_config$1 } from "../computer/config.js";
|
|
10
11
|
import { DEFAULT_CONTEXT_COMPACTION_POLICY, UserContextConfigSchema, init_config as init_config$2 } from "../user-context/config.js";
|
|
11
12
|
import { init_public_url, validatePublicUrl } from "./public-url.js";
|
|
12
|
-
import { PlatformConfigSchema, init_contracts } from "../platform/contracts.js";
|
|
13
|
+
import { PlatformConfigSchema, init_contracts as init_contracts$1 } from "../platform/contracts.js";
|
|
13
14
|
import { deepseekSearchEndpoint, init_deepseek_protocol } from "../agent/tools/search/providers/deepseek-protocol.js";
|
|
14
15
|
import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, init_config_schema } from "../../extensions/telegram/src/config-schema.js";
|
|
15
16
|
import { WeixinAccountConfigSchema, WeixinConfigSchema, init_config_schema as init_config_schema$1 } from "../../extensions/weixin/src/config-schema.js";
|
|
@@ -52,6 +53,7 @@ function parseModelRef(ref) {
|
|
|
52
53
|
}
|
|
53
54
|
var AgentModelRefSchema, AgentImageGenerationModelSchema, AgentModelsSchema, BrowserDriverSchema, BrowserHostnameSchema, BrowserConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, RuntimePreferenceSchema, RuntimeProvisionSchema, RuntimeVersionRequestSchema, LanguageRuntimeSchema, DEFAULT_RUNTIME_TOOLS_CONFIG, RuntimeToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelBrokerUrlSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayWebchatConfigSchema, GatewayConfigSchema, ModelsDevConfigSchema, ModelCatalogConfigSchema, SttProviderConfigCatchallSchema, STTProviderConfigSchema, STTFallbackConfigSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, STTConfigSchema, TtsProviderConfigCatchallSchema, TTSProviderConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSEdgeConfigSchema, TTSSummarizationConfigSchema, TTSConfigSchema, VoiceRefinementConfigSchema, VoiceConfigSchema, MessagesConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProviderAuthConfigSchema, ProvidersConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, UpdateAutoConfigSchema, UpdateConfigSchema, CommandsConfigSchema, McpHttpUrlSchema, ConnectorSecretReferenceSchema, McpConfigScalarSchema, McpExposureSchema, McpOAuthConfigSchema, McpServerSchema, McpConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ConfigSchema;
|
|
54
55
|
var init_schema = __esmMin((() => {
|
|
56
|
+
init_contracts();
|
|
55
57
|
init_model_usage();
|
|
56
58
|
init_config();
|
|
57
59
|
init_outbound_proxy();
|
|
@@ -60,7 +62,7 @@ var init_schema = __esmMin((() => {
|
|
|
60
62
|
init_repository();
|
|
61
63
|
init_config$2();
|
|
62
64
|
init_public_url();
|
|
63
|
-
init_contracts();
|
|
65
|
+
init_contracts$1();
|
|
64
66
|
init_deepseek_protocol();
|
|
65
67
|
init_config_schema();
|
|
66
68
|
init_config_schema$1();
|
|
@@ -1019,6 +1021,7 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
|
|
|
1019
1021
|
gateway: GatewayConfigSchema,
|
|
1020
1022
|
browser: BrowserConfigSchema,
|
|
1021
1023
|
computer: ComputerConfigSchema,
|
|
1024
|
+
phone: PhoneConfigSchema,
|
|
1022
1025
|
tunnel: TunnelConfigSchema.optional(),
|
|
1023
1026
|
workspace: WorkspaceConfigSchema,
|
|
1024
1027
|
tools: ToolsConfigSchema,
|
|
@@ -1126,6 +1129,7 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
|
|
|
1126
1129
|
skillsStoreBaseUrl: "https://store.xopc.ai"
|
|
1127
1130
|
},
|
|
1128
1131
|
computer: ComputerConfigSchema.parse({}),
|
|
1132
|
+
phone: PhoneConfigSchema.parse({}),
|
|
1129
1133
|
browser: {
|
|
1130
1134
|
enabled: true,
|
|
1131
1135
|
driver: { kind: "extension" },
|
|
@@ -4,8 +4,8 @@ import { init_paths, resolveBundledExtensionsDir, resolveExtensionsDir } from ".
|
|
|
4
4
|
import { computeExtensionDirectoryIntegrity, getExtensionLockfileManager } from "./lockfile.js";
|
|
5
5
|
import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl, verifyStoreArtifactSha256 } from "../agent/skills/marketplace/adapters/store/store-api-client.js";
|
|
6
6
|
import { loadConfig } from "../config/loader.js";
|
|
7
|
-
import { commitStagedExtensionInstall, finalizeStagedExtensionInstall, rollbackStagedExtensionInstall, stageExtensionNpm, stageExtensionStoreZip } from "./install-transaction.js";
|
|
8
7
|
import { findExtension } from "./marketplace.js";
|
|
8
|
+
import { commitStagedExtensionInstall, finalizeStagedExtensionInstall, rollbackStagedExtensionInstall, stageExtensionNpm, stageExtensionStoreZip } from "./install-transaction.js";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
11
11
|
import { createHash } from "node:crypto";
|
|
@@ -7,6 +7,12 @@ export type GatewayBuiltinToolSummary = {
|
|
|
7
7
|
};
|
|
8
8
|
/** Built-in agent tools exposed by the gateway configuration UI. */
|
|
9
9
|
export declare const GATEWAY_BUILTIN_TOOLS: readonly [{
|
|
10
|
+
readonly id: "phone_use";
|
|
11
|
+
readonly description: {
|
|
12
|
+
readonly en: "Observe and control an authorized Android phone through the local ADB runner.";
|
|
13
|
+
readonly zh: "通过本地 ADB 执行端观察和操作已授权的 Android 手机。";
|
|
14
|
+
};
|
|
15
|
+
}, {
|
|
10
16
|
readonly id: "computer_use";
|
|
11
17
|
readonly description: {
|
|
12
18
|
readonly en: "Observe and control a locally authorized desktop application.";
|
|
@@ -271,4 +277,4 @@ export declare const GATEWAY_BUILTIN_TOOLS: readonly [{
|
|
|
271
277
|
readonly zh: "使用已验证的参数执行选定的外部工具。";
|
|
272
278
|
};
|
|
273
279
|
}];
|
|
274
|
-
export declare const GATEWAY_BUILTIN_TOOL_IDS: ("automation" | "find" | "image" | "knowledge_search" | "knowledge_get" | "knowledge_write" | "user_context_search" | "user_context_get" | "user_context_update" | "web_search" | "web_fetch" | "browser_use" | "grep" | "session_search" | "read_file" | "list_dir" | "write_file" | "apply_patch" | "exec_command" | "update_plan" | "todo" | "web_extract" | "clarify" | "xopc_tool_execute" | "tool_manual" | "session_status" | "read_media" | "xopc_tool_search" | "xopc_tool_describe" | "image_generate" | "skills_list" | "skill_view" | "skill_manage" | "skills_marketplace_search" | "computer_use" | "send_message" | "text_to_speech" | "execute_code" | "send_media" | "create_share" | "memory_maintenance" | "delegate_task" | "skill_install" | "create_desktop_pet")[];
|
|
280
|
+
export declare const GATEWAY_BUILTIN_TOOL_IDS: ("automation" | "find" | "image" | "knowledge_search" | "knowledge_get" | "knowledge_write" | "user_context_search" | "user_context_get" | "user_context_update" | "web_search" | "web_fetch" | "browser_use" | "grep" | "session_search" | "read_file" | "list_dir" | "write_file" | "apply_patch" | "exec_command" | "update_plan" | "todo" | "web_extract" | "clarify" | "xopc_tool_execute" | "tool_manual" | "session_status" | "read_media" | "xopc_tool_search" | "xopc_tool_describe" | "phone_use" | "image_generate" | "skills_list" | "skill_view" | "skill_manage" | "skills_marketplace_search" | "computer_use" | "send_message" | "text_to_speech" | "execute_code" | "send_media" | "create_share" | "memory_maintenance" | "delegate_task" | "skill_install" | "create_desktop_pet")[];
|
|
@@ -3,6 +3,13 @@ import "../agent/external-tools/index.js";
|
|
|
3
3
|
//#region src/gateway/agent-builtin-tools.ts
|
|
4
4
|
/** Built-in agent tools exposed by the gateway configuration UI. */
|
|
5
5
|
const GATEWAY_BUILTIN_TOOLS = [
|
|
6
|
+
{
|
|
7
|
+
id: "phone_use",
|
|
8
|
+
description: {
|
|
9
|
+
en: "Observe and control an authorized Android phone through the local ADB runner.",
|
|
10
|
+
zh: "通过本地 ADB 执行端观察和操作已授权的 Android 手机。"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
6
13
|
{
|
|
7
14
|
id: "computer_use",
|
|
8
15
|
description: {
|
|
@@ -2,6 +2,7 @@ import { AgentDefaultsSchema } from "../agent-config/schema.js";
|
|
|
2
2
|
import { init_agent_config } from "../agent-config/index.js";
|
|
3
3
|
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
4
4
|
import { AgentCatalogService } from "../agent-catalog/service.js";
|
|
5
|
+
import { validatePhoneModelChange } from "../phone/model-adapter.js";
|
|
5
6
|
import { validateComputerModelChange } from "../computer/model-config.js";
|
|
6
7
|
import { GATEWAY_BUILTIN_TOOLS } from "./agent-builtin-tools.js";
|
|
7
8
|
import { isDeepStrictEqual } from "node:util";
|
|
@@ -38,6 +39,7 @@ function prepareUpdateGlobalDefaults(body) {
|
|
|
38
39
|
status: 400
|
|
39
40
|
};
|
|
40
41
|
try {
|
|
42
|
+
validatePhoneModelChange(parsed.data.models.phoneUse, current.models.phoneUse);
|
|
41
43
|
validateComputerModelChange(parsed.data.models.computerUse, current.models.computerUse);
|
|
42
44
|
} catch (error) {
|
|
43
45
|
return {
|
|
@@ -43,6 +43,10 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
43
43
|
primary: string;
|
|
44
44
|
fallbacks: string[];
|
|
45
45
|
};
|
|
46
|
+
phoneUse?: {
|
|
47
|
+
primary: string;
|
|
48
|
+
fallbacks: string[];
|
|
49
|
+
};
|
|
46
50
|
imageGeneration?: {
|
|
47
51
|
primary: string;
|
|
48
52
|
fallbacks: string[];
|
|
@@ -87,6 +91,10 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
87
91
|
primary: string;
|
|
88
92
|
fallbacks: string[];
|
|
89
93
|
};
|
|
94
|
+
phoneUse?: {
|
|
95
|
+
primary: string;
|
|
96
|
+
fallbacks: string[];
|
|
97
|
+
};
|
|
90
98
|
imageGeneration?: {
|
|
91
99
|
primary: string;
|
|
92
100
|
fallbacks: string[];
|
|
@@ -2,8 +2,8 @@ import { getAllModels, getAvailableModels, init_providers } from "../../../provi
|
|
|
2
2
|
import { ActivationPlanner } from "../../../extensions/activation-planner.js";
|
|
3
3
|
import { mergeActivationContext } from "../../../extensions/activation-context.js";
|
|
4
4
|
import { validateExtensionConfig } from "../../../extensions/config-validation.js";
|
|
5
|
-
import { fetchRegistry, listExtensions, searchExtensions } from "../../../extensions/marketplace.js";
|
|
6
5
|
import { listAgentPluginInventory } from "../../../extensions/agent-plugins/inventory.js";
|
|
6
|
+
import { fetchRegistry, listExtensions, searchExtensions } from "../../../extensions/marketplace.js";
|
|
7
7
|
import { createOAuthAsyncHandler } from "../oauth-async.js";
|
|
8
8
|
import { createOAuthHandler } from "../oauth.js";
|
|
9
9
|
import { extensionAssetMimeType } from "../lib/extension-assets.js";
|
|
@@ -3,6 +3,14 @@ function startsWithAny(path, prefixes) {
|
|
|
3
3
|
return prefixes.some((prefix) => path === prefix || path.startsWith(`${prefix}/`));
|
|
4
4
|
}
|
|
5
5
|
const AUTHENTICATED_LAZY_ROUTE_BUNDLES = [
|
|
6
|
+
{
|
|
7
|
+
id: "phone",
|
|
8
|
+
match: (path) => startsWithAny(path, ["/api/phone"]),
|
|
9
|
+
load: async () => {
|
|
10
|
+
const { registerPhoneRoutes } = await import("./phone.js");
|
|
11
|
+
return { register: registerPhoneRoutes };
|
|
12
|
+
}
|
|
13
|
+
},
|
|
6
14
|
{
|
|
7
15
|
id: "next-turn-suggestions",
|
|
8
16
|
match: (path) => /^\/api\/sessions\/[^/]+\/(?:next-turn-suggestion|next-turn-suggestion-feedback)$/.test(path),
|
|
@@ -12,6 +12,7 @@ import { CredentialResolver, init_credentials } from "../../../auth/credentials.
|
|
|
12
12
|
import { getProviderRegistry, init_plugin_registry } from "../../../providers/plugin-registry.js";
|
|
13
13
|
import { PROVIDER_META, getAllModels, getAllProviders, getAvailableModels, getProviderAuthState, init_providers, isProviderConfigured, isProviderConfiguredSync } from "../../../providers/index.js";
|
|
14
14
|
import { XopcCloudAccountError, XopcCloudAccountService } from "../../../providers/xopc-cloud-account-service.js";
|
|
15
|
+
import { phoneModelProfile } from "../../../phone/model-adapter.js";
|
|
15
16
|
import { buildCapabilityPlansForConfig } from "../../../capabilities/readiness/from-config.js";
|
|
16
17
|
import "../../../capabilities/readiness/index.js";
|
|
17
18
|
import { getModelThinking } from "../../../providers/model-thinking.js";
|
|
@@ -324,6 +325,7 @@ function registerModelsRoutes(authenticated, deps) {
|
|
|
324
325
|
name: m.name,
|
|
325
326
|
...catalogDisplayNames(m.provider, m.id),
|
|
326
327
|
provider: m.provider,
|
|
328
|
+
...phoneModelProfile(m) ? { phoneUse: { profile: phoneModelProfile(m) } } : {},
|
|
327
329
|
...computerModelProfile(m) ? { computerUse: {
|
|
328
330
|
profile: computerModelProfile(m),
|
|
329
331
|
dedicated: isDedicatedComputerModel(m)
|
|
@@ -710,6 +712,7 @@ function registerModelsRoutes(authenticated, deps) {
|
|
|
710
712
|
name: m.name,
|
|
711
713
|
...catalogDisplayNames(m.provider, m.id),
|
|
712
714
|
provider: m.provider,
|
|
715
|
+
...phoneModelProfile(m) ? { phoneUse: { profile: phoneModelProfile(m) } } : {},
|
|
713
716
|
contextWindow: m.contextWindow ?? 128e3,
|
|
714
717
|
maxTokens: m.maxTokens ?? 4096,
|
|
715
718
|
reasoning: m.reasoning ?? false,
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { init_paths_state, resolveStateDir } from "../../../config/paths-state.js";
|
|
2
|
+
import { resolveAdbPath } from "../../../phone/adb-driver.js";
|
|
3
|
+
import { getPhoneRuntime } from "../../../phone/runtime.js";
|
|
4
|
+
import { RuntimeError } from "../../../runtime-tools/errors.js";
|
|
5
|
+
import { getGatewayPrincipal } from "../../security/gateway-principal.js";
|
|
6
|
+
import { PhoneDependencyManager, probePhoneAdb } from "../../../runtime-tools/phone-dependencies.js";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { Hono } from "hono";
|
|
9
|
+
import { bodyLimit } from "hono/body-limit";
|
|
10
|
+
import { streamSSE } from "hono/streaming";
|
|
11
|
+
//#region src/gateway/hono/routes/phone-dependencies.ts
|
|
12
|
+
init_paths_state();
|
|
13
|
+
function registerPhoneDependencyRoutes(parent, deps) {
|
|
14
|
+
const app = new Hono();
|
|
15
|
+
const base = "/api/runtime-tools/phone-dependencies";
|
|
16
|
+
const manager = () => new PhoneDependencyManager({
|
|
17
|
+
stateDir: resolveStateDir(),
|
|
18
|
+
config: deps.service.currentConfig.runtimeTools,
|
|
19
|
+
adbPath: deps.service.currentConfig.phone.adbPath
|
|
20
|
+
});
|
|
21
|
+
const adbBusy = () => getPhoneRuntime().reports().some((report) => ![
|
|
22
|
+
"closed",
|
|
23
|
+
"cancelled",
|
|
24
|
+
"failed",
|
|
25
|
+
"outcome_unknown"
|
|
26
|
+
].includes(report.status));
|
|
27
|
+
app.use(`${base}/*`, bodyLimit({ maxSize: 8192 }));
|
|
28
|
+
const admin = async (c, next) => {
|
|
29
|
+
const principal = getGatewayPrincipal(c);
|
|
30
|
+
if (!["owner", "trusted-proxy"].includes(principal.kind) || !principal.scopes.includes("gateway.admin")) return c.json({
|
|
31
|
+
ok: false,
|
|
32
|
+
message: "Gateway administrator access is required"
|
|
33
|
+
}, 403);
|
|
34
|
+
return next();
|
|
35
|
+
};
|
|
36
|
+
app.use(base, admin);
|
|
37
|
+
app.use(`${base}/*`, admin);
|
|
38
|
+
app.onError((error, c) => c.json({
|
|
39
|
+
ok: false,
|
|
40
|
+
message: error instanceof z.ZodError ? "Invalid dependency request" : error.message,
|
|
41
|
+
error: error instanceof RuntimeError ? error.code : "PHONE_DEPENDENCY_FAILED"
|
|
42
|
+
}, 400));
|
|
43
|
+
app.get(base, async (c) => {
|
|
44
|
+
c.header("Cache-Control", "no-store");
|
|
45
|
+
return c.json({
|
|
46
|
+
ok: true,
|
|
47
|
+
payload: {
|
|
48
|
+
location: "gateway",
|
|
49
|
+
installationEnabled: deps.service.currentConfig.runtimeTools.enabled,
|
|
50
|
+
statuses: await manager().status()
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
app.post(`${base}/adb/path`, deps.strictRateLimitMiddleware, async (c) => {
|
|
55
|
+
const { path } = z.object({ path: z.string().trim().max(4096) }).strict().parse(await c.req.json());
|
|
56
|
+
if (adbBusy()) return c.json({
|
|
57
|
+
ok: false,
|
|
58
|
+
message: "Close the current phone session before changing ADB",
|
|
59
|
+
error: "PHONE_DEPENDENCY_BUSY"
|
|
60
|
+
}, 409);
|
|
61
|
+
if (path && !/^(?:\/|[A-Za-z]:[\\/]|\\\\)/.test(path)) return c.json({
|
|
62
|
+
ok: false,
|
|
63
|
+
message: "Enter an absolute ADB executable path on the Gateway host"
|
|
64
|
+
}, 400);
|
|
65
|
+
await probePhoneAdb(resolveAdbPath(path || void 0));
|
|
66
|
+
const next = structuredClone(deps.service.currentConfig);
|
|
67
|
+
next.phone.adbPath = path || void 0;
|
|
68
|
+
if (!(await deps.service.saveConfig(next)).saved) return c.json({
|
|
69
|
+
ok: false,
|
|
70
|
+
message: "Could not save the ADB path"
|
|
71
|
+
}, 500);
|
|
72
|
+
deps.service.emit("runtime-tools.updated", { dependency: "adb" });
|
|
73
|
+
return c.json({ ok: true });
|
|
74
|
+
});
|
|
75
|
+
app.post(`${base}/:kind/:action/stream`, deps.strictRateLimitMiddleware, async (c) => {
|
|
76
|
+
const kind = z.enum(["adb", "scrcpy"]).parse(c.req.param("kind"));
|
|
77
|
+
const action = z.enum([
|
|
78
|
+
"install",
|
|
79
|
+
"repair",
|
|
80
|
+
"import"
|
|
81
|
+
]).parse(c.req.param("action"));
|
|
82
|
+
const input = z.object({ path: z.string().trim().min(1).max(4096).optional() }).strict().parse(await c.req.json());
|
|
83
|
+
if (action === "import" && (kind !== "scrcpy" || !input.path) || action !== "import" && input.path) return c.json({
|
|
84
|
+
ok: false,
|
|
85
|
+
message: "Only scrcpy server imports accept a file path"
|
|
86
|
+
}, 400);
|
|
87
|
+
if (kind === "adb" && adbBusy()) return c.json({
|
|
88
|
+
ok: false,
|
|
89
|
+
message: "Close the current phone session before installing or repairing ADB",
|
|
90
|
+
error: "PHONE_DEPENDENCY_BUSY"
|
|
91
|
+
}, 409);
|
|
92
|
+
const runtime = manager();
|
|
93
|
+
return streamSSE(c, async (stream) => {
|
|
94
|
+
let writes = Promise.resolve();
|
|
95
|
+
const progress = (event) => {
|
|
96
|
+
writes = writes.then(async () => {
|
|
97
|
+
try {
|
|
98
|
+
await stream.writeSSE({
|
|
99
|
+
event: "progress",
|
|
100
|
+
data: JSON.stringify(event)
|
|
101
|
+
});
|
|
102
|
+
} catch {}
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
runtime.on("progress", progress);
|
|
106
|
+
try {
|
|
107
|
+
await runtime.install(kind, {
|
|
108
|
+
repair: action === "repair",
|
|
109
|
+
sourcePath: input.path
|
|
110
|
+
});
|
|
111
|
+
await writes;
|
|
112
|
+
deps.service.emit("runtime-tools.updated", { dependency: kind });
|
|
113
|
+
await stream.writeSSE({
|
|
114
|
+
event: "result",
|
|
115
|
+
data: JSON.stringify({ ok: true })
|
|
116
|
+
});
|
|
117
|
+
} catch (error) {
|
|
118
|
+
await writes;
|
|
119
|
+
try {
|
|
120
|
+
await stream.writeSSE({
|
|
121
|
+
event: "result",
|
|
122
|
+
data: JSON.stringify({
|
|
123
|
+
ok: false,
|
|
124
|
+
message: error instanceof Error ? error.message : String(error),
|
|
125
|
+
error: error instanceof RuntimeError ? error.code : "PHONE_DEPENDENCY_FAILED"
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
} catch {}
|
|
129
|
+
} finally {
|
|
130
|
+
runtime.off("progress", progress);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
parent.route("/", app);
|
|
135
|
+
}
|
|
136
|
+
//#endregion
|
|
137
|
+
export { registerPhoneDependencyRoutes };
|