@xopcai/xopc 0.0.420 → 0.0.422

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.
Files changed (414) hide show
  1. package/dist/browser-ext/dist/background.js +184 -2
  2. package/dist/browser-ext/dist/sidepanel.js +9 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store-DnqOM8GN.js → activity-store-CvJ9rdwP.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-1UABT2KS.js → agent-avatar-dicebear-CFP6g4w7.js} +1 -1
  7. package/dist/gateway/static/root/assets/agent-avatar-display-BHBe88Gu.js +2 -0
  8. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DlGRuKMv.js +1 -0
  9. package/dist/gateway/static/root/assets/agent-plugin-dialog-C_Dm-u6_.js +1 -0
  10. package/dist/gateway/static/root/assets/{agents-O7mago-m.js → agents-BdVJHOiK.js} +5 -5
  11. package/dist/gateway/static/root/assets/{agents-admin-api-CyjykMEh.js → agents-admin-api-Do1Pza0R.js} +1 -1
  12. package/dist/gateway/static/root/assets/{api-Ddrs70xV.js → api-BQv5dLcH.js} +1 -1
  13. package/dist/gateway/static/root/assets/{api-C1dxxDZx.js → api-ONg37_fH.js} +1 -1
  14. package/dist/gateway/static/root/assets/app-link-1j40sJ-z.js +1 -0
  15. package/dist/gateway/static/root/assets/app-management-settings-panel-B4Wqhf4J.js +1 -0
  16. package/dist/gateway/static/root/assets/appearance-settings-Dm1kRzKL.js +1 -0
  17. package/dist/gateway/static/root/assets/apps-page-D1MMk1P7.js +1 -0
  18. package/dist/gateway/static/root/assets/{archive-plugin-n5lPr79c.js → archive-plugin-p_yLkyaC.js} +1 -1
  19. package/dist/gateway/static/root/assets/automation-api-DQaWBR03.js +1 -0
  20. package/dist/gateway/static/root/assets/automation-result-state-CO_243JM.js +1 -0
  21. package/dist/gateway/static/root/assets/automation-task-card-D2p9qlYE.js +3 -0
  22. package/dist/gateway/static/root/assets/{automations-page-oLsNzu_6.js → automations-page-Ba64H37d.js} +1 -1
  23. package/dist/gateway/static/root/assets/automations-workspace-BkzC3oIM.js +9 -0
  24. package/dist/gateway/static/root/assets/{binary-plugins-D9VW7dWP.js → binary-plugins-B-6kyqtt.js} +1 -1
  25. package/dist/gateway/static/root/assets/{block-editor-C477bTtO.js → block-editor-B5ysJ96n.js} +4 -4
  26. package/dist/gateway/static/root/assets/{browser-automation-inputs-CCiYXxmh.js → browser-automation-inputs-C2A3NIt3.js} +1 -1
  27. package/dist/gateway/static/root/assets/browser-automations-page-CnbXFw1_.js +3 -0
  28. package/dist/gateway/static/root/assets/{browser-control-api-Y3fvmeBk.js → browser-control-api-Aj_seKE9.js} +1 -1
  29. package/dist/gateway/static/root/assets/{browser-settings-page-DjkGahlz.js → browser-settings-page-C7fxPq_z.js} +2 -2
  30. package/dist/gateway/static/root/assets/{capabilities-DAyA681v.js → capabilities-BgtCwC_E.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capabilities-DRVXLssH.js → capabilities-DOTgaSgA.js} +1 -1
  32. package/dist/gateway/static/root/assets/capabilities-page-m3b9sLFG.js +2 -0
  33. package/dist/gateway/static/root/assets/capabilities-settings-panel-pYWZtPeU.js +8 -0
  34. package/dist/gateway/static/root/assets/channels-DGpRM6pj.js +1 -0
  35. package/dist/gateway/static/root/assets/{chat-agents-api-D5nR_JVe.js → chat-agents-api-EvJ_Wvuc.js} +1 -1
  36. package/dist/gateway/static/root/assets/{chat-chart-block-K2t333qv.js → chat-chart-block-BQDbHLcw.js} +1 -1
  37. package/dist/gateway/static/root/assets/chat-page-GF9NIuZN.js +72 -0
  38. package/dist/gateway/static/root/assets/{chat-terminal-dock-CkFG6mA3.js → chat-terminal-dock-DHFTGoEp.js} +2 -2
  39. package/dist/gateway/static/root/assets/{list-filter-COkzTdOz.js → clipboard-copy-DuJk5WD6.js} +1 -1
  40. package/dist/gateway/static/root/assets/{command-palette-api-Do_66X1B.js → command-palette-api-DPA_yEuy.js} +1 -1
  41. package/dist/gateway/static/root/assets/composer-payload-handoff-BTjauSNp.js +1 -0
  42. package/dist/gateway/static/root/assets/{computer-settings-page-DBxOcMko.js → computer-settings-page-BFSSQfcx.js} +1 -1
  43. package/dist/gateway/static/root/assets/connected-providers-grid-DM2glQN3.js +1 -0
  44. package/dist/gateway/static/root/assets/{connector-service-page-rWpnchb3.js → connector-service-page-CFvg58qa.js} +1 -1
  45. package/dist/gateway/static/root/assets/{connectors-api-DIBG72k4.js → connectors-api-CbC6Yht5.js} +1 -1
  46. package/dist/gateway/static/root/assets/connectors-page-D7pipFHA.js +1 -0
  47. package/dist/gateway/static/root/assets/date-picker-Dd3MbG0x.js +1 -0
  48. package/dist/gateway/static/root/assets/{dependency-picker-7SpSfDSg.js → dependency-picker-DcsHg2ml.js} +1 -1
  49. package/dist/gateway/static/root/assets/desktop-pet-DldzQT2h.js +1 -0
  50. package/dist/gateway/static/root/assets/desktop-pet-settings-CYdI4KxB.js +1 -0
  51. package/dist/gateway/static/root/assets/{dev-view-store-57HgVuZ6.js → dev-view-store-JiJv585f.js} +1 -1
  52. package/dist/gateway/static/root/assets/device-pairing-wizard-D8cLc41G.js +1 -0
  53. package/dist/gateway/static/root/assets/{directory-picker-path-field-D4jMhpka.js → directory-picker-path-field-8WOXv8zw.js} +1 -1
  54. package/dist/gateway/static/root/assets/discussion-annotation-sync-B-grSe0w.js +1 -0
  55. package/dist/gateway/static/root/assets/{dist-DNCdG_qB.js → dist-D3lWNSe7.js} +1 -1
  56. package/dist/gateway/static/root/assets/{extension-debug-page-BsK2LMXQ.js → extension-debug-page-EEQkTNEu.js} +1 -1
  57. package/dist/gateway/static/root/assets/extension-iframe-host-vlZVeMCY.js +1 -0
  58. package/dist/gateway/static/root/assets/{extension-marketplace-api-CVJPqJOB.js → extension-marketplace-api-_o2In_al.js} +1 -1
  59. package/dist/gateway/static/root/assets/extension-page-CPrT111s.js +1 -0
  60. package/dist/gateway/static/root/assets/{extension-provider-Byrd8Sor.js → extension-provider-B2Mf3FBu.js} +1 -1
  61. package/dist/gateway/static/root/assets/extension-settings-page-CznJEgWV.js +1 -0
  62. package/dist/gateway/static/root/assets/{file-preview-surface-BlprUrIs.js → file-preview-surface-7h8_fZul.js} +1 -1
  63. package/dist/gateway/static/root/assets/{gateway-config-swr-BAmUhiP1.js → gateway-config-swr-DbbNEOKj.js} +1 -1
  64. package/dist/gateway/static/root/assets/{gateway-realtime-CsykKL4l.js → gateway-realtime-D20ZrAuM.js} +1 -1
  65. package/dist/gateway/static/root/assets/gateway-realtime-store-C6sMzYDT.js +1 -0
  66. package/dist/gateway/static/root/assets/gateway-restart-5ut-lhJm.js +1 -0
  67. package/dist/gateway/static/root/assets/{gateway-settings-BA5-Uuwx.js → gateway-settings-BCf_cibp.js} +1 -1
  68. package/dist/gateway/static/root/assets/{gateway-startup-retry-CtUB3g6N.js → gateway-startup-retry-DlHL0DpH.js} +1 -1
  69. package/dist/gateway/static/root/assets/{global-defaults-api-CINf-C6a.js → global-defaults-api-CmODomcV.js} +1 -1
  70. package/dist/gateway/static/root/assets/home-page-uz22TRB-.js +2 -0
  71. package/dist/gateway/static/root/assets/image-generation-api-dzPnpUFu.js +1 -0
  72. package/dist/gateway/static/root/assets/{imports-page-BWShtGRQ.js → imports-page-ChBoNMyE.js} +1 -1
  73. package/dist/gateway/static/root/assets/index-CSIg7V1A.js +11 -0
  74. package/dist/gateway/static/root/assets/index-Dv8mUlNN.css +1 -0
  75. package/dist/gateway/static/root/assets/install-connector-dialog-CNcdQDX0.js +1 -0
  76. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CdM4BQwp.js → keyboard-shortcuts-settings-CRbYq2_g.js} +1 -1
  77. package/dist/gateway/static/root/assets/list-filter-CIPvpfLA.js +1 -0
  78. package/dist/gateway/static/root/assets/local-app-workbench-page-04cX5TJu.js +1 -0
  79. package/dist/gateway/static/root/assets/{local-apps-page-CxyRVfjD.js → local-apps-page-fWM0FEhN.js} +1 -1
  80. package/dist/gateway/static/root/assets/{local-session-drafts-B9ZPwotC.js → local-session-drafts-ClrSe5mH.js} +1 -1
  81. package/dist/gateway/static/root/assets/{locale-store-lIXD1FMw.js → locale-store-VNjH18Dj.js} +1 -1
  82. package/dist/gateway/static/root/assets/logs-page-6GanGLrm.js +2 -0
  83. package/dist/gateway/static/root/assets/management-settings-BxD_lc4E.js +1 -0
  84. package/dist/gateway/static/root/assets/{markdown-view-CJt-i2Dp.js → markdown-view-DLCBYWtx.js} +4 -4
  85. package/dist/gateway/static/root/assets/{media-plugins-D_bR23mA.js → media-plugins-BvtNwKFb.js} +1 -1
  86. package/dist/gateway/static/root/assets/messages-Btr7C0hF.js +3 -0
  87. package/dist/gateway/static/root/assets/model-selector-DYUnp917.js +1 -0
  88. package/dist/gateway/static/root/assets/{models-hub-cache-za2fWJLg.js → models-hub-cache-_qE7L-_H.js} +1 -1
  89. package/dist/gateway/static/root/assets/navigation-D62kPsA9.js +1 -0
  90. package/dist/gateway/static/root/assets/note-detail-panel-bjRZesmS.js +5 -0
  91. package/dist/gateway/static/root/assets/note-image-lightbox-D7Jqb75C.js +1 -0
  92. package/dist/gateway/static/root/assets/{notes-api-C_458rv5.js → notes-api-Bxa11X3a.js} +1 -1
  93. package/dist/gateway/static/root/assets/notes-page-D2QpJ3WZ.js +8 -0
  94. package/dist/gateway/static/root/assets/{oauth-api-C3X9FLYw.js → oauth-api-DIE4UpP7.js} +1 -1
  95. package/dist/gateway/static/root/assets/{oauth-provider-connect-H81se_3n.js → oauth-provider-connect-B95tiddN.js} +1 -1
  96. package/dist/gateway/static/root/assets/open-capability-settings-Cvb65hQB.js +1 -0
  97. package/dist/gateway/static/root/assets/{page-context-capture-button-BkAlQ7cB.js → page-context-capture-button-C-QbbwmN.js} +1 -1
  98. package/dist/gateway/static/root/assets/{page-context-draft-ClLgaOaD.js → page-context-draft-BHmOfksL.js} +1 -1
  99. package/dist/gateway/static/root/assets/page-header-store-bPV8_tKL.js +1 -0
  100. package/dist/gateway/static/root/assets/{personal-avatar-BLtHt8fV.js → personal-avatar-nXrmMfrV.js} +1 -1
  101. package/dist/gateway/static/root/assets/personal-page-BCwlYT3F.js +1 -0
  102. package/dist/gateway/static/root/assets/personal-settings-panel-vkYmXK8h.js +1 -0
  103. package/dist/gateway/static/root/assets/{phone-dependencies-card-DISHarj8.js → phone-dependencies-card-CZDAxTWv.js} +1 -1
  104. package/dist/gateway/static/root/assets/phone-model-picker-4Snfs8Hq.js +1 -0
  105. package/dist/gateway/static/root/assets/phone-settings-page-D8HperfA.js +1 -0
  106. package/dist/gateway/static/root/assets/{phone-workspace-store-fhnZrgy_.js → phone-workspace-store-Di9R9Ux5.js} +1 -1
  107. package/dist/gateway/static/root/assets/plugin-details-dialog-DJsDu-_8.js +1 -0
  108. package/dist/gateway/static/root/assets/popover-select-DD8fmrxH.js +1 -0
  109. package/dist/gateway/static/root/assets/preference-select-fields-C6abaM3k.js +1 -0
  110. package/dist/gateway/static/root/assets/product-automation-feedback-C74s9Mjz.js +7 -0
  111. package/dist/gateway/static/root/assets/product-delivery-DRyD9_Xq.js +1 -0
  112. package/dist/gateway/static/root/assets/{product-open-page-xn9G4hSI.js → product-open-page-AbDP5w1c.js} +1 -1
  113. package/dist/gateway/static/root/assets/product-preview-content-CktjvFbc.js +1 -0
  114. package/dist/gateway/static/root/assets/product-preview-modal-CzsqLwB4.js +2 -0
  115. package/dist/gateway/static/root/assets/project-detail-page-Cf3tggGP.js +7 -0
  116. package/dist/gateway/static/root/assets/project-understanding-jmhFbHch.js +1 -0
  117. package/dist/gateway/static/root/assets/projects-page-jMgZiFnO.js +1 -0
  118. package/dist/gateway/static/root/assets/{providers-api-CzVkFKFg.js → providers-api-CJBYFKAK.js} +1 -1
  119. package/dist/gateway/static/root/assets/{recording-upload-0jxahBMo.js → recording-upload-Dl9a5yOV.js} +1 -1
  120. package/dist/gateway/static/root/assets/{registry-api-n8TwtJ_j.js → registry-api-BwkbPUYu.js} +1 -1
  121. package/dist/gateway/static/root/assets/{remote-access-hub-cZpBi4Rk.js → remote-access-hub-CBQ_bOy9.js} +1 -1
  122. package/dist/gateway/static/root/assets/resource-unavailable-35wBZxmz.js +1 -0
  123. package/dist/gateway/static/root/assets/route-preload-BcA6SPeC.js +2 -0
  124. package/dist/gateway/static/root/assets/runtime-impact-DbySfhdp.js +1 -0
  125. package/dist/gateway/static/root/assets/{runtime-tools-api-D-8KjYK6.js → runtime-tools-api-BF28JDAO.js} +1 -1
  126. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Bq2xQ2qd.js +1 -0
  127. package/dist/gateway/static/root/assets/schema-form-BKeP5G7b.js +1 -0
  128. package/dist/gateway/static/root/assets/service-recommendation-list-CdaS4MPF.js +1 -0
  129. package/dist/gateway/static/root/assets/{session-api-CsCoI2im.js → session-api-zJXYlRPt.js} +1 -1
  130. package/dist/gateway/static/root/assets/session-manager-wWxpzSo0.js +23 -0
  131. package/dist/gateway/static/root/assets/sessions-page-BkjD_dUD.js +1 -0
  132. package/dist/gateway/static/root/assets/settings-advanced-gate-BUMCEtA_.js +1 -0
  133. package/dist/gateway/static/root/assets/{settings-advanced-section-BqoVSko2.js → settings-advanced-section-C84IghdL.js} +1 -1
  134. package/dist/gateway/static/root/assets/{settings-mode-store-CBsJ-Qg2.js → settings-mode-store-CtQBJvbO.js} +1 -1
  135. package/dist/gateway/static/root/assets/{settings-page-DROUGyJl.js → settings-page-eEIz9InP.js} +1 -1
  136. package/dist/gateway/static/root/assets/{settings-page-header-Bv-kQFTm.js → settings-page-header-CsPAYlqV.js} +1 -1
  137. package/dist/gateway/static/root/assets/{settings-page-layout-DHP6MrrL.js → settings-page-layout-lPLeJQoV.js} +1 -1
  138. package/dist/gateway/static/root/assets/setup-status-panel-BSU5WpaE.js +1 -0
  139. package/dist/gateway/static/root/assets/{share-link-dialog-BJHRQVKC.js → share-link-dialog-NaM6jvIz.js} +1 -1
  140. package/dist/gateway/static/root/assets/share-preview-page-CHjZn27s.js +2 -0
  141. package/dist/gateway/static/root/assets/{shares-api-rtWVHA_d.js → shares-api-B9rVcV1y.js} +1 -1
  142. package/dist/gateway/static/root/assets/shares-settings-5sB15V5v.js +1 -0
  143. package/dist/gateway/static/root/assets/skill-api-D6zVfEuK.js +1 -0
  144. package/dist/gateway/static/root/assets/{skill-list-api-BzlKXPsE.js → skill-list-api-SLmTBYF5.js} +1 -1
  145. package/dist/gateway/static/root/assets/{skill-reload-api-Cff2GgZb.js → skill-reload-api-UQkq2orI.js} +1 -1
  146. package/dist/gateway/static/root/assets/skills-page-Ca0pYZ4i.js +2 -0
  147. package/dist/gateway/static/root/assets/{system-settings-panel-BeQeUUMH.js → system-settings-panel-BARWbjRN.js} +1 -1
  148. package/dist/gateway/static/root/assets/task-detail-page-roqAsGue.js +2 -0
  149. package/dist/gateway/static/root/assets/task-result-evidence-Bb1F7nAM.js +1 -0
  150. package/dist/gateway/static/root/assets/{terminal-panel-store-5Fzctajw.js → terminal-panel-store-DYDeXXAg.js} +1 -1
  151. package/dist/gateway/static/root/assets/{theme-store-DW45fWYQ.js → theme-store-DbStcH89.js} +1 -1
  152. package/dist/gateway/static/root/assets/tracing-settings-page-YfkNCxbP.js +1 -0
  153. package/dist/gateway/static/root/assets/tunnel-api-BK_ivyIb.js +1 -0
  154. package/dist/gateway/static/root/assets/{understanding-activity-store-CTe6TFB0.js → understanding-activity-store-p7Z7oq8z.js} +1 -1
  155. package/dist/gateway/static/root/assets/{understanding-refresh-store-mE9OKG6q.js → understanding-refresh-store-D-U6rcwZ.js} +1 -1
  156. package/dist/gateway/static/root/assets/usage-page-URFSiswS.js +1 -0
  157. package/dist/gateway/static/root/assets/{use-autosave-Cs2Ga_Y_.js → use-autosave-B7cbumro.js} +1 -1
  158. package/dist/gateway/static/root/assets/use-composer-attachments-DAtiwLsE.js +2 -0
  159. package/dist/gateway/static/root/assets/use-file-preview-expanded-B8erpWsX.js +2 -0
  160. package/dist/gateway/static/root/assets/{use-personal-profile-BHL2AxWU.js → use-personal-profile-DDW29nm-.js} +1 -1
  161. package/dist/gateway/static/root/assets/{use-workspace-tree-CnmPZrpx.js → use-workspace-tree-DCoTf22f.js} +1 -1
  162. package/dist/gateway/static/root/assets/user-model-page-DSV5NkNj.js +2 -0
  163. package/dist/gateway/static/root/assets/{voice-api-key-field-3gyc2UV3.js → voice-api-key-field-DzYdJZN4.js} +1 -1
  164. package/dist/gateway/static/root/assets/{voice-config-api-Cda2uBIC.js → voice-config-api-wotvT6Hw.js} +1 -1
  165. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-DtYHsPLF.js → voice-input-shortcut-events-BI6PuiIB.js} +1 -1
  166. package/dist/gateway/static/root/assets/voice-transcribe-api-DAK9eLRr.js +1 -0
  167. package/dist/gateway/static/root/assets/{work-discovery-overlay-Dqu5CQCS.js → work-discovery-overlay-BzmB9Rub.js} +1 -1
  168. package/dist/gateway/static/root/assets/work-discovery-page-CmGjxUIT.js +1 -0
  169. package/dist/gateway/static/root/assets/{working-directory-picker-modal-DHl2cZY1.js → working-directory-picker-modal-B-EHm52-.js} +1 -1
  170. package/dist/gateway/static/root/assets/{workspace-api-CtDbI6T7.js → workspace-api-uhiEMPpK.js} +2 -2
  171. package/dist/gateway/static/root/assets/workspace-editor-agent-store-DrPVyikA.js +1 -0
  172. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-CTIbUfKb.js → workspace-file-preview-dialog-BDm06MZm.js} +1 -1
  173. package/dist/gateway/static/root/assets/{workspace-open-location-menu-BwxouqdZ.js → workspace-open-location-menu-Bv83uoqu.js} +1 -1
  174. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CFb-23rS.js → xopc-cloud-account-card-Cd5GdpGL.js} +1 -1
  175. package/dist/gateway/static/root/index.html +91 -86
  176. package/dist/gateway/static/root/notification-sw.js +21 -7
  177. package/dist/package.js +1 -1
  178. package/dist/packages/endpoint-tools-protocol/src/context.js +115 -0
  179. package/dist/packages/endpoint-tools-protocol/src/index.js +4 -0
  180. package/dist/packages/endpoint-tools-protocol/src/location-sharing.js +51 -0
  181. package/dist/packages/gateway-contract/src/gateway-scopes.js +5 -1
  182. package/dist/packages/gateway-contract/src/index.js +4 -0
  183. package/dist/packages/gateway-contract/src/phone-workspace.js +6 -0
  184. package/dist/packages/gateway-contract/src/product-delivery.js +9 -3
  185. package/dist/packages/gateway-contract/src/task-display.js +14 -0
  186. package/dist/src/agent/agent-manager.js +1 -1
  187. package/dist/src/agent/background-review/run-background-review.js +1 -1
  188. package/dist/src/agent/context/execution-scope.js +10 -5
  189. package/dist/src/agent/embedded/external-tool-discovery.js +1 -1
  190. package/dist/src/agent/embedded/run-for-session.js +2 -2
  191. package/dist/src/agent/embedded/run-turn.js +72 -9
  192. package/dist/src/agent/embedded/session-runner.js +2 -1
  193. package/dist/src/agent/embedded/types.d.ts +1 -1
  194. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  195. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  196. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  197. package/dist/src/agent/prompt/system-prompt.js +1 -0
  198. package/dist/src/agent/service/direct-turn-helpers.d.ts +0 -7
  199. package/dist/src/agent/service/direct-turn-helpers.js +3 -2
  200. package/dist/src/agent/service/process-direct-streaming.js +2 -1
  201. package/dist/src/agent/service.js +1 -1
  202. package/dist/src/agent/skills/index.js +1 -1
  203. package/dist/src/agent/skills/managed-store.js +1 -1
  204. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  205. package/dist/src/agent/source-context/device-environment.d.ts +3 -0
  206. package/dist/src/agent/source-context/device-environment.js +38 -0
  207. package/dist/src/agent/source-context/injector.js +2 -1
  208. package/dist/src/agent/tool-manuals/phone.d.ts +1 -1
  209. package/dist/src/agent/tool-manuals/phone.js +1 -1
  210. package/dist/src/agent/tools/automation-tool.d.ts +2 -1
  211. package/dist/src/agent/tools/automation-tool.js +13 -5
  212. package/dist/src/agent/tools/factory.js +2 -1
  213. package/dist/src/agent/tools/personal-read-tool.js +2 -2
  214. package/dist/src/agent/tools/personal-task-tool.js +2 -1
  215. package/dist/src/agent/tools/phone-use-tool.js +46 -2
  216. package/dist/src/agent/tools/xopc-use-tool.js +8 -5
  217. package/dist/src/agent-catalog/capabilities.js +2 -2
  218. package/dist/src/agent-catalog/repository.js +1 -1
  219. package/dist/src/automations/api/routes.js +38 -0
  220. package/dist/src/automations/capabilities/drafts.js +1 -1
  221. package/dist/src/automations/capabilities/write.js +25 -9
  222. package/dist/src/automations/configuration-conversation.d.ts +16 -0
  223. package/dist/src/automations/configuration-conversation.js +120 -0
  224. package/dist/src/automations/delivery/delivery-router.d.ts +2 -0
  225. package/dist/src/automations/delivery/delivery-router.js +30 -9
  226. package/dist/src/automations/domain/types.d.ts +1 -0
  227. package/dist/src/automations/index.js +5 -5
  228. package/dist/src/automations/service/action-executor.js +41 -12
  229. package/dist/src/automations/service/automation-service.d.ts +6 -0
  230. package/dist/src/automations/service/automation-service.js +47 -12
  231. package/dist/src/automations/service/index.js +2 -2
  232. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  233. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  234. package/dist/src/capabilities/runtime/product.js +1 -1
  235. package/dist/src/cli/commands/agents.js +1 -1
  236. package/dist/src/cli/commands/models.js +1 -1
  237. package/dist/src/cli/commands/onboard/model.js +1 -1
  238. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  239. package/dist/src/computer/broker.js +16 -3
  240. package/dist/src/computer/diagnostics.js +1 -1
  241. package/dist/src/computer/errors.js +4 -0
  242. package/dist/src/computer/runtime.d.ts +1 -1
  243. package/dist/src/config/agent-profile.js +1 -1
  244. package/dist/src/config/schema.d.ts +1 -0
  245. package/dist/src/endpoint-tools/context-store.d.ts +29 -0
  246. package/dist/src/endpoint-tools/context-store.js +138 -0
  247. package/dist/src/endpoint-tools/location-sharing.d.ts +42 -0
  248. package/dist/src/endpoint-tools/location-sharing.js +203 -0
  249. package/dist/src/endpoint-tools/runtime.d.ts +4 -0
  250. package/dist/src/endpoint-tools/runtime.js +8 -0
  251. package/dist/src/endpoint-tools/turn-context.d.ts +2 -1
  252. package/dist/src/endpoint-tools/turn-context.js +4 -2
  253. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  254. package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
  255. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  256. package/dist/src/gateway/agents-admin.js +2 -2
  257. package/dist/src/gateway/automation-completion-delivery.d.ts +4 -0
  258. package/dist/src/gateway/automation-completion-delivery.js +14 -0
  259. package/dist/src/gateway/global-defaults-admin.js +1 -1
  260. package/dist/src/gateway/hono/middleware/auth.js +1 -1
  261. package/dist/src/gateway/hono/routes/agents.js +1 -1
  262. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  263. package/dist/src/gateway/hono/routes/devices.js +1 -0
  264. package/dist/src/gateway/hono/routes/endpoint-compatibility.js +4 -0
  265. package/dist/src/gateway/hono/routes/endpoint-environment.d.ts +3 -0
  266. package/dist/src/gateway/hono/routes/endpoint-environment.js +98 -0
  267. package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -0
  268. package/dist/src/gateway/hono/routes/lazy-bundles.js +16 -0
  269. package/dist/src/gateway/hono/routes/location-sharing.d.ts +3 -0
  270. package/dist/src/gateway/hono/routes/location-sharing.js +164 -0
  271. package/dist/src/gateway/hono/routes/notes.js +2 -2
  272. package/dist/src/gateway/hono/routes/phone-setup.js +1 -1
  273. package/dist/src/gateway/hono/routes/phone.js +246 -34
  274. package/dist/src/gateway/hono/routes/projects.js +2 -2
  275. package/dist/src/gateway/hono/routes/session-command-handler.js +1 -1
  276. package/dist/src/gateway/hono/routes/session-input-handler.js +3 -2
  277. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  278. package/dist/src/gateway/hono/routes/tunnel.js +10 -0
  279. package/dist/src/gateway/image-generation-setup.js +1 -1
  280. package/dist/src/gateway/respawn.js +2 -1
  281. package/dist/src/gateway/security/gateway-scopes.js +6 -0
  282. package/dist/src/gateway/security/phone-access.d.ts +4 -0
  283. package/dist/src/gateway/security/phone-access.js +20 -0
  284. package/dist/src/gateway/service/agent-runner.js +3 -1
  285. package/dist/src/gateway/service/config-coordinator.d.ts +1 -0
  286. package/dist/src/gateway/service/run-gateway-agent.js +2 -1
  287. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  288. package/dist/src/gateway/service/session-input-coordinator.js +50 -2
  289. package/dist/src/gateway/service.d.ts +1 -0
  290. package/dist/src/gateway/service.js +12 -4
  291. package/dist/src/gateway/session-reset-service.js +4 -0
  292. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  293. package/dist/src/imports/importService.js +1 -1
  294. package/dist/src/local-apps/service.js +1 -1
  295. package/dist/src/notifications/planner.js +6 -6
  296. package/dist/src/observability/store.d.ts +9 -0
  297. package/dist/src/observability/store.js +77 -32
  298. package/dist/src/personal-agent/communication.d.ts +1 -1
  299. package/dist/src/personal-agent/communication.js +3 -6
  300. package/dist/src/personal-agent/request-service.js +2 -1
  301. package/dist/src/personal-agent/service.js +1 -1
  302. package/dist/src/phone/assistance-service.d.ts +6 -0
  303. package/dist/src/phone/assistance-service.js +32 -0
  304. package/dist/src/phone/assistance.d.ts +40 -0
  305. package/dist/src/phone/assistance.js +273 -0
  306. package/dist/src/phone/cloud-phones.d.ts +5 -0
  307. package/dist/src/phone/cloud-phones.js +14 -0
  308. package/dist/src/phone/contracts.d.ts +7 -1
  309. package/dist/src/phone/contracts.js +5 -0
  310. package/dist/src/phone/environment-adapter.d.ts +3 -0
  311. package/dist/src/phone/environment-adapter.js +11 -0
  312. package/dist/src/phone/location-baseline-store.d.ts +9 -0
  313. package/dist/src/phone/location-baseline-store.js +61 -0
  314. package/dist/src/phone/location-environment.d.ts +61 -0
  315. package/dist/src/phone/location-environment.js +157 -0
  316. package/dist/src/phone/model-adapter.js +16 -5
  317. package/dist/src/phone/runtime.d.ts +17 -2
  318. package/dist/src/phone/runtime.js +203 -20
  319. package/dist/src/phone/stream-gateway.d.ts +5 -0
  320. package/dist/src/phone/stream-gateway.js +85 -51
  321. package/dist/src/phone/wuying-location.d.ts +18 -0
  322. package/dist/src/phone/wuying-location.js +86 -0
  323. package/dist/src/runtime-tools/archive.js +1 -1
  324. package/dist/src/storage/sqlite/device-access-repository.d.ts +4 -0
  325. package/dist/src/storage/sqlite/device-access-repository.js +18 -1
  326. package/dist/src/tasks/capabilities/read.js +2 -2
  327. package/dist/src/tasks/capabilities/write.js +1 -1
  328. package/dist/src/tasks/task-contract-planner.js +2 -1
  329. package/dist/src/tui/backends/embedded-backend.js +1 -1
  330. package/dist/src/tunnel/broker-client.d.ts +8 -0
  331. package/dist/src/tunnel/broker-client.js +18 -1
  332. package/dist/src/voice/realtime/persona-context.js +1 -1
  333. package/dist/src/voice/realtime/runtime.js +1 -1
  334. package/package.json +4 -3
  335. package/dist/gateway/static/root/assets/agent-avatar-display-Cy50vjbq.js +0 -2
  336. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-V4NX_cWz.js +0 -1
  337. package/dist/gateway/static/root/assets/agent-plugin-dialog-CQ5LLDMO.js +0 -1
  338. package/dist/gateway/static/root/assets/app-link-CytZ5zkp.js +0 -1
  339. package/dist/gateway/static/root/assets/app-management-settings-panel-C1Zs-eha.js +0 -1
  340. package/dist/gateway/static/root/assets/appearance-settings-lIfGokbz.js +0 -1
  341. package/dist/gateway/static/root/assets/apps-page-CUvtsRYD.js +0 -1
  342. package/dist/gateway/static/root/assets/automation-api-Bld8blNl.js +0 -1
  343. package/dist/gateway/static/root/assets/automation-display-BcfZOQTC.js +0 -2
  344. package/dist/gateway/static/root/assets/automations-workspace-BgtYY2Mm.js +0 -8
  345. package/dist/gateway/static/root/assets/browser-automations-page-DIUNY94X.js +0 -3
  346. package/dist/gateway/static/root/assets/capabilities-page-DFW4Y0x8.js +0 -2
  347. package/dist/gateway/static/root/assets/capabilities-settings-panel-uOHSMQPZ.js +0 -8
  348. package/dist/gateway/static/root/assets/channels-D2a69dSt.js +0 -1
  349. package/dist/gateway/static/root/assets/chat-page-CG38tCHE.js +0 -71
  350. package/dist/gateway/static/root/assets/composer-payload-handoff-BU3B-C26.js +0 -1
  351. package/dist/gateway/static/root/assets/connected-providers-grid-Dmnu2zle.js +0 -1
  352. package/dist/gateway/static/root/assets/connectors-page-DT_WrC1y.js +0 -1
  353. package/dist/gateway/static/root/assets/date-picker-CE-cZFCU.js +0 -1
  354. package/dist/gateway/static/root/assets/desktop-pet-lorocS9j.js +0 -1
  355. package/dist/gateway/static/root/assets/desktop-pet-settings-CEcohlZq.js +0 -1
  356. package/dist/gateway/static/root/assets/device-pairing-wizard-CLCPuf4R.js +0 -1
  357. package/dist/gateway/static/root/assets/discussion-annotation-sync-BKjf9gWe.js +0 -1
  358. package/dist/gateway/static/root/assets/extension-iframe-host-Dhkk5JV2.js +0 -1
  359. package/dist/gateway/static/root/assets/extension-page-Brps2XDP.js +0 -1
  360. package/dist/gateway/static/root/assets/extension-settings-page-CHY68DpG.js +0 -1
  361. package/dist/gateway/static/root/assets/gateway-realtime-store-DQqMBruB.js +0 -1
  362. package/dist/gateway/static/root/assets/gateway-restart-Ch128Lrr.js +0 -1
  363. package/dist/gateway/static/root/assets/home-page-DaMFBYo1.js +0 -2
  364. package/dist/gateway/static/root/assets/image-generation-api-I_JgLL_m.js +0 -1
  365. package/dist/gateway/static/root/assets/index-DY2Y83b9.css +0 -1
  366. package/dist/gateway/static/root/assets/index-UCOlAnf-.js +0 -11
  367. package/dist/gateway/static/root/assets/install-connector-dialog-DU1Tz7B3.js +0 -1
  368. package/dist/gateway/static/root/assets/local-app-workbench-page-qPflPuQD.js +0 -1
  369. package/dist/gateway/static/root/assets/logs-page-CbY1N-zi.js +0 -2
  370. package/dist/gateway/static/root/assets/management-settings-Diy12JfQ.js +0 -1
  371. package/dist/gateway/static/root/assets/messages-DRR9N3HC.js +0 -3
  372. package/dist/gateway/static/root/assets/model-selector-DCYA_ntf.js +0 -1
  373. package/dist/gateway/static/root/assets/navigation-BkjnOw30.js +0 -1
  374. package/dist/gateway/static/root/assets/note-detail-panel-DBs1yHLy.js +0 -5
  375. package/dist/gateway/static/root/assets/note-image-lightbox-CivkB6LB.js +0 -1
  376. package/dist/gateway/static/root/assets/notes-page-DL3c-41a.js +0 -8
  377. package/dist/gateway/static/root/assets/page-header-store-DH8K0xii.js +0 -1
  378. package/dist/gateway/static/root/assets/personal-page-B5DP3lO-.js +0 -1
  379. package/dist/gateway/static/root/assets/personal-settings-panel-DjDc5Kaz.js +0 -1
  380. package/dist/gateway/static/root/assets/phone-model-picker-u8YIQCgo.js +0 -1
  381. package/dist/gateway/static/root/assets/phone-settings-page-el3pT0PD.js +0 -1
  382. package/dist/gateway/static/root/assets/plugin-details-dialog-CTBs1Jde.js +0 -1
  383. package/dist/gateway/static/root/assets/popover-select-DniHw2dy.js +0 -1
  384. package/dist/gateway/static/root/assets/preference-select-fields-D7oluyHN.js +0 -1
  385. package/dist/gateway/static/root/assets/product-automation-feedback-DsUSqCOX.js +0 -7
  386. package/dist/gateway/static/root/assets/product-delivery-BU_H84jL.js +0 -1
  387. package/dist/gateway/static/root/assets/product-preview-content-DcoK-iZe.js +0 -1
  388. package/dist/gateway/static/root/assets/product-preview-modal-Ruw9WSKK.js +0 -2
  389. package/dist/gateway/static/root/assets/project-detail-page-BKvWLiMw.js +0 -7
  390. package/dist/gateway/static/root/assets/project-understanding-BCQr0AZ_.js +0 -1
  391. package/dist/gateway/static/root/assets/projects-page-D4g7bB7X.js +0 -1
  392. package/dist/gateway/static/root/assets/route-preload-B5UiReO7.js +0 -2
  393. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-MKlLFuow.js +0 -1
  394. package/dist/gateway/static/root/assets/schema-form-v4N4lawq.js +0 -1
  395. package/dist/gateway/static/root/assets/service-recommendation-list-B1xuVT3N.js +0 -1
  396. package/dist/gateway/static/root/assets/session-manager-5l9q0cd5.js +0 -16
  397. package/dist/gateway/static/root/assets/sessions-page-DsLw2aMD.js +0 -1
  398. package/dist/gateway/static/root/assets/settings-advanced-gate-B5lQeVNi.js +0 -1
  399. package/dist/gateway/static/root/assets/setup-status-panel-MJE3B_LX.js +0 -1
  400. package/dist/gateway/static/root/assets/share-preview-page-Bsrv_zOQ.js +0 -2
  401. package/dist/gateway/static/root/assets/shares-settings-CfIRv4uX.js +0 -1
  402. package/dist/gateway/static/root/assets/skill-api-B_W1K3sv.js +0 -1
  403. package/dist/gateway/static/root/assets/skills-page-DtBloYeU.js +0 -2
  404. package/dist/gateway/static/root/assets/task-detail-page-Drrv-Hp0.js +0 -2
  405. package/dist/gateway/static/root/assets/task-result-evidence-D1Kyskm_.js +0 -1
  406. package/dist/gateway/static/root/assets/tracing-settings-page-B12u5D9A.js +0 -1
  407. package/dist/gateway/static/root/assets/tunnel-api-DGO56LQU.js +0 -1
  408. package/dist/gateway/static/root/assets/usage-page-Ud2U9UG1.js +0 -1
  409. package/dist/gateway/static/root/assets/use-composer-attachments-BCbMj-MN.js +0 -2
  410. package/dist/gateway/static/root/assets/use-file-preview-expanded-DSpCRXUW.js +0 -2
  411. package/dist/gateway/static/root/assets/user-model-page-p5iPfnwl.js +0 -2
  412. package/dist/gateway/static/root/assets/voice-transcribe-api-TInEfIYo.js +0 -1
  413. package/dist/gateway/static/root/assets/work-discovery-page-p-8ciZ0i.js +0 -1
  414. package/dist/gateway/static/root/assets/workspace-editor-agent-store-B94Q2nN8.js +0 -1
