@xopcai/xopc 0.0.377 → 0.0.380

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 (226) hide show
  1. package/dist/browser-ext/_locales/en/messages.json +1 -0
  2. package/dist/browser-ext/_locales/zh_CN/messages.json +1 -0
  3. package/dist/browser-ext/dist/sidepanel.js +36 -9
  4. package/dist/browser-ext/manifest.json +1 -1
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/gateway/static/root/assets/{activity-store-BVtU6S1w.js → activity-store-D2oKh5ik.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BD63ce58.js → agent-avatar-dicebear-OKK1A-IR.js} +1 -1
  8. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-By5OXUfL.js +1 -0
  9. package/dist/gateway/static/root/assets/agent-plugin-dialog-b24CxjaT.js +1 -0
  10. package/dist/gateway/static/root/assets/{agents-admin-api-DgQph1Pu.js → agents-admin-api-D-DNV0ms.js} +1 -1
  11. package/dist/gateway/static/root/assets/agents-tJxKA9VH.js +66 -0
  12. package/dist/gateway/static/root/assets/{app-management-settings-panel-B0yP8rNC.js → app-management-settings-panel-DxKh06hG.js} +1 -1
  13. package/dist/gateway/static/root/assets/{appearance-settings-Bnq1nzDX.js → appearance-settings-C8CeHpdR.js} +1 -1
  14. package/dist/gateway/static/root/assets/{apps-page-CSIFuEnj.js → apps-page-CZSTLErb.js} +1 -1
  15. package/dist/gateway/static/root/assets/{archive-plugin-FBVMH4ym.js → archive-plugin-aoEF5gna.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automations-page-qsg6pZlF.js → automations-page-CSWWUZse.js} +1 -1
  17. package/dist/gateway/static/root/assets/automations-workspace-D2RJ-Lzn.js +6 -0
  18. package/dist/gateway/static/root/assets/{binary-plugins-B0qGhVNs.js → binary-plugins-BM3Lr1BP.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-CjQv4zlo.js → block-editor-DMZ3_pPz.js} +39 -39
  20. package/dist/gateway/static/root/assets/{browser-automation-inputs-DSbRHrG7.js → browser-automation-inputs-BcBLdyVd.js} +1 -1
  21. package/dist/gateway/static/root/assets/browser-automations-page-BLSr6du1.js +3 -0
  22. package/dist/gateway/static/root/assets/browser-settings-page-BlDHSstc.js +3 -0
  23. package/dist/gateway/static/root/assets/{capabilities-HaRLmYU1.js → capabilities-BOJYAeEJ.js} +1 -1
  24. package/dist/gateway/static/root/assets/{capabilities-LpGa-olH.js → capabilities-Bf6NYuvT.js} +1 -1
  25. package/dist/gateway/static/root/assets/{capabilities-page-BeQ-Yj3_.js → capabilities-page-DHT4cB-Y.js} +2 -2
  26. package/dist/gateway/static/root/assets/capabilities-settings-panel-NZZNtjwZ.js +8 -0
  27. package/dist/gateway/static/root/assets/{capability-header-actions-DuBac0EK.js → capability-header-actions-V7TdNf7i.js} +1 -1
  28. package/dist/gateway/static/root/assets/channels-sgWMfPkw.js +1 -0
  29. package/dist/gateway/static/root/assets/{chat-terminal-dock-CQc1mqZM.js → chat-terminal-dock-B4HNp59x.js} +2 -2
  30. package/dist/gateway/static/root/assets/{computer-settings-page-BIwOemaK.js → computer-settings-page-B2iwtbBu.js} +1 -1
  31. package/dist/gateway/static/root/assets/{connector-service-page-CG9KKuXq.js → connector-service-page-DTn3Z-MT.js} +1 -1
  32. package/dist/gateway/static/root/assets/connectors-page-BJii6NMu.js +1 -0
  33. package/dist/gateway/static/root/assets/{date-picker-DoZGE2hF.js → date-picker-DrUc4ivy.js} +1 -1
  34. package/dist/gateway/static/root/assets/{dependency-picker-hrz7p1Lv.js → dependency-picker-Bs16sgfD.js} +1 -1
  35. package/dist/gateway/static/root/assets/{desktop-pet-C1bTu_dG.js → desktop-pet-Dg0Cp16O.js} +1 -1
  36. package/dist/gateway/static/root/assets/{desktop-pet-settings-C2xCFimg.js → desktop-pet-settings-BeJg3R-X.js} +1 -1
  37. package/dist/gateway/static/root/assets/device-pairing-wizard-DPqFaLVI.js +1 -0
  38. package/dist/gateway/static/root/assets/{directory-picker-path-field-BaHQhI4z.js → directory-picker-path-field-BZkjdejC.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-debug-page-B1uMVNGe.js → extension-debug-page-CFnlTs2-.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-page-850m5tOc.js → extension-page-BH25rxhA.js} +1 -1
  41. package/dist/gateway/static/root/assets/{extension-provider-B-_CkaD2.js → extension-provider-CmaIRIVP.js} +1 -1
  42. package/dist/gateway/static/root/assets/{extension-settings-page-P3FNAW0n.js → extension-settings-page-D0af0S3r.js} +1 -1
  43. package/dist/gateway/static/root/assets/{fallback-models-BoJZA9Cm.js → fallback-models-BD_9_8lg.js} +1 -1
  44. package/dist/gateway/static/root/assets/{gateway-config-swr-siY2J0hx.js → gateway-config-swr-f-4qw3AG.js} +1 -1
  45. package/dist/gateway/static/root/assets/{gateway-realtime-Biz18NiE.js → gateway-realtime-BGhPOSfz.js} +1 -1
  46. package/dist/gateway/static/root/assets/gateway-realtime-store-BYe-jWB1.js +1 -0
  47. package/dist/gateway/static/root/assets/gateway-settings-Bzrm6DMQ.js +1 -0
  48. package/dist/gateway/static/root/assets/{gateway-startup-retry-CeL1OFDZ.js → gateway-startup-retry-90pvxKox.js} +1 -1
  49. package/dist/gateway/static/root/assets/home-page-oHguULk0.js +2 -0
  50. package/dist/gateway/static/root/assets/{image-generation-api-CeDrok06.js → image-generation-api-CtDjTXwX.js} +1 -1
  51. package/dist/gateway/static/root/assets/{imports-page-C9FTl2dW.js → imports-page-CjFNSzDN.js} +1 -1
  52. package/dist/gateway/static/root/assets/index-_xgO2IDa.css +1 -0
  53. package/dist/gateway/static/root/assets/index-hn5CBddI.js +106 -0
  54. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Dx-36I-c.js → keyboard-shortcuts-settings-DKdWZ7pq.js} +1 -1
  55. package/dist/gateway/static/root/assets/{local-app-workbench-page-Cg4gdTwm.js → local-app-workbench-page-CXJQpTS9.js} +1 -1
  56. package/dist/gateway/static/root/assets/{local-apps-page-3GKgu7at.js → local-apps-page-9dyoG2s0.js} +1 -1
  57. package/dist/gateway/static/root/assets/{local-session-drafts-DnSw14fE.js → local-session-drafts-CrD74S6k.js} +1 -1
  58. package/dist/gateway/static/root/assets/{locale-store-DSsLH7JO.js → locale-store-pmT2B_By.js} +1 -1
  59. package/dist/gateway/static/root/assets/logs-page-pMgnuu0O.js +2 -0
  60. package/dist/gateway/static/root/assets/{management-settings-DcgCzPd-.js → management-settings-CxElPS5j.js} +1 -1
  61. package/dist/gateway/static/root/assets/{markdown-view-2rwSrMXW.js → markdown-view-B_7--qVD.js} +1 -1
  62. package/dist/gateway/static/root/assets/{media-plugins-CjGiKLFo.js → media-plugins-C6tT2oPH.js} +1 -1
  63. package/dist/gateway/static/root/assets/{messages-Cn25s55n.js → messages-Ib6DaUTo.js} +3 -3
  64. package/dist/gateway/static/root/assets/models-hub-cache-3slk24cw.js +1 -0
  65. package/dist/gateway/static/root/assets/note-detail-panel-4GI5kfs2.js +5 -0
  66. package/dist/gateway/static/root/assets/{notes-api-D9fGUbkK.js → notes-api-ChO4X97y.js} +1 -1
  67. package/dist/gateway/static/root/assets/notes-page-DaMnzWfF.js +8 -0
  68. package/dist/gateway/static/root/assets/{page-context-capture-button-CKqYL9AQ.js → page-context-capture-button-3bLWMSqt.js} +1 -1
  69. package/dist/gateway/static/root/assets/personal-page-BeAW5QQd.js +1 -0
  70. package/dist/gateway/static/root/assets/{product-open-page-DFu_ZT2h.js → product-open-page-BiGwWy9s.js} +1 -1
  71. package/dist/gateway/static/root/assets/{product-preview-content-tPBCFa7L.js → product-preview-content-Dvy5ieTo.js} +1 -1
  72. package/dist/gateway/static/root/assets/project-detail-page-BNgCsfeE.js +1 -0
  73. package/dist/gateway/static/root/assets/projects-page-CATt0m8t.js +1 -0
  74. package/dist/gateway/static/root/assets/{registry-api-ZhIt79wL.js → registry-api-Bi4muyaZ.js} +1 -1
  75. package/dist/gateway/static/root/assets/remote-access-hub-5o06KAdu.js +1 -0
  76. package/dist/gateway/static/root/assets/runtime-tools-api-9bk1payF.js +5 -0
  77. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BnRVbeGi.js +1 -0
  78. package/dist/gateway/static/root/assets/{scenes-page-7LjR8Aek.js → scenes-page-BVjQ4A9S.js} +2 -2
  79. package/dist/gateway/static/root/assets/{schema-form-GwVc8KsT.js → schema-form-C0QHo3do.js} +1 -1
  80. package/dist/gateway/static/root/assets/send-session-input-BhWG0d-Z.js +1 -0
  81. package/dist/gateway/static/root/assets/{session-api-BUa3BaGX.js → session-api-D2J6VacQ.js} +1 -1
  82. package/dist/gateway/static/root/assets/session-manager-D2xce33J.js +16 -0
  83. package/dist/gateway/static/root/assets/sessions-page-BHYhAsHC.js +1 -0
  84. package/dist/gateway/static/root/assets/settings-advanced-gate-DO148Ocl.js +1 -0
  85. package/dist/gateway/static/root/assets/{settings-page-DAvi3P8Q.js → settings-page-BT6dQ5nv.js} +1 -1
  86. package/dist/gateway/static/root/assets/setup-status-panel-B9EqOzrI.js +1 -0
  87. package/dist/gateway/static/root/assets/{share-link-dialog-CbkS1cj-.js → share-link-dialog-Cu1miKUo.js} +1 -1
  88. package/dist/gateway/static/root/assets/{share-preview-page-DicRCB4L.js → share-preview-page-CWH4BdnM.js} +1 -1
  89. package/dist/gateway/static/root/assets/{shares-api-BUGeqXCG.js → shares-api-cGtd3rjc.js} +1 -1
  90. package/dist/gateway/static/root/assets/shares-settings-B3Z6sQEA.js +1 -0
  91. package/dist/gateway/static/root/assets/{skill-api-DpTUuYWk.js → skill-api-pzPKld3K.js} +1 -1
  92. package/dist/gateway/static/root/assets/{skill-reload-api-CII18PA5.js → skill-reload-api-VT8F0enn.js} +1 -1
  93. package/dist/gateway/static/root/assets/skills-page-Busjd4VD.js +2 -0
  94. package/dist/gateway/static/root/assets/{system-settings-panel-DlNaQp-l.js → system-settings-panel-CDuqpAIG.js} +1 -1
  95. package/dist/gateway/static/root/assets/{task-detail-page-DeElbs6T.js → task-detail-page-CNt-P3Kl.js} +2 -2
  96. package/dist/gateway/static/root/assets/{task-expandable-content-sONbgbwR.js → task-expandable-content-Dgk9lYGd.js} +1 -1
  97. package/dist/gateway/static/root/assets/{theme-store-Kz0VUMSb.js → theme-store-D7m5Eng5.js} +1 -1
  98. package/dist/gateway/static/root/assets/{tracing-settings-page-CZHhm1Nn.js → tracing-settings-page-B90frz6c.js} +1 -1
  99. package/dist/gateway/static/root/assets/{tunnel-api-sUbAaSX6.js → tunnel-api-BJ2UEjeF.js} +1 -1
  100. package/dist/gateway/static/root/assets/usage-page-DrV2qcKO.js +1 -0
  101. package/dist/gateway/static/root/assets/{use-autosave-CZzYhcAl.js → use-autosave-Ct1x4pqI.js} +1 -1
  102. package/dist/gateway/static/root/assets/{use-composer-attachments-Bb_Hqqry.js → use-composer-attachments-CyWRo1B1.js} +1 -1
  103. package/dist/gateway/static/root/assets/{use-file-preview-expanded-D4WI5JDn.js → use-file-preview-expanded-JIgp5qPT.js} +2 -2
  104. package/dist/gateway/static/root/assets/user-model-page-CQReU8e2.js +2 -0
  105. package/dist/gateway/static/root/assets/{voice-api-key-field-CIIGmtHR.js → voice-api-key-field-CSG8Hx8V.js} +1 -1
  106. package/dist/gateway/static/root/assets/{voice-config-api-BtWFziQc.js → voice-config-api-415pyWx8.js} +1 -1
  107. package/dist/gateway/static/root/assets/work-discovery-overlay-Dp107FXF.js +1 -0
  108. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Be_Rey6d.js → workflow-run-setup-panel-CZKJ6leF.js} +2 -2
  109. package/dist/gateway/static/root/assets/workflows-page-2HuveBs_.js +6 -0
  110. package/dist/gateway/static/root/assets/{workspace-api-B5ssQs4p.js → workspace-api-DO_TWsiS.js} +2 -2
  111. package/dist/gateway/static/root/assets/xopc-cloud-account-card-CBjtpPiL.js +1 -0
  112. package/dist/gateway/static/root/index.html +27 -27
  113. package/dist/package.js +1 -1
  114. package/dist/packages/realtime-protocol/src/voice-catalog.js +7 -2
  115. package/dist/src/agent/embedded/execution-tool-policy.d.ts +14 -0
  116. package/dist/src/agent/embedded/execution-tool-policy.js +41 -0
  117. package/dist/src/agent/embedded/run-for-session.js +6 -4
  118. package/dist/src/agent/embedded/run-turn.js +56 -1
  119. package/dist/src/agent/embedded/session-runner.d.ts +3 -0
  120. package/dist/src/agent/embedded/session-runner.js +29 -8
  121. package/dist/src/agent/embedded/types.d.ts +2 -0
  122. package/dist/src/agent/prompt/response-language.js +9 -1
  123. package/dist/src/agent/service.js +1 -0
  124. package/dist/src/agent/session/session-config-service.js +0 -13
  125. package/dist/src/agent/tasks/task-judge-service.d.ts +2 -2
  126. package/dist/src/agent/tasks/task-judge-service.js +16 -9
  127. package/dist/src/agent/tools/factory.js +14 -13
  128. package/dist/src/agent/tools/knowledge-memory-tool.js +5 -4
  129. package/dist/src/agent/tools/local-read-budget.d.ts +2 -0
  130. package/dist/src/agent/tools/local-read-budget.js +5 -0
  131. package/dist/src/agent/tools/media-read-tool.js +2 -1
  132. package/dist/src/agent/tools/personal-read-tool.js +34 -10
  133. package/dist/src/agent/tools/read.js +5 -2
  134. package/dist/src/agent/tools/session-recall-tool.d.ts +1 -0
  135. package/dist/src/agent/tools/session-recall-tool.js +53 -12
  136. package/dist/src/agent/tools/session-search-tool.js +34 -8
  137. package/dist/src/agent/tools/user-context-tool.js +5 -4
  138. package/dist/src/agent/tools/xopc-use-tool.js +6 -2
  139. package/dist/src/browser/native-messaging-host.js +1 -1
  140. package/dist/src/browser/providers/browser-ext-install.js +2 -2
  141. package/dist/src/gateway/chat-stream/mapper.d.ts +2 -0
  142. package/dist/src/gateway/chat-stream/mapper.js +4 -1
  143. package/dist/src/gateway/chat-stream/protocol.d.ts +4 -1
  144. package/dist/src/gateway/hono/app.js +1 -1
  145. package/dist/src/gateway/hono/routes/browser-install.js +1 -1
  146. package/dist/src/gateway/hono/routes/chat-model-config.d.ts +0 -4
  147. package/dist/src/gateway/hono/routes/chat-model-config.js +0 -6
  148. package/dist/src/gateway/hono/routes/personal-agent.js +4 -2
  149. package/dist/src/gateway/hono/routes/voice.js +12 -4
  150. package/dist/src/gateway/rate-limit/buckets.d.ts +1 -1
  151. package/dist/src/gateway/rate-limit/buckets.js +2 -2
  152. package/dist/src/gateway/service/run-gateway-agent.js +8 -3
  153. package/dist/src/gateway/side-chat/manager.js +1 -1
  154. package/dist/src/personal-agent/communication.d.ts +2 -1
  155. package/dist/src/personal-agent/communication.js +4 -3
  156. package/dist/src/personal-agent/policy.js +4 -4
  157. package/dist/src/personal-agent/prompts.d.ts +1 -0
  158. package/dist/src/personal-agent/prompts.js +32 -5
  159. package/dist/src/personal-agent/reply-composer.js +19 -4
  160. package/dist/src/personal-agent/reply-style.d.ts +4 -2
  161. package/dist/src/personal-agent/reply-style.js +57 -5
  162. package/dist/src/providers/prompt-cache-payload.js +2 -3
  163. package/dist/src/providers/prompt-cache-plan.d.ts +1 -0
  164. package/dist/src/providers/prompt-cache-plan.js +2 -2
  165. package/dist/src/session/store.d.ts +1 -0
  166. package/dist/src/storage/sqlite/device-pairing-approval.js +1 -1
  167. package/dist/src/storage/sqlite/transcript-repository.d.ts +1 -0
  168. package/dist/src/storage/sqlite/transcript-repository.js +5 -3
  169. package/dist/src/tasks/capabilities/write.js +10 -1
  170. package/dist/src/tasks/task-application-service.js +5 -4
  171. package/dist/src/tasks/task-context-assembler.js +1 -0
  172. package/dist/src/tasks/task-contract-definition.d.ts +1 -1
  173. package/dist/src/tasks/task-contract-definition.js +2 -2
  174. package/dist/src/tasks/task-contract-planner.d.ts +1 -0
  175. package/dist/src/tasks/task-contract-planner.js +2 -1
  176. package/dist/src/tasks/task-language.d.ts +7 -0
  177. package/dist/src/tasks/task-language.js +15 -0
  178. package/dist/src/tasks/task-read-model-projector.js +3 -2
  179. package/dist/src/tasks/task-result-delivery-service.js +2 -1
  180. package/dist/src/tasks/task-run-coordinator.js +22 -8
  181. package/dist/src/tasks/task-run-dispatcher.js +8 -6
  182. package/dist/src/voice/platform-catalog.d.ts +1 -0
  183. package/dist/src/voice/platform-settings.d.ts +1 -1
  184. package/dist/src/voice/platform-settings.js +6 -2
  185. package/dist/src/voice/platform-streams.js +3 -1
  186. package/dist/src/voice/realtime/omniRoute.d.ts +1 -1
  187. package/dist/src/voice/realtime/omniRoute.js +4 -1
  188. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +6 -2
  189. package/dist/src/voice/tts/speech-provider-types.d.ts +1 -0
  190. package/package.json +4 -4
  191. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Ch07F4uX.js +0 -1
  192. package/dist/gateway/static/root/assets/agent-plugin-dialog-CdCVOg5e.js +0 -1
  193. package/dist/gateway/static/root/assets/agents-D2__mhy8.js +0 -66
  194. package/dist/gateway/static/root/assets/automations-workspace-DqBWLl61.js +0 -6
  195. package/dist/gateway/static/root/assets/browser-automations-page-CzEWM_ie.js +0 -3
  196. package/dist/gateway/static/root/assets/browser-settings-page-CsDck88G.js +0 -3
  197. package/dist/gateway/static/root/assets/capabilities-settings-panel-BQ-I3L-C.js +0 -8
  198. package/dist/gateway/static/root/assets/channels-1wUJcCxP.js +0 -1
  199. package/dist/gateway/static/root/assets/connectors-page-BFzjGpKE.js +0 -1
  200. package/dist/gateway/static/root/assets/device-pairing-wizard-CZ5Wmq5U.js +0 -1
  201. package/dist/gateway/static/root/assets/gateway-realtime-store-BazlseY_.js +0 -1
  202. package/dist/gateway/static/root/assets/gateway-settings-BG1zXG8B.js +0 -1
  203. package/dist/gateway/static/root/assets/home-page-B8RmZbDw.js +0 -2
  204. package/dist/gateway/static/root/assets/index-CGVecvp4.css +0 -1
  205. package/dist/gateway/static/root/assets/index-DU5FmDQh.js +0 -106
  206. package/dist/gateway/static/root/assets/logs-page-CApZnDPi.js +0 -2
  207. package/dist/gateway/static/root/assets/models-hub-cache-DaqiLHPe.js +0 -1
  208. package/dist/gateway/static/root/assets/note-detail-panel-CncL3xmy.js +0 -5
  209. package/dist/gateway/static/root/assets/notes-page-D9romxNU.js +0 -8
  210. package/dist/gateway/static/root/assets/personal-page-DoG-2fru.js +0 -1
  211. package/dist/gateway/static/root/assets/project-detail-page-C9Bt5toA.js +0 -1
  212. package/dist/gateway/static/root/assets/projects-page-Bu3jZa3A.js +0 -1
  213. package/dist/gateway/static/root/assets/remote-access-hub-C9MNGl2t.js +0 -1
  214. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BYQuPsWk.js +0 -5
  215. package/dist/gateway/static/root/assets/send-session-input-B64q4_6R.js +0 -1
  216. package/dist/gateway/static/root/assets/session-manager-BWLIDok4.js +0 -16
  217. package/dist/gateway/static/root/assets/sessions-page-CzbNB_RT.js +0 -1
  218. package/dist/gateway/static/root/assets/settings-advanced-gate-CmNe5RJ4.js +0 -1
  219. package/dist/gateway/static/root/assets/setup-status-panel-DoAn6P_k.js +0 -1
  220. package/dist/gateway/static/root/assets/shares-settings-Bbkz0xuD.js +0 -1
  221. package/dist/gateway/static/root/assets/skills-page-BuBSAOOd.js +0 -2
  222. package/dist/gateway/static/root/assets/usage-page-NPLApyNj.js +0 -1
  223. package/dist/gateway/static/root/assets/user-model-page-DAEiJzNV.js +0 -2
  224. package/dist/gateway/static/root/assets/work-discovery-overlay-DxRDLQvs.js +0 -1
  225. package/dist/gateway/static/root/assets/workflows-page-wJk7l1_H.js +0 -6
  226. package/dist/gateway/static/root/assets/xopc-cloud-account-card-D7Rtu5eI.js +0 -1
