@acedatacloud/nexior 3.274.3 → 3.275.1

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 (152) hide show
  1. package/dist/assets/{ApiCodeButton-Bfe1fDwO.js → ApiCodeButton-CL6ciDmX.js} +1 -1
  2. package/dist/assets/{AskUserQuestionCard-DJ0vw5fH.js → AskUserQuestionCard-B7Z6NzP0.js} +1 -1
  3. package/dist/assets/{Auth-BCnq2ZMi.js → Auth-CGjCUwG-.js} +1 -1
  4. package/dist/assets/{Bare-j1zauGsF.js → Bare-J4FlkDtn.js} +1 -1
  5. package/dist/assets/{BotPlaceholder-BSK6Rf4y.js → BotPlaceholder-BARA09Kj.js} +1 -1
  6. package/dist/assets/{BottomFooter-C1F986Ol.js → BottomFooter-66LrF-d1.js} +1 -1
  7. package/dist/assets/{Callback-wA2b-1nr.js → Callback-D1Ay6kkn.js} +1 -1
  8. package/dist/assets/{Console-C8YqyhMg.js → Console-wjfJh4ih.js} +1 -1
  9. package/dist/assets/{Consumption-Jipz0FdC.js → Consumption-D7b3b2d3.js} +1 -1
  10. package/dist/assets/Conversation-C1tGUSBW.js +3 -0
  11. package/dist/assets/{CopyToClipboard-Bjiu0-VD.js → CopyToClipboard-EFgQhldM.js} +1 -1
  12. package/dist/assets/{Detail-CDUUM7o3.js → Detail-H4FTcWoO.js} +2 -2
  13. package/dist/assets/{Extra-JJInmL9D.js → Extra-BSAJLoER.js} +1 -1
  14. package/dist/assets/{FilePreview-Bmm7GA18.js → FilePreview-Cpl5RtI7.js} +1 -1
  15. package/dist/assets/{Hailuo-lU7CVwZ1.js → Hailuo-KgGICka9.js} +1 -1
  16. package/dist/assets/{History-DAaJYV1_.js → History-D5jJA20R.js} +1 -1
  17. package/dist/assets/{ImagePreview-D5X8TUlF.js → ImagePreview-BsYgKbFh.js} +1 -1
  18. package/dist/assets/{ImageWrapper-BTTjpI7_.js → ImageWrapper-BNCvGItt.js} +1 -1
  19. package/dist/assets/{Index-C-e3ahk8.js → Index-BCS9O0R2.js} +1 -1
  20. package/dist/assets/{Index-BBYLLHax.js → Index-BE2AYOq4.js} +1 -1
  21. package/dist/assets/{Index-B_2mYB7S.js → Index-BRXk4Mqd.js} +1 -1
  22. package/dist/assets/Index-BbHsvz3a.js +1 -0
  23. package/dist/assets/{Index-DuLEDnvW.css → Index-Bk7jCa5s.css} +1 -1
  24. package/dist/assets/{Index-CdHxtLHz.js → Index-BmwfR8Yv.js} +1 -1
  25. package/dist/assets/{Index-D9h3cnjr.js → Index-BnSKxKVq.js} +1 -1
  26. package/dist/assets/{Index-CE8qwwBK.js → Index-C7Vg5OO7.js} +1 -1
  27. package/dist/assets/Index-C9k7Kzki.js +1 -0
  28. package/dist/assets/{Index-C-IDYWNM.js → Index-CAM0CYoy.js} +1 -1
  29. package/dist/assets/{Index-CQo8yLx8.js → Index-CCFKjR0v.js} +1 -1
  30. package/dist/assets/{Index-DughvbBb.js → Index-CE75zhE4.js} +1 -1
  31. package/dist/assets/{Index-tRguwJoC.js → Index-CLqQg4lx.js} +1 -1
  32. package/dist/assets/{Index-BRboOWCX.js → Index-CNuJOqb-.js} +1 -1
  33. package/dist/assets/Index-CT9AH23f.js +1 -0
  34. package/dist/assets/Index-D8sxHND1.js +1 -0
  35. package/dist/assets/{Index-BIWlL7Cm.js → Index-DBRKFXS-.js} +1 -1
  36. package/dist/assets/{Index-AW_9oXDN.js → Index-DOD_tbgu.js} +1 -1
  37. package/dist/assets/Index-DVl8pgXw.js +1 -0
  38. package/dist/assets/{Index-C8PrvGQi.js → Index-D_1Vv3aq.js} +1 -1
  39. package/dist/assets/{Index-BKZWZ5X8.js → Index-FLd8qhrC.js} +1 -1
  40. package/dist/assets/{Index-Dh7E1N27.js → Index-PaADh9lp.js} +1 -1
  41. package/dist/assets/{Index-BvKE5kj_.js → Index-Pu2WAx6T.js} +1 -1
  42. package/dist/assets/{Index-DbbZbszd.js → Index-TloNwFzO.js} +1 -1
  43. package/dist/assets/{Index-D1n6Si7S.js → Index-bbL0fc3Y.js} +1 -1
  44. package/dist/assets/{Index-mQV1K6Vv.js → Index-pBB1YdIy.js} +1 -1
  45. package/dist/assets/{Index-DLOPlo18.js → Index-xGEZxa4V.js} +1 -1
  46. package/dist/assets/{Invitees-su1n-BeX.js → Invitees-BkGBmIIC.js} +1 -1
  47. package/dist/assets/{List-BJQFTzxF.js → List-B64L8l_L.js} +1 -1
  48. package/dist/assets/{List-5laWDujY.js → List-C-_jFEv9.js} +1 -1
  49. package/dist/assets/{List-CqzKbfOs.js → List-DGvZ9hj5.js} +1 -1
  50. package/dist/assets/{Main-Cs3kfAHx.js → Main-CnniPTBD.js} +1 -1
  51. package/dist/assets/{Model-Cg29bGxH.js → Model-Dp4465BG.js} +1 -1
  52. package/dist/assets/{Navigator-16b84XMw.js → Navigator-B9mP7mEg.js} +2 -2
  53. package/dist/assets/{Navigator-BbJyIBrU.css → Navigator-QfnFlZE8.css} +1 -1
  54. package/dist/assets/{NoTasks-qUri5oTo.js → NoTasks-CJlLFggW.js} +1 -1
  55. package/dist/assets/{NotFound-OY0Vr9v2.js → NotFound-DVyqXAjZ.js} +1 -1
  56. package/dist/assets/{Pagination-C5qfXnOa.js → Pagination-BOKQaUkZ.js} +1 -1
  57. package/dist/assets/{Pay-IGhZRuHS.js → Pay-CPfSahIH.js} +1 -1
  58. package/dist/assets/{Player-DnAW_Yqr.js → Player-CXub9pTc.js} +1 -1
  59. package/dist/assets/{Seedance-Dohw_NcR.js → Seedance-BXoqQeDe.js} +1 -1
  60. package/dist/assets/{Status-BXMyemE8.js → Status-DXuM2O6L.js} +1 -1
  61. package/dist/assets/{Subscribe-Cw9F3noA.js → Subscribe-BHeHo_8H.js} +1 -1
  62. package/dist/assets/{TabSwitcher-DY9rtI83.js → TabSwitcher-CqiwXk_k.js} +1 -1
  63. package/dist/assets/{Tts-Bcg-v804.js → Tts-ClsCQHha.js} +1 -1
  64. package/dist/assets/{VideoPlayer-DZaH2bws.js → VideoPlayer-DHW1wRb9.js} +1 -1
  65. package/dist/assets/{avatar-C4GcFWIv.js → avatar-C_-dpwuh.js} +1 -1
  66. package/dist/assets/{basic-C1NwVfym.js → basic-BUKli07J.js} +1 -1
  67. package/dist/assets/{chat-DajhMCMw.js → chat-C8415XCZ.js} +1 -1
  68. package/dist/assets/{codingBridge-FsHhTmXM.js → codingBridge-BOKZvzSi.js} +1 -1
  69. package/dist/assets/{codingBridge-ZYr6rRE4.js → codingBridge-B_ZfiwlU.js} +1 -1
  70. package/dist/assets/{codingBridge-CEA68s26.js → codingBridge-Bg53yIXw.js} +1 -1
  71. package/dist/assets/{codingBridge-D5RbQ66Y.js → codingBridge-BgJbsOHM.js} +1 -1
  72. package/dist/assets/{codingBridge-Dn8nv9AC.js → codingBridge-BkDjF5Ns.js} +1 -1
  73. package/dist/assets/{codingBridge-WbNBgmNM.js → codingBridge-Bm8DWmf4.js} +1 -1
  74. package/dist/assets/codingBridge-BmIvUE84.js +2 -0
  75. package/dist/assets/{codingBridge-dtT7_tSf.js → codingBridge-BnNjcRhg.js} +1 -1
  76. package/dist/assets/{codingBridge-D1LC_OhC.js → codingBridge-BnSFqQJW.js} +1 -1
  77. package/dist/assets/{codingBridge-Cr-qrbg3.js → codingBridge-CNpJGY82.js} +1 -1
  78. package/dist/assets/{codingBridge-99Xe6gEF.js → codingBridge-CbvBbNGy.js} +1 -1
  79. package/dist/assets/{codingBridge-BtMiSZvm.js → codingBridge-Cbxpepos.js} +1 -1
  80. package/dist/assets/{codingBridge-I7QFljGs.js → codingBridge-Cpv9wMie.js} +1 -1
  81. package/dist/assets/{codingBridge-DGhOZyud.js → codingBridge-DTtVgNM1.js} +1 -1
  82. package/dist/assets/{codingBridge-DmJe9lO9.js → codingBridge-DtUA-XtN.js} +1 -1
  83. package/dist/assets/{codingBridge-B7H-MUcV.js → codingBridge-DzR2XuP9.js} +1 -1
  84. package/dist/assets/{codingBridge-D_gXhzYC.js → codingBridge-GTx3ljIK.js} +1 -1
  85. package/dist/assets/{codingBridge-lDNPWIvm.js → codingBridge-bZYyn5Y8.js} +1 -1
  86. package/dist/assets/{codingBridge-CUw3mU8O.js → codingBridge-hzIb9rsQ.js} +1 -1
  87. package/dist/assets/codingBridgeNotify-CYJHKOgl.js +2 -0
  88. package/dist/assets/{collapse-D67Kjcrc.js → collapse-DHcO6zmC.js} +1 -1
  89. package/dist/assets/{constants-DDcIM163.js → constants-C-bSXdJ_.js} +1 -1
  90. package/dist/assets/{createTaskActions-DVeIyBNQ.js → createTaskActions-DZtU-OSR.js} +1 -1
  91. package/dist/assets/{date-picker-upO_n0rx.js → date-picker-Dv9Et5l5.js} +1 -1
  92. package/dist/assets/{dropdown-DGc8udGs.js → dropdown-DxxCXlhn.js} +1 -1
  93. package/dist/assets/{esm-C3r_WRaI.js → esm-C8chDbjt.js} +1 -1
  94. package/dist/assets/esm-CWbis8Pg.js +1 -0
  95. package/dist/assets/{esm-oHwv9ewJ.js → esm-CclTLs7I.js} +2 -2
  96. package/dist/assets/{esm-yc7IoIxA.js → esm-DWmb2Dch.js} +1 -1
  97. package/dist/assets/{esm-DPF5q2fD.js → esm-DgxsPfF0.js} +3 -3
  98. package/dist/assets/esm-IdQpSopD.js +2 -0
  99. package/dist/assets/{esm-DS5neUyo.js → esm-mEq75MPB.js} +1 -1
  100. package/dist/assets/{fish-GiyZoe9r.js → fish-DXKoK-Ba.js} +1 -1
  101. package/dist/assets/{flux-ACp6RxUG.js → flux-B5qS4Fm_.js} +1 -1
  102. package/dist/assets/{grokvideo-CZynEpPd.js → grokvideo-B3nKdnJh.js} +1 -1
  103. package/dist/assets/{hailuo-DdXpuIqm.js → hailuo-B8cFdpWL.js} +1 -1
  104. package/dist/assets/{headshots-yEbYCcYV.js → headshots-D3auNDdl.js} +1 -1
  105. package/dist/assets/{image-dbbYkOOx.js → image-B-kuTc29.js} +1 -1
  106. package/dist/assets/index-CO2_9wT6.js +570 -0
  107. package/dist/assets/{index.browser.esm-BAOJaMuj.js → index.browser.esm-oC4Mj5tM.js} +1 -1
  108. package/dist/assets/{index.es-D96NPyN9.js → index.es-qrNftvHX.js} +1 -1
  109. package/dist/assets/{input-number-BpGzQCcW.js → input-number-C_ctMviQ.js} +1 -1
  110. package/dist/assets/{kling-rt9C4y1k.js → kling-CKtu4cJ7.js} +1 -1
  111. package/dist/assets/{luma-CfzPdGPr.js → luma-DRnAKoLw.js} +1 -1
  112. package/dist/assets/{midjourney-Bz49nRWJ.js → midjourney-B8A0VY_o.js} +1 -1
  113. package/dist/assets/{nanobanana-CzS7TH6t.js → nanobanana-C3v5vb6P.js} +1 -1
  114. package/dist/assets/{openaiimage-CNv4hI79.js → openaiimage-BVW7bLdH.js} +1 -1
  115. package/dist/assets/{pagination-DThkyS9k.js → pagination-D-8ny-54.js} +1 -1
  116. package/dist/assets/{pika-DMLrszYe.js → pika-DxnhJz9R.js} +1 -1
  117. package/dist/assets/{pixverse-CQ8_iBGb.js → pixverse-p9nAltX9.js} +1 -1
  118. package/dist/assets/{popover-BUTBEKcB.js → popover-DscmyVs-.js} +1 -1
  119. package/dist/assets/{producer-5SV1E8gm.js → producer-DovkhwB_.js} +1 -1
  120. package/dist/assets/{qrart-HvtNtFr6.js → qrart-CVUhX8Ce.js} +1 -1
  121. package/dist/assets/{row-C4Z9x5Yy.js → row-CoeGjm1d.js} +1 -1
  122. package/dist/assets/{seedance-BAYq19Gs.js → seedance-6Z_fEoJ0.js} +1 -1
  123. package/dist/assets/{seedream-DlqEQTCF.js → seedream-mPWsPhYr.js} +1 -1
  124. package/dist/assets/{select-Dd2EIHDR.js → select-Cg41fuTL.js} +1 -1
  125. package/dist/assets/{serp-Dj4OtkQ3.js → serp-Cpv3odHT.js} +1 -1
  126. package/dist/assets/{slider-BHp2gKVa.js → slider-Dy-2QaGW.js} +1 -1
  127. package/dist/assets/{solana-wallets-CXP-datF.js → solana-wallets-DN1C6qb0.js} +2 -2
  128. package/dist/assets/{solana-wallets-vue-DwQ8wk8j.js → solana-wallets-vue-6EKd_Sbo.js} +1 -1
  129. package/dist/assets/{sora-CPCT74QK.js → sora-BNm-JYoN.js} +1 -1
  130. package/dist/assets/{suno-DJWL7F_l.js → suno-BStjKFpM.js} +1 -1
  131. package/dist/assets/{switch-C6k-HtKw.js → switch-SwUytrdg.js} +1 -1
  132. package/dist/assets/{tabs-Iq532XbG.js → tabs-D373r22M.js} +1 -1
  133. package/dist/assets/{upload-HDT7x_5o.js → upload-DRbCODcx.js} +1 -1
  134. package/dist/assets/{veo-C8CbcatO.js → veo-BmTR8wOA.js} +1 -1
  135. package/dist/assets/{wan-8CWCsZ-D.js → wan-DvNOkaB2.js} +1 -1
  136. package/dist/assets/web-CNrl3f6L.js +1 -0
  137. package/dist/assets/{web-CkEHpnz9.js → web-DEYUp25k.js} +1 -1
  138. package/dist/assets/{web-BcSP1NlC.js → web-F977U20e.js} +1 -1
  139. package/dist/assets/{web-D3B9ZXGV.js → web-WkqOuECw.js} +1 -1
  140. package/dist/assets/{web-CxoVPYIH.js → web-giKWtlgi.js} +1 -1
  141. package/dist/assets/{webextrator-Drt1gu1h.js → webextrator-Dh3CmTAS.js} +1 -1
  142. package/dist/index.html +2 -2
  143. package/dist/sw.js +51 -0
  144. package/package.json +3 -1
  145. package/dist/assets/Conversation-D2dCEpkN.js +0 -3
  146. package/dist/assets/Index-CGP4gExJ.js +0 -1
  147. package/dist/assets/Index-DZWvND7j.js +0 -1
  148. package/dist/assets/Index-Dp4buyFO.js +0 -1
  149. package/dist/assets/Index-R2gkp4S3.js +0 -1
  150. package/dist/assets/Index-uYMYrTxK.js +0 -1
  151. package/dist/assets/codingBridge-j9ogGIAZ.js +0 -2
  152. package/dist/assets/index-C16pnEK3.js +0 -570