@@ -0,0 +1,14 @@
1
+ //#region src/gateway/automation-completion-delivery.ts
2
+ /** Commit the inbox handoff before acknowledging the durable result outbox. */
3
+ function deliverAutomationCompletion(run, context, notifications, emit) {
4
+ const payload = {
5
+ run,
6
+ ...context
7
+ };
8
+ const notification = notifications.persistGatewayEvent("automation.run.completed", payload);
9
+ emit("automation.run.completed", payload);
10
+ if (notification) emit("notification.created", notification);
11
+ notifications.drain();
12
+ }
13
+ //#endregion
14
+ export { deliverAutomationCompletion };
@@ -1,8 +1,8 @@
1
1
  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
- import { AgentCatalogService } from "../agent-catalog/service.js";
5
4
  import { validatePhoneModelChange } from "../phone/model-adapter.js";
5
+ import { AgentCatalogService } from "../agent-catalog/service.js";
6
6
  import { validateComputerModelChange } from "../computer/model-config.js";
7
7
  import { GATEWAY_BUILTIN_TOOLS } from "./agent-builtin-tools.js";
8
8
  import { isDeepStrictEqual } from "node:util";
@@ -9,8 +9,8 @@ import { authenticateDeviceAccessToken, getDevice } from "../../../storage/sqlit
9
9
  import { getOrCreateGatewayIdentity } from "../../../storage/sqlite/gateway-identity-repository.js";
