@xopcai/xopc 0.0.387 → 0.0.389

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 (248) hide show
  1. package/dist/browser-ext/_locales/en/messages.json +6 -1
  2. package/dist/browser-ext/_locales/zh_CN/messages.json +6 -1
  3. package/dist/browser-ext/dist/assets/{page-context-BeworyNB.js → page-context-A5RCibM_.js} +1 -1
  4. package/dist/browser-ext/dist/background.js +1 -1
  5. package/dist/browser-ext/dist/sidepanel.html +1 -1
  6. package/dist/browser-ext/dist/sidepanel.js +98 -53
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/extensions/telegram/src/plugin.js +5 -3
  9. package/dist/extensions/telegram/xopc.extension.json +1 -1
  10. package/dist/gateway/static/root/assets/{activity-store-CB2X4Gmu.js → activity-store-dvik6t7Z.js} +1 -1
  11. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bv8M5ygD.js → agent-avatar-dicebear-bWMd5TDC.js} +1 -1
  12. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-UBy01-65.js → agent-defaults-settings-panel-Ds0Ue2FB.js} +1 -1
  13. package/dist/gateway/static/root/assets/{agent-plugin-dialog-Q9guA8kU.js → agent-plugin-dialog-UunIxc1q.js} +1 -1
  14. package/dist/gateway/static/root/assets/{agents-yfJFubD0.js → agents-BLRM4o-U.js} +3 -3
  15. package/dist/gateway/static/root/assets/{agents-admin-api-BkULgC6Q.js → agents-admin-api-BlNGyXpm.js} +1 -1
  16. package/dist/gateway/static/root/assets/{app-management-settings-panel-Cdyad8c1.js → app-management-settings-panel-Dmy828Pe.js} +1 -1
  17. package/dist/gateway/static/root/assets/{appearance-settings-DPPvnKH_.js → appearance-settings-CUAdx44v.js} +1 -1
  18. package/dist/gateway/static/root/assets/{apps-page-Bn_jwaeA.js → apps-page-D5zDB6gp.js} +1 -1
  19. package/dist/gateway/static/root/assets/{archive-plugin-De0ND0oA.js → archive-plugin-Du6dJNcl.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automations-page-CAB2sLJ5.js → automations-page-BO8Ig5Z4.js} +1 -1
  21. package/dist/gateway/static/root/assets/{automations-workspace-CYRUhhH4.js → automations-workspace-UcCneEs3.js} +1 -1
  22. package/dist/gateway/static/root/assets/{binary-plugins-Do535ZGW.js → binary-plugins-D7VJjwnr.js} +1 -1
  23. package/dist/gateway/static/root/assets/{block-editor-B9DmMEa8.js → block-editor-CaJlWTAn.js} +1 -1
  24. package/dist/gateway/static/root/assets/{browser-automation-inputs-B9M1RYTm.js → browser-automation-inputs-iyMBJmQX.js} +1 -1
  25. package/dist/gateway/static/root/assets/{browser-automations-page-BHAWpZE2.js → browser-automations-page-BjvQnYfO.js} +1 -1
  26. package/dist/gateway/static/root/assets/{browser-settings-page-BG_17NcQ.js → browser-settings-page-D5ZghI28.js} +1 -1
  27. package/dist/gateway/static/root/assets/{capabilities-BX1rCiVm.js → capabilities-CEH1AnXc.js} +1 -1
  28. package/dist/gateway/static/root/assets/{capabilities-CW389yo6.js → capabilities-MCKRMZDK.js} +1 -1
  29. package/dist/gateway/static/root/assets/{capabilities-page-BAnBYWlY.js → capabilities-page-MC8qIrXo.js} +2 -2
  30. package/dist/gateway/static/root/assets/{capabilities-settings-panel-Ca-d6lXk.js → capabilities-settings-panel-Blz3hEzp.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capability-header-actions-B3TL8TcF.js → capability-header-actions-BIA0Lwt5.js} +1 -1
  32. package/dist/gateway/static/root/assets/{channels-BadpS-nq.js → channels-DSg_iCVC.js} +1 -1
  33. package/dist/gateway/static/root/assets/{chat-terminal-dock-C_vntFpP.js → chat-terminal-dock-C97SJEwd.js} +1 -1
  34. package/dist/gateway/static/root/assets/{computer-settings-page-B-5kxk70.js → computer-settings-page-DvY3zgyY.js} +1 -1
  35. package/dist/gateway/static/root/assets/{connector-service-page-DTnfpLHL.js → connector-service-page-St2-Fj3y.js} +1 -1
  36. package/dist/gateway/static/root/assets/connectors-page-DXk-GAsd.js +1 -0
  37. package/dist/gateway/static/root/assets/{date-picker-D5zYeC8q.js → date-picker-C0-D80ny.js} +1 -1
  38. package/dist/gateway/static/root/assets/{dependency-picker-D72vT-tb.js → dependency-picker-CNd7mwMU.js} +1 -1
  39. package/dist/gateway/static/root/assets/{desktop-pet-DvoeVPf_.js → desktop-pet-C-2wDANn.js} +1 -1
  40. package/dist/gateway/static/root/assets/{desktop-pet-settings-Dfb392hs.js → desktop-pet-settings-DyhxLrdJ.js} +1 -1
  41. package/dist/gateway/static/root/assets/{device-pairing-wizard-B06Sqn5D.js → device-pairing-wizard-BeSuq__I.js} +1 -1
  42. package/dist/gateway/static/root/assets/{directory-picker-path-field-CA3H3bc-.js → directory-picker-path-field-CNivVIPT.js} +1 -1
  43. package/dist/gateway/static/root/assets/{extension-debug-page-B0wTBCx4.js → extension-debug-page-CGYO3JPw.js} +1 -1
  44. package/dist/gateway/static/root/assets/{extension-page-BeHiXhB1.js → extension-page-Dc51ALAg.js} +1 -1
  45. package/dist/gateway/static/root/assets/{extension-provider-CJZ5EVpQ.js → extension-provider-BXPILdlw.js} +1 -1
  46. package/dist/gateway/static/root/assets/{extension-settings-page-Q88-LFCJ.js → extension-settings-page-jYu6qpY2.js} +1 -1
  47. package/dist/gateway/static/root/assets/{fallback-models-BXoPCvzq.js → fallback-models-CoyzvDo7.js} +1 -1
  48. package/dist/gateway/static/root/assets/{gateway-config-swr-D0tBjSgj.js → gateway-config-swr-Bc2MytsF.js} +1 -1
  49. package/dist/gateway/static/root/assets/{gateway-realtime-BnHraJ3O.js → gateway-realtime-BFK-vlME.js} +1 -1
  50. package/dist/gateway/static/root/assets/gateway-realtime-store-C3vH-Iup.js +1 -0
  51. package/dist/gateway/static/root/assets/{gateway-settings-IICLMGDI.js → gateway-settings-JlT1dlSj.js} +1 -1
  52. package/dist/gateway/static/root/assets/{gateway-startup-retry-C1DQsIH3.js → gateway-startup-retry-BDPMttPx.js} +1 -1
  53. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-D336so8z.js → highlighted-body-KQOG7T2V-DAlRGMge.js} +1 -1
  54. package/dist/gateway/static/root/assets/{home-page--MvqsFhQ.js → home-page-DOVl8s-1.js} +1 -1
  55. package/dist/gateway/static/root/assets/{image-generation-api-DodU6GNC.js → image-generation-api-BZBiYDmV.js} +1 -1
  56. package/dist/gateway/static/root/assets/{imports-page-muV1SduS.js → imports-page-DgdBTp_0.js} +1 -1
  57. package/dist/gateway/static/root/assets/{index-D0qMv3jf.js → index-CmC8JkSM.js} +108 -108
  58. package/dist/gateway/static/root/assets/index-Dgzc0oBu.css +1 -0
  59. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-i1sDWcwl.js → keyboard-shortcuts-settings-BYYC9Qmw.js} +1 -1
  60. package/dist/gateway/static/root/assets/{local-app-workbench-page-DY9tXEO6.js → local-app-workbench-page-BKZfn-MS.js} +1 -1
  61. package/dist/gateway/static/root/assets/{local-apps-page-BHD73STy.js → local-apps-page-BU8pUsVM.js} +1 -1
  62. package/dist/gateway/static/root/assets/{local-session-drafts-Be4BGM4Z.js → local-session-drafts-kFc_MAA9.js} +1 -1
  63. package/dist/gateway/static/root/assets/{locale-store-uRu_DsWm.js → locale-store-Dr43FCty.js} +1 -1
  64. package/dist/gateway/static/root/assets/{logs-page-DsPpe8Ws.js → logs-page-BSepiACn.js} +1 -1
  65. package/dist/gateway/static/root/assets/{management-settings-Buwi2wQE.js → management-settings-dE_ykPNY.js} +1 -1
  66. package/dist/gateway/static/root/assets/{markdown-view-CBjl-XEc.js → markdown-view-CdKlPjJM.js} +1 -1
  67. package/dist/gateway/static/root/assets/{media-plugins-BombFqsX.js → media-plugins-DE9zt88i.js} +1 -1
  68. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-65SE6j-_.js +1 -0
  69. package/dist/gateway/static/root/assets/messages-DlTNQI92.js +3 -0
  70. package/dist/gateway/static/root/assets/models-hub-cache-C7FAsEe_.js +1 -0
  71. package/dist/gateway/static/root/assets/{note-detail-panel-D8n80Gbr.js → note-detail-panel-D9oqhdyk.js} +3 -3
  72. package/dist/gateway/static/root/assets/{notes-api-BlGP533W.js → notes-api-BHouNL6-.js} +1 -1
  73. package/dist/gateway/static/root/assets/{notes-page-Btf-jSS_.js → notes-page-Bd4_7ph8.js} +1 -1
  74. package/dist/gateway/static/root/assets/{page-context-capture-button-97RL8Gc7.js → page-context-capture-button-TQr8NnSc.js} +1 -1
  75. package/dist/gateway/static/root/assets/{personal-page-B04L8Oz5.js → personal-page-BvWzq4Wp.js} +1 -1
  76. package/dist/gateway/static/root/assets/{product-open-page-9zEDvZa7.js → product-open-page-BEl6syFp.js} +1 -1
  77. package/dist/gateway/static/root/assets/{product-preview-content-DynBrIXq.js → product-preview-content-BxSHnbqz.js} +1 -1
  78. package/dist/gateway/static/root/assets/{project-detail-page-BM7MsoVA.js → project-detail-page-D-qkIXVT.js} +1 -1
  79. package/dist/gateway/static/root/assets/{projects-page-pcyeEJnz.js → projects-page-BQtw1Dfn.js} +1 -1
  80. package/dist/gateway/static/root/assets/{registry-api-CYqA7bfl.js → registry-api-BD5IgDOA.js} +1 -1
  81. package/dist/gateway/static/root/assets/{remote-access-hub-CphyTu22.js → remote-access-hub-CYFNz0Jc.js} +1 -1
  82. package/dist/gateway/static/root/assets/{runtime-tools-api-zzoxjSuR.js → runtime-tools-api-CjTRoQWT.js} +1 -1
  83. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DPafoO0G.js → runtime-tools-settings-panel-Qq_NyYx_.js} +1 -1
  84. package/dist/gateway/static/root/assets/{scenes-page-j97FrDRW.js → scenes-page-hGr-ppYk.js} +1 -1
  85. package/dist/gateway/static/root/assets/{schema-form-CuJNwKHO.js → schema-form-ByG-R6N2.js} +1 -1
  86. package/dist/gateway/static/root/assets/{send-session-input-C293-Hbx.js → send-session-input-UAVStisp.js} +1 -1
  87. package/dist/gateway/static/root/assets/{session-api-CzVTrG8n.js → session-api-DvgEiNRS.js} +1 -1
  88. package/dist/gateway/static/root/assets/session-manager-BOb1tC_Z.js +16 -0
  89. package/dist/gateway/static/root/assets/{sessions-page-D8t_8fMl.js → sessions-page-CpX1Rluw.js} +1 -1
  90. package/dist/gateway/static/root/assets/settings-advanced-gate-D2s_MlxR.js +1 -0
  91. package/dist/gateway/static/root/assets/{settings-page-DS9DMYUe.js → settings-page-C1e9m23j.js} +1 -1
  92. package/dist/gateway/static/root/assets/{setup-status-panel-DRDvm9yZ.js → setup-status-panel-BiHRYDHq.js} +1 -1
  93. package/dist/gateway/static/root/assets/{share-link-dialog-BKGI8Kr0.js → share-link-dialog-kE_6v5Dp.js} +1 -1
  94. package/dist/gateway/static/root/assets/{share-preview-page-BF2WaO43.js → share-preview-page-BT-_yR1h.js} +1 -1
  95. package/dist/gateway/static/root/assets/{shares-api-B0HlMAzi.js → shares-api-Dg_SqHQE.js} +1 -1
  96. package/dist/gateway/static/root/assets/{shares-settings-DQTQZu6V.js → shares-settings-DfcAu08T.js} +1 -1
  97. package/dist/gateway/static/root/assets/{skill-api-DzVa7G-O.js → skill-api-BslUYMnX.js} +1 -1
  98. package/dist/gateway/static/root/assets/{skill-reload-api-CEJx5rPd.js → skill-reload-api-BQ2rTOP1.js} +1 -1
  99. package/dist/gateway/static/root/assets/{skills-page-CfJIjRdS.js → skills-page-CvKc5nBN.js} +1 -1
  100. package/dist/gateway/static/root/assets/{system-settings-panel-Bzhqed-a.js → system-settings-panel-GpbPfWwo.js} +1 -1
  101. package/dist/gateway/static/root/assets/{task-detail-page-BYQFC0-U.js → task-detail-page-5B5ZVAu0.js} +1 -1
  102. package/dist/gateway/static/root/assets/{task-expandable-content-C9ohICpw.js → task-expandable-content-DJrrEBB4.js} +1 -1
  103. package/dist/gateway/static/root/assets/{theme-store-BUfzeDvL.js → theme-store-BKpYnggg.js} +1 -1
  104. package/dist/gateway/static/root/assets/{tracing-settings-page-C2q5B3Kp.js → tracing-settings-page-D71w7dwV.js} +1 -1
  105. package/dist/gateway/static/root/assets/{tunnel-api-DrgpZ81I.js → tunnel-api-BV46CvS8.js} +1 -1
  106. package/dist/gateway/static/root/assets/{usage-page-Drk8FWnj.js → usage-page-rMuwNpJi.js} +1 -1
  107. package/dist/gateway/static/root/assets/{use-autosave-DgbCgsao.js → use-autosave-CzyqRffr.js} +1 -1
  108. package/dist/gateway/static/root/assets/{use-composer-attachments-rgW7h4sD.js → use-composer-attachments-Dviq-1f6.js} +1 -1
  109. package/dist/gateway/static/root/assets/{use-file-preview-expanded-DSKIxfz9.js → use-file-preview-expanded-D5Kk7Hon.js} +2 -2
  110. package/dist/gateway/static/root/assets/{user-model-page-07t2-nFE.js → user-model-page-Dhqw3v_u.js} +1 -1
  111. package/dist/gateway/static/root/assets/{voice-api-key-field-4AIkbm9R.js → voice-api-key-field-DWtbmacd.js} +1 -1
  112. package/dist/gateway/static/root/assets/{voice-config-api-Kw1pYlLN.js → voice-config-api-DnIjZm_9.js} +1 -1
  113. package/dist/gateway/static/root/assets/{work-discovery-overlay-TQ5bjVot.js → work-discovery-overlay-ChEG71hz.js} +1 -1
  114. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-C9HP2uGG.js → workflow-run-setup-panel-pdiRKLxP.js} +1 -1
  115. package/dist/gateway/static/root/assets/{workflows-page-DK01JRI1.js → workflows-page-D9LMxINt.js} +1 -1
  116. package/dist/gateway/static/root/assets/{workspace-api-JWHOFos6.js → workspace-api-CZDvu7uA.js} +2 -2
  117. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-B-BhQdAf.js → xopc-cloud-account-card-CbUgg1SK.js} +1 -1
  118. package/dist/gateway/static/root/index.html +27 -27
  119. package/dist/package.js +1 -1
  120. package/dist/packages/gateway-contract/src/clarifications.js +79 -2
  121. package/dist/packages/realtime-protocol/src/voice.js +13 -2
  122. package/dist/src/agent/agent-manager.js +12 -8
  123. package/dist/src/agent/background-review/prompts.js +4 -0
  124. package/dist/src/agent/background-review/run-background-review.js +43 -5
  125. package/dist/src/agent/embedded/run-turn.js +1 -1
  126. package/dist/src/agent/embedded/session-runner.d.ts +4 -3
  127. package/dist/src/agent/embedded/session-runner.js +6 -1
  128. package/dist/src/agent/external-tools/cliProvider.js +1 -1
  129. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  130. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  131. package/dist/src/agent/mcp/connection-drafts.d.ts +50 -0
  132. package/dist/src/agent/mcp/connection-drafts.js +278 -0
  133. package/dist/src/agent/mcp/connection-setup.d.ts +5 -2
  134. package/dist/src/agent/mcp/connection-setup.js +7 -5
  135. package/dist/src/agent/mcp/credential-store.d.ts +6 -0
  136. package/dist/src/agent/mcp/credential-store.js +24 -0
  137. package/dist/src/agent/mcp/native-mcp.d.ts +6 -1
  138. package/dist/src/agent/mcp/native-mcp.js +6 -0
  139. package/dist/src/agent/mcp/tool-catalog.d.ts +7 -2
  140. package/dist/src/agent/mcp/tool-catalog.js +25 -15
  141. package/dist/src/agent/service/process-direct-streaming.js +1 -1
  142. package/dist/src/agent/service.js +2 -2
  143. package/dist/src/agent/skills/index.js +1 -1
  144. package/dist/src/agent/skills/managed-store.js +1 -1
  145. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  146. package/dist/src/agent/tools/clarify-tool.d.ts +2 -3
  147. package/dist/src/agent/tools/clarify-tool.js +15 -9
  148. package/dist/src/agent/tools/cli-clarify.d.ts +0 -3
  149. package/dist/src/agent/tools/cli-clarify.js +18 -32
  150. package/dist/src/agent/tools/factory.js +1 -1
  151. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  152. package/dist/src/agent/tools/personal-task-tool.d.ts +4 -4
  153. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  154. package/dist/src/agent/workspace-runtime/registry.js +1 -1
  155. package/dist/src/agent-catalog/capabilities.js +2 -2
  156. package/dist/src/automations/capabilities/drafts.js +1 -1
  157. package/dist/src/automations/capabilities/write.d.ts +2 -2
  158. package/dist/src/automations/domain/validation.d.ts +6 -6
  159. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  160. package/dist/src/automations/service/action-executor.js +1 -1
  161. package/dist/src/bootstrap/application-state.js +1 -1
  162. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  163. package/dist/src/capabilities/runtime/product.js +1 -1
  164. package/dist/src/chat-commands/agent-edit.js +1 -1
  165. package/dist/src/cli/commands/agent.js +1 -1
  166. package/dist/src/cli/commands/agents.js +1 -1
  167. package/dist/src/cli/commands/models.js +1 -1
  168. package/dist/src/cli/commands/onboard/model.d.ts +1 -1
  169. package/dist/src/cli/commands/onboard/model.js +22 -3
  170. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  171. package/dist/src/config/agent-profile.js +2 -2
  172. package/dist/src/config/loader.js +1 -1
  173. package/dist/src/config/models-json.js +1 -1
  174. package/dist/src/config/schema.d.ts +7 -1
  175. package/dist/src/config/schema.js +3 -1
  176. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  177. package/dist/src/gateway/agents-admin.js +2 -2
  178. package/dist/src/gateway/chat-stream/mapper.js +2 -2
  179. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -3
  180. package/dist/src/gateway/clarify-runtime.d.ts +2 -0
  181. package/dist/src/gateway/clarify-runtime.js +4 -1
  182. package/dist/src/gateway/ephemeral-clarification-waiter.d.ts +2 -1
  183. package/dist/src/gateway/ephemeral-clarification-waiter.js +19 -6
  184. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -1
  185. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  186. package/dist/src/gateway/hono/lib/config-write-lock.d.ts +2 -0
  187. package/dist/src/gateway/hono/lib/config-write-lock.js +14 -0
  188. package/dist/src/gateway/hono/routes/agent-stream.js +4 -9
  189. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  190. package/dist/src/gateway/hono/routes/config.js +7 -5
  191. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  192. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  193. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
  194. package/dist/src/gateway/hono/routes/mcp.js +73 -6
  195. package/dist/src/gateway/hono/routes/notes.js +2 -2
  196. package/dist/src/gateway/hono/routes/projects.js +2 -2
  197. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  198. package/dist/src/gateway/hono/routes/side-chats.js +4 -3
  199. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  200. package/dist/src/gateway/image-generation-setup.js +1 -1
  201. package/dist/src/gateway/lock.js +1 -1
  202. package/dist/src/gateway/service/agent-runner.d.ts +5 -4
  203. package/dist/src/gateway/service/agent-runner.js +32 -16
  204. package/dist/src/gateway/service/config-coordinator.d.ts +619 -1
  205. package/dist/src/gateway/service/config-coordinator.js +36 -24
  206. package/dist/src/gateway/service.d.ts +6 -3
  207. package/dist/src/gateway/service.js +5 -4
  208. package/dist/src/gateway/side-chat/run-service.d.ts +2 -1
  209. package/dist/src/gateway/side-chat/run-service.js +6 -3
  210. package/dist/src/gateway/side-chat/types.d.ts +3 -3
  211. package/dist/src/gateway/xopc-cloud-capability-setup.d.ts +2 -2
  212. package/dist/src/gateway/xopc-cloud-capability-setup.js +8 -5
  213. package/dist/src/local-apps/service.js +1 -1
  214. package/dist/src/memory-learning/service.js +3 -2
  215. package/dist/src/personal-agent/proactivity/service.js +1 -1
  216. package/dist/src/personal-agent/service.js +2 -2
  217. package/dist/src/providers/model-catalog-persistence.js +1 -1
  218. package/dist/src/routing/resolve-route.js +1 -1
  219. package/dist/src/routing/resolve-tui-session-key.js +1 -1
  220. package/dist/src/scenes/execution.d.ts +1 -1
  221. package/dist/src/scenes/taskFollowUp/contracts.d.ts +2 -2
  222. package/dist/src/scenes/taskFollowUp/service.d.ts +5 -5
  223. package/dist/src/scenes/templates.d.ts +2 -2
  224. package/dist/src/storage/sqlite/clarification-wait-repository.d.ts +3 -5
  225. package/dist/src/storage/sqlite/clarification-wait-repository.js +48 -28
  226. package/dist/src/tasks/capabilities/management.d.ts +2 -2
  227. package/dist/src/tasks/capabilities/read.js +2 -2
  228. package/dist/src/tasks/capabilities/relations.d.ts +6 -6
  229. package/dist/src/tasks/capabilities/write.d.ts +6 -6
  230. package/dist/src/tasks/capabilities/write.js +1 -1
  231. package/dist/src/tasks/task-handoff-service.js +1 -1
  232. package/dist/src/tui/backends/embedded-backend.js +2 -2
  233. package/dist/src/tui/tui-agent-events.js +1 -1
  234. package/dist/src/user-context/config.d.ts +2 -2
  235. package/dist/src/user-model/capture/semantic.d.ts +8 -1
  236. package/dist/src/user-model/capture/semantic.js +26 -5
  237. package/dist/src/voice/realtime/agentEngine.js +4 -2
  238. package/dist/src/voice/realtime/omniEngine.js +2 -2
  239. package/dist/src/voice/realtime/persona-context.js +1 -1
  240. package/package.json +4 -4
  241. package/dist/gateway/static/root/assets/connectors-page-CmJV7gqj.js +0 -1
  242. package/dist/gateway/static/root/assets/gateway-realtime-store-BVriF6Zj.js +0 -1
  243. package/dist/gateway/static/root/assets/index-DBRwvWzm.css +0 -1
  244. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-D2mip-f9.js +0 -1
  245. package/dist/gateway/static/root/assets/messages-DTqbfje6.js +0 -3
  246. package/dist/gateway/static/root/assets/models-hub-cache-Ct6X5zmB.js +0 -1
  247. package/dist/gateway/static/root/assets/session-manager-COd9RECl.js +0 -16
  248. package/dist/gateway/static/root/assets/settings-advanced-gate-CDkitNHA.js +0 -1
