@xopcai/xopc 0.0.424 → 0.0.425
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/{activity-store-AI081rxe.js → activity-store-CMw8qBuC.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DupnTbL7.js → agent-avatar-dicebear-JI0YWOIm.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-display-CmEj6Uqy.js → agent-avatar-display-YqmwzOSa.js} +2 -2
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-IEV5yKuu.js → agent-defaults-settings-panel-DlvjxWg6.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-D_njOuFA.js → agent-plugin-dialog-OBueuQSc.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-B_yg9nA3.js → agents-Cp6_5OOQ.js} +3 -3
- package/dist/gateway/static/root/assets/{agents-admin-api-CUZUolwG.js → agents-admin-api-DLnmdC1h.js} +1 -1
- package/dist/gateway/static/root/assets/{api-bpQ7yR10.js → api-Boc-CVh7.js} +1 -1
- package/dist/gateway/static/root/assets/{api-CWWEVThO.js → api-bL7sxjAF.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-C0_hxwgg.js → app-management-settings-panel-jIG5i7KE.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CLh-qnCC.js → appearance-settings-BnaQW9Xd.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-Bjtm3Rgi.js → apps-page-C2WKUwtN.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-dGnstkhB.js → archive-plugin-DjboG3kA.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-api-MB2xCoFF.js → automation-api-CZqL9l_d.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-result-state-DJQflY78.js → automation-result-state-DRd-X_Ai.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-task-card-DXgBxVE2.js → automation-task-card-wbnR5i6N.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-D3O7M2FH.js → automations-page-HyBQIfmn.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-Dk3FVWoX.js → automations-workspace-D6cTOKr7.js} +2 -2
- package/dist/gateway/static/root/assets/{binary-plugins-BrVJXmYf.js → binary-plugins-Bg8ARZUH.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Dok4sfT3.js → block-editor-DKohqFAW.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-PJbT3CxW.js → browser-automation-inputs-YeibTzw4.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-kkpX1Q7K.js → browser-automations-page-BWNcbuz2.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-control-api-Bg4wnkeA.js → browser-control-api-CDeuxy2x.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BrgX_Yb2.js → browser-settings-page-L0nBjfhG.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-Cs6Jt5Gl.js → capabilities-BcQa8c9n.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-BMaJizw4.js → capabilities-aT-QjNTl.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-D5hvAG6D.js → capabilities-page-DlpuHdHi.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-BrEvm4IH.js → capabilities-settings-panel-pvqkN2-2.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-1jQgGVc9.js → channels-BUPtawh6.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BAOWaUJf.js → chat-agents-api-B8JO6Tcj.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-chart-block-DeWrb9XR.js → chat-chart-block-DRtuFfF1.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-page-CafkCKOj.js → chat-page-BP0huA-W.js} +31 -31
- package/dist/gateway/static/root/assets/{chat-terminal-dock-C544n0-R.js → chat-terminal-dock-Dkqq5FSL.js} +1 -1
- package/dist/gateway/static/root/assets/{command-palette-api-D9PXzY8b.js → command-palette-api-qujvNqkK.js} +1 -1
- package/dist/gateway/static/root/assets/{composer-payload-handoff-CYXfjpem.js → composer-payload-handoff-CYIhcczq.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-DJmod8-w.js → computer-settings-page-8q4hRmoo.js} +1 -1
- package/dist/gateway/static/root/assets/{connected-providers-grid-b46VH4uy.js → connected-providers-grid-CKZfhHSD.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-BqDbTOTp.js → connector-service-page-DQaTI21R.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-CwRuUnH4.js → connectors-api-BjypBp2g.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-Mq9Bvoax.js → connectors-page-Lf1ZzaVn.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DWaT0IC0.js → date-picker-D_PSHGpe.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DV9XAt6F.js → dependency-picker-UqKVJ9dv.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-Dffq2NxL.js → desktop-pet-1Et9VqkM.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-narrative-CS8qJpNO.js → desktop-pet-narrative-rADKU0FX.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CrB1ICax.js → desktop-pet-settings-0fCGgaG7.js} +1 -1
- package/dist/gateway/static/root/assets/{dev-view-store-liRgSkcT.js → dev-view-store-TTj_djD8.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-ByEL5lvM.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-EKqQLQrE.js → directory-picker-path-field-C07a7wYX.js} +1 -1
- package/dist/gateway/static/root/assets/{discussion-annotation-sync-D-b1X6ro.js → discussion-annotation-sync-BFqKm9ky.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-wD97GeG0.js → extension-debug-page-DFaVlqas.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-B4Q1CjvW.js → extension-iframe-host-BfzPfXBq.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-marketplace-api-ak1_K3u8.js → extension-marketplace-api-ow0K1Y4_.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DWFI4iIh.js → extension-page-CrDADV5W.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-BZwcaU5Y.js → extension-provider-mnRoa63o.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-cn4KS42C.js → extension-settings-page-BLl02GFY.js} +1 -1
- package/dist/gateway/static/root/assets/{file-preview-surface-c3gDD9sM.js → file-preview-surface-TGdKqhCf.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-Dmt5JhZU.js → gateway-config-swr-DfPQIHOL.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-CJtDXQCt.js → gateway-realtime-67vWg_M2.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-Bkt1z-xo.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-restart-DInvvT5u.js → gateway-restart-CLtR2wkL.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BZXdv2FE.js → gateway-settings-COvC3r-l.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-s2KcWekp.js → gateway-startup-retry-9YQllbw2.js} +1 -1
- package/dist/gateway/static/root/assets/{global-defaults-api-DtnmDd87.js → global-defaults-api-DYMRjGvd.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-CAVjA5rO.js → home-page-k9LFXcVa.js} +2 -2
- package/dist/gateway/static/root/assets/{image-generation-api-RQQokgE9.js → image-generation-api-Dzydfvy8.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-BP_4TubV.js → imports-page-Csd_YZXZ.js} +1 -1
- package/dist/gateway/static/root/assets/index-CpwPxKQ8.css +1 -0
- package/dist/gateway/static/root/assets/index-DKW7BeT_.js +11 -0
- package/dist/gateway/static/root/assets/{install-connector-dialog-BNzNuXJ8.js → install-connector-dialog-CTQAKTPv.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DNRQFepg.js → keyboard-shortcuts-settings-B201bMIa.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CvY5XxbX.js → local-app-workbench-page-CD_8_gd_.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-DfwEvd8G.js → local-apps-page-BOwqNH0L.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-CuDdIyxR.js → local-session-drafts-DjmK-SM9.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-TQcz_Vjt.js → locale-store-Bg_XR36n.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-eq49F1Rt.js → logs-page-gw3E9CMQ.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-BaYXDMOJ.js → management-settings-t_Z2mCyw.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-D4nII6Zv.js → markdown-view-BUpXJUPv.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-MvlAY405.js → media-plugins-_shnaEMY.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DG4HLOER.js +3 -0
- package/dist/gateway/static/root/assets/{model-selector-nsoNHqif.js → model-selector-a7PIT1Lk.js} +1 -1
- package/dist/gateway/static/root/assets/{models-hub-cache-CFIazNIF.js → models-hub-cache-KOJC3z6Q.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-panel-KPzbHiEW.js → note-detail-panel-BsHYUFgk.js} +3 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-B-bEtjhj.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-HVxR5bRD.js → notes-api-BSmikUKI.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-yShJeR3i.js → notes-page-CA0NRL8O.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-api-CfKjRVnb.js → oauth-api-D2t9HXoC.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-provider-connect-D4uqONWr.js → oauth-provider-connect-DGGGGtcB.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-B98nlKTc.js → page-context-capture-button-BH54VO0V.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-draft-HcuK45iu.js → page-context-draft-BS5y8Cx9.js} +1 -1
- package/dist/gateway/static/root/assets/page-header-store-BdZnUh-D.js +1 -0
- package/dist/gateway/static/root/assets/{personal-avatar-_d72UP_d.js → personal-avatar-D8DtpDTa.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-B19h_3WQ.js → personal-page-KJezmTKP.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-settings-panel-CfwtGyue.js → personal-settings-panel-9uDaNJy5.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-dependencies-card-D8bqsDk_.js → phone-dependencies-card-DLYrI0C4.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-model-picker-CL_Zn6Xd.js → phone-model-picker-BbA2iI-3.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-settings-page-C5Jia8eQ.js → phone-settings-page-Cg_BPss4.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-workspace-store-FBfrfkYq.js → phone-workspace-store-CVDk80Bf.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-details-dialog-gAq2KPzK.js → plugin-details-dialog-DgibLkc3.js} +1 -1
- package/dist/gateway/static/root/assets/{preference-select-fields-Ck8GAX_y.js → preference-select-fields-BVoN-lAv.js} +1 -1
- package/dist/gateway/static/root/assets/{product-automation-feedback-BJ9oTnNs.js → product-automation-feedback-DCo90zGh.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Dw9hUdxP.js → product-open-page-OWl8IAoY.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-C0iPzmSm.js → product-preview-content-Cjas7UNe.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-modal-COFtHoh6.js → product-preview-modal-CPWRvBI9.js} +2 -2
- package/dist/gateway/static/root/assets/{project-detail-page-C5Amjah-.js → project-detail-page-B_HlZux_.js} +1 -1
- package/dist/gateway/static/root/assets/{project-understanding-DpL9ADQU.js → project-understanding-Ba02SFzB.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-gGg9nM2t.js → projects-page-CdfKjp95.js} +1 -1
- package/dist/gateway/static/root/assets/{providers-api-D6JJRlJb.js → providers-api-rwQ4LWzr.js} +1 -1
- package/dist/gateway/static/root/assets/{recording-upload-DxX1xKyt.js → recording-upload-BSmvRrZQ.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-BfXzBR1D.js → registry-api-Vy7LfH6E.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BZA4StwC.js → remote-access-hub-UXrnpGev.js} +1 -1
- package/dist/gateway/static/root/assets/{resource-unavailable-X-SIrZYI.js → resource-unavailable-f9OzSi4W.js} +1 -1
- package/dist/gateway/static/root/assets/{route-preload-CWRb0UCt.js → route-preload-BtObM-co.js} +2 -2
- package/dist/gateway/static/root/assets/{runtime-tools-api-1DjsPyQ5.js → runtime-tools-api-Bt8t37z5.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BnCtyORj.js → runtime-tools-settings-panel-DU4UXnBm.js} +1 -1
- package/dist/gateway/static/root/assets/{service-recommendation-list-ChSOfHHh.js → service-recommendation-list-CuYsRcBB.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-rvY5aWw8.js → session-api-DJI9eSgw.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-CtKgACGl.js +23 -0
- package/dist/gateway/static/root/assets/{sessions-page-DAS2IUGT.js → sessions-page-BAsKzRHt.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CjAFqg2U.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-section-ZKRIuk7h.js → settings-advanced-section-BxUuF_yi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-mode-store-CtJ8pEfm.js → settings-mode-store-CaoRh2gt.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-header-DuNCn8i-.js → settings-page-header-CyUHrn7c.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-DeNC8YHJ.js → settings-page-layout-DGVqXrlp.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-B3pUce-_.js → settings-page-qQ8-6dJ_.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-Fc3vuz_h.js → setup-status-panel-BpaPb625.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-B3hwjVAx.js → share-link-dialog-CQJ6Ykm2.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-D_9oFzGS.js → share-preview-page-Cem96FbB.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-BoUpXmxq.js → shares-api-Dowes16l.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-Drfuvepz.js → shares-settings-DZEkZDR0.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-By2HhJ9O.js → skill-api-D8ZwFEVe.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-list-api-TaUCzS8Y.js → skill-list-api-B4gp00-f.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-CN2fpS1n.js → skill-reload-api-ClmaaDXo.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-LzGLique.js → skills-page-CV0X9rvG.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Cuyg8Ml3.js → system-settings-panel-D095uacX.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-CY2C4AM2.js +2 -0
- package/dist/gateway/static/root/assets/{task-result-evidence-DDubAU_5.js → task-result-evidence-LUrJlUhb.js} +1 -1
- package/dist/gateway/static/root/assets/{terminal-panel-store-BNs75Wdr.js → terminal-panel-store-BqEDB1Vl.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-DB1ZfBUm.js → theme-store-gAcojLgP.js} +1 -1
- package/dist/gateway/static/root/assets/tool-friendly-title-o6sxGVUu.js +1 -0
- package/dist/gateway/static/root/assets/{tracing-settings-page-TvtX4Goh.js → tracing-settings-page-B1ZRh-Is.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-COoVEdV9.js → tunnel-api-C9u9E3UQ.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-activity-store-Dr_MLgYe.js → understanding-activity-store-BTrzsR6_.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-refresh-store-DGmLGEqw.js → understanding-refresh-store-5Qava3jh.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-DP6eb6ed.js → usage-page-DFMLYKAc.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-itwjDYUb.js → use-autosave-3O-X7x15.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-hjIGlI_2.js → use-composer-attachments-BLc4dBfe.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-ClLa0g8D.js → use-file-preview-expanded-BaOmTXsT.js} +2 -2
- package/dist/gateway/static/root/assets/{use-personal-profile-vhWk6tTU.js → use-personal-profile-MusPgljM.js} +1 -1
- package/dist/gateway/static/root/assets/{use-workspace-tree-dfXXjA2-.js → use-workspace-tree-Ck_U2yTw.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-D8dswPWd.js → user-model-page-Den5Lg-k.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BIfBySnN.js → voice-api-key-field-C5zJApoa.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-J4o59ICE.js → voice-config-api-DC1bYDt1.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B1mlpUdC.js → voice-input-shortcut-events-0SZjJdVV.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-transcribe-api-xxaSOOmq.js → voice-transcribe-api-CxVeANPX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DqwT1E5u.js → work-discovery-overlay-DAQ8McVe.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-BzYQmPLT.js → work-discovery-page-DUQysEyb.js} +1 -1
- package/dist/gateway/static/root/assets/{working-directory-picker-modal-D2Zf3GOG.js → working-directory-picker-modal-BO9qdJyZ.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-Bnx3eS2M.js → workspace-api-ZrN6yUER.js} +2 -2
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bo5dwoWP.js +1 -0
- package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-D13qHzVr.js → workspace-file-preview-dialog-Yj_kBWSb.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-open-location-menu-Cou-ig1H.js → workspace-open-location-menu-yxT7wajO.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DQGPKxHA.js → xopc-cloud-account-card-IcH9KDzx.js} +1 -1
- package/dist/gateway/static/root/index.html +81 -81
- package/dist/package.js +1 -1
- package/dist/packages/computer-control-contract/src/index.js +33 -3
- package/dist/src/agent/embedded/run-turn.js +64 -4
- package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
- package/dist/src/agent/tool-manuals/computer.js +6 -0
- package/dist/src/agent/tools/computer-use-tool.js +18 -5
- package/dist/src/agent/tools/phone-use-tool.js +12 -2
- package/dist/src/cli/commands/backup.js +1 -1
- package/dist/src/computer/agent-context.d.ts +21 -0
- package/dist/src/computer/agent-context.js +107 -0
- package/dist/src/computer/broker.d.ts +4 -2
- package/dist/src/computer/broker.js +26 -11
- package/dist/src/computer/diagnostics.d.ts +60 -6
- package/dist/src/computer/diagnostics.js +45 -4
- package/dist/src/computer/errors.d.ts +1 -1
- package/dist/src/computer/errors.js +4 -0
- package/dist/src/computer/evaluation.d.ts +2 -2
- package/dist/src/computer/native-timing.d.ts +15 -0
- package/dist/src/computer/native-timing.js +49 -0
- package/dist/src/computer/program-runtime.d.ts +22 -0
- package/dist/src/computer/program-runtime.js +105 -0
- package/dist/src/computer/runtime.d.ts +36 -2
- package/dist/src/computer/runtime.js +269 -58
- package/dist/src/config/schema.d.ts +18 -0
- package/dist/src/gateway/global-defaults-admin.js +1 -1
- package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
- package/dist/src/phone/adb-driver.d.ts +15 -1
- package/dist/src/phone/adb-driver.js +104 -41
- package/dist/src/phone/autoglm-protocol.d.ts +36 -0
- package/dist/src/phone/autoglm-protocol.js +88 -0
- package/dist/src/phone/autoglm-upstream-prompt.d.ts +2 -0
- package/dist/src/phone/autoglm-upstream-prompt.js +5 -0
- package/dist/src/phone/autoglm-upstream.LICENSE +201 -0
- package/dist/src/phone/cloud-adb-connection.d.ts +3 -0
- package/dist/src/phone/cloud-adb-connection.js +102 -31
- package/dist/src/phone/cloud-adb.js +18 -6
- package/dist/src/phone/completion-recovery.d.ts +6 -0
- package/dist/src/phone/completion-recovery.js +30 -0
- package/dist/src/phone/contracts.d.ts +20 -0
- package/dist/src/phone/contracts.js +6 -0
- package/dist/src/phone/execution-trace.d.ts +51 -0
- package/dist/src/phone/execution-trace.js +78 -0
- package/dist/src/phone/model-adapter.d.ts +9 -1
- package/dist/src/phone/model-adapter.js +132 -61
- package/dist/src/phone/model-response.d.ts +5 -0
- package/dist/src/phone/model-response.js +118 -0
- package/dist/src/phone/runtime.d.ts +4 -0
- package/dist/src/phone/runtime.js +146 -16
- package/dist/src/phone/text-session.d.ts +14 -0
- package/dist/src/phone/text-session.js +39 -0
- package/dist/src/phone/ui-dump-binary.d.ts +1 -1
- package/dist/src/phone/ui-dump-binary.js +1 -1
- package/dist/src/phone/ui-session.d.ts +22 -0
- package/dist/src/phone/ui-session.js +191 -0
- package/dist/src/process/phone-process.d.ts +1 -0
- package/dist/src/process/phone-process.js +11 -1
- package/package.json +2 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-1du1hfi5.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-DcsZyYEa.js +0 -1
- package/dist/gateway/static/root/assets/index-BS9mjvSL.js +0 -11
- package/dist/gateway/static/root/assets/index-pT-m6l6b.css +0 -1
- package/dist/gateway/static/root/assets/messages-DaLmc4W1.js +0 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-DticJxxh.js +0 -1
- package/dist/gateway/static/root/assets/page-header-store-D6SzJ9Ch.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-D2rbRfX3.js +0 -23
- package/dist/gateway/static/root/assets/settings-advanced-gate-CYDQybNF.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-6A9337pK.js +0 -2
- package/dist/gateway/static/root/assets/tool-friendly-title-DGmi7rCQ.js +0 -1
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-COUVwj-p.js +0 -1
|
@@ -2,6 +2,7 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { MOCK_PHONE_MODEL, PhoneError, PhoneInputSchema, init_contracts } from "./contracts.js";
|
|
4
4
|
import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
|
|
5
|
+
import { PhoneExecutionTrace, currentPhoneTrace, measurePhonePhase } from "./execution-trace.js";
|
|
5
6
|
import { phoneAllowsApp, phoneAppAccess } from "./app-access.js";
|
|
6
7
|
import { nativePhoneOutput, updatePhoneFeedback } from "./task-feedback.js";
|
|
7
8
|
import { PhoneFrameCache, PhoneOperationBudget } from "./live-state.js";
|
|
@@ -17,6 +18,7 @@ import { canDispatchPhoneAction, observationSignature, phoneCompletionSatisfied
|
|
|
17
18
|
import { groundPhoneCoordinateAction, resolvePhoneSemanticAction } from "./semantic-controls.js";
|
|
18
19
|
import { createPhoneModel, isAboutScreen } from "./model-adapter.js";
|
|
19
20
|
import { PhoneRepository } from "./repository.js";
|
|
21
|
+
import { phoneCompletionGuidance, phoneCompletionRecoveryHint } from "./completion-recovery.js";
|
|
20
22
|
import { confirmPhoneFocusRecovery, phoneBackRecovery, phoneUnfocusedTypingHint, preparePhoneFocusRecovery } from "./recovery.js";
|
|
21
23
|
import { createPhoneNumericEntry, nextPhoneNumericEntry } from "./numeric-entry.js";
|
|
22
24
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -324,6 +326,8 @@ var PhoneRuntime = class {
|
|
|
324
326
|
].includes(session.report.status)) await this.finishTask(owner);
|
|
325
327
|
}
|
|
326
328
|
publish(session) {
|
|
329
|
+
const trace = currentPhoneTrace();
|
|
330
|
+
if (trace) session.report.performance = trace.snapshot();
|
|
327
331
|
session.report.nextExecutionMode = this.repository.executionMode(session.report.owner) ?? session.context.config.phone.executionMode;
|
|
328
332
|
if (session.report.feedback && session.segmentUsage) session.report.feedback = updatePhoneFeedback(session.report, {
|
|
329
333
|
actions: session.report.actions - session.segmentUsage.actions,
|
|
@@ -358,6 +362,35 @@ var PhoneRuntime = class {
|
|
|
358
362
|
if (!phoneAllowsApp(session.device, observation.package)) throw new PhoneError("PHONE_APP_DENIED", "The foreground application is outside this phone session allowlist. Open an allowed app or reopen with appPackage.");
|
|
359
363
|
}
|
|
360
364
|
async execute(owner, raw, context, signal = new AbortController().signal) {
|
|
365
|
+
if (![
|
|
366
|
+
"open",
|
|
367
|
+
"run",
|
|
368
|
+
"step",
|
|
369
|
+
"observe"
|
|
370
|
+
].includes(raw.op)) return this.executeInput(owner, raw, context, signal);
|
|
371
|
+
const trace = new PhoneExecutionTrace();
|
|
372
|
+
return trace.run(async () => {
|
|
373
|
+
try {
|
|
374
|
+
const result = await this.executeInput(owner, raw, context, signal);
|
|
375
|
+
const session = this.sessions.get(owner);
|
|
376
|
+
if (session?.report.performance?.operationId === trace.id) session.report.performance = trace.snapshot();
|
|
377
|
+
return result && typeof result === "object" && "sessionId" in result ? {
|
|
378
|
+
...result,
|
|
379
|
+
performance: trace.snapshot()
|
|
380
|
+
} : result;
|
|
381
|
+
} finally {
|
|
382
|
+
trace.finish();
|
|
383
|
+
log.info({
|
|
384
|
+
conversationId: owner,
|
|
385
|
+
op: raw.op,
|
|
386
|
+
modelRef: context.modelRef,
|
|
387
|
+
phase: "execution_timing",
|
|
388
|
+
performance: trace.snapshot()
|
|
389
|
+
}, "Phone execution timing recorded");
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
async executeInput(owner, raw, context, signal) {
|
|
361
394
|
const input = PhoneInputSchema.parse(raw);
|
|
362
395
|
if (input.op === "request_user") {
|
|
363
396
|
const session = this.sessions.get(owner);
|
|
@@ -664,6 +697,7 @@ var PhoneRuntime = class {
|
|
|
664
697
|
const constraints = [...new Set([...continuing ? previous.constraints : [], ...input.constraints ?? []])];
|
|
665
698
|
if (constraints.length > 12) throw new PhoneError("PHONE_CONSTRAINT_LIMIT", "A phone task supports at most 12 constraints; existing constraints cannot be removed");
|
|
666
699
|
if (!continuing) {
|
|
700
|
+
session.adapter.reset?.();
|
|
667
701
|
session.trajectory = [];
|
|
668
702
|
session.trajectorySummary = [];
|
|
669
703
|
session.taskActiveMs = 0;
|
|
@@ -755,7 +789,10 @@ var PhoneRuntime = class {
|
|
|
755
789
|
session.report.stopReason = "completion_changed";
|
|
756
790
|
}
|
|
757
791
|
const epoch = session.report.controlEpoch;
|
|
792
|
+
const visualOutputs = session.report.task.requestedOutputs.filter((request) => !request.selector);
|
|
793
|
+
if (visualOutputs.length > 1 && context.config.phone.batchReadings && session.adapter.readFields) await this.readOutputFields(session, observation, visualOutputs, context, combined);
|
|
758
794
|
for (const request of session.report.task.requestedOutputs) {
|
|
795
|
+
if (visualOutputs.length > 1 && context.config.phone.batchReadings && session.adapter.readFields) break;
|
|
759
796
|
if (request.selector) continue;
|
|
760
797
|
await this.readScreen(session, observation, request.description, context, combined);
|
|
761
798
|
if (epoch !== session.report.controlEpoch || session.report.controlOwner !== "agent") break;
|
|
@@ -816,6 +853,7 @@ var PhoneRuntime = class {
|
|
|
816
853
|
this.publish(session);
|
|
817
854
|
throw error;
|
|
818
855
|
} finally {
|
|
856
|
+
await this.releaseInput(session);
|
|
819
857
|
session.active = void 0;
|
|
820
858
|
const elapsed = session.budget?.elapsedMs ?? 0;
|
|
821
859
|
session.taskActiveMs = (session.taskActiveMs ?? 0) + elapsed;
|
|
@@ -912,6 +950,7 @@ var PhoneRuntime = class {
|
|
|
912
950
|
if (session.report.status !== "completed") session.report.status = "ready";
|
|
913
951
|
session.report.stopReason = "task_finished";
|
|
914
952
|
session.taskPending = false;
|
|
953
|
+
session.adapter.reset?.();
|
|
915
954
|
session.report.goalPreview = void 0;
|
|
916
955
|
session.report.facts = void 0;
|
|
917
956
|
session.report.readings = void 0;
|
|
@@ -1131,7 +1170,7 @@ var PhoneRuntime = class {
|
|
|
1131
1170
|
afterApp: entry.afterApp
|
|
1132
1171
|
}).slice(0, 250))].slice(-12)
|
|
1133
1172
|
}).slice(-1500),
|
|
1134
|
-
recoveryHint,
|
|
1173
|
+
recoveryHint: recoveryHint ?? (completion ? phoneCompletionGuidance(completion, observation, changed) : void 0),
|
|
1135
1174
|
protocolFeedback,
|
|
1136
1175
|
scenario: input.scenario,
|
|
1137
1176
|
enhancements,
|
|
@@ -1144,7 +1183,11 @@ var PhoneRuntime = class {
|
|
|
1144
1183
|
observation = await this.observe(session, signal);
|
|
1145
1184
|
continue;
|
|
1146
1185
|
}
|
|
1147
|
-
if (!signal.aborted && error instanceof PhoneError && [
|
|
1186
|
+
if (!signal.aborted && error instanceof PhoneError && [
|
|
1187
|
+
"PHONE_MODEL_PROTOCOL",
|
|
1188
|
+
"PHONE_MODEL_TRUNCATED",
|
|
1189
|
+
"PHONE_MODEL_REPETITION"
|
|
1190
|
+
].includes(error.code) && repairs < 1 && session.report.modelRequests < this.modelRequestLimit(session, context)) {
|
|
1148
1191
|
repairs++;
|
|
1149
1192
|
session.report.diagnostics.protocolRepairs++;
|
|
1150
1193
|
protocolFeedback = "Your previous output was invalid or truncated. Return exactly one complete action in the specified format with no extra prose.";
|
|
@@ -1172,21 +1215,38 @@ var PhoneRuntime = class {
|
|
|
1172
1215
|
session.report.diagnostics.completedSubgoals = planning.verifiedSteps;
|
|
1173
1216
|
}
|
|
1174
1217
|
if (decision.kind !== "action") {
|
|
1175
|
-
if (decision.kind === "complete" && !session.report.mock &&
|
|
1176
|
-
completionCorrections++;
|
|
1177
|
-
session.report.diagnostics.completionCorrections++;
|
|
1178
|
-
recoveryHint = `Your completion claim is not verified. These required native UI conditions are not all satisfied: ${JSON.stringify({
|
|
1179
|
-
expectText: input.expectText,
|
|
1180
|
-
...input.completion
|
|
1181
|
-
})}. Recheck the fresh screen, preserve user constraints, and continue if a safe authorized action can satisfy the goal; otherwise report unfinished.`;
|
|
1218
|
+
if (decision.kind === "complete" && !session.report.mock && completion) {
|
|
1182
1219
|
observation.frame.fill(0);
|
|
1183
1220
|
observation = await this.observe(session, signal);
|
|
1184
|
-
|
|
1221
|
+
signal.throwIfAborted();
|
|
1222
|
+
this.guard(session, context);
|
|
1223
|
+
this.allowedScreen(session, observation);
|
|
1224
|
+
if (epoch !== session.report.controlEpoch || session.report.controlOwner !== "agent") continue;
|
|
1225
|
+
const currentChanged = changed || observationSignature(observation) !== previousSignature;
|
|
1226
|
+
if (phoneCompletionSatisfied(completion, observation, currentChanged)) continue;
|
|
1227
|
+
this.recordObservation(session, observation);
|
|
1228
|
+
if (completionCorrections < 2 && session.report.modelRequests < this.modelRequestLimit(session, context)) {
|
|
1229
|
+
completionCorrections++;
|
|
1230
|
+
session.report.diagnostics.completionCorrections++;
|
|
1231
|
+
recoveryHint = phoneCompletionRecoveryHint(completion, observation, currentChanged, completionCorrections);
|
|
1232
|
+
continue;
|
|
1233
|
+
}
|
|
1234
|
+
session.report.status = "paused";
|
|
1235
|
+
session.report.verified = false;
|
|
1236
|
+
session.report.verificationLevel = "none";
|
|
1237
|
+
session.report.controlOwner = "none";
|
|
1238
|
+
session.report.controlEpoch++;
|
|
1239
|
+
session.report.stopReason = "completion_unmet";
|
|
1240
|
+
session.report.errorCode = "PHONE_COMPLETION_UNMET";
|
|
1241
|
+
session.report.message = "The required native UI conditions are still unmet. Inspect the current screen before resuming; no action was generated from the completion conditions.";
|
|
1242
|
+
session.budget?.pause();
|
|
1243
|
+
await session.stream?.revoke();
|
|
1244
|
+
return this.publish(session);
|
|
1185
1245
|
}
|
|
1186
1246
|
session.report.message = decision.kind === "needsUser" ? decision.reason : decision.summary;
|
|
1187
1247
|
if (decision.kind === "complete") {
|
|
1188
1248
|
this.recordObservation(session, observation);
|
|
1189
|
-
await this.readScreen(session, observation, input.goal, context, signal);
|
|
1249
|
+
if (!context.config.phone.batchReadings || !session.adapter.readFields || !session.report.task?.requestedOutputs.some((request) => !request.selector)) await this.readScreen(session, observation, input.goal, context, signal);
|
|
1190
1250
|
if (epoch !== session.report.controlEpoch || session.report.controlOwner !== "agent") return this.publish(session);
|
|
1191
1251
|
}
|
|
1192
1252
|
session.report.status = decision.kind === "needsUser" ? "needs_user" : "completed";
|
|
@@ -1411,6 +1471,58 @@ var PhoneRuntime = class {
|
|
|
1411
1471
|
modelRequestLimit(session, context) {
|
|
1412
1472
|
return Math.min(context.config.phone.maxModelRequests, (session.taskStart?.modelRequests ?? 0) + (session.report.task?.budget?.maxModelRequests ?? 120));
|
|
1413
1473
|
}
|
|
1474
|
+
async readOutputFields(session, observation, fields, context, signal) {
|
|
1475
|
+
const epoch = session.report.controlEpoch;
|
|
1476
|
+
let reason;
|
|
1477
|
+
let values;
|
|
1478
|
+
this.guard(session, context);
|
|
1479
|
+
this.allowedScreen(session, observation);
|
|
1480
|
+
signal.throwIfAborted();
|
|
1481
|
+
if (observation.elements.some((node) => node.password)) reason = "password_field_visible";
|
|
1482
|
+
else if (session.report.modelRequests >= this.modelRequestLimit(session, context)) reason = "model_request_limit";
|
|
1483
|
+
else {
|
|
1484
|
+
session.report.modelRequests++;
|
|
1485
|
+
session.prediction = new AbortController();
|
|
1486
|
+
try {
|
|
1487
|
+
values = await measurePhonePhase("screen_reading", () => session.adapter.readFields({
|
|
1488
|
+
goal: session.report.task.goal,
|
|
1489
|
+
observation,
|
|
1490
|
+
allowedApps: session.device.allowedApps,
|
|
1491
|
+
appAccess: phoneAppAccess(session.device),
|
|
1492
|
+
history: []
|
|
1493
|
+
}, fields, AbortSignal.any([signal, session.prediction.signal])));
|
|
1494
|
+
} catch (error) {
|
|
1495
|
+
signal.throwIfAborted();
|
|
1496
|
+
reason = error instanceof PhoneError ? error.code : "screen_reading_failed";
|
|
1497
|
+
} finally {
|
|
1498
|
+
session.prediction = void 0;
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
signal.throwIfAborted();
|
|
1502
|
+
this.guard(session, context);
|
|
1503
|
+
this.allowedScreen(session, observation);
|
|
1504
|
+
if (epoch !== session.report.controlEpoch || session.report.controlOwner !== "agent") return;
|
|
1505
|
+
for (const field of fields) {
|
|
1506
|
+
const raw = values?.[field.key];
|
|
1507
|
+
const value = raw?.trim() ? raw : void 0;
|
|
1508
|
+
const output = session.report.feedback.outputs.find((output) => output.key === field.key);
|
|
1509
|
+
Object.assign(output, {
|
|
1510
|
+
value: value || void 0,
|
|
1511
|
+
source: "screenshot",
|
|
1512
|
+
verification: value ? "unverified" : "unavailable",
|
|
1513
|
+
frameId: observation.frameId,
|
|
1514
|
+
capturedAt: observation.capturedAt,
|
|
1515
|
+
reason: value ? void 0 : reason ?? "screen_unreadable"
|
|
1516
|
+
});
|
|
1517
|
+
if (value) session.report.readings.push({
|
|
1518
|
+
source: "screenshot",
|
|
1519
|
+
verification: "unverified",
|
|
1520
|
+
text: [value],
|
|
1521
|
+
frameId: observation.frameId,
|
|
1522
|
+
capturedAt: observation.capturedAt
|
|
1523
|
+
});
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1414
1526
|
async readScreen(session, observation, goal, context, signal) {
|
|
1415
1527
|
if (session.report.mock) return;
|
|
1416
1528
|
const reading = {
|
|
@@ -1431,13 +1543,13 @@ var PhoneRuntime = class {
|
|
|
1431
1543
|
session.report.modelRequests++;
|
|
1432
1544
|
session.prediction = new AbortController();
|
|
1433
1545
|
try {
|
|
1434
|
-
const text = await session.adapter.readScreen({
|
|
1546
|
+
const text = await measurePhonePhase("screen_reading", () => session.adapter.readScreen({
|
|
1435
1547
|
goal,
|
|
1436
1548
|
observation,
|
|
1437
1549
|
allowedApps: session.device.allowedApps,
|
|
1438
1550
|
appAccess: phoneAppAccess(session.device),
|
|
1439
1551
|
history: []
|
|
1440
|
-
}, AbortSignal.any([signal, session.prediction.signal]));
|
|
1552
|
+
}, AbortSignal.any([signal, session.prediction.signal])));
|
|
1441
1553
|
signal.throwIfAborted();
|
|
1442
1554
|
this.guard(session, context);
|
|
1443
1555
|
this.allowedScreen(session, observation);
|
|
@@ -1503,16 +1615,18 @@ var PhoneRuntime = class {
|
|
|
1503
1615
|
session.trajectorySummary = session.trajectorySummary.slice(-12);
|
|
1504
1616
|
}
|
|
1505
1617
|
try {
|
|
1506
|
-
await session.driver.execute(session.device.serial, action, observation, signal, settingsPage ? {
|
|
1618
|
+
await measurePhonePhase("dispatch", () => session.driver.execute(session.device.serial, action, observation, signal, settingsPage ? {
|
|
1507
1619
|
settleMs: session.human ? 0 : 350,
|
|
1508
1620
|
settingsPage
|
|
1509
1621
|
} : session.human ? {
|
|
1510
1622
|
settleMs: 0,
|
|
1511
1623
|
...resetTask ? { resetTask: true } : {}
|
|
1512
|
-
} : void 0);
|
|
1624
|
+
} : void 0));
|
|
1513
1625
|
step.dispatch = "completed";
|
|
1514
1626
|
entry.dispatch = "completed";
|
|
1627
|
+
session.adapter.recordAction?.(action, entry.actor === "human" ? "human" : "completed");
|
|
1515
1628
|
} catch (error) {
|
|
1629
|
+
session.adapter.reset?.();
|
|
1516
1630
|
const textFailure = error instanceof PhoneError && ["PHONE_TEXT_INPUT_UNAVAILABLE", "PHONE_TEXT_INPUT_UNCONFIRMED"].includes(error.code);
|
|
1517
1631
|
if (textFailure && error.code === "PHONE_TEXT_INPUT_UNAVAILABLE") {
|
|
1518
1632
|
session.report.steps.pop();
|
|
@@ -1541,6 +1655,7 @@ var PhoneRuntime = class {
|
|
|
1541
1655
|
this.openings.get(owner)?.abort();
|
|
1542
1656
|
const session = this.sessions.get(owner);
|
|
1543
1657
|
if (!session) return { status: "closed" };
|
|
1658
|
+
session.adapter.reset?.();
|
|
1544
1659
|
session.controller.abort();
|
|
1545
1660
|
session.prediction?.abort();
|
|
1546
1661
|
session.human = void 0;
|
|
@@ -1570,6 +1685,8 @@ var PhoneRuntime = class {
|
|
|
1570
1685
|
this.publish(session);
|
|
1571
1686
|
await session.active?.catch(() => {});
|
|
1572
1687
|
await session.io.catch(() => {});
|
|
1688
|
+
await this.releaseInput(session);
|
|
1689
|
+
session.adapter.reset?.();
|
|
1573
1690
|
if (op === "close") this.repository.release(session.device.serial, session.lease);
|
|
1574
1691
|
if (op !== "pause") await this.locationEnvironment?.releaseOwner(owner);
|
|
1575
1692
|
if (op === "cancel") {
|
|
@@ -1584,6 +1701,12 @@ var PhoneRuntime = class {
|
|
|
1584
1701
|
}
|
|
1585
1702
|
return this.publish(session);
|
|
1586
1703
|
}
|
|
1704
|
+
async releaseInput(session) {
|
|
1705
|
+
await session.driver.releaseInput?.().catch(() => log.warn({
|
|
1706
|
+
conversationId: session.report.owner,
|
|
1707
|
+
phase: "input_cleanup"
|
|
1708
|
+
}, "Phone input cleanup failed"));
|
|
1709
|
+
}
|
|
1587
1710
|
async io(session, work) {
|
|
1588
1711
|
const operation = session.io.catch(() => {}).then(async () => {
|
|
1589
1712
|
session.ioBusy = true;
|
|
@@ -1599,7 +1722,8 @@ var PhoneRuntime = class {
|
|
|
1599
1722
|
async observe(session, signal, forText = false) {
|
|
1600
1723
|
return this.io(session, async () => {
|
|
1601
1724
|
signal.throwIfAborted();
|
|
1602
|
-
const
|
|
1725
|
+
const observe = forText && session.driver.observeForText ? session.driver.observeForText : session.driver.observe;
|
|
1726
|
+
const observation = await measurePhonePhase("observation", () => observe.call(session.driver, session.device.serial, signal));
|
|
1603
1727
|
if (phoneAllowsApp(session.device, observation.package)) {
|
|
1604
1728
|
if (Date.now() - session.viewedAt < 3e4 && !terminal.has(session.report.status)) session.frames.set(observation);
|
|
1605
1729
|
} else session.frames.clear();
|
|
@@ -1647,6 +1771,7 @@ var PhoneRuntime = class {
|
|
|
1647
1771
|
});
|
|
1648
1772
|
}
|
|
1649
1773
|
signal.throwIfAborted();
|
|
1774
|
+
if (waited) session.adapter.reset?.();
|
|
1650
1775
|
return waited;
|
|
1651
1776
|
}
|
|
1652
1777
|
startMaintenance() {
|
|
@@ -1790,6 +1915,7 @@ var PhoneRuntime = class {
|
|
|
1790
1915
|
this.publish(session);
|
|
1791
1916
|
try {
|
|
1792
1917
|
await session.stream?.revoke();
|
|
1918
|
+
await this.releaseInput(session);
|
|
1793
1919
|
} catch (error) {
|
|
1794
1920
|
await this.stop(session.report.owner, "cancel");
|
|
1795
1921
|
throw error;
|
|
@@ -1870,6 +1996,7 @@ var PhoneRuntime = class {
|
|
|
1870
1996
|
return this.liveStatus(owner, id, context, client);
|
|
1871
1997
|
}
|
|
1872
1998
|
if (input.op === "takeover" || input.op === "pause") {
|
|
1999
|
+
session.adapter.reset?.();
|
|
1873
2000
|
if (input.op === "takeover" && session.report.mode !== "control") throw new PhoneError("PHONE_OBSERVE_ONLY", "This phone session only allows observation", 403);
|
|
1874
2001
|
session.report.controlOwner = "none";
|
|
1875
2002
|
session.report.controlEpoch++;
|
|
@@ -1880,6 +2007,7 @@ var PhoneRuntime = class {
|
|
|
1880
2007
|
this.publish(session);
|
|
1881
2008
|
await session.stream?.revoke();
|
|
1882
2009
|
await session.io;
|
|
2010
|
+
await this.releaseInput(session);
|
|
1883
2011
|
if (terminal.has(session.report.status) || session.report.steps.at(-1)?.dispatch === "unknown") {
|
|
1884
2012
|
session.report.handoff = "idle";
|
|
1885
2013
|
this.publish(session);
|
|
@@ -1902,6 +2030,7 @@ var PhoneRuntime = class {
|
|
|
1902
2030
|
session.report.controlOwner = "none";
|
|
1903
2031
|
session.report.controlEpoch++;
|
|
1904
2032
|
await session.stream?.revoke();
|
|
2033
|
+
await this.releaseInput(session);
|
|
1905
2034
|
session.report.status = "paused";
|
|
1906
2035
|
session.report.stopReason = "user_paused";
|
|
1907
2036
|
this.publish(session);
|
|
@@ -1914,6 +2043,7 @@ var PhoneRuntime = class {
|
|
|
1914
2043
|
session.report.controlOwner = "none";
|
|
1915
2044
|
this.publish(session);
|
|
1916
2045
|
await session.stream?.revoke();
|
|
2046
|
+
await this.releaseInput(session);
|
|
1917
2047
|
let observation;
|
|
1918
2048
|
try {
|
|
1919
2049
|
observation = await this.observe(session, session.controller.signal);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface PhoneTextProvider {
|
|
2
|
+
pasteText(text: string, signal: AbortSignal): Promise<void>;
|
|
3
|
+
close(): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
/** One operation owns the channel. A failed paste is never replayed on a replacement. */
|
|
6
|
+
export declare class PhoneTextSession {
|
|
7
|
+
private create;
|
|
8
|
+
private provider?;
|
|
9
|
+
private closing;
|
|
10
|
+
private busy;
|
|
11
|
+
constructor(create: (failed: () => void) => Promise<PhoneTextProvider>);
|
|
12
|
+
paste(text: string, signal: AbortSignal): Promise<void>;
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PhoneError, init_contracts } from "./contracts.js";
|
|
2
|
+
//#region src/phone/text-session.ts
|
|
3
|
+
init_contracts();
|
|
4
|
+
/** One operation owns the channel. A failed paste is never replayed on a replacement. */
|
|
5
|
+
var PhoneTextSession = class {
|
|
6
|
+
provider;
|
|
7
|
+
closing = Promise.resolve();
|
|
8
|
+
busy = false;
|
|
9
|
+
constructor(create) {
|
|
10
|
+
this.create = create;
|
|
11
|
+
}
|
|
12
|
+
async paste(text, signal) {
|
|
13
|
+
signal.throwIfAborted();
|
|
14
|
+
if (this.busy) throw new PhoneError("PHONE_INVALID_INPUT", "Concurrent phone text input is not allowed");
|
|
15
|
+
this.busy = true;
|
|
16
|
+
try {
|
|
17
|
+
await this.closing;
|
|
18
|
+
signal.throwIfAborted();
|
|
19
|
+
const provider = this.provider ??= await this.create(() => {
|
|
20
|
+
this.close().catch(() => {});
|
|
21
|
+
});
|
|
22
|
+
signal.throwIfAborted();
|
|
23
|
+
await provider.pasteText(text, signal);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
await this.close().catch(() => {});
|
|
26
|
+
throw error;
|
|
27
|
+
} finally {
|
|
28
|
+
this.busy = false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async close() {
|
|
32
|
+
const provider = this.provider;
|
|
33
|
+
this.provider = void 0;
|
|
34
|
+
if (provider) this.closing = this.closing.catch(() => {}).then(() => provider.close());
|
|
35
|
+
await this.closing;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { PhoneTextSession };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PHONE_UI_DEX = "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Q2hhclNlcXVlbmNlOwARTGphdmEvbGFuZy9DbGFzczsAFUxqYXZhL2xhbmcvRXhjZXB0aW9uOwAhTGphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb247ABNMamF2YS9sYW5nL0ludGVnZXI7ABBMamF2YS9sYW5nL01hdGg7ABJMamF2YS9sYW5nL09iamVjdDsAEkxqYXZhL2xhbmcvU3RyaW5nOwAZTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwASTGphdmEvbGFuZy9TeXN0ZW07ABJMamF2YS9sYW5nL1RocmVhZDsAH0xqYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcjsAGkxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AB5Mb3JnL3htbHB1bGwvdjEvWG1sU2VyaWFsaXplcjsAHE5vIGFjdGl2ZSBhY2Nlc3NpYmlsaXR5IHJvb3QAEFBob25lVWlEdW1wLmphdmEABFRZUEUABVVURi04AAFWAAJWSgACVkwAA1ZMTAAEVkxMSQABWgABWwASW0xqYXZhL2xhbmcvQ2xhc3M7ABNbTGphdmEvbGFuZy9PYmplY3Q7ABNbTGphdmEvbGFuZy9TdHJpbmc7AAFdAAJdWwAjYW5kcm9pZC5hcHAuSVVpQXV0b21hdGlvbkNvbm5lY3Rpb24AImFuZHJvaWQuYXBwLlVpQXV0b21hdGlvbkNvbm5lY3Rpb24ABmFwcGVuZAAJYXR0cmlidXRlAAZib3R0b20ABmJvdW5kcwAFY2xhc3MACWNsaWNrYWJsZQAHY29ubmVjdAAMY29udGVudC1kZXNjAApkaXNjb25uZWN0AARkdW1wAAtlbmREb2N1bWVudAAGZW5kVGFnAAVmbGFncwAHZm9jdXNlZAAHZm9yTmFtZQARZ2V0Qm91bmRzSW5TY3JlZW4ACGdldENoaWxkAA1nZXRDaGlsZENvdW50AAxnZXRDbGFzc05hbWUAFWdldENvbnRlbnREZXNjcmlwdGlvbgAWZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcgAJZ2V0TG9vcGVyAAlnZXRNZXRob2QADmdldFBhY2thZ2VOYW1lABVnZXRSb290SW5BY3RpdmVXaW5kb3cADmdldFNlcnZpY2VJbmZvAAdnZXRUZXh0ABVnZXRWaWV3SWRSZXNvdXJjZU5hbWUACWhpZXJhcmNoeQAGaW52b2tlAAtpc0NsaWNrYWJsZQAJaXNGb2N1c2VkAAppc1Bhc3N3b3JkAA9pc1Zpc2libGVUb1VzZXIABGxlZnQABmxlbmd0aAAEbWFpbgADbWF4AANtaW4AC25ld0luc3RhbmNlAA1uZXdTZXJpYWxpemVyAARub2RlAAVub2RlcwADb3V0AAdwYWNrYWdlAAhwYXNzd29yZAAHcHJpbnRsbgAKcXVpdFNhZmVseQAHcmVjeWNsZQALcmVzb3VyY2UtaWQABXJpZ2h0AAlzZXRPdXRwdXQADnNldFNlcnZpY2VJbmZvAAVzbGVlcAAFc3RhcnQADXN0YXJ0RG9jdW1lbnQACHN0YXJ0VGFnAAlzdWJzdHJpbmcABHRleHQACHRvU3RyaW5nAAN0b3AABXZhbHVlAAd2YWx1ZU9mABZ4b3BjLXBob25lLW9ic2VydmF0aW9uAJ0Bfn5EOHsiYmFja2VuZCI6ImRleCIsImNvbXBpbGF0aW9uLW1vZGUiOiJkZWJ1ZyIsImhhcy1jaGVja3N1bXMiOmZhbHNlLCJtaW4tYXBpIjoyNCwic2hhLTEiOiJhN2FkMThhNzA0NjBiNzk5ZDA0ODJlNDk3YzEwOWE3NWJmN2Y5MWRlIiwidmVyc2lvbiI6IjguMTAuOS1kZXYifQACCgF4HAEYEQEABAAACgCBgATMDQEK5A0BCcQSAQqMDQAAAQAAAKYTAAAAAAAAAAAAAAIAAAAAAAAAAQAAAMgTAAACAAAAyBMAABAAAAAAAAAAAQAAAAAAAAABAAAAfAAAAHAAAAACAAAAIgAAAGACAAADAAAAIQAAAOgCAAAEAAAACAAAAHQEAAAFAAAANwAAALQEAAAGAAAAAQAAAGwGAAABIAAABAAAAIwGAAADIAAABAAAAFILAAABEAAAEgAAALwLAAACIAAAfAAAAFIMAAAEIAAAAQAAAKYTAAAAIAAAAQAAAK4TAAADEAAAAQAAAMgTAAAGIAAAAQAAANATAAAAEAAAAQAAAPATAAA=";
|
|
1
|
+
export declare const PHONE_UI_DEX = "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JwAAAAIAAAAbACkAAQAAACkAAAABAAAABAAAAAIAAAAUAAAAAQAAABsAAAABAAAAKAAAAAIAAAAcACgAAgAAABwAAAACAAAAHAAbAAIAAAAcACcAAgAAABwAHAADAAAAHAAcABwAAAABAAAAAQAAAAEAAAADAAAAAgAAAAQAJAABAAAABQAAAAIAAAANABwAAQAAABAAAAABAAAAEgAAAAIAAAAcABMAAgAAABwAFAADAAAAJQAKAAAAAAABAAAAKgAAAAIAAAAAAAYAAAABLAAKLS1yZXNpZGVudAAGPGluaXQ+ACVBQ1RJT05fQVJHVU1FTlRfU0VUX1RFWFRfQ0hBUlNFUVVFTkNFAAFJAANJSUkAAklMAAFKAAFMAAJMSQADTElJAAJMTAADTExJAANMTEwABExMTEwABExMTFoAA0xMWgACTFoAG0xhaS94b3BjL3Bob25lL1Bob25lVWlEdW1wOwA3TGFuZHJvaWQvYWNjZXNzaWJpbGl0eXNlcnZpY2UvQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvOwAaTGFuZHJvaWQvYXBwL1VpQXV0b21hdGlvbjsAF0xhbmRyb2lkL2dyYXBoaWNzL1JlY3Q7ABNMYW5kcm9pZC9vcy9CdW5kbGU7ABpMYW5kcm9pZC9vcy9IYW5kbGVyVGhyZWFkOwATTGFuZHJvaWQvb3MvTG9vcGVyOwASTGFuZHJvaWQvdXRpbC9YbWw7ADJMYW5kcm9pZC92aWV3L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVJbmZvOwAaTGRhbHZpay9hbm5vdGF0aW9uL1Rocm93czsAGExqYXZhL2lvL0J1ZmZlcmVkUmVhZGVyOwAVTGphdmEvaW8vSW5wdXRTdHJlYW07ABtMamF2YS9pby9JbnB1dFN0cmVhbVJlYWRlcjsAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwAQTGphdmEvaW8vUmVhZGVyOwAWTGphdmEvaW8vU3RyaW5nV3JpdGVyOwAQTGphdmEvaW8vV3JpdGVyOwATTGphdmEvbGFuZy9Cb29sZWFuOwAYTGphdmEvbGFuZy9DaGFyU2VxdWVuY2U7ABFMamF2YS9sYW5nL0NsYXNzOwAVTGphdmEvbGFuZy9FeGNlcHRpb247ACFMamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbjsAE0xqYXZhL2xhbmcvSW50ZWdlcjsAEExqYXZhL2xhbmcvTWF0aDsAIUxqYXZhL2xhbmcvTm9TdWNoTWV0aG9kRXhjZXB0aW9uOwASTGphdmEvbGFuZy9PYmplY3Q7ABJMamF2YS9sYW5nL1N0cmluZzsAGUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsAEkxqYXZhL2xhbmcvU3lzdGVtOwASTGphdmEvbGFuZy9UaHJlYWQ7AB9MamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3I7ABpMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwASTGphdmEvdXRpbC9BcnJheXM7ABBMamF2YS91dGlsL0xpc3Q7ABVMb3JnL2pzb24vSlNPTk9iamVjdDsAHkxvcmcveG1scHVsbC92MS9YbWxTZXJpYWxpemVyOwAQUGhvbmVVaUR1bXAuamF2YQAEVFlQRQAFVVRGLTgAAVYAAlZKAAJWTAADVkxMAARWTExJAAFaAANaSUwAAlpMAAFbABJbTGphdmEvbGFuZy9DbGFzczsAE1tMamF2YS9sYW5nL09iamVjdDsAE1tMamF2YS9sYW5nL1N0cmluZzsAAV0AAl1bACNhbmRyb2lkLmFwcC5JVWlBdXRvbWF0aW9uQ29ubmVjdGlvbgAiYW5kcm9pZC5hcHAuVWlBdXRvbWF0aW9uQ29ubmVjdGlvbgA5YW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUludGVyYWN0aW9uQ2xpZW50AANhcHAABmFwcGVuZAAGYXNMaXN0AAlhdHRyaWJ1dGUABmJlZm9yZQAGYm90dG9tAAZib3VuZHMABWNsYXNzAApjbGVhckNhY2hlAAljbGlja2FibGUADGNvbmZpcm1hdGlvbgAHY29ubmVjdAAIY29udGFpbnMADGNvbnRlbnQtZGVzYwAKZGlzY29ubmVjdAAEZHVtcAAGZWRpdG9yAAtlbmREb2N1bWVudAAGZW5kVGFnAAZlcXVhbHMABWVycm9yAAlmaW5kRm9jdXMABWZsYWdzAAVmbHVzaAAFZm9jdXMAB2ZvY3VzZWQAB2Zvck5hbWUAEWdldEJvdW5kc0luU2NyZWVuAAhnZXRDaGlsZAANZ2V0Q2hpbGRDb3VudAAMZ2V0Q2xhc3NOYW1lABVnZXRDb250ZW50RGVzY3JpcHRpb24AFmdldERlY2xhcmVkQ29uc3RydWN0b3IAC2dldEluc3RhbmNlAAZnZXRJbnQACWdldExvb3BlcgANZ2V0TWFpbkxvb3BlcgAKZ2V0TWVzc2FnZQAJZ2V0TWV0aG9kAA5nZXRQYWNrYWdlTmFtZQAVZ2V0Um9vdEluQWN0aXZlV2luZG93AA5nZXRTZXJ2aWNlSW5mbwAJZ2V0U3RyaW5nAAdnZXRUZXh0ABVnZXRWaWV3SWRSZXNvdXJjZU5hbWUACWhpZXJhcmNoeQACaWQACGlkZW50aXR5AAJpbgAGaW52b2tlAAtpc0NsaWNrYWJsZQAKaXNFZGl0YWJsZQAJaXNFbmFibGVkAAlpc0ZvY3VzZWQACmlzUGFzc3dvcmQAD2lzVmlzaWJsZVRvVXNlcgAEbGVmdAAGbGVuZ3RoAARtYWluAANtYXgAA21pbgALbmV3SW5zdGFuY2UADW5ld1NlcmlhbGl6ZXIAB25vLXJvb3QABG5vZGUABW5vZGVzAAJvawACb3AAA291dAAHcGFja2FnZQAIcGFzc3dvcmQADXBlcmZvcm1BY3Rpb24AEXByZXBhcmVNYWluTG9vcGVyAAdwcmludGxuAANwdXQAD3B1dENoYXJTZXF1ZW5jZQAKcXVpdFNhZmVseQAIcmVhZExpbmUAB3JlY3ljbGUAC3Jlc291cmNlLWlkAApyZXNvdXJjZUlkAAVyaWdodAAJc2V0T3V0cHV0AA5zZXRTZXJ2aWNlSW5mbwAHc2V0VGV4dAAFc2xlZXAACHNuYXBzaG90AA5zdGFibGVTbmFwc2hvdAAFc3RhcnQADXN0YXJ0RG9jdW1lbnQACHN0YXJ0VGFnAAlzdWJzdHJpbmcABnRhcmdldAAEdGV4dAAIdG9TdHJpbmcAA3RvcAALdW5jb25maXJtZWQAC3Vuc3VwcG9ydGVkAAV2YWx1ZQAHdmFsdWVPZgAFd3JpdGUAA3htbAAWeG9wYy1waG9uZS1vYnNlcnZhdGlvbgCdAX5+RDh7ImJhY2tlbmQiOiJkZXgiLCJjb21waWxhdGlvbi1tb2RlIjoiZGVidWciLCJoYXMtY2hlY2tzdW1zIjpmYWxzZSwibWluLWFwaSI6MjQsInNoYS0xIjoiYTdhZDE4YTcwNDYwYjc5OWQwNDgyZTQ5N2MxMDlhNzViZjdmOTFkZSIsInZlcnNpb24iOiI4LjEwLjktZGV2In0AAgsBrQEcARgWAQAJAAAKAIGABIAZAQqYGQEKnBoBCswSAQn8HgEKjCUBCsAWAQr0FwEKwBgAAQAAAPIfAAAAAAAAAAAAAAcAAAAAAAAAAQAAACggAAACAAAAKCAAAAMAAAAoIAAABAAAACggAAAFAAAAKCAAAAYAAAAoIAAABwAAACggAAAQAAAAAAAAAAEAAAAAAAAAAQAAALMAAABwAAAAAgAAACsAAAA8AwAAAwAAADEAAADoAwAABAAAAAkAAAA0BgAABQAAAFYAAAB8BgAABgAAAAEAAAAsCQAAASAAAAkAAABMCQAAAyAAAAkAAAD6EwAAARAAAB0AAADwFAAAAiAAALMAAADkFQAABCAAAAEAAADyHwAAACAAAAEAAAD7HwAAAxAAAAEAAAAoIAAABiAAAAEAAAAwIAAAABAAAAEAAAB4IAAA";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/phone/ui-dump-binary.ts
|
|
2
|
-
const PHONE_UI_DEX = "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Q2hhclNlcXVlbmNlOwARTGphdmEvbGFuZy9DbGFzczsAFUxqYXZhL2xhbmcvRXhjZXB0aW9uOwAhTGphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb247ABNMamF2YS9sYW5nL0ludGVnZXI7ABBMamF2YS9sYW5nL01hdGg7ABJMamF2YS9sYW5nL09iamVjdDsAEkxqYXZhL2xhbmcvU3RyaW5nOwAZTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwASTGphdmEvbGFuZy9TeXN0ZW07ABJMamF2YS9sYW5nL1RocmVhZDsAH0xqYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcjsAGkxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AB5Mb3JnL3htbHB1bGwvdjEvWG1sU2VyaWFsaXplcjsAHE5vIGFjdGl2ZSBhY2Nlc3NpYmlsaXR5IHJvb3QAEFBob25lVWlEdW1wLmphdmEABFRZUEUABVVURi04AAFWAAJWSgACVkwAA1ZMTAAEVkxMSQABWgABWwASW0xqYXZhL2xhbmcvQ2xhc3M7ABNbTGphdmEvbGFuZy9PYmplY3Q7ABNbTGphdmEvbGFuZy9TdHJpbmc7AAFdAAJdWwAjYW5kcm9pZC5hcHAuSVVpQXV0b21hdGlvbkNvbm5lY3Rpb24AImFuZHJvaWQuYXBwLlVpQXV0b21hdGlvbkNvbm5lY3Rpb24ABmFwcGVuZAAJYXR0cmlidXRlAAZib3R0b20ABmJvdW5kcwAFY2xhc3MACWNsaWNrYWJsZQAHY29ubmVjdAAMY29udGVudC1kZXNjAApkaXNjb25uZWN0AARkdW1wAAtlbmREb2N1bWVudAAGZW5kVGFnAAVmbGFncwAHZm9jdXNlZAAHZm9yTmFtZQARZ2V0Qm91bmRzSW5TY3JlZW4ACGdldENoaWxkAA1nZXRDaGlsZENvdW50AAxnZXRDbGFzc05hbWUAFWdldENvbnRlbnREZXNjcmlwdGlvbgAWZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcgAJZ2V0TG9vcGVyAAlnZXRNZXRob2QADmdldFBhY2thZ2VOYW1lABVnZXRSb290SW5BY3RpdmVXaW5kb3cADmdldFNlcnZpY2VJbmZvAAdnZXRUZXh0ABVnZXRWaWV3SWRSZXNvdXJjZU5hbWUACWhpZXJhcmNoeQAGaW52b2tlAAtpc0NsaWNrYWJsZQAJaXNGb2N1c2VkAAppc1Bhc3N3b3JkAA9pc1Zpc2libGVUb1VzZXIABGxlZnQABmxlbmd0aAAEbWFpbgADbWF4AANtaW4AC25ld0luc3RhbmNlAA1uZXdTZXJpYWxpemVyAARub2RlAAVub2RlcwADb3V0AAdwYWNrYWdlAAhwYXNzd29yZAAHcHJpbnRsbgAKcXVpdFNhZmVseQAHcmVjeWNsZQALcmVzb3VyY2UtaWQABXJpZ2h0AAlzZXRPdXRwdXQADnNldFNlcnZpY2VJbmZvAAVzbGVlcAAFc3RhcnQADXN0YXJ0RG9jdW1lbnQACHN0YXJ0VGFnAAlzdWJzdHJpbmcABHRleHQACHRvU3RyaW5nAAN0b3AABXZhbHVlAAd2YWx1ZU9mABZ4b3BjLXBob25lLW9ic2VydmF0aW9uAJ0Bfn5EOHsiYmFja2VuZCI6ImRleCIsImNvbXBpbGF0aW9uLW1vZGUiOiJkZWJ1ZyIsImhhcy1jaGVja3N1bXMiOmZhbHNlLCJtaW4tYXBpIjoyNCwic2hhLTEiOiJhN2FkMThhNzA0NjBiNzk5ZDA0ODJlNDk3YzEwOWE3NWJmN2Y5MWRlIiwidmVyc2lvbiI6IjguMTAuOS1kZXYifQACCgF4HAEYEQEABAAACgCBgATMDQEK5A0BCcQSAQqMDQAAAQAAAKYTAAAAAAAAAAAAAAIAAAAAAAAAAQAAAMgTAAACAAAAyBMAABAAAAAAAAAAAQAAAAAAAAABAAAAfAAAAHAAAAACAAAAIgAAAGACAAADAAAAIQAAAOgCAAAEAAAACAAAAHQEAAAFAAAANwAAALQEAAAGAAAAAQAAAGwGAAABIAAABAAAAIwGAAADIAAABAAAAFILAAABEAAAEgAAALwLAAACIAAAfAAAAFIMAAAEIAAAAQAAAKYTAAAAIAAAAQAAAK4TAAADEAAAAQAAAMgTAAAGIAAAAQAAANATAAAAEAAAAQAAAPATAAA=";
|
|
2
|
+
const PHONE_UI_DEX = "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JwAAAAIAAAAbACkAAQAAACkAAAABAAAABAAAAAIAAAAUAAAAAQAAABsAAAABAAAAKAAAAAIAAAAcACgAAgAAABwAAAACAAAAHAAbAAIAAAAcACcAAgAAABwAHAADAAAAHAAcABwAAAABAAAAAQAAAAEAAAADAAAAAgAAAAQAJAABAAAABQAAAAIAAAANABwAAQAAABAAAAABAAAAEgAAAAIAAAAcABMAAgAAABwAFAADAAAAJQAKAAAAAAABAAAAKgAAAAIAAAAAAAYAAAABLAAKLS1yZXNpZGVudAAGPGluaXQ+ACVBQ1RJT05fQVJHVU1FTlRfU0VUX1RFWFRfQ0hBUlNFUVVFTkNFAAFJAANJSUkAAklMAAFKAAFMAAJMSQADTElJAAJMTAADTExJAANMTEwABExMTEwABExMTFoAA0xMWgACTFoAG0xhaS94b3BjL3Bob25lL1Bob25lVWlEdW1wOwA3TGFuZHJvaWQvYWNjZXNzaWJpbGl0eXNlcnZpY2UvQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvOwAaTGFuZHJvaWQvYXBwL1VpQXV0b21hdGlvbjsAF0xhbmRyb2lkL2dyYXBoaWNzL1JlY3Q7ABNMYW5kcm9pZC9vcy9CdW5kbGU7ABpMYW5kcm9pZC9vcy9IYW5kbGVyVGhyZWFkOwATTGFuZHJvaWQvb3MvTG9vcGVyOwASTGFuZHJvaWQvdXRpbC9YbWw7ADJMYW5kcm9pZC92aWV3L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVJbmZvOwAaTGRhbHZpay9hbm5vdGF0aW9uL1Rocm93czsAGExqYXZhL2lvL0J1ZmZlcmVkUmVhZGVyOwAVTGphdmEvaW8vSW5wdXRTdHJlYW07ABtMamF2YS9pby9JbnB1dFN0cmVhbVJlYWRlcjsAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwAQTGphdmEvaW8vUmVhZGVyOwAWTGphdmEvaW8vU3RyaW5nV3JpdGVyOwAQTGphdmEvaW8vV3JpdGVyOwATTGphdmEvbGFuZy9Cb29sZWFuOwAYTGphdmEvbGFuZy9DaGFyU2VxdWVuY2U7ABFMamF2YS9sYW5nL0NsYXNzOwAVTGphdmEvbGFuZy9FeGNlcHRpb247ACFMamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbjsAE0xqYXZhL2xhbmcvSW50ZWdlcjsAEExqYXZhL2xhbmcvTWF0aDsAIUxqYXZhL2xhbmcvTm9TdWNoTWV0aG9kRXhjZXB0aW9uOwASTGphdmEvbGFuZy9PYmplY3Q7ABJMamF2YS9sYW5nL1N0cmluZzsAGUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsAEkxqYXZhL2xhbmcvU3lzdGVtOwASTGphdmEvbGFuZy9UaHJlYWQ7AB9MamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3I7ABpMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwASTGphdmEvdXRpbC9BcnJheXM7ABBMamF2YS91dGlsL0xpc3Q7ABVMb3JnL2pzb24vSlNPTk9iamVjdDsAHkxvcmcveG1scHVsbC92MS9YbWxTZXJpYWxpemVyOwAQUGhvbmVVaUR1bXAuamF2YQAEVFlQRQAFVVRGLTgAAVYAAlZKAAJWTAADVkxMAARWTExJAAFaAANaSUwAAlpMAAFbABJbTGphdmEvbGFuZy9DbGFzczsAE1tMamF2YS9sYW5nL09iamVjdDsAE1tMamF2YS9sYW5nL1N0cmluZzsAAV0AAl1bACNhbmRyb2lkLmFwcC5JVWlBdXRvbWF0aW9uQ29ubmVjdGlvbgAiYW5kcm9pZC5hcHAuVWlBdXRvbWF0aW9uQ29ubmVjdGlvbgA5YW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUludGVyYWN0aW9uQ2xpZW50AANhcHAABmFwcGVuZAAGYXNMaXN0AAlhdHRyaWJ1dGUABmJlZm9yZQAGYm90dG9tAAZib3VuZHMABWNsYXNzAApjbGVhckNhY2hlAAljbGlja2FibGUADGNvbmZpcm1hdGlvbgAHY29ubmVjdAAIY29udGFpbnMADGNvbnRlbnQtZGVzYwAKZGlzY29ubmVjdAAEZHVtcAAGZWRpdG9yAAtlbmREb2N1bWVudAAGZW5kVGFnAAZlcXVhbHMABWVycm9yAAlmaW5kRm9jdXMABWZsYWdzAAVmbHVzaAAFZm9jdXMAB2ZvY3VzZWQAB2Zvck5hbWUAEWdldEJvdW5kc0luU2NyZWVuAAhnZXRDaGlsZAANZ2V0Q2hpbGRDb3VudAAMZ2V0Q2xhc3NOYW1lABVnZXRDb250ZW50RGVzY3JpcHRpb24AFmdldERlY2xhcmVkQ29uc3RydWN0b3IAC2dldEluc3RhbmNlAAZnZXRJbnQACWdldExvb3BlcgANZ2V0TWFpbkxvb3BlcgAKZ2V0TWVzc2FnZQAJZ2V0TWV0aG9kAA5nZXRQYWNrYWdlTmFtZQAVZ2V0Um9vdEluQWN0aXZlV2luZG93AA5nZXRTZXJ2aWNlSW5mbwAJZ2V0U3RyaW5nAAdnZXRUZXh0ABVnZXRWaWV3SWRSZXNvdXJjZU5hbWUACWhpZXJhcmNoeQACaWQACGlkZW50aXR5AAJpbgAGaW52b2tlAAtpc0NsaWNrYWJsZQAKaXNFZGl0YWJsZQAJaXNFbmFibGVkAAlpc0ZvY3VzZWQACmlzUGFzc3dvcmQAD2lzVmlzaWJsZVRvVXNlcgAEbGVmdAAGbGVuZ3RoAARtYWluAANtYXgAA21pbgALbmV3SW5zdGFuY2UADW5ld1NlcmlhbGl6ZXIAB25vLXJvb3QABG5vZGUABW5vZGVzAAJvawACb3AAA291dAAHcGFja2FnZQAIcGFzc3dvcmQADXBlcmZvcm1BY3Rpb24AEXByZXBhcmVNYWluTG9vcGVyAAdwcmludGxuAANwdXQAD3B1dENoYXJTZXF1ZW5jZQAKcXVpdFNhZmVseQAIcmVhZExpbmUAB3JlY3ljbGUAC3Jlc291cmNlLWlkAApyZXNvdXJjZUlkAAVyaWdodAAJc2V0T3V0cHV0AA5zZXRTZXJ2aWNlSW5mbwAHc2V0VGV4dAAFc2xlZXAACHNuYXBzaG90AA5zdGFibGVTbmFwc2hvdAAFc3RhcnQADXN0YXJ0RG9jdW1lbnQACHN0YXJ0VGFnAAlzdWJzdHJpbmcABnRhcmdldAAEdGV4dAAIdG9TdHJpbmcAA3RvcAALdW5jb25maXJtZWQAC3Vuc3VwcG9ydGVkAAV2YWx1ZQAHdmFsdWVPZgAFd3JpdGUAA3htbAAWeG9wYy1waG9uZS1vYnNlcnZhdGlvbgCdAX5+RDh7ImJhY2tlbmQiOiJkZXgiLCJjb21waWxhdGlvbi1tb2RlIjoiZGVidWciLCJoYXMtY2hlY2tzdW1zIjpmYWxzZSwibWluLWFwaSI6MjQsInNoYS0xIjoiYTdhZDE4YTcwNDYwYjc5OWQwNDgyZTQ5N2MxMDlhNzViZjdmOTFkZSIsInZlcnNpb24iOiI4LjEwLjktZGV2In0AAgsBrQEcARgWAQAJAAAKAIGABIAZAQqYGQEKnBoBCswSAQn8HgEKjCUBCsAWAQr0FwEKwBgAAQAAAPIfAAAAAAAAAAAAAAcAAAAAAAAAAQAAACggAAACAAAAKCAAAAMAAAAoIAAABAAAACggAAAFAAAAKCAAAAYAAAAoIAAABwAAACggAAAQAAAAAAAAAAEAAAAAAAAAAQAAALMAAABwAAAAAgAAACsAAAA8AwAAAwAAADEAAADoAwAABAAAAAkAAAA0BgAABQAAAFYAAAB8BgAABgAAAAEAAAAsCQAAASAAAAkAAABMCQAAAyAAAAkAAAD6EwAAARAAAB0AAADwFAAAAiAAALMAAADkFQAABCAAAAEAAADyHwAAACAAAAEAAAD7HwAAAxAAAAEAAAAoIAAABiAAAAEAAAAwIAAAABAAAAEAAAB4IAAA";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { PHONE_UI_DEX };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type PhoneElement } from './contracts.js';
|
|
2
|
+
export interface PhoneUiTransport {
|
|
3
|
+
readable: AsyncIterable<Uint8Array>;
|
|
4
|
+
write(data: Uint8Array): Promise<void>;
|
|
5
|
+
close(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
/** One request in flight, bounded framing, no replay after transport or confirmation failure. */
|
|
8
|
+
export declare class PhoneUiSession {
|
|
9
|
+
private transport;
|
|
10
|
+
private sequence;
|
|
11
|
+
private busy;
|
|
12
|
+
private closed;
|
|
13
|
+
private closing?;
|
|
14
|
+
private buffer;
|
|
15
|
+
private iterator;
|
|
16
|
+
constructor(transport: PhoneUiTransport);
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
private request;
|
|
19
|
+
snapshot(signal: AbortSignal): Promise<string>;
|
|
20
|
+
replace(app: string, target: PhoneElement, text: string, signal: AbortSignal): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare function openLocalPhoneUi(adbPath: string, serial: string, signal: AbortSignal): Promise<PhoneUiSession>;
|