10
10
  import { safeEqualSecret } from "../../security/secret-equal.js";
11
11
  import { resolveClientIpFromRequest } from "../../client-ip.js";
12
- import { authenticateBrowserSession } from "../../../storage/sqlite/browser-session-repository.js";
13
12
  import { PROOF_HEADER, acquireProofBodyBudget, consumeRequestNonce, parseRequestProof, proofDigest, requestProofMessage, verifyRequestProofSignature } from "../../security/device-request-proof.js";
13
+ import { authenticateBrowserSession } from "../../../storage/sqlite/browser-session-repository.js";
14
14
  import { isChromeExtensionOrigin } from "../../security/origin-check.js";
15
15
  import { browserCookieRequestAllowed, readBrowserSessionCookie, writeBrowserSessionCookie } from "../../security/browser-session.js";
16
16
  import { authorizeTrustedProxy } from "../../trusted-proxy.js";
@@ -1,6 +1,6 @@
1
+ import { normalizeAgentId } from "../../../agent-catalog/id.js";
1
2
  import { AgentEntrySchema, AgentModelsOverrideSchema, AgentProfileSchema, RuntimePolicySchema, SkillOverrideSchema, ToolPoliciesSchema } from "../../../agent-config/schema.js";
2
3
  import { init_agent_config } from "../../../agent-config/index.js";