@@ -280,5 +280,10 @@
280
280
  "recordingParameters": { "message": "Parameters" },
281
281
  "recordingNew": { "message": "New recording" },
282
282
  "recordingStopped": { "message": "Run stopped" },
283
- "recordingRequestFailed": { "message": "Could not complete this action. Please try again." }
283
+ "recordingRequestFailed": { "message": "Could not complete this action. Please try again." },
284
+ "clarifyDeny": { "message": "Deny operation" },
285
+ "clarifyApprove": { "message": "Approve once" },
286
+ "clarifyCompose": { "message": "Select and add details" },
287
+ "clarifyClear": { "message": "Clear selection" },
288
+ "clarifyRecommended": { "message": "Recommended" }
284
289
  }
@@ -280,5 +280,10 @@
280
280
  "recordingParameters": { "message": "运行参数" },
281
281
  "recordingNew": { "message": "再次录制" },
282
282
  "recordingStopped": { "message": "运行已停止" },
283
- "recordingRequestFailed": { "message": "操作未完成,请重试。" }
283
+ "recordingRequestFailed": { "message": "操作未完成,请重试。" },
284
+ "clarifyDeny": { "message": "拒绝本次操作" },
285
+ "clarifyApprove": { "message": "批准本次操作" },
286
+ "clarifyCompose": { "message": "选择并补充" },
287
+ "clarifyClear": { "message": "清除选择" },
288
+ "clarifyRecommended": { "message": "推荐" }
284
289
  }