@@ -1 +1 @@
1
- import{$ as e,B as t,Bt as n,Ct as r,D as i,Dt as a,E as o,F as s,It as c,L as l,M as u,Nt as d,P as f,R as p,T as m,Ut as h,V as g,W as _,X as v,Z as y,_ as b,_t as ee,ct as x,k as S,lt as C,q as w,st as T,u as E,ut as D,x as O,yt as k,zt as A}from"./vendor-chart-mdwpew_o.js";import{r as j}from"./button-DWzbdjZV.js";import{a as M,c as N,i as P,t as F}from"./install-ClulZuUd.js";import{c as I,d as L,n as R,r as z,u as B}from"./runtime-Cvku-lF9.js";import{Ct as V,L as H,Rt as te,St as U,_ as ne,at as re,h as ie,kt as W,m as G,nt as K,ot as q,tt as ae}from"./use-deprecated-CPfQu7wa.js";import{t as oe}from"./tooltip-C3PYfh8V.js";import{c as J}from"./teleport-B3tPbGeJ.js";import{t as Y}from"./aria-CQaCu-Fx.js";import{n as X}from"./vnode-BMVwTmkF.js";import{t as Z}from"./click-outside-DSZqOY28.js";import{t as se}from"./collapse-transition-C7m30vMg.js";import{E as ce,Vr as le}from"./index-C16pnEK3.js";var ue=class{constructor(e,t){this.parent=e,this.domNode=t,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll(`li`),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){let e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,t=>{t.addEventListener(`keydown`,t=>{let n=!1;switch(t.code){case Y.down:this.gotoSubIndex(this.subIndex+1),n=!0;break;case Y.up:this.gotoSubIndex(this.subIndex-1),n=!0;break;case Y.tab:J(e,`mouseleave`);break;case Y.enter:case Y.numpadEnter:case Y.space:n=!0,t.currentTarget.click();break}return n&&(t.preventDefault(),t.stopPropagation()),!1})})}},de=class{constructor(e,t){this.domNode=e,this.submenu=null,this.submenu=null,this.init(t)}init(e){this.domNode.setAttribute(`tabindex`,`0`);let t=this.domNode.querySelector(`.${e}-menu`);t&&(this.submenu=new ue(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener(`keydown`,e=>{let t=!1;switch(e.code){case Y.down:J(e.currentTarget,`mouseenter`),this.submenu&&this.submenu.gotoSubIndex(0),t=!0;break;case Y.up:J(e.currentTarget,`mouseenter`),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),t=!0;break;case Y.tab:J(e.currentTarget,`mouseleave`);break;case Y.enter:case Y.numpadEnter:case Y.space:t=!0,e.currentTarget.click();break}t&&e.preventDefault()})}},fe=class{constructor(e,t){this.domNode=e,this.init(t)}init(e){let t=this.domNode.childNodes;Array.from(t).forEach(t=>{t.nodeType===1&&new de(t,e)})}},pe=M(f({...f({name:`ElMenuCollapseTransition`}),setup(n){let r=N(`menu`),o={onBeforeEnter:e=>e.style.opacity=`0.2`,onEnter(e,t){K(e,`${r.namespace.value}-opacity-transition`),e.style.opacity=`1`,t()},onAfterEnter(e){q(e,`${r.namespace.value}-opacity-transition`),e.style.opacity=``},onBeforeLeave(e){e.dataset||={},re(e,r.m(`collapse`))?(q(e,r.m(`collapse`)),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),K(e,r.m(`collapse`))):(K(e,r.m(`collapse`)),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),q(e,r.m(`collapse`))),e.style.width=`${e.scrollWidth}px`,e.style.overflow=`hidden`},onLeave(e){K(e,`horizontal-collapse-transition`),e.style.width=`${e.dataset.scrollWidth}px`}};return(n,r)=>(v(),i(E,t({mode:`out-in`},a(o)),{default:C(()=>[e(n.$slots,`default`)]),_:3},16))}}),[[`__file`,`menu-collapse-transition.vue`]]);function me(e,t){let n=m(()=>{let n=e.parent,r=[t.value];for(;n.type.name!==`ElMenu`;)n.props.index&&r.unshift(n.props.index),n=n.parent;return r});return{parentMenu:m(()=>{let t=e.parent;for(;t&&![`ElMenu`,`ElSubMenu`].includes(t.type.name);)t=t.parent;return t}),indexPath:n}}function he(e){return m(()=>{let t=e.backgroundColor;return t?new j(t).shade(20).toString():``})}var ge=(e,t)=>{let n=N(`menu`);return m(()=>n.cssVarBlock({"text-color":e.textColor||``,"hover-text-color":e.textColor||``,"bg-color":e.backgroundColor||``,"hover-bg-color":he(e).value||``,"active-color":e.activeTextColor||``,level:`${t}`}))},_e=`rootMenu`,Q=`subMenu:`,ve=R({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:G},expandOpenIcon:{type:G},collapseCloseIcon:{type:G},collapseOpenIcon:{type:G}}),ye=`ElSubMenu`,be=f({name:ye,props:ve,setup(e,{slots:t,expose:n}){let r=s(),{indexPath:i,parentMenu:a}=me(r,m(()=>e.index)),o=N(`menu`),c=N(`sub-menu`),u=p(_e);u||V(ye,`can not inject root menu`);let d=p(`${Q}${a.value.uid}`);d||V(ye,`can not inject sub menu`);let f=k({}),h=k({}),g,v=k(!1),x=k(),S=k(),C=m(()=>R.value===`horizontal`&&j.value?`bottom-start`:`right-start`),E=m(()=>R.value===`horizontal`&&j.value||R.value===`vertical`&&!u.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?I.value?e.expandOpenIcon:e.expandCloseIcon:ie:e.collapseCloseIcon&&e.collapseOpenIcon?I.value?e.collapseOpenIcon:e.collapseCloseIcon:ne),j=m(()=>d.level===0),M=m(()=>{let t=e.teleported;return B(t)?j.value:t}),P=m(()=>u.props.collapse?`${o.namespace.value}-zoom-in-left`:`${o.namespace.value}-zoom-in-top`),F=m(()=>R.value===`horizontal`&&j.value?[`bottom-start`,`bottom-end`,`top-start`,`top-end`,`right-start`,`left-start`]:[`right-start`,`right`,`right-end`,`left-start`,`bottom-start`,`bottom-end`,`top-start`,`top-end`]),I=m(()=>u.openedMenus.includes(e.index)),L=m(()=>[...Object.values(f.value),...Object.values(h.value)].some(({active:e})=>e)),R=m(()=>u.props.mode),z=m(()=>u.props.persistent),H=ee({index:e.index,indexPath:i,active:L}),U=ge(u.props,d.level+1),re=m(()=>e.popperOffset??u.props.popperOffset),W=m(()=>e.popperClass??u.props.popperClass),G=m(()=>e.showTimeout??u.props.showTimeout),K=m(()=>e.hideTimeout??u.props.hideTimeout),q=()=>(S.value?.popperRef?.popperInstanceRef)?.destroy(),J=e=>{e||q()},Y=()=>{u.props.menuTrigger===`hover`&&u.props.mode===`horizontal`||u.props.collapse&&u.props.mode===`vertical`||e.disabled||u.handleSubMenuClick({index:e.index,indexPath:i.value,active:L.value})},X=(t,n=G.value)=>{var r;if(t.type!==`focus`){if(u.props.menuTrigger===`click`&&u.props.mode===`horizontal`||!u.props.collapse&&u.props.mode===`vertical`||e.disabled){d.mouseInChild.value=!0;return}d.mouseInChild.value=!0,g?.(),{stop:g}=te(()=>{u.openMenu(e.index,i.value)},n),M.value&&((r=a.value.vnode.el)==null||r.dispatchEvent(new MouseEvent(`mouseenter`)))}},Z=(t=!1)=>{var n;if(u.props.menuTrigger===`click`&&u.props.mode===`horizontal`||!u.props.collapse&&u.props.mode===`vertical`){d.mouseInChild.value=!1;return}g?.(),d.mouseInChild.value=!1,{stop:g}=te(()=>!v.value&&u.closeMenu(e.index,i.value),K.value),M.value&&t&&((n=d.handleMouseleave)==null||n.call(d,!0))};return T(()=>u.props.collapse,e=>J(!!e)),y(`${Q}${r.uid}`,{addSubMenu:e=>{h.value[e.index]=e},removeSubMenu:e=>{delete h.value[e.index]},handleMouseleave:Z,mouseInChild:v,level:d.level+1}),n({opened:I}),w(()=>{u.addSubMenu(H),d.addSubMenu(H)}),_(()=>{d.removeSubMenu(H),u.removeSubMenu(H)}),()=>{let n=[t.title?.call(t),l(ae,{class:c.e(`icon-arrow`),style:{transform:I.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&u.props.collapse?`none`:`rotateZ(180deg)`:`none`}},{default:()=>A(E.value)?l(r.appContext.components[E.value]):l(E.value)})],i=u.isMenuPopup?l(oe,{ref:S,visible:I.value,effect:`light`,pure:!0,offset:re.value,showArrow:!1,persistent:z.value,popperClass:W.value,placement:C.value,teleported:M.value,fallbackPlacements:F.value,transition:P.value,gpuAcceleration:!1},{content:()=>l(`div`,{class:[o.m(R.value),o.m(`popup-container`),W.value],onMouseenter:e=>X(e,100),onMouseleave:()=>Z(!0),onFocus:e=>X(e,100)},[l(`ul`,{class:[o.b(),o.m(`popup`),o.m(`popup-${C.value}`)],style:U.value},[t.default?.call(t)])]),default:()=>l(`div`,{class:c.e(`title`),onClick:Y},n)}):l(O,{},[l(`div`,{class:c.e(`title`),ref:x,onClick:Y},n),l(se,{},{default:()=>D(l(`ul`,{role:`menu`,class:[o.b(),o.m(`inline`)],style:U.value},[t.default?.call(t)]),[[b,I.value]])})]);return l(`li`,{class:[c.b(),c.is(`active`,L.value),c.is(`opened`,I.value),c.is(`disabled`,e.disabled)],role:`menuitem`,ariaHaspopup:!0,ariaExpanded:I.value,onMouseenter:X,onMouseleave:()=>Z(),onFocus:X},[i])}}}),xe=R({mode:{type:String,values:[`horizontal`,`vertical`],default:`vertical`},defaultActive:{type:String,default:``},defaultOpeneds:{type:z(Array),default:()=>le([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:[`hover`,`click`],default:`hover`},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:G,default:()=>H},popperEffect:{type:z(String),default:`dark`},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),Se=e=>d(e)&&e.every(e=>A(e)),Ce=f({name:`ElMenu`,props:xe,emits:{close:(e,t)=>A(e)&&Se(t),open:(e,t)=>A(e)&&Se(t),select:(e,t,n,r)=>A(e)&&Se(t)&&c(n)&&(B(r)||r instanceof Promise)},setup(e,{emit:t,slots:n,expose:r}){let i=s(),a=i.appContext.config.globalProperties.$router,o=k(),c=N(`menu`),u=N(`sub-menu`),d=k(-1),f=k(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),p=k(e.defaultActive),h=k({}),_=k({}),v=m(()=>e.mode===`horizontal`||e.mode===`vertical`&&e.collapse),b=()=>{let t=p.value&&h.value[p.value];!t||e.mode===`horizontal`||e.collapse||t.indexPath.forEach(e=>{let t=_.value[e];t&&S(e,t.indexPath)})},S=(n,r)=>{f.value.includes(n)||(e.uniqueOpened&&(f.value=f.value.filter(e=>r.includes(e))),f.value.push(n),t(`open`,n,r))},C=e=>{let t=f.value.indexOf(e);t!==-1&&f.value.splice(t,1)},E=(e,n)=>{C(e),t(`close`,e,n)},O=({index:e,indexPath:t})=>{f.value.includes(e)?E(e,t):S(e,t)},A=n=>{(e.mode===`horizontal`||e.collapse)&&(f.value=[]);let{index:r,indexPath:i}=n;if(!(L(r)||L(i)))if(e.router&&a){let e=n.route||r,o=a.push(e).then(e=>(e||(p.value=r),e));t(`select`,r,i,{index:r,indexPath:i,route:e},o)}else p.value=r,t(`select`,r,i,{index:r,indexPath:i})},j=t=>{let n=h.value;p.value=(n[t]||p.value&&n[p.value]||n[e.defaultActive])?.index??t},M=e=>{let t=getComputedStyle(e),n=Number.parseInt(t.marginLeft,10),r=Number.parseInt(t.marginRight,10);return e.offsetWidth+n+r||0},P=()=>{if(!o.value)return-1;let e=Array.from(o.value?.childNodes??[]).filter(e=>e.nodeName!==`#text`||e.nodeValue),t=getComputedStyle(o.value),n=Number.parseInt(t.paddingLeft,10),r=Number.parseInt(t.paddingRight,10),i=o.value.clientWidth-n-r,a=0,s=0;return e.forEach((e,t)=>{e.nodeName!==`#comment`&&(a+=M(e),a<=i-64&&(s=t+1))}),s===e.length?-1:s},F=e=>_.value[e].indexPath,I=(e,t=33.34)=>{let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e()},t)}},R=!0,z=()=>{if(d.value===P())return;let e=()=>{d.value=-1,g(()=>{d.value=P()})};R?e():I(e)(),R=!1};T(()=>e.defaultActive,e=>{h.value[e]||(p.value=``),j(e)}),T(()=>e.collapse,e=>{e&&(f.value=[])}),T(h.value,b);let B;x(()=>{e.mode===`horizontal`&&e.ellipsis?B=W(o,z).stop:B?.()});let V=k(!1);{let t=e=>{_.value[e.index]=e},n=e=>{delete _.value[e.index]};y(_e,ee({props:e,openedMenus:f,items:h,subMenus:_,activeIndex:p,isMenuPopup:v,addMenuItem:e=>{h.value[e.index]=e},removeMenuItem:e=>{delete h.value[e.index]},addSubMenu:t,removeSubMenu:n,openMenu:S,closeMenu:E,handleMenuItemClick:A,handleSubMenuClick:O})),y(`${Q}${i.uid}`,{addSubMenu:t,removeSubMenu:n,mouseInChild:V,level:0})}w(()=>{e.mode===`horizontal`&&new fe(i.vnode.el,c.namespace.value)}),r({open:e=>{let{indexPath:t}=_.value[e];t.forEach(e=>S(e,t))},close:C,updateActiveIndex:j,handleResize:z});let H=ge(e,0);return()=>{let r=n.default?.call(n)??[],i=[];if(e.mode===`horizontal`&&o.value){let t=X(r),n=d.value===-1?t:t.slice(0,d.value),a=d.value===-1?[]:t.slice(d.value);a?.length&&e.ellipsis&&(r=n,i.push(l(be,{index:`sub-menu-more`,class:u.e(`hide-arrow`),popperOffset:e.popperOffset},{title:()=>l(ae,{class:u.e(`icon-more`)},{default:()=>l(e.ellipsisIcon)}),default:()=>a})))}let a=e.closeOnClickOutside?[[Z,()=>{f.value.length&&(V.value||(f.value.forEach(e=>t(`close`,e,F(e))),f.value=[]))}]]:[],s=D(l(`ul`,{key:String(e.collapse),role:`menubar`,ref:o,style:H.value,class:{[c.b()]:!0,[c.m(e.mode)]:!0,[c.m(`collapse`)]:e.collapse}},[...r,...i]),a);return e.collapseTransition&&e.mode===`vertical`?l(pe,()=>s):s}}}),we=R({index:{type:z([String,null]),default:null},route:{type:z([String,Object])},disabled:Boolean}),Te={click:e=>A(e.index)&&d(e.indexPath)},$=`ElMenuItem`,Ee=M(f({...f({name:$}),props:we,emits:Te,setup(t,{expose:c,emit:l}){let u=t;I(u.index)&&U($,`Missing required prop: "index"`);let d=s(),f=p(_e),h=N(`menu`),g=N(`menu-item`);f||V($,`can not inject root menu`);let{parentMenu:y,indexPath:b}=me(d,r(u,`index`)),x=p(`${Q}${y.value.uid}`);x||V($,`can not inject sub menu`);let T=m(()=>u.index===f.activeIndex),E=ee({index:u.index,indexPath:b,active:T}),D=()=>{u.disabled||(f.handleMenuItemClick({index:u.index,indexPath:b.value,route:u.route}),l(`click`,E))};return w(()=>{x.addSubMenu(E),f.addMenuItem(E)}),_(()=>{x.removeSubMenu(E),f.removeMenuItem(E)}),c({parentMenu:y,rootMenu:f,active:T,nsMenu:h,nsMenuItem:g,handleClick:D}),(t,r)=>(v(),S(`li`,{class:n([a(g).b(),a(g).is(`active`,a(T)),a(g).is(`disabled`,t.disabled)]),role:`menuitem`,tabindex:`-1`,onClick:D},[a(y).type.name===`ElMenu`&&a(f).props.collapse&&t.$slots.title?(v(),i(a(oe),{key:0,effect:a(f).props.popperEffect,placement:`right`,"fallback-placements":[`left`],persistent:a(f).props.persistent},{content:C(()=>[e(t.$slots,`title`)]),default:C(()=>[o(`div`,{class:n(a(h).be(`tooltip`,`trigger`))},[e(t.$slots,`default`)],2)]),_:3},8,[`effect`,`persistent`])):(v(),S(O,{key:1},[e(t.$slots,`default`),e(t.$slots,`title`)],64))],2))}}),[[`__file`,`menu-item.vue`]]),De={title:String},Oe=M(f({...f({name:`ElMenuItemGroup`}),props:De,setup(t){let r=N(`menu-item-group`);return(t,i)=>(v(),S(`li`,{class:n(a(r).b())},[o(`div`,{class:n(a(r).e(`title`))},[t.$slots.title?e(t.$slots,`title`,{key:1}):(v(),S(O,{key:0},[u(h(t.title),1)],64))],2),o(`ul`,null,[e(t.$slots,`default`)])],2))}}),[[`__file`,`menu-item-group.vue`]]),ke=F(Ce,{MenuItem:Ee,MenuItemGroup:Oe,SubMenu:be}),Ae=P(Ee);P(Oe);var je=P(be),Me=f({props:{collapsed:{type:Boolean,default:!1}},emits:[`click`],computed:{siteTitle(){return this.$store.state.site?.title||`AceData`},url(){let e=this.$store.state.site,t=`https://platform.acedata.cloud/favicon.ico`;return this.collapsed?e?.favicon||e?.logo||t:e?.logo||e?.favicon||t}}}),Ne=[`aria-label`],Pe=[`src`,`alt`];function Fe(e,t,n,r,i,a){return v(),S(`button`,{type:`button`,class:`brand-logo`,"aria-label":e.siteTitle,onClick:t[0]||=t=>e.$emit(`click`)},[o(`img`,{src:e.url,class:`brand-logo__image`,alt:e.siteTitle},null,8,Pe)],8,Ne)}var Ie=ce(Me,[[`render`,Fe],[`__scopeId`,`data-v-fefbbe27`]]),Le=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAMFBMVEX///+3t7f4+Pi8vLzAwMDExMTS0tLIyMjk5OTz8/PY2NjOzs7u7u7d3d3p6enh4eFVKkJDAAAIfUlEQVR4nNVd15akOAylyRRQ9f9/O02BZJtgBQszfR/2zPahsJCvguVUFJYop35ux66pq6r6+fn9T910bTv3U2najBXK9zw2PxE07fz+n0Qf+raOyetL3g9PS7vgzRUYULfvZyXuR5nAgLF/SuK3UuJN7gf0PbyErDiieuU1zKmLyFJ3Y9u+vmh//V9dXT/b5VN3f+HbFq82nGivHH6999Vv8rC7P+NFzfBlF56xvl/sEy1Xbc8mZ9m3R7bcrO0jl+vXJH7J0YY78UvYKNuDjpWNTQd9tzd5ks9ePUm92u877WMlp4dhR+Y2OYkYdh3XmKclc9iATVwoXyFLZouXIobuBpEXlK+QcYbK7gOF2NpMaN2Vmfdr71LGirAbW5N3lr4F1rckC0GQbQw6cqrM1XACvzOr5EjT+2q+L24Vk6/sRGL7no6t5un9eQE+7JG4r+wk3+e9iGfXwzyeZHLjzDGFt0fEBB564ymOeRwzCg8dHaZ9kx8NZGZ8+UyOv0bSW3o9q5Tac5+0luajjGfqpsT2krIuTeaKZGQf4UUIKpx6xFbo2nGD9HSlpJZAGfSQILVjV02Z4CQsJhD2UdbcJ/dwyRfpNvozwaLo4q/0nMhLIrMThJSZZ4EhiJd6Ugti43SvzCTlPKnZmUNZMV+u4cYKwp85XlfcTBi/s6Z+MZ2LxADhGZzUDU9m5zjIr0woQhLxasAHWS7E9TgZU/Z1EBEIjbzxQYYxOudOxu73qTBcUGEaIzqD1hi96W6JTgzRoDSI/UhmITP7yUPFSYqaagD1R4wJkP8VnT8nTwVQqnauN06QjvtCvYt2IL3Zm/Uk9jjDz0RmMLggwx3SOuIUSniGpJv3bAJo1SAFr9mKH8aI+LqkI0RFtoIh9/L76Cc8GLCDoxxSjyAHgxxFYSEzJ18Ggly4YHQHnCQ2LRoCGINXQirim0JYUJpDatf/p24PP4mVwSblSg6MEhDGuzNVg6J5o8nEvAPAGZiAfk5MDRXNqxcmx/AVHPMprx8G1TEHwOzqTByseTgoDRxYDT6akSh9YSMzr6aLidOeTGCj3EqDkdC8GU9Q9c6voYlyJzxy0sOxOnRs8C3sQpSR92DOO4EDCXkAzoA935bPTy8AIgTBCIIyvyZsExF/uM2Byfk9A7VafuksfdyygFmJcc35NZ7tT5xUYMNwJYcI/FouGP7xOyT1YBOh+aVcsCHHBWCHZHLTxOfxF6ZA8HP82P7ASv4BJj5PMNMO/g3+H9ghqrtnGm4hIJLAd7byVxg5asGCA+AH2N2meYHvKPxZmQRIGtyMaOMweC/ZXJJJdJE0CF27Bm0oK8kWLKSWHxeILB8s7xN8gmxFi0VIFAkNqd5KiI3S7JBqJ7Ssycb70vAL2LAofMiE9hkBrQvX4OTXNLS4eGpwA8KlaxaGKHOy4OWWcSVoXSZz9ohYYLaxpB8bv4V2aFGeFiYOvqTb74V2mHkQ8IXjBKhMuKrMJIoLOQlmVGIiIlyPmXdguwJ6d8J/CZ1H0m4iB1Gr4D569HjCZalPaNoxeWtd5jKf4TRkpy30syh3KbLXPVZsWdIIQUK6dO8Jl+dkbUB6GfRranwIWx3hUzeVi5fRmggtDA6b/dWO3ELkLiF4QldqoXOPxhe8QOjt57LUpXhguGUhtEUFUtq9EBzUQluQWrphIV1oA1JLm0R6VFqh0z21eH30XmjFdofbF14dgC5PG1zS0w9pjuYFF2UYL9KHiXJGYhhXJkwLEk1RvrEMZVWmpgvSVC1XtEtNlYOAL1JYrdESOg3lcGtFQsVGs+Nu++msHdiu0BNEQQ5vYKssIWxQx3JNc1AqnbTFmg3qSoKmYz0mb//S7QDU1k5Vdu+VSnUFyA3aBES1ca9zkqb4PPVQUUVG74OVRfUNSqencXh+UR1sUnfqgy6+qLrVn75QThRt0I26VG0FU4dbRNfE1ULpqVVBIZBTN/kJ0PBDxY6QEbpp5v27JFCxI5xm1k3oIxT+Q+Wowgl93dIJhHzqVrW5erd0QrdIxUE8wFXxcL9IBXSlSRcLuSnq3NR+OZBq4ZWD1FXr8sn9wivVEjcPwtVuKtd6XOKmWUzoQeY/dCczHBcTKpZtnr2QB104gN70ukm+QNaHzBJV7DhbIAt/040ERMMXnbUDAwOtgvZVsUo0KaCi9Omib/SCqleKhE7KSsNIIt7IkFXoi40MSBrNO28X+ooHOKxWqPpuoVHRh7FDo3+pyHsorOZyG5R0w5kPUZmJffYFIrLhTLi1DzFJT0X+aWaZ3JGtfcJNlCvesTOuIpAcLBrdRIms5g4s+jFlM0PFPYY6ul1VtDG4PJzwqQHnGGpKKlA1fVKN0VqxX31Tx1DjOTBXaRFvs3vaWdkniPIEF3hdGgEmxpev0VpeHNf8ZuiROMBhet0hMch9qkogR2wXbeSojHI22jd5ifp1cLbY9dHB8NWhJCbOgkYzBxpFzxH3wu74F++ro8ckWsM7a5l7/IuzVnAxJX1MojGQ3shHslKCPPimY+b+jYfmU0qONPIOj5rzK9lDi33OyQttVpEaglXXMFoabQVmqny3QxaBW4opM3o4CtwDJazWGZtAUMi12ONkAtGMrNGS/1QI5yb+CxciLmc8EwoDKEokefK6CBKPRf47Mj/MEIujvv+MzA/6kKQLCR7y18q5Y8AjiWryrR1T9uwp/RqJ3YUdGWBxYUeR2RzN7gThn6ifCrtLaA7X/dwG4xtusvg+24uVihzKtr/Cqrh7OFPdcVlYcXItmyHS7x67ROwyxxTceAHegqsLHVOQ4WLH00sdE5DhUsev2IbaznR95gKrCnDGi0oXDOmTRrmvhP3i712+u+LvXXO84u9dKL2Cf3V33X7+i6u7N/y5S9IdvOvoF0G/19GP9tfR/wPQ21eEI8clLwAAAABJRU5ErkJggg==`;export{je as a,Ae as i,Ie as n,ke as r,Le as t};
1
+ import{$ as e,B as t,Bt as n,Ct as r,D as i,Dt as a,E as o,F as s,It as c,L as l,M as u,Nt as d,P as f,R as p,T as m,Ut as h,V as g,W as _,X as v,Z as y,_ as b,_t as ee,ct as x,k as S,lt as C,q as w,st as T,u as E,ut as D,x as O,yt as k,zt as A}from"./vendor-chart-mdwpew_o.js";import{r as j}from"./button-DWzbdjZV.js";import{a as M,c as N,i as P,t as F}from"./install-ClulZuUd.js";import{c as I,d as L,n as R,r as z,u as B}from"./runtime-Cvku-lF9.js";import{Ct as V,L as H,Rt as te,St as U,_ as ne,at as re,h as ie,kt as W,m as G,nt as K,ot as q,tt as ae}from"./use-deprecated-CPfQu7wa.js";import{t as oe}from"./tooltip-C3PYfh8V.js";import{c as J}from"./teleport-B3tPbGeJ.js";import{t as Y}from"./aria-CQaCu-Fx.js";import{n as X}from"./vnode-BMVwTmkF.js";import{t as Z}from"./click-outside-DSZqOY28.js";import{t as se}from"./collapse-transition-C7m30vMg.js";import{E as ce,Vr as le}from"./index-CO2_9wT6.js";var ue=class{constructor(e,t){this.parent=e,this.domNode=t,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll(`li`),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){let e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,t=>{t.addEventListener(`keydown`,t=>{let n=!1;switch(t.code){case Y.down:this.gotoSubIndex(this.subIndex+1),n=!0;break;case Y.up:this.gotoSubIndex(this.subIndex-1),n=!0;break;case Y.tab:J(e,`mouseleave`);break;case Y.enter:case Y.numpadEnter:case Y.space:n=!0,t.currentTarget.click();break}return n&&(t.preventDefault(),t.stopPropagation()),!1})})}},de=class{constructor(e,t){this.domNode=e,this.submenu=null,this.submenu=null,this.init(t)}init(e){this.domNode.setAttribute(`tabindex`,`0`);let t=this.domNode.querySelector(`.${e}-menu`);t&&(this.submenu=new ue(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener(`keydown`,e=>{let t=!1;switch(e.code){case Y.down:J(e.currentTarget,`mouseenter`),this.submenu&&this.submenu.gotoSubIndex(0),t=!0;break;case Y.up:J(e.currentTarget,`mouseenter`),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),t=!0;break;case Y.tab:J(e.currentTarget,`mouseleave`);break;case Y.enter:case Y.numpadEnter:case Y.space:t=!0,e.currentTarget.click();break}t&&e.preventDefault()})}},fe=class{constructor(e,t){this.domNode=e,this.init(t)}init(e){let t=this.domNode.childNodes;Array.from(t).forEach(t=>{t.nodeType===1&&new de(t,e)})}},pe=M(f({...f({name:`ElMenuCollapseTransition`}),setup(n){let r=N(`menu`),o={onBeforeEnter:e=>e.style.opacity=`0.2`,onEnter(e,t){K(e,`${r.namespace.value}-opacity-transition`),e.style.opacity=`1`,t()},onAfterEnter(e){q(e,`${r.namespace.value}-opacity-transition`),e.style.opacity=``},onBeforeLeave(e){e.dataset||={},re(e,r.m(`collapse`))?(q(e,r.m(`collapse`)),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),K(e,r.m(`collapse`))):(K(e,r.m(`collapse`)),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth.toString(),q(e,r.m(`collapse`))),e.style.width=`${e.scrollWidth}px`,e.style.overflow=`hidden`},onLeave(e){K(e,`horizontal-collapse-transition`),e.style.width=`${e.dataset.scrollWidth}px`}};return(n,r)=>(v(),i(E,t({mode:`out-in`},a(o)),{default:C(()=>[e(n.$slots,`default`)]),_:3},16))}}),[[`__file`,`menu-collapse-transition.vue`]]);function me(e,t){let n=m(()=>{let n=e.parent,r=[t.value];for(;n.type.name!==`ElMenu`;)n.props.index&&r.unshift(n.props.index),n=n.parent;return r});return{parentMenu:m(()=>{let t=e.parent;for(;t&&![`ElMenu`,`ElSubMenu`].includes(t.type.name);)t=t.parent;return t}),indexPath:n}}function he(e){return m(()=>{let t=e.backgroundColor;return t?new j(t).shade(20).toString():``})}var ge=(e,t)=>{let n=N(`menu`);return m(()=>n.cssVarBlock({"text-color":e.textColor||``,"hover-text-color":e.textColor||``,"bg-color":e.backgroundColor||``,"hover-bg-color":he(e).value||``,"active-color":e.activeTextColor||``,level:`${t}`}))},_e=`rootMenu`,Q=`subMenu:`,ve=R({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:G},expandOpenIcon:{type:G},collapseCloseIcon:{type:G},collapseOpenIcon:{type:G}}),ye=`ElSubMenu`,be=f({name:ye,props:ve,setup(e,{slots:t,expose:n}){let r=s(),{indexPath:i,parentMenu:a}=me(r,m(()=>e.index)),o=N(`menu`),c=N(`sub-menu`),u=p(_e);u||V(ye,`can not inject root menu`);let d=p(`${Q}${a.value.uid}`);d||V(ye,`can not inject sub menu`);let f=k({}),h=k({}),g,v=k(!1),x=k(),S=k(),C=m(()=>R.value===`horizontal`&&j.value?`bottom-start`:`right-start`),E=m(()=>R.value===`horizontal`&&j.value||R.value===`vertical`&&!u.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?I.value?e.expandOpenIcon:e.expandCloseIcon:ie:e.collapseCloseIcon&&e.collapseOpenIcon?I.value?e.collapseOpenIcon:e.collapseCloseIcon:ne),j=m(()=>d.level===0),M=m(()=>{let t=e.teleported;return B(t)?j.value:t}),P=m(()=>u.props.collapse?`${o.namespace.value}-zoom-in-left`:`${o.namespace.value}-zoom-in-top`),F=m(()=>R.value===`horizontal`&&j.value?[`bottom-start`,`bottom-end`,`top-start`,`top-end`,`right-start`,`left-start`]:[`right-start`,`right`,`right-end`,`left-start`,`bottom-start`,`bottom-end`,`top-start`,`top-end`]),I=m(()=>u.openedMenus.includes(e.index)),L=m(()=>[...Object.values(f.value),...Object.values(h.value)].some(({active:e})=>e)),R=m(()=>u.props.mode),z=m(()=>u.props.persistent),H=ee({index:e.index,indexPath:i,active:L}),U=ge(u.props,d.level+1),re=m(()=>e.popperOffset??u.props.popperOffset),W=m(()=>e.popperClass??u.props.popperClass),G=m(()=>e.showTimeout??u.props.showTimeout),K=m(()=>e.hideTimeout??u.props.hideTimeout),q=()=>(S.value?.popperRef?.popperInstanceRef)?.destroy(),J=e=>{e||q()},Y=()=>{u.props.menuTrigger===`hover`&&u.props.mode===`horizontal`||u.props.collapse&&u.props.mode===`vertical`||e.disabled||u.handleSubMenuClick({index:e.index,indexPath:i.value,active:L.value})},X=(t,n=G.value)=>{var r;if(t.type!==`focus`){if(u.props.menuTrigger===`click`&&u.props.mode===`horizontal`||!u.props.collapse&&u.props.mode===`vertical`||e.disabled){d.mouseInChild.value=!0;return}d.mouseInChild.value=!0,g?.(),{stop:g}=te(()=>{u.openMenu(e.index,i.value)},n),M.value&&((r=a.value.vnode.el)==null||r.dispatchEvent(new MouseEvent(`mouseenter`)))}},Z=(t=!1)=>{var n;if(u.props.menuTrigger===`click`&&u.props.mode===`horizontal`||!u.props.collapse&&u.props.mode===`vertical`){d.mouseInChild.value=!1;return}g?.(),d.mouseInChild.value=!1,{stop:g}=te(()=>!v.value&&u.closeMenu(e.index,i.value),K.value),M.value&&t&&((n=d.handleMouseleave)==null||n.call(d,!0))};return T(()=>u.props.collapse,e=>J(!!e)),y(`${Q}${r.uid}`,{addSubMenu:e=>{h.value[e.index]=e},removeSubMenu:e=>{delete h.value[e.index]},handleMouseleave:Z,mouseInChild:v,level:d.level+1}),n({opened:I}),w(()=>{u.addSubMenu(H),d.addSubMenu(H)}),_(()=>{d.removeSubMenu(H),u.removeSubMenu(H)}),()=>{let n=[t.title?.call(t),l(ae,{class:c.e(`icon-arrow`),style:{transform:I.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&u.props.collapse?`none`:`rotateZ(180deg)`:`none`}},{default:()=>A(E.value)?l(r.appContext.components[E.value]):l(E.value)})],i=u.isMenuPopup?l(oe,{ref:S,visible:I.value,effect:`light`,pure:!0,offset:re.value,showArrow:!1,persistent:z.value,popperClass:W.value,placement:C.value,teleported:M.value,fallbackPlacements:F.value,transition:P.value,gpuAcceleration:!1},{content:()=>l(`div`,{class:[o.m(R.value),o.m(`popup-container`),W.value],onMouseenter:e=>X(e,100),onMouseleave:()=>Z(!0),onFocus:e=>X(e,100)},[l(`ul`,{class:[o.b(),o.m(`popup`),o.m(`popup-${C.value}`)],style:U.value},[t.default?.call(t)])]),default:()=>l(`div`,{class:c.e(`title`),onClick:Y},n)}):l(O,{},[l(`div`,{class:c.e(`title`),ref:x,onClick:Y},n),l(se,{},{default:()=>D(l(`ul`,{role:`menu`,class:[o.b(),o.m(`inline`)],style:U.value},[t.default?.call(t)]),[[b,I.value]])})]);return l(`li`,{class:[c.b(),c.is(`active`,L.value),c.is(`opened`,I.value),c.is(`disabled`,e.disabled)],role:`menuitem`,ariaHaspopup:!0,ariaExpanded:I.value,onMouseenter:X,onMouseleave:()=>Z(),onFocus:X},[i])}}}),xe=R({mode:{type:String,values:[`horizontal`,`vertical`],default:`vertical`},defaultActive:{type:String,default:``},defaultOpeneds:{type:z(Array),default:()=>le([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:[`hover`,`click`],default:`hover`},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:G,default:()=>H},popperEffect:{type:z(String),default:`dark`},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),Se=e=>d(e)&&e.every(e=>A(e)),Ce=f({name:`ElMenu`,props:xe,emits:{close:(e,t)=>A(e)&&Se(t),open:(e,t)=>A(e)&&Se(t),select:(e,t,n,r)=>A(e)&&Se(t)&&c(n)&&(B(r)||r instanceof Promise)},setup(e,{emit:t,slots:n,expose:r}){let i=s(),a=i.appContext.config.globalProperties.$router,o=k(),c=N(`menu`),u=N(`sub-menu`),d=k(-1),f=k(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),p=k(e.defaultActive),h=k({}),_=k({}),v=m(()=>e.mode===`horizontal`||e.mode===`vertical`&&e.collapse),b=()=>{let t=p.value&&h.value[p.value];!t||e.mode===`horizontal`||e.collapse||t.indexPath.forEach(e=>{let t=_.value[e];t&&S(e,t.indexPath)})},S=(n,r)=>{f.value.includes(n)||(e.uniqueOpened&&(f.value=f.value.filter(e=>r.includes(e))),f.value.push(n),t(`open`,n,r))},C=e=>{let t=f.value.indexOf(e);t!==-1&&f.value.splice(t,1)},E=(e,n)=>{C(e),t(`close`,e,n)},O=({index:e,indexPath:t})=>{f.value.includes(e)?E(e,t):S(e,t)},A=n=>{(e.mode===`horizontal`||e.collapse)&&(f.value=[]);let{index:r,indexPath:i}=n;if(!(L(r)||L(i)))if(e.router&&a){let e=n.route||r,o=a.push(e).then(e=>(e||(p.value=r),e));t(`select`,r,i,{index:r,indexPath:i,route:e},o)}else p.value=r,t(`select`,r,i,{index:r,indexPath:i})},j=t=>{let n=h.value;p.value=(n[t]||p.value&&n[p.value]||n[e.defaultActive])?.index??t},M=e=>{let t=getComputedStyle(e),n=Number.parseInt(t.marginLeft,10),r=Number.parseInt(t.marginRight,10);return e.offsetWidth+n+r||0},P=()=>{if(!o.value)return-1;let e=Array.from(o.value?.childNodes??[]).filter(e=>e.nodeName!==`#text`||e.nodeValue),t=getComputedStyle(o.value),n=Number.parseInt(t.paddingLeft,10),r=Number.parseInt(t.paddingRight,10),i=o.value.clientWidth-n-r,a=0,s=0;return e.forEach((e,t)=>{e.nodeName!==`#comment`&&(a+=M(e),a<=i-64&&(s=t+1))}),s===e.length?-1:s},F=e=>_.value[e].indexPath,I=(e,t=33.34)=>{let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e()},t)}},R=!0,z=()=>{if(d.value===P())return;let e=()=>{d.value=-1,g(()=>{d.value=P()})};R?e():I(e)(),R=!1};T(()=>e.defaultActive,e=>{h.value[e]||(p.value=``),j(e)}),T(()=>e.collapse,e=>{e&&(f.value=[])}),T(h.value,b);let B;x(()=>{e.mode===`horizontal`&&e.ellipsis?B=W(o,z).stop:B?.()});let V=k(!1);{let t=e=>{_.value[e.index]=e},n=e=>{delete _.value[e.index]};y(_e,ee({props:e,openedMenus:f,items:h,subMenus:_,activeIndex:p,isMenuPopup:v,addMenuItem:e=>{h.value[e.index]=e},removeMenuItem:e=>{delete h.value[e.index]},addSubMenu:t,removeSubMenu:n,openMenu:S,closeMenu:E,handleMenuItemClick:A,handleSubMenuClick:O})),y(`${Q}${i.uid}`,{addSubMenu:t,removeSubMenu:n,mouseInChild:V,level:0})}w(()=>{e.mode===`horizontal`&&new fe(i.vnode.el,c.namespace.value)}),r({open:e=>{let{indexPath:t}=_.value[e];t.forEach(e=>S(e,t))},close:C,updateActiveIndex:j,handleResize:z});let H=ge(e,0);return()=>{let r=n.default?.call(n)??[],i=[];if(e.mode===`horizontal`&&o.value){let t=X(r),n=d.value===-1?t:t.slice(0,d.value),a=d.value===-1?[]:t.slice(d.value);a?.length&&e.ellipsis&&(r=n,i.push(l(be,{index:`sub-menu-more`,class:u.e(`hide-arrow`),popperOffset:e.popperOffset},{title:()=>l(ae,{class:u.e(`icon-more`)},{default:()=>l(e.ellipsisIcon)}),default:()=>a})))}let a=e.closeOnClickOutside?[[Z,()=>{f.value.length&&(V.value||(f.value.forEach(e=>t(`close`,e,F(e))),f.value=[]))}]]:[],s=D(l(`ul`,{key:String(e.collapse),role:`menubar`,ref:o,style:H.value,class:{[c.b()]:!0,[c.m(e.mode)]:!0,[c.m(`collapse`)]:e.collapse}},[...r,...i]),a);return e.collapseTransition&&e.mode===`vertical`?l(pe,()=>s):s}}}),we=R({index:{type:z([String,null]),default:null},route:{type:z([String,Object])},disabled:Boolean}),Te={click:e=>A(e.index)&&d(e.indexPath)},$=`ElMenuItem`,Ee=M(f({...f({name:$}),props:we,emits:Te,setup(t,{expose:c,emit:l}){let u=t;I(u.index)&&U($,`Missing required prop: "index"`);let d=s(),f=p(_e),h=N(`menu`),g=N(`menu-item`);f||V($,`can not inject root menu`);let{parentMenu:y,indexPath:b}=me(d,r(u,`index`)),x=p(`${Q}${y.value.uid}`);x||V($,`can not inject sub menu`);let T=m(()=>u.index===f.activeIndex),E=ee({index:u.index,indexPath:b,active:T}),D=()=>{u.disabled||(f.handleMenuItemClick({index:u.index,indexPath:b.value,route:u.route}),l(`click`,E))};return w(()=>{x.addSubMenu(E),f.addMenuItem(E)}),_(()=>{x.removeSubMenu(E),f.removeMenuItem(E)}),c({parentMenu:y,rootMenu:f,active:T,nsMenu:h,nsMenuItem:g,handleClick:D}),(t,r)=>(v(),S(`li`,{class:n([a(g).b(),a(g).is(`active`,a(T)),a(g).is(`disabled`,t.disabled)]),role:`menuitem`,tabindex:`-1`,onClick:D},[a(y).type.name===`ElMenu`&&a(f).props.collapse&&t.$slots.title?(v(),i(a(oe),{key:0,effect:a(f).props.popperEffect,placement:`right`,"fallback-placements":[`left`],persistent:a(f).props.persistent},{content:C(()=>[e(t.$slots,`title`)]),default:C(()=>[o(`div`,{class:n(a(h).be(`tooltip`,`trigger`))},[e(t.$slots,`default`)],2)]),_:3},8,[`effect`,`persistent`])):(v(),S(O,{key:1},[e(t.$slots,`default`),e(t.$slots,`title`)],64))],2))}}),[[`__file`,`menu-item.vue`]]),De={title:String},Oe=M(f({...f({name:`ElMenuItemGroup`}),props:De,setup(t){let r=N(`menu-item-group`);return(t,i)=>(v(),S(`li`,{class:n(a(r).b())},[o(`div`,{class:n(a(r).e(`title`))},[t.$slots.title?e(t.$slots,`title`,{key:1}):(v(),S(O,{key:0},[u(h(t.title),1)],64))],2),o(`ul`,null,[e(t.$slots,`default`)])],2))}}),[[`__file`,`menu-item-group.vue`]]),ke=F(Ce,{MenuItem:Ee,MenuItemGroup:Oe,SubMenu:be}),Ae=P(Ee);P(Oe);var je=P(be),Me=f({props:{collapsed:{type:Boolean,default:!1}},emits:[`click`],computed:{siteTitle(){return this.$store.state.site?.title||`AceData`},url(){let e=this.$store.state.site,t=`https://platform.acedata.cloud/favicon.ico`;return this.collapsed?e?.favicon||e?.logo||t:e?.logo||e?.favicon||t}}}),Ne=[`aria-label`],Pe=[`src`,`alt`];function Fe(e,t,n,r,i,a){return v(),S(`button`,{type:`button`,class:`brand-logo`,"aria-label":e.siteTitle,onClick:t[0]||=t=>e.$emit(`click`)},[o(`img`,{src:e.url,class:`brand-logo__image`,alt:e.siteTitle},null,8,Pe)],8,Ne)}var Ie=ce(Me,[[`render`,Fe],[`__scopeId`,`data-v-fefbbe27`]]),Le=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAMFBMVEX///+3t7f4+Pi8vLzAwMDExMTS0tLIyMjk5OTz8/PY2NjOzs7u7u7d3d3p6enh4eFVKkJDAAAIfUlEQVR4nNVd15akOAylyRRQ9f9/O02BZJtgBQszfR/2zPahsJCvguVUFJYop35ux66pq6r6+fn9T910bTv3U2najBXK9zw2PxE07fz+n0Qf+raOyetL3g9PS7vgzRUYULfvZyXuR5nAgLF/SuK3UuJN7gf0PbyErDiieuU1zKmLyFJ3Y9u+vmh//V9dXT/b5VN3f+HbFq82nGivHH6999Vv8rC7P+NFzfBlF56xvl/sEy1Xbc8mZ9m3R7bcrO0jl+vXJH7J0YY78UvYKNuDjpWNTQd9tzd5ks9ePUm92u877WMlp4dhR+Y2OYkYdh3XmKclc9iATVwoXyFLZouXIobuBpEXlK+QcYbK7gOF2NpMaN2Vmfdr71LGirAbW5N3lr4F1rckC0GQbQw6cqrM1XACvzOr5EjT+2q+L24Vk6/sRGL7no6t5un9eQE+7JG4r+wk3+e9iGfXwzyeZHLjzDGFt0fEBB564ymOeRwzCg8dHaZ9kx8NZGZ8+UyOv0bSW3o9q5Tac5+0luajjGfqpsT2krIuTeaKZGQf4UUIKpx6xFbo2nGD9HSlpJZAGfSQILVjV02Z4CQsJhD2UdbcJ/dwyRfpNvozwaLo4q/0nMhLIrMThJSZZ4EhiJd6Ugti43SvzCTlPKnZmUNZMV+u4cYKwp85XlfcTBi/s6Z+MZ2LxADhGZzUDU9m5zjIr0woQhLxasAHWS7E9TgZU/Z1EBEIjbzxQYYxOudOxu73qTBcUGEaIzqD1hi96W6JTgzRoDSI/UhmITP7yUPFSYqaagD1R4wJkP8VnT8nTwVQqnauN06QjvtCvYt2IL3Zm/Uk9jjDz0RmMLggwx3SOuIUSniGpJv3bAJo1SAFr9mKH8aI+LqkI0RFtoIh9/L76Cc8GLCDoxxSjyAHgxxFYSEzJ18Ggly4YHQHnCQ2LRoCGINXQirim0JYUJpDatf/p24PP4mVwSblSg6MEhDGuzNVg6J5o8nEvAPAGZiAfk5MDRXNqxcmx/AVHPMprx8G1TEHwOzqTByseTgoDRxYDT6akSh9YSMzr6aLidOeTGCj3EqDkdC8GU9Q9c6voYlyJzxy0sOxOnRs8C3sQpSR92DOO4EDCXkAzoA935bPTy8AIgTBCIIyvyZsExF/uM2Byfk9A7VafuksfdyygFmJcc35NZ7tT5xUYMNwJYcI/FouGP7xOyT1YBOh+aVcsCHHBWCHZHLTxOfxF6ZA8HP82P7ASv4BJj5PMNMO/g3+H9ghqrtnGm4hIJLAd7byVxg5asGCA+AH2N2meYHvKPxZmQRIGtyMaOMweC/ZXJJJdJE0CF27Bm0oK8kWLKSWHxeILB8s7xN8gmxFi0VIFAkNqd5KiI3S7JBqJ7Ssycb70vAL2LAofMiE9hkBrQvX4OTXNLS4eGpwA8KlaxaGKHOy4OWWcSVoXSZz9ohYYLaxpB8bv4V2aFGeFiYOvqTb74V2mHkQ8IXjBKhMuKrMJIoLOQlmVGIiIlyPmXdguwJ6d8J/CZ1H0m4iB1Gr4D569HjCZalPaNoxeWtd5jKf4TRkpy30syh3KbLXPVZsWdIIQUK6dO8Jl+dkbUB6GfRranwIWx3hUzeVi5fRmggtDA6b/dWO3ELkLiF4QldqoXOPxhe8QOjt57LUpXhguGUhtEUFUtq9EBzUQluQWrphIV1oA1JLm0R6VFqh0z21eH30XmjFdofbF14dgC5PG1zS0w9pjuYFF2UYL9KHiXJGYhhXJkwLEk1RvrEMZVWmpgvSVC1XtEtNlYOAL1JYrdESOg3lcGtFQsVGs+Nu++msHdiu0BNEQQ5vYKssIWxQx3JNc1AqnbTFmg3qSoKmYz0mb//S7QDU1k5Vdu+VSnUFyA3aBES1ca9zkqb4PPVQUUVG74OVRfUNSqencXh+UR1sUnfqgy6+qLrVn75QThRt0I26VG0FU4dbRNfE1ULpqVVBIZBTN/kJ0PBDxY6QEbpp5v27JFCxI5xm1k3oIxT+Q+Wowgl93dIJhHzqVrW5erd0QrdIxUE8wFXxcL9IBXSlSRcLuSnq3NR+OZBq4ZWD1FXr8sn9wivVEjcPwtVuKtd6XOKmWUzoQeY/dCczHBcTKpZtnr2QB104gN70ukm+QNaHzBJV7DhbIAt/040ERMMXnbUDAwOtgvZVsUo0KaCi9Omib/SCqleKhE7KSsNIIt7IkFXoi40MSBrNO28X+ooHOKxWqPpuoVHRh7FDo3+pyHsorOZyG5R0w5kPUZmJffYFIrLhTLi1DzFJT0X+aWaZ3JGtfcJNlCvesTOuIpAcLBrdRIms5g4s+jFlM0PFPYY6ul1VtDG4PJzwqQHnGGpKKlA1fVKN0VqxX31Tx1DjOTBXaRFvs3vaWdkniPIEF3hdGgEmxpev0VpeHNf8ZuiROMBhet0hMch9qkogR2wXbeSojHI22jd5ifp1cLbY9dHB8NWhJCbOgkYzBxpFzxH3wu74F++ro8ckWsM7a5l7/IuzVnAxJX1MojGQ3shHslKCPPimY+b+jYfmU0qONPIOj5rzK9lDi33OyQttVpEaglXXMFoabQVmqny3QxaBW4opM3o4CtwDJazWGZtAUMi12ONkAtGMrNGS/1QI5yb+CxciLmc8EwoDKEokefK6CBKPRf47Mj/MEIujvv+MzA/6kKQLCR7y18q5Y8AjiWryrR1T9uwp/RqJ3YUdGWBxYUeR2RzN7gThn6ifCrtLaA7X/dwG4xtusvg+24uVihzKtr/Cqrh7OFPdcVlYcXItmyHS7x67ROwyxxTceAHegqsLHVOQ4WLH00sdE5DhUsev2IbaznR95gKrCnDGi0oXDOmTRrmvhP3i712+u+LvXXO84u9dKL2Cf3V33X7+i6u7N/y5S9IdvOvoF0G/19GP9tfR/wPQ21eEI8clLwAAAABJRU5ErkJggg==`;export{je as a,Ae as i,Ie as n,ke as r,Le as t};
@@ -1,4 +1,4 @@
1
- import{o as e,t}from"./rolldown-runtime--c01j_DQ.js";import{Dt as n}from"./index-C16pnEK3.js";import{i as r,l as i,n as a,o,t as s}from"./lit-Czpkz5lw.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./wui-text-IdpNh4yv.js";import{$ as m,G as h,H as g,J as _,K as v,Q as ee,U as y,W as b,X as x,Y as S,Z as C,a as w,et as te,g as T,i as ne,n as E,p as re,r as D,s as O,u as ie,v as ae}from"./ConstantsUtil-CiJQ7E9o.js";import{n as oe,t as se}from"./ConnectorUtil-BNHqGaBo.js";var ce=i`
1
+ import{o as e,t}from"./rolldown-runtime--c01j_DQ.js";import{Dt as n}from"./index-CO2_9wT6.js";import{i as r,l as i,n as a,o,t as s}from"./lit-Czpkz5lw.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./wui-text-IdpNh4yv.js";import{$ as m,G as h,H as g,J as _,K as v,Q as ee,U as y,W as b,X as x,Y as S,Z as C,a as w,et as te,g as T,i as ne,n as E,p as re,r as D,s as O,u as ie,v as ae}from"./ConstantsUtil-CiJQ7E9o.js";import{n as oe,t as se}from"./ConnectorUtil-BNHqGaBo.js";var ce=i`
2
2
  :host {
3
3
  position: relative;
4
4
  background-color: var(--wui-color-gray-glass-002);
@@ -1 +1 @@
1
- import{Yr as e}from"./constants-DDcIM163.js";import{An as t,On as n,_n as r,or as i,vn as a,yr as o}from"./index-C16pnEK3.js";var s={namespaced:!0,state:i,mutations:{setModel:(e,t)=>{e.model=t},setModelGroup:(e,t)=>{e.modelGroup=t},setService:(e,t)=>{e.service=t},setCredential:(e,t)=>{e.credential=t},setConversations:(e,t)=>{e.conversations=t},setApplication:(e,t)=>{e.application=t},setApplications:(e,t)=>{e.applications=t},setPendingDraft:(e,t)=>{e.pendingDraft=t||``},resetAll:e=>{Object.assign(e,i())}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},createCredential:async({commit:e,state:t})=>{let n=t.application;if(console.debug(`prepare to create credential for application for chat`,n),!n){console.error(`Application not found`);return}console.debug(`creating create credential for application for chat`,n);let{data:i}=await r.create({application_id:n?.id,host:window.location.origin});return console.debug(`created credential success`,i),e(`setCredential`,i),console.debug(`end createCredential`),i},setModel:async({commit:e},t)=>{e(`setModel`,t)},setModelGroup:async({commit:e},t)=>{e(`setModelGroup`,t)},getService:async({commit:t,state:n})=>{n.status.getService=o.Request;try{let{data:r}=await a.get(e);return n.status.getService=o.Success,t(`setService`,r),r}catch{n.status.getService=o.Error,t(`setService`,void 0)}},setService:async({commit:e},t)=>{console.debug(`set service for chat`,t),e(`setService`,t)},setCredential:async({commit:e},t)=>{console.debug(`set credential`,t),e(`setCredential`,t)},setApplication:async({commit:e,dispatch:t,rootState:n},r)=>{if(console.debug(`set application`,r),e(`setApplication`,r),console.debug(`application is set`),!r){console.debug(`application is null, return`);return}let i=n?.user?.id,a=r?.role===`grantee`,o=r?.credentials?.find(e=>e?.host===window.location.origin);!o&&a&&(o=r?.credentials?.find(e=>e?.user_id===i)),o?(console.debug(`credential exists, set credential`,o),e(`setCredential`,o)):a?(console.warn(`no credential available for granted application`,r),e(`setCredential`,void 0)):(console.debug(`credential not exists, start to create credential for application`,r),await t(`createCredential`))},setApplications:async({commit:e},t)=>{console.debug(`set applications for chat`,t),e(`setApplications`,t)},getApplications:async({commit:n,state:r})=>{console.debug(`start to get applications for chat`),r.status.getApplications=o.Request;try{let{data:i}=await t.getAll({user_id:`me`,service_id:e,affiliation:[`owner`,`granted`]});return console.debug(`get applications success for chat`,i),r.status.getApplications=o.Success,n(`setApplications`,i.items),console.debug(`set applications for chat`,i.items),i.items}catch(e){console.error(`get applications failed for chat`,e),r.status.getApplications=o.Error,n(`setApplications`,void 0),n(`setApplication`,void 0)}},setConversation:async({commit:e,state:t},n)=>{console.debug(`set conversation`,n);let r=t.conversations||[],i=r?.findIndex(e=>e.id===n.id);i>-1?r[i]=n:r?.unshift(n),e(`setConversations`,r),console.debug(`set conversation success`,r)},setConversations:async({commit:e},t)=>{console.debug(`set conversations`,t),e(`setConversations`,t)},getConversations:async({commit:e,state:t,rootState:r})=>{t.status.getConversations=o.Request;let i=t.credential?.token,a=t.modelGroup?.name;if(!i||!a)return t.status.getConversations=o.Error,e(`setConversations`,[]),[];try{let{data:s}=await n.getConversations({userId:r.user?.id,modelGroup:a},{token:i});return console.debug(`get conversations success`,s?.items?.length,`group=`,a),t.status.getConversations=o.Success,e(`setConversations`,s.items),s.items}catch{return t.status.getConversations=o.Error,e(`setConversations`,[]),[]}},getConversation:async({commit:e,state:t},r)=>{let i=t.credential?.token;if(!(!i||!r))try{let{data:a}=await n.getConversation(r,{token:i}),o=t.conversations||[],s=o.findIndex(e=>e.id===r),c=s>-1?{...o[s],...a}:a;if(s>-1){let t=[...o];t[s]=c,e(`setConversations`,t)}return c}catch(e){console.error(`getConversation failed`,r,e);return}}}};export{s as chat,s as default};
1
+ import{Zr as e}from"./constants-C-bSXdJ_.js";import{An as t,On as n,_n as r,or as i,vn as a,yr as o}from"./index-CO2_9wT6.js";var s={namespaced:!0,state:i,mutations:{setModel:(e,t)=>{e.model=t},setModelGroup:(e,t)=>{e.modelGroup=t},setService:(e,t)=>{e.service=t},setCredential:(e,t)=>{e.credential=t},setConversations:(e,t)=>{e.conversations=t},setApplication:(e,t)=>{e.application=t},setApplications:(e,t)=>{e.applications=t},setPendingDraft:(e,t)=>{e.pendingDraft=t||``},resetAll:e=>{Object.assign(e,i())}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},createCredential:async({commit:e,state:t})=>{let n=t.application;if(console.debug(`prepare to create credential for application for chat`,n),!n){console.error(`Application not found`);return}console.debug(`creating create credential for application for chat`,n);let{data:i}=await r.create({application_id:n?.id,host:window.location.origin});return console.debug(`created credential success`,i),e(`setCredential`,i),console.debug(`end createCredential`),i},setModel:async({commit:e},t)=>{e(`setModel`,t)},setModelGroup:async({commit:e},t)=>{e(`setModelGroup`,t)},getService:async({commit:t,state:n})=>{n.status.getService=o.Request;try{let{data:r}=await a.get(e);return n.status.getService=o.Success,t(`setService`,r),r}catch{n.status.getService=o.Error,t(`setService`,void 0)}},setService:async({commit:e},t)=>{console.debug(`set service for chat`,t),e(`setService`,t)},setCredential:async({commit:e},t)=>{console.debug(`set credential`,t),e(`setCredential`,t)},setApplication:async({commit:e,dispatch:t,rootState:n},r)=>{if(console.debug(`set application`,r),e(`setApplication`,r),console.debug(`application is set`),!r){console.debug(`application is null, return`);return}let i=n?.user?.id,a=r?.role===`grantee`,o=r?.credentials?.find(e=>e?.host===window.location.origin);!o&&a&&(o=r?.credentials?.find(e=>e?.user_id===i)),o?(console.debug(`credential exists, set credential`,o),e(`setCredential`,o)):a?(console.warn(`no credential available for granted application`,r),e(`setCredential`,void 0)):(console.debug(`credential not exists, start to create credential for application`,r),await t(`createCredential`))},setApplications:async({commit:e},t)=>{console.debug(`set applications for chat`,t),e(`setApplications`,t)},getApplications:async({commit:n,state:r})=>{console.debug(`start to get applications for chat`),r.status.getApplications=o.Request;try{let{data:i}=await t.getAll({user_id:`me`,service_id:e,affiliation:[`owner`,`granted`]});return console.debug(`get applications success for chat`,i),r.status.getApplications=o.Success,n(`setApplications`,i.items),console.debug(`set applications for chat`,i.items),i.items}catch(e){console.error(`get applications failed for chat`,e),r.status.getApplications=o.Error,n(`setApplications`,void 0),n(`setApplication`,void 0)}},setConversation:async({commit:e,state:t},n)=>{console.debug(`set conversation`,n);let r=t.conversations||[],i=r?.findIndex(e=>e.id===n.id);i>-1?r[i]=n:r?.unshift(n),e(`setConversations`,r),console.debug(`set conversation success`,r)},setConversations:async({commit:e},t)=>{console.debug(`set conversations`,t),e(`setConversations`,t)},getConversations:async({commit:e,state:t,rootState:r})=>{t.status.getConversations=o.Request;let i=t.credential?.token,a=t.modelGroup?.name;if(!i||!a)return t.status.getConversations=o.Error,e(`setConversations`,[]),[];try{let{data:s}=await n.getConversations({userId:r.user?.id,modelGroup:a},{token:i});return console.debug(`get conversations success`,s?.items?.length,`group=`,a),t.status.getConversations=o.Success,e(`setConversations`,s.items),s.items}catch{return t.status.getConversations=o.Error,e(`setConversations`,[]),[]}},getConversation:async({commit:e,state:t},r)=>{let i=t.credential?.token;if(!(!i||!r))try{let{data:a}=await n.getConversation(r,{token:i}),o=t.conversations||[],s=o.findIndex(e=>e.id===r),c=s>-1?{...o[s],...a}:a;if(s>-1){let t=[...o];t[s]=c,e(`setConversations`,t)}return c}catch(e){console.error(`getConversation failed`,r,e);return}}}};export{s as chat,s as default};
@@ -1 +1 @@
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`}};export{e as default};
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 +1 @@
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`}};export{e as default};
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 +1 @@
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`}};export{e as default};
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 +1 @@
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`}};export{e as default};
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 +1 @@
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`}};export{e as default};
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 +1 @@
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`}};export{e as default};
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};
@@ -0,0 +1,2 @@
1
+ import{A as e,B as t,C as n,D as r,E as i,F as a,I as o,L as s,M as c,N as l,O as u,P as d,R as f,S as p,T as m,_ as h,a as g,b as _,c as v,d as y,f as b,fi as x,g as S,h as C,i as w,j as T,k as ee,l as te,m as ne,n as re,o as E,p as D,r as O,s as k,t as A,u as j,v as M,w as N,x as P,y as F,z as I}from"./constants-C-bSXdJ_.js";import{Dr as L,Ln as R,Wt as z,yr as B}from"./index-CO2_9wT6.js";import{a as V,i as ie,n as H,o as U,r as W}from"./codingBridgeNotify-CYJHKOgl.js";var G=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,K=()=>{try{return typeof localStorage<`u`&&localStorage.getItem(`cbDebug`)===`1`}catch{return!1}},q=(e,t)=>{if(!K())return;let n=t?.payload??{};console.debug(`[codingBridge]`,e,{type:t?.type,id:t?.id,node_id:t?.node_id??t?.from_node,action:n?.action,event:n?.event,session_id:n?.session_id,trace_id:n?.trace_id})},J=class{ws;token;handlers;reconnectDelay=t;reconnectTimer;closedByUser=!1;constructor(e,t){this.token=e,this.handlers=t}get isOpen(){return this.ws?.readyState===WebSocket.OPEN}connect(){this.closedByUser=!1,this.open()}open(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;let e=`${x}?token=${encodeURIComponent(this.token)}`,n;try{n=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=n,n.onopen=()=>{this.reconnectDelay=t,this.handlers.onOpen?.()},n.onmessage=e=>this.onMessage(e),n.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},n.onerror=()=>{n.close()}}onMessage(e){let t;try{t=JSON.parse(e.data)}catch{return}let n=t?.payload??{};switch(q(`recv`,t),t?.type){case f:this.handlers.onEvent?.(n,t?.from_node);break;case o:this.handlers.onNodesSnapshot?.(n.nodes??[]);break;case s:this.handlers.onNodeStatus?.(n.node_id,n.status);break;case C:this.handlers.onRelayError?.(n.code??`error`,n.message??``);break;default:break}}scheduleReconnect(){if(this.closedByUser||this.reconnectTimer)return;let e=this.reconnectDelay;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.open()},e),this.reconnectDelay=Math.min(this.reconnectDelay*2,I)}sendEnvelope(e,t){if(!this.isOpen)return;let n={v:2,id:G(),ts:Date.now(),type:e,...t};q(`send`,n),this.ws?.send(JSON.stringify(n))}sendToNode(e,t){this.sendEnvelope(ne,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(b,{})}resume(e){this.sendEnvelope(D,{payload:{resume_from:e}})}close(){if(this.closedByUser=!0,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),void 0),this.ws){this.ws.onclose=null,this.ws.onerror=null,this.ws.onmessage=null,this.ws.onopen=null;try{this.ws.close()}catch{}this.ws=void 0}}},Y,X=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,Z=(e,t,n)=>({id:X(),session_id:e,kind:t,ts:Date.now(),...n}),Q=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},ae=e=>{let t=Q(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
2
+ `)},oe=(e,t)=>{H({title:`Approval needed`,body:`Claude wants to use ${t.tool||`a tool`}. Tap to review.`,data:t},t=>{t.node_id&&e(`selectNode`,t.node_id)})},se=(t,o,s,f,g)=>{let v=f?.event,y=f?.session_id,b=f?.trace_id,x=f?.seq;if(typeof x==`number`&&y){let e=s.lastSeq[y];if(e!==void 0&&x<=e)return;t(`setLastSeq`,{session_id:y,seq:x})}switch(y&&b&&t(`updateSession`,{session_id:y,trace_id:b}),v){case ee:t(`upsertSession`,{session_id:y,node_id:g,status:`running`,cwd:f.cwd,model:f.model,trace_id:b});break;case c:{let e=f.id;e&&s.events[y]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`appendDelta`,{session_id:y,stream_id:e,text:f.text??``}):t(`appendEvent`,Z(y,`text`,{text:f.text??``,stream_id:e,streaming:!0,trace_id:b}));break}case T:{let e=f.id;e&&s.events[y]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`finalizeStream`,{session_id:y,stream_id:e,text:f.text}):t(`appendEvent`,Z(y,`text`,{text:f.text,trace_id:b}));break}case l:t(`appendEvent`,Z(y,`thinking`,{text:f.text,trace_id:b}));break;case a:t(`appendEvent`,Z(y,`tool_use`,{tool:f.tool,tool_use_id:f.tool_use_id,input:f.input,trace_id:b}));break;case d:t(`appendEvent`,Z(y,`tool_result`,{tool_use_id:f.tool_use_id,content:f.content,is_error:f.is_error,trace_id:b}));break;case P:t(`addPermission`,{request_id:f.request_id,session_id:y,node_id:g,tool:f.tool,input:f.input,title:f.title,display_name:f.display_name,description:f.description}),oe(o,{node_id:g,session_id:y,request_id:f.request_id,tool:f.display_name||f.title||f.tool});break;case _:for(let e of f.requests??[])t(`addPermission`,{request_id:e.request_id,session_id:e.session_id,node_id:g,tool:e.tool,input:e.input,title:e.title,display_name:e.display_name,description:e.description});break;case p:t(`removePermission`,f.request_id);break;case r:t(`finalizeAllStreams`,{session_id:y}),t(`appendEvent`,Z(y,`result`,{subtype:f.subtype,is_error:f.is_error,text:f.result,cost_usd:f.cost_usd,cut_uuid:f.cut_uuid,sdk_session_id:f.sdk_session_id,trace_id:b})),t(`updateSession`,{session_id:y,status:`idle`,cost_usd:f.cost_usd,...f.sdk_session_id?{sdk_session_id:f.sdk_session_id}:{}});break;case i:t(`appendEvent`,Z(y,`notice`,{text:f.text,subtype:f.code,command:f.command,level:f.level}));break;case m:t(`finalizeAllStreams`,{session_id:y}),t(`appendEvent`,Z(y,`error`,{text:f.message,trace_id:b})),t(`updateSession`,{session_id:y,status:`error`});break;case N:t(`finalizeAllStreams`,{session_id:y}),t(`updateSession`,{session_id:y,status:`closed`});break;case u:t(`rewindToCut`,{session_id:y,cut_uuid:f.cut_uuid}),f.prompt&&t(`appendEvent`,Z(y,`prompt`,{text:f.prompt,trace_id:b})),t(`updateSession`,{session_id:y,status:`running`});break;case e:o(`resyncSession`,y);break;case n:for(let e of f.sessions??[])t(`upsertSession`,{session_id:e.session_id,node_id:g,status:e.status??`idle`,cwd:e.cwd,model:e.model});break;case F:if(g){t(`setHistory`,{node_id:g,sessions:f.sessions??[]}),t(`updateStatus`,{key:`getHistory`,value:B.Success});let e=s.historyRef;e&&e.node_id===g&&!s.currentSessionId&&o(`getHistoryDetail`,e)}break;case M:ce(t,f,g);break;case h:t(`setDirectory`,{path:f.path,parent:f.parent??null,sep:f.sep??`/`,entries:f.entries??[],truncated:f.truncated,error:f.error});break;case S:g&&t(`setCapabilities`,{node_id:g,capabilities:{providers:f.providers??[]}});break;default:break}},ce=(e,t,n)=>{let r=t?.session_id,i=t?.provider===`codex`?`codex`:`claude`;if(!r||!n)return;let a=i===`claude`;e(`upsertSession`,{session_id:r,node_id:n,status:`idle`,cwd:t.cwd,model:t.model,provider:i,started:!1,readonly:!a,resume_session_id:a?r:void 0}),e(`setEvents`,{session_id:r,events:(t.events??[]).map((e,t)=>({id:X(),session_id:r,kind:e.kind,ts:typeof e.ts==`number`?e.ts:Date.now()+t,text:e.text,tool:e.tool,tool_use_id:e.tool_use_id,input:e.input,content:e.content,is_error:e.is_error,subtype:e.subtype,cost_usd:e.cost_usd}))}),e(`setCurrentNode`,n),e(`setCurrentSession`,r),e(`setHistoryRef`,{node_id:n,provider:i,session_id:r})},$={namespaced:!0,state:R,mutations:{resetAll:e=>{Object.assign(e,R())},updateStatus:(e,t)=>{e.status[t.key]=t.value},setConnection:(e,t)=>{e.connection=t},setNodes:(e,t)=>{e.nodes=t},mergeNodeSnapshot:(e,t)=>{let n=new Set(t.map(e=>e.node_id));for(let t of e.nodes)t.status=n.has(t.node_id)?`online`:`offline`;for(let n of t)e.nodes.some(e=>e.node_id===n.node_id)||e.nodes.push({...n,status:`online`})},setNodeStatus:(e,t)=>{let n=e.nodes.find(e=>e.node_id===t.node_id);n&&(n.status=t.status)},setCurrentNode:(e,t)=>{e.currentNodeId=t},setCurrentSession:(e,t)=>{e.currentSessionId=t},upsertSession:(e,t)=>{e.sessions[t.session_id]={...e.sessions[t.session_id],...t},e.events[t.session_id]||(e.events[t.session_id]=[])},updateSession:(e,t)=>{let n=e.sessions[t.session_id];n&&(e.sessions[t.session_id]={...n,...t})},appendEvent:(e,t)=>{e.events[t.session_id]||(e.events[t.session_id]=[]),e.events[t.session_id].push(t)},truncateEventsBefore:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.findIndex(e=>e.id===t.event_id);r>=0&&(e.events[t.session_id]=n.slice(0,r))},rewindToCut:(e,t)=>{let n=e.events[t.session_id];if(!n)return;if(!t.cut_uuid){e.events[t.session_id]=[];return}let r=n.findIndex(e=>e.kind===`result`&&e.cut_uuid===t.cut_uuid);r>=0&&(e.events[t.session_id]=n.slice(0,r+1))},setLastSeq:(e,t)=>{let n=e.lastSeq[t.session_id]??0;t.seq>n&&(e.lastSeq[t.session_id]=t.seq)},appendDelta:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(r.text=(r.text??``)+(t.text??``))},finalizeStream:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(typeof t.text==`string`&&(r.text=t.text),r.streaming=!1)},finalizeAllStreams:(e,t)=>{let n=e.events[t.session_id];if(n)for(let e of n)e.streaming&&=!1},setEvents:(e,t)=>{e.events[t.session_id]=t.events},setHistory:(e,t)=>{e.history[t.node_id]=t.sessions},setHistoryRef:(e,t)=>{e.historyRef=t},setDirectory:(e,t)=>{e.directory=t,e.directoryLoading=!1},setDirectoryLoading:(e,t)=>{e.directoryLoading=t},setLastComposer:(e,t)=>{e.lastComposer={...e.lastComposer,[t.node_id]:{...e.lastComposer[t.node_id],...t.prefs}}},setCapabilities:(e,t)=>{e.capabilities[t.node_id]=t.capabilities},addPermission:(e,t)=>{e.permissions.some(e=>e.request_id===t.request_id)||e.permissions.push(t)},removePermission:(e,t)=>{e.permissions=e.permissions.filter(e=>e.request_id!==t)},removeNodeData:(e,t)=>{delete e.history[t],delete e.capabilities[t],e.historyRef?.node_id===t&&(e.historyRef=void 0);for(let n of Object.values(e.sessions))n.node_id===t&&(delete e.sessions[n.session_id],delete e.events[n.session_id],delete e.lastSeq[n.session_id],e.currentSessionId===n.session_id&&(e.currentSessionId=void 0))}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},getApplications:async()=>{},setApplication:async()=>{},getNodes:async({commit:e,rootState:t})=>{let n=t.token?.access;if(!n)return[];e(`updateStatus`,{key:`getNodes`,value:B.Request});try{let{data:t}=await z.getNodes({token:n});return e(`setNodes`,t.nodes??[]),e(`updateStatus`,{key:`getNodes`,value:B.Success}),t.nodes??[]}catch(t){throw e(`updateStatus`,{key:`getNodes`,value:B.Error}),t}},claimPair:async({commit:e,dispatch:t,rootState:n},r)=>{let i=n.token?.access;if(!i)throw Error(`not authenticated`);e(`updateStatus`,{key:`claimPair`,value:B.Request});try{let{data:n}=await z.claimPair(r.trim(),{token:i});return e(`updateStatus`,{key:`claimPair`,value:B.Success}),await t(`getNodes`),n.node_name}catch(t){throw e(`updateStatus`,{key:`claimPair`,value:B.Error}),t}},deleteNode:async({commit:e,dispatch:t,state:n,rootState:r},i)=>{let a=r.token?.access;if(!a)throw Error(`not authenticated`);e(`updateStatus`,{key:`deleteNode`,value:B.Request});try{await z.deleteNode(i,{token:a}),e(`removeNodeData`,i),n.currentNodeId===i&&(e(`setCurrentNode`,void 0),e(`setCurrentSession`,void 0)),e(`updateStatus`,{key:`deleteNode`,value:B.Success}),await t(`getNodes`)}catch(t){throw e(`updateStatus`,{key:`deleteNode`,value:B.Error}),t}},connect:({commit:e,dispatch:t,state:n,rootState:r})=>{let i=r.token?.access;i&&(Y?.isOpen||(Y?.close(),e(`setConnection`,`connecting`),Y=new J(i,{onOpen:()=>{e(`setConnection`,`connected`);let r={...n.lastSeq};Object.keys(r).length&&Y?.resume(r),n.currentNodeId&&(t(`getHistory`,n.currentNodeId),t(`getCapabilities`,n.currentNodeId),t(`requestPendingPermissions`,n.currentNodeId))},onClose:()=>e(`setConnection`,`disconnected`),onEvent:(r,i)=>se(e,t,n,r,i),onNodesSnapshot:t=>{e(`mergeNodeSnapshot`,t)},onNodeStatus:(r,i)=>{e(`setNodeStatus`,{node_id:r,status:i}),i===`online`&&r===n.currentNodeId&&(t(`getHistory`,r),t(`getCapabilities`,r),t(`requestPendingPermissions`,r))},onRelayError:(e,t)=>console.warn(`[codingBridge] relay error`,e,t)}),Y.connect()))},disconnect:({commit:e})=>{Y?.close(),Y=void 0,e(`setConnection`,`disconnected`)},selectNode:({commit:e,dispatch:t,state:n},r)=>{if(e(`setCurrentNode`,r),!r){e(`setCurrentSession`,void 0);return}let i=Object.values(n.sessions).filter(e=>e.node_id===r).map(e=>e.session_id);e(`setCurrentSession`,i.length?i[i.length-1]:void 0),t(`getHistory`,r),t(`getCapabilities`,r),t(`requestPendingPermissions`,r)},requestPendingPermissions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!Y||Y.sendToNode(n,{action:g})},enableNotifications:async({dispatch:e,rootState:t})=>{let n=t.token?.access;if(!n)return`unsupported`;if(L()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await z.savePushSubscription({kind:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await ie();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await z.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await V(e.vapid_public_key);t&&await z.savePushSubscription({kind:`webpush`,subscription:t,ua:navigator.userAgent},{token:n})}}catch(e){console.warn(`[codingBridge] web push setup skipped`,e)}return`enabled`},disableNotifications:async({rootState:e})=>{let t=e.token?.access;if(L()||!t)return;let n=await U();if(n)try{await z.deletePushSubscription({endpoint:n},{token:t})}catch(e){console.warn(`[codingBridge] failed to deregister web push`,e)}},newSession:({commit:e})=>{e(`setCurrentSession`,void 0),e(`setHistoryRef`,void 0)},sendPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=n.prompt?.trim(),a=n.images?.length?n.images:void 0,o=n.attachments?.length?n.attachments:void 0;if(!r||!Y||!i&&!a&&!o)return;let s=X(),c=t.currentSessionId,l=c?t.sessions[c]:void 0;if(!l||!l.started){let t=l?.provider||n.provider||`claude`;l?(c=l.session_id,e(`updateSession`,{session_id:c,status:`starting`,trace_id:s})):(c=X(),e(`upsertSession`,{session_id:c,node_id:r,status:`starting`,cwd:n.cwd,model:n.model,provider:t,trace_id:s}),e(`setCurrentSession`,c)),e(`appendEvent`,Z(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,started:!0}),Y.sendToNode(r,{action:y,session_id:c,trace_id:s,prompt:i,cwd:n.cwd||l?.cwd||void 0,model:n.model||l?.model||void 0,permission_mode:n.permissionMode||`default`,provider:t,effort:n.effort||void 0,images:a,attachments:o,resume_session_id:l?.resume_session_id||void 0})}else e(`updateSession`,{session_id:c,trace_id:s}),e(`appendEvent`,Z(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,status:`running`,model:n.model||void 0}),Y.sendToNode(r,{action:j,session_id:c,trace_id:s,prompt:i,model:n.model??``,images:a,attachments:o})},editPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=t.currentSessionId,a=n.prompt?.trim();if(!r||!i||!Y||!a)return;let o=t.sessions[i],s=t.events[i]??[],c=s.findIndex(e=>e.id===n.eventId);if(!o||c<0)return;let l;for(let e=c-1;e>=0;e--)if(s[e].kind===`result`&&s[e].cut_uuid){l=s[e].cut_uuid;break}let u=n.images?.length?n.images:void 0,d=n.attachments?.length?n.attachments:void 0,f=X();e(`truncateEventsBefore`,{session_id:i,event_id:n.eventId}),e(`updateSession`,{session_id:i,status:`running`,trace_id:f,model:n.model||o.model||void 0}),e(`appendEvent`,Z(i,`prompt`,{text:a,images:u,attachments:d,trace_id:f})),Y.sendToNode(r,{action:v,session_id:i,trace_id:f,cut_uuid:l,prompt:a,model:n.model||o.model||void 0,permission_mode:n.permissionMode||void 0,effort:n.effort||void 0,images:u,attachments:d,restore_code:!!n.restoreCode})},retryLastPrompt:({commit:e,dispatch:t,state:n})=>{let r=n.currentSessionId;if(!r)return;let i=n.sessions[r],a=[...n.events[r]??[]].reverse().find(e=>e.kind===`prompt`);!i||!a||(e(`updateSession`,{session_id:r,started:!1}),t(`sendPrompt`,{prompt:a.text??``,cwd:i.cwd,model:i.model,provider:i.provider,images:a.images,attachments:a.attachments}))},interruptSession:({state:e})=>{let t=e.currentSessionId,n=e.currentNodeId;!t||!n||!Y||Y.sendToNode(n,{action:te,session_id:t})},closeSession:({commit:e,state:t},n)=>{let r=n??t.currentSessionId;if(!r)return;let i=t.sessions[r]?.node_id??t.currentNodeId;i&&Y&&Y.sendToNode(i,{action:k,session_id:r}),e(`updateSession`,{session_id:r,status:`closed`}),t.currentSessionId===r&&e(`setCurrentSession`,void 0)},resolvePermission:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(Y?.sendToNode(r.node_id,{action:E,request_id:n.request_id,decision:n.decision}),e(`removePermission`,n.request_id))},answerQuestion:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(Y?.sendToNode(r.node_id,{action:E,request_id:n.request_id,decision:`allow`,answer:Q(n.output),answer_text:ae(n.output)}),e(`removePermission`,n.request_id))},getHistory:({commit:e,state:t},n)=>{let r=n??t.currentNodeId;!r||!Y||(e(`updateStatus`,{key:`getHistory`,value:B.Request}),Y.sendToNode(r,{action:w,limit:200}))},getHistoryDetail:(e,t)=>{!t?.node_id||!t?.session_id||!Y||Y.sendToNode(t.node_id,{action:O,provider:t.provider,session_id:t.session_id})},resyncSession:({state:e,dispatch:t},n)=>{let r=e.sessions[n];r?.node_id&&t(`getHistoryDetail`,{node_id:r.node_id,session_id:n,provider:r.provider??`claude`})},browseDir:({commit:e,state:t},n)=>{let r=t.currentNodeId;!r||!Y||(e(`setDirectoryLoading`,!0),Y.sendToNode(r,{action:re,path:n||void 0}))},clearDirectory:({commit:e})=>{e(`setDirectory`,void 0)},getCapabilities:({state:e},t)=>{let n=t??e.currentNodeId;!n||!Y||Y.sendToNode(n,{action:A})}}};export{$ as codingBridge,$ as default};
@@ -1 +1 @@
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`}};export{e as default};
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};