@@ -253,6 +253,7 @@
253
253
  "voicePermissionOpen": { "message": "Authorize microphone" },
254
254
  "voicePermissionGranted": { "message": "Microphone authorized. Close this tab and return to chat." },
255
255
  "voicePermissionFailed": { "message": "Microphone access was denied. Allow microphone access in browser and system settings, then retry." },
256
+ "recordingHide": { "message": "Hide recording panel" },
256
257
  "recordingTitle": { "message": "Browser recording" },
257
258
  "recordingStart": { "message": "Start recording" },
258
259
  "recordingActive": { "message": "Recording" },
@@ -253,6 +253,7 @@
253
253
  "voicePermissionOpen": { "message": "授权麦克风" },
254
254
  "voicePermissionGranted": { "message": "麦克风已授权。请关闭此标签页并返回聊天。" },
255
255
  "voicePermissionFailed": { "message": "麦克风访问被拒绝。请在浏览器及系统设置中允许麦克风访问,然后重试。" },
256
+ "recordingHide": { "message": "收起录制面板" },
256
257
  "recordingTitle": { "message": "浏览器录制" },
257
258
  "recordingStart": { "message": "开始录制" },
258
259
  "recordingActive": { "message": "正在录制" },
@@ -17725,7 +17725,7 @@ function recordingErrorMessage(cause) {
17725
17725
  if (message === "RECORDING_PAGE_UNAVAILABLE") return t("recordingChooseWebsite");
17726
17726
  return message;
17727
17727
  }