@@ -6742,4 +6742,4 @@ ${marker.timeOrigin}`),
6742
6742
  });
6743
6743
  }
6744
6744
 
6745
- export { revokeAndForgetProfile as A, runWithTabSiteAccess as B, saveExtensionLocalePreference as C, setAutoConnectEnabled as D, ENDPOINT_PROTOCOL_VERSION as E, strictObject as F, string as G, t as H, MAX_BROWSER_CONTEXTS_PER_TURN as M, PENDING_CONTEXT_KEY as P, REALTIME_PROTOCOL_VERSION as R, TAB_BINDING_PREFIX as T, _enum as _, RealtimeClient as a, activeTabId as b, array as c, boolean as d, browserPageContextsInputSchema as e, cancelPendingBrowserPairing as f, canonicalJson as g, captureContextMenuSelection as h, captureTabWithPermission as i, createBrowserEndpointHello as j, currentTabDescriptor as k, discoverLocalGateway as l, discriminatedUnion as m, endpointToolContentSchema as n, extensionLocale as o, gatewayFetch as p, getAccessProfile as q, literal as r, loadExtensionLocalePreference as s, number as t, object as u, openDatabase as v, pairGateway as w, readPendingBrowserPairing as x, readProfile as y, registerBrowserEndpoint as z };
6745
+ export { registerBrowserEndpoint as A, revokeAndForgetProfile as B, runWithTabSiteAccess as C, saveExtensionLocalePreference as D, ENDPOINT_PROTOCOL_VERSION as E, setAutoConnectEnabled as F, strictObject as G, string as H, t as I, unknown as J, MAX_BROWSER_CONTEXTS_PER_TURN as M, PENDING_CONTEXT_KEY as P, REALTIME_PROTOCOL_VERSION as R, TAB_BINDING_PREFIX as T, _enum as _, RealtimeClient as a, activeTabId as b, array as c, boolean as d, browserPageContextsInputSchema as e, cancelPendingBrowserPairing as f, canonicalJson as g, captureContextMenuSelection as h, captureTabWithPermission as i, createBrowserEndpointHello as j, currentTabDescriptor as k, discoverLocalGateway as l, discriminatedUnion as m, endpointToolContentSchema as n, extensionLocale as o, gatewayFetch as p, getAccessProfile as q, literal as r, loadExtensionLocalePreference as s, number as t, object as u, openDatabase as v, pairGateway as w, readPendingBrowserPairing as x, readProfile as y, record as z };
@@ -1,4 +1,4 @@
1
- import { y as readProfile, p as gatewayFetch, n as endpointToolContentSchema, E as ENDPOINT_PROTOCOL_VERSION, g as canonicalJson, T as TAB_BINDING_PREFIX, h as captureContextMenuSelection, P as PENDING_CONTEXT_KEY, H as t, z as registerBrowserEndpoint, q as getAccessProfile, a as RealtimeClient, j as createBrowserEndpointHello, R as REALTIME_PROTOCOL_VERSION } from './assets/page-context-BeworyNB.js';
1
+ import { y as readProfile, p as gatewayFetch, n as endpointToolContentSchema, E as ENDPOINT_PROTOCOL_VERSION, g as canonicalJson, T as TAB_BINDING_PREFIX, h as captureContextMenuSelection, P as PENDING_CONTEXT_KEY, I as t, A as registerBrowserEndpoint, q as getAccessProfile, a as RealtimeClient, j as createBrowserEndpointHello, R as REALTIME_PROTOCOL_VERSION } from './assets/page-context-A5RCibM_.js';
2
2
 
3
3
  const LOG_COLORS = {
4
4
  debug: "color: #888",
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>xopc</title>
7
7
  <script type="module" crossorigin src="./sidepanel.js"></script>
8
- <link rel="modulepreload" crossorigin href="./assets/page-context-BeworyNB.js">
8
+ <link rel="modulepreload" crossorigin href="./assets/page-context-A5RCibM_.js">
9
9
  <link rel="stylesheet" crossorigin href="./assets/sidepanel-CQeQB5vW.css">
10
10
  </head>
11
11
  <body>
@@ -1,4 +1,4 @@
1
- import { F as strictObject, t as number, d as boolean, G as string, c as array, _ as _enum, r as literal, u as object, m as discriminatedUnion, e as browserPageContextsInputSchema, H as t, p as gatewayFetch, M as MAX_BROWSER_CONTEXTS_PER_TURN, o as extensionLocale, v as openDatabase, a as RealtimeClient, R as REALTIME_PROTOCOL_VERSION, b as activeTabId, k as currentTabDescriptor, T as TAB_BINDING_PREFIX, q as getAccessProfile, y as readProfile, B as runWithTabSiteAccess, P as PENDING_CONTEXT_KEY, i as captureTabWithPermission, w as pairGateway, D as setAutoConnectEnabled, x as readPendingBrowserPairing, l as discoverLocalGateway, C as saveExtensionLocalePreference, A as revokeAndForgetProfile, f as cancelPendingBrowserPairing, s as loadExtensionLocalePreference } from './assets/page-context-BeworyNB.js';
1
+ import { G as strictObject, t as number, d as boolean, H as string, c as array, _ as _enum, r as literal, u as object, m as discriminatedUnion, e as browserPageContextsInputSchema, z as record$1, J as unknown, I as t, p as gatewayFetch, M as MAX_BROWSER_CONTEXTS_PER_TURN, o as extensionLocale, v as openDatabase, a as RealtimeClient, R as REALTIME_PROTOCOL_VERSION, b as activeTabId, k as currentTabDescriptor, T as TAB_BINDING_PREFIX, q as getAccessProfile, y as readProfile, C as runWithTabSiteAccess, P as PENDING_CONTEXT_KEY, i as captureTabWithPermission, w as pairGateway, F as setAutoConnectEnabled, x as readPendingBrowserPairing, l as discoverLocalGateway, D as saveExtensionLocalePreference, B as revokeAndForgetProfile, f as cancelPendingBrowserPairing, s as loadExtensionLocalePreference } from './assets/page-context-A5RCibM_.js';
2
2
 
3
3
  const AppContextResourceSchema = strictObject({
4
4
  kind: _enum(["note", "task", "project", "scene", "local_app"]),
@@ -245,6 +245,39 @@ function resolveToolActivity(name, status, result) {
245
245
  };
246
246
  }
247
247
 
248
+ const CLARIFICATION_ANSWER_LIMIT = 8e3;
249
+ const clarificationPresentationSchema = object({
250
+ interactionMode: _enum(["quick", "compose"]).optional(),
251
+ choiceDetails: array(object({
252
+ id: string().min(1).max(160),
253
+ label: string().trim().min(1).max(1e3),
254
+ description: string().max(2e3).optional()
255
+ }).strict()).min(2).max(10).optional(),
256
+ recommendedChoiceId: string().min(1).max(160).optional(),
257
+ approval: object({
258
+ operation: string().min(1).max(1e3),
259
+ target: string().max(2e3).optional(),
260
+ impact: string().max(4e3).optional(),
261
+ argumentsPreview: record$1(string(), unknown()).optional()
262
+ }).strict().optional()
263
+ });
264
+ const clarificationSubmissionSchema = object({
265
+ response: object({
266
+ choiceId: string().min(1).max(160).optional(),
267
+ text: string().trim().max(CLARIFICATION_ANSWER_LIMIT).optional()
268
+ }).strict().optional(),
269
+ decision: _enum(["approve", "deny"]).optional()
270
+ }).strict();
271
+ clarificationSubmissionSchema.extend({
272
+ action: _enum(["answer", "agent_decide", "cancel"]),
273
+ expectedVersion: number().int().positive(),
274
+ idempotencyKey: string().trim().min(1).max(256)
275
+ }).strict();
276
+ function readClarificationPresentation(value) {
277
+ const parsed = clarificationPresentationSchema.safeParse(value);
278
+ return parsed.success ? parsed.data : {};
279
+ }
280
+
248
281
  true &&(function polyfill() {
249
282
  const relList = document.createElement("link").relList;
250
283
  if (relList && relList.supports && relList.supports("modulepreload")) {
@@ -18980,13 +19013,11 @@ function mapClarification(value, conversationId) {
18980
19013
  const envelope = value;
18981
19014
  const row = envelope.clarification && typeof envelope.clarification === "object" ? envelope.clarification : envelope;
18982
19015
  if (row.status !== "open" || row.conversationId !== conversationId || typeof row.id !== "string" || typeof row.question !== "string") return void 0;
18983
- const choices = Array.isArray(row.choices) ? row.choices.filter((choice) => typeof choice === "string" && Boolean(choice.trim())) : void 0;
18984
19016
  return {
19017
+ ...readClarificationPresentation(row),
18985
19018
  id: row.id,
18986
19019
  kind: row.kind === "approval" ? "approval" : "input",
18987
19020
  question: row.question,
18988
- ...choices?.length ? { choices } : {},
18989
- ...typeof row.suggestedAnswer === "string" ? { suggestedAnswer: row.suggestedAnswer } : {},
18990
19021
  version: typeof row.version === "number" ? row.version : 1,
18991
19022
  ...typeof row.expiresAt === "number" ? { expiresAt: row.expiresAt } : {}
18992
19023
  };
@@ -19005,7 +19036,7 @@ class BrowserChatClient {
19005
19036
  runTopic;
19006
19037
  recoveringOutbox = false;
19007
19038
  sendingInput = false;
19008
- approvalResponses = /* @__PURE__ */ new Set();
19039
+ clarificationAttempt;
19009
19040
  lastOutboxRecoveryAt = 0;
19010
19041
  sessionsRequest = 0;
19011
19042
  defaultModelId;
@@ -19523,17 +19554,19 @@ ${endpointId}`;
19523
19554
  if (!this.snapshot.modelConfig) return;