3
- import { normalizeAgentId } from "../../../agent-catalog/id.js";
4
4
  import { init_agent_scope } from "../../../agent/agent-scope.js";
5
5
  import { getVoiceModelsConfig } from "../../../config/voice.js";
6
6
  import { createGatewayAgent, deleteAgentAvatarFile, deleteGatewayAgent, getGatewayAgentEffectiveConfig, listAgentProfileFiles, listGatewayAgents, readAgentAvatarFile, readAgentProfileFile, resolveAgentAvatarImage, updateGatewayAgent, writeAgentAvatarFromBase64, writeAgentProfileFile } from "../../agents-admin.js";
@@ -1,10 +1,10 @@
1
1
  import { BindingsSchema, init_binding_schema } from "../../../../routing/binding-schema.js";
2
- import { AgentCatalogService } from "../../../../agent-catalog/service.js";
3
2
  import { ComputerConfigSchema, init_config } from "../../../../computer/config.js";
4
3
  import { ContextPlanningConfigSchema, HomeIntelligenceConfigSchema, KnowledgeMemoryConfigSchema, UserContextConfigSchema, UserModelConfigSchema, init_config as init_config$1 } from "../../../../user-context/config.js";
5
4
  import { BrowserConfigSchema, McpConfigSchema, VoiceConfigSchema, init_schema } from "../../../../config/schema.js";
