@acedatacloud/nexior 3.277.0 → 3.277.2

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 (169) hide show
  1. package/dist/assets/{ApiCodeButton-JslKaNUM.js → ApiCodeButton-_F8VGfz6.js} +1 -1
  2. package/dist/assets/{AskUserQuestionCard-CcMdElAC.js → AskUserQuestionCard-C-rgZ50J.js} +1 -1
  3. package/dist/assets/{Auth-PthS_Uhp.js → Auth-D0HnMvmY.js} +1 -1
  4. package/dist/assets/{Bare-DoctV1-6.js → Bare-COkwusIM.js} +1 -1
  5. package/dist/assets/{BotPlaceholder-DNd2OaW9.js → BotPlaceholder-CsbmSleA.js} +1 -1
  6. package/dist/assets/{BottomFooter-tHVRdv9h.js → BottomFooter-DMpMmqr4.js} +1 -1
  7. package/dist/assets/{Callback-DBoJqURG.js → Callback-Cllgoj6s.js} +1 -1
  8. package/dist/assets/{Console-CcKwTCT_.js → Console-C5hCQvvI.js} +1 -1
  9. package/dist/assets/{Consumption-Bx30TMJY.js → Consumption-sOdFzyTj.js} +1 -1
  10. package/dist/assets/{Conversation-D3uwrcNh.js → Conversation-D1MyUAvd.js} +2 -2
  11. package/dist/assets/{CopyToClipboard-INstPmp0.js → CopyToClipboard-BWst2iVb.js} +1 -1
  12. package/dist/assets/{Detail-B81Z1Wxb.js → Detail-B0UTP8zE.js} +2 -2
  13. package/dist/assets/{Extra-7go4HGej.js → Extra-BpK_QuV5.js} +1 -1
  14. package/dist/assets/{FilePreview-CONuDKS7.js → FilePreview-DxBIesog.js} +1 -1
  15. package/dist/assets/{Hailuo-DihR8fhb.js → Hailuo-Vq487_jN.js} +1 -1
  16. package/dist/assets/{History-Cn4pMdGL.js → History-PzaVn0Qb.js} +1 -1
  17. package/dist/assets/{ImagePreview-C0e5HPdV.js → ImagePreview-BONFD01I.js} +1 -1
  18. package/dist/assets/{ImageWrapper-gfMtBxa-.js → ImageWrapper-DG9AFRn0.js} +1 -1
  19. package/dist/assets/{Index-BUpZLm5i.js → Index-B4gwMLQA.js} +1 -1
  20. package/dist/assets/Index-BC5RavEk.js +1 -0
  21. package/dist/assets/{Index-BYm7lM8E.js → Index-BH3zKDxE.js} +1 -1
  22. package/dist/assets/{Index-AyaXBEAk.js → Index-BPP9LFNQ.js} +1 -1
  23. package/dist/assets/Index-BS8xKJbS.js +1 -0
  24. package/dist/assets/{Index-x7exlMj0.js → Index-BSmwFdf3.js} +1 -1
  25. package/dist/assets/{Index-DpG1wWSM.js → Index-BYd_1Igk.js} +1 -1
  26. package/dist/assets/{Index-C2ZGI30Q.js → Index-BZd9sGXt.js} +1 -1
  27. package/dist/assets/Index-BbQZOOMp.js +1 -0
  28. package/dist/assets/{Index-BGkRiWX5.js → Index-BclEWzuC.js} +1 -1
  29. package/dist/assets/{Index-CZpDWcCS.js → Index-Bgw66bG_.js} +1 -1
  30. package/dist/assets/{Index-0TPpJgrL.js → Index-Bi4jTDTC.js} +1 -1
  31. package/dist/assets/{Index-CHU9qiq2.js → Index-BnbPU1_5.js} +1 -1
  32. package/dist/assets/Index-C2AVojml.js +1 -0
  33. package/dist/assets/{Index-BEYu6kYg.js → Index-CMhi_OcN.js} +1 -1
  34. package/dist/assets/{Index-CevKROvB.js → Index-CTEt5y7l.js} +1 -1
  35. package/dist/assets/Index-Cq4bH0VX.js +1 -0
  36. package/dist/assets/{Index-jrRkOkb6.js → Index-D82sk4fu.js} +1 -1
  37. package/dist/assets/Index-DTbtiksg.js +1 -0
  38. package/dist/assets/{Index-CKpz7J5e.js → Index-DcZ5T2r-.js} +1 -1
  39. package/dist/assets/{Index-ehaGrC3m.css → Index-Dv6QH5PC.css} +1 -1
  40. package/dist/assets/{Index-CHOgpUEs.js → Index-cKvDEGwi.js} +1 -1
  41. package/dist/assets/{Index-DpjFAcc-.js → Index-jUy6hwT5.js} +1 -1
  42. package/dist/assets/{Index-D1GenG08.js → Index-lZYFamZu.js} +1 -1
  43. package/dist/assets/Index-sMX_ReQd.js +1 -0
  44. package/dist/assets/{Index-BDsm6Tel.js → Index-vue5_YrA.js} +1 -1
  45. package/dist/assets/{Index-BkHiR8u6.js → Index-z7f9IBf3.js} +1 -1
  46. package/dist/assets/{Invitees-Dtb1JMDn.js → Invitees-DLafR3-P.js} +1 -1
  47. package/dist/assets/{List-CGBU6Njz.js → List-6RiG5ZM_.js} +1 -1
  48. package/dist/assets/{List-Ja4BLrXN.js → List-DAHZF49n.js} +1 -1
  49. package/dist/assets/{List-Ct6OFD1r.js → List-DFYZobGA.js} +1 -1
  50. package/dist/assets/{Main-CWnXP_zj.js → Main-B3Nil7ov.js} +1 -1
  51. package/dist/assets/{Model-DC_3rb3i.js → Model-BOm-GsCG.js} +1 -1
  52. package/dist/assets/{Navigator-Chx3F58U.js → Navigator-Jxq0iAHr.js} +2 -2
  53. package/dist/assets/{NoTasks-CbTGc8HF.js → NoTasks-DFKN-WpO.js} +1 -1
  54. package/dist/assets/{NotFound-BcKEhgLQ.js → NotFound-CnH4FiVv.js} +1 -1
  55. package/dist/assets/{Pagination-Df0sU4Ck.js → Pagination-D-Qrewom.js} +1 -1
  56. package/dist/assets/{Pay-DpHGJfcX.js → Pay-2FI1nMLX.js} +1 -1
  57. package/dist/assets/{Player-Ba9Hff1B.js → Player-DEzAfNr3.js} +1 -1
  58. package/dist/assets/{Seedance-hXaXRqS-.js → Seedance-DcogSBwZ.js} +1 -1
  59. package/dist/assets/{Status-N4qERH6G.js → Status-mQt-bcni.js} +1 -1
  60. package/dist/assets/{Subscribe-CgI3I7kI.js → Subscribe-BFZrNxkZ.js} +1 -1
  61. package/dist/assets/{TabSwitcher-v1VJ0YG0.js → TabSwitcher-DnOx9vbA.js} +1 -1
  62. package/dist/assets/{Tts-p73RSsZg.js → Tts-CGJWvjIh.js} +1 -1
  63. package/dist/assets/{VideoPlayer-CYLsmg3y.js → VideoPlayer-BsOg3z0K.js} +1 -1
  64. package/dist/assets/{avatar-B_d4BA4I.js → avatar-eI_WspJB.js} +1 -1
  65. package/dist/assets/{basic-DEQcMYsH.js → basic-Cy1YlYE1.js} +1 -1
  66. package/dist/assets/{chat-SOwiU-QU.js → chat-Cd7LGowG.js} +1 -1
  67. package/dist/assets/codingBridge--XigVvyR.js +1 -0
  68. package/dist/assets/codingBridge-B-gY1N1A.js +1 -0
  69. package/dist/assets/codingBridge-B6CatBrM.js +1 -0
  70. package/dist/assets/codingBridge-B9OgVVtV.js +2 -0
  71. package/dist/assets/codingBridge-BPDUyHBH.js +1 -0
  72. package/dist/assets/codingBridge-Bvgssc71.js +1 -0
  73. package/dist/assets/codingBridge-CAhONS09.js +1 -0
  74. package/dist/assets/codingBridge-CkaxOr4j.js +1 -0
  75. package/dist/assets/codingBridge-CvB_AifV.js +1 -0
  76. package/dist/assets/codingBridge-D1WDrcmr.js +1 -0
  77. package/dist/assets/codingBridge-DAK6VumY.js +1 -0
  78. package/dist/assets/codingBridge-DI54WF2v.js +1 -0
  79. package/dist/assets/codingBridge-DMGrbAaR.js +1 -0
  80. package/dist/assets/codingBridge-DnLwm8Vn.js +1 -0
  81. package/dist/assets/codingBridge-GHfcAtW8.js +1 -0
  82. package/dist/assets/codingBridge-Oiwx8S44.js +1 -0
  83. package/dist/assets/codingBridge-iRMNlW_S.js +1 -0
  84. package/dist/assets/codingBridge-id8MUjk3.js +1 -0
  85. package/dist/assets/codingBridge-mfpuGC6b.js +1 -0
  86. package/dist/assets/{codingBridgeNotify-Bndgmo03.js → codingBridgeNotify-BgO1-q2c.js} +2 -2
  87. package/dist/assets/{collapse-gdZ6e_Uj.js → collapse-BF3bD3JQ.js} +1 -1
  88. package/dist/assets/{constants-C-bSXdJ_.js → constants-BVtW3DRs.js} +1 -1
  89. package/dist/assets/{createTaskActions-CrM4y9g0.js → createTaskActions-CJFLOWRL.js} +1 -1
  90. package/dist/assets/{date-picker-B_QvuSxE.js → date-picker-CQUJSKmg.js} +1 -1
  91. package/dist/assets/{dropdown-CDgvoM6y.js → dropdown-CmHI22Qk.js} +1 -1
  92. package/dist/assets/{esm-CqW5JcPc.js → esm-9Hz_oU09.js} +1 -1
  93. package/dist/assets/{esm-CuRvmdN1.js → esm-B8UUARCy.js} +1 -1
  94. package/dist/assets/esm-BqhS-60O.js +1 -0
  95. package/dist/assets/{esm-BfaOPseV.js → esm-CAmisYjo.js} +2 -2
  96. package/dist/assets/{esm-BV_ajEZR.js → esm-D7t-y-u1.js} +1 -1
  97. package/dist/assets/{esm-vJEs-cUS.js → esm-DMJZShgQ.js} +3 -3
  98. package/dist/assets/{esm-1WtclWk7.js → esm-DngzeHVk.js} +2 -2
  99. package/dist/assets/{fish-BLlURWuH.js → fish-DwUn-O3u.js} +1 -1
  100. package/dist/assets/{flux-BsBufIm2.js → flux-Z9gWtdb-.js} +1 -1
  101. package/dist/assets/{grokvideo-1atazDOv.js → grokvideo-DeheY06v.js} +1 -1
  102. package/dist/assets/{hailuo-C5k225-V.js → hailuo-CxOeW5h-.js} +1 -1
  103. package/dist/assets/{headshots-DqX1pQdy.js → headshots-DFzZRzeH.js} +1 -1
  104. package/dist/assets/{image-s5BzYxHs.js → image-C6NwfMIr.js} +1 -1
  105. package/dist/assets/{index-C8DeSrkP.js → index-B2cLm6qN.js} +5 -5
  106. package/dist/assets/{index.browser.esm-Djw2r9YD.js → index.browser.esm-Xp9wSEpI.js} +1 -1
  107. package/dist/assets/{index.es-CNg3jcG4.js → index.es-CtAdUuvy.js} +1 -1
  108. package/dist/assets/{input-number-BaYFVx7i.js → input-number-CGajKQ5c.js} +1 -1
  109. package/dist/assets/{kling-CzFhj2qi.js → kling-DmQ_HZxb.js} +1 -1
  110. package/dist/assets/{luma-DoKCLeYT.js → luma--3nfPKkw.js} +1 -1
  111. package/dist/assets/{midjourney-SBz8Rv4e.js → midjourney-BbyZ5iSG.js} +1 -1
  112. package/dist/assets/{nanobanana-DVRzRRfx.js → nanobanana-B4zl7XWD.js} +1 -1
  113. package/dist/assets/{openaiimage-BXJslsfR.js → openaiimage-BYU8bU-f.js} +1 -1
  114. package/dist/assets/{pagination-BzLQVoO2.js → pagination-lmE1fJNh.js} +1 -1
  115. package/dist/assets/{pika-C0B3w9GE.js → pika-DnH_-ozE.js} +1 -1
  116. package/dist/assets/{pixverse-BQrC_6H4.js → pixverse-B2M8mGrc.js} +1 -1
  117. package/dist/assets/{popover-B7llv1ai.js → popover-CE7suPFv.js} +1 -1
  118. package/dist/assets/{producer-BDz1Axsi.js → producer-Z11VfxX7.js} +1 -1
  119. package/dist/assets/{qrart-Dvzt1pTK.js → qrart-BZb2-4I8.js} +1 -1
  120. package/dist/assets/{row-BIHOnour.js → row-CPUbrqBF.js} +1 -1
  121. package/dist/assets/{seedance-w8BxsLrh.js → seedance-bPnnoS8W.js} +1 -1
  122. package/dist/assets/{seedream-OwdQZN66.js → seedream-CohGukzG.js} +1 -1
  123. package/dist/assets/{select-HUfkzAuQ.js → select-DAa8odbM.js} +1 -1
  124. package/dist/assets/{serp-oK8FUoet.js → serp-wL6frSWn.js} +1 -1
  125. package/dist/assets/{slider-SWgsI1lB.js → slider-Cm1_uMMy.js} +1 -1
  126. package/dist/assets/{solana-wallets-GKhlDbjz.js → solana-wallets-7rbqiX2h.js} +2 -2
  127. package/dist/assets/{solana-wallets-vue-DiNcXvde.js → solana-wallets-vue-DXB0bcIf.js} +1 -1
  128. package/dist/assets/{sora-DFMERr05.js → sora-D7Hs_5OF.js} +1 -1
  129. package/dist/assets/{suno-CStTArdP.js → suno-CNnBIzRH.js} +1 -1
  130. package/dist/assets/{switch-BZlJomEZ.js → switch-OayEB1u5.js} +1 -1
  131. package/dist/assets/{tabs-D-2tTItb.js → tabs-CczvvHUm.js} +1 -1
  132. package/dist/assets/{upload-C64n6FiS.js → upload-C1A-s7Yk.js} +1 -1
  133. package/dist/assets/{veo-Dj5gemtN.js → veo-C_9ZZPgC.js} +1 -1
  134. package/dist/assets/{wan-Bb0xxfUy.js → wan-CzgADhR-.js} +1 -1
  135. package/dist/assets/{web-CC9BNIME.js → web-3p8KfgK2.js} +1 -1
  136. package/dist/assets/{web-Bh3wag1G.js → web-BGojYlRE.js} +1 -1
  137. package/dist/assets/{web-DpaXgHLA.js → web-BnS1ZvGW.js} +1 -1
  138. package/dist/assets/{web-DPIR5ZBO.js → web-Bo0J-aov.js} +1 -1
  139. package/dist/assets/{web-C9iCm_h9.js → web-CCI8ummo.js} +1 -1
  140. package/dist/assets/{webextrator-Bh2daIlB.js → webextrator-DmkTce7c.js} +1 -1
  141. package/dist/index.html +2 -2
  142. package/package.json +1 -1
  143. package/dist/assets/Index-Bbjh8jK1.js +0 -1
  144. package/dist/assets/Index-CBIvbCwp.js +0 -1
  145. package/dist/assets/Index-CK7vJq3w.js +0 -1
  146. package/dist/assets/Index-D3Bo04i1.js +0 -1
  147. package/dist/assets/Index-D3UD4Qpr.js +0 -1
  148. package/dist/assets/Index-LWd1v-VZ.js +0 -1
  149. package/dist/assets/Index-khg5YzAO.js +0 -1
  150. package/dist/assets/codingBridge-BOKZvzSi.js +0 -1
  151. package/dist/assets/codingBridge-B_ZfiwlU.js +0 -1
  152. package/dist/assets/codingBridge-Bg53yIXw.js +0 -1
  153. package/dist/assets/codingBridge-BgJbsOHM.js +0 -1
  154. package/dist/assets/codingBridge-BkDjF5Ns.js +0 -1
  155. package/dist/assets/codingBridge-Bm8DWmf4.js +0 -1
  156. package/dist/assets/codingBridge-BnNjcRhg.js +0 -1
  157. package/dist/assets/codingBridge-BnSFqQJW.js +0 -1
  158. package/dist/assets/codingBridge-CNpJGY82.js +0 -1
  159. package/dist/assets/codingBridge-CW33hJWo.js +0 -2
  160. package/dist/assets/codingBridge-CbvBbNGy.js +0 -1
  161. package/dist/assets/codingBridge-Cbxpepos.js +0 -1
  162. package/dist/assets/codingBridge-Cpv9wMie.js +0 -1
  163. package/dist/assets/codingBridge-DTtVgNM1.js +0 -1
  164. package/dist/assets/codingBridge-DtUA-XtN.js +0 -1
  165. package/dist/assets/codingBridge-DzR2XuP9.js +0 -1
  166. package/dist/assets/codingBridge-GTx3ljIK.js +0 -1
  167. package/dist/assets/codingBridge-bZYyn5Y8.js +0 -1
  168. package/dist/assets/codingBridge-hzIb9rsQ.js +0 -1
  169. package/dist/assets/esm-a3SiY5XV.js +0 -1