19524
19555
  await this.patchModelConfig({ thinkingLevel });
19525
19556
  }
19526
- async respondToClarification(action, answer) {
19557
+ async respondToClarification(action, submission) {
19527
19558
  const clarification = this.snapshot.clarification;
19528
19559
  if (!clarification) return;
19560
+ const signature = JSON.stringify([clarification.id, clarification.version, action, submission]);
19561
+ if (this.clarificationAttempt?.signature !== signature) this.clarificationAttempt = { signature, key: crypto.randomUUID() };
19529
19562
  await json(await gatewayFetch(`/api/clarifications/${encodeURIComponent(clarification.id)}/responses`, {
19530
19563
  method: "POST",
19531
19564
  headers: { "Content-Type": "application/json" },
19532
19565
  body: JSON.stringify({
19533
19566
  action,
19534
- answer,
19567
+ ...submission,
19535
19568
  expectedVersion: clarification.version,
19536
- idempotencyKey: crypto.randomUUID()
19569
+ idempotencyKey: this.clarificationAttempt.key
19537
19570
  })
19538
19571
  }));
19539
19572
  await this.reloadClarification();
@@ -19731,31 +19764,7 @@ ${endpointId}`;
19731
19764
  async applyClarification(value, conversationId) {
19732
19765
  if (this.snapshot.conversationId !== conversationId) return;
19733
19766
  const clarification = mapClarification(value, conversationId);
19734
- if (clarification?.kind !== "approval") {
19735
- this.update({ clarification });
19736
- return;
19737
- }
19738
- this.update({ clarification: void 0 });
19739
- const key = `browser-approval:${clarification.id}:${clarification.version}`;
19740
- if (this.approvalResponses.has(key)) return;
19741
- this.approvalResponses.add(key);
19742
- try {
19743
- await json(await gatewayFetch(`/api/clarifications/${encodeURIComponent(clarification.id)}/responses`, {
19744
- method: "POST",
19745
- headers: { "Content-Type": "application/json" },
19746
- body: JSON.stringify({
19747
- action: "answer",
19748
- answer: "Approved. Continue with the requested operation.",
19749
- expectedVersion: clarification.version,
19750
- idempotencyKey: key
19751
- })
19752
- }, this.profileIdentity));
19753
- } catch (cause) {
19754
- this.approvalResponses.delete(key);
19755
- if (this.snapshot.conversationId === conversationId) {
19756
- this.update({ error: cause instanceof Error ? cause.message : String(cause) });
19757
- }
19758
- }
19767
+ this.update({ clarification });
19759
19768
  }
19760
19769
  async reloadClarification() {
19761
19770
  const conversationId = this.snapshot.conversationId;
@@ -45296,6 +45305,13 @@ function ChatPanel({ gatewayId, deviceId }) {
45296
45305
  const [screenshotFallbackError, setScreenshotFallbackError] = reactExports.useState("");
45297
45306
  const [copiedMessageId, setCopiedMessageId] = reactExports.useState("");
45298
45307
  const [clarificationAnswer, setClarificationAnswer] = reactExports.useState("");
45308
+ const [clarificationChoice, setClarificationChoice] = reactExports.useState();
45309
+ const [clarificationEditing, setClarificationEditing] = reactExports.useState(false);
45310
+ reactExports.useEffect(() => {
45311
+ setClarificationAnswer("");
45312
+ setClarificationChoice(void 0);
45313
+ setClarificationEditing(false);
45314
+ }, [snapshot.clarification?.id]);
45299
45315
  const [clarificationSubmitting, setClarificationSubmitting] = reactExports.useState(false);
45300
45316
  const [tabMention, setTabMention] = reactExports.useState();
45301
45317
  const [mentionTabs, setMentionTabs] = reactExports.useState([]);
@@ -45701,11 +45717,11 @@ function ChatPanel({ gatewayId, deviceId }) {
45701
45717
  setSearch(value);
45702
45718
  await client.loadSessions(value).catch((cause) => setError(cause instanceof Error ? cause.message : String(cause)));
45703
45719
  }
45704
- async function respondToClarification(action, answer) {
45720
+ async function respondToClarification(action, submission) {
45705
45721
  setClarificationSubmitting(true);
45706
45722
  setError("");
45707
45723
  try {
45708
- await client.respondToClarification(action, answer);
45724
+ await client.respondToClarification(action, submission);
45709
45725
  setClarificationAnswer("");
45710
45726
  } catch (cause) {
45711
45727
  setError(cause instanceof Error ? cause.message : String(cause));
@@ -45861,35 +45877,64 @@ function ChatPanel({ gatewayId, deviceId }) {
45861
45877
  /* @__PURE__ */ jsxRuntimeExports.jsx(PaperclipIcon, {}),
45862
45878
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t("dropFiles") })
45863
45879
  ] }) : null,
45864
- snapshot.clarification?.kind === "input" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "request-card", "aria-label": t("agentQuestion"), children: [
45880
+ snapshot.clarification ? /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "request-card", "aria-label": t("agentQuestion"), children: [
45865
45881
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "request-card-title", children: [
45866
45882
  /* @__PURE__ */ jsxRuntimeExports.jsx(SparkleIcon, {}),
45867
45883
  /* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: t("xopcNeedsInput") })
45868
45884
  ] }),
45869
45885
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: snapshot.clarification.question }),
45870
- snapshot.clarification.choices?.length ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "choice-list", children: snapshot.clarification.choices.map((choice) => /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", disabled: clarificationSubmitting, onClick: () => void respondToClarification("answer", choice), children: choice }, choice)) }) : null,
45871
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "clarification-answer", children: [
45872
- /* @__PURE__ */ jsxRuntimeExports.jsx(
45873
- "input",
45886
+ snapshot.clarification.kind === "approval" ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45887
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: snapshot.clarification.approval?.operation }),
45888
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: snapshot.clarification.approval?.target }),
45889
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: snapshot.clarification.approval?.impact }),
45890
+ /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { children: JSON.stringify(snapshot.clarification.approval?.argumentsPreview, null, 2) }),
45891
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { disabled: clarificationSubmitting, onClick: () => void respondToClarification("answer", { decision: "deny" }), children: t("clarifyDeny") }),
45892
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { disabled: clarificationSubmitting, onClick: () => void respondToClarification("answer", { decision: "approve" }), children: t("clarifyApprove") })
45893
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45894
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { disabled: clarificationSubmitting, onClick: () => setClarificationEditing(true), children: t("clarifyCompose") }),
45895
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "choice-list", children: snapshot.clarification.choiceDetails?.map((choice) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
45896
+ "button",
45874
45897
  {
45875
- value: clarificationAnswer,
45876
- onChange: (event) => setClarificationAnswer(event.target.value),
45877
- placeholder: snapshot.clarification.suggestedAnswer ?? t("typeAnswer")
45878
- }
45879
- ),
45898
+ disabled: clarificationSubmitting,
45899
+ "aria-pressed": clarificationChoice === choice.id,
45900
+ onClick: () => {
45901
+ if (snapshot.clarification?.interactionMode === "compose" || clarificationEditing || clarificationAnswer) setClarificationChoice(choice.id);
45902
+ else void respondToClarification("answer", { response: { choiceId: choice.id } });
45903
+ },
45904
+ children: [
45905
+ choice.label,
45906
+ snapshot.clarification?.recommendedChoiceId === choice.id ? " · " + t("clarifyRecommended") : "",
45907
+ /* @__PURE__ */ jsxRuntimeExports.jsx("small", { children: choice.description })
45908
+ ]
45909
+ },
45910
+ choice.id
45911
+ )) }),
45912
+ clarificationChoice ? /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => setClarificationChoice(void 0), children: t("clarifyClear") }) : null,
45913
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { children: [
45914
+ t("typeAnswer"),
45915
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
45916
+ "textarea",
45917
+ {
45918
+ value: clarificationAnswer,
45919
+ rows: 3,
45920
+ disabled: clarificationSubmitting,
45921
+ onChange: (event) => {
45922
+ setClarificationAnswer(event.target.value);
45923
+ if (event.target.value) setClarificationEditing(true);
45924
+ }
45925
+ }
45926
+ )
45927
+ ] }),
45880
45928
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45881
45929
  "button",
45882
45930
  {
45883
- type: "button",
45884
- disabled: clarificationSubmitting || !clarificationAnswer.trim(),
45885
- onClick: () => void respondToClarification("answer", clarificationAnswer.trim()),
45931
+ disabled: clarificationSubmitting || clarificationAnswer.trim().length > 8e3 || !clarificationChoice && !clarificationAnswer.trim(),
45932
+ onClick: () => void respondToClarification("answer", { response: { choiceId: clarificationChoice, text: clarificationAnswer.trim() || void 0 } }),
45886
45933
  children: t("send")
45887
45934
  }
45888
- )
45889
- ] }),
45890
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "clarification-actions", children: [
45891
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", disabled: clarificationSubmitting, onClick: () => void respondToClarification("agent_decide"), children: t("letXopcDecide") }),
45892
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", disabled: clarificationSubmitting, onClick: () => void respondToClarification("cancel"), children: t("cancelTask") })
45935
+ ),
45936
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { disabled: clarificationSubmitting, onClick: () => void respondToClarification("agent_decide"), children: t("letXopcDecide") }),
45937
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { disabled: clarificationSubmitting, onClick: () => void respondToClarification("cancel"), children: t("cancelTask") })
45893
45938
  ] })
45894
45939
  ] }) : null,
45895
45940
  processing ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "composer-notice", role: "status", children: t("processingAttachments") }) : null,
@@ -3,7 +3,7 @@
3
3
  "minimum_chrome_version": "120",
4
4
  "default_locale": "en",
5
5
  "name": "__MSG_appName__",
6
- "version": "0.0.387",
6
+ "version": "0.0.389",
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": [
@@ -8,7 +8,7 @@ import { resolveStandardPairingPath } from "../../../src/channels/pairing/paths.
8
8
  import { issuePairingChallenge } from "../../../src/channels/pairing/pairing-challenge.js";
9
9
  import { createStandardPairingAdapter } from "../../../src/channels/pairing/pairing-store-adapter.js";
10
10
  import "./pairing-config-resolver.js";
11
- import { answerClarificationChoiceFromChannel } from "../../../src/gateway/clarify-runtime.js";
11
+ import { answerClarificationChoiceFromChannel, answerClarificationDecisionFromChannel } from "../../../src/gateway/clarify-runtime.js";
12
12
  import { createTimeoutAbortSignal } from "./timeout-abort.js";
13
13
  import { createInboundDebouncer } from "../../../src/infra/debounce.js";
14
14
  import { getMimeType } from "../../../src/channels/media.js";
@@ -530,9 +530,11 @@ var TelegramChannelPlugin = class {
530
530
  const lastColon = rest.lastIndexOf(":");
531
531
  if (lastColon > 0) {
532
532
  const requestId = rest.slice(0, lastColon);
533
- const idx = Number.parseInt(rest.slice(lastColon + 1), 10);
533
+ const suffix = rest.slice(lastColon + 1);
534
+ const idx = /^\d+$/.test(suffix) ? Number(suffix) : NaN;
534
535
  const idempotencyKey = `telegram:${_accountId}:callback:${ctx.callbackQuery.id}`;
535
- if (requestId && Number.isFinite(idx) && answerClarificationChoiceFromChannel(requestId, idx, idempotencyKey)) {
536
+ const handled = suffix === "approve" || suffix === "deny" ? answerClarificationDecisionFromChannel(requestId, suffix, idempotencyKey) : Number.isFinite(idx) && answerClarificationChoiceFromChannel(requestId, idx, idempotencyKey);
537
+ if (requestId && handled) {
536
538
  await ctx.answerCallbackQuery();
537
539
  return;
538
540
  }
@@ -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.387",
5
+ "version": "0.0.389",
6
6
  "kind": "channel",
7
7
  "main": "src/index.js",
8
8
  "channels": [
@@ -1 +1 @@
1
- import{p as e}from"./locale-store-uRu_DsWm.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-Dr43FCty.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};