6
5
  import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
7
6
  import { canonicalizeConfiguredMcpServer } from "../../../../config/mcp-config-normalize.js";
7
+ import { AgentCatalogService } from "../../../../agent-catalog/service.js";
8
8
  import { mergeGatewaySkillsMarketplacePatch, mergeSessionConfigPatch, mergeUpdateConfigPatch } from "../../../../config/web-patch.js";
9
9
  import { assertGatewayAuthConfigured, resolveGatewayAuth } from "../../../auth.js";
10
10
  import { isMaskedSecretPatchValue } from "../../lib/mask-secret-length.js";
@@ -230,6 +230,7 @@ function registerDeviceRoutes(authenticated, deps) {
230
230
  deps.service.endpointTools.registry.revokePrincipal(principal.deviceId);
231
231
  deps.service.realtime.disconnectPrincipal(principal.deviceId);
232
232
  deps.service.voiceRealtime.disconnectPrincipal(principal.deviceId);
233
+ deps.service.phoneStreams.disconnectPrincipal(principal.deviceId);
233
234
  }
234
235
  return c.json({
235
236
  ok: true,
@@ -19,6 +19,10 @@ function registerEndpointCompatibilityRoutes(authenticated) {
19
19
  capabilities: REALTIME_CAPABILITIES
20
20
  },
21
21
  turnDeviceContextV1: true,
22
+ endpointEnvironmentV1: true,
23
+ locationSharingV1: true,
24
+ mobilePhoneWorkspaceV1: true,
25
+ phoneMediaProtocolVersion: 1,
22
26
  deviceStateToolsV1: true,
23
27
  hardwareBridgeV1: true,
24
28
  deviceLocationTasksV1: true,
@@ -0,0 +1,3 @@
1
+ import type { Hono } from 'hono';
2
+ import type { AuthenticatedRouteDeps } from './deps.js';
3
+ export declare function registerEndpointEnvironmentRoutes(app: Hono, deps: AuthenticatedRouteDeps): void;
@@ -0,0 +1,98 @@
1
+ import { endpointTurnClaimSchema, init_src } from "../../../../packages/endpoint-tools-protocol/src/index.js";
2
+ import { EndpointContextError } from "../../../endpoint-tools/context-store.js";
3
+ import { endpointClaimBelongsToPrincipal } from "../../../endpoint-tools/turn-context.js";
4
+ import { getGatewayPrincipal } from "../../security/gateway-principal.js";
5
+ import { z } from "zod";
6
+ import { bodyLimit } from "hono/body-limit";
7
+ //#region src/gateway/hono/routes/endpoint-environment.ts
8
+ init_src();
9
+ const root = "/api/user-context/environment";
10
+ const mutationSchema = z.strictObject({
11
+ origin: endpointTurnClaimSchema,
12
+ report: z.unknown().optional(),
13
+ heartbeat: z.unknown().optional()
14
+ });
15
+ function registerEndpointEnvironmentRoutes(app, deps) {
16
+ const runtime = deps.service.endpointTools;
17
+ app.get(root, (c) => {
18
+ const actor = getGatewayPrincipal(c);
19
+ c.header("Cache-Control", "no-store");
20
+ const snapshots = runtime.registry.list().filter((endpoint) => endpointClaimBelongsToPrincipal(runtime.registry, endpoint.endpointId, actor)).map((endpoint) => runtime.contexts.view(endpoint.endpointId)).filter(Boolean);
21
+ return c.json({
22
+ ok: true,
23
+ payload: snapshots
24
+ });
25
+ });
26
+ app.get(`${root}/endpoints/:endpointId`, (c) => {
27
+ c.header("Cache-Control", "no-store");
28
+ const id = c.req.param("endpointId");
29
+ if (!endpointClaimBelongsToPrincipal(runtime.registry, id, getGatewayPrincipal(c))) return c.json({
30
+ ok: false,
31
+ error: {
32
+ code: "FORBIDDEN",
33
+ message: "Context source is not accessible"
34
+ }
35
+ }, 403);
36
+ try {
37
+ return c.json({
38
+ ok: true,
39
+ payload: {
40
+ ...runtime.contexts.connection(id),
41
+ context: runtime.contexts.view(id)
42
+ }
43
+ });
44
+ } catch {
45
+ return c.json({
46
+ ok: false,
47
+ error: {
48
+ code: "SOURCE_UNAVAILABLE",
49
+ message: "Context source is unavailable"
50
+ }
51
+ }, 409);
52
+ }
53
+ });
54
+ for (const action of ["reports", "heartbeats"]) app.post(`${root}/${action}`, bodyLimit({ maxSize: 16384 }), async (c) => {
55
+ c.header("Cache-Control", "no-store");
56
+ const parsed = mutationSchema.safeParse(await c.req.json().catch(() => null));
57
+ if (!parsed.success || (action === "reports" ? parsed.data.heartbeat !== void 0 || parsed.data.report === void 0 : parsed.data.report !== void 0 || parsed.data.heartbeat === void 0)) return c.json({
58
+ ok: false,
59
+ error: {
60
+ code: "CONTEXT_INVALID",
61
+ message: "Invalid context request"
62
+ }
63
+ }, 400);
64
+ const { origin } = parsed.data;
65
+ if (!endpointClaimBelongsToPrincipal(runtime.registry, origin.endpointId, getGatewayPrincipal(c))) return c.json({
66
+ ok: false,
67
+ error: {
68
+ code: "FORBIDDEN",
69
+ message: "Context source is not accessible"
70
+ }
71
+ }, 403);
72
+ if (!runtime.registry.verifyTurnClaim(origin.endpointId, origin.token)) return c.json({
73
+ ok: false,
74
+ error: {
75
+ code: "SOURCE_UNAVAILABLE",
76
+ message: "Context connection changed"
77
+ }
78
+ }, 409);
79
+ try {
80
+ const payload = action === "reports" ? runtime.contexts.report(origin.endpointId, parsed.data.report) : runtime.contexts.heartbeat(origin.endpointId, parsed.data.heartbeat);
81
+ return c.json({
82
+ ok: true,
83
+ payload
84
+ });
85
+ } catch (error) {
86
+ if (!(error instanceof EndpointContextError)) throw error;
87
+ return c.json({
88
+ ok: false,
89
+ error: {
90
+ code: error.code,
91
+ message: error.message
92
+ }
93
+ }, error.code === "CONTEXT_INVALID" ? 400 : 409);
94
+ }
95
+ });
96
+ }
97
+ //#endregion
98
+ export { registerEndpointEnvironmentRoutes };
@@ -106,6 +106,7 @@ function registerEndpointToolRoutes(authenticated, deps) {
106
106
  if (accessRevoked) {
107
107
  deps.service.realtime.disconnectPrincipal(id);
108
108
  deps.service.voiceRealtime.disconnectPrincipal(id);
109
+ deps.service.phoneStreams.disconnectPrincipal(id);
109
110
  }
110
111
  if (principalRevoked) {
111
112
  for (const endpoint of deps.service.endpointTools.registry.list()) if (endpoint.principalId === id) deps.service.endpointTools.disconnect(endpoint.endpointId, "Device revoked");
@@ -3,6 +3,22 @@ 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: "location-sharing",
8
+ match: (path) => /^\/api\/user-context\/environment\/location-shares(?:\/[^/]+(?:\/samples)?)?$/.test(path),
9
+ load: async () => {
10
+ const { registerLocationSharingRoutes } = await import("./location-sharing.js");
11
+ return { register: registerLocationSharingRoutes };
12
+ }
13
+ },
14
+ {
15
+ id: "endpoint-environment",
16
+ match: (path) => /^\/api\/user-context\/environment(?:\/(?:reports|heartbeats|endpoints\/[^/]+))?$/.test(path),
17
+ load: async () => {
18
+ const { registerEndpointEnvironmentRoutes } = await import("./endpoint-environment.js");
19
+ return { register: registerEndpointEnvironmentRoutes };
20
+ }
21
+ },
6
22
  {
7
23
  id: "phone",
8
24
  match: (path) => startsWithAny(path, ["/api/phone"]),
@@ -0,0 +1,3 @@
1
+ import { Hono } from 'hono';
2
+ import type { AuthenticatedRouteDeps } from './deps.js';
3
+ export declare function registerLocationSharingRoutes(parent: Hono, deps: AuthenticatedRouteDeps): void;
@@ -0,0 +1,164 @@
1
+ import { hasGatewayScope } from "../../security/gateway-scopes.js";
2
+ import { locationShareRequestSchema } from "../../../../packages/endpoint-tools-protocol/src/location-sharing.js";
3
+ import { endpointTurnClaimSchema, init_src } from "../../../../packages/endpoint-tools-protocol/src/index.js";
4
+ import { PhoneError, init_contracts } from "../../../phone/contracts.js";
5
+ import { getPhoneRuntime } from "../../../phone/runtime.js";
6
+ import { LocationSharingError } from "../../../endpoint-tools/location-sharing.js";
7
+ import { endpointClaimBelongsToPrincipal } from "../../../endpoint-tools/turn-context.js";
8
+ import { getGatewayPrincipal } from "../../security/gateway-principal.js";
9
+ import { z } from "zod";
10
+ import { Hono } from "hono";
11
+ import { bodyLimit } from "hono/body-limit";
12
+ //#region src/gateway/hono/routes/location-sharing.ts
13
+ init_src();
14
+ init_contracts();
15
+ const root = "/api/user-context/environment/location-shares";
16
+ const originBody = z.strictObject({ origin: endpointTurnClaimSchema });
17
+ function registerLocationSharingRoutes(parent, deps) {
18
+ const app = new Hono();
19
+ app.onError((error, c) => {
20
+ if (error instanceof LocationSharingError || error instanceof PhoneError) return c.json({
21
+ ok: false,
22
+ error: {
23
+ code: error.code,
24
+ message: error.message
25
+ }
26
+ }, 409);
27
+ return c.json({
28
+ ok: false,
29
+ error: {
30
+ code: "LOCATION_UNAVAILABLE",
31
+ message: "Location sharing is unavailable"
32
+ }
33
+ }, 503);
34
+ });
35
+ const runtime = deps.service.endpointTools;
36
+ runtime.locations?.setConsumer({
37
+ apply: (input, signal) => getPhoneRuntime().environment.apply(input, signal),
38
+ clear: (id, phoneId) => getPhoneRuntime().environment.clear(id, phoneId),
39
+ state: (id, phoneId) => {
40
+ const state = getPhoneRuntime().environment.status(phoneId);
41
+ return state.status === "clean" || state.shareId !== id ? "clean" : state.status === "applied" ? "applied" : state.status === "pending" ? "pending" : "cleanup_pending";
42
+ }
43
+ });
44
+ const authorize = (c, origin) => endpointClaimBelongsToPrincipal(runtime.registry, origin.endpointId, getGatewayPrincipal(c)) && runtime.registry.verifyTurnClaim(origin.endpointId, origin.token);
45
+ for (const path of [root, `${root}/*`]) app.use(path, bodyLimit({
46
+ maxSize: 4096,
47
+ onError: (c) => c.json({
48
+ ok: false,
49
+ error: {
50
+ code: "LOCATION_TOO_LARGE",
51
+ message: "Location request exceeds 4 KB"
52
+ }
53
+ }, 413)
54
+ }), async (c, next) => {
55
+ c.header("Cache-Control", "no-store");
56
+ await next();
57
+ });
58
+ app.post(root, async (c) => {
59
+ const parsed = originBody.extend({
60
+ request: locationShareRequestSchema,
61
+ disclosureVersion: z.literal("location-sharing-v1")
62
+ }).safeParse(await c.req.json().catch(() => null));
63
+ if (!parsed.success) return c.json({
64
+ ok: false,
65
+ error: {
66
+ code: "LOCATION_INVALID",
67
+ message: "Invalid location sharing request"
68
+ }
69
+ }, 400);
70
+ if (!authorize(c, parsed.data.origin)) return c.json({
71
+ ok: false,
72
+ error: {
73
+ code: "FORBIDDEN",
74
+ message: "Location source is not accessible"
75
+ }
76
+ }, 403);
77
+ if (!hasGatewayScope(getGatewayPrincipal(c).scopes, "agents.run") || !await deps.service.sessions.getSession(parsed.data.request.conversationId)) return c.json({
78
+ ok: false,
79
+ error: {
80
+ code: "FORBIDDEN",
81
+ message: "Conversation is not accessible"
82
+ }
83
+ }, 403);
84
+ if (parsed.data.request.phoneId) {
85
+ if (!deps.service.currentConfig.phone.enabled) return c.json({
86
+ ok: false,
87
+ error: {
88
+ code: "PHONE_DISABLED",
89
+ message: "Enable Phone Use before sharing location"
90
+ }
91
+ }, 409);
92
+ const phone = getPhoneRuntime().repository.get(parsed.data.request.phoneId);
93
+ if (!phone.enabled || phone.connection?.kind !== "aliyun-adb") return c.json({
94
+ ok: false,
95
+ error: {
96
+ code: "PHONE_ENV_UNSUPPORTED",
97
+ message: "Choose an enabled Alibaba cloud phone"
98
+ }
99
+ }, 409);
100
+ }
101
+ return c.json({
102
+ ok: true,
103
+ payload: runtime.locations.create(parsed.data.origin.endpointId, parsed.data.request)
104
+ }, 201);
105
+ });
106
+ app.get(root, (c) => {
107
+ const endpointId = c.req.query("endpointId") ?? "";
108
+ if (!endpointClaimBelongsToPrincipal(runtime.registry, endpointId, getGatewayPrincipal(c))) return c.json({
109
+ ok: false,
110
+ error: {
111
+ code: "FORBIDDEN",
112
+ message: "Location source is not accessible"
113
+ }
114
+ }, 403);
115
+ return c.json({
116
+ ok: true,
117
+ payload: runtime.locations.list(endpointId, c.req.query("conversationId"))
118
+ });
119
+ });
120
+ app.post(`${root}/:id/samples`, async (c) => {
121
+ const parsed = originBody.extend({
122
+ sequence: z.number().int().positive(),
123
+ sample: z.unknown()
124
+ }).safeParse(await c.req.json().catch(() => null));
125
+ if (!parsed.success) return c.json({
126
+ ok: false,
127
+ error: {
128
+ code: "LOCATION_INVALID",
129
+ message: "Invalid location sample"
130
+ }
131
+ }, 400);
132
+ if (!authorize(c, parsed.data.origin)) return c.json({
133
+ ok: false,
134
+ error: {
135
+ code: "FORBIDDEN",
136
+ message: "Location source is not accessible"
137
+ }
138
+ }, 403);
139
+ return c.json({
140
+ ok: true,
141
+ payload: await runtime.locations.sample(c.req.param("id"), parsed.data.origin.endpointId, {
142
+ sequence: parsed.data.sequence,
143
+ sample: parsed.data.sample
144
+ })
145
+ });
146
+ });
147
+ app.delete(`${root}/:id`, async (c) => {
148
+ const parsed = originBody.safeParse(await c.req.json().catch(() => null));
149
+ if (!parsed.success || !authorize(c, parsed.data.origin)) return c.json({
150
+ ok: false,
151
+ error: {
152
+ code: "FORBIDDEN",
153
+ message: "Location source is not accessible"
154
+ }
155
+ }, 403);
156
+ return c.json({
157
+ ok: true,
158
+ payload: await runtime.locations.revoke(c.req.param("id"), parsed.data.origin.endpointId)
159
+ });
160
+ });
161
+ parent.route("/", app);
162
+ }
163
+ //#endregion
164
+ export { registerLocationSharingRoutes };
@@ -1,9 +1,9 @@
1
1
  import { NoteDeleteOutputSchema, NoteGetOutputSchema, ProductReadContracts } from "../../../../packages/gateway-contract/src/capabilities.js";
2
2
  import { init_src } from "../../../../packages/gateway-contract/src/index.js";
3
- import { CapabilityError } from "../../../capabilities/runtime/errors.js";
4
- import "../../../capabilities/runtime/dispatcher.js";
5
3
  import { init_session_key, resolveConversationId } from "../../../routing/session-key.js";
6
4
  import { agentExists, getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-route.js";
5
+ import { CapabilityError } from "../../../capabilities/runtime/errors.js";
6
+ import "../../../capabilities/runtime/dispatcher.js";
7
7
  import { resolveGatewayEffectiveHost } from "../../../config/gateway-bind.js";
8
8
  import { getShareStore } from "../../../share/share-store.js";
9
9
  import { resolveShareUrl } from "../../../share/share-url.js";
@@ -1,7 +1,6 @@
1
1
  import { resolveStateDir } from "../../../config/paths-state.js";
2
2
  import { getSessionMetadata, init_session_read_repository } from "../../../storage/sqlite/session-read-repository.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
4
- import { AgentCatalogService } from "../../../agent-catalog/service.js";
5
4
  import { init_paths } from "../../../config/paths.js";
6
5
  import { resolveEffectiveAgentConfigForAgent } from "../../../config/agent-profile.js";
7
6
  import { getModelRegistry, init_model_registry } from "../../../providers/model-registry.js";
@@ -10,6 +9,7 @@ import { phoneAllowsApp } from "../../../phone/app-access.js";
10
9
  import { managedPhoneAdbPath } from "../../../runtime-tools/phone-dependency-catalog.js";
11
10
  import { phoneModelProfile } from "../../../phone/model-adapter.js";
12
11
  import { getPhoneRuntime } from "../../../phone/runtime.js";
12
+ import { AgentCatalogService } from "../../../agent-catalog/service.js";
13
13
  import { PhoneSetupService } from "../../../phone/setup/service.js";
14
14
  import { PhoneDependencyManager, probePhoneAdb } from "../../../runtime-tools/phone-dependencies.js";
15
15
  import { createHash } from "node:crypto";