@@ -1 +0,0 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{Bt as e,D as t,E as n,M as r,N as i,O as a,P as o,Q as s,Ut as c,X as l,et as u,k as d,lt as f,tt as p,ut as m,v as h,x as g,y as _}from"./vendor-chart-mdwpew_o.js";import{t as v}from"./button-DWzbdjZV.js";import{t as y}from"./upload-C64n6FiS.js";import{t as b}from"./checkbox-hfJFSY6z.js";import{t as x}from"./drawer-BvYPSxXh.js";import{n as S,r as C,t as w}from"./dropdown-CDgvoM6y.js";import{t as T}from"./popover-B7llv1ai.js";import{Dr as E,E as D,Ft as O,Ir as k,Mr as A,Or as j,Sr as M,jt as N,kr as P,yr as F}from"./index-C8DeSrkP.js";import"./vendor-highlight-BtIeKitL.js";import{t as I}from"./index.es-CNg3jcG4.js";import{t as ee}from"./CopyToClipboard-INstPmp0.js";import{n as te,t as ne}from"./AskUserQuestionCard-CcMdElAC.js";import{s as re,t as ie}from"./codingBridgeNotify-Bndgmo03.js";var ae=o({name:`CodingBridgeNotificationToggle`,components:{ElButton:v,FontAwesomeIcon:I},data(){return{enabled:!1,busy:!1}},computed:{supported(){return E()||re()}},mounted(){this.enabled=!E()&&ie()===`granted`},methods:{async onToggle(){this.busy=!0;try{if(this.enabled){await this.$store.dispatch(`codingBridge/disableNotifications`),this.enabled=!1,P.success(this.$t(`codingBridge.notify.disabled`));return}let e=await this.$store.dispatch(`codingBridge/enableNotifications`);e===`enabled`?(this.enabled=!0,P.success(this.$t(`codingBridge.notify.enabled`))):e===`denied`?P.warning(this.$t(`codingBridge.notify.denied`)):P.warning(this.$t(`codingBridge.notify.unsupported`))}catch{P.error(this.$t(`codingBridge.notify.failed`))}finally{this.busy=!1}}}});function oe(e,n,r,i,o,s){let c=u(`font-awesome-icon`),d=u(`el-button`);return e.supported?(l(),t(d,{key:0,circle:``,size:`small`,type:e.enabled?`primary`:`default`,title:e.enabled?e.$t(`codingBridge.notify.disable`):e.$t(`codingBridge.notify.enable`),disabled:e.busy,onClick:e.onToggle},{default:f(()=>[e.busy?(l(),t(c,{key:0,icon:`fa-solid fa-spinner`,spin:``})):(l(),t(c,{key:1,icon:e.enabled?`fa-solid fa-bell`:`fa-regular fa-bell`},null,8,[`icon`]))]),_:1},8,[`type`,`title`,`disabled`,`onClick`])):a(``,!0)}var L=o({name:`CodingBridgeNodeList`,components:{ElButton:v,FontAwesomeIcon:I,NotificationToggle:D(ae,[[`render`,oe]])},emits:[`pair`],computed:{nodes(){return this.$store.state.codingBridge?.nodes??[]},currentNodeId(){return this.$store.state.codingBridge?.currentNodeId},connection(){return this.$store.state.codingBridge?.connection??`disconnected`},connectionLabel(){return this.$t(`codingBridge.connection.${this.connection}`)},connectionDotClass(){switch(this.connection){case`connected`:return`bg-[var(--el-color-success)]`;case`connecting`:return`bg-[var(--el-color-warning)]`;case`error`:return`bg-[var(--el-color-danger)]`;default:return`bg-[var(--app-text-subtle)]`}}},methods:{onSelect(e){this.$store.dispatch(`codingBridge/selectNode`,e)},onRefresh(){this.$store.dispatch(`codingBridge/getNodes`)},async onDelete(e){try{await j.confirm(this.$t(`codingBridge.nodeList.removeConfirm`,{name:e.name}),this.$t(`codingBridge.nodeList.remove`),{confirmButtonText:this.$t(`codingBridge.nodeList.remove`),cancelButtonText:this.$t(`common.button.cancel`),type:`warning`})}catch{return}try{await this.$store.dispatch(`codingBridge/deleteNode`,e.node_id),P.success(this.$t(`codingBridge.nodeList.removeSuccess`))}catch{P.error(this.$t(`codingBridge.nodeList.removeFailed`))}}}}),R={class:`node-list flex flex-col h-full bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},z={class:`flex items-center justify-between px-4 py-3 border-b border-[var(--app-border-subtle)]`},B={class:`flex items-center gap-2 font-medium`},V={class:`flex items-center gap-1`},H={class:`flex items-center gap-2 px-4 py-2 text-xs border-b border-[var(--app-border-subtle)]`},U={class:`text-[var(--app-text-subtle)]`},W={class:`flex-1 overflow-y-auto`},G={key:0,class:`p-6 text-center text-sm text-[var(--app-text-subtle)]`},K={class:`mb-3`},q={key:1,class:`list-none m-0 p-0`},se=[`onClick`],ce={class:`flex-1 min-w-0`},le={class:`flex items-center gap-2`},ue={class:`truncate font-medium`},de=[`title`],fe={class:`text-xs text-[var(--app-text-subtle)] truncate`};function pe(t,a,o,p,m,h){let v=u(`font-awesome-icon`),y=u(`notification-toggle`),b=u(`el-button`);return l(),d(`div`,R,[n(`div`,z,[n(`div`,B,[i(v,{icon:`fa-solid fa-laptop-code`}),n(`span`,null,c(t.$t(`codingBridge.nodeList.title`)),1)]),n(`div`,V,[i(y),i(b,{circle:``,size:`small`,title:t.$t(`codingBridge.nodeList.refresh`),onClick:t.onRefresh},{default:f(()=>[i(v,{icon:`fa-solid fa-rotate-right`})]),_:1},8,[`title`,`onClick`]),i(b,{type:`primary`,circle:``,size:`small`,title:t.$t(`codingBridge.nodeList.pair`),onClick:a[0]||=e=>t.$emit(`pair`)},{default:f(()=>[i(v,{icon:`fa-solid fa-plus`})]),_:1},8,[`title`])])]),n(`div`,H,[n(`span`,{class:e([`inline-block w-2 h-2 rounded-full`,t.connectionDotClass])},null,2),n(`span`,U,c(t.connectionLabel),1)]),n(`div`,W,[t.nodes.length?(l(),d(`ul`,q,[(l(!0),d(g,null,s(t.nodes,r=>(l(),d(`li`,{key:r.node_id,class:e([`group flex items-center gap-3 px-4 py-3 cursor-pointer border-b border-[var(--app-border-subtle)] hover:bg-[var(--app-content-bg)]`,{"bg-[var(--app-content-bg)]":r.node_id===t.currentNodeId}]),onClick:e=>t.onSelect(r.node_id)},[i(v,{icon:`fa-solid fa-desktop`,class:`text-[var(--app-text-subtle)]`}),n(`div`,ce,[n(`div`,le,[n(`span`,ue,c(r.name),1),n(`span`,{class:e([`inline-block w-2 h-2 rounded-full flex-none`,r.status===`online`?`bg-[var(--el-color-success)]`:`bg-[var(--app-text-subtle)]`]),title:r.status===`online`?t.$t(`codingBridge.status.online`):t.$t(`codingBridge.status.offline`)},null,10,de)]),n(`div`,fe,c(r.status===`online`?t.$t(`codingBridge.status.online`):t.$t(`codingBridge.status.offline`)),1)]),i(b,{class:`opacity-0 group-hover:opacity-100`,text:``,circle:``,size:`small`,title:t.$t(`codingBridge.nodeList.remove`),onClick:_(e=>t.onDelete(r),[`stop`])},{default:f(()=>[i(v,{icon:`fa-solid fa-trash`})]),_:1},8,[`title`,`onClick`])],10,se))),128))])):(l(),d(`div`,G,[n(`p`,K,c(t.$t(`codingBridge.nodeList.empty`)),1),i(b,{type:`primary`,round:``,size:`small`,onClick:a[1]||=e=>t.$emit(`pair`)},{default:f(()=>[i(v,{icon:`fa-solid fa-plus`,class:`mr-1`}),r(` `+c(t.$t(`codingBridge.nodeList.pairFirst`)),1)]),_:1})]))])])}var me=D(L,[[`render`,pe]]),he=e=>{let t=e?.questions;return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e.question==`string`&&Array.isArray(e.options))},J=e=>e?(e.tool||``).toLowerCase()===`askuserquestion`?!0:he(e.input):!1,ge=e=>({questions:e.input?.questions??[]}),_e=o({name:`CodingBridgeTranscriptItem`,directives:{highlight:O},components:{FontAwesomeIcon:I,VueMarkdown:te},props:{event:{type:Object,required:!0},editable:{type:Boolean,default:!1}},emits:[`edit`],computed:{commandText(){let e=this.event.input;if(!e)return``;for(let t of[`command`,`cmd`,`script`]){let n=e[t];if(typeof n==`string`&&n.trim())return n}return``},filePath(){let e=this.event.input;if(!e)return``;for(let t of[`file_path`,`filePath`,`path`,`notebook_path`,`filename`]){let n=e[t];if(typeof n==`string`&&n.trim())return n}return``},toolDescription(){let e=this.event.input?.description;return typeof e==`string`?e:``},toolIcon(){if(this.commandText)return`fa-solid fa-terminal`;let e=(this.event.tool??``).toLowerCase();return/read|cat|view/.test(e)?`fa-solid fa-file-lines`:/write|edit|create|update|insert/.test(e)?`fa-solid fa-pen`:/grep|glob|search|find|list/.test(e)?`fa-solid fa-magnifying-glass`:`fa-solid fa-code`},questionLines(){let e=(this.event.tool??``).toLowerCase(),t=this.event.input?.questions;return!(e===`askuserquestion`||Array.isArray(t))||!Array.isArray(t)?[]:t.filter(e=>e&&typeof e.question==`string`).map(e=>({header:typeof e.header==`string`?e.header:``,question:e.question}))},inputText(){let e=this.event.input;if(!e)return``;let t={};for(let[n,r]of Object.entries(e))n===`timeout`||n===`description`||(t[n]=r);if(Object.keys(t).length===0)return``;try{return JSON.stringify(t,null,2)}catch{return String(e)}},resultText(){let e=this.event.content;return typeof e==`string`&&e.length>0?e:`—`},resultLabel(){let e=[];return this.event.is_error?e.push(this.$t(`codingBridge.transcript.turnFailed`)):e.push(this.$t(`codingBridge.transcript.turnDone`)),typeof this.event.cost_usd==`number`&&this.event.cost_usd>0&&e.push(`$${this.event.cost_usd.toFixed(4)}`),e.join(` · `)},hasAttachments(){return!!this.event.attachments?.length},noticeText(){let e=this.event.subtype,t=this.event.command;if(t){if(e===`slash_unavailable`)return this.$t(`codingBridge.notice.slashUnavailable`,{command:t});if(e===`slash_codex_unsupported`)return this.$t(`codingBridge.notice.slashCodexUnsupported`,{command:t})}return this.event.text||``}}}),ve={key:0,class:`group flex items-end justify-end gap-1.5`},ye=[`title`,`aria-label`],be={class:`max-w-[85%] rounded-lg px-3 py-2 bg-[var(--el-color-primary)] text-white whitespace-pre-wrap break-words`},xe=[`src`],Se=[`href`],Ce=[`src`],we={key:1,class:`flex h-9 w-9 items-center justify-center rounded bg-white/15`},Te={class:`min-w-0 truncate`},Ee={key:2},De={key:2,class:`whitespace-pre-wrap break-words italic text-[var(--app-text-subtle)] border-l-2 border-[var(--app-border-subtle)] pl-3`},Oe={key:3,class:`overflow-hidden rounded-md bg-[var(--app-sidebar-bg)] border border-[var(--app-border-subtle)]`},ke={class:`flex items-center gap-2 px-2.5 py-1.5 font-medium text-[var(--app-text-subtle)]`},Ae={key:0,class:`min-w-0 truncate text-xs font-normal opacity-70`},je={key:0,class:`flex flex-col gap-1.5 px-2.5 pb-2`},Me={key:0,class:`font-medium text-[var(--app-text)]`},Ne={class:`whitespace-pre-wrap break-words text-[var(--app-text-subtle)]`},Pe={key:1,class:`px-2.5 pb-2`},Fe={class:`flex gap-2 overflow-x-auto rounded border border-[var(--app-border-subtle)] bg-[var(--app-content-bg)] px-2.5 py-1.5 font-mono text-xs`},Ie={class:`whitespace-pre-wrap break-words`},Le={key:2,class:`px-2.5 pb-2 font-mono text-xs break-all text-[var(--app-text-subtle)]`},Re={key:3,class:`m-0 overflow-x-auto whitespace-pre-wrap break-words px-2.5 pb-2 text-xs text-[var(--app-text-subtle)]`},ze={key:5,class:`flex items-center gap-2 text-xs text-[var(--app-text-subtle)]`},Be={key:6,class:`flex items-start gap-2 rounded-md bg-[var(--app-sidebar-bg)] border border-[var(--app-border-subtle)] text-[var(--app-text-subtle)] px-3 py-2 text-xs`},Ve={class:`whitespace-pre-wrap break-words`},He={key:7,class:`rounded-md bg-[var(--el-color-danger-light-9)] text-[var(--el-color-danger)] px-3 py-2 whitespace-pre-wrap break-words`};function Ue(t,r,o,f,h,_){let v=u(`font-awesome-icon`),y=u(`vue-markdown`),b=p(`highlight`);return l(),d(`div`,{class:e([`transcript-item text-sm leading-relaxed`,`kind-${t.event.kind}`])},[t.event.kind===`prompt`?(l(),d(`div`,ve,[t.editable?(l(),d(`button`,{key:0,type:`button`,class:`cb-edit-btn opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100`,title:t.$t(`codingBridge.session.editPrompt`),"aria-label":t.$t(`codingBridge.session.editPrompt`),onClick:r[0]||=e=>t.$emit(`edit`,t.event)},[i(v,{icon:`fa-solid fa-pen`})],8,ye)):a(``,!0),n(`div`,be,[t.event.images&&t.event.images.length?(l(),d(`div`,{key:0,class:e([`flex flex-wrap gap-1.5`,{"mb-1.5":t.event.text||t.hasAttachments}])},[(l(!0),d(g,null,s(t.event.images,(e,t)=>(l(),d(`img`,{key:t,src:e,class:`w-16 h-16 rounded object-cover`,alt:``},null,8,xe))),128))],2)):a(``,!0),t.hasAttachments?(l(),d(`div`,{key:1,class:e([`flex flex-wrap gap-1.5`,{"mb-1.5":t.event.text}])},[(l(!0),d(g,null,s(t.event.attachments,(e,t)=>(l(),d(`a`,{key:`${e.url}-${t}`,href:e.url,target:`_blank`,rel:`noopener noreferrer`,class:`flex max-w-[220px] items-center gap-2 rounded-md bg-white/15 px-2 py-1.5 text-xs text-white hover:bg-white/20`},[e.type===`image`?(l(),d(`img`,{key:0,src:e.url,class:`h-9 w-9 rounded object-cover`,alt:``},null,8,Ce)):(l(),d(`span`,we,[i(v,{icon:`fa-solid fa-file`})])),n(`span`,Te,c(e.name||e.url),1)],8,Se))),128))],2)):a(``,!0),t.event.text?(l(),d(`span`,Ee,c(t.event.text),1)):a(``,!0)])])):t.event.kind===`text`?(l(),d(`div`,{key:1,class:e([`cb-stream-text`,{"is-streaming":t.event.streaming}])},[m(i(y,{source:t.event.text||``,class:`markdown-body bg-transparent text-[var(--app-text)]`},null,8,[`source`]),[[b]])],2)):t.event.kind===`thinking`?(l(),d(`div`,De,c(t.event.text),1)):t.event.kind===`tool_use`?(l(),d(`div`,Oe,[n(`div`,ke,[i(v,{icon:t.toolIcon,class:`text-[var(--el-color-primary)]`},null,8,[`icon`]),n(`span`,null,c(t.event.tool),1),t.toolDescription?(l(),d(`span`,Ae,c(t.toolDescription),1)):a(``,!0)]),t.questionLines.length?(l(),d(`div`,je,[(l(!0),d(g,null,s(t.questionLines,(e,t)=>(l(),d(`div`,{key:t,class:`rounded border border-[var(--app-border-subtle)] bg-[var(--app-content-bg)] px-2.5 py-1.5 text-xs`},[e.header?(l(),d(`div`,Me,c(e.header),1)):a(``,!0),n(`div`,Ne,c(e.question),1)]))),128))])):t.commandText?(l(),d(`div`,Pe,[n(`div`,Fe,[r[1]||=n(`span`,{class:`select-none text-[var(--el-color-success)]`},`$`,-1),n(`span`,Ie,c(t.commandText),1)])])):t.filePath?(l(),d(`div`,Le,c(t.filePath),1)):t.inputText?(l(),d(`pre`,Re,c(t.inputText),1)):a(``,!0)])):t.event.kind===`tool_result`?(l(),d(`div`,{key:4,class:e([`overflow-hidden rounded-md`,t.event.is_error?`bg-[var(--el-color-danger-light-9)]`:`bg-[var(--app-sidebar-bg)]`])},[n(`pre`,{class:e([`m-0 max-h-72 overflow-auto whitespace-pre-wrap break-words px-2.5 py-2 font-mono text-xs`,t.event.is_error?`text-[var(--el-color-danger)]`:`text-[var(--app-text-subtle)]`])},c(t.resultText),3)],2)):t.event.kind===`result`?(l(),d(`div`,ze,[i(v,{icon:t.event.is_error?`fa-solid fa-xmark`:`fa-solid fa-check`},null,8,[`icon`]),n(`span`,null,c(t.resultLabel),1)])):t.event.kind===`notice`?(l(),d(`div`,Be,[i(v,{icon:`fa-solid fa-circle-info`,class:`mt-0.5 flex-none text-[var(--el-color-primary)]`}),n(`span`,Ve,c(t.noticeText),1)])):t.event.kind===`error`?(l(),d(`div`,He,c(t.event.text),1)):a(``,!0)],2)}var We=D(_e,[[`render`,Ue],[`__scopeId`,`data-v-17816a06`]]),Y=[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`],Ge=`Pondering.Noodling.Conjuring.Brewing.Cooking.Crafting.Churning.Simmering.Percolating.Ruminating.Musing.Marinating.Synthesizing.Computing.Hatching.Forging.Vibing.Working.Thinking.Cogitating.Mulling.Stewing.Tinkering.Wrangling.Spinning.Reticulating.Manifesting.Deliberating`.split(`.`),Ke=[`思考中`,`酝酿中`,`沉思中`,`推敲中`,`构思中`,`计算中`,`琢磨中`,`捣鼓中`,`炼制中`,`召唤中`,`编织中`,`烹饪中`,`咀嚼中`,`盘算中`,`发酵中`,`运转中`,`冥想中`,`鼓捣中`,`熬制中`,`神游中`,`演算中`,`雕琢中`,`头脑风暴中`,`反复斟酌中`],qe=80,X=60,Je=1500,Z=28,Ye=o({name:`CodingBridgeThinkingIndicator`,data(){return{spinnerIndex:0,display:``,elapsed:0,charIndex:0,phase:`typing`,currentWord:``,spinnerTimer:0,elapsedTimer:0,typeTimer:0}},computed:{spinnerFrame(){return Y[this.spinnerIndex]},words(){return this.$i18n.locale.startsWith(`zh`)?Ke:Ge}},mounted(){this.currentWord=this.pickWord(),this.spinnerTimer=window.setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%Y.length},qe),this.elapsedTimer=window.setInterval(()=>{this.elapsed+=1},1e3),this.scheduleType(X)},beforeUnmount(){window.clearInterval(this.spinnerTimer),window.clearInterval(this.elapsedTimer),window.clearTimeout(this.typeTimer)},methods:{pickWord(){let e=this.words;if(e.length<=1)return e[0]??``;let t=this.currentWord;for(;t===this.currentWord;)t=e[Math.floor(Math.random()*e.length)];return t},scheduleType(e){this.typeTimer=window.setTimeout(this.advance,e)},advance(){let e=this.currentWord;this.phase===`typing`?(this.charIndex+=1,this.display=e.slice(0,this.charIndex),this.charIndex>=e.length?(this.phase=`holding`,this.scheduleType(Je)):this.scheduleType(X)):this.phase===`holding`?(this.phase=`deleting`,this.scheduleType(Z)):(--this.charIndex,this.display=e.slice(0,Math.max(0,this.charIndex)),this.charIndex<=0?(this.currentWord=this.pickWord(),this.phase=`typing`,this.scheduleType(X)):this.scheduleType(Z))}}}),Xe={class:`cb-thinking flex items-center gap-2 text-sm text-[var(--app-text-subtle)] py-1`},Ze={class:`cb-thinking__spinner text-[var(--el-color-primary)]`},Qe={class:`cb-thinking__word`},$e={class:`cb-thinking__elapsed tabular-nums opacity-60`};function et(e,t,i,a,o,s){return l(),d(`div`,Xe,[n(`span`,Ze,c(e.spinnerFrame),1),n(`span`,Qe,[r(c(e.display),1),t[0]||=n(`span`,{class:`cb-thinking__caret`},`▋`,-1)]),n(`span`,$e,`(`+c(e.elapsed)+`s)`,1)])}var tt=D(Ye,[[`render`,et],[`__scopeId`,`data-v-6087e9e6`]]),nt=o({name:`CodingBridgeDirectoryDialog`,components:{ElDialog:A,ElButton:v,FontAwesomeIcon:I},props:{visible:{type:Boolean,default:!1},initialPath:{type:String,default:``}},emits:[`update:visible`,`select`],computed:{listing(){return this.$store.state.codingBridge?.directory},loading(){return this.$store.state.codingBridge?.directoryLoading===!0},directories(){return(this.listing?.entries??[]).filter(e=>e.type===`dir`)},files(){return(this.listing?.entries??[]).filter(e=>e.type===`file`)},isEmpty(){return!!this.listing&&!this.listing.error&&(this.listing.entries??[]).length===0}},methods:{onOpen(){this.$store.dispatch(`codingBridge/browseDir`,this.initialPath||void 0)},onVisibleChange(e){this.$emit(`update:visible`,e),e||this.$store.dispatch(`codingBridge/clearDirectory`)},openDir(e){this.$store.dispatch(`codingBridge/browseDir`,e)},goParent(){this.listing?.parent&&this.$store.dispatch(`codingBridge/browseDir`,this.listing.parent)},refresh(){this.$store.dispatch(`codingBridge/browseDir`,this.listing?.path||this.initialPath||void 0)},chooseCurrent(){this.listing&&!this.listing.error&&(this.$emit(`select`,this.listing.path),this.onVisibleChange(!1))}}}),rt={class:`flex flex-col gap-2`},it={class:`flex items-center gap-2 min-w-0`},at={class:`text-xs text-[var(--app-text-subtle)] truncate flex-1`,dir:`ltr`},ot={class:`h-72 overflow-y-auto border border-[var(--app-border-subtle)] rounded-md divide-y divide-[var(--app-border-subtle)]`},st={key:0,class:`h-full flex items-center justify-center text-sm text-[var(--app-text-subtle)]`},ct={key:1,class:`h-full flex items-center justify-center text-sm text-[var(--el-color-danger)]`},lt=[`onClick`],ut={class:`truncate`,dir:`ltr`},dt={class:`truncate`,dir:`ltr`},ft={key:0,class:`h-full flex items-center justify-center text-sm text-[var(--app-text-subtle)] py-8`},pt={key:0,class:`text-[11px] text-[var(--app-text-subtle)] px-1`},mt={class:`flex items-center justify-end gap-2`};function ht(e,o,p,m,h,_){let v=u(`font-awesome-icon`),y=u(`el-button`),b=u(`el-dialog`);return l(),t(b,{"model-value":e.visible,title:e.$t(`codingBridge.directory.title`),width:`520px`,"append-to-body":``,"onUpdate:modelValue":e.onVisibleChange,onOpen:e.onOpen},{footer:f(()=>[n(`div`,mt,[i(y,{round:``,onClick:o[0]||=t=>e.onVisibleChange(!1)},{default:f(()=>[r(c(e.$t(`common.button.cancel`)),1)]),_:1}),i(y,{type:`primary`,round:``,disabled:!e.listing||!!e.listing.error,onClick:e.chooseCurrent},{default:f(()=>[r(c(e.$t(`codingBridge.directory.choose`)),1)]),_:1},8,[`disabled`,`onClick`])])]),default:f(()=>[n(`div`,rt,[n(`div`,it,[i(y,{size:`small`,circle:``,disabled:!e.listing||!e.listing.parent||e.loading,title:e.$t(`codingBridge.directory.up`),onClick:e.goParent},{default:f(()=>[i(v,{icon:`fa-solid fa-arrow-up`})]),_:1},8,[`disabled`,`title`,`onClick`]),n(`span`,at,c(e.listing?e.listing.path:`…`),1),i(y,{size:`small`,circle:``,disabled:e.loading,title:e.$t(`codingBridge.directory.refresh`),onClick:e.refresh},{default:f(()=>[i(v,{icon:`fa-solid fa-rotate-right`,spin:e.loading},null,8,[`spin`])]),_:1},8,[`disabled`,`title`,`onClick`])]),n(`div`,ot,[e.loading&&!e.listing?(l(),d(`div`,st,c(e.$t(`codingBridge.directory.loading`)),1)):e.listing&&e.listing.error?(l(),d(`div`,ct,c(e.listing.error),1)):(l(),d(g,{key:2},[(l(!0),d(g,null,s(e.directories,t=>(l(),d(`button`,{key:t.path,type:`button`,class:`w-full flex items-center gap-2 px-3 py-2 text-left text-sm hover:bg-[var(--app-content-hover-bg)]`,onClick:n=>e.openDir(t.path)},[i(v,{icon:`fa-solid fa-folder`,class:`text-[var(--el-color-warning)]`}),n(`span`,ut,c(t.name),1)],8,lt))),128)),(l(!0),d(g,null,s(e.files,e=>(l(),d(`div`,{key:e.path,class:`w-full flex items-center gap-2 px-3 py-2 text-sm text-[var(--app-text-subtle)]`},[i(v,{icon:`fa-solid fa-file`}),n(`span`,dt,c(e.name),1)]))),128)),e.isEmpty?(l(),d(`div`,ft,c(e.$t(`codingBridge.directory.empty`)),1)):a(``,!0)],64))]),e.listing&&e.listing.truncated?(l(),d(`p`,pt,c(e.$t(`codingBridge.directory.truncated`)),1)):a(``,!0)])]),_:1},8,[`model-value`,`title`,`onUpdate:modelValue`,`onOpen`])}var gt=D(nt,[[`render`,ht]]),_t=`data:image/svg+xml,%3csvg%20fill='%23D97757'%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='m4.7144%2015.9555%204.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608%201.5179.1032%202.2767.1578%201.6514.0972%202.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973%209.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686%201.9064%201.4754%202.4893%201.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335%206.6997%200l.9957.1336.419.3642.6192%201.4147%201.0018%202.2282%201.5543%203.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853%201.8517-.5586%202.9021-.3643%201.9429h.2125l.2429-.2429.9835-1.3053%201.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759%201.1293-.34%201.1657-1.0625%201.3478-.8804%201.1414-1.2628%201.7-.7893%201.36.0729.1093.1882-.0183%202.8535-.607%201.5421-.2794%201.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607%201.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929%201.0686%202.0035%201.8092%202.5075%202.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496%202.3436%203.5214.1214%201.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38%2017.959l-1.1414-1.9428-.1397.079-.674%207.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328%201.9672-2.1796%202.9446-1.7243%201.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889%202.386-3.0357%201.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385%204.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429%201.9064-1.3114Z'/%3e%3c/svg%3e`,vt=`data:image/svg+xml,%3csvg%20fill='%23000000'%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M22.282%209.821a5.985%205.985%200%200%200-.516-4.91%206.046%206.046%200%200%200-6.51-2.9A6.065%206.065%200%200%200%204.981%204.18a5.985%205.985%200%200%200-3.998%202.9%206.046%206.046%200%200%200%20.743%207.097%205.98%205.98%200%200%200%20.51%204.911%206.051%206.051%200%200%200%206.515%202.9A5.985%205.985%200%200%200%2013.26%2024a6.056%206.056%200%200%200%205.772-4.206%205.99%205.99%200%200%200%203.997-2.9%206.056%206.056%200%200%200-.747-7.073zM13.26%2022.43a4.476%204.476%200%200%201-2.876-1.04l.141-.081%204.779-2.758a.795.795%200%200%200%20.392-.681v-6.737l2.02%201.168a.071.071%200%200%201%20.038.052v5.583a4.504%204.504%200%200%201-4.494%204.494zM3.6%2018.304a4.47%204.47%200%200%201-.535-3.014l.142.085%204.783%202.759a.771.771%200%200%200%20.78%200l5.843-3.369v2.332a.08.08%200%200%201-.033.062L9.74%2019.95a4.5%204.5%200%200%201-6.14-1.646zM2.34%207.896a4.485%204.485%200%200%201%202.366-1.973V11.6a.766.766%200%200%200%20.388.676l5.815%203.355-2.02%201.168a.076.076%200%200%201-.071%200l-4.83-2.786A4.504%204.504%200%200%201%202.34%207.872zm16.597%203.855l-5.833-3.387L15.119%207.2a.076.076%200%200%201%20.071%200l4.83%202.791a4.494%204.494%200%200%201-.676%208.105v-5.678a.79.79%200%200%200-.407-.667zm2.01-3.023l-.141-.085-4.774-2.782a.776.776%200%200%200-.785%200L9.409%209.23V6.897a.066.066%200%200%201%20.028-.061l4.83-2.787a4.5%204.5%200%200%201%206.68%204.66zm-12.64%204.135l-2.02-1.164a.08.08%200%200%201-.038-.057V6.075a4.5%204.5%200%200%201%207.375-3.453l-.142.08L8.704%205.46a.795.795%200%200%200-.393.681zm1.097-2.365l2.602-1.5%202.607%201.5v2.999l-2.597%201.5-2.607-1.5z'/%3e%3c/svg%3e`,yt=50*1024*1024,Q=10,bt={claude:{src:_t,invertOnDark:!1},codex:{src:vt,invertOnDark:!0}},xt=o({name:`CodingBridgeSessionView`,components:{ElInput:k,ElButton:v,ElPopover:T,ElDropdown:w,ElDropdownMenu:C,ElDropdownItem:S,ElUpload:y,ElCheckbox:b,FontAwesomeIcon:I,TranscriptItem:We,ThinkingIndicator:tt,DirectoryDialog:gt,AskUserQuestionCard:ne,CopyToClipboard:ee},mixins:[N],emits:[`history`],data(){return{prompt:``,cwd:``,model:``,customModelDraft:``,permissionMode:`default`,provider:`claude`,effort:``,directoryVisible:!1,slashMenuOpen:!1,slashActiveIndex:0,editingEventId:``,restoreCode:!1,attachmentFileList:[],uploadUrl:M()+`/api/v1/files/`,maxAttachments:Q}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},currentNodeId(){return this.$store.state.codingBridge?.currentNodeId},lastComposer(){let e=this.currentNodeId;return(e?this.$store.state.codingBridge?.lastComposer?.[e]:void 0)??{}},currentNode(){return this.$store.state.codingBridge?.nodes?.find(e=>e.node_id===this.currentNodeId)},nodeOnline(){return this.currentNode?.status===`online`},currentSessionId(){return this.$store.state.codingBridge?.currentSessionId},currentSession(){let e=this.currentSessionId;return e?this.$store.state.codingBridge?.sessions?.[e]:void 0},events(){let e=this.currentSessionId;return e?this.$store.state.codingBridge?.events?.[e]??[]:[]},pendingQuestion(){let e=this.currentSessionId;if(!e)return;let t=(this.$store.state.codingBridge?.permissions??[]).find(t=>t.session_id===e&&J(t));return t?{request_id:t.request_id,payload:ge(t)}:void 0},isNewSession(){return!this.currentSessionId},canPickCwd(){return this.isNewSession||!this.currentSession?.started},readonly(){return this.currentSession?.readonly===!0},resumeHint(){return!!this.currentSession?.provider&&!this.currentSession?.started&&!this.readonly},replayLabel(){return!this.currentSession?.provider||this.currentSession?.started?``:this.currentSession.provider===`codex`?this.$t(`codingBridge.history.codexLabel`):this.$t(`codingBridge.history.claudeLabel`)},running(){let e=this.currentSession?.status;return e===`running`||e===`starting`},thinking(){return this.running&&!this.pendingQuestion},connected(){return this.$store.state.codingBridge?.connection===`connected`},canRetry(){return this.currentSession?.status===`error`&&!this.readonly&&this.connected&&this.nodeOnline&&this.events.some(e=>e.kind===`prompt`)},attachments(){return(this.attachmentFileList||[]).map(e=>{let t=e.response?.file_url||(typeof e.url==`string`&&!e.url.startsWith(`blob:`)?e.url:``);if(!t)return;let n=e.raw,r=n?.type||e.mime_type||``;return{type:this.isImageAttachment(e)?`image`:`file`,url:t,name:e.name,mime_type:r,size:n?.size}}).filter(e=>!!e)},uploadingAttachments(){return(this.attachmentFileList||[]).some(e=>this.isAttachmentUploading(e))},canSend(){return(!!this.prompt.trim()||this.attachments.length>0)&&!this.uploadingAttachments&&this.connected&&this.nodeOnline&&this.currentProviderAvailable},composerHint(){return this.uploadingAttachments?this.$t(`codingBridge.session.uploadingAttachment`):this.providerCaps.length&&!this.currentProviderAvailable?this.$t(`codingBridge.session.providerUnavailableHint`,{name:this.providerName(this.provider)}):this.resumeHint?this.$t(`codingBridge.history.resumeHint`):this.$t(`codingBridge.session.enterHint`)},nodeCapabilities(){let e=this.currentNodeId;return e?this.$store.state.codingBridge?.capabilities?.[e]:void 0},providerCaps(){return this.nodeCapabilities?.providers??[]},currentProviderCap(){return this.providerCaps.find(e=>e.name===this.provider)},canEdit(){return this.readonly?!1:!!this.providerCaps.find(e=>e.name===this.activeProviderName)?.supports_edit},canRestoreCode(){return!!this.providerCaps.find(e=>e.name===this.activeProviderName)?.supports_code_restore},editingActive(){return!!this.editingEventId},currentProviderAvailable(){return this.providerCaps.length?this.currentProviderCap?.available!==!1:!0},providerOptions(){return this.providerCaps.length?this.providerCaps.map(e=>({value:e.name,label:e.label,available:e.available!==!1})):[{label:this.$t(`codingBridge.session.providerClaude`),value:`claude`,available:!0},{label:this.$t(`codingBridge.session.providerCodex`),value:`codex`,available:!0}]},modelOptions(){return this.currentProviderCap?.models??[]},allowCustomModel(){return this.currentProviderCap?.allow_custom_model??!0},effortOptions(){let e=this.currentProviderCap?.efforts;return(e&&e.length?e:[``]).map(e=>({value:e,label:this.effortLabel(e)}))},permissionModeOptions(){let e=this.currentProviderCap?.permission_modes;return(e&&e.length?e:[`default`,`acceptEdits`,`plan`,`bypassPermissions`]).map(e=>({value:e,label:this.permissionModeLabel(e)}))},sessionMeta(){let e=this.currentSession;if(!e)return``;let t=[];return e.provider&&t.push(this.providerName(e.provider)),e.cwd&&t.push(e.cwd),e.model&&t.push(e.model),t.join(` · `)},activeProviderName(){return this.currentSession?.provider||this.provider},slashCommands(){let e=this.activeProviderName;return this.providerCaps.find(t=>t.name===e)?.commands??[]},slashMatches(){let e=this.prompt.match(/^\/(\S*)$/);if(!e)return[];let t=e[1].toLowerCase();return this.slashCommands.filter(e=>[e.name,...e.aliases??[]].some(e=>e.toLowerCase().startsWith(t)))},slashMenuVisible(){return this.slashMenuOpen&&this.slashMatches.length>0},diagnostics(){let e=[];return this.currentNodeId&&e.push({label:this.$t(`codingBridge.session.nodeId`),value:this.currentNodeId}),this.currentSessionId&&e.push({label:this.$t(`codingBridge.session.sessionId`),value:this.currentSessionId}),this.currentSession?.trace_id&&e.push({label:this.$t(`codingBridge.session.traceId`),value:this.currentSession.trace_id}),e}},watch:{events(){this.scrollToBottom()},pendingQuestion(){this.scrollToBottom()},thinking(){this.scrollToBottom()},currentSessionId(){this.scrollToBottom(),this.editingEventId=``,this.restoreCode=!1,this.syncSessionSettings()},currentNodeId(){this.requestCapabilities(),this.isNewSession&&this.restoreComposerPrefs()},providerCaps(){if(!this.isNewSession||!this.providerCaps.length)return;let e=this.providerCaps.find(e=>e.name===this.provider);if(!e||e.available===!1){let e=this.providerCaps.find(e=>e.available!==!1);e&&(this.provider=e.name)}},provider(){this.isNewSession&&(this.model=``,this.effort=``)},prompt(e){this.slashMenuOpen=/^\/\S*$/.test(e),this.slashActiveIndex>=this.slashMatches.length&&(this.slashActiveIndex=0)}},mounted(){this.requestCapabilities(),this.syncSessionSettings()},methods:{requestCapabilities(){this.currentNodeId&&this.$store.dispatch(`codingBridge/getCapabilities`,this.currentNodeId)},effortLabel(e){let t={"":`codingBridge.session.effortDefault`,low:`codingBridge.session.effortLow`,medium:`codingBridge.session.effortMedium`,high:`codingBridge.session.effortHigh`,max:`codingBridge.session.effortMax`}[e];return t?this.$t(t):e},permissionModeLabel(e){let t={default:`codingBridge.session.permissionModeDefault`,acceptEdits:`codingBridge.session.permissionModeAcceptEdits`,plan:`codingBridge.session.permissionModePlan`,bypassPermissions:`codingBridge.session.permissionModeBypass`}[e];return t?this.$t(t):e},providerName(e){let t=this.providerCaps.find(t=>t.name===e);return t?t.label:e===`codex`?this.$t(`codingBridge.session.providerCodex`):this.$t(`codingBridge.session.providerClaude`)},providerIcon(e){return bt[e]??null},syncSessionSettings(){let e=this.currentSession;if(!e){this.restoreComposerPrefs();return}let t=this.lastComposer;e.provider&&(this.provider=e.provider),this.model=e.model??``,this.customModelDraft=``,this.cwd=e.cwd??t.cwd??``,this.effort=e.effort??t.effort??``,this.permissionMode=e.permission_mode??t.permissionMode??`default`},selectModel(e){this.model=e,this.customModelDraft=``,this.closeModelPopover()},applyCustomModel(){let e=this.customModelDraft.trim();e&&(this.model=e,this.customModelDraft=``,this.closeModelPopover())},closeModelPopover(){this.$refs.modelPopover?.hide?.()},onComposerEnter(e){let t=e;t.isComposing||t.keyCode===229||t.shiftKey||t.ctrlKey||t.metaKey||t.altKey||(t.preventDefault(),this.onSend())},onComposerKeydown(e){let t=e;if(this.slashMenuVisible&&!t.isComposing&&t.keyCode!==229){if(t.key===`ArrowDown`){t.preventDefault(),this.moveSlash(1);return}if(t.key===`ArrowUp`){t.preventDefault(),this.moveSlash(-1);return}if(t.key===`Escape`){t.preventDefault(),this.slashMenuOpen=!1;return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey){t.preventDefault(),this.applySlash(this.slashMatches[this.slashActiveIndex]);return}}t.key===`Enter`&&this.onComposerEnter(t)},moveSlash(e){let t=this.slashMatches.length;t&&(this.slashActiveIndex=(this.slashActiveIndex+e+t)%t,this.$nextTick(()=>{(this.$el?.querySelector?.(`.cb-slash-menu__item--active`))?.scrollIntoView({block:`nearest`})}))},applySlash(e){e&&(this.prompt=`/${e.name} `,this.slashMenuOpen=!1,this.slashActiveIndex=0)},onSend(){if(!this.canSend)return;let e=this.attachments;if(this.editingEventId){this.$store.dispatch(`codingBridge/editPrompt`,{eventId:this.editingEventId,prompt:this.prompt,model:this.model,permissionMode:this.permissionMode,effort:this.effort,attachments:e.length?e:void 0,restoreCode:this.restoreCode}),this.resetComposer();return}this.currentNodeId&&this.$store.commit(`codingBridge/setLastComposer`,{node_id:this.currentNodeId,prefs:{cwd:this.cwd,provider:this.provider,model:this.model,permissionMode:this.permissionMode,effort:this.effort}}),this.$store.dispatch(`codingBridge/sendPrompt`,{prompt:this.prompt,cwd:this.cwd,model:this.model,permissionMode:this.permissionMode,provider:this.provider,effort:this.effort,attachments:e.length?e:void 0}),this.resetComposer()},resetComposer(){this.prompt=``,this.slashMenuOpen=!1,this.slashActiveIndex=0,this.editingEventId=``,this.restoreCode=!1,this.clearAttachments()},cancelEdit(){this.resetComposer()},onAnswerQuestion(e){this.$store.dispatch(`codingBridge/answerQuestion`,{request_id:e.tool_use_id,output:e.output})},onSkipQuestion(e){this.$store.dispatch(`codingBridge/resolvePermission`,{request_id:e.tool_use_id,decision:`deny`})},beforeAttachmentUpload(e){return this.attachmentFileList.length>=Q?(P.warning(this.$t(`codingBridge.session.attachmentLimit`,{count:Q})),!1):e.size>yt?(P.warning(this.$t(`codingBridge.session.attachmentTooLarge`)),!1):!0},onAttachmentChange(e){if(!e.url&&e.raw&&this.isImageAttachment(e))try{e.url=URL.createObjectURL(e.raw)}catch{}},onAttachmentSuccess(e,t){e?.file_url&&(this.revokeBlobUrl(t),t.url=e.file_url,t.response=e)},onAttachmentError(){P.error(this.$t(`codingBridge.session.attachmentUploadError`))},onAttachmentExceed(){P.warning(this.$t(`codingBridge.session.attachmentLimit`,{count:Q}))},onTriggerAttachmentUpload(){this.$nextTick(()=>{let e=this.$refs.uploader?.$el;(e?.querySelector(`input.el-upload__input`)||e?.querySelector(`input[type="file"]`))?.click()})},isAttachmentUploading(e){return e.status===`ready`||e.status===`uploading`},isImageAttachment(e){return(e.raw?.type||``).startsWith(`image/`)?!0:/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(e.name||e.url||``)},attachmentPreviewUrl(e){return this.isImageAttachment(e)&&(e.url||e.response?.file_url)||``},removeAttachment(e,t){this.revokeBlobUrl(t),this.attachmentFileList.splice(e,1)},clearAttachments(){for(let e of this.attachmentFileList)this.revokeBlobUrl(e);this.attachmentFileList=[]},revokeBlobUrl(e){if(e.url?.startsWith(`blob:`))try{URL.revokeObjectURL(e.url)}catch{}},onInterrupt(){this.$store.dispatch(`codingBridge/interruptSession`)},onRetry(){this.$store.dispatch(`codingBridge/retryLastPrompt`)},onEditPrompt(e){this.canEdit&&(this.editingEventId=e.id,this.restoreCode=!1,this.prompt=e.text??``,this.slashMenuOpen=!1,this.slashActiveIndex=0,this.clearAttachments(),this.attachmentFileList=(e.attachments??[]).map((e,t)=>({name:e.name||e.url,url:e.url,status:`success`,percentage:100,uid:Date.now()+t,response:{file_url:e.url},mime_type:e.mime_type})),this.$nextTick(()=>{(this.$el?.querySelector?.(`.cb-composer__input textarea`))?.focus()}))},openDirectory(){this.directoryVisible=!0},onDirectorySelect(e){this.cwd=e},onNewSession(){this.$store.dispatch(`codingBridge/newSession`),this.restoreComposerPrefs(),this.resetComposer()},restoreComposerPrefs(){let e=this.lastComposer;this.cwd=e.cwd??``,this.provider=e.provider??`claude`,this.permissionMode=e.permissionMode??`default`,this.customModelDraft=``,this.$nextTick(()=>{this.model=e.model??``,this.effort=e.effort??``})},scrollToBottom(){this.$nextTick(()=>{let e=this.$refs.transcript;e&&(e.scrollTop=e.scrollHeight)})}}}),St={class:`session-view flex flex-col h-full bg-[var(--app-content-bg)]`},Ct={key:0,class:`flex-1 flex flex-col items-center justify-center text-center p-8 text-[var(--app-text-subtle)]`},wt={class:`text-sm`},Tt={class:`flex items-center justify-between gap-3 px-5 py-3 border-b border-[var(--app-border-subtle)]`},Et={class:`min-w-0`},Dt={class:`flex items-center gap-2 font-medium`},Ot={class:`truncate`},kt={key:0,class:`text-xs text-[var(--app-text-subtle)] truncate`},At={key:0,class:`text-[var(--el-color-primary)]`},jt={class:`flex items-center gap-2 flex-none`},Mt={key:0,class:`px-5 py-2 text-xs bg-[var(--el-color-warning-light-9)] text-[var(--el-color-warning)] border-b border-[var(--app-border-subtle)]`},Nt={key:1,class:`flex flex-wrap items-center gap-x-4 gap-y-1 px-5 py-1.5 text-[11px] text-[var(--app-text-subtle)] border-b border-[var(--app-border-subtle)]`},Pt={class:`opacity-70 flex-none`},Ft=[`title`],It={ref:`transcript`,class:`flex-1 min-h-0 overflow-y-auto px-5 py-4 flex flex-col gap-3`},Lt={key:0,class:`m-auto text-center text-sm text-[var(--app-text-subtle)]`},Rt={key:2,class:`flex justify-center pt-1`},zt={key:2,class:`cb-question-dock flex-none px-5`},Bt={class:`border-t border-[var(--app-border-subtle)] p-3`},Vt={key:0,class:`flex items-center gap-2 text-xs text-[var(--app-text-subtle)] px-1 py-2`},Ht={key:0,class:`mb-2 flex flex-wrap items-center gap-x-3 gap-y-1.5 rounded-lg bg-[var(--el-color-primary-light-9)] px-3 py-2 text-xs text-[var(--app-text)]`},Ut={class:`inline-flex items-center gap-1.5`},Wt={class:`cb-composer rounded-2xl border border-[var(--app-border-subtle)] bg-[var(--app-content-bg)] px-3 py-2.5 transition-colors focus-within:border-[var(--el-color-primary-light-5)]`},Gt={key:0,class:`flex flex-wrap gap-2 pb-2`},Kt=[`src`,`alt`],qt={key:1,class:`flex h-8 w-8 items-center justify-center rounded bg-[var(--app-content-bg)]`},Jt=[`title`],Yt={key:2,class:`text-[10px] text-[var(--app-text-subtle)]`},Xt=[`title`,`onClick`],Zt={key:1,class:`cb-slash-menu`},Qt=[`onMousedown`,`onMouseenter`],$t={class:`cb-slash-menu__name`},en={key:0,class:`cb-slash-menu__hint`},tn={key:1,class:`cb-slash-menu__desc`},nn={ref:`attachmentUploadTrigger`,class:`block h-0 w-0`,"aria-hidden":`true`},rn={class:`mt-1.5 flex items-center gap-1.5`},an=[`title`],on={class:`flex min-w-0 flex-1 flex-wrap items-center gap-1.5`},sn={type:`button`,class:`cb-pill`},cn=[`src`],ln={class:`truncate`},un=[`src`],dn={key:1,class:`ml-1 text-xs opacity-60`},fn={key:1,class:`cb-pill cb-pill--static`},pn=[`src`],mn={class:`truncate`},hn={type:`button`,class:`cb-pill`},gn={class:`truncate`},_n={class:`cb-model-menu`},vn={class:`truncate`},yn=[`onClick`],bn={class:`truncate`},xn={key:0,class:`cb-model-custom`},Sn={type:`button`,class:`cb-pill`},Cn={class:`truncate`},wn={type:`button`,class:`cb-pill`},Tn={class:`truncate`},En={type:`button`,class:`cb-pill`},Dn={class:`truncate`},On=[`title`,`aria-label`],kn={key:4,class:`cb-pill cb-pill--static`},An={class:`truncate`},jn={class:`text-[11px] text-[var(--app-text-subtle)] mt-1 px-1`};function Mn(o,p,m,v,y,b){let x=u(`font-awesome-icon`),S=u(`el-button`),C=u(`copy-to-clipboard`),w=u(`transcript-item`),T=u(`thinking-indicator`),E=u(`ask-user-question-card`),D=u(`el-checkbox`),O=u(`el-input`),k=u(`el-upload`),A=u(`el-dropdown-item`),j=u(`el-dropdown-menu`),M=u(`el-dropdown`),N=u(`el-popover`),P=u(`directory-dialog`);return l(),d(`div`,St,[o.currentNode?(l(),d(g,{key:1},[n(`div`,Tt,[n(`div`,Et,[n(`div`,Dt,[n(`span`,Ot,c(o.currentNode.name),1),n(`span`,{class:e([`inline-block w-2 h-2 rounded-full flex-none`,o.nodeOnline?`bg-[var(--el-color-success)]`:`bg-[var(--app-text-subtle)]`])},null,2)]),o.currentSession?(l(),d(`div`,kt,[n(`span`,null,c(o.sessionMeta),1),o.replayLabel?(l(),d(`span`,At,` · `+c(o.replayLabel),1)):a(``,!0)])):a(``,!0)]),n(`div`,jt,[i(S,{size:`small`,round:``,onClick:p[0]||=e=>o.$emit(`history`)},{default:f(()=>[i(x,{icon:`fa-solid fa-clock-rotate-left`,class:`mr-1`}),r(` `+c(o.$t(`codingBridge.history.button`)),1)]),_:1}),o.currentSessionId?(l(),t(S,{key:0,size:`small`,round:``,onClick:o.onNewSession},{default:f(()=>[i(x,{icon:`fa-solid fa-plus`,class:`mr-1`}),r(` `+c(o.$t(`codingBridge.session.newSession`)),1)]),_:1},8,[`onClick`])):a(``,!0)])]),o.nodeOnline?a(``,!0):(l(),d(`div`,Mt,c(o.$t(`codingBridge.session.deviceOffline`)),1)),o.diagnostics.length?(l(),d(`div`,Nt,[(l(!0),d(g,null,s(o.diagnostics,e=>(l(),d(`span`,{key:e.label,class:`inline-flex items-center gap-1 min-w-0`},[n(`span`,Pt,c(e.label)+`:`,1),n(`span`,{class:`font-mono break-all`,title:e.value},c(e.value),9,Ft),i(C,{content:e.value,class:`inline-block flex-none`},null,8,[`content`])]))),128))])):a(``,!0),n(`div`,It,[o.events.length?a(``,!0):(l(),d(`div`,Lt,c(o.$t(`codingBridge.session.startHint`)),1)),(l(!0),d(g,null,s(o.events,e=>(l(),t(w,{key:e.id,event:e,editable:o.canEdit,onEdit:o.onEditPrompt},null,8,[`event`,`editable`,`onEdit`]))),128)),o.thinking?(l(),t(T,{key:1})):a(``,!0),o.canRetry?(l(),d(`div`,Rt,[i(S,{size:`small`,round:``,onClick:o.onRetry},{default:f(()=>[i(x,{icon:`fa-solid fa-rotate-right`,class:`mr-1`}),r(` `+c(o.$t(`codingBridge.session.retry`)),1)]),_:1},8,[`onClick`])])):a(``,!0)],512),o.pendingQuestion?(l(),d(`div`,zt,[(l(),t(E,{key:o.pendingQuestion.request_id,"tool-use-id":o.pendingQuestion.request_id,payload:o.pendingQuestion.payload,onSubmit:o.onAnswerQuestion,onSkip:o.onSkipQuestion},null,8,[`tool-use-id`,`payload`,`onSubmit`,`onSkip`]))])):a(``,!0),n(`div`,Bt,[o.readonly?(l(),d(`div`,Vt,[i(x,{icon:`fa-solid fa-eye`}),n(`span`,null,c(o.$t(`codingBridge.history.readonly`)),1),i(S,{class:`ml-auto`,size:`small`,round:``,onClick:o.onNewSession},{default:f(()=>[r(c(o.$t(`codingBridge.session.newSession`)),1)]),_:1},8,[`onClick`])])):(l(),d(g,{key:1},[o.editingActive?(l(),d(`div`,Ht,[n(`span`,Ut,[i(x,{icon:`fa-solid fa-pen`,class:`text-[var(--el-color-primary)]`}),r(` `+c(o.$t(`codingBridge.session.editingBanner`)),1)]),o.canRestoreCode?(l(),t(D,{key:0,modelValue:o.restoreCode,"onUpdate:modelValue":p[1]||=e=>o.restoreCode=e,size:`small`,class:`cb-restore-code`},{default:f(()=>[r(c(o.$t(`codingBridge.session.editRestoreCode`)),1)]),_:1},8,[`modelValue`])):a(``,!0),n(`button`,{type:`button`,class:`ml-auto cb-edit-cancel`,onClick:p[2]||=(...e)=>o.cancelEdit&&o.cancelEdit(...e)},c(o.$t(`codingBridge.session.editCancel`)),1)])):a(``,!0),n(`div`,Wt,[o.attachmentFileList.length?(l(),d(`div`,Gt,[(l(!0),d(g,null,s(o.attachmentFileList,(e,t)=>(l(),d(`div`,{key:e.uid||e.name||t,class:`group relative flex max-w-[220px] items-center gap-2 rounded-md border border-[var(--app-border-subtle)] bg-[var(--app-sidebar-bg)] px-2 py-1.5 text-xs`},[o.attachmentPreviewUrl(e)?(l(),d(`img`,{key:0,src:o.attachmentPreviewUrl(e),class:`h-8 w-8 rounded object-cover`,alt:o.$t(`codingBridge.session.attachmentImageAlt`)},null,8,Kt)):(l(),d(`span`,qt,[i(x,{icon:`fa-solid fa-file`})])),n(`span`,{class:`min-w-0 flex-1 truncate`,title:e.name},c(e.name),9,Jt),o.isAttachmentUploading(e)?(l(),d(`span`,Yt,c(Math.round(e.percentage||0))+`% `,1)):a(``,!0),n(`button`,{type:`button`,class:`flex h-5 w-5 items-center justify-center rounded-full text-[var(--app-text-subtle)] hover:bg-[var(--app-content-hover-bg)] hover:text-[var(--el-color-danger)]`,title:o.$t(`codingBridge.session.removeAttachment`),onClick:n=>o.removeAttachment(t,e)},[i(x,{icon:`fa-solid fa-xmark`})],8,Xt)]))),128))])):a(``,!0),o.slashMenuVisible?(l(),d(`ul`,Zt,[(l(!0),d(g,null,s(o.slashMatches,(t,r)=>(l(),d(`li`,{key:t.name,class:e([`cb-slash-menu__item`,{"cb-slash-menu__item--active":r===o.slashActiveIndex}]),onMousedown:_(e=>o.applySlash(t),[`prevent`]),onMouseenter:e=>o.slashActiveIndex=r},[n(`span`,$t,`/`+c(t.name),1),t.argument_hint?(l(),d(`span`,en,c(t.argument_hint),1)):a(``,!0),t.description?(l(),d(`span`,tn,c(t.description),1)):a(``,!0)],42,Qt))),128))])):a(``,!0),i(O,{modelValue:o.prompt,"onUpdate:modelValue":p[3]||=e=>o.prompt=e,type:`textarea`,autosize:{minRows:2,maxRows:12},resize:`none`,class:`cb-composer__input`,placeholder:o.$t(`codingBridge.session.promptPlaceholder`),onKeydown:o.onComposerKeydown},null,8,[`modelValue`,`placeholder`,`onKeydown`]),i(k,{ref:`uploader`,"file-list":o.attachmentFileList,"onUpdate:fileList":p[4]||=e=>o.attachmentFileList=e,class:`h-0 w-0 overflow-hidden opacity-0`,name:`file`,action:o.uploadUrl,headers:o.headers,multiple:!0,limit:o.maxAttachments,"show-file-list":!1,"before-upload":o.beforeAttachmentUpload,"on-change":o.onAttachmentChange,"on-success":o.onAttachmentSuccess,"on-error":o.onAttachmentError,"on-exceed":o.onAttachmentExceed},{default:f(()=>[n(`span`,nn,null,512)]),_:1},8,[`file-list`,`action`,`headers`,`limit`,`before-upload`,`on-change`,`on-success`,`on-error`,`on-exceed`]),n(`div`,rn,[n(`button`,{type:`button`,class:`cb-icon-btn`,title:o.$t(`codingBridge.session.attachFile`),onClick:p[5]||=(...e)=>o.onTriggerAttachmentUpload&&o.onTriggerAttachmentUpload(...e)},[i(x,{icon:`fa-solid fa-paperclip`})],8,an),n(`div`,on,[o.isNewSession?(l(),t(M,{key:0,trigger:`click`,onCommand:p[6]||=e=>o.provider=e},{dropdown:f(()=>[i(j,null,{default:f(()=>[(l(!0),d(g,null,s(o.providerOptions,n=>(l(),t(A,{key:n.value,command:n.value,disabled:!n.available},{default:f(()=>[i(x,{icon:`fa-solid fa-check`,class:e([`mr-2`,n.value===o.provider?`opacity-100`:`opacity-0`])},null,8,[`class`]),o.providerIcon(n.value)?(l(),d(`img`,{key:0,src:o.providerIcon(n.value).src,class:e([`cb-pill__brand mr-1.5`,{"cb-pill__brand--invert":o.providerIcon(n.value).invertOnDark}]),alt:``},null,10,un)):a(``,!0),r(` `+c(n.label)+` `,1),n.available?a(``,!0):(l(),d(`span`,dn,c(o.$t(`codingBridge.session.providerUnavailable`)),1))]),_:2},1032,[`command`,`disabled`]))),128))]),_:1})]),default:f(()=>[n(`button`,sn,[o.providerIcon(o.provider)?(l(),d(`img`,{key:0,src:o.providerIcon(o.provider).src,class:e([`cb-pill__brand`,{"cb-pill__brand--invert":o.providerIcon(o.provider).invertOnDark}]),alt:``},null,10,cn)):(l(),t(x,{key:1,icon:`fa-solid fa-code`,class:`cb-pill__icon`})),n(`span`,ln,c(o.providerName(o.provider)),1),i(x,{icon:`fa-solid fa-chevron-down`,class:`cb-pill__caret`})])]),_:1})):(l(),d(`span`,fn,[o.providerIcon(o.currentSession?.provider||`claude`)?(l(),d(`img`,{key:0,src:o.providerIcon(o.currentSession?.provider||`claude`).src,class:e([`cb-pill__brand`,{"cb-pill__brand--invert":o.providerIcon(o.currentSession?.provider||`claude`).invertOnDark}]),alt:``},null,10,pn)):(l(),t(x,{key:1,icon:`fa-solid fa-code`,class:`cb-pill__icon`})),n(`span`,mn,c(o.providerName(o.currentSession?.provider||`claude`)),1)])),i(N,{ref:`modelPopover`,trigger:`click`,placement:`top-start`,width:260},{reference:f(()=>[n(`button`,hn,[i(x,{icon:`fa-solid fa-brain`,class:`cb-pill__icon`}),n(`span`,gn,c(o.model||o.$t(`codingBridge.session.modelDefault`)),1),i(x,{icon:`fa-solid fa-chevron-down`,class:`cb-pill__caret`})])]),default:f(()=>[n(`div`,_n,[n(`button`,{type:`button`,class:`cb-model-option`,onClick:p[7]||=e=>o.selectModel(``)},[i(x,{icon:`fa-solid fa-check`,class:e([`cb-model-option__check`,o.model?`opacity-0`:`opacity-100`])},null,8,[`class`]),n(`span`,vn,c(o.$t(`codingBridge.session.modelDefault`)),1)]),(l(!0),d(g,null,s(o.modelOptions,t=>(l(),d(`button`,{key:t.value,type:`button`,class:`cb-model-option`,onClick:e=>o.selectModel(t.value)},[i(x,{icon:`fa-solid fa-check`,class:e([`cb-model-option__check`,t.value===o.model?`opacity-100`:`opacity-0`])},null,8,[`class`]),n(`span`,bn,c(t.label),1)],8,yn))),128)),o.allowCustomModel?(l(),d(`div`,xn,[i(O,{modelValue:o.customModelDraft,"onUpdate:modelValue":p[8]||=e=>o.customModelDraft=e,size:`small`,placeholder:o.$t(`codingBridge.session.modelPlaceholder`),onKeyup:h(o.applyCustomModel,[`enter`])},{append:f(()=>[i(S,{disabled:!o.customModelDraft.trim(),onClick:o.applyCustomModel},{default:f(()=>[i(x,{icon:`fa-solid fa-check`})]),_:1},8,[`disabled`,`onClick`])]),_:1},8,[`modelValue`,`placeholder`,`onKeyup`])])):a(``,!0)])]),_:1},512),o.effortOptions.length>1?(l(),t(M,{key:2,trigger:`click`,onCommand:p[9]||=e=>o.effort=e},{dropdown:f(()=>[i(j,null,{default:f(()=>[(l(!0),d(g,null,s(o.effortOptions,n=>(l(),t(A,{key:n.value,command:n.value},{default:f(()=>[i(x,{icon:`fa-solid fa-check`,class:e([`mr-2`,n.value===o.effort?`opacity-100`:`opacity-0`])},null,8,[`class`]),r(` `+c(n.label),1)]),_:2},1032,[`command`]))),128))]),_:1})]),default:f(()=>[n(`button`,Sn,[i(x,{icon:`fa-solid fa-gauge-high`,class:`cb-pill__icon`}),n(`span`,Cn,c(o.effortLabel(o.effort)),1),i(x,{icon:`fa-solid fa-chevron-down`,class:`cb-pill__caret`})])]),_:1})):a(``,!0),i(M,{trigger:`click`,onCommand:p[10]||=e=>o.permissionMode=e},{dropdown:f(()=>[i(j,null,{default:f(()=>[(l(!0),d(g,null,s(o.permissionModeOptions,n=>(l(),t(A,{key:n.value,command:n.value},{default:f(()=>[i(x,{icon:`fa-solid fa-check`,class:e([`mr-2`,n.value===o.permissionMode?`opacity-100`:`opacity-0`])},null,8,[`class`]),r(` `+c(n.label),1)]),_:2},1032,[`command`]))),128))]),_:1})]),default:f(()=>[n(`button`,wn,[i(x,{icon:`fa-solid fa-shield-halved`,class:`cb-pill__icon`}),n(`span`,Tn,c(o.permissionModeLabel(o.permissionMode)),1),i(x,{icon:`fa-solid fa-chevron-down`,class:`cb-pill__caret`})])]),_:1}),o.canPickCwd?(l(),t(N,{key:3,trigger:`click`,placement:`top-start`,width:320},{reference:f(()=>[n(`button`,En,[i(x,{icon:`fa-solid fa-folder-open`,class:`cb-pill__icon`}),n(`span`,Dn,c(o.cwd||o.$t(`codingBridge.session.cwdDefault`)),1),i(x,{icon:`fa-solid fa-chevron-down`,class:`cb-pill__caret`})])]),default:f(()=>[i(O,{modelValue:o.cwd,"onUpdate:modelValue":p[14]||=e=>o.cwd=e,size:`small`,clearable:``,class:`cb-cwd-input`,placeholder:o.$t(`codingBridge.session.cwdPlaceholder`)},{suffix:f(()=>[n(`span`,{class:`cb-cwd-browse`,role:`button`,tabindex:`0`,title:o.$t(`codingBridge.directory.title`),"aria-label":o.$t(`codingBridge.directory.title`),onClick:p[11]||=(...e)=>o.openDirectory&&o.openDirectory(...e),onKeydown:[p[12]||=h(_((...e)=>o.openDirectory&&o.openDirectory(...e),[`prevent`]),[`enter`]),p[13]||=h(_((...e)=>o.openDirectory&&o.openDirectory(...e),[`prevent`]),[`space`])]},[i(x,{icon:`fa-solid fa-folder-open`})],40,On)]),_:1},8,[`modelValue`,`placeholder`])]),_:1})):o.currentSession?.cwd?(l(),d(`span`,kn,[i(x,{icon:`fa-solid fa-folder-open`,class:`cb-pill__icon`}),n(`span`,An,c(o.currentSession?.cwd),1)])):a(``,!0)]),o.running?(l(),t(S,{key:0,circle:``,onClick:o.onInterrupt},{default:f(()=>[i(x,{icon:`fa-solid fa-stop`})]),_:1},8,[`onClick`])):a(``,!0),i(S,{type:`primary`,round:``,disabled:!o.canSend,onClick:o.onSend},{default:f(()=>[r(c(o.editingActive?o.$t(`codingBridge.session.editSubmit`):o.$t(`codingBridge.session.send`)),1)]),_:1},8,[`disabled`,`onClick`])])]),n(`p`,jn,c(o.composerHint),1)],64))])],64)):(l(),d(`div`,Ct,[i(x,{icon:`fa-solid fa-laptop-code`,class:`text-4xl mb-3`}),n(`p`,wt,c(o.$t(`codingBridge.session.noDevice`)),1)])),i(P,{visible:o.directoryVisible,"onUpdate:visible":p[15]||=e=>o.directoryVisible=e,"initial-path":o.cwd,onSelect:o.onDirectorySelect},null,8,[`visible`,`initial-path`,`onSelect`])])}var Nn=D(xt,[[`render`,Mn],[`__scopeId`,`data-v-aa5e6831`]]),Pn=o({name:`CodingBridgePairDialog`,components:{ElDialog:A,ElInput:k,ElButton:v,FontAwesomeIcon:I},props:{visible:{type:Boolean,default:!1},initialCode:{type:String,default:``}},emits:[`update:visible`],data(){return{code:``}},computed:{claiming(){return this.$store.state.codingBridge?.status?.claimPair===F.Request}},watch:{visible(e){e&&this.initialCode&&(this.code=this.initialCode)},initialCode(e){e&&(this.code=e)}},methods:{async onClaim(){let e=this.code.trim();if(e)try{let t=await this.$store.dispatch(`codingBridge/claimPair`,e);P.success(this.$t(`codingBridge.pair.success`,{name:t})),this.code=``,this.$emit(`update:visible`,!1)}catch(e){let t=e?.response?.status;t===404?P.error(this.$t(`codingBridge.pair.invalidCode`)):t===409?P.error(this.$t(`codingBridge.pair.usedCode`)):P.error(this.$t(`codingBridge.pair.failed`))}}}}),Fn={class:`content`},In={class:`text-sm text-[var(--app-text-subtle)] mb-4`},Ln={class:`steps list-none m-0 p-0 mb-4`},Rn={class:`flex gap-3 mb-3`},zn={class:`flex-1 min-w-0`},Bn={class:`text-sm mb-1`},Vn={class:`flex gap-3 mb-3`},Hn={class:`flex-1 min-w-0`},Un={class:`text-sm mb-1`},Wn={class:`flex gap-3`},Gn={class:`flex-1 min-w-0`},Kn={class:`text-sm`};function qn(e,a,o,s,d,p){let m=u(`el-input`),g=u(`font-awesome-icon`),_=u(`el-button`),v=u(`el-dialog`);return l(),t(v,{"model-value":e.visible,width:`520px`,title:e.$t(`codingBridge.pair.title`),center:``,"onUpdate:modelValue":a[1]||=t=>e.$emit(`update:visible`,t)},{default:f(()=>[n(`div`,Fn,[n(`p`,In,c(e.$t(`codingBridge.pair.intro`)),1),n(`ol`,Ln,[n(`li`,Rn,[a[3]||=n(`span`,{class:`step-index`},`1`,-1),n(`div`,zn,[n(`p`,Bn,c(e.$t(`codingBridge.pair.step1`)),1),a[2]||=n(`code`,{class:`cmd`},`pip install coding-bridge-agent`,-1)])]),n(`li`,Vn,[a[5]||=n(`span`,{class:`step-index`},`2`,-1),n(`div`,Hn,[n(`p`,Un,c(e.$t(`codingBridge.pair.step2`)),1),a[4]||=n(`code`,{class:`cmd`},`coding-bridge-agent up`,-1)])]),n(`li`,Wn,[a[6]||=n(`span`,{class:`step-index`},`3`,-1),n(`div`,Gn,[n(`p`,Kn,c(e.$t(`codingBridge.pair.step3`)),1)])])]),i(m,{modelValue:e.code,"onUpdate:modelValue":a[0]||=t=>e.code=t,size:`large`,class:`mb-3`,placeholder:e.$t(`codingBridge.pair.codePlaceholder`),clearable:``,onKeyup:h(e.onClaim,[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeyup`]),i(_,{type:`primary`,round:``,class:`w-full`,loading:e.claiming,disabled:!e.code.trim(),onClick:e.onClaim},{default:f(()=>[i(g,{icon:`fa-solid fa-link`,class:`mr-1`}),r(` `+c(e.$t(`codingBridge.pair.claim`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])])]),_:1},8,[`model-value`,`title`])}var Jn=D(Pn,[[`render`,qn],[`__scopeId`,`data-v-3d1ed01f`]]),Yn=o({name:`CodingBridgePermissionDialog`,components:{ElDialog:A,ElButton:v,FontAwesomeIcon:I},computed:{request(){return(this.$store.state.codingBridge?.permissions??[]).find(e=>!J(e))},hasInput(){return!!this.request?.input&&Object.keys(this.request.input).length>0},inputText(){try{return JSON.stringify(this.request?.input,null,2)}catch{return String(this.request?.input??``)}}},methods:{onAllow(){this.request&&this.$store.dispatch(`codingBridge/resolvePermission`,{request_id:this.request.request_id,decision:`allow`})},onDeny(){this.request&&this.$store.dispatch(`codingBridge/resolvePermission`,{request_id:this.request.request_id,decision:`deny`})}}}),Xn={key:0,class:`content`},Zn={class:`text-sm text-[var(--app-text-subtle)] mb-3`},Qn={class:`rounded-md border border-[var(--app-border-subtle)] p-3 mb-3`},$n={class:`flex items-center gap-2 font-medium`},er={key:0,class:`text-xs text-[var(--app-text-subtle)] mt-1`},tr={key:1,class:`mt-2 text-xs overflow-x-auto whitespace-pre-wrap break-words text-[var(--app-text-subtle)] max-h-[200px]`},nr={class:`flex justify-end gap-2`};function rr(e,o,s,p,m,h){let g=u(`font-awesome-icon`),_=u(`el-button`),v=u(`el-dialog`);return l(),t(v,{"model-value":!!e.request,width:`480px`,title:e.$t(`codingBridge.permission.title`),"close-on-click-modal":!1,"show-close":!1,center:``},{footer:f(()=>[n(`div`,nr,[i(_,{round:``,onClick:e.onDeny},{default:f(()=>[i(g,{icon:`fa-solid fa-xmark`,class:`mr-1`}),r(` `+c(e.$t(`codingBridge.permission.deny`)),1)]),_:1},8,[`onClick`]),i(_,{type:`primary`,round:``,onClick:e.onAllow},{default:f(()=>[i(g,{icon:`fa-solid fa-check`,class:`mr-1`}),r(` `+c(e.$t(`codingBridge.permission.allow`)),1)]),_:1},8,[`onClick`])])]),default:f(()=>[e.request?(l(),d(`div`,Xn,[n(`p`,Zn,c(e.$t(`codingBridge.permission.subtitle`)),1),n(`div`,Qn,[n(`div`,$n,[i(g,{icon:`fa-solid fa-code`}),n(`span`,null,c(e.request.display_name||e.request.title||e.request.tool),1)]),e.request.description?(l(),d(`p`,er,c(e.request.description),1)):a(``,!0),e.hasInput?(l(),d(`pre`,tr,c(e.inputText),1)):a(``,!0)])])):a(``,!0)]),_:1},8,[`model-value`,`title`])}var ir=D(Yn,[[`render`,rr]]),ar=o({name:`CodingBridgeHistoryDrawer`,components:{ElDrawer:x,ElButton:v,FontAwesomeIcon:I},props:{visible:{type:Boolean,default:!1}},emits:[`update:visible`],computed:{currentNodeId(){return this.$store.state.codingBridge?.currentNodeId},loading(){return this.$store.state.codingBridge?.status?.getHistory===F.Request},sessions(){let e=this.currentNodeId;return[...e?this.$store.state.codingBridge?.history?.[e]??[]:[]].sort((e,t)=>(t.updated_at??0)-(e.updated_at??0))}},watch:{visible(e){e&&this.currentNodeId&&this.$store.dispatch(`codingBridge/getHistory`,this.currentNodeId)}},methods:{refresh(){this.currentNodeId&&this.$store.dispatch(`codingBridge/getHistory`,this.currentNodeId)},open(e){this.currentNodeId&&(this.$store.dispatch(`codingBridge/getHistoryDetail`,{node_id:this.currentNodeId,provider:e.provider,session_id:e.session_id}),this.$emit(`update:visible`,!1))},formatTime(e){try{return new Date(e).toLocaleString()}catch{return``}}}}),or={class:`flex flex-col h-full`},sr={class:`flex items-center justify-between mb-3`},$={class:`text-xs text-[var(--app-text-subtle)] m-0`},cr={key:0,class:`m-auto text-sm text-[var(--app-text-subtle)]`},lr={key:1,class:`m-auto text-sm text-[var(--app-text-subtle)]`},ur={key:2,class:`m-auto text-sm text-[var(--app-text-subtle)] text-center`},dr={key:3,class:`list-none m-0 p-0 flex-1 overflow-y-auto flex flex-col gap-2`},fr=[`onClick`],pr={class:`flex items-center gap-2 mb-1`},mr={class:`text-sm font-medium truncate flex-1`},hr={class:`text-[11px] text-[var(--app-text-subtle)] truncate`},gr={key:0},_r={key:1},vr={class:`text-[11px] text-[var(--app-text-subtle)] mt-0.5`},yr={key:0},br={key:1};function xr(o,p,m,h,_,v){let y=u(`font-awesome-icon`),b=u(`el-button`),x=u(`el-drawer`);return l(),t(x,{"model-value":o.visible,direction:`rtl`,size:`380px`,title:o.$t(`codingBridge.history.title`),"onUpdate:modelValue":p[0]||=e=>o.$emit(`update:visible`,e)},{default:f(()=>[n(`div`,or,[n(`div`,sr,[n(`p`,$,c(o.$t(`codingBridge.history.intro`)),1),i(b,{size:`small`,round:``,loading:o.loading,onClick:o.refresh},{default:f(()=>[o.loading?a(``,!0):(l(),t(y,{key:0,icon:`fa-solid fa-rotate-right`,class:`mr-1`})),r(` `+c(o.$t(`codingBridge.history.refresh`)),1)]),_:1},8,[`loading`,`onClick`])]),o.currentNodeId?o.loading&&!o.sessions.length?(l(),d(`div`,lr,c(o.$t(`codingBridge.history.loading`)),1)):o.sessions.length?(l(),d(`ul`,dr,[(l(!0),d(g,null,s(o.sessions,t=>(l(),d(`li`,{key:t.provider+`:`+t.session_id,class:`item rounded-lg p-3 cursor-pointer border border-[var(--app-border-subtle)]`,onClick:e=>o.open(t)},[n(`div`,pr,[n(`span`,{class:e([`provider-tag`,t.provider])},c(t.provider===`codex`?`Codex`:`Claude`),3),n(`span`,mr,c(t.title),1)]),n(`div`,hr,[t.cwd?(l(),d(`span`,gr,c(t.cwd),1)):a(``,!0),t.git_branch?(l(),d(`span`,_r,` · `+c(t.git_branch),1)):a(``,!0)]),n(`div`,vr,[t.updated_at?(l(),d(`span`,yr,c(o.formatTime(t.updated_at)),1)):a(``,!0),t.message_count?(l(),d(`span`,br,` · `+c(o.$t(`codingBridge.history.messages`,{count:t.message_count})),1)):a(``,!0)])],8,fr))),128))])):(l(),d(`div`,ur,c(o.$t(`codingBridge.history.empty`)),1)):(l(),d(`div`,cr,c(o.$t(`codingBridge.session.noDevice`)),1))])]),_:1},8,[`model-value`,`title`])}var Sr=o({name:`CodingBridgeIndex`,components:{ElButton:v,ElDrawer:x,FontAwesomeIcon:I,NodeList:me,SessionView:Nn,PairDialog:Jn,PermissionDialog:ir,HistoryDrawer:D(ar,[[`render`,xr],[`__scopeId`,`data-v-3414881a`]])},data(){return{drawer:!1,pairVisible:!1,historyVisible:!1,initialCode:``}},mounted(){this.$store.dispatch(`codingBridge/connect`),this.$store.dispatch(`codingBridge/getNodes`);let e=this.$route.query.code;typeof e==`string`&&e&&(this.initialCode=e,this.pairVisible=!0),this.handleNotificationDeepLink()},beforeUnmount(){this.$store.dispatch(`codingBridge/disconnect`)},methods:{openPair(){this.initialCode=``,this.pairVisible=!0},openPairFromDrawer(){this.drawer=!1,this.openPair()},handleNotificationDeepLink(){let e=this.$route.query.node;typeof e==`string`&&e&&(this.$store.dispatch(`codingBridge/selectNode`,e),this.$store.dispatch(`codingBridge/requestPendingPermissions`,e))}}}),Cr={class:`coding-bridge flex flex-row h-full relative`};function wr(e,t,n,r,a,o){let s=u(`node-list`),c=u(`session-view`),p=u(`font-awesome-icon`),m=u(`el-button`),h=u(`el-drawer`),g=u(`pair-dialog`),_=u(`permission-dialog`),v=u(`history-drawer`);return l(),d(`div`,Cr,[i(s,{class:`sidebar w-[300px] flex-none`,onPair:e.openPair},null,8,[`onPair`]),i(c,{class:`flex-1 min-w-0`,onHistory:t[0]||=t=>e.historyVisible=!0}),i(m,{circle:``,class:`menu`,onClick:t[1]||=t=>e.drawer=!0},{default:f(()=>[i(p,{icon:`fa-solid fa-laptop-code`})]),_:1}),i(h,{modelValue:e.drawer,"onUpdate:modelValue":t[2]||=t=>e.drawer=t,direction:`ltr`,"with-header":!1,size:`300px`,class:`drawer`},{default:f(()=>[i(s,{onPair:e.openPairFromDrawer},null,8,[`onPair`])]),_:1},8,[`modelValue`]),i(g,{visible:e.pairVisible,"onUpdate:visible":t[3]||=t=>e.pairVisible=t,"initial-code":e.initialCode},null,8,[`visible`,`initial-code`]),i(_),i(v,{visible:e.historyVisible,"onUpdate:visible":t[4]||=t=>e.historyVisible=t},null,8,[`visible`])])}var Tr=D(Sr,[[`render`,wr],[`__scopeId`,`data-v-44a88ff4`]]);export{Tr as default};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{$ as e,Bt as t,D as n,E as r,Ht as i,M as a,N as o,O as s,P as c,Q as l,Ut as u,X as d,_ as f,et as p,k as m,lt as h,ut as g,x as _}from"./vendor-chart-mdwpew_o.js";import{t as v}from"./button-DWzbdjZV.js";import{r as y,t as b}from"./select-HUfkzAuQ.js";import{t as x}from"./upload-C64n6FiS.js";import{t as S}from"./tooltip-C3PYfh8V.js";import{t as C}from"./image-s5BzYxHs.js";import{t as w}from"./alert-BJj7gY4q.js";import{t as T}from"./drawer-BvYPSxXh.js";import{$n as E,Qn as D,Xn as O,Zn as k,er as A,ir as ee,pi as te,rr as j,tr as M}from"./constants-C-bSXdJ_.js";import{At as N,E as P,Fn as F,Nt as I,Ot as L,Sr as R,dn as z,jt as B,kr as V,kt as H,yr as U}from"./index-C8DeSrkP.js";import{t as W}from"./index.es-CNg3jcG4.js";import{t as G}from"./CopyToClipboard-INstPmp0.js";import{t as K}from"./ImagePreview-C0e5HPdV.js";import{n as q}from"./taskDrawerMixin-Cr17Yxqk.js";import{t as J}from"./BotPlaceholder-DNd2OaW9.js";import{i as Y,n as X,t as Z}from"./pagination-BzLQVoO2.js";import{n as Q,t as ne}from"./NoTasks-CbTGc8HF.js";import{t as re}from"./Consumption-Bx30TMJY.js";import{t as ie}from"./ApiCodeButton-JslKaNUM.js";import{t as ae}from"./VideoPlayer-CYLsmg3y.js";var oe=c({name:`LayoutSora`,components:{ElDrawer:T,ElButton:v,FontAwesomeIcon:W},mixins:[q]}),se={class:`main flex flex-row flex-1`},ce={class:`config w-[320px] flex-none h-full overflow-y-auto bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},le={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ue(t,n,i,a,s,c){let l=p(`font-awesome-icon`),u=p(`el-button`),_=p(`el-drawer`);return d(),m(`div`,se,[r(`div`,ce,[e(t.$slots,`config`,{},void 0,!0)]),r(`div`,le,[e(t.$slots,`result`,{},void 0,!0)]),g(o(u,{circle:``,class:`menu`,onClick:n[0]||=e=>t.drawer=!0},{default:h(()=>[o(l,{icon:`fa-solid fa-magic`})]),_:1},512),[[f,!t.tasksEmpty]]),o(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`350px`},{default:h(()=>[e(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var de=P(oe,[[`render`,ue],[`__scopeId`,`data-v-531ab990`]]),fe=c({name:`ModelSelector`,components:{ElSelect:y,ElOption:b},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:ee,label:`sora-2`},{value:j,label:`sora-2-pro`}]}},computed:{value:{get(){return this.$store.state.sora?.config?.model},set(e){let t=this.$store.state.sora?.config||{},n=O[e]||[10],r=t.duration,i=r&&n.includes(r)?r:n.includes(10)?10:n[0],a={...t,model:e,duration:i,size:t.size||`small`};this.$store.commit(`sora/setConfig`,a)}}},mounted(){this.value||=E}}),pe={class:`field`},me={class:`title font-bold`};function he(e,t,i,a,s,c){let f=p(`el-option`),g=p(`el-select`);return d(),m(`div`,pe,[r(`h2`,me,u(e.$t(`sora.name.model`)),1),o(g,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`sora.placeholder.select`)},{default:h(()=>[(d(!0),m(_,null,l(e.options,e=>(d(),n(f,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var ge=P(fe,[[`render`,he],[`__scopeId`,`data-v-0cb7913d`]]),_e=c({name:`ActionSelector`,components:{ElSelect:y,ElOption:b},data(){return{}},computed:{options(){return[{value:`text2video`,label:this.$t(`sora.button.action1`)},{value:`image2video`,label:this.$t(`sora.button.action2`)}]},value:{get(){return this.$store.state.sora?.config?.action},set(e){this.$store.commit(`sora/setConfig`,{...this.$store.state.sora?.config,action:e})}}},mounted(){this.value||=D}}),ve={class:`field`},ye={class:`title font-bold`},be={class:`float-left`};function xe(e,t,i,a,s,c){let f=p(`el-option`),g=p(`el-select`);return d(),m(`div`,ve,[r(`h2`,ye,u(e.$t(`sora.name.action`)),1),o(g,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`sora.placeholder.select`),clearable:``},{default:h(()=>[(d(!0),m(_,null,l(e.options,e=>(d(),n(f,{key:e.value,label:e.label,value:e.value},{default:h(()=>[r(`span`,be,u(e.label),1)]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Se=P(_e,[[`render`,xe],[`__scopeId`,`data-v-7b82fa7f`]]),Ce=c({name:`DurationSelector`,components:{ElSelect:y,ElOption:b},computed:{model(){return this.$store.state.sora?.config?.model||`sora-2`},allowedDurations(){return O[this.model]||[10]},optionsForModel(){return this.allowedDurations.map(e=>({value:e,label:`${e}s`}))},value:{get(){return this.$store.state.sora?.config?.duration},set(e){let t=this.$store.state.sora?.config||{};this.$store.commit(`sora/setConfig`,{...t,duration:e})}}},watch:{allowedDurations(){let e=this.allowedDurations;if(!e.includes(this.value)){let t=e.includes(10)?10:e[0];this.value=t}}},mounted(){this.value||=10}}),we={class:`field`},Te={class:`control`},Ee={class:`title font-bold`};function De(e,t,i,a,s,c){let f=p(`el-option`),g=p(`el-select`);return d(),m(`div`,we,[r(`div`,Te,[r(`h2`,Ee,u(e.$t(`sora.name.duration`)),1),o(g,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`sora.placeholder.select`)},{default:h(()=>[(d(!0),m(_,null,l(e.optionsForModel,e=>(d(),n(f,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])])}var Oe=P(Ce,[[`render`,De],[`__scopeId`,`data-v-c2934598`]]),ke=c({name:`OrientationSelector`,data(){return{options:[{value:`portrait`,labelKey:`sora.option.portrait`,width:13,height:25},{value:`landscape`,labelKey:`sora.option.landscape`,width:25,height:13}]}},computed:{active(){let e=this.options.findIndex(e=>e.value===this.value);return e>=0?e:0},value:{get(){return this.$store.state.sora?.config?.orientation},set(e){console.debug(`set orientation`,e),this.$store.commit(`sora/setConfig`,{...this.$store.state?.sora?.config,orientation:e})}}},mounted(){this.value||=A}}),Ae={class:`text-sm font-bold mb-2 block`},je={class:`items`},Me=[`onClick`],Ne={class:`name`};function Pe(e,n,a,o,s,c){return d(),m(`div`,null,[r(`span`,Ae,u(e.$t(`sora.name.orientation`)),1),r(`div`,je,[(d(!0),m(_,null,l(e.options,(n,a)=>(d(),m(`div`,{key:a,class:t({active:e.active===a,item:!0}),onClick:t=>e.value=n.value},[r(`div`,{class:t([`preview`,n.value])},[r(`div`,{class:`rect`,style:i({width:n.width+`px`,height:n.height+`px`})},null,4)],2),r(`p`,Ne,u(e.$t(n.labelKey)),1)],10,Me))),128))])])}var Fe=P(ke,[[`render`,Pe],[`__scopeId`,`data-v-a20be6d9`]]),Ie=c({name:`StartEndImage`,components:{ElUpload:x,ElButton:v,InfoIcon:Y,FontAwesomeIcon:W,ImagePreview:K},mixins:[B,H],emits:[`change`],data(){return{fileList:[],uploadUrl:R()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)},value:{get(){return this.$store.state?.sora?.config?.image_urls},set(){}}},mounted(){this.value||=void 0,this.onSetStartEndImageUrl()},methods:{onExceed(){V.warning(this.$t(`sora.message.uploadReferencesExceed`))},onError(){V.error(this.$t(`sora.message.uploadReferencesError`))},onSetStartEndImageUrl(){let e=this.urls;this.$store.commit(`sora/setConfig`,{...this.$store.state?.sora?.config,image_urls:e})},async onSuccess(){this.onSetStartEndImageUrl()}}}),Le={class:`relative`},Re={class:`flex justify-between`},ze={class:`flex justify-start items-center`},Be={class:`text-sm font-bold`};function Ve(e,t,i,c,l,f){let g=p(`info-icon`),_=p(`image-preview`),v=p(`font-awesome-icon`),y=p(`el-button`),b=p(`el-upload`);return d(),m(`div`,Le,[r(`div`,Re,[r(`div`,ze,[r(`span`,Be,u(e.$t(`sora.name.startEndImage`)),1),o(g,{content:e.$t(`sora.description.uploadStartEndImage`)},null,8,[`content`])])]),o(b,{ref:`uploader`,"file-list":e.fileList,"onUpdate:fileList":t[0]||=t=>e.fileList=t,name:`file`,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,limit:2,class:`upload-wrapper`,multiple:!1,action:e.uploadUrl,"list-type":`picture`,"on-exceed":e.onExceed,"on-error":e.onError,"on-success":e.onSuccess,headers:e.headers},{file:h(({file:t})=>[t.url&&t.percentage!==void 0?(d(),n(_,{key:0,url:t.url,name:t.name,percentage:t.percentage,onRemove:n=>e.fileList.splice(e.fileList.indexOf(t),1)},null,8,[`url`,`name`,`percentage`,`onRemove`])):s(``,!0)]),default:h(()=>[o(y,{round:``,type:`primary`,size:`small`,class:`btn btn-upload`},{default:h(()=>[o(v,{icon:`fa-solid fa-upload`,class:`icon mr-1`}),a(` `+u(e.$t(`sora.button.uploadReferences`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`headers`])])}var He=P(Ie,[[`render`,Ve],[`__scopeId`,`data-v-4f7d9ba5`]]),Ue=e=>e&&e.charAt(0).toUpperCase()+e.slice(1),We=c({name:`SizeSelector`,components:{ElSelect:y,ElOption:b},data(){return{options:k.map(e=>({value:e,label:Ue(e)}))}},computed:{value:{get(){return this.$store.state.sora?.config?.size},set(e){let t=this.$store.state.sora?.config||{};this.$store.commit(`sora/setConfig`,{...t,size:e})}}},mounted(){this.value||=M}}),Ge={class:`field`},Ke={class:`control`},qe={class:`title font-bold`};function Je(e,t,i,a,s,c){let f=p(`el-option`),g=p(`el-select`);return d(),m(`div`,Ge,[r(`div`,Ke,[r(`h2`,qe,u(e.$t(`sora.name.size`)),1),o(g,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`sora.placeholder.select`)},{default:h(()=>[(d(!0),m(_,null,l(e.options,e=>(d(),n(f,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])])}var Ye=P(We,[[`render`,Je],[`__scopeId`,`data-v-8c485f0f`]]),Xe=c({name:`PromptInput`,components:{PromptTextarea:Q},computed:{prompt:{get(){return this.$store.state.sora?.config?.prompt},set(e){this.$store.commit(`sora/setConfig`,{...this.$store.state.sora?.config,prompt:e})}}},mounted(){this.prompt||=``}});function Ze(e,t,r,i,a,o){let s=p(`prompt-textarea`);return d(),n(s,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`sora.name.prompt`),info:e.$t(`sora.description.prompt`),placeholder:e.$t(`sora.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var Qe=c({name:`ConfigPanel`,components:{ElButton:v,Consumption:re,FontAwesomeIcon:W,PromptInput:P(Xe,[[`render`,Ze]]),ModelSelector:ge,StartEndImage:He,SizeSelector:Ye,ActionSelector:Se,OrientationSelector:Fe,DurationSelector:Oe},emits:[`generate`],computed:{config(){return this.$store.state.sora?.config},consumption(){return I(this.config,this.service?.cost)},service(){return this.$store.state.sora?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),$e={class:`flex flex-col h-full`},et={class:`flex-1 overflow-y-auto p-5`},tt={class:`flex flex-col items-center justify-center px-5 pb-5`};function nt(e,t,n,i,s,c){let l=p(`model-selector`),_=p(`action-selector`),v=p(`duration-selector`),y=p(`size-selector`),b=p(`orientation-selector`),x=p(`prompt-input`),S=p(`start-end-image`),C=p(`consumption`),w=p(`font-awesome-icon`),T=p(`el-button`);return d(),m(`div`,$e,[r(`div`,et,[o(l,{class:`mb-4`}),o(_,{class:`mb-4`}),o(v,{class:`mb-4`}),o(y,{class:`mb-4`}),o(b,{class:`mb-4`}),o(x,{class:`mb-4`}),g(o(S,{class:`mb-2`},null,512),[[f,e.config?.action===`image2video`]])]),r(`div`,tt,[o(C,{value:e.consumption,service:e.service},null,8,[`value`,`service`]),o(T,{type:`primary`,class:`btn w-full`,round:``,onClick:e.onGenerate},{default:h(()=>[o(w,{icon:`fa-solid fa-magic`,class:`mr-2`}),a(` `+u(e.$t(`sora.button.generate`)),1)]),_:1},8,[`onClick`])])])}var rt=P(Qe,[[`render`,nt]]),it=c({name:`TaskPreview`,components:{ElImage:C,CopyToClipboard:G,FontAwesomeIcon:W,ElAlert:w,VideoPlayer:ae,ElTooltip:S,ElButton:v,ApiCodeButton:ie},props:{modelValue:{type:Object,required:!0}},data(){return{}},computed:{application(){return this.$store.state.sora?.application},config(){return this.$store.state.sora?.config}},methods:{onDownload(e,t){e?.stopPropagation(),console.log(`on download`),window.open(t,`_blank`)},onOpenVideo(e){window.open(e,`_blank`)}}}),at={class:`preview`},ot={class:`left`},st={class:`main`},ct={class:`bot`},lt={class:`datetime`},ut={class:`info`},dt={key:0,class:`prompt mt-2`},ft={key:0},pt={key:1},mt={key:0,class:t({content:!0,failed:!0})},ht={key:0,class:`mb-4`},gt={key:1,class:t({operations:!0,"mt-2":!0})},_t={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},vt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},yt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},bt={key:1,class:t({content:!0})},xt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},St={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ct={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},wt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Tt={key:2,class:t({content:!0})},Et={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function Dt(e,t,i,c,l,f){let g=p(`el-image`),_=p(`video-player`),v=p(`el-button`),y=p(`el-tooltip`),b=p(`api-code-button`),x=p(`font-awesome-icon`),S=p(`copy-to-clipboard`),C=p(`el-alert`);return d(),m(`div`,at,[r(`div`,ot,[o(g,{src:`https://cdn.acedata.cloud/z5id1u.png`,class:`avatar`})]),r(`div`,st,[r(`div`,ct,[a(u(e.$t(`sora.name.soraBot`))+` `,1),r(`span`,lt,u(e.$dayjs.format(``+new Date(parseFloat((e.modelValue?.created_at||``).toString())*1e3))),1)]),r(`div`,ut,[e.modelValue?.request?.prompt?(d(),m(`p`,dt,[a(u(e.modelValue?.request?.prompt)+` `,1),e.modelValue?.response?s(``,!0):(d(),m(`span`,ft,` - (`+u(e.$t(`sora.status.pending`))+`) `,1)),Array.isArray(e.modelValue?.response?.data)&&e.modelValue?.response?.data[0]?.state===`pending`?(d(),m(`span`,pt,` - (`+u(e.$t(`sora.status.processing`))+`) `,1)):s(``,!0)])):s(``,!0)]),e.modelValue?.response?.success===!0&&e.modelValue?.response?.data?(d(),m(`div`,mt,[e.modelValue?.response?.data[0]?.video_url?(d(),m(`div`,ht,[o(_,{src:e.modelValue?.response?.data[0]?.video_url},null,8,[`src`])])):s(``,!0),e.modelValue?.response.success?(d(),m(`div`,gt,[o(y,{class:`box-item`,effect:`dark`,content:e.$t(`sora.message.downloadVideo`),placement:`top-start`},{default:h(()=>[e.modelValue?.response?.data[0]?.video_url?(d(),n(v,{key:0,type:`info`,size:`small`,class:`btn-action`,onClick:t[0]||=t=>e.onDownload(t,e.modelValue?.response?.data[0]?.video_url)},{default:h(()=>[a(u(e.$t(`sora.button.download`)),1)]),_:1})):s(``,!0)]),_:1},8,[`content`]),o(b,{path:`/sora/videos`,body:e.modelValue?.request},null,8,[`body`])])):s(``,!0),o(C,{closable:!1,class:`mt-2 success`},{default:h(()=>[r(`p`,_t,[o(x,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.model`))+`: `+u(e.modelValue?.request?.model),1)]),r(`p`,vt,[o(x,{icon:`fa-solid fa-magic`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.taskId`))+`: `+u(e.modelValue?.id)+` `,1),o(S,{content:e.modelValue?.id},null,8,[`content`])]),e.modelValue?.elapsed?(d(),m(`p`,yt,[o(x,{icon:`fa-solid fa-clock`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.elapsed`))+`: `+u(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):s(``,!0)]),_:1})])):s(``,!0),e.modelValue?.response?.success===!1?(d(),m(`div`,bt,[o(C,{closable:!1,class:`failure`},{template:h(()=>[o(x,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.failure`)),1)]),default:h(()=>[r(`p`,xt,[o(x,{icon:`fa-solid fa-magic`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.taskId`))+`: `+u(e.modelValue?.id)+` `,1),o(S,{content:e.modelValue?.id},null,8,[`content`])]),r(`p`,St,[o(x,{icon:`fa-solid fa-circle-info`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.failureReason`))+`: `+u(e.modelValue?.response?.error?.message)+` `,1),o(S,{content:e.modelValue?.response?.error?.message},null,8,[`content`])]),e.modelValue?.elapsed?(d(),m(`p`,Ct,[o(x,{icon:`fa-solid fa-clock`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.elapsed`))+`: `+u(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):s(``,!0),e.modelValue?.response?.trace_id?(d(),m(`p`,wt,[o(x,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.traceId`))+`: `+u(e.modelValue?.response?.trace_id)+` `,1),o(S,{content:e.modelValue?.response?.trace_id},null,8,[`content`])])):s(``,!0)]),_:1})])):s(``,!0),e.modelValue?.response?.success===void 0?(d(),m(`div`,Tt,[o(C,{closable:!1,class:`info`},{template:h(()=>[o(x,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.failure`)),1)]),default:h(()=>[r(`p`,Et,[o(x,{icon:`fa-solid fa-magic`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.taskId`))+`: `+u(e.modelValue?.id)+` `,1),o(S,{content:e.modelValue?.id},null,8,[`content`])]),e.modelValue?.response?.trace_id?(d(),m(`p`,$,[o(x,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),a(` `+u(e.$t(`sora.name.traceId`))+`: `+u(e.modelValue?.response?.trace_id)+` `,1),o(S,{content:e.modelValue?.response?.trace_id},null,8,[`content`])])):s(``,!0)]),_:1})])):s(``,!0)])])}var Ot=c({name:`RecentPanel`,components:{TaskPreview:P(it,[[`render`,Dt],[`__scopeId`,`data-v-564d52e9`]]),NoTasks:ne,BotPlaceholder:J,ScrollList:X},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.sora?.tasks,items:this.$store.state.sora?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),kt={key:0},At={key:2,class:`w-full h-full flex items-center justify-center`};function jt(e,t,r,i,a,c){let u=p(`bot-placeholder`),f=p(`task-preview`),g=p(`scroll-list`),v=p(`no-tasks`);return d(),m(_,null,[e.tasks?.items===void 0?(d(),m(`div`,kt,[o(u)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(d(),n(g,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:h(()=>[(d(!0),m(_,null,l(e.tasks?.items,(e,t)=>(d(),n(f,{key:t,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):s(``,!0),e.tasks?.items?.length===0?(d(),m(`div`,At,[o(v)])):s(``,!0)],64)}var Mt=P(Ot,[[`render`,jt]]),Nt=te(`sora`),Pt=c({name:`SoraIndex`,components:{ConfigPanel:rt,Layout:de,RecentPanel:Mt},mixins:[N],inject:[`initialized`],data(){return{task:void 0,job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.sora?.status?.getApplications===U.Request},tasksLoading(){return this.$store.state.sora?.status?.getTasks===U.Request||this.fetchingTasks},credential(){return this.$store.state.sora.credential},config(){return this.$store.state.sora.config},tasks(){return this.$store.state.sora.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await Z({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`sora/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`sora/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),this.fetchingTasks=!0;try{await this.$store.dispatch(`sora/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(){if(!L(this.uploadTracker,e=>this.$t(e),e=>V.warning(e)))return;let e={...this.config,callback_url:Nt},t=this.credential?.token;if(!t){console.error(`no token specified`);return}V.info(this.$t(`sora.message.startingTask`)),F(`sora`,z.generate(e,{token:t})).then(()=>{V.success(this.$t(`sora.message.startTaskSuccess`))}).catch(e=>{(e?.response?.data)?.error?.code===`used_up`?V.error(this.$t(`sora.message.usedUp`)):V.error(this.$t(`sora.message.startTaskFailed`))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ft(e,t,r,i,a,s){let c=p(`config-panel`),l=p(`recent-panel`),u=p(`layout`);return d(),n(u,null,{config:h(()=>[o(c,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:h(()=>[o(l,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var It=P(Pt,[[`render`,Ft]]);export{It as default};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{$ as e,Bt as t,D as n,E as r,M as i,N as a,O as o,P as s,Q as c,Ut as l,X as u,_ as d,et as f,k as p,lt as m,ut as h,x as g,y as _}from"./vendor-chart-mdwpew_o.js";import{t as v}from"./button-DWzbdjZV.js";import{n as y,r as b,t as x}from"./select-HUfkzAuQ.js";import{t as S}from"./upload-C64n6FiS.js";import{t as C}from"./tooltip-C3PYfh8V.js";import{t as w}from"./image-s5BzYxHs.js";import{t as T}from"./alert-BJj7gY4q.js";import{t as E}from"./drawer-BvYPSxXh.js";import{t as D}from"./input-number-BaYFVx7i.js";import{t as O}from"./switch-BZlJomEZ.js";import{Cn as k,Sn as A,_n as j,dn as M,fn as N,gn as P,hn as ee,mn as te,pi as ne,pn as re,vn as ie,xn as F,yn as I}from"./constants-C-bSXdJ_.js";import{At as L,E as R,Fn as z,Nt as B,Ot as V,Sr as H,en as U,kr as W,kt as G,yr as K}from"./index-C8DeSrkP.js";import{t as q}from"./index.es-CNg3jcG4.js";import{t as J}from"./CopyToClipboard-INstPmp0.js";import{t as Y}from"./ImagePreview-C0e5HPdV.js";import{n as ae}from"./taskDrawerMixin-Cr17Yxqk.js";import{t as oe}from"./BotPlaceholder-DNd2OaW9.js";import{i as X,n as se,t as ce}from"./pagination-BzLQVoO2.js";import{n as le,t as ue}from"./NoTasks-CbTGc8HF.js";import{t as de}from"./Consumption-Bx30TMJY.js";import{t as fe}from"./ApiCodeButton-JslKaNUM.js";import{t as pe}from"./ImageWrapper-gfMtBxa-.js";var me=s({name:`LayoutNanobanana`,components:{ElDrawer:E,ElButton:v,FontAwesomeIcon:q},mixins:[ae]}),he={class:`main flex flex-row flex-1`},ge={class:`config w-[320px] flex-none h-full overflow-y-auto bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},_e={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ve(t,n,i,o,s,c){let l=f(`font-awesome-icon`),g=f(`el-button`),_=f(`el-drawer`);return u(),p(`div`,he,[r(`div`,ge,[e(t.$slots,`config`,{},void 0,!0)]),r(`div`,_e,[e(t.$slots,`result`,{},void 0,!0)]),h(a(g,{circle:``,class:`menu`,onClick:n[0]||=e=>t.drawer=!0},{default:m(()=>[a(l,{icon:`fa-solid fa-magic`})]),_:1},512),[[d,!t.tasksEmpty]]),a(_,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer`},{default:m(()=>[e(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var ye=R(me,[[`render`,ve],[`__scopeId`,`data-v-cca80bbd`]]),be=s({name:`PromptInput`,components:{PromptTextarea:le},computed:{prompt:{get(){return this.$store.state.openaiimage?.config?.prompt},set(e){this.$store.commit(`openaiimage/setConfig`,{...this.$store.state.openaiimage?.config,prompt:e})}}},mounted(){this.prompt||=``}});function xe(e,t,r,i,a,o){let s=f(`prompt-textarea`);return u(),n(s,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`openaiimage.name.prompt`),info:e.$t(`openaiimage.description.prompt`),placeholder:e.$t(`openaiimage.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var Se=R(be,[[`render`,xe]]),Ce=s({name:`ImageUrlsInput`,components:{ElUpload:S,ElButton:v,InfoIcon:X,ImagePreview:Y,FontAwesomeIcon:q},mixins:[G],data(){return{fileList:[],uploadUrl:H()+`/api/v1/files/`,suppressWatch:!1}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url).filter(e=>!!e)},value(){return this.$store.state.openaiimage?.config?.image_urls}},watch:{value:{immediate:!0,handler(e){if(this.suppressWatch)return;if(!e||e.length===0){let e=(this.fileList||[]).filter(e=>!e?.response?.file_url);this.fileList=e.length?e:[];return}let t=[];e.forEach(e=>{let n=this.fileList.find(t=>t?.response?.file_url===e||t?.url===e);n?t.push(n):t.push({name:e.split(`/`).pop()||e,url:e,status:`success`,percentage:100,response:{file_url:e}})}),(this.fileList||[]).filter(e=>!e?.response?.file_url).forEach(e=>{t.some(t=>t===e||t?.url===e?.url||t?.response?.file_url===e?.response?.file_url)||t.push(e)}),this.fileList=t}}},mounted(){},methods:{onChange(e){if(!e?.url&&e?.raw)try{e.url=URL.createObjectURL(e.raw)}catch{}},onRemove(e){if(e?.url&&typeof e.url==`string`&&e.url.startsWith(`blob:`))try{URL.revokeObjectURL(e.url)}catch{}this.onSetImageUrls()},onExceed(){W.warning(this.$t(`openaiimage.message.uploadImageExceed`))},onError(){W.error(this.$t(`openaiimage.message.uploadImageError`))},onSetImageUrls(){let e=this.urls;this.suppressWatch=!0,this.$store.commit(`openaiimage/setConfig`,{...this.$store.state.openaiimage?.config,image_urls:e}),this.$nextTick(()=>{this.suppressWatch=!1})},async onSuccess(e,t){e?.file_url&&(t.url=e.file_url,t.response=e),this.onSetImageUrls()},onRemovePreview(e,t){if(this.fileList.splice(e,1),t?.url&&typeof t.url==`string`&&t.url.startsWith(`blob:`))try{URL.revokeObjectURL(t.url)}catch{}this.onSetImageUrls()}}}),we={class:`field flex items-center justify-between`},Te={class:`title font-bold text-[14px] mb-[10px]`},Ee={class:`upload-wrapper flex flex-col items-start gap-[8px]`},De={class:`controls flex items-center`},Oe={class:`file-list flex flex-wrap gap-[10px]`};function ke(e,t,o,s,d,h){let _=f(`font-awesome-icon`),v=f(`el-button`),y=f(`el-upload`),b=f(`info-icon`),x=f(`image-preview`);return u(),p(g,null,[r(`div`,we,[r(`h2`,Te,l(e.$t(`openaiimage.name.imageUrls`)),1),r(`div`,Ee,[r(`div`,De,[a(y,{"file-list":e.fileList,"onUpdate:fileList":t[0]||=t=>e.fileList=t,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,name:`file`,class:`value`,limit:5,multiple:!0,"show-file-list":!1,action:e.uploadUrl,"on-exceed":e.onExceed,"on-error":e.onError,"on-success":e.onSuccess,"on-change":e.onChange,"on-remove":e.onRemove,headers:e.headers},{default:m(()=>[a(v,{size:`small`,type:`primary`,round:``},{default:m(()=>[a(_,{icon:`fa-solid fa-upload`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.button.uploadImageUrls`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`on-change`,`on-remove`,`headers`]),a(b,{content:e.$t(`openaiimage.description.imageUrls`),class:`ml-2`},null,8,[`content`])])])]),r(`div`,Oe,[(u(!0),p(g,null,c(e.fileList,(t,r)=>(u(),n(x,{key:t.uid||t?.response?.file_url||t.url||r,url:t.url||t?.response?.file_url,name:t.name,percentage:t.percentage,onRemove:n=>e.onRemovePreview(r,t)},null,8,[`url`,`name`,`percentage`,`onRemove`]))),128))])],64)}var Ae=R(Ce,[[`render`,ke]]),je=s({name:`OpenAIImageModelSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:X},data(){return{options:[{value:P,label:this.$t(`openaiimage.model.gptImage1`)},{value:j,label:this.$t(`openaiimage.model.gptImage15`)},{value:ie,label:this.$t(`openaiimage.model.gptImage2`)}]}},computed:{value:{get(){return this.$store.state.openaiimage?.config?.model},set(e){this.$store.commit(`openaiimage/setConfig`,{...this.$store.state.openaiimage?.config,model:e})}},modelDescription(){return this.$t(`openaiimage.description.model`)}},mounted(){this.value||=te}}),Me={class:`field`},Ne={class:`label`},Pe={class:`box`},Fe={class:`title font-bold`};function Ie(e,t,i,o,s,d){let h=f(`info-icon`),_=f(`el-option`),v=f(`el-select`);return u(),p(`div`,Me,[r(`div`,Ne,[r(`div`,Pe,[r(`h2`,Fe,l(e.$t(`openaiimage.name.model`)),1),a(h,{content:e.modelDescription,class:`info`},null,8,[`content`])])]),a(v,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`openaiimage.placeholder.select`)},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(_,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Le=R(je,[[`render`,Ie],[`__scopeId`,`data-v-cec771bd`]]);function Z(e){if(!e)return;let t=/^(\d+)x(\d+)$/.exec(e);if(t)return{w:Number(t[1]),h:Number(t[2])}}var Re=s({name:`OpenAIImageSizeSelector`,components:{ElSelect:b,ElOption:x,ElOptionGroup:y,ElSwitch:O,ElInputNumber:D,InfoIcon:X},data(){return{customMode:!1,customWidth:1024,customHeight:1024}},computed:{model(){return this.$store.state.openaiimage?.config?.model||`gpt-image-2`},storedSize(){return this.$store.state.openaiimage?.config?.size},emptySizeValue(){return``},customSupported(){return re.includes(this.model)},presets(){return I[this.model]??I[`gpt-image-2`]??[]},presetGroups(){return this.model===`gpt-image-2`?[{label:this.$t(`openaiimage.sizeGroup.standard1k`),options:F},{label:this.$t(`openaiimage.sizeGroup.preset2k`),options:A},{label:this.$t(`openaiimage.sizeGroup.preset4k`),options:k}]:[{label:this.$t(`openaiimage.sizeGroup.standard1k`),options:this.presets}]},useCustom:{get(){return this.customSupported&&this.customMode},set(e){if(!(e&&!this.customSupported))if(this.customMode=e,e){if(this.customError)return;this.commitSize(`${this.customWidth}x${this.customHeight}`)}else this.commitSize()}},presetValue:{get(){let e=this.storedSize;return e&&this.presets.includes(e)?e:this.emptySizeValue},set(e){this.customMode=!1,this.commitSize(e||void 0)}},multiple(){return 16},minSide(){return 256},maxSide(){return M},customError(){let e=this.customWidth,t=this.customHeight;return!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0?this.$t(`openaiimage.error.customSizePositive`):e%this.multiple!==0||t%this.multiple!==0?this.$t(`openaiimage.error.customSizeMultiple`,{multiple:this.multiple}):e<this.minSide||t<this.minSide?this.$t(`openaiimage.error.customSizeMin`,{min:this.minSide}):Math.max(e,t)>this.maxSide?this.$t(`openaiimage.error.customSizeMax`,{max:this.maxSide}):e*t>8294400?this.$t(`openaiimage.error.customSizePixels`,{pixels:N.toLocaleString()}):``}},watch:{model:{immediate:!1,handler(){this.customSupported||(this.customMode=!1);let e=this.storedSize;if(!e||this.presets.includes(e))return;let t=Z(e);t&&this.customSupported&&(this.customMode=!0,this.customWidth=t.w,this.customHeight=t.h,!this.customError)||this.commitSize()}},storedSize(e){if(!e){this.customMode=!1;return}if(this.presets.includes(e)){this.customMode=!1;return}let t=Z(e);t&&this.customSupported&&(this.customMode=!0,this.customWidth!==t.w&&(this.customWidth=t.w),this.customHeight!==t.h&&(this.customHeight=t.h))},customWidth(){this.syncCustomToStore()},customHeight(){this.syncCustomToStore()}},mounted(){let e=this.storedSize,t=Z(e);e&&t&&this.customSupported&&!this.presets.includes(e)&&(this.customMode=!0,this.customWidth=t.w,this.customHeight=t.h)},methods:{commitSize(e){let t={...this.$store.state.openaiimage?.config};e?t.size=e:delete t.size,this.$store.commit(`openaiimage/setConfig`,t)},syncCustomToStore(){this.useCustom&&(this.customError||this.commitSize(`${this.customWidth}x${this.customHeight}`))}}}),ze={class:`resolution`},Be={class:`field`},Ve={class:`label`},He={class:`box`},Ue={class:`title font-bold`},We={class:`field custom-toggle`},Ge={class:`label`},Ke={class:`box`},qe={class:`title font-bold`},Je={key:0,class:`custom-inputs`},Ye={class:`row`},Xe={class:`row-label`},Ze={class:`row`},Qe={class:`row-label`},$e={key:0,class:`error`};function et(e,t,i,s,d,h){let _=f(`info-icon`),v=f(`el-option`),y=f(`el-option-group`),b=f(`el-select`),x=f(`el-switch`),S=f(`el-input-number`);return u(),p(`div`,ze,[r(`div`,Be,[r(`div`,Ve,[r(`div`,He,[r(`h2`,Ue,l(e.$t(`openaiimage.name.size`)),1),a(_,{content:e.$t(`openaiimage.description.size`),class:`info`},null,8,[`content`])])]),a(b,{modelValue:e.presetValue,"onUpdate:modelValue":t[0]||=t=>e.presetValue=t,class:`value`,placeholder:e.$t(`openaiimage.placeholder.select`),disabled:e.useCustom},{default:m(()=>[a(v,{label:e.$t(`suno.gender.auto`),value:e.emptySizeValue},null,8,[`label`,`value`]),(u(!0),p(g,null,c(e.presetGroups,e=>(u(),n(y,{key:e.label,label:e.label},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(v,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:2},1032,[`label`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),e.customSupported?(u(),p(g,{key:0},[r(`div`,We,[r(`div`,Ge,[r(`div`,Ke,[r(`h2`,qe,l(e.$t(`openaiimage.name.customSize`)),1),a(_,{content:e.$t(`openaiimage.description.customSize`),class:`info`},null,8,[`content`])])]),a(x,{modelValue:e.useCustom,"onUpdate:modelValue":t[1]||=t=>e.useCustom=t,class:`value-switch`},null,8,[`modelValue`])]),e.useCustom?(u(),p(`div`,Je,[r(`div`,Ye,[r(`span`,Xe,l(e.$t(`openaiimage.name.width`)),1),a(S,{modelValue:e.customWidth,"onUpdate:modelValue":t[2]||=t=>e.customWidth=t,class:`row-input`,min:e.minSide,max:e.maxSide,step:e.multiple,"step-strictly":!0,"controls-position":`right`},null,8,[`modelValue`,`min`,`max`,`step`])]),r(`div`,Ze,[r(`span`,Qe,l(e.$t(`openaiimage.name.height`)),1),a(S,{modelValue:e.customHeight,"onUpdate:modelValue":t[3]||=t=>e.customHeight=t,class:`row-input`,min:e.minSide,max:e.maxSide,step:e.multiple,"step-strictly":!0,"controls-position":`right`},null,8,[`modelValue`,`min`,`max`,`step`])]),e.customError?(u(),p(`div`,$e,l(e.customError),1)):o(``,!0)])):o(``,!0)],64)):o(``,!0)])}var tt=s({name:`ConfigPanel`,components:{ElButton:v,FontAwesomeIcon:q,PromptInput:Se,Consumption:de,ImageUrlsInput:Ae,ModelSelector:Le,ResolutionSelector:R(Re,[[`render`,et],[`__scopeId`,`data-v-d5544d69`]])},emits:[`generate`],computed:{config(){return this.$store.state.openaiimage?.config},consumption(){return B({...this.config||{}},this.service?.cost)},service(){return this.$store.state.openaiimage?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),nt={class:`flex flex-col h-full`},rt={class:`flex-1 overflow-y-auto p-5`},it={class:`flex flex-col items-center justify-center px-5 pb-5`};function at(e,t,n,o,s,c){let d=f(`model-selector`),h=f(`resolution-selector`),g=f(`prompt-input`),_=f(`image-urls-input`),v=f(`consumption`),y=f(`font-awesome-icon`),b=f(`el-button`);return u(),p(`div`,nt,[r(`div`,rt,[a(d,{class:`mb-4`}),a(h,{class:`mb-4`}),a(g,{class:`mb-4`}),a(_,{class:`mb-4`})]),r(`div`,it,[a(v,{value:e.consumption,service:e.service},null,8,[`value`,`service`]),a(b,{type:`primary`,class:`btn w-full`,round:``,onClick:e.onGenerate},{default:m(()=>[a(y,{icon:`fa-solid fa-magic`,class:`mr-2`}),i(` `+l(e.$t(`openaiimage.button.generate`)),1)]),_:1},8,[`onClick`])])])}var ot=R(tt,[[`render`,at]]),st=s({name:`TaskPreview`,components:{ElImage:w,CopyToClipboard:J,FontAwesomeIcon:q,ElAlert:T,ImageWrapper:pe,ElButton:v,ElTooltip:C,ImagePreview:Y,ApiCodeButton:fe},props:{modelValue:{type:Object,required:!0}},setup(){return{OPENAIIMAGE_LOGO:ee}},computed:{isEditRequest(){let e=this.modelValue?.request;return this.modelValue?.type===`images_edits`||e?.action===`edit`||this.referenceImages.length>0},showTaskType(){return!!(this.modelValue?.request?.action||this.modelValue?.type||this.referenceImages.length>0)},taskTypeLabel(){return this.isEditRequest?this.$t(`openaiimage.name.edits`):this.$t(`openaiimage.name.generate`)},openaiimagePath(){return this.isEditRequest?`/openai/images/edits`:`/openai/images/generations`},openaiimageCodeBody(){let e=this.modelValue?.request;if(!e)return;let t={...e};if(delete t.action,delete t.callback_url,this.isEditRequest){delete t.image_urls,delete t.image;let e=this.referenceImages;e.length===1?t.image=e[0]:e.length>1&&(t.image=e)}else delete t.image_urls,delete t.image;return t},images(){let e=[];return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(t=>{let n=t;if(n?.image_url||n?.url){e.push(n);return}n?.b64_json&&e.push({...n,url:`data:image/png;base64,${n.b64_json}`})}),e},referenceImages(){let e=this.modelValue?.request;if(!e)return[];let t=Array.isArray(e.image_urls)?e.image_urls:[];if(t.length>0)return t.filter(e=>typeof e==`string`&&e.length>0);let n=e.image;return Array.isArray(n)?n.filter(e=>typeof e==`string`&&e.length>0):typeof n==`string`&&n.length>0?[n]:Array.isArray(e.images)?e.images.map(e=>{if(typeof e==`string`)return e;if(e&&typeof e==`object`)return e.image_url}).filter(e=>typeof e==`string`&&e.length>0):[]}},methods:{onEdit(e){if(!e)return;console.debug(`Edit image:`,e);let t={...this.$store.state.openaiimage?.config||{}};t.image_urls=[e],this.$store.commit(`openaiimage/setConfig`,t)}}}),ct={class:`preview`},lt={class:`left`},ut={class:`main`},dt={class:`bot`},ft={class:`datetime`},pt={class:`info`},mt={key:0,class:`flex justify-start items-center gap-2 mt-2 w-full overflow-x-auto`},ht={key:1,class:`prompt mt-2`},gt={key:0},_t={key:0,class:t({content:!0,failed:!0})},vt={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},yt={class:t({operations:!0,"mt-2":!0,"mb-2":!0})},bt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},xt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},St={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ct={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},wt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Tt={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Et={key:1,class:t({content:!0})},Dt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ot={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},kt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},At={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},jt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Mt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Nt={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Pt={key:2,class:t({content:!0})},Q={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ft={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},It={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Lt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`};function Rt(e,t,s,d,h,v){let y=f(`el-image`),b=f(`image-preview`),x=f(`image-wrapper`),S=f(`el-button`),C=f(`el-tooltip`),w=f(`api-code-button`),T=f(`font-awesome-icon`),E=f(`copy-to-clipboard`),D=f(`el-alert`);return u(),p(`div`,ct,[r(`div`,lt,[a(y,{src:e.OPENAIIMAGE_LOGO,class:`avatar`},null,8,[`src`])]),r(`div`,ut,[r(`div`,dt,[i(l(e.$t(`openaiimage.name.openaiimageBot`))+` `,1),r(`span`,ft,l(e.$dayjs.format(``+new Date(parseFloat((e.modelValue?.created_at||``).toString())*1e3))),1)]),r(`div`,pt,[e.referenceImages.length>0?(u(),p(`div`,mt,[(u(!0),p(g,null,c(e.referenceImages,(e,t)=>(u(),n(b,{key:t,url:e,name:`image-${t+1}`,closable:!1},null,8,[`url`,`name`]))),128))])):o(``,!0),e.modelValue?.request?.prompt?(u(),p(`p`,ht,[i(l(e.modelValue?.request?.prompt)+` `,1),e.modelValue?.response?o(``,!0):(u(),p(`span`,gt,` - (`+l(e.$t(`openaiimage.status.pending`))+`) `,1))])):o(``,!0)]),e.modelValue?.response?.success===!0?(u(),p(`div`,_t,[r(`div`,vt,[(u(!0),p(g,null,c(e.images,(e,t)=>(u(),n(x,{key:t,src:e?.image_url||e?.url||``,"raw-src":e?.image_url||e?.url||``},null,8,[`src`,`raw-src`]))),128))]),r(`div`,yt,[a(C,{class:`box-item`,effect:`dark`,content:e.$t(`common.button.edit`),placement:`top-start`},{default:m(()=>[a(S,{type:`info`,size:`small`,class:`btn-action`,onClick:t[0]||=_(t=>e.onEdit(e.images?.[0]?.image_url||e.images?.[0]?.url),[`stop`])},{default:m(()=>[i(l(e.$t(`common.button.edit`)),1)]),_:1})]),_:1},8,[`content`]),a(w,{path:e.openaiimagePath,body:e.openaiimageCodeBody},null,8,[`path`,`body`])]),a(D,{closable:!1,class:`mt-2 success`},{default:m(()=>[e.modelValue?.request?.model?(u(),p(`p`,bt,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.model`))+`: `+l(e.modelValue?.request?.model),1)])):o(``,!0),e.modelValue?.request?.size?(u(),p(`p`,xt,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.size`))+`: `+l(e.modelValue?.request?.size),1)])):o(``,!0),e.showTaskType?(u(),p(`p`,St,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.task`))+`: `+l(e.taskTypeLabel),1)])):o(``,!0),r(`p`,Ct,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(E,{content:e.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),e.modelValue?.elapsed?(u(),p(`p`,wt,[a(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.elapsed`))+`: `+l(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),e.modelValue?.response?.trace_id?(u(),p(`p`,Tt,[a(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.traceId`))+`: `+l(e.modelValue?.response?.trace_id)+` `,1),a(E,{content:e.modelValue?.response?.trace_id,class:`btn-copy inline-block`},null,8,[`content`])])):o(``,!0)]),_:1})])):e.modelValue?.response?.success===!1?(u(),p(`div`,Et,[a(D,{closable:!1,class:`failure`},{template:m(()=>[a(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.failure`)),1)]),default:m(()=>[e.modelValue?.request?.model?(u(),p(`p`,Dt,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.model`))+`: `+l(e.modelValue?.request?.model),1)])):o(``,!0),e.modelValue?.request?.size?(u(),p(`p`,Ot,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.size`))+`: `+l(e.modelValue?.request?.size),1)])):o(``,!0),e.showTaskType?(u(),p(`p`,kt,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.task`))+`: `+l(e.taskTypeLabel),1)])):o(``,!0),r(`p`,At,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(E,{content:e.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),r(`p`,jt,[a(T,{icon:`fa-solid fa-circle-info`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.failureReason`))+`: `+l(e.modelValue?.response?.error?.message)+` `,1),a(E,{content:e.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),e.modelValue?.elapsed?(u(),p(`p`,Mt,[a(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.elapsed`))+`: `+l(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),e.modelValue?.response?.trace_id?(u(),p(`p`,Nt,[a(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.traceId`))+`: `+l(e.modelValue?.response?.trace_id)+` `,1),a(E,{content:e.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])):o(``,!0)]),_:1})])):(u(),p(`div`,Pt,[a(D,{closable:!1,class:`info`},{template:m(()=>[a(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.failure`)),1)]),default:m(()=>[e.modelValue?.request?.model?(u(),p(`p`,Q,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.model`))+`: `+l(e.modelValue?.request?.model),1)])):o(``,!0),e.modelValue?.request?.size?(u(),p(`p`,Ft,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.size`))+`: `+l(e.modelValue?.request?.size),1)])):o(``,!0),e.showTaskType?(u(),p(`p`,It,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.task`))+`: `+l(e.taskTypeLabel),1)])):o(``,!0),r(`p`,Lt,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`openaiimage.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(E,{content:e.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var zt=s({name:`RecentPanel`,components:{TaskPreview:R(st,[[`render`,Rt],[`__scopeId`,`data-v-8ee5fb87`]]),BotPlaceholder:oe,NoTasks:ue,ScrollList:se},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.openaiimage?.tasks,items:this.$store.state.openaiimage?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),Bt={key:0},Vt={key:2,class:`w-full h-full flex items-center justify-center`};function Ht(e,t,r,i,s,l){let d=f(`bot-placeholder`),h=f(`task-preview`),_=f(`scroll-list`),v=f(`no-tasks`);return u(),p(g,null,[e.tasks?.items===void 0?(u(),p(`div`,Bt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(u(),n(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:m(()=>[(u(!0),p(g,null,c(e.tasks?.items,e=>(u(),n(h,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(u(),p(`div`,Vt,[a(v)])):o(``,!0)],64)}var Ut=R(zt,[[`render`,Ht]]),$=ne(`openaiimage`),Wt=s({name:`OpenAIImageIndex`,components:{ConfigPanel:ot,Layout:ye,RecentPanel:Ut},mixins:[L],inject:[`initialized`],data(){return{task:void 0,job:0,loading:!1}},computed:{applicationsLoading(){return this.$store.state.openaiimage?.status?.getApplications===K.Request},tasksLoading(){return this.$store.state.openaiimage?.status?.getTasks===K.Request},credential(){return this.$store.state.openaiimage?.credential},config(){return this.$store.state.openaiimage?.config},application(){return this.$store.state.openaiimage?.application},tasks(){return this.$store.state.openaiimage?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await ce({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loading,setLoading:e=>this.loading=e,isBlocked:()=>this.tasksLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`openaiimage/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`openaiimage/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.tasksLoading){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=20,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),await this.$store.dispatch(`openaiimage/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})},async onGenerate(){if(!V(this.uploadTracker,e=>this.$t(e),e=>W.warning(e)))return;let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;if(!this.hasText(e.prompt)){W.error(this.$t(`openaiimage.message.promptRequired`));return}e.prompt=e.prompt.trim(),!t&&`image_urls`in e&&delete e.image_urls,e.size||delete e.size;let n={...e,action:`generate`,callback_url:$},r={action:`edit`,model:e?.model,prompt:e?.prompt,size:e?.size,image_urls:e?.image_urls||[],callback_url:$},i=this.credential?.token;if(!i){console.error(`no token specified`);return}W.info(this.$t(`openaiimage.message.startingTask`)),z(`openaiimage`,t?U.edit(r,{token:i}):U.generate(n,{token:i})).then(e=>{console.debug(`task accepted`,e.data?.task_id),W.success(this.$t(`openaiimage.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?W.error(this.$t(`openaiimage.message.usedUp`)):W.error(this.$t(`openaiimage.message.startTaskFailed`)+(t?.error?.message||``))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()},hasText(e){return typeof e==`string`&&e.trim().length>0}}});function Gt(e,t,r,i,o,s){let c=f(`config-panel`),l=f(`recent-panel`),d=f(`layout`);return u(),n(d,null,{config:m(()=>[a(c,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:m(()=>[a(l,{ref:`recentPanel`,loading:e.loading,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var Kt=R(Wt,[[`render`,Gt]]);export{Kt as default};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime--c01j_DQ.js";import{$ as e,Bt as t,D as n,E as r,Ht as ee,M as i,N as a,O as o,P as s,Q as c,Ut as l,X as u,_ as d,et as f,k as p,lt as m,ut as h,x as g}from"./vendor-chart-mdwpew_o.js";import{t as _}from"./button-DWzbdjZV.js";import{r as v,t as y}from"./select-HUfkzAuQ.js";import{t as b}from"./upload-C64n6FiS.js";import{t as x}from"./tooltip-C3PYfh8V.js";import{t as S}from"./image-s5BzYxHs.js";import{t as C}from"./alert-BJj7gY4q.js";import{t as w}from"./drawer-BvYPSxXh.js";import{t as T}from"./switch-BZlJomEZ.js";import{cr as E,dr as D,fr as O,gr as k,lr as A,mr as j,or as M,pi as N,sr as P,ur as F}from"./constants-C-bSXdJ_.js";import{At as te,E as I,Fn as ne,Ir as L,Nt as R,Ot as z,Sr as B,fn as V,jt as H,kr as U,kt as W,yr as G}from"./index-C8DeSrkP.js";import{t as K}from"./index.es-CNg3jcG4.js";import{t as q}from"./CopyToClipboard-INstPmp0.js";import{t as J}from"./ImagePreview-C0e5HPdV.js";import{n as Y}from"./taskDrawerMixin-Cr17Yxqk.js";import{t as X}from"./BotPlaceholder-DNd2OaW9.js";import{i as Z,n as re,t as ie}from"./pagination-BzLQVoO2.js";import{n as ae,t as oe}from"./NoTasks-CbTGc8HF.js";import{t as se}from"./Consumption-Bx30TMJY.js";import{t as ce}from"./ApiCodeButton-JslKaNUM.js";import{t as Q}from"./VideoPlayer-CYLsmg3y.js";var le=s({name:`LayoutVeo`,components:{ElDrawer:w,ElButton:_,FontAwesomeIcon:K},mixins:[Y]}),ue={class:`main flex flex-row flex-1`},de={class:`config w-[320px] flex-none h-full overflow-y-auto bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},fe={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function pe(t,n,ee,i,o,s){let c=f(`font-awesome-icon`),l=f(`el-button`),g=f(`el-drawer`);return u(),p(`div`,ue,[r(`div`,de,[e(t.$slots,`config`,{},void 0,!0)]),r(`div`,fe,[e(t.$slots,`result`,{},void 0,!0)]),h(a(l,{circle:``,class:`menu`,onClick:n[0]||=e=>t.drawer=!0},{default:m(()=>[a(c,{icon:`fa-solid fa-magic`})]),_:1},512),[[d,!t.tasksEmpty]]),a(g,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`350px`},{default:m(()=>[e(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var me=I(le,[[`render`,pe],[`__scopeId`,`data-v-12b82bc3`]]),he=s({name:`ModelSelector`,components:{ElSelect:v,ElOption:y},props:{modelValue:{type:String,default:void 0}},emits:[`update:modelValue`],data(){return{options:[{value:`veo2`,label:`veo2`},{value:`veo2-fast`,label:`veo2-fast`},{value:`veo3`,label:`veo3`},{value:`veo3-fast`,label:`veo3-fast`},{value:`veo31-fast`,label:`veo31-fast`},{value:`veo31`,label:`veo31`},{value:`veo31-fast-ingredients`,label:`veo31-fast-ingredients`}]}},computed:{value:{get(){return this.$store.state.veo?.config?.model},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,model:e})}}},mounted(){this.value||=A}}),ge={class:`field`},_e={class:`title font-bold`};function ve(e,t,ee,i,o,s){let d=f(`el-option`),h=f(`el-select`);return u(),p(`div`,ge,[r(`h2`,_e,l(e.$t(`veo.name.model`)),1),a(h,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`veo.placeholder.select`)},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(d,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var ye=I(he,[[`render`,ve],[`__scopeId`,`data-v-a59d89c9`]]),be=s({name:`ActionSelector`,components:{ElSelect:v,ElOption:y},data(){return{}},computed:{options(){return[{value:`text2video`,label:this.$t(`veo.button.action1`)},{value:`image2video`,label:this.$t(`veo.button.action2`)},{value:`ingredients2video`,label:this.$t(`veo.button.actionIngredients`)},{value:`upsample`,label:this.$t(`veo.button.actionUpsample`)},{value:`extend`,label:this.$t(`veo.button.actionExtend`)},{value:`reshoot`,label:this.$t(`veo.button.actionReshoot`)},{value:`object_insert`,label:this.$t(`veo.button.actionObjectInsert`)},{value:`object_remove`,label:this.$t(`veo.button.actionObjectRemove`)}]},value:{get(){return this.$store.state.veo?.config?.action},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo?.config,action:e})}}},mounted(){this.value||=M}}),xe={class:`field`},Se={class:`title font-bold`},Ce={class:`float-left`};function we(e,t,ee,i,o,s){let d=f(`el-option`),h=f(`el-select`);return u(),p(`div`,xe,[r(`h2`,Se,l(e.$t(`veo.name.action`)),1),a(h,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`veo.placeholder.select`),clearable:``},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(d,{key:e.value,label:e.label,value:e.value},{default:m(()=>[r(`span`,Ce,l(e.label),1)]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Te=I(be,[[`render`,we],[`__scopeId`,`data-v-f4d8785c`]]),Ee=s({name:`TranslationSelector`,components:{ElSwitch:T,InfoIcon:Z},computed:{value:{get(){return this.$store.state.veo?.config?.translation},set(e){console.debug(`set translation`,e),this.$store.commit(`veo/setConfig`,{...this.$store.state.veo?.config,translation:e})}}},mounted(){this.value===void 0&&(this.value=!1)}}),De={class:`relative`},Oe={class:`flex justify-between`},ke={class:`flex justify-start items-center`},Ae={class:`text-sm font-bold`},je={class:`flex justify-end items-center`};function Me(e,t,n,ee,i,o){let s=f(`info-icon`),c=f(`el-switch`);return u(),p(`div`,De,[r(`div`,Oe,[r(`div`,ke,[r(`span`,Ae,l(e.$t(`veo.name.translation`)),1),a(s,{content:e.$t(`veo.description.translation`)},null,8,[`content`])]),r(`div`,je,[a(c,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`},null,8,[`modelValue`])])])])}var Ne=I(Ee,[[`render`,Me]]),Pe=s({name:`AspectRatioSelector`,data(){return{options:[{value:`16:9`,label:`16:9`,width:25,height:13},{value:`9:16`,label:`9:16`,width:13,height:25}]}},computed:{active(){return this.options.findIndex(e=>e.value===this.value)||0},value:{get(){return this.$store.state.veo?.config?.aspect_ratio},set(e){console.debug(`set aspect_ratio`,e),this.$store.commit(`veo/setConfig`,{...this.$store.state?.veo?.config,aspect_ratio:e})}}},mounted(){this.value||=P}}),Fe={class:`text-sm font-bold mb-2 block`},Ie={class:`items`},Le=[`onClick`],Re={class:`name`};function ze(e,n,i,a,o,s){return u(),p(`div`,null,[r(`span`,Fe,l(e.$t(`veo.name.ratio`)),1),r(`div`,Ie,[(u(!0),p(g,null,c(e.options,(n,i)=>(u(),p(`div`,{key:i,class:t({active:e.active===i,item:!0}),onClick:t=>e.value=n.value},[r(`div`,{class:t([`preview`,n.label])},[r(`div`,{class:`rect`,style:ee({width:n.width+`px`,height:n.height+`px`})},null,4)],2),r(`p`,Re,l(n.label),1)],10,Le))),128))])])}var Be=I(Pe,[[`render`,ze],[`__scopeId`,`data-v-28c472c4`]]),Ve=s({name:`VideoFromInput`,components:{VideoPlayer:Q},props:{modelValue:{type:Object,required:!1,default:void 0}},data(){return{options:{quality:{default:`1080p`}}}},computed:{config(){return this.$store.state.veo?.config}}}),He={class:`relative`},Ue={class:`flex mb-2`},We={class:`text-sm font-bold`};function Ge(e,t,ee,i,a,s){let c=f(`video-player`);return u(),p(`div`,He,[r(`div`,Ue,[r(`span`,We,l(e.$t(`veo.name.action3`)),1)]),r(`div`,null,[e.config?.video_url?(u(),n(c,{key:0,src:e.config?.video_url},null,8,[`src`])):o(``,!0)])])}var Ke=I(Ve,[[`render`,Ge]]),qe=s({name:`VideoIdInput`,components:{ElInput:L},computed:{value:{get(){return this.$store.state.veo?.config?.video_id},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,video_id:e})}}}}),Je={class:`field`},Ye={class:`title font-bold`};function Xe(e,t,n,ee,i,o){let s=f(`el-input`);return u(),p(`div`,Je,[r(`h2`,Ye,l(e.$t(`veo.name.videoId`)),1),a(s,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,type:`text`,placeholder:e.$t(`veo.placeholder.videoId`),clearable:``},null,8,[`modelValue`,`placeholder`])])}var Ze=I(qe,[[`render`,Xe],[`__scopeId`,`data-v-6eba4026`]]),Qe=s({name:`StartEndImage`,components:{ElUpload:b,ElButton:_,InfoIcon:Z,FontAwesomeIcon:K,ImagePreview:J},mixins:[H,W],emits:[`change`],data(){return{fileList:[],uploadUrl:B()+`/api/v1/files/`}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url)},value:{get(){return this.$store.state?.veo?.config?.image_urls},set(){}}},mounted(){this.value||=void 0,this.onSetStartEndImageUrl()},methods:{onExceed(){U.warning(this.$t(`veo.message.uploadReferencesExceed`))},onError(){U.error(this.$t(`veo.message.uploadReferencesError`))},onSetStartEndImageUrl(){let e=this.urls;this.$store.commit(`veo/setConfig`,{...this.$store.state?.veo?.config,image_urls:e})},async onSuccess(){this.onSetStartEndImageUrl()}}}),$e={class:`relative`},et={class:`flex justify-between`},tt={class:`flex justify-start items-center`},nt={class:`text-sm font-bold`};function rt(e,t,ee,s,c,d){let h=f(`info-icon`),g=f(`image-preview`),_=f(`font-awesome-icon`),v=f(`el-button`),y=f(`el-upload`);return u(),p(`div`,$e,[r(`div`,et,[r(`div`,tt,[r(`span`,nt,l(e.$t(`veo.name.startEndImage`)),1),a(h,{content:e.$t(`veo.description.uploadStartEndImage`)},null,8,[`content`])])]),a(y,{ref:`uploader`,"file-list":e.fileList,"onUpdate:fileList":t[0]||=t=>e.fileList=t,name:`file`,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,limit:2,class:`upload-wrapper`,multiple:!1,action:e.uploadUrl,"list-type":`picture`,"on-exceed":e.onExceed,"on-error":e.onError,"on-success":e.onSuccess,headers:e.headers},{file:m(({file:t})=>[t.url&&t.percentage!==void 0?(u(),n(g,{key:0,url:t.url,name:t.name,percentage:t.percentage,onRemove:n=>e.fileList.splice(e.fileList.indexOf(t),1)},null,8,[`url`,`name`,`percentage`,`onRemove`])):o(``,!0)]),default:m(()=>[a(v,{round:``,type:`primary`,size:`small`,class:`btn btn-upload`},{default:m(()=>[a(_,{icon:`fa-solid fa-upload`,class:`icon mr-1`}),i(` `+l(e.$t(`veo.button.uploadReferences`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`headers`])])}var it=I(Qe,[[`render`,rt],[`__scopeId`,`data-v-f9a79b4a`]]),at=s({name:`UpsampleActionSelector`,components:{ElSelect:v,ElOption:y},computed:{options(){return k.map(e=>({value:e,label:e}))},value:{get(){return this.$store.state.veo?.config?.upsample_action},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,upsample_action:e})}}},mounted(){this.value||=D}}),ot={class:`field`},st={class:`title font-bold`};function ct(e,t,ee,i,o,s){let d=f(`el-option`),h=f(`el-select`);return u(),p(`div`,ot,[r(`h2`,st,l(e.$t(`veo.name.upsampleAction`)),1),a(h,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`veo.placeholder.select`)},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(d,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var lt=I(at,[[`render`,ct],[`__scopeId`,`data-v-8b74a7ae`]]),ut=s({name:`ExtendModelSelector`,components:{ElSelect:v,ElOption:y},computed:{options(){return O.map(e=>({value:e,label:e}))},value:{get(){return this.$store.state.veo?.config?.model},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,model:e})}}},mounted(){(!this.value||!O.includes(this.value))&&(this.value=E)}}),dt={class:`field`},ft={class:`title font-bold`};function pt(e,t,ee,i,o,s){let d=f(`el-option`),h=f(`el-select`);return u(),p(`div`,dt,[r(`h2`,ft,l(e.$t(`veo.name.model`)),1),a(h,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`veo.placeholder.select`)},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(d,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var mt=I(ut,[[`render`,pt],[`__scopeId`,`data-v-cc3f9355`]]),ht=s({name:`MotionTypeSelector`,components:{ElSelect:v,ElOption:y},computed:{options(){return j.map(e=>({value:e,label:e}))},value:{get(){return this.$store.state.veo?.config?.motion_type},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,motion_type:e})}}},mounted(){this.value||=F}}),gt={class:`field`},_t={class:`title font-bold`};function vt(e,t,ee,i,o,s){let d=f(`el-option`),h=f(`el-select`);return u(),p(`div`,gt,[r(`h2`,_t,l(e.$t(`veo.name.motionType`)),1),a(h,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,placeholder:e.$t(`veo.placeholder.select`),filterable:``},{default:m(()=>[(u(!0),p(g,null,c(e.options,e=>(u(),n(d,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var yt=I(ht,[[`render`,vt],[`__scopeId`,`data-v-3affff3c`]]),bt=s({name:`ImageMaskInput`,components:{ElInput:L},computed:{value:{get(){return this.$store.state.veo?.config?.image_mask},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo.config,image_mask:e})}}}}),xt={class:`field`},St={class:`title font-bold`};function Ct(e,t,n,ee,i,o){let s=f(`el-input`);return u(),p(`div`,xt,[r(`h2`,St,l(e.$t(`veo.name.imageMask`)),1),a(s,{modelValue:e.value,"onUpdate:modelValue":t[0]||=t=>e.value=t,class:`value`,type:`text`,placeholder:e.$t(`veo.placeholder.imageMask`),clearable:``},null,8,[`modelValue`,`placeholder`])])}var wt=I(bt,[[`render`,Ct],[`__scopeId`,`data-v-6cc27c68`]]),Tt=s({name:`PromptInput`,components:{PromptTextarea:ae},computed:{prompt:{get(){return this.$store.state.veo?.config?.prompt},set(e){this.$store.commit(`veo/setConfig`,{...this.$store.state.veo?.config,prompt:e})}}},mounted(){this.prompt||=``}});function Et(e,t,r,ee,i,a){let o=f(`prompt-textarea`);return u(),n(o,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`veo.name.prompt`),info:e.$t(`veo.description.prompt`),placeholder:e.$t(`veo.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var Dt=I(Tt,[[`render`,Et]]),Ot=[`upsample`,`extend`,`reshoot`,`object_insert`,`object_remove`,`get1080p`],kt=[`text2video`,`image2video`,`ingredients2video`],At=s({name:`ConfigPanel`,components:{ElButton:_,Consumption:se,FontAwesomeIcon:K,PromptInput:Dt,ModelSelector:ye,StartEndImage:it,ActionSelector:Te,VideoFromInput:Ke,VideoIdInput:Ze,UpsampleActionSelector:lt,ExtendModelSelector:mt,MotionTypeSelector:yt,ImageMaskInput:wt,TranslationSelector:Ne,AspectRatioSelector:Be},emits:[`generate`],computed:{config(){return this.$store.state.veo?.config},consumption(){return R(this.config,this.service?.cost)},service(){return this.$store.state.veo?.service},isPostProcessing(){return Ot.includes(this.config?.action??``)},isGeneration(){return kt.includes(this.config?.action??``)}},methods:{onGenerate(){this.$emit(`generate`)}}}),jt={class:`flex flex-col h-full`},Mt={class:`flex-1 overflow-y-auto p-5`},Nt={class:`flex flex-col items-center justify-center px-5 pb-5`};function Pt(e,t,ee,s,c,d){let h=f(`action-selector`),_=f(`video-from-input`),v=f(`video-id-input`),y=f(`upsample-action-selector`),b=f(`extend-model-selector`),x=f(`prompt-input`),S=f(`motion-type-selector`),C=f(`image-mask-input`),w=f(`translation-selector`),T=f(`aspect-ratio-selector`),E=f(`model-selector`),D=f(`start-end-image`),O=f(`consumption`),k=f(`font-awesome-icon`),A=f(`el-button`);return u(),p(`div`,jt,[r(`div`,Mt,[a(h,{class:`mb-4`}),e.isPostProcessing?(u(),p(g,{key:0},[e.config?.video_url?(u(),n(_,{key:0,class:`mb-4`})):o(``,!0),a(v,{class:`mb-4`})],64)):o(``,!0),e.config?.action===`upsample`?(u(),n(y,{key:1,class:`mb-4`})):o(``,!0),e.config?.action===`extend`?(u(),n(b,{key:2,class:`mb-4`})):o(``,!0),e.config?.action===`extend`?(u(),n(x,{key:3,class:`mb-4`})):o(``,!0),e.config?.action===`reshoot`?(u(),n(S,{key:4,class:`mb-4`})):o(``,!0),e.config?.action===`object_insert`?(u(),n(x,{key:5,class:`mb-4`})):o(``,!0),e.config?.action===`object_insert`||e.config?.action===`object_remove`?(u(),n(C,{key:6,class:`mb-4`})):o(``,!0),e.config?.action===`object_remove`?(u(),n(x,{key:7,class:`mb-4`})):o(``,!0),e.isGeneration?(u(),p(g,{key:8},[a(w,{class:`mb-4`}),a(T,{class:`mb-4`}),a(x,{class:`mb-4`}),e.config?.action===`ingredients2video`?o(``,!0):(u(),n(E,{key:0,class:`mb-4`})),e.config?.action===`image2video`||e.config?.action===`ingredients2video`?(u(),n(D,{key:1,class:`mb-2`})):o(``,!0)],64)):o(``,!0)]),r(`div`,Nt,[a(O,{value:e.consumption,service:e.service},null,8,[`value`,`service`]),a(A,{type:`primary`,class:`btn w-full`,round:``,onClick:e.onGenerate},{default:m(()=>[a(k,{icon:`fa-solid fa-magic`,class:`mr-2`}),i(` `+l(e.$t(`veo.button.generate`)),1)]),_:1},8,[`onClick`])])])}var Ft=I(At,[[`render`,Pt]]),It=s({name:`TaskPreview`,components:{ElImage:S,CopyToClipboard:q,FontAwesomeIcon:K,ElAlert:C,VideoPlayer:Q,ElTooltip:x,ElButton:_,ApiCodeButton:ce},props:{modelValue:{type:Object,required:!0}},data(){return{}},computed:{application(){return this.$store.state.veo?.application},config(){return this.$store.state.veo?.config}},methods:{onPickAction(e,t,n,r){console.debug(`seed config from preview`,{action:n,upsampleAction:r,response:t}),this.$store.commit(`veo/setConfig`,{...this.$store.state.veo?.config,action:n,video_id:t?.data?.[0]?.id,video_url:t?.data?.[0]?.video_url,...r?{upsample_action:r}:{}})},onDownload(e,t){e?.stopPropagation(),console.log(`on download`),window.open(t,`_blank`)},onOpenVideo(e){window.open(e,`_blank`)}}}),Lt={class:`preview`},Rt={class:`left`},zt={class:`main`},Bt={class:`bot`},Vt={class:`datetime`},Ht={class:`info`},Ut={key:0,class:`prompt mt-2`},Wt={key:0},Gt={key:1},Kt={key:0,class:t({content:!0,failed:!0})},qt={key:0,class:`mb-4`},Jt={key:1,class:t({operations:!0,"mt-2":!0})},Yt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Xt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Zt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Qt={key:1,class:t({content:!0})},$t={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},en={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},tn={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},nn={key:2,class:t({content:!0})},rn={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},an={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-0`};function on(e,t,ee,s,c,d){let h=f(`el-image`),g=f(`video-player`),_=f(`el-button`),v=f(`el-tooltip`),y=f(`api-code-button`),b=f(`font-awesome-icon`),x=f(`copy-to-clipboard`),S=f(`el-alert`);return u(),p(`div`,Lt,[r(`div`,Rt,[a(h,{src:`https://cdn.acedata.cloud/8nxyy9.jpg`,class:`avatar`})]),r(`div`,zt,[r(`div`,Bt,[i(l(e.$t(`veo.name.veoBot`))+` `,1),r(`span`,Vt,l(e.$dayjs.format(``+new Date(parseFloat((e.modelValue?.created_at||``).toString())*1e3))),1)]),r(`div`,Ht,[e.modelValue?.request?.prompt?(u(),p(`p`,Ut,[i(l(e.modelValue?.request?.prompt)+` `,1),e.modelValue?.response?o(``,!0):(u(),p(`span`,Wt,` - (`+l(e.$t(`veo.status.pending`))+`) `,1)),Array.isArray(e.modelValue?.response?.data)&&e.modelValue?.response?.data[0]?.state===`running`?(u(),p(`span`,Gt,` - (`+l(e.$t(`veo.status.processing`))+`) `,1)):o(``,!0)])):o(``,!0)]),e.modelValue?.response?.success===!0&&e.modelValue?.response?.data?(u(),p(`div`,Kt,[e.modelValue?.response?.data[0]?.video_url?(u(),p(`div`,qt,[a(g,{src:e.modelValue?.response?.data[0]?.video_url},null,8,[`src`])])):o(``,!0),e.modelValue?.response.success?(u(),p(`div`,Jt,[e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:0,type:`info`,size:`small`,class:`btn-action`,onClick:t[0]||=t=>e.onPickAction(t,e.modelValue?.response,`upsample`,`1080p`)},{default:m(()=>[i(l(e.$t(`veo.button.actionUpsample1080p`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:1,type:`info`,size:`small`,class:`btn-action`,onClick:t[1]||=t=>e.onPickAction(t,e.modelValue?.response,`upsample`,`4k`)},{default:m(()=>[i(l(e.$t(`veo.button.actionUpsample4k`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:2,type:`info`,size:`small`,class:`btn-action`,onClick:t[2]||=t=>e.onPickAction(t,e.modelValue?.response,`upsample`,`gif`)},{default:m(()=>[i(l(e.$t(`veo.button.actionUpsampleGif`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:3,type:`info`,size:`small`,class:`btn-action`,onClick:t[3]||=t=>e.onPickAction(t,e.modelValue?.response,`extend`)},{default:m(()=>[i(l(e.$t(`veo.button.actionExtend`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:4,type:`info`,size:`small`,class:`btn-action`,onClick:t[4]||=t=>e.onPickAction(t,e.modelValue?.response,`reshoot`)},{default:m(()=>[i(l(e.$t(`veo.button.actionReshoot`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:5,type:`info`,size:`small`,class:`btn-action`,onClick:t[5]||=t=>e.onPickAction(t,e.modelValue?.response,`object_insert`)},{default:m(()=>[i(l(e.$t(`veo.button.actionObjectInsert`)),1)]),_:1})):o(``,!0),e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:6,type:`info`,size:`small`,class:`btn-action`,onClick:t[6]||=t=>e.onPickAction(t,e.modelValue?.response,`object_remove`)},{default:m(()=>[i(l(e.$t(`veo.button.actionObjectRemove`)),1)]),_:1})):o(``,!0),a(v,{class:`box-item`,effect:`dark`,content:e.$t(`veo.message.downloadVideo`),placement:`top-start`},{default:m(()=>[e.modelValue?.response?.data[0]?.video_url?(u(),n(_,{key:0,type:`info`,size:`small`,class:`btn-action`,onClick:t[7]||=t=>e.onDownload(t,e.modelValue?.response?.data[0]?.video_url)},{default:m(()=>[i(l(e.$t(`veo.button.download`)),1)]),_:1})):o(``,!0)]),_:1},8,[`content`]),a(y,{path:`/veo/videos`,body:e.modelValue?.request},null,8,[`body`])])):o(``,!0),a(S,{closable:!1,class:`mt-2 success`},{default:m(()=>[r(`p`,Yt,[a(b,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.model`))+`: `+l(e.modelValue?.request?.model),1)]),r(`p`,Xt,[a(b,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(x,{content:e.modelValue?.id},null,8,[`content`])]),e.modelValue?.elapsed?(u(),p(`p`,Zt,[a(b,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.elapsed`))+`: `+l(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0)]),_:1})])):o(``,!0),e.modelValue?.response?.success===!1?(u(),p(`div`,Qt,[a(S,{closable:!1,class:`failure`},{template:m(()=>[a(b,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.failure`)),1)]),default:m(()=>[r(`p`,$t,[a(b,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(x,{content:e.modelValue?.id},null,8,[`content`])]),r(`p`,en,[a(b,{icon:`fa-solid fa-circle-info`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.failureReason`))+`: `+l(e.modelValue?.response?.error?.message)+` `,1),a(x,{content:e.modelValue?.response?.error?.message},null,8,[`content`])]),e.modelValue?.elapsed?(u(),p(`p`,$,[a(b,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.elapsed`))+`: `+l(e.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),e.modelValue?.response?.trace_id?(u(),p(`p`,tn,[a(b,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.traceId`))+`: `+l(e.modelValue?.response?.trace_id)+` `,1),a(x,{content:e.modelValue?.response?.trace_id},null,8,[`content`])])):o(``,!0)]),_:1})])):o(``,!0),e.modelValue?.response?.success===void 0?(u(),p(`div`,nn,[a(S,{closable:!1,class:`info`},{template:m(()=>[a(b,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.failure`)),1)]),default:m(()=>[r(`p`,rn,[a(b,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.taskId`))+`: `+l(e.modelValue?.id)+` `,1),a(x,{content:e.modelValue?.id},null,8,[`content`])]),e.modelValue?.response?.trace_id?(u(),p(`p`,an,[a(b,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(e.$t(`veo.name.traceId`))+`: `+l(e.modelValue?.response?.trace_id)+` `,1),a(x,{content:e.modelValue?.response?.trace_id},null,8,[`content`])])):o(``,!0)]),_:1})])):o(``,!0)])])}var sn=s({name:`RecentPanel`,components:{TaskPreview:I(It,[[`render`,on],[`__scopeId`,`data-v-9698fe5f`]]),NoTasks:oe,BotPlaceholder:X,ScrollList:re},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.veo?.tasks,items:this.$store.state.veo?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),cn={key:0},ln={key:2,class:`w-full h-full flex items-center justify-center`};function un(e,t,r,ee,i,s){let l=f(`bot-placeholder`),d=f(`task-preview`),h=f(`scroll-list`),_=f(`no-tasks`);return u(),p(g,null,[e.tasks?.items===void 0?(u(),p(`div`,cn,[a(l)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(u(),n(h,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:m(()=>[(u(!0),p(g,null,c(e.tasks?.items,(e,t)=>(u(),n(d,{key:t,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(u(),p(`div`,ln,[a(_)])):o(``,!0)],64)}var dn=I(sn,[[`render`,un]]),fn=N(`veo`),pn=s({name:`VeoIndex`,components:{ConfigPanel:Ft,Layout:me,RecentPanel:dn},mixins:[te],inject:[`initialized`],data(){return{task:void 0,job:0,loadingMore:!1,fetchingTasks:!1}},computed:{applicationsLoading(){return this.$store.state.veo?.status?.getApplications===G.Request},tasksLoading(){return this.$store.state.veo?.status?.getTasks===G.Request||this.fetchingTasks},credential(){return this.$store.state.veo.credential},config(){return this.$store.state.veo.config},tasks(){return this.$store.state.veo.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await ie({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loadingMore,setLoading:e=>this.loadingMore=e,isBlocked:()=>this.tasksLoading||this.applicationsLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`veo/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`veo/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.fetchingTasks){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=5,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),this.fetchingTasks=!0;try{await this.$store.dispatch(`veo/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})}finally{this.fetchingTasks=!1}},async onGenerate(){if(!z(this.uploadTracker,e=>this.$t(e),e=>U.warning(e)))return;let e={...this.config,callback_url:fn},t=this.credential?.token;if(!t){console.error(`no token specified`);return}if(e.action===`image2video`&&!(e.image_urls&&e.image_urls.length>0)){U.warning(this.$t(`veo.message.imageRequired`));return}(!e.image_urls||e.image_urls.length===0)&&delete e.image_urls,U.info(this.$t(`veo.message.startingTask`)),ne(`veo`,V.generate(e,{token:t})).then(()=>{U.success(this.$t(`veo.message.startTaskSuccess`))}).catch(e=>{(e?.response?.data)?.error?.code===`used_up`?U.error(this.$t(`veo.message.usedUp`)):U.error(this.$t(`veo.message.startTaskFailed`))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function mn(e,t,r,ee,i,o){let s=f(`config-panel`),c=f(`recent-panel`),l=f(`layout`);return u(),n(l,null,{config:m(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:m(()=>[a(c,{ref:`recentPanel`,loading:e.loadingMore,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var hn=I(pn,[[`render`,mn]]);export{hn as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`Device ID`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`Session ID`,description:`Diagnostic label for the session id`},"session.traceId":{message:`Trace ID`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Retry`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`History`,description:`Open the conversation history drawer`},"history.title":{message:`Conversation history`,description:`History drawer title`},"history.intro":{message:`Past Claude Code & Codex sessions on this device.`,description:`History drawer intro`},"history.refresh":{message:`Refresh`,description:`Reload the history list`},"history.loading":{message:`Loading history…`,description:`History loading message`},"history.empty":{message:`No history found on this device.`,description:`Empty history message`},"history.messages":{message:`{count} messages`,description:`History item message count`},"history.readonly":{message:`This Codex conversation is read-only and cannot be continued. Start a new session to keep coding.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Sending a message will resume this conversation on the device.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Claude history`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Codex history (read-only)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Permission mode`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`Default (ask each time)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Auto-accept edits`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Plan mode (read-only)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Bypass all permissions`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Backend`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(not installed)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} is not installed on this device.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Reasoning effort`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`Default`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Low`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Medium`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`High`,description:`Reasoning effort: high`},"session.effortMax":{message:`Max`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Choose working directory`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Use this directory`,description:`Button: select the current directory`},"directory.up":{message:`Parent directory`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Refresh`,description:`Button: reload the current directory`},"directory.loading":{message:`Loading…`,description:`Directory listing loading hint`},"directory.empty":{message:`This directory is empty.`,description:`Empty directory hint`},"directory.truncated":{message:`Showing the first 1000 entries.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Attach image`,description:`Attach image button title`},"session.removeImage":{message:`Remove image`,description:`Remove attached image button title`},"session.imageAlt":{message:`Attached image`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Image is too large; keep each under 12 MB.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`You can attach up to {count} images.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} is an interactive command and isn't available in a remote session.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} isn't available for Codex in a remote session.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Enable notifications`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Disable notifications`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Notifications enabled. We'll alert you when a session needs approval.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Notifications disabled.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Notifications are blocked. Allow them in your browser settings to get approval alerts.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Notifications aren't supported on this device.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Couldn't update notification settings.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`デバイス ID`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`セッション ID`,description:`Diagnostic label for the session id`},"session.traceId":{message:`トレース ID`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`再試行`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`履歴`,description:`Open the conversation history drawer`},"history.title":{message:`会話履歴`,description:`History drawer title`},"history.intro":{message:`このデバイス上の過去の Claude Code および Codex セッション。`,description:`History drawer intro`},"history.refresh":{message:`更新`,description:`Reload the history list`},"history.loading":{message:`履歴を読み込み中…`,description:`History loading message`},"history.empty":{message:`このデバイスに履歴が見つかりません。`,description:`Empty history message`},"history.messages":{message:`{count} 件のメッセージ`,description:`History item message count`},"history.readonly":{message:`この Codex の会話は読み取り専用で続行できません。コーディングを続けるには新しいセッションを開始してください。`,description:`Read-only replay notice`},"history.resumeHint":{message:`メッセージを送信すると、デバイス上でこの会話が再開されます。`,description:`Resume composer hint`},"history.claudeLabel":{message:`Claude 履歴`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Codex 履歴(読み取り専用)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`権限モード`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`デフォルト(毎回確認)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`編集を自動承認`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`プランモード(読み取り専用)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`すべての権限をバイパス`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`バックエンド`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(未インストール)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} はこのデバイスにインストールされていません。`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`推論の強度`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`デフォルト`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`低`,description:`Reasoning effort: low`},"session.effortMedium":{message:`中`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`高`,description:`Reasoning effort: high`},"session.effortMax":{message:`最大`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`作業ディレクトリを選択`,description:`Working-directory picker dialog title`},"directory.choose":{message:`このディレクトリを使用`,description:`Button: select the current directory`},"directory.up":{message:`親ディレクトリ`,description:`Button: go to the parent directory`},"directory.refresh":{message:`更新`,description:`Button: reload the current directory`},"directory.loading":{message:`読み込み中…`,description:`Directory listing loading hint`},"directory.empty":{message:`このディレクトリは空です。`,description:`Empty directory hint`},"directory.truncated":{message:`最初の 1000 件を表示しています。`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`画像を添付`,description:`Attach image button title`},"session.removeImage":{message:`画像を削除`,description:`Remove attached image button title`},"session.imageAlt":{message:`添付された画像`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`画像が大きすぎます。1 枚あたり 12 MB 以内にしてください。`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`画像は最大 {count} 枚まで添付できます。`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} は対話型コマンドのため、リモートセッションでは実行できません。`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} はリモートセッションの Codex では利用できません。`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`通知を有効にする`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`通知を無効にする`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`通知を有効にしました。セッションで承認が必要なときにお知らせします。`,description:`Toast after enabling notifications`},"notify.disabled":{message:`通知を無効にしました。`,description:`Toast after disabling notifications`},"notify.denied":{message:`通知がブロックされています。承認通知を受け取るにはブラウザの設定で許可してください。`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`このデバイスでは通知がサポートされていません。`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`通知設定を更新できませんでした。`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`Enhets-ID`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`Sessions-ID`,description:`Diagnostic label for the session id`},"session.traceId":{message:`Spårnings-ID`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Försök igen`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`Historik`,description:`Open the conversation history drawer`},"history.title":{message:`Konversationshistorik`,description:`History drawer title`},"history.intro":{message:`Tidigare Claude Code- och Codex-sessioner på den här enheten.`,description:`History drawer intro`},"history.refresh":{message:`Uppdatera`,description:`Reload the history list`},"history.loading":{message:`Laddar historik…`,description:`History loading message`},"history.empty":{message:`Ingen historik hittades på den här enheten.`,description:`Empty history message`},"history.messages":{message:`{count} meddelanden`,description:`History item message count`},"history.readonly":{message:`Den här Codex-konversationen är skrivskyddad och kan inte fortsättas. Starta en ny session för att fortsätta koda.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Att skicka ett meddelande återupptar konversationen på enheten.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Claude-historik`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Codex-historik (skrivskyddad)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Behörighetsläge`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`Standard (fråga varje gång)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Acceptera ändringar automatiskt`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Planeringsläge (skrivskyddat)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Kringgå alla behörigheter`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Backend`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(inte installerat)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} är inte installerat på den här enheten.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Resonemangsnivå`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`Standard`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Låg`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Medel`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`Hög`,description:`Reasoning effort: high`},"session.effortMax":{message:`Max`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Välj arbetskatalog`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Använd den här katalogen`,description:`Button: select the current directory`},"directory.up":{message:`Överordnad katalog`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Uppdatera`,description:`Button: reload the current directory`},"directory.loading":{message:`Läser in…`,description:`Directory listing loading hint`},"directory.empty":{message:`Den här katalogen är tom.`,description:`Empty directory hint`},"directory.truncated":{message:`Visar de första 1000 posterna.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Bifoga bild`,description:`Attach image button title`},"session.removeImage":{message:`Ta bort bild`,description:`Remove attached image button title`},"session.imageAlt":{message:`Bifogad bild`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Bilden är för stor; håll varje under 12 MB.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`Du kan bifoga upp till {count} bilder.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} är ett interaktivt kommando och kan inte köras i en fjärrsession.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} är inte tillgängligt för Codex i en fjärrsession.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Aktivera aviseringar`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Inaktivera aviseringar`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Aviseringar aktiverade. Vi meddelar dig när en session behöver godkännande.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Aviseringar inaktiverade.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Aviseringar är blockerade. Tillåt dem i webbläsarinställningarna för att få godkännandeaviseringar.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Aviseringar stöds inte på den här enheten.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Det gick inte att uppdatera aviseringsinställningarna.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`ID uređaja`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`ID sesije`,description:`Diagnostic label for the session id`},"session.traceId":{message:`ID praćenja`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Покушај поново`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`Историја`,description:`Open the conversation history drawer`},"history.title":{message:`Историја разговора`,description:`History drawer title`},"history.intro":{message:`Претходне Claude Code и Codex сесије на овом уређају.`,description:`History drawer intro`},"history.refresh":{message:`Освежи`,description:`Reload the history list`},"history.loading":{message:`Учитавање историје…`,description:`History loading message`},"history.empty":{message:`Историја није пронађена на овом уређају.`,description:`Empty history message`},"history.messages":{message:`Поруке: {count}`,description:`History item message count`},"history.readonly":{message:`Овај Codex разговор је само за читање и не може се наставити. Покрените нову сесију да наставите са кодирањем.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Слање поруке ће наставити овај разговор на уређају.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Claude историја`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Codex историја (само за читање)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Режим дозвола`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`Подразумевано (питај сваки пут)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Аутоматски прихватај измене`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Режим планирања (само за читање)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Заобиђи све дозволе`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Бекенд`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(није инсталирано)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} није инсталиран на овом уређају.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Ниво размишљања`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`Подразумевано`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Низак`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Средњи`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`Висок`,description:`Reasoning effort: high`},"session.effortMax":{message:`Максималан`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Изаберите радни директоријум`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Користи овај директоријум`,description:`Button: select the current directory`},"directory.up":{message:`Надређени директоријум`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Освежи`,description:`Button: reload the current directory`},"directory.loading":{message:`Учитавање…`,description:`Directory listing loading hint`},"directory.empty":{message:`Овај директоријум је празан.`,description:`Empty directory hint`},"directory.truncated":{message:`Приказано првих 1000 ставки.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Приложи слику`,description:`Attach image button title`},"session.removeImage":{message:`Уклони слику`,description:`Remove attached image button title`},"session.imageAlt":{message:`Приложена слика`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Слика је превелика; нека свака буде испод 12 MB.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`Можеш приложити највише {count} слика.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} је интерактивна команда и не може да се изврши у удаљеној сесији.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} није доступна за Codex у удаљеној сесији.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Омогући обавештења`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Онемогући обавештења`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Обавештења су омогућена. Обавестићемо вас када сесија захтева одобрење.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Обавештења су онемогућена.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Обавештења су блокирана. Дозволите их у подешавањима прегледача да бисте примали обавештења о одобрењу.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Обавештења нису подржана на овом уређају.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Ажурирање подешавања обавештења није успело.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`ID пристрою`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`ID сеансу`,description:`Diagnostic label for the session id`},"session.traceId":{message:`ID трасування`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Повторити`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`Історія`,description:`Open the conversation history drawer`},"history.title":{message:`Історія розмов`,description:`History drawer title`},"history.intro":{message:`Попередні сесії Claude Code та Codex на цьому пристрої.`,description:`History drawer intro`},"history.refresh":{message:`Оновити`,description:`Reload the history list`},"history.loading":{message:`Завантаження історії…`,description:`History loading message`},"history.empty":{message:`Історію на цьому пристрої не знайдено.`,description:`Empty history message`},"history.messages":{message:`Повідомлень: {count}`,description:`History item message count`},"history.readonly":{message:`Ця розмова Codex доступна лише для читання й не може бути продовжена. Почніть нову сесію, щоб продовжити програмувати.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Надсилання повідомлення відновить цю розмову на пристрої.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Історія Claude`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Історія Codex (лише читання)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Режим дозволів`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`За замовчуванням (запитувати щоразу)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Автоматично приймати зміни`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Режим планування (лише читання)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Обійти всі дозволи`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Бекенд`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(не встановлено)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} не встановлено на цьому пристрої.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Рівень міркувань`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`За замовчуванням`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Низький`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Середній`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`Високий`,description:`Reasoning effort: high`},"session.effortMax":{message:`Максимальний`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Виберіть робочий каталог`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Використати цей каталог`,description:`Button: select the current directory`},"directory.up":{message:`Батьківський каталог`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Оновити`,description:`Button: reload the current directory`},"directory.loading":{message:`Завантаження…`,description:`Directory listing loading hint`},"directory.empty":{message:`Цей каталог порожній.`,description:`Empty directory hint`},"directory.truncated":{message:`Показано перші 1000 записів.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Прикріпити зображення`,description:`Attach image button title`},"session.removeImage":{message:`Видалити зображення`,description:`Remove attached image button title`},"session.imageAlt":{message:`Прикріплене зображення`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Зображення занадто велике; кожне має бути менше 12 МБ.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`Можна прикріпити до {count} зображень.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} — інтерактивна команда, її не можна виконати у віддаленому сеансі.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} недоступна для Codex у віддаленому сеансі.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Увімкнути сповіщення`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Вимкнути сповіщення`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Сповіщення ввімкнено. Ми повідомимо, коли сесія потребуватиме підтвердження.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Сповіщення вимкнено.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Сповіщення заблоковано. Дозвольте їх у налаштуваннях браузера, щоб отримувати сповіщення про підтвердження.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Сповіщення не підтримуються на цьому пристрої.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Не вдалося оновити налаштування сповіщень.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`Geräte-ID`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`Sitzungs-ID`,description:`Diagnostic label for the session id`},"session.traceId":{message:`Trace-ID`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Erneut versuchen`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`Verlauf`,description:`Open the conversation history drawer`},"history.title":{message:`Konversationsverlauf`,description:`History drawer title`},"history.intro":{message:`Frühere Claude-Code- und Codex-Sitzungen auf diesem Gerät.`,description:`History drawer intro`},"history.refresh":{message:`Aktualisieren`,description:`Reload the history list`},"history.loading":{message:`Verlauf wird geladen…`,description:`History loading message`},"history.empty":{message:`Kein Verlauf auf diesem Gerät gefunden.`,description:`Empty history message`},"history.messages":{message:`{count} Nachrichten`,description:`History item message count`},"history.readonly":{message:`Diese Codex-Konversation ist schreibgeschützt und kann nicht fortgesetzt werden. Starte eine neue Sitzung, um weiterzuarbeiten.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Eine Nachricht setzt diese Konversation auf dem Gerät fort.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Claude-Verlauf`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Codex-Verlauf (schreibgeschützt)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Berechtigungsmodus`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`Standard (jedes Mal fragen)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Änderungen automatisch akzeptieren`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Planungsmodus (schreibgeschützt)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Alle Berechtigungen umgehen`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Backend`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(nicht installiert)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} ist auf diesem Gerät nicht installiert.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Denkaufwand`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`Standard`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Niedrig`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Mittel`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`Hoch`,description:`Reasoning effort: high`},"session.effortMax":{message:`Maximal`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Arbeitsverzeichnis wählen`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Dieses Verzeichnis verwenden`,description:`Button: select the current directory`},"directory.up":{message:`Übergeordnetes Verzeichnis`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Aktualisieren`,description:`Button: reload the current directory`},"directory.loading":{message:`Wird geladen…`,description:`Directory listing loading hint`},"directory.empty":{message:`Dieses Verzeichnis ist leer.`,description:`Empty directory hint`},"directory.truncated":{message:`Die ersten 1000 Einträge werden angezeigt.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Bild anhängen`,description:`Attach image button title`},"session.removeImage":{message:`Bild entfernen`,description:`Remove attached image button title`},"session.imageAlt":{message:`Angehängtes Bild`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Bild ist zu groß; halte jedes unter 12 MB.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`Du kannst bis zu {count} Bilder anhängen.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} ist ein interaktiver Befehl und kann in einer Remote-Sitzung nicht ausgeführt werden.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} ist für Codex in einer Remote-Sitzung nicht verfügbar.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Benachrichtigungen aktivieren`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Benachrichtigungen deaktivieren`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Benachrichtigungen aktiviert. Wir melden uns, wenn eine Sitzung eine Freigabe benötigt.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Benachrichtigungen deaktiviert.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Benachrichtigungen sind blockiert. Erlaube sie in deinen Browser-Einstellungen, um Freigabe-Hinweise zu erhalten.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Benachrichtigungen werden auf diesem Gerät nicht unterstützt.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Benachrichtigungseinstellungen konnten nicht aktualisiert werden.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};
@@ -1 +0,0 @@
1
- var e={"nodeList.title":{message:`Devices`,description:`Coding Bridge device list title`},"nodeList.refresh":{message:`Refresh`,description:`Refresh the device list`},"nodeList.pair":{message:`Pair device`,description:`Open the pairing dialog`},"nodeList.empty":{message:`No devices paired yet.`,description:`Empty device list message`},"nodeList.pairFirst":{message:`Pair your first device`,description:`Empty-state pairing button`},"nodeList.remove":{message:`Remove`,description:`Remove a device`},"nodeList.removeConfirm":{message:`Remove device "{name}"? It will need to be paired again.`,description:`Device removal confirmation`},"nodeList.removeSuccess":{message:`Device removed.`,description:`Device removed toast`},"nodeList.removeFailed":{message:`Failed to remove device.`,description:`Device removal error toast`},"status.online":{message:`Online`,description:`Device online status`},"status.offline":{message:`Offline`,description:`Device offline status`},"connection.disconnected":{message:`Disconnected`,description:`Relay connection disconnected`},"connection.connecting":{message:`Connecting…`,description:`Relay connection connecting`},"connection.connected":{message:`Connected`,description:`Relay connection connected`},"connection.error":{message:`Connection error`,description:`Relay connection error`},"pair.title":{message:`Pair a device`,description:`Pairing dialog title`},"pair.intro":{message:`Run the Coding Bridge agent on your computer, then enter its pairing code here to control it from the web.`,description:`Pairing dialog intro`},"pair.step1":{message:`Install the agent (requires Python 3.10+):`,description:`Pairing step 1`},"pair.step2":{message:`Start it and follow the prompt:`,description:`Pairing step 2`},"pair.step3":{message:`Enter the pairing code it shows below.`,description:`Pairing step 3`},"pair.codePlaceholder":{message:`Pairing code`,description:`Pairing code input placeholder`},"pair.claim":{message:`Pair device`,description:`Pairing confirm button`},"pair.success":{message:`Device "{name}" paired.`,description:`Pairing success toast`},"pair.invalidCode":{message:`Invalid or expired pairing code.`,description:`Pairing invalid code error`},"pair.usedCode":{message:`This pairing code has already been used.`,description:`Pairing used code error`},"pair.failed":{message:`Failed to pair device.`,description:`Pairing generic error`},"permission.title":{message:`Permission required`,description:`Permission dialog title`},"permission.subtitle":{message:`The agent wants to use a tool. Approve to continue.`,description:`Permission dialog subtitle`},"permission.deny":{message:`Deny`,description:`Deny a tool permission`},"permission.allow":{message:`Allow`,description:`Allow a tool permission`},"session.noDevice":{message:`Select a device to start coding.`,description:`No device selected placeholder`},"session.newSession":{message:`New session`,description:`Start a new session`},"session.deviceOffline":{message:`This device is offline. Start the Coding Bridge agent on it to continue.`,description:`Device offline warning`},"session.nodeId":{message:`Identyfikator urządzenia`,description:`Diagnostic label for the node id`},"session.sessionId":{message:`Identyfikator sesji`,description:`Diagnostic label for the session id`},"session.traceId":{message:`Identyfikator śledzenia`,description:`Diagnostic label for the trace id`},"session.startHint":{message:`Send a message to start a session on this device.`,description:`Empty transcript hint`},"session.cwdPlaceholder":{message:`Working directory (optional)`,description:`Working directory input placeholder`},"session.modelPlaceholder":{message:`Model (optional)`,description:`Model input placeholder`},"session.promptPlaceholder":{message:`Send a message to the agent…`,description:`Prompt input placeholder`},"session.send":{message:`Send`,description:`Send prompt button`},"session.retry":{message:`Ponów`,description:`Re-run the last prompt after a failure`},"session.editPrompt":{message:`Edit`,description:`Edit a sent prompt and resend it as a new turn`},"session.editingBanner":{message:`Editing — sending rewinds the conversation to this point.`,description:`Banner shown while editing a past prompt`},"session.editRestoreCode":{message:`Also restore code`,description:`Checkbox to also roll back file changes when editing`},"session.editCancel":{message:`Cancel`,description:`Cancel editing a past prompt`},"session.editSubmit":{message:`Update`,description:`Submit an edited prompt (rewind and re-run)`},"session.enterHint":{message:`Enter to send, Shift+Enter for a new line.`,description:`Composer keyboard hint`},"transcript.turnFailed":{message:`Turn failed`,description:`Turn result failed label`},"transcript.turnDone":{message:`Done`,description:`Turn result done label`},"history.button":{message:`Historia`,description:`Open the conversation history drawer`},"history.title":{message:`Historia rozmów`,description:`History drawer title`},"history.intro":{message:`Poprzednie sesje Claude Code i Codex na tym urządzeniu.`,description:`History drawer intro`},"history.refresh":{message:`Odśwież`,description:`Reload the history list`},"history.loading":{message:`Ładowanie historii…`,description:`History loading message`},"history.empty":{message:`Nie znaleziono historii na tym urządzeniu.`,description:`Empty history message`},"history.messages":{message:`Wiadomości: {count}`,description:`History item message count`},"history.readonly":{message:`Ta rozmowa Codex jest tylko do odczytu i nie można jej kontynuować. Rozpocznij nową sesję, aby kontynuować kodowanie.`,description:`Read-only replay notice`},"history.resumeHint":{message:`Wysłanie wiadomości wznowi tę rozmowę na urządzeniu.`,description:`Resume composer hint`},"history.claudeLabel":{message:`Historia Claude`,description:`Replayed Claude session label`},"history.codexLabel":{message:`Historia Codex (tylko do odczytu)`,description:`Replayed Codex session label`},"session.permissionModeLabel":{message:`Tryb uprawnień`,description:`Permission-mode selector label`},"session.permissionModeDefault":{message:`Domyślny (pytaj za każdym razem)`,description:`Permission mode: ask before each tool use`},"session.permissionModeAcceptEdits":{message:`Automatycznie akceptuj zmiany`,description:`Permission mode: auto-accept file edits`},"session.permissionModePlan":{message:`Tryb planowania (tylko do odczytu)`,description:`Permission mode: read-only planning`},"session.permissionModeBypass":{message:`Pomiń wszystkie uprawnienia`,description:`Permission mode: bypass all permission prompts`},"session.providerLabel":{message:`Backend`,description:`Agent backend selector label`},"session.providerClaude":{message:`Claude Code`,description:`Backend option: Claude Code`},"session.providerCodex":{message:`Codex`,description:`Backend option: Codex`},"session.providerUnavailable":{message:`(niezainstalowane)`,description:`Suffix shown next to a backend whose CLI is not installed on the node`},"session.providerUnavailableHint":{message:`{name} nie jest zainstalowany na tym urządzeniu.`,description:`Composer hint shown when the selected backend is not installed on the node`},"session.effortLabel":{message:`Wysiłek rozumowania`,description:`Reasoning-effort selector label`},"session.effortDefault":{message:`Domyślny`,description:`Reasoning effort: backend default`},"session.effortLow":{message:`Niski`,description:`Reasoning effort: low`},"session.effortMedium":{message:`Średni`,description:`Reasoning effort: medium`},"session.effortHigh":{message:`Wysoki`,description:`Reasoning effort: high`},"session.effortMax":{message:`Maksymalny`,description:`Reasoning effort: maximum (Claude only)`},"directory.title":{message:`Wybierz katalog roboczy`,description:`Working-directory picker dialog title`},"directory.choose":{message:`Użyj tego katalogu`,description:`Button: select the current directory`},"directory.up":{message:`Katalog nadrzędny`,description:`Button: go to the parent directory`},"directory.refresh":{message:`Odśwież`,description:`Button: reload the current directory`},"directory.loading":{message:`Ładowanie…`,description:`Directory listing loading hint`},"directory.empty":{message:`Ten katalog jest pusty.`,description:`Empty directory hint`},"directory.truncated":{message:`Wyświetlono pierwsze 1000 pozycji.`,description:`Hint shown when the listing was truncated`},"session.attachImage":{message:`Załącz obraz`,description:`Attach image button title`},"session.removeImage":{message:`Usuń obraz`,description:`Remove attached image button title`},"session.imageAlt":{message:`Załączony obraz`,description:`Attached image thumbnail alt text`},"session.imageTooLarge":{message:`Obraz jest za duży; każdy powinien mieć mniej niż 12 MB.`,description:`Warning shown when an image exceeds the size limit`},"session.imageLimit":{message:`Możesz załączyć maksymalnie {count} obrazów.`,description:`Warning shown when exceeding the max number of images`},"session.modelDefault":{message:`Default model`,description:`Default model`},"session.cwdDefault":{message:`Default directory`,description:`Default directory`},"session.settings":{message:`Session settings`,description:`Session settings`},"session.settingsLocked":{message:`Settings are locked for this session`,description:`Settings are locked for this session`},"session.attachFile":{message:`Attach file`,description:`Attach file`},"session.attachmentImageAlt":{message:`Attached image`,description:`Attached image`},"session.removeAttachment":{message:`Remove attachment`,description:`Remove attachment`},"session.uploadingAttachment":{message:`Uploading attachments…`,description:`Uploading attachments…`},"session.attachmentTooLarge":{message:`File is too large; keep each under 50 MB.`,description:`File is too large; keep each under 50 MB.`},"session.attachmentLimit":{message:`You can attach up to {count} files.`,description:`You can attach up to {count} files.`},"session.attachmentUploadError":{message:`Failed to upload attachment.`,description:`Failed to upload attachment.`},"notice.slashUnavailable":{message:`/{command} to polecenie interaktywne i nie może działać w sesji zdalnej.`,description:`Notice shown when a slash command can't run in a remote session`},"notice.slashCodexUnsupported":{message:`/{command} nie jest dostępne dla Codex w sesji zdalnej.`,description:`Notice shown when a Codex slash command isn't supported remotely`},"notify.enable":{message:`Włącz powiadomienia`,description:`Tooltip on the notification bell when notifications are off`},"notify.disable":{message:`Wyłącz powiadomienia`,description:`Tooltip on the notification bell when notifications are on`},"notify.enabled":{message:`Powiadomienia włączone. Powiadomimy Cię, gdy sesja będzie wymagać zatwierdzenia.`,description:`Toast after enabling notifications`},"notify.disabled":{message:`Powiadomienia wyłączone.`,description:`Toast after disabling notifications`},"notify.denied":{message:`Powiadomienia są zablokowane. Zezwól na nie w ustawieniach przeglądarki, aby otrzymywać alerty o zatwierdzeniu.`,description:`Toast when notification permission is denied`},"notify.unsupported":{message:`Powiadomienia nie są obsługiwane na tym urządzeniu.`,description:`Toast when notifications are unsupported`},"notify.failed":{message:`Nie udało się zaktualizować ustawień powiadomień.`,description:`Toast when enabling or disabling notifications errors`}};export{e as default};