17728
- function RecordingPanel() {
17728
+ function RecordingPanel({ open = false, onClose, onRequiredChange }) {
17729
17729
  const [session, setSession] = reactExports.useState();
17730
17730
  const [pages, setPages] = reactExports.useState([]);
17731
17731
  const [selectedTab, setSelectedTab] = reactExports.useState();
@@ -17735,6 +17735,15 @@ function RecordingPanel() {
17735
17735
  const [automation, setAutomation] = reactExports.useState();
17736
17736
  const [inputs, setInputs] = reactExports.useState({});
17737
17737
  const [run, setRun] = reactExports.useState();
17738
+ const active = !!session && ["recording", "paused"].includes(session.state);
17739
+ const saved = !!session?.automationId;
17740
+ const syncing = session?.state === "stopped" && !saved;
17741
+ const required = active || syncing || busy || !!run && ["queued", "running"].includes(run.status);
17742
+ const visible = open || required;
17743
+ reactExports.useEffect(() => {
17744
+ onRequiredChange?.(required);
17745
+ return () => onRequiredChange?.(false);
17746
+ }, [required, onRequiredChange]);
17738
17747
  const api = async (path, init) => {
17739
17748
  const response = await gatewayFetch(path, init);
17740
17749
  const data = await response.json();
@@ -17748,6 +17757,8 @@ function RecordingPanel() {
17748
17757
  };
17749
17758
  reactExports.useEffect(() => {
17750
17759
  let disposed = false;
17760
+ if (!visible) return;
17761
+ setPagesLoading(true);
17751
17762
  const refresh = async (followActive = false) => {
17752
17763
  try {
17753
17764
  const tabs = (await chrome.tabs.query({ currentWindow: true })).filter((tab) => tab.id !== void 0 && /^https?:\/\//.test(tab.url ?? ""));
@@ -17778,7 +17789,7 @@ function RecordingPanel() {
17778
17789
  chrome.tabs.onRemoved.removeListener(changed);
17779
17790
  chrome.tabs.onCreated.removeListener(changed);
17780
17791
  };
17781
- }, []);
17792
+ }, [visible]);
17782
17793
  reactExports.useEffect(() => {
17783
17794
  let disposed = false;
17784
17795
  const refresh = () => void command("status").then((sessions) => {
@@ -17794,6 +17805,7 @@ function RecordingPanel() {
17794
17805
  };
17795
17806
  }, []);
17796
17807
  reactExports.useEffect(() => {
17808
+ if (!visible) return;
17797
17809
  if (!session?.automationId) {
17798
17810
  setAutomation(void 0);
17799
17811
  return;
@@ -17810,7 +17822,7 @@ function RecordingPanel() {
17810
17822
  return () => {
17811
17823
  disposed = true;
17812
17824
  };
17813
- }, [session?.automationId]);
17825
+ }, [session?.automationId, visible]);
17814
17826
  reactExports.useEffect(() => {
17815
17827
  if (!run || !["queued", "running"].includes(run.status)) return;
17816
17828
  let disposed = false;
@@ -17859,13 +17871,11 @@ function RecordingPanel() {
17859
17871
  setBusy(false);
17860
17872
  }
17861
17873
  };
17862
- const active = !!session && ["recording", "paused"].includes(session.state);
17863
- const saved = !!session?.automationId;
17864
- const syncing = session?.state === "stopped" && !saved;
17865
17874
  const page = pages.find((tab) => tab.id === (active || syncing ? session.tabId : selectedTab));
17866
17875
  const status = active ? session.state === "paused" ? "recordingPaused" : "recordingActive" : saved ? "recordingSavedShort" : session?.state === "stopped" ? "recordingSaving" : session?.state === "interrupted" ? "recordingInterrupted" : "recordingReady";
17867
17876
  const runStatus = run?.businessOutcome === "unknown" ? t("recordingUnknown") : run?.status === "succeeded" ? t("recordingCompleted") : run?.status === "cancelled" ? t("recordingStopped") : run?.status === "failed" ? recordingErrorMessage(run.error || t("recordingRequestFailed")) : t("recordingRunning");
17868
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "recording-panel", "data-state": active ? session.state : syncing ? "syncing" : saved ? "saved" : "ready", "aria-label": t("recordingTitle"), "aria-busy": busy, children: [
17877
+ if (!visible) return null;
17878
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { id: "browser-recording-panel", className: "recording-panel", "data-state": active ? session.state : syncing ? "syncing" : saved ? "saved" : "ready", "aria-label": t("recordingTitle"), "aria-busy": busy, children: [
17869
17879
  /* @__PURE__ */ jsxRuntimeExports.jsxs("header", { className: "recording-heading", children: [
17870
17880
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "recording-icon", children: saved ? /* @__PURE__ */ jsxRuntimeExports.jsx(CheckIcon, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(PageIcon, {}) }),
17871
17881
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "recording-heading-text", children: [
@@ -17875,7 +17885,8 @@ function RecordingPanel() {
17875
17885
  (active || saved || session?.state === "stopped" || session?.state === "interrupted" || selectedTab !== void 0) && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: `recording-status ${active && session.state === "recording" ? "is-recording" : saved ? "is-saved" : ""}`, role: "status", children: [
17876
17886
  /* @__PURE__ */ jsxRuntimeExports.jsx("i", {}),
17877
17887
  t(status)
17878
- ] })
17888
+ ] }),
17889
+ !required && onClose && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "header-icon-button", onClick: onClose, "aria-label": t("recordingHide"), title: t("recordingHide"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloseIcon, {}) })
17879
17890
  ] }),
17880
17891
  !active && !syncing && (!saved || selectedTab === void 0) && (pagesLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "recording-skeleton" }) : pages.length ? /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "recording-target-label", children: [
17881
17892
  t("recordingTarget"),
@@ -29540,6 +29551,8 @@ function SidePanelApp({ initialLocale, initialTheme }) {
29540
29551
  const [nextOrigin, setNextOrigin] = reactExports.useState();
29541
29552
  const [locale, setLocale] = reactExports.useState(initialLocale);
29542
29553
  const [theme, setTheme] = reactExports.useState(initialTheme);
29554
+ const [recordingOpen, setRecordingOpen] = reactExports.useState(false);
29555
+ const [recordingRequired, setRecordingRequired] = reactExports.useState(false);
29543
29556
  const [settingsOpen, setSettingsOpen] = reactExports.useState(false);
29544
29557
  const initializationStarted = reactExports.useRef(false);
29545
29558
  const pairingStarted = reactExports.useRef(false);
@@ -29638,6 +29651,7 @@ function SidePanelApp({ initialLocale, initialTheme }) {
29638
29651
  async function disconnect() {
29639
29652
  await revokeAndForgetProfile();
29640
29653
  setProfile(void 0);
29654
+ setRecordingOpen(false);
29641
29655
  setLocalInvitation("");
29642
29656
  setState("unpaired");
29643
29657
  }
@@ -29679,6 +29693,19 @@ function SidePanelApp({ initialLocale, initialTheme }) {
29679
29693
  state === "pairing" ? t("statusPairing") : state === "loading" ? t("statusStarting") : t("statusSetupRequired")
29680
29694
  ] }) : null,
29681
29695
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "header-actions", children: [
29696
+ state === "online" && /* @__PURE__ */ jsxRuntimeExports.jsx(
29697
+ "button",
29698
+ {
29699
+ className: "header-icon-button",
29700
+ onClick: () => setRecordingOpen((open) => !open),
29701
+ title: t("recordingTitle"),
29702
+ "aria-label": t("recordingTitle"),
29703
+ "aria-expanded": recordingOpen || recordingRequired,
29704
+ "aria-controls": "browser-recording-panel",
29705
+ disabled: recordingRequired,
29706
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(PageIcon, {})
29707
+ }
29708
+ ),
29682
29709
  /* @__PURE__ */ jsxRuntimeExports.jsx(
29683
29710
  "button",
29684
29711
  {
@@ -29757,7 +29784,7 @@ function SidePanelApp({ initialLocale, initialTheme }) {
29757
29784
  ] })
29758
29785
  ] }) : null
29759
29786
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29760
- /* @__PURE__ */ jsxRuntimeExports.jsx(RecordingPanel, {}),
29787
+ /* @__PURE__ */ jsxRuntimeExports.jsx(RecordingPanel, { open: recordingOpen, onClose: () => setRecordingOpen(false), onRequiredChange: setRecordingRequired }),
29761
29788
  /* @__PURE__ */ jsxRuntimeExports.jsx(ChatPanel, { gatewayId: profile.gatewayId, deviceId: profile.deviceId }, JSON.stringify([profile.gatewayId, profile.gatewayUrl, profile.deviceId]))
29762
29789
  ] })
