@xopcai/xopc 0.0.344 → 0.0.346

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 (205) hide show
  1. package/dist/browser-ext/dist/assets/{auth-BsvblhQz.js → auth-CFiOJ_rf.js} +1 -1
  2. package/dist/browser-ext/dist/background.js +1 -1
  3. package/dist/browser-ext/dist/sidepanel.html +1 -1
  4. package/dist/browser-ext/dist/sidepanel.js +1 -1
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/extensions/telegram/xopc.extension.json +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DRFs0Jjv.js → agent-avatar-dicebear-M2vuj6W3.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-C9J-ILd0.js → agent-defaults-settings-panel-B_d0WGFm.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-plugin-dialog-CGstiK5S.js → agent-plugin-dialog-egTQDEeV.js} +1 -1
  10. package/dist/gateway/static/root/assets/{agents-DS-CV-xB.js → agents-BbwmG8Kl.js} +6 -6
  11. package/dist/gateway/static/root/assets/{agents-admin-api-BTYHoqlW.js → agents-admin-api-Dlw9XxYa.js} +1 -1
  12. package/dist/gateway/static/root/assets/{app-management-settings-panel-znCRRKVF.js → app-management-settings-panel-IxWZDAeT.js} +1 -1
  13. package/dist/gateway/static/root/assets/{appearance-settings-DSUujN-S.js → appearance-settings-C56szwjn.js} +1 -1
  14. package/dist/gateway/static/root/assets/{apps-page-7uOjQp30.js → apps-page-Cqoc4xoi.js} +1 -1
  15. package/dist/gateway/static/root/assets/{archive-plugin-DV01jcWu.js → archive-plugin-Ce3TNO-R.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automations-page-D_Ts5PDI.js → automations-page-4so9_Bya.js} +1 -1
  17. package/dist/gateway/static/root/assets/{automations-workspace-Dg7IuWeB.js → automations-workspace-CP3GH1iA.js} +1 -1
  18. package/dist/gateway/static/root/assets/{binary-plugins-CEoIySYJ.js → binary-plugins-l6tKp21u.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-4bv_tjfg.js → block-editor-cj2RNjQs.js} +1 -1
  20. package/dist/gateway/static/root/assets/{browser-automation-inputs-UYRx7nE_.js → browser-automation-inputs-C9W2EklQ.js} +1 -1
  21. package/dist/gateway/static/root/assets/{browser-automations-page-EtXgro_V.js → browser-automations-page-CbTkFxIX.js} +1 -1
  22. package/dist/gateway/static/root/assets/{browser-settings-page-Bf45sjmd.js → browser-settings-page-KMfDs9dO.js} +1 -1
  23. package/dist/gateway/static/root/assets/{capabilities-B-2wxCUQ.js → capabilities-Co9ZxHHB.js} +1 -1
  24. package/dist/gateway/static/root/assets/{capabilities-page-YjIv97Sw.js → capabilities-page-cm2Q7EfF.js} +2 -2
  25. package/dist/gateway/static/root/assets/{capabilities-settings-panel-Ch2iNnfI.js → capabilities-settings-panel-CIe5qsxW.js} +1 -1
  26. package/dist/gateway/static/root/assets/{capability-header-actions-DJKC0sss.js → capability-header-actions-D2ASOs4Z.js} +1 -1
  27. package/dist/gateway/static/root/assets/{channels-BWZmepe_.js → channels-D-DnLz_c.js} +1 -1
  28. package/dist/gateway/static/root/assets/{chat-terminal-dock-DLBqdgS-.js → chat-terminal-dock-DaQrqzCz.js} +1 -1
  29. package/dist/gateway/static/root/assets/computer-settings-page-C-59NTyH.js +1 -0
  30. package/dist/gateway/static/root/assets/{connector-service-page-CYE4gX1g.js → connector-service-page-Cq7t7AJq.js} +1 -1
  31. package/dist/gateway/static/root/assets/{connectors-page-dJDZx96_.js → connectors-page-BH53KX8Y.js} +1 -1
  32. package/dist/gateway/static/root/assets/{date-picker-BM9HDlUj.js → date-picker-CcfRQKmj.js} +1 -1
  33. package/dist/gateway/static/root/assets/{dependency-picker-BybqITjG.js → dependency-picker-b9Tif8dg.js} +1 -1
  34. package/dist/gateway/static/root/assets/{desktop-pet-CYoJiTna.js → desktop-pet-BHe6Cb51.js} +1 -1
  35. package/dist/gateway/static/root/assets/{desktop-pet-settings-CXcTdFHs.js → desktop-pet-settings-wgA6yOo1.js} +1 -1
  36. package/dist/gateway/static/root/assets/{device-pairing-wizard-DnkRc3SQ.js → device-pairing-wizard-fv8c6u1o.js} +1 -1
  37. package/dist/gateway/static/root/assets/{directory-picker-path-field-BNC2UnEM.js → directory-picker-path-field-DM2YpM4N.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-debug-page-CHU0dr2j.js → extension-debug-page-B-Y_Zk8L.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-page-DXjPSQIh.js → extension-page-BC1m3MlB.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-settings-page-DqFNPQsx.js → extension-settings-page-Cu3cfeJj.js} +1 -1
  41. package/dist/gateway/static/root/assets/{gateway-config-swr-DcE8n_ZS.js → gateway-config-swr-ukBQYwfH.js} +1 -1
  42. package/dist/gateway/static/root/assets/gateway-realtime-DvNfXjan.js +1 -0
  43. package/dist/gateway/static/root/assets/gateway-realtime-store-DGQMXjfI.js +1 -0
  44. package/dist/gateway/static/root/assets/{gateway-settings-BJVKTwIx.js → gateway-settings-pxmn3b8n.js} +1 -1
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-CCPlq9Lk.js → gateway-startup-retry-CVpOj205.js} +1 -1
  46. package/dist/gateway/static/root/assets/{home-page-B2imtrmi.js → home-page-DOsvv2rU.js} +1 -1
  47. package/dist/gateway/static/root/assets/{image-generation-api-D1Uh-05P.js → image-generation-api-zxx0qG9z.js} +1 -1
  48. package/dist/gateway/static/root/assets/{imports-page-CsypWC3J.js → imports-page-CWYDLeqJ.js} +1 -1
  49. package/dist/gateway/static/root/assets/index-DsIQD44S.js +106 -0
  50. package/dist/gateway/static/root/assets/index-y6kxoLV2.css +1 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CSzm05SM.js → keyboard-shortcuts-settings-BEkTI6mv.js} +1 -1
  52. package/dist/gateway/static/root/assets/{local-app-workbench-page-BulzWHzC.js → local-app-workbench-page-aSXZL05r.js} +1 -1
  53. package/dist/gateway/static/root/assets/{local-apps-page-BQ2QlJNH.js → local-apps-page-BJThsekO.js} +1 -1
  54. package/dist/gateway/static/root/assets/{local-session-drafts-D9DeB55u.js → local-session-drafts-Dt_Yx7kq.js} +1 -1
  55. package/dist/gateway/static/root/assets/{locale-store-B0WmWiCo.js → locale-store-B008NR-f.js} +1 -1
  56. package/dist/gateway/static/root/assets/{logs-page-harzpOPJ.js → logs-page-WlqqTmpk.js} +1 -1
  57. package/dist/gateway/static/root/assets/{management-settings-BXKeyT_O.js → management-settings-j_npowOA.js} +1 -1
  58. package/dist/gateway/static/root/assets/{markdown-view-CSADmLmZ.js → markdown-view-BjDzimRP.js} +1 -1
  59. package/dist/gateway/static/root/assets/{media-plugins-CMe8YQ8l.js → media-plugins-DhYWGP6O.js} +1 -1
  60. package/dist/gateway/static/root/assets/messages-aVTaD9Mj.js +3 -0
  61. package/dist/gateway/static/root/assets/{note-detail-panel-DD9n9tnf.js → note-detail-panel-CYcNB2Pf.js} +3 -3
  62. package/dist/gateway/static/root/assets/{notes-page-B5NcvMau.js → notes-page-4D1-mt6Y.js} +1 -1
  63. package/dist/gateway/static/root/assets/{page-context-capture-button-BwFIuZqk.js → page-context-capture-button-BfmOqRGN.js} +1 -1
  64. package/dist/gateway/static/root/assets/{page-tabs-DH4JI3t_.js → page-tabs-aFGUXE53.js} +1 -1
  65. package/dist/gateway/static/root/assets/{preview-open-alternatives-D3Wsh5jh.js → preview-open-alternatives-BCEnqJTC.js} +1 -1
  66. package/dist/gateway/static/root/assets/{product-open-page-iigCUM2g.js → product-open-page-DHcx6kDT.js} +1 -1
  67. package/dist/gateway/static/root/assets/{project-detail-page-C19aDnSV.js → project-detail-page-ChKkovsq.js} +1 -1
  68. package/dist/gateway/static/root/assets/{projects-page-aWOL4_py.js → projects-page-Lt3HXMRm.js} +1 -1
  69. package/dist/gateway/static/root/assets/{registry-api-Bw0ZkSav.js → registry-api-EPj5O77m.js} +1 -1
  70. package/dist/gateway/static/root/assets/{remote-access-hub-CGLJFrLG.js → remote-access-hub-B94Vc-fj.js} +1 -1
  71. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-ArGdQMYT.js → runtime-tools-settings-panel-DNU19xEH.js} +1 -1
  72. package/dist/gateway/static/root/assets/{scenes-page-WB5cZttQ.js → scenes-page-BgzfnfOB.js} +1 -1
  73. package/dist/gateway/static/root/assets/{schema-form-Bzga2Tq0.js → schema-form-MKBLqh8C.js} +1 -1
  74. package/dist/gateway/static/root/assets/session-api-D5BlAIge.js +1 -0
  75. package/dist/gateway/static/root/assets/session-manager-DcFS0yfO.js +16 -0
  76. package/dist/gateway/static/root/assets/{sessions-page-DCs83Gg-.js → sessions-page-sYWhgEMH.js} +1 -1
  77. package/dist/gateway/static/root/assets/settings-advanced-gate-alf3atpI.js +1 -0
  78. package/dist/gateway/static/root/assets/{settings-form-section-DMchToFl.js → settings-form-section-C2gcfyxy.js} +1 -1
  79. package/dist/gateway/static/root/assets/{settings-page-Dh-S9_GO.js → settings-page-CYd6_yBb.js} +1 -1
  80. package/dist/gateway/static/root/assets/{setup-status-panel-kFPkdt3z.js → setup-status-panel-CUbH_YtB.js} +1 -1
  81. package/dist/gateway/static/root/assets/{share-preview-page-CrVC0BzQ.js → share-preview-page-Dxwq4fx1.js} +1 -1
  82. package/dist/gateway/static/root/assets/{shares-settings-ZesbsEGA.js → shares-settings-CqwHm0Mf.js} +1 -1
  83. package/dist/gateway/static/root/assets/{skill-api-Deb8HqtR.js → skill-api-C9k6G-tI.js} +1 -1
  84. package/dist/gateway/static/root/assets/skill-reload-api-D9bB-ANm.js +1 -0
  85. package/dist/gateway/static/root/assets/{skills-page-Bgs9jaCc.js → skills-page-CFiCgbAs.js} +1 -1
  86. package/dist/gateway/static/root/assets/{system-settings-panel-CwD47-_i.js → system-settings-panel-1tXKr0cJ.js} +1 -1
  87. package/dist/gateway/static/root/assets/task-detail-page-BBQ3sk4y.js +1 -0
  88. package/dist/gateway/static/root/assets/{tasks-QQJXsiER.js → tasks-BH8_WMUF.js} +1 -1
  89. package/dist/gateway/static/root/assets/{tunnel-api-DtL__Vgg.js → tunnel-api-COo0rSrc.js} +1 -1
  90. package/dist/gateway/static/root/assets/{usage-page-DZ01CsLl.js → usage-page-DHXG-2Rr.js} +1 -1
  91. package/dist/gateway/static/root/assets/{use-autosave-XBFnwLd0.js → use-autosave-CJfX4SWk.js} +1 -1
  92. package/dist/gateway/static/root/assets/{user-model-page-ByACaDBG.js → user-model-page-d-Gjs-EX.js} +1 -1
  93. package/dist/gateway/static/root/assets/{voice-api-key-field-NaIj9rQC.js → voice-api-key-field-D0gWz3iO.js} +1 -1
  94. package/dist/gateway/static/root/assets/{voice-config-api-st1q4lqP.js → voice-config-api-BnnUzr07.js} +1 -1
  95. package/dist/gateway/static/root/assets/{work-discovery-overlay-D418eqa5.js → work-discovery-overlay-CDAZKFVO.js} +1 -1
  96. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CSXIidqw.js → workflow-run-setup-panel-Db0lk_9G.js} +1 -1
  97. package/dist/gateway/static/root/assets/{workflows-page-nGttfQ1r.js → workflows-page-Dj89Gagd.js} +1 -1
  98. package/dist/gateway/static/root/index.html +16 -16
  99. package/dist/package.js +1 -1
  100. package/dist/packages/endpoint-tools-protocol/src/index.js +2 -1
  101. package/dist/packages/gateway-contract/src/sessions.js +11 -0
  102. package/dist/packages/gateway-contract/src/tasks.js +1 -0
  103. package/dist/src/agent/memory/context-budget.d.ts +2 -0
  104. package/dist/src/agent/memory/context-budget.js +23 -2
  105. package/dist/src/agent/memory/context-recovery.js +2 -2
  106. package/dist/src/agent/service/direct-turn-helpers.js +2 -2
  107. package/dist/src/agent/service/process-direct-streaming.js +16 -2
  108. package/dist/src/agent/tasks/task-judge-service.d.ts +1 -0
  109. package/dist/src/agent/tasks/task-judge-service.js +55 -33
  110. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  111. package/dist/src/agent/tool-manuals/computer.js +2 -2
  112. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  113. package/dist/src/agent/tool-manuals/xopc-use.js +28 -2
  114. package/dist/src/agent/tools/computer-use-tool.d.ts +0 -2
  115. package/dist/src/agent/tools/computer-use-tool.js +31 -19
  116. package/dist/src/agent/tools/factory.js +2 -3
  117. package/dist/src/agent/tools/xopc-use-tool.js +179 -8
  118. package/dist/src/capabilities/runtime/dispatcher.d.ts +2 -0
  119. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  120. package/dist/src/computer/broker.d.ts +6 -0
  121. package/dist/src/computer/broker.js +14 -0
  122. package/dist/src/computer/errors.js +2 -1
  123. package/dist/src/computer/model-adapter.js +3 -3
  124. package/dist/src/gateway/chat-stream/mapper.d.ts +3 -0
  125. package/dist/src/gateway/chat-stream/mapper.js +5 -1
  126. package/dist/src/gateway/chat-stream/protocol.d.ts +3 -0
  127. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -2
  128. package/dist/src/gateway/hono/routes/sessions.js +19 -2
  129. package/dist/src/gateway/hono/routes/tasks.js +93 -0
  130. package/dist/src/gateway/service/active-execution.js +1 -1
  131. package/dist/src/gateway/service/run-gateway-agent.js +5 -1
  132. package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
  133. package/dist/src/gateway/service.d.ts +2 -1
  134. package/dist/src/gateway/service.js +70 -6
  135. package/dist/src/gateway/session-context-summary.js +17 -0
  136. package/dist/src/home-intelligence/host.js +2 -2
  137. package/dist/src/session/client-history.d.ts +7 -1
  138. package/dist/src/session/client-history.js +51 -1
  139. package/dist/src/session/store.js +10 -2
  140. package/dist/src/session/types.d.ts +1 -0
  141. package/dist/src/storage/sqlite/index.d.ts +1 -1
  142. package/dist/src/storage/sqlite/index.js +2 -2
  143. package/dist/src/storage/sqlite/migrations/224_task_origin_links.sql +8 -0
  144. package/dist/src/storage/sqlite/migrations/225_task_collaboration.sql +32 -0
  145. package/dist/src/storage/sqlite/migrations/226_task_main_updates.sql +9 -0
  146. package/dist/src/storage/sqlite/migrations/227_task_main_update_decisions.sql +8 -0
  147. package/dist/src/storage/sqlite/migrations/228_task_main_agent_links.sql +14 -0
  148. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  149. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  150. package/dist/src/storage/sqlite/schema.js +1 -1
  151. package/dist/src/storage/sqlite/session-input-repository.d.ts +9 -0
  152. package/dist/src/storage/sqlite/session-input-repository.js +28 -1
  153. package/dist/src/storage/sqlite/session-repository.js +11 -0
  154. package/dist/src/tasks/capabilities/write.js +2 -0
  155. package/dist/src/tasks/index.js +2 -2
  156. package/dist/src/tasks/task-application-service.js +19 -1
  157. package/dist/src/tasks/task-collaboration-delivery.d.ts +9 -0
  158. package/dist/src/tasks/task-collaboration-delivery.js +100 -0
  159. package/dist/src/tasks/task-collaboration-repository.d.ts +52 -0
  160. package/dist/src/tasks/task-collaboration-repository.js +151 -0
  161. package/dist/src/tasks/task-context-assembler.d.ts +2 -0
  162. package/dist/src/tasks/task-context-assembler.js +23 -1
  163. package/dist/src/tasks/task-main-agent-repository.d.ts +10 -0
  164. package/dist/src/tasks/task-main-agent-repository.js +30 -0
  165. package/dist/src/tasks/task-main-update-decision-service.d.ts +21 -0
  166. package/dist/src/tasks/task-main-update-decision-service.js +118 -0
  167. package/dist/src/tasks/task-main-update-delivery.d.ts +16 -0
  168. package/dist/src/tasks/task-main-update-delivery.js +64 -0
  169. package/dist/src/tasks/task-main-update-input.d.ts +20 -0
  170. package/dist/src/tasks/task-main-update-input.js +37 -0
  171. package/dist/src/tasks/task-orchestration-metrics.d.ts +17 -0
  172. package/dist/src/tasks/task-orchestration-metrics.js +61 -0
  173. package/dist/src/tasks/task-origin-repository.d.ts +14 -0
  174. package/dist/src/tasks/task-origin-repository.js +29 -0
  175. package/dist/src/tasks/task-run-dispatcher.d.ts +3 -0
  176. package/dist/src/tasks/task-run-dispatcher.js +65 -7
  177. package/dist/src/tasks/task-run-repository.d.ts +2 -0
  178. package/dist/src/tasks/task-run-repository.js +12 -1
  179. package/dist/src/tasks/task-sidebar-hierarchy.d.ts +14 -0
  180. package/dist/src/tasks/task-sidebar-hierarchy.js +49 -0
  181. package/dist/src/tui/chat-history.js +8 -0
  182. package/dist/src/tui/tui-session-snapshot.js +4 -3
  183. package/dist/src/tui/tui.js +1 -1
  184. package/dist/src/voice/realtime/agentBroker.d.ts +4 -0
  185. package/dist/src/voice/realtime/agentBroker.js +9 -3
  186. package/dist/src/voice/realtime/agentEngine.js +47 -13
  187. package/dist/src/voice/realtime/engine.d.ts +5 -0
  188. package/dist/src/voice/realtime/omniEngine.js +66 -12
  189. package/dist/src/voice/realtime/playback-echo.js +2 -0
  190. package/dist/src/voice/realtime/runtime.d.ts +6 -0
  191. package/dist/src/voice/realtime/runtime.js +12 -0
  192. package/dist/src/voice/realtime/turnPolicy.d.ts +1 -0
  193. package/dist/src/voice/realtime/turnPolicy.js +3 -0
  194. package/package.json +3 -3
  195. package/dist/gateway/static/root/assets/computer-settings-page-CciQtKpz.js +0 -1
  196. package/dist/gateway/static/root/assets/gateway-realtime-BeUJkjA3.js +0 -1
  197. package/dist/gateway/static/root/assets/gateway-realtime-store-C-8wwbt_.js +0 -1
  198. package/dist/gateway/static/root/assets/index-Ca6iqaCn.css +0 -1
  199. package/dist/gateway/static/root/assets/index-DqQgdJHd.js +0 -106
  200. package/dist/gateway/static/root/assets/messages-CTKYRqR-.js +0 -3
  201. package/dist/gateway/static/root/assets/session-api-BY3dAGBn.js +0 -1
  202. package/dist/gateway/static/root/assets/session-manager-D10sD8IN.js +0 -16
  203. package/dist/gateway/static/root/assets/settings-advanced-gate-yIwyFL-A.js +0 -1
  204. package/dist/gateway/static/root/assets/skill-reload-api-DvWOrc3C.js +0 -1
  205. package/dist/gateway/static/root/assets/task-detail-page-DFEM3Xbj.js +0 -1