29763
29790
  ] });
@@ -3,7 +3,7 @@
3
3
  "minimum_chrome_version": "120",
4
4
  "default_locale": "en",
5
5
  "name": "__MSG_appName__",
6
- "version": "0.0.377",
6
+ "version": "0.0.380",
7
7
  "description": "__MSG_appDescription__",
8
8
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqnpr4vpLC/nmvy+wiOWk3SWlp2nEZkFijfk8ivGw7StNZgCK90nOMvwhdEtlkk3GOWDvdVnq8HxCsM3UNQ8FnGUyerpH1FJXqXuradxeHf8ZxFjiQU/mIWfnKbUuONWQORon3/pigyoXoK/VUXgg0Wbm/rbVwsS0bv+25R6m+mZgBspOLeKuoH7ivhL+48WV6POtMBsFPZweY26477EM7ukh+56Ff5ENevB8ymxBBn7qK5ZoeZd2a23U8ioX5TsHfe6fnrjitPWjIxD8G0NoKQxcaa/Mo+xs+T6UiLKxP0wjz5bm7jB5H+CXtkRJqzBWUB0h+RSLJckzZfA8BAJrRwIDAQAB",
9
9
  "permissions": [
@@ -2,7 +2,7 @@
2
2
  "id": "telegram",
3
3
  "name": "Telegram Channel",
4
4
  "description": "Bundled Telegram Bot channel (private workspace sources; ships inside @xopcai/xopc dist/)",
5
- "version": "0.0.377",
5
+ "version": "0.0.380",
6
6
  "kind": "channel",
7
7
  "main": "src/index.js",
8
8
  "channels": [
@@ -1 +1 @@
1
- import{p as e}from"./locale-store-DSsLH7JO.js";var t=`xopc.activity-center.v2`,n=80,r=720*60*60*1e3;function i(e){return e===`error`?`failed`:e===`warning`?`attention`:`done`}function a(){if(!(typeof window>`u`))return window.location.hash.replace(/^#/,``)||`${window.location.pathname}${window.location.search}`||void 0}function o(){try{let e=globalThis.localStorage?.getItem(t);if(!e)return[];let i=JSON.parse(e);if(!Array.isArray(i.items))return[];let a=Date.now()-r,o=i.items.filter(e=>e&&typeof e.id==`string`&&typeof e.title==`string`).filter(e=>Number.isFinite(e.updatedAt)&&e.updatedAt>=a).slice(0,n);return o.length!==i.items.length&&s(o),o}catch{return[]}}function s(e){try{globalThis.localStorage?.setItem(t,JSON.stringify({items:e}))}catch{}}function c(e){return`${e.toString(36)}-${Math.random().toString(36).slice(2,8)}`}var l=e(e=>({items:o(),add:t=>e(e=>{let r=t.title.trim();if(!r)return e;let o=Date.now(),l=t.tone??`info`,u=t.dedupeKey?e.items.findIndex(e=>e.dedupeKey===t.dedupeKey):-1,d=[{id:u>=0?e.items[u].id:c(o),tone:l,status:t.status??i(l),title:r,message:t.message?.trim()||void 0,source:t.source?.trim()||void 0,href:t.href??a(),dedupeKey:t.dedupeKey,createdAt:u>=0?e.items[u].createdAt:o,updatedAt:o,read:t.read??!1,occurrences:u>=0?e.items[u].occurrences+1:1},...u>=0?e.items.filter((e,t)=>t!==u):e.items].slice(0,n);return s(d),{items:d}}),markAllRead:()=>e(e=>{let t=e.items.map(e=>({...e,read:!0}));return s(t),{items:t}}),remove:t=>e(e=>{let n=e.items.filter(e=>e.id!==t);return s(n),{items:n}}),clearFinished:()=>e(e=>{let t=e.items.filter(e=>e.status!==`done`);return s(t),{items:t}}),clear:()=>{s([]),e({items:[]})}}));function u(e){l.getState().add(e)}export{l as n,u as t};
1
+ import{p as e}from"./locale-store-pmT2B_By.js";var t=`xopc.activity-center.v2`,n=80,r=720*60*60*1e3;function i(e){return e===`error`?`failed`:e===`warning`?`attention`:`done`}function a(){if(!(typeof window>`u`))return window.location.hash.replace(/^#/,``)||`${window.location.pathname}${window.location.search}`||void 0}function o(){try{let e=globalThis.localStorage?.getItem(t);if(!e)return[];let i=JSON.parse(e);if(!Array.isArray(i.items))return[];let a=Date.now()-r,o=i.items.filter(e=>e&&typeof e.id==`string`&&typeof e.title==`string`).filter(e=>Number.isFinite(e.updatedAt)&&e.updatedAt>=a).slice(0,n);return o.length!==i.items.length&&s(o),o}catch{return[]}}function s(e){try{globalThis.localStorage?.setItem(t,JSON.stringify({items:e}))}catch{}}function c(e){return`${e.toString(36)}-${Math.random().toString(36).slice(2,8)}`}var l=e(e=>({items:o(),add:t=>e(e=>{let r=t.title.trim();if(!r)return e;let o=Date.now(),l=t.tone??`info`,u=t.dedupeKey?e.items.findIndex(e=>e.dedupeKey===t.dedupeKey):-1,d=[{id:u>=0?e.items[u].id:c(o),tone:l,status:t.status??i(l),title:r,message:t.message?.trim()||void 0,source:t.source?.trim()||void 0,href:t.href??a(),dedupeKey:t.dedupeKey,createdAt:u>=0?e.items[u].createdAt:o,updatedAt:o,read:t.read??!1,occurrences:u>=0?e.items[u].occurrences+1:1},...u>=0?e.items.filter((e,t)=>t!==u):e.items].slice(0,n);return s(d),{items:d}}),markAllRead:()=>e(e=>{let t=e.items.map(e=>({...e,read:!0}));return s(t),{items:t}}),remove:t=>e(e=>{let n=e.items.filter(e=>e.id!==t);return s(n),{items:n}}),clearFinished:()=>e(e=>{let t=e.items.filter(e=>e.status!==`done`);return s(t),{items:t}}),clear:()=>{s([]),e({items:[]})}}));function u(e){l.getState().add(e)}export{l as n,u as t};