@@ -1 +0,0 @@
1
- import{r as e}from"./locale-store-B0WmWiCo.js";import{a as t,d as n,f as r,g as i,i as a,l as o,p as s,r as c,s as l,t as u,u as d,v as f}from"./schemas-CObaziC7.js";import{t as p}from"./gateway-realtime-store-C-8wwbt_.js";var m=25*1024*1024,h=u([`web`,`desktop`,`mobile`,`browser`]),g=u([`foreground`,`background`]),_=u([`read`,`write`,`destructive`]),ee=u([`never`,`always`]),te=u([`text`,`json`,`file`]),ne=u([`public`,`personal`]),v=s().min(1).max(160),re=s().min(32).max(160).regex(/^[A-Za-z0-9_-]+$/);t(`type`,[r({type:l(`endpoint`),endpointId:v}),r({type:l(`channel`),channel:s().min(1).max(64)}),r({type:l(`system`),source:u([`cli`,`automation`,`heartbeat`,`workflow`,`internal`])})]).options[0].extend({token:re});var ie=f(),y=o().int().nonnegative(),b=n(s(),i()),x=r({name:s().regex(/^[a-z][a-z0-9_]*(?:\.[a-z][a-z0-9_]*)+$/).max(120),title:s().min(1).max(120),description:s().min(1).max(2e3),inputSchema:b,outputSchema:b,policyId:s().regex(/^[a-z][a-z0-9_.-]+$/).max(120),sensitivity:ne,effect:_,confirmation:ee,requiresForeground:a(),requiredPermissions:c(s().min(1).max(120)).max(20),timeoutMs:o().int().min(1e3).max(3e5),maxConcurrency:o().int().min(1).max(4),supportsCancellation:a(),idempotent:a(),resultKinds:c(te).min(1).max(3)});r({principalId:v,displayName:s().min(1).max(120),kind:h,platform:s().min(1).max(80),publicKey:s().min(32).max(2048)}),r({endpointId:v});var S=s().regex(/^[a-z][a-z0-9_]*(?:\.[a-z][a-z0-9_]*)+$/).max(120);r({jobId:f(),endpointId:v,capability:S,input:b,idempotencyKey:v,consentGrantId:v,createdAt:y,expiresAt:y}),r({jobId:f(),status:u([`queued`,`running`,`succeeded`,`failed`,`cancelled`]),updatedAt:y,output:b.optional(),error:r({code:v,message:s().min(1).max(2e3)}).optional()}),r({eventId:f(),endpointId:v,subscriptionId:v,eventType:S,data:b,occurredAt:y});var C=r({principalId:v,endpointId:v,connectionInstanceId:f(),displayName:s().min(1).max(120),kind:h,platform:s().min(1).max(80),appVersion:s().min(1).max(80),availability:g,nonce:v,signedAt:y,signature:s().min(16).max(1024),tools:c(x).max(100)}),w=r({invocationId:f(),toolCallId:v,toolName:x.shape.name,arguments:b,descriptorRevision:s().min(1).max(128),confirmationRequired:a(),deadlineAt:y,uploadGrant:r({path:s().startsWith(`/`).max(500),token:v,maxBytes:o().int().positive(),maxFiles:o().int().min(1).max(20),expiresAt:y}).optional()}),ae=r({invocationId:f(),reason:s().min(1).max(500)}),T=r({invocationId:f()}),E=t(`type`,[r({type:l(`text`),text:s().max(256*1024)}),r({type:l(`json`),value:i()}),r({type:l(`file`),fileId:v,name:s().min(1).max(255),mimeType:s().min(1).max(255),size:o().int().nonnegative(),sha256:s().regex(/^[a-f0-9]{64}$/)})]),D=u([`ENDPOINT_OFFLINE`,`ENDPOINT_NOT_FOREGROUND`,`ENDPOINT_DISCONNECTED`,`TOOL_NOT_FOUND`,`TOOL_REVISION_MISMATCH`,`INVALID_ARGUMENTS`,`PERMISSION_DENIED`,`USER_DENIED`,`TOOL_BUSY`,`TOOL_TIMEOUT`,`TOOL_CANCELLED`,`RESULT_TOO_LARGE`,`PROTOCOL_ERROR`]),O=(e,t)=>r({protocolVersion:l(2),messageId:ie,type:l(e),sentAt:y,payload:t}),oe=t(`type`,[O(`endpoint.availability_changed`,r({availability:g})),O(`tool.received`,T),O(`tool.progress`,r({invocationId:f(),message:s().max(500).optional(),percent:o().min(0).max(100).optional()})),O(`tool.result`,r({invocationId:f(),content:c(E).min(1).max(20),details:b.optional()})),O(`tool.error`,r({invocationId:f(),code:D,message:s().min(1).max(2e3)})),O(`tool.cancelled`,T)]),se=t(`type`,[O(`tool.invoke`,w),O(`tool.cancel`,ae)]),ce={type:`array`,minItems:1,maxItems:20,items:{type:`object`,additionalProperties:!1,required:[`type`,`text`],properties:{type:{const:`text`},text:{type:`string`,maxLength:256*1024}}}},le={type:`array`,minItems:1,maxItems:20,items:{type:`object`,additionalProperties:!1,required:[`type`,`fileId`,`name`,`mimeType`,`size`,`sha256`],properties:{type:{const:`file`},fileId:{type:`string`,minLength:1,maxLength:160},name:{type:`string`,minLength:1,maxLength:255},mimeType:{type:`string`,minLength:1,maxLength:255},size:{type:`integer`,minimum:0},sha256:{type:`string`,pattern:`^[a-f0-9]{64}$`}}}};function k(e){if(e===null)return`null`;if(typeof e==`string`||typeof e==`boolean`)return JSON.stringify(e);if(typeof e==`number`){if(!Number.isFinite(e))throw Error(`Canonical JSON only supports finite numbers`);return JSON.stringify(e)}if(typeof e!=`object`)throw Error(`Canonical JSON does not support ${typeof e}`);if(Array.isArray(e))return`[${e.map(k).join(`,`)}]`;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw Error(`Canonical JSON only supports plain objects`);let n=e;return`{${Object.keys(n).sort().map(e=>`${JSON.stringify(e)}:${k(n[e])}`).join(`,`)}}`}function A(e){let{signature:t,...n}=e;return k(n)}var j=256*1024,M=15e3,N=45e3,P=[`realtime.capability-negotiation.v1`],F=u([`web`,`desktop`,`mobile`,`browser_extension`,`tui`,`mcp`]),I=s().min(1).max(512),L=s().regex(/^[a-z][a-z0-9_.-]*$/).max(160),R=f(),z=o().int().nonnegative(),B=o().int().positive(),V=s().min(1).max(160),H=(e,t)=>d({protocolVersion:l(2),messageId:R,kind:l(e),sentAt:z,payload:t}),U=d({topic:I,afterSeq:o().int().nonnegative().optional(),view:l(`compact`).optional()});t(`kind`,[H(`realtime.hello`,d({ticket:s().min(32).max(512),clientId:s().min(1).max(160),clientKind:F,subscriptions:c(U).max(100).default([]),capabilities:c(V).max(64).optional(),endpoint:C.optional()})),H(`realtime.subscribe`,d({subscriptions:c(U).min(1).max(100)})),H(`realtime.unsubscribe`,d({topics:c(I).min(1).max(100)})),H(`realtime.ping`,d({})),H(`endpoint.message`,oe)]);var W=d({topic:I,seq:B,event:L,data:i()}),ue=t(`kind`,[H(`realtime.ready`,d({connectionId:f(),heartbeatIntervalMs:l(M),heartbeatTimeoutMs:l(N),negotiatedCapabilities:c(V).max(64).optional(),endpoint:d({endpointId:s().min(1).max(160),turnToken:s().min(32).max(160)}).optional()})),H(`realtime.event`,W),H(`realtime.subscribed`,d({topic:I,cursor:o().int().nonnegative()})),H(`realtime.gap`,d({topic:I,requestedSeq:o().int().nonnegative(),earliestSeq:B,recoverable:a()})),H(`realtime.pong`,d({})),H(`realtime.error`,d({code:s().min(1).max(80),message:s().min(1).max(500)})),H(`endpoint.message`,se)]);function de(e){return ue.parse(e)}var G=class extends Error{retryable;constructor(e,t){super(e),this.retryable=t,this.name=`RealtimeConnectionError`}},fe=class extends Error{bytes;maxBytes;constructor(e,t){super(`Realtime client frame is ${e} bytes; maximum is ${t} bytes`),this.bytes=e,this.maxBytes=t,this.name=`RealtimeFrameTooLargeError`}};function pe(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return new TextDecoder().decode(e);if(ArrayBuffer.isView(e)){let t=Uint8Array.from(new Uint8Array(e.buffer,e.byteOffset,e.byteLength));return new TextDecoder().decode(t)}throw Error(`Realtime server sent a non-text frame`)}function me(e){return e===1009||e===4400||e===4401||e===4409||e===4413}var he=class{options;desiredSubscriptions=new Map;cursors=new Map;socket;reconnectTimer;heartbeatTimer;connectionTimer;ticketAbort;generation=0;reconnectAttempts=0;shouldReconnect=!1;ready=!1;lastServerMessageAt=0;endpointBinding;reconnectWhenSocketOpens=!1;offeredCapabilities=new Set;constructor(e){this.options=e}connect(){this.shouldReconnect||(this.shouldReconnect=!0,this.open(!1))}disconnect(){this.shouldReconnect=!1,this.reconnectWhenSocketOpens=!1,this.generation+=1,this.clearTimers(),this.ready=!1,this.offeredCapabilities.clear(),this.endpointBinding?.onDisconnected?.(),this.socket?.close(1e3,`Client disconnected`),this.socket=void 0,this.options.onStateChange?.(`disconnected`)}reconnect(){this.reconnectWhenSocketOpens=!1,this.generation+=1,this.clearTimers(),this.ready=!1,this.endpointBinding?.onDisconnected?.(),this.socket?.close(1e3,`Client reconnecting`),this.socket=void 0,this.reconnectAttempts=0,this.shouldReconnect=!0,this.open(!0)}subscribe(e,t){this.desiredSubscriptions.set(e,t),t!==void 0&&this.cursors.set(e,t),this.ready&&this.sendSubscriptions([{topic:e,afterSeq:this.cursors.get(e)??t}])}unsubscribe(e){this.desiredSubscriptions.delete(e),this.ready&&this.send(this.clientMessage(`realtime.unsubscribe`,{topics:[e]}))}sendEndpointMessage(e){if(!this.ready)throw Error(`Realtime connection is not ready`);this.send(this.clientMessage(`endpoint.message`,e))}setEndpoint(e){this.endpointBinding=e,this.refreshEndpointConnection()}clearEndpoint(e){if(e&&this.endpointBinding!==e)return;let t=this.endpointBinding;this.endpointBinding=void 0,t?.onDisconnected?.(),this.refreshEndpointConnection()}refreshEndpointConnection(){if(this.shouldReconnect){if(this.socket?.readyState===0){this.reconnectWhenSocketOpens=!0;return}this.reconnect()}}async open(e){let t=++this.generation,n=this.options.connectionTimeoutMs??15e3,r=new AbortController;this.ticketAbort?.abort(),this.ticketAbort=r;let i,a=!1,o,s=(e,n=!0)=>{a||t!==this.generation||(a=!0,this.clearConnectionTimer(),r.abort(),this.ticketAbort===r&&(this.ticketAbort=void 0),this.ready=!1,this.offeredCapabilities.clear(),this.endpointBinding?.onDisconnected?.(),this.clearHeartbeat(),this.socket===i&&(this.socket=void 0),i&&(i.onopen=null,i.onmessage=null,i.onerror=null,i.onclose=null,i.close(4e3,e.slice(0,120))),this.shouldReconnect&&n?this.scheduleReconnect(e):this.shouldReconnect?(this.shouldReconnect=!1,this.options.onStateChange?.(`error`,e)):this.options.onStateChange?.(`disconnected`))};this.connectionTimer=setTimeout(()=>s(`Realtime connection timed out`),n),this.options.onStateChange?.(e?`reconnecting`:`connecting`);try{let[e,n]=await Promise.all([this.options.issueTicket(r.signal),this.endpointBinding?.createHello()]),c=e.ticket;if(2<e.realtime.minVersion)throw new G(`CLIENT_UPDATE_REQUIRED`,!1);if(2>e.realtime.maxVersion)throw new G(`GATEWAY_UPDATE_REQUIRED`,!1);let l=P.filter(t=>e.realtime.capabilities.includes(t));if(a||!this.shouldReconnect||t!==this.generation)return;this.offeredCapabilities=new Set(l??[]),i=this.options.createWebSocket(this.options.getWebSocketUrl()),this.socket=i,i.onopen=()=>{if(t!==this.generation)return;if(this.reconnectWhenSocketOpens){this.reconnect();return}let e=[...this.desiredSubscriptions].map(([e,t])=>({topic:e,afterSeq:this.cursors.get(e)??t}));this.send(this.clientMessage(`realtime.hello`,{ticket:c,clientId:this.options.clientId,clientKind:this.options.clientKind,subscriptions:e,...l?.length?{capabilities:l}:{},...n?{endpoint:n}:{}}))},i.onmessage=e=>{if(t!==this.generation)return;let n=()=>{if(!(a||t!==this.generation))return this.handleServerMessage(pe(e.data))};if(!o){try{let e=n();if(!e)return;let t=e.catch(e=>s(e instanceof Error?e.message:`Invalid realtime server message`)).then(()=>void 0);o=t,t.finally(()=>{o===t&&(o=void 0)})}catch(e){s(e instanceof Error?e.message:`Invalid realtime server message`)}return}let r=o.then(n).catch(e=>s(e instanceof Error?e.message:`Invalid realtime server message`)).then(()=>void 0);o=r,r.finally(()=>{o===r&&(o=void 0)})},i.onerror=()=>{},i.onclose=e=>{s(e.reason||`WebSocket closed (${e.code??0})`,!me(e.code))}}catch(e){s(e instanceof Error?e.message:`Realtime connection failed`,!(e instanceof G)||e.retryable)}}handleServerMessage(e){let t=de(JSON.parse(e));if(this.lastServerMessageAt=Date.now(),t.kind===`realtime.ready`){let e=t.payload.negotiatedCapabilities??[];if(e.some(e=>!this.offeredCapabilities.has(e)))throw Error(`Realtime server negotiated a capability the client did not offer`);this.ready=!0,this.reconnectAttempts=0,this.clearConnectionTimer(),this.ticketAbort=void 0,this.options.onStateChange?.(`connected`),this.options.onCapabilities?.(e),t.payload.endpoint&&this.endpointBinding?.onReady(t.payload.endpoint),this.clearHeartbeat(),this.heartbeatTimer=setInterval(()=>{if(this.ready){if(Date.now()-this.lastServerMessageAt>=t.payload.heartbeatTimeoutMs){this.reconnect();return}this.send(this.clientMessage(`realtime.ping`,{}))}},t.payload.heartbeatIntervalMs)}else if(t.kind===`realtime.event`){let e=this.cursors.get(t.payload.topic);if(e!==void 0&&t.payload.seq<=e)return;this.options.onEvent?.(t.payload),this.cursors.set(t.payload.topic,t.payload.seq)}else if(t.kind===`realtime.subscribed`)this.cursors.set(t.payload.topic,t.payload.cursor),this.options.onSubscribed?.(t.payload);else if(t.kind===`realtime.gap`)return this.cursors.set(t.payload.topic,t.payload.earliestSeq-1),this.options.onGap?.(t.payload);else t.kind===`realtime.error`?this.options.onStateChange?.(`error`,t.payload.message):t.kind===`endpoint.message`&&(this.endpointBinding?.onMessage(t.payload),this.options.onEndpointMessage?.(t.payload))}sendSubscriptions(e){this.send(this.clientMessage(`realtime.subscribe`,{subscriptions:e}))}clientMessage(e,t){let n=this.options.createMessageId?.()??globalThis.crypto?.randomUUID?.();if(!n)throw Error(`RealtimeClient requires createMessageId when crypto.randomUUID is unavailable`);return{protocolVersion:2,messageId:n,kind:e,sentAt:Date.now(),payload:t}}send(e){if(!this.socket||this.socket.readyState!==1)return;let t=JSON.stringify(e),n=new TextEncoder().encode(t).byteLength;if(n>262144)throw new fe(n,j);this.socket.send(t)}scheduleReconnect(e){if(!this.shouldReconnect)return;this.reconnectAttempts+=1;let t=this.options.maxReconnectAttempts;if(t!==void 0&&this.reconnectAttempts>t){this.shouldReconnect=!1,this.options.onStateChange?.(`error`,e);return}this.options.onStateChange?.(`reconnecting`,e);let n=Math.min(3e4,1e3*2**Math.min(this.reconnectAttempts-1,5)),r=Math.round(n*(.5+Math.random()*.5));this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.open(!0)},r)}clearHeartbeat(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0}clearTimers(){this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0,this.clearConnectionTimer(),this.ticketAbort?.abort(),this.ticketAbort=void 0,this.clearHeartbeat()}clearConnectionTimer(){this.connectionTimer&&clearTimeout(this.connectionTimer),this.connectionTimer=void 0}},ge=500,K=null,q;function J(e){q=e,K!==null&&clearTimeout(K),K=setTimeout(()=>{K=null;let e=q;q=void 0,window.dispatchEvent(new CustomEvent(`config-reload`,{detail:e}))},ge)}function _e(e,t){if(e===`config.reload`){J(t);return}window.dispatchEvent(new CustomEvent(e.replace(/[._]/g,`-`),{detail:t}))}var Y=new Map,X=new Map,Z,Q;function $(){let e=`xopc:realtime-client-id`,t=sessionStorage.getItem(e);if(t)return t;let n=crypto.randomUUID();return sessionStorage.setItem(e,n),n}function ve(){let t=new URL(e(`/api/realtime/v1/ws`));return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.toString()}function ye(){let t=$(),n=window.electronAPI?`desktop`:`web`,r=new he({clientId:t,clientKind:n,getWebSocketUrl:ve,issueTicket:async r=>{let i=await fetch(e(`/api/realtime/tickets`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientId:t,clientKind:n,protocolVersion:2}),signal:r}),a=await i.json().catch(()=>null);if(!i.ok||!a?.payload?.ticket||!a.payload.realtime)throw Error(a?.error?.message??`Realtime ticket failed (${i.status})`);return{ticket:a.payload.ticket,realtime:a.payload.realtime}},createWebSocket:e=>new WebSocket(e),onStateChange:(e,t)=>{p({connectionState:e,error:t??null}),e===`connected`&&window.dispatchEvent(new CustomEvent(`gateway-realtime-connected`))},onEvent:e=>{(e.topic===`gateway`||e.topic===`sessions`)&&_e(e.event,e.data);let t=X.get(e.topic);(t===void 0||e.seq>t)&&X.set(e.topic,e.seq);for(let t of Y.get(e.topic)??[])if(!(t.cursor!==void 0&&e.seq<=t.cursor))try{t.listener.onEvent(e)}catch(e){console.error(`[realtime] topic listener failed:`,e)}finally{t.cursor=Math.max(t.cursor??0,e.seq)}},onGap:async e=>{window.dispatchEvent(new CustomEvent(`realtime-gap`,{detail:e}));let t=[...Y.get(e.topic)??[]].filter(t=>!e.recoverable||t.cursor===void 0||t.cursor<e.earliestSeq-1),n=await Promise.allSettled(t.map(t=>t.listener.onGap?.(e)));for(let e of n)e.status===`rejected`&&console.error(`[realtime] topic gap handler failed:`,e.reason)}});Z?.disconnect(),Z=r,Q&&r.setEndpoint(Q),r.subscribe(`gateway`,X.get(`gateway`)),r.subscribe(`sessions`,X.get(`sessions`));for(let e of Y.keys())r.subscribe(e,X.get(e));return p({connectionState:`connecting`,error:null}),r.connect(),()=>{Z===r&&(r.disconnect(),Z=void 0)}}function be(e){return Q=e,Z?.setEndpoint(e),()=>{Q===e&&(Q=void 0,Z?.clearEndpoint(e))}}function xe(e){Z?.sendEndpointMessage(e)}function Se(){Z?.reconnect()}function Ce(e,t,n){let r=Y.get(e)??new Set,i=r.size===0,a=X.get(e),o={listener:t,cursor:n??a};if(r.add(o),Y.set(e,r),i){let t=n??a;X.set(e,t),Z?.subscribe(e,t)}else n!==void 0&&(a===void 0||n<a)&&Z?.subscribe(e,n);return()=>{let t=Y.get(e);t?.delete(o),(!t||t.size===0)&&(Y.delete(e),X.delete(e),Z?.unsubscribe(e))}}export{Ce as a,m as c,A as d,E as f,ye as i,ce as l,Se as n,J as o,xe as r,le as s,be as t,k as u};
@@ -1 +0,0 @@
1
- import{p as e}from"./locale-store-B0WmWiCo.js";var t=e(()=>({connectionState:`idle`,error:null}));function n(e){t.setState(e)}export{t as n,n as t};