@acedatacloud/nexior 3.312.0 → 3.312.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 (153) hide show
  1. package/dist/assets/{ApiCodeButton-CsuYPLil.js → ApiCodeButton-CuG9YCC5.js} +1 -1
  2. package/dist/assets/{AskUserQuestionCard-D7-7rrxk.js → AskUserQuestionCard-DegQIhQg.js} +1 -1
  3. package/dist/assets/{Auth-suLmQ98X.js → Auth-B--bVnUZ.js} +1 -1
  4. package/dist/assets/{Bare-CkL4LQtG.js → Bare-CVx91xnP.js} +1 -1
  5. package/dist/assets/{BotPlaceholder-DwX-l9HS.js → BotPlaceholder-DJ5b7jdx.js} +1 -1
  6. package/dist/assets/{BottomFooter-DqWZjTik.js → BottomFooter-Cdsy-iSm.js} +1 -1
  7. package/dist/assets/{Callback-BUEvrtnL.js → Callback-b_kt_dIM.js} +1 -1
  8. package/dist/assets/{CodeSnippet-QMOgcl10.js → CodeSnippet-CT68TL9N.js} +1 -1
  9. package/dist/assets/{Console-D_09daF9.js → Console-6mJZWI4f.js} +1 -1
  10. package/dist/assets/{Consumption-4_VsZJlK.js → Consumption-Bt4dVI79.js} +1 -1
  11. package/dist/assets/{Conversation-BRgJOWCb.js → Conversation-Uh1GX8dM.js} +1 -1
  12. package/dist/assets/{CopyToClipboard-Bt7DMkXp.js → CopyToClipboard-BYdniyvs.js} +1 -1
  13. package/dist/assets/{Detail-B-YcWe2D.js → Detail-BZJVcuhx.js} +2 -2
  14. package/dist/assets/{Extra-B2Jy2-pM.js → Extra-DYjdJURQ.js} +1 -1
  15. package/dist/assets/{FilePreview-Bsii1O0e.js → FilePreview-C2hc-bvs.js} +1 -1
  16. package/dist/assets/{Hailuo-D4cI6aWT.js → Hailuo-BONmrh_F.js} +1 -1
  17. package/dist/assets/{History-0Y2e48_L.js → History-CRePDDJT.js} +1 -1
  18. package/dist/assets/{ImagePreview-Cab_dp_V.js → ImagePreview-L8CnYJVz.js} +1 -1
  19. package/dist/assets/{ImageWrapper-f_fB2lqB.js → ImageWrapper-Cp3-7V13.js} +1 -1
  20. package/dist/assets/{Index-BtTNdjTQ.js → Index-3G2kFyBE.js} +1 -1
  21. package/dist/assets/{Index-52mGVE09.js → Index-3LPcP-Xq.js} +1 -1
  22. package/dist/assets/{Index-CvrVXMGu.js → Index-4dHSE6B8.js} +1 -1
  23. package/dist/assets/{Index-DGa5PwXz.js → Index-7IN1UDQh.js} +1 -1
  24. package/dist/assets/{Index-p_F_jVsB.js → Index-B2OHitDl.js} +1 -1
  25. package/dist/assets/{Index-CNVwRKLH.js → Index-BMaN9Jiv.js} +1 -1
  26. package/dist/assets/{Index-b7oXdwTA.js → Index-B_JTx7kx.js} +1 -1
  27. package/dist/assets/{Index-BVvvCh6n.js → Index-Bb-hW6x9.js} +1 -1
  28. package/dist/assets/{Index-C0loPcOe.js → Index-BrkPxQZY.js} +1 -1
  29. package/dist/assets/{Index-OLRNEX5R.js → Index-BrpX1r15.js} +1 -1
  30. package/dist/assets/{Index-DWKtA_Ut.js → Index-BzTH2sKO.js} +1 -1
  31. package/dist/assets/{Index-CJ2IMi_6.js → Index-C7mDwRen.js} +1 -1
  32. package/dist/assets/{Index-cK2eEeNX.js → Index-CBtxVpzl.js} +1 -1
  33. package/dist/assets/{Index-W4ApFAm_.js → Index-CD5aqtIx.js} +1 -1
  34. package/dist/assets/{Index-VASJmCn0.js → Index-CKI9jG-1.js} +1 -1
  35. package/dist/assets/{Index-DZv31sJg.js → Index-CKjO5Nzg.js} +1 -1
  36. package/dist/assets/{Index-wJderDmV.js → Index-CLRK_J3a.js} +1 -1
  37. package/dist/assets/{Index-mLMt0E7M.js → Index-CQqVsN-Z.js} +1 -1
  38. package/dist/assets/{Index-s2v5DN_L.js → Index-Cc_dbNnX.js} +1 -1
  39. package/dist/assets/{Index-Ch2LqBxj.js → Index-Cq3LzQYR.js} +1 -1
  40. package/dist/assets/{Index-x2qD2PG7.js → Index-Cy5TZT_S.js} +1 -1
  41. package/dist/assets/{Index-06ZMwzmp.js → Index-DVLCXLdq.js} +1 -1
  42. package/dist/assets/{Index-BJf05vyK.js → Index-DXWGGM9X.js} +1 -1
  43. package/dist/assets/{Index-DyLzFL-U.js → Index-DhrUicfj.js} +1 -1
  44. package/dist/assets/{Index-2Jq6KASn.js → Index-N7r3f0oE.js} +1 -1
  45. package/dist/assets/{Index-N0gu0RVi.js → Index-SFkzsM8W.js} +1 -1
  46. package/dist/assets/{Index-DnQsUW7a.js → Index-gEoOaZEo.js} +1 -1
  47. package/dist/assets/{Index-BycRTXhd.js → Index-oOc9PpEx.js} +1 -1
  48. package/dist/assets/{Invitees-4ves2rCA.js → Invitees-D_BhhxG1.js} +1 -1
  49. package/dist/assets/{List-BvOVmR13.js → List-CgVVIrZU.js} +1 -1
  50. package/dist/assets/{List-cRazeKly.js → List-D22iRBvm.js} +1 -1
  51. package/dist/assets/{List-BQi147KN.js → List-DXODpsBu.js} +1 -1
  52. package/dist/assets/{LocalTools-Dzon80Cc.js → LocalTools-7jnfHd6P.js} +1 -1
  53. package/dist/assets/{LocalTools--cx0YYiF.js → LocalTools-DeKZLfOc.js} +1 -1
  54. package/dist/assets/{Main-CyuFIAhA.js → Main-DrlAqWeD.js} +1 -1
  55. package/dist/assets/{Model-73BtruwO.js → Model-PtkTPweq.js} +1 -1
  56. package/dist/assets/{Navigator-CGb6x8f1.js → Navigator-DifvMrLl.js} +1 -1
  57. package/dist/assets/{NoTasks-CUqyluFp.js → NoTasks-DpziyI0W.js} +1 -1
  58. package/dist/assets/{NotFound-D2gI3UJ3.js → NotFound-arhIyRiY.js} +1 -1
  59. package/dist/assets/{Pagination-B5fDC4YV.js → Pagination-DbPRUdtK.js} +1 -1
  60. package/dist/assets/{Pay-DzZzxLN4.js → Pay-C0bf8CyF.js} +1 -1
  61. package/dist/assets/{Player-DM0bzb1k.js → Player-G3C_VFC7.js} +1 -1
  62. package/dist/assets/{PromptTextarea-B8ppuQvk.js → PromptTextarea-BpjgyxJm.js} +1 -1
  63. package/dist/assets/{RealtimeCall-c3owKTcv.js → RealtimeCall-i9dON96B.js} +1 -1
  64. package/dist/assets/{ScheduledTasks-DjgS3AK5.js → ScheduledTasks-BAeG-Asy.js} +1 -1
  65. package/dist/assets/{Status-CFlb0P2C.js → Status-CyvHe4X_.js} +1 -1
  66. package/dist/assets/{Subscribe-CFpg7z3D.js → Subscribe-DsKSs0V8.js} +1 -1
  67. package/dist/assets/{TabSwitcher-C98slng1.js → TabSwitcher-BDTUV6rS.js} +1 -1
  68. package/dist/assets/{Tts-Bbdxi4CD.js → Tts-C0Kgfz4Q.js} +1 -1
  69. package/dist/assets/{VideoPlayer-M6ScWxHi.js → VideoPlayer-BC_8Ko5B.js} +1 -1
  70. package/dist/assets/{avatar-C6I8avAE.js → avatar-CXsgdHcI.js} +1 -1
  71. package/dist/assets/{basic-DAUIiF4l.js → basic-D9a7lxnJ.js} +1 -1
  72. package/dist/assets/{chat-CSKbySP0.js → chat-CpzcjzAW.js} +1 -1
  73. package/dist/assets/{codingBridge-CZg3Ul_k.js → codingBridge-B0abrEIQ.js} +1 -1
  74. package/dist/assets/{codingBridgeNotify-BDcV2PI5.js → codingBridgeNotify-KnF2ycpK.js} +2 -2
  75. package/dist/assets/{collapse-_TIIR4aW.js → collapse-HIhiXzxX.js} +1 -1
  76. package/dist/assets/{common-BhnKaqaB.js → common-BHXwTdST.js} +1 -1
  77. package/dist/assets/{common-BAIjBcAN.js → common-BJBYLgTk.js} +1 -1
  78. package/dist/assets/{common-js4aVekI.js → common-Ba0ujzmQ.js} +1 -1
  79. package/dist/assets/{common-D66LJZCu.js → common-BpGhCuYa.js} +1 -1
  80. package/dist/assets/{common-kPgVTi_t.js → common-C1NmBISH.js} +1 -1
  81. package/dist/assets/{common-COrp-f6_.js → common-C9sRa8rn.js} +1 -1
  82. package/dist/assets/{common-CaAgPYhn.js → common-CQCAX3SY.js} +1 -1
  83. package/dist/assets/{common-DWycOpv-.js → common-CTtjBj4V.js} +1 -1
  84. package/dist/assets/{common-BPYftjPC.js → common-CuBLNcry.js} +1 -1
  85. package/dist/assets/{common-Gvi5GS3j.js → common-D2GQvNx-.js} +1 -1
  86. package/dist/assets/{common-YQBNyBW7.js → common-D2dTC8VD.js} +1 -1
  87. package/dist/assets/{common-R_d94piE.js → common-D34s7EFR.js} +1 -1
  88. package/dist/assets/{common-Cd6oOydJ.js → common-DSUUR3Lv.js} +1 -1
  89. package/dist/assets/{common-C8aMtalN.js → common-Dr8aKoJ-.js} +1 -1
  90. package/dist/assets/{common-CNphDnoU.js → common-JPO0c_sf.js} +1 -1
  91. package/dist/assets/{common-DabvVe3R.js → common-QkFyXDOr.js} +1 -1
  92. package/dist/assets/{common-B4ADrk6B.js → common-Z7XArQ0m.js} +1 -1
  93. package/dist/assets/{common-C93uRxEO.js → common-hcq4gGOK.js} +1 -1
  94. package/dist/assets/{constants-YyZAr4vB.js → constants-CkWWBPId.js} +1 -1
  95. package/dist/assets/{createTaskActions-BRiR8XTs.js → createTaskActions-Bj8H90N-.js} +1 -1
  96. package/dist/assets/{date-picker-3AG0aHSn.js → date-picker-CSL6LAfQ.js} +1 -1
  97. package/dist/assets/{digitalhuman-Cg6Cwicu.js → digitalhuman-B0_Wukmd.js} +1 -1
  98. package/dist/assets/{dropdown-BDSCY1mG.js → dropdown-Cp2gth1s.js} +1 -1
  99. package/dist/assets/esm-C3xKvqDD.js +1 -0
  100. package/dist/assets/{esm-CLJkOfFY.js → esm-Cux-VYce.js} +3 -3
  101. package/dist/assets/{esm-DGaTKkyR.js → esm-DJ8jlY1a.js} +1 -1
  102. package/dist/assets/{esm-3nn6MH-G.js → esm-Da0RpMu3.js} +1 -1
  103. package/dist/assets/{esm-BQEcYS0o.js → esm-DcR0zShd.js} +1 -1
  104. package/dist/assets/{esm-DlncMQsa.js → esm-JK6a4aDD.js} +2 -2
  105. package/dist/assets/{esm-JCg8cxIJ.js → esm-cimfQMLh.js} +2 -2
  106. package/dist/assets/{fish-oz9sHZvr.js → fish-DUP9UMmZ.js} +1 -1
  107. package/dist/assets/{flux-Zs-Uaa3k.js → flux-DxRo_526.js} +1 -1
  108. package/dist/assets/{grokvideo-CPgMTvnY.js → grokvideo-CMmd0Uv2.js} +1 -1
  109. package/dist/assets/{hailuo-qkxmisq7.js → hailuo-C7rguDxh.js} +1 -1
  110. package/dist/assets/{headshots-BA0YmWkY.js → headshots-CMXJNg-5.js} +1 -1
  111. package/dist/assets/{image-BN3fuibz.js → image-hwQx1MIx.js} +1 -1
  112. package/dist/assets/{index-BaYAcGHx.js → index-DgOby2pt.js} +17 -17
  113. package/dist/assets/{index.browser.esm-Cs2Z5w8H.js → index.browser.esm-CSQINHsi.js} +1 -1
  114. package/dist/assets/{index.es-9qWvdtLs.js → index.es-BArE1XDH.js} +1 -1
  115. package/dist/assets/{input-number-BIUOYTef.js → input-number-BI17gpx6.js} +1 -1
  116. package/dist/assets/{kling-RTe2jrmF.js → kling-DNegHpXr.js} +1 -1
  117. package/dist/assets/{luma-Cv6OVZbm.js → luma-YNDFEWIg.js} +1 -1
  118. package/dist/assets/{maestro-DUFxMmyn.js → maestro-BgCuno_z.js} +1 -1
  119. package/dist/assets/{midjourney-SvVa5b9z.js → midjourney-DNxsA_VV.js} +1 -1
  120. package/dist/assets/{nanobanana-XQg1pE6F.js → nanobanana-CxhMVcIU.js} +1 -1
  121. package/dist/assets/{openaiimage-CAzD2o7m.js → openaiimage-tqkCSHHy.js} +1 -1
  122. package/dist/assets/{pagination-dH80zIDF.js → pagination-Z5spKk07.js} +1 -1
  123. package/dist/assets/{pika-B5T8iNVs.js → pika-CJIbVDNp.js} +1 -1
  124. package/dist/assets/{pixverse-CjdrvYyf.js → pixverse-CekeI4ys.js} +1 -1
  125. package/dist/assets/{popover-Dda1Diji.js → popover-lZ7tpsD8.js} +1 -1
  126. package/dist/assets/{producer-BHfLjP7q.js → producer-otA-1uqt.js} +1 -1
  127. package/dist/assets/{qrart-DgN47Xod.js → qrart-DZkcJsyu.js} +1 -1
  128. package/dist/assets/{realtime-dJczIeUd.js → realtime-DWiJDXhP.js} +1 -1
  129. package/dist/assets/{row-DAmu_CiN.js → row-DEK5ROYt.js} +1 -1
  130. package/dist/assets/{seedance-CsLPdSAp.js → seedance-qO6LaZnb.js} +1 -1
  131. package/dist/assets/{seedream-C_TNWCZR.js → seedream-CrFUqdVM.js} +1 -1
  132. package/dist/assets/{select-CI2OAdP3.js → select-CM4rBBCt.js} +1 -1
  133. package/dist/assets/{serp-I-NRr9Qo.js → serp-CarMXhym.js} +1 -1
  134. package/dist/assets/{slider-Cv72EhVW.js → slider-Cr2d3MAt.js} +1 -1
  135. package/dist/assets/{solana-wallets-Bz1pZn6n.js → solana-wallets-DaRxwRzw.js} +2 -2
  136. package/dist/assets/{solana-wallets-vue-DX4auRAt.js → solana-wallets-vue-dby7N9wn.js} +1 -1
  137. package/dist/assets/{sora-q1VQrzGf.js → sora-DYmKJCTL.js} +1 -1
  138. package/dist/assets/{suno-Cm6zX1si.js → suno-CZU__kpN.js} +1 -1
  139. package/dist/assets/{switch-4xdytqD1.js → switch-lnPljFtG.js} +1 -1
  140. package/dist/assets/{tabs-Co6FYxr4.js → tabs-CIbn73tK.js} +1 -1
  141. package/dist/assets/{time-picker-D2a10YLf.js → time-picker-AYY3WiNd.js} +1 -1
  142. package/dist/assets/{upload-pFfxKsAn.js → upload-J3jts-0b.js} +1 -1
  143. package/dist/assets/{veo-DKQJQx11.js → veo-ZZXKT075.js} +1 -1
  144. package/dist/assets/{wan-1ccsAtEU.js → wan-BxwDEDeY.js} +1 -1
  145. package/dist/assets/{web-6FnYVNWp.js → web-6fP8XRG8.js} +1 -1
  146. package/dist/assets/{web-otw7vqQb.js → web-BLEQLECK.js} +1 -1
  147. package/dist/assets/{web-C6AO5Hg-.js → web-CODn91_a.js} +1 -1
  148. package/dist/assets/{web-B7hHp4iJ.js → web-DIgPdfJu.js} +1 -1
  149. package/dist/assets/{web-n4PnNRp-.js → web-vG7sBNUf.js} +1 -1
  150. package/dist/assets/{webextrator-CQ6rJrlh.js → webextrator-BNWJk41k.js} +1 -1
  151. package/dist/index.html +2 -2
  152. package/package.json +1 -1
  153. package/dist/assets/esm-Bv76L1ll.js +0 -1
@@ -1,4 +1,4 @@
1
- import{o as e,t}from"./rolldown-runtime--c01j_DQ.js";import{Ft as n}from"./index-BaYAcGHx.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{Ft as n}from"./index-DgOby2pt.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{Li as e}from"./constants-YyZAr4vB.js";import{Hn as t,Mn as n,Pr as r,Wn as i,jn as a,xr as o}from"./index-BaYAcGHx.js";var s={namespaced:!0,state:o,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,o())}},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:r}=await a.create({application_id:n?.id,host:window.location.origin});return console.debug(`created credential success`,r),e(`setCredential`,r),console.debug(`end createCredential`),r},setModel:async({commit:e},t)=>{e(`setModel`,t)},setModelGroup:async({commit:e},t)=>{e(`setModelGroup`,t)},getService:async({commit:t,state:i})=>{i.status.getService=r.Request;try{let{data:a}=await n.get(e);return i.status.getService=r.Success,t(`setService`,a),a}catch{i.status.getService=r.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:t,state:n,rootState:a})=>{if(console.debug(`start to get applications for chat`),!a?.token?.access)return n.status.getApplications=r.Success,t(`setApplications`,[]),t(`setApplication`,void 0),t(`setCredential`,void 0),[];n.status.getApplications=r.Request;try{let{data:a}=await i.getAll({user_id:`me`,service_id:e,affiliation:[`owner`,`granted`]});return console.debug(`get applications success for chat`,a),n.status.getApplications=r.Success,t(`setApplications`,a.items),console.debug(`set applications for chat`,a.items),a.items}catch(e){console.error(`get applications failed for chat`,e),n.status.getApplications=r.Error,t(`setApplications`,void 0),t(`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:n,rootState:i})=>{n.status.getConversations=r.Request;let a=n.credential?.token,o=n.modelGroup?.name;if(!a||!o)return n.status.getConversations=r.Error,e(`setConversations`,[]),[];try{let{data:s}=await t.getConversations({userId:i.user?.id,modelGroup:o},{token:a});return console.debug(`get conversations success`,s?.items?.length,`group=`,o),n.status.getConversations=r.Success,e(`setConversations`,s.items),s.items}catch{return n.status.getConversations=r.Error,e(`setConversations`,[]),[]}},getConversation:async({commit:e,state:n},r)=>{let i=n.credential?.token;if(!(!i||!r))try{let{data:a}=await t.getConversation(r,{token:i}),o=n.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{Li as e}from"./constants-CkWWBPId.js";import{Hn as t,Mn as n,Pr as r,Wn as i,jn as a,xr as o}from"./index-DgOby2pt.js";var s={namespaced:!0,state:o,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,o())}},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:r}=await a.create({application_id:n?.id,host:window.location.origin});return console.debug(`created credential success`,r),e(`setCredential`,r),console.debug(`end createCredential`),r},setModel:async({commit:e},t)=>{e(`setModel`,t)},setModelGroup:async({commit:e},t)=>{e(`setModelGroup`,t)},getService:async({commit:t,state:i})=>{i.status.getService=r.Request;try{let{data:a}=await n.get(e);return i.status.getService=r.Success,t(`setService`,a),a}catch{i.status.getService=r.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:t,state:n,rootState:a})=>{if(console.debug(`start to get applications for chat`),!a?.token?.access)return n.status.getApplications=r.Success,t(`setApplications`,[]),t(`setApplication`,void 0),t(`setCredential`,void 0),[];n.status.getApplications=r.Request;try{let{data:a}=await i.getAll({user_id:`me`,service_id:e,affiliation:[`owner`,`granted`]});return console.debug(`get applications success for chat`,a),n.status.getApplications=r.Success,t(`setApplications`,a.items),console.debug(`set applications for chat`,a.items),a.items}catch(e){console.error(`get applications failed for chat`,e),n.status.getApplications=r.Error,t(`setApplications`,void 0),t(`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:n,rootState:i})=>{n.status.getConversations=r.Request;let a=n.credential?.token,o=n.modelGroup?.name;if(!a||!o)return n.status.getConversations=r.Error,e(`setConversations`,[]),[];try{let{data:s}=await t.getConversations({userId:i.user?.id,modelGroup:o},{token:a});return console.debug(`get conversations success`,s?.items?.length,`group=`,o),n.status.getConversations=r.Success,e(`setConversations`,s.items),s.items}catch{return n.status.getConversations=r.Error,e(`setConversations`,[]),[]}},getConversation:async({commit:e,state:n},r)=>{let i=n.credential?.token;if(!(!i||!r))try{let{data:a}=await t.getConversation(r,{token:i}),o=n.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,2 +1,2 @@
1
- import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,Qi as p,R as m,S as h,T as g,V as _,_ as v,a as y,b,c as x,d as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-YyZAr4vB.js";import{l as I,o as L}from"./surface-D249_eDG.js";import{Pr as R,Xn as z,nn as B}from"./index-BaYAcGHx.js";import{a as se,i as V,n as H,o as U,r as W}from"./codingBridgeNotify-BDcV2PI5.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})},ce=class{ws;token;handlers;reconnectDelay=o;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=`${p}?token=${encodeURIComponent(this.token)}`,t;try{t=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectDelay=o,this.handlers.onOpen?.()},t.onmessage=e=>this.onMessage(e),t.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},t.onerror=()=>{t.close()}}onMessage(e){let n;try{n=JSON.parse(e.data)}catch{return}let r=n?.payload??{};switch(q(`recv`,n),n?.type){case t:this.handlers.onEvent?.(r,n?.from_node);break;case m:this.handlers.onNodesSnapshot?.(r.nodes??[]);break;case F:this.handlers.onNodeStatus?.(r.node_id,r.status);break;case w:this.handlers.onRelayError?.(r.code??`error`,r.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,_)}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(ee,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(E,{})}resume(e){this.sendEnvelope(ae,{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}}},J,Y=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,X=(e,t,n)=>({id:Y(),session_id:e,kind:t,ts:Date.now(),...n}),Z=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},le=e=>{let t=Z(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
1
+ import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,Qi as p,R as m,S as h,T as g,V as _,_ as v,a as y,b,c as x,d as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-CkWWBPId.js";import{l as I,o as L}from"./surface-D249_eDG.js";import{Pr as R,Xn as z,nn as B}from"./index-DgOby2pt.js";import{a as se,i as V,n as H,o as U,r as W}from"./codingBridgeNotify-KnF2ycpK.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})},ce=class{ws;token;handlers;reconnectDelay=o;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=`${p}?token=${encodeURIComponent(this.token)}`,t;try{t=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectDelay=o,this.handlers.onOpen?.()},t.onmessage=e=>this.onMessage(e),t.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},t.onerror=()=>{t.close()}}onMessage(e){let n;try{n=JSON.parse(e.data)}catch{return}let r=n?.payload??{};switch(q(`recv`,n),n?.type){case t:this.handlers.onEvent?.(r,n?.from_node);break;case m:this.handlers.onNodesSnapshot?.(r.nodes??[]);break;case F:this.handlers.onNodeStatus?.(r.node_id,r.status);break;case w:this.handlers.onRelayError?.(r.code??`error`,r.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,_)}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(ee,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(E,{})}resume(e){this.sendEnvelope(ae,{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}}},J,Y=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,X=(e,t,n)=>({id:Y(),session_id:e,kind:t,ts:Date.now(),...n}),Z=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},le=e=>{let t=Z(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
2
2
  `)},ue=(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)})},Q=(t,o,p,m,_)=>{let y=m?.event,x=m?.session_id,S=m?.trace_id,C=m?.seq;if(typeof C==`number`&&x){let e=p.lastSeq[x];if(e!==void 0&&C<=e)return;t(`setLastSeq`,{session_id:x,seq:C})}switch(x&&S&&t(`updateSession`,{session_id:x,trace_id:S}),y){case ne:t(`upsertSession`,{session_id:x,node_id:_,status:`running`,cwd:m.cwd,model:m.model,...m.effort===void 0?{}:{effort:m.effort},...m.permission_mode===void 0?{}:{permission_mode:m.permission_mode},trace_id:S});break;case r:{let e=m.sdk_session_id;x&&e&&e!==x&&t(`renameSession`,{from:x,to:e});break}case f:{let e=m.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`appendDelta`,{session_id:x,stream_id:e,text:m.text??``}):t(`appendEvent`,X(x,`text`,{text:m.text??``,stream_id:e,streaming:!0,trace_id:S}));break}case u:{let e=m.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`finalizeStream`,{session_id:x,stream_id:e,text:m.text}):t(`appendEvent`,X(x,`text`,{text:m.text,trace_id:S}));break}case a:t(`appendEvent`,X(x,`thinking`,{text:m.text,trace_id:S}));break;case c:t(`appendEvent`,X(x,`tool_use`,{tool:m.tool,tool_use_id:m.tool_use_id,input:m.input,trace_id:S}));break;case s:t(`appendEvent`,X(x,`tool_result`,{tool_use_id:m.tool_use_id,content:m.content,is_error:m.is_error,trace_id:S}));break;case h:t(`addPermission`,{request_id:m.request_id,session_id:x,node_id:_,tool:m.tool,input:m.input,title:m.title,display_name:m.display_name,description:m.description}),ue(o,{node_id:_,session_id:x,request_id:m.request_id,tool:m.display_name||m.title||m.tool});break;case N:for(let e of m.requests??[])t(`addPermission`,{request_id:e.request_id,session_id:e.session_id,node_id:_,tool:e.tool,input:e.input,title:e.title,display_name:e.display_name,description:e.description});break;case n:t(`removePermission`,m.request_id);break;case re:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`result`,{subtype:m.subtype,is_error:m.is_error,text:m.result,cost_usd:m.cost_usd,cut_uuid:m.cut_uuid,sdk_session_id:m.sdk_session_id,trace_id:S})),t(`updateSession`,{session_id:x,status:`idle`,cost_usd:m.cost_usd});break;case d:t(`appendEvent`,X(x,`notice`,{text:m.text,subtype:m.code,command:m.command,level:m.level}));break;case i:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`error`,{text:m.message,trace_id:S})),t(`updateSession`,{session_id:x,status:`error`}),t(`updateStatus`,{key:`getHistoryDetail`,value:R.Success});break;case g:t(`finalizeAllStreams`,{session_id:x}),t(`updateSession`,{session_id:x,status:`closed`});break;case e:t(`rewindToCut`,{session_id:x,cut_uuid:m.cut_uuid}),m.prompt&&t(`appendEvent`,X(x,`prompt`,{text:m.prompt,trace_id:S})),t(`updateSession`,{session_id:x,status:`running`});break;case l:o(`resyncSession`,x);break;case M:for(let e of m.sessions??[])t(`upsertSession`,{session_id:e.session_id,node_id:_,status:e.status??`running`,started:!0,cwd:e.cwd,model:e.model,...e.effort===void 0?{}:{effort:e.effort},...e.permission_mode===void 0?{}:{permission_mode:e.permission_mode}});break;case b:if(_){t(`setHistory`,{node_id:_,sessions:m.sessions??[]}),t(`updateStatus`,{key:`getHistory`,value:R.Success});let e=p.historyRef;e&&e.node_id===_&&!p.currentSessionId&&o(`reattachSession`,e)}break;case P:de(t,p,m,_),t(`updateStatus`,{key:`getHistoryDetail`,value:R.Success});break;case j:t(`setDirectory`,{path:m.path,parent:m.parent??null,sep:m.sep??`/`,entries:m.entries??[],truncated:m.truncated,error:m.error});break;case v:_&&t(`setCapabilities`,{node_id:_,capabilities:{providers:m.providers??[]}});break;default:break}},de=(e,t,n,r)=>{let i=n?.session_id,a=fe(n?.provider);if(!i||!r)return;let o=a===`claude`||a===`codex`||a===`copilot`,s=t.sessions[i],c=!!s&&(s.started===!0||s.status===`running`||s.status===`starting`),l=t.lastComposer?.[r]??{};e(`upsertSession`,{session_id:i,node_id:r,status:c?s.status:`idle`,cwd:n.cwd??s?.cwd??l.cwd,model:n.model??s?.model??l.model,effort:n.effort??s?.effort??l.effort,permission_mode:n.permission_mode??s?.permission_mode??l.permissionMode,provider:a,started:!!c,readonly:!o&&!c});let u=t.events[i]?.length??0,d=(n.events??[]).length,f=s?.status===`running`||s?.status===`starting`;c&&u>0&&(f||u>=d)||e(`setEvents`,{session_id:i,events:(n.events??[]).map((e,t)=>({id:Y(),session_id:i,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`,r),e(`setCurrentSession`,i),e(`setHistoryRef`,{node_id:r,provider:a,session_id:i})},fe=e=>e===`codex`||e===`copilot`?e:`claude`,$={namespaced:!0,state:z,mutations:{resetAll:e=>{Object.assign(e,z())},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})},renameSession:(e,t)=>{let{from:n,to:r}=t;if(n===r||!e.sessions[n])return;e.sessions[r]={...e.sessions[r],...e.sessions[n],session_id:r},delete e.sessions[n];let i=e.events[n];i&&(i.length||!e.events[r]?.length)&&(e.events[r]=i),delete e.events[n],delete e.lastSeq[n],e.lastSeq[r]=0;for(let t of e.permissions)t.session_id===n&&(t.session_id=r);e.currentSessionId===n&&(e.currentSessionId=r),e.historyRef?.session_id===n&&(e.historyRef={...e.historyRef,session_id:r})},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:R.Request});try{let{data:t}=await B.getNodes({token:n});return e(`setNodes`,t.nodes??[]),e(`updateStatus`,{key:`getNodes`,value:R.Success}),t.nodes??[]}catch(t){throw e(`updateStatus`,{key:`getNodes`,value:R.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:R.Request});try{let{data:n}=await B.claimPair(r.trim(),{token:i});return e(`updateStatus`,{key:`claimPair`,value:R.Success}),await t(`getNodes`),n.node_name}catch(t){throw e(`updateStatus`,{key:`claimPair`,value:R.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:R.Request});try{await B.deleteNode(i,{token:a}),e(`removeNodeData`,i),n.currentNodeId===i&&(e(`setCurrentNode`,void 0),e(`setCurrentSession`,void 0)),e(`updateStatus`,{key:`deleteNode`,value:R.Success}),await t(`getNodes`)}catch(t){throw e(`updateStatus`,{key:`deleteNode`,value:R.Error}),t}},connect:({commit:e,dispatch:t,state:n,rootState:r})=>{let i=r.token?.access;i&&(J?.isOpen||(J?.close(),e(`setConnection`,`connecting`),J=new ce(i,{onOpen:()=>{e(`setConnection`,`connected`);let r={...n.lastSeq};Object.keys(r).length&&J?.resume(r),n.currentNodeId&&(t(`getHistory`,n.currentNodeId),t(`getCapabilities`,n.currentNodeId),t(`requestSessions`,n.currentNodeId),t(`requestPendingPermissions`,n.currentNodeId))},onClose:()=>e(`setConnection`,`disconnected`),onEvent:(r,i)=>Q(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(`requestSessions`,r),t(`requestPendingPermissions`,r))},onRelayError:(e,t)=>console.warn(`[codingBridge] relay error`,e,t)}),J.connect()))},disconnect:({commit:e})=>{J?.close(),J=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(`requestSessions`,r),t(`requestPendingPermissions`,r)},requestSessions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:O})},requestPendingPermissions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:y})},enableNotifications:async({dispatch:e,rootState:t})=>{let n=t.token?.access;if(!n)return`unsupported`;if(I()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await B.savePushSubscription({kind:L()?`apns`:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await V();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await B.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await se(e.vapid_public_key);t&&await B.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(I()||!t)return;let n=await U();if(n)try{await B.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||!J||!i&&!a&&!o)return;let s=Y(),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,...n.cwd?{cwd:n.cwd}:{},...n.model===void 0?{}:{model:n.model},...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}})):(c=Y(),e(`upsertSession`,{session_id:c,node_id:r,status:`starting`,cwd:n.cwd,model:n.model,effort:n.effort,permission_mode:n.permissionMode,provider:t,trace_id:s}),e(`setCurrentSession`,c),e(`setHistoryRef`,{node_id:r,provider:t,session_id:c})),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,started:!0}),J.sendToNode(r,{action:C,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||`bypassPermissions`,provider:t,effort:n.effort||void 0,images:a,attachments:o,resume_session_id:l?.session_id||void 0})}else e(`updateSession`,{session_id:c,trace_id:s}),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,status:`running`,model:n.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),J.sendToNode(r,{action:S,session_id:c,trace_id:s,prompt:i,model:n.model??``,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode},images:a,attachments:o})},editPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=t.currentSessionId,a=n.prompt?.trim();if(!r||!i||!J||!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=Y();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,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),e(`appendEvent`,X(i,`prompt`,{text:a,images:u,attachments:d,trace_id:f})),J.sendToNode(r,{action:ie,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||!J||J.sendToNode(n,{action:A,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&&J&&J.sendToNode(i,{action:x,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&&(J?.sendToNode(r.node_id,{action:T,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&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:`allow`,answer:Z(n.output),answer_text:le(n.output)}),e(`removePermission`,n.request_id))},getHistory:({commit:e,state:t},n)=>{let r=n??t.currentNodeId;!r||!J||(e(`updateStatus`,{key:`getHistory`,value:R.Request}),J.sendToNode(r,{action:te,limit:200}))},getHistoryDetail:({commit:e},t)=>{!t?.node_id||!t?.session_id||!J||(e(`updateStatus`,{key:`getHistoryDetail`,value:R.Request}),J.sendToNode(t.node_id,{action:D,provider:t.provider,session_id:t.session_id}),setTimeout(()=>e(`updateStatus`,{key:`getHistoryDetail`,value:R.Success}),12e3))},reattachSession:({state:e,commit:t,dispatch:n},r)=>{!r?.node_id||!r?.session_id||(t(`setCurrentNode`,r.node_id),t(`setCurrentSession`,r.session_id),n(`getHistoryDetail`,r),n(`requestSessions`,r.node_id),n(`requestPendingPermissions`,r.node_id),J?.resume({[r.session_id]:e.lastSeq[r.session_id]??0}))},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||!J||(e(`setDirectoryLoading`,!0),J.sendToNode(r,{action:oe,path:n||void 0}))},clearDirectory:({commit:e})=>{e(`setDirectory`,void 0)},getCapabilities:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:k})}}};export{$ as codingBridge,$ as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-JCg8cxIJ.js","assets/index-BaYAcGHx.js","assets/rolldown-runtime--c01j_DQ.js","assets/preload-helper-zJ_50EbN.js","assets/constants-YyZAr4vB.js","assets/vendor-chart-BJCvKk8-.js","assets/vendor-axios-Ck2ffRoh.js","assets/button-BydTr5nV.js","assets/use-deprecated-B-NFNg3W.js","assets/install-CmiepWqE.js","assets/en-CpRrS3Ur.js","assets/runtime-B1Eal4u3.js","assets/vendor-vue-CCKiwo0U.js","assets/vendor-dayjs-C9ICuEWn.js","assets/use-dialog-CKZ3Kl7v.js","assets/teleport-CuPLY_-u.js","assets/aria-CQaCu-Fx.js","assets/aria-8oQuUBWy.js","assets/event-BGnHezxC.js","assets/scroll-CgpW_lTC.js","assets/vnode-BKrYEsqE.js","assets/use-aria-QsRrwtXj.js","assets/vendor-vue-router-WDnlh53U.js","assets/surface-D249_eDG.js","assets/surface-B5ZXUAsd.js","assets/index-CDAUz98X.css","assets/esm-Bv76L1ll.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-zJ_50EbN.js";import{l as t}from"./surface-D249_eDG.js";var n=`/sw.js`,r=()=>typeof window<`u`&&`Notification`in window,i=()=>typeof navigator<`u`&&`serviceWorker`in navigator,a=()=>i()&&`PushManager`in window,o=()=>r()?Notification.permission:`unsupported`,s=e=>{let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},c=async()=>{if(!i())return null;try{return await navigator.serviceWorker.getRegistration(n)??await navigator.serviceWorker.register(n)}catch(e){return console.warn(`[codingBridge] service worker registration failed`,e),null}},l=async()=>{if(!r())return`unsupported`;if(Notification.permission!==`default`)return Notification.permission;try{return await Notification.requestPermission()}catch{return`denied`}},u=(e,n)=>{if(!(typeof document<`u`&&document.visibilityState===`visible`)){if(t()){d(e);return}if(!(!r()||Notification.permission!==`granted`))try{let t=new Notification(e.title,{body:e.body,tag:e.data.request_id||`coding-bridge-permission`,data:e.data});t.onclick=()=>{try{window.focus()}catch{}n?.(e.data),t.close()}}catch(e){console.warn(`[codingBridge] failed to raise local notification`,e)}}},d=async t=>{try{let{LocalNotifications:n}=await e(async()=>{let{LocalNotifications:e}=await import(`./esm-JCg8cxIJ.js`);return{LocalNotifications:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]));if((await n.checkPermissions()).display!==`granted`&&(await n.requestPermissions()).display!==`granted`)return;await n.schedule({notifications:[{id:f(t.data.request_id||`permission`),title:t.title,body:t.body,extra:t.data}]})}catch(e){console.warn(`[codingBridge] native local notification failed`,e)}},f=e=>{let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)%2147483e3},p=async e=>{if(!a()||!e||await l()!==`granted`)return null;let t=await c();if(!t)return null;try{return(await t.pushManager.getSubscription()??await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:s(e)})).toJSON()}catch(e){return console.warn(`[codingBridge] web push subscribe failed`,e),null}},m=async()=>{if(!a())return null;let e=await(await c())?.pushManager.getSubscription();if(!e)return null;let t=e.endpoint;try{await e.unsubscribe()}catch{}return t},h=async n=>{if(!t())return null;try{let{PushNotifications:t}=await e(async()=>{let{PushNotifications:e}=await import(`./esm-Bv76L1ll.js`);return{PushNotifications:e}},__vite__mapDeps([26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])),r=await t.requestPermissions();if(r.receive!==`granted`)return console.warn(`[codingBridge] push permission not granted (receive=${r.receive})`),null;let i=await new Promise(e=>{let n=setTimeout(()=>{console.warn(`[codingBridge] push registration timed out — no device token`),e(null)},1e4);t.addListener(`registration`,t=>{clearTimeout(n),e(t.value)}),t.addListener(`registrationError`,t=>{clearTimeout(n),console.warn(`[codingBridge] push registrationError`,t),e(null)}),t.register()});return n&&t.addListener(`pushNotificationActionPerformed`,e=>{n(e.notification?.data??{})}),i}catch(e){return e?.code===`UNIMPLEMENTED`?console.warn(`[codingBridge] PushNotifications plugin not available in this build`,e):console.warn(`[codingBridge] native push registration failed`,e),null}};export{p as a,l as i,u as n,m as o,h as r,r as s,o as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-cimfQMLh.js","assets/index-DgOby2pt.js","assets/rolldown-runtime--c01j_DQ.js","assets/preload-helper-zJ_50EbN.js","assets/constants-CkWWBPId.js","assets/vendor-chart-BJCvKk8-.js","assets/vendor-axios-Ck2ffRoh.js","assets/button-BydTr5nV.js","assets/use-deprecated-B-NFNg3W.js","assets/install-CmiepWqE.js","assets/en-CpRrS3Ur.js","assets/runtime-B1Eal4u3.js","assets/vendor-vue-CCKiwo0U.js","assets/vendor-dayjs-C9ICuEWn.js","assets/use-dialog-CKZ3Kl7v.js","assets/teleport-CuPLY_-u.js","assets/aria-CQaCu-Fx.js","assets/aria-8oQuUBWy.js","assets/event-BGnHezxC.js","assets/scroll-CgpW_lTC.js","assets/vnode-BKrYEsqE.js","assets/use-aria-QsRrwtXj.js","assets/vendor-vue-router-WDnlh53U.js","assets/surface-D249_eDG.js","assets/surface-B5ZXUAsd.js","assets/index-CDAUz98X.css","assets/esm-C3xKvqDD.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{l as t}from"./surface-D249_eDG.js";var n=`/sw.js`,r=()=>typeof window<`u`&&`Notification`in window,i=()=>typeof navigator<`u`&&`serviceWorker`in navigator,a=()=>i()&&`PushManager`in window,o=()=>r()?Notification.permission:`unsupported`,s=e=>{let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},c=async()=>{if(!i())return null;try{return await navigator.serviceWorker.getRegistration(n)??await navigator.serviceWorker.register(n)}catch(e){return console.warn(`[codingBridge] service worker registration failed`,e),null}},l=async()=>{if(!r())return`unsupported`;if(Notification.permission!==`default`)return Notification.permission;try{return await Notification.requestPermission()}catch{return`denied`}},u=(e,n)=>{if(!(typeof document<`u`&&document.visibilityState===`visible`)){if(t()){d(e);return}if(!(!r()||Notification.permission!==`granted`))try{let t=new Notification(e.title,{body:e.body,tag:e.data.request_id||`coding-bridge-permission`,data:e.data});t.onclick=()=>{try{window.focus()}catch{}n?.(e.data),t.close()}}catch(e){console.warn(`[codingBridge] failed to raise local notification`,e)}}},d=async t=>{try{let{LocalNotifications:n}=await e(async()=>{let{LocalNotifications:e}=await import(`./esm-cimfQMLh.js`);return{LocalNotifications:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]));if((await n.checkPermissions()).display!==`granted`&&(await n.requestPermissions()).display!==`granted`)return;await n.schedule({notifications:[{id:f(t.data.request_id||`permission`),title:t.title,body:t.body,extra:t.data}]})}catch(e){console.warn(`[codingBridge] native local notification failed`,e)}},f=e=>{let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)%2147483e3},p=async e=>{if(!a()||!e||await l()!==`granted`)return null;let t=await c();if(!t)return null;try{return(await t.pushManager.getSubscription()??await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:s(e)})).toJSON()}catch(e){return console.warn(`[codingBridge] web push subscribe failed`,e),null}},m=async()=>{if(!a())return null;let e=await(await c())?.pushManager.getSubscription();if(!e)return null;let t=e.endpoint;try{await e.unsubscribe()}catch{}return t},h=async n=>{if(!t())return null;try{let{PushNotifications:t}=await e(async()=>{let{PushNotifications:e}=await import(`./esm-C3xKvqDD.js`);return{PushNotifications:e}},__vite__mapDeps([26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])),r=await t.requestPermissions();if(r.receive!==`granted`)return console.warn(`[codingBridge] push permission not granted (receive=${r.receive})`),null;let i=await new Promise(e=>{let n=setTimeout(()=>{console.warn(`[codingBridge] push registration timed out — no device token`),e(null)},1e4);t.addListener(`registration`,t=>{clearTimeout(n),e(t.value)}),t.addListener(`registrationError`,t=>{clearTimeout(n),console.warn(`[codingBridge] push registrationError`,t),e(null)}),t.register()});return n&&t.addListener(`pushNotificationActionPerformed`,e=>{n(e.notification?.data??{})}),i}catch(e){return e?.code===`UNIMPLEMENTED`?console.warn(`[codingBridge] PushNotifications plugin not available in this build`,e):console.warn(`[codingBridge] native push registration failed`,e),null}};export{p as a,l as i,u as n,m as o,h as r,r as s,o as t};
@@ -1 +1 @@
1
- import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{Zr as H}from"./index-BaYAcGHx.js";var U=e=>M(e)||t(e)||l(e),W=A({accordion:Boolean,modelValue:{type:j([Array,String,Number]),default:()=>H([])},expandIconPosition:{type:j([String]),default:`right`},beforeCollapse:{type:j(Function)}}),G={[z]:U,[B]:U},K=Symbol(`collapseContextKey`),q=`ElCollapse`,J=(e,t)=>{let n=h(R(e.modelValue)),r=r=>{n.value=r;let i=e.accordion?n.value[0]:n.value;t(z,i),t(B,i)},i=t=>{if(e.accordion)r([n.value[0]===t?``:t]);else{let e=[...n.value],i=e.indexOf(t);i>-1?e.splice(i,1):e.push(t),r(e)}};return g(()=>e.modelValue,()=>n.value=R(e.modelValue),{deep:!0}),u(K,{activeNames:n,handleItemClick:async t=>{let{beforeCollapse:n}=e;if(!n){i(t);return}let r=n(t);[w(r),k(r)].includes(!0)||L(q,"beforeCollapse must return type `Promise<boolean>` or `boolean`"),w(r)?r.then(e=>{e!==!1&&i(t)}).catch(e=>{N(q,`some error occurred: ${e}`)}):r&&i(t)}}),{activeNames:n,setActiveNames:r}},Y=e=>{let t=E(`collapse`);return{rootKls:r(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},X=T(i({...i({name:`ElCollapse`}),props:W,emits:G,setup(t,{expose:n,emit:r}){let i=t,{activeNames:a,setActiveNames:o}=J(i,r),{rootKls:c}=Y(i);return n({activeNames:a,setActiveNames:o}),(t,n)=>(p(),e(`div`,{class:d(s(c))},[v(t.$slots,`default`)],2))}}),[[`__file`,`collapse.vue`]]),Z=A({title:{type:String,default:``},name:{type:j([String,Number]),default:void 0},icon:{type:F,default:P},disabled:Boolean}),Q=e=>{let t=C(K),{namespace:n}=E(`collapse`),i=h(!1),a=h(!1),o=ee(),c=r(()=>o.current++),l=r(()=>e.name??`${n.value}-id-${o.prefix}-${s(c)}`);return{focusing:i,id:c,isActive:r(()=>t?.activeNames.value.includes(s(l))),handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:i.value=!0},50)},handleHeaderClick:n=>{e.disabled||n.target?.closest(`input, textarea, select`)||(t?.handleItemClick(s(l)),i.value=!1,a.value=!0)},handleEnterClick:e=>{e.target?.closest(`input, textarea, select`)||(e.preventDefault(),t?.handleItemClick(s(l)))}}},te=(e,{focusing:t,isActive:n,id:i})=>{let a=E(`collapse`),o=r(()=>[a.b(`item`),a.is(`active`,s(n)),a.is(`disabled`,e.disabled)]),c=r(()=>[a.be(`item`,`header`),a.is(`active`,s(n)),{focusing:s(t)&&!e.disabled}]),l=r(()=>[a.be(`item`,`arrow`),a.is(`active`,s(n))]);return{itemTitleKls:r(()=>[a.be(`item`,`title`)]),arrowKls:l,headKls:c,rootKls:o,itemWrapperKls:r(()=>a.be(`item`,`wrap`)),itemContentKls:r(()=>a.be(`item`,`content`)),scopedContentId:r(()=>a.b(`content-${s(i)}`)),scopedHeadId:r(()=>a.b(`head-${s(i)}`))}},$=T(i({...i({name:`ElCollapseItem`}),props:Z,setup(t,{expose:r}){let i=t,{focusing:l,id:u,isActive:h,handleFocus:g,handleHeaderClick:C,handleEnterClick:w}=Q(i),{arrowKls:T,headKls:E,rootKls:D,itemTitleKls:O,itemWrapperKls:k,itemContentKls:A,scopedContentId:j,scopedHeadId:M}=te(i,{focusing:l,isActive:h,id:u});return r({isActive:h}),(t,r)=>(p(),e(`div`,{class:d(s(D))},[n(`div`,{id:s(M),class:d(s(E)),"aria-expanded":s(h),"aria-controls":s(j),"aria-describedby":s(j),tabindex:t.disabled?-1:0,role:`button`,onClick:s(C),onKeydown:S(m(s(w),[`stop`]),[`space`,`enter`]),onFocus:s(g),onBlur:e=>l.value=!1},[n(`span`,{class:d(s(O))},[v(t.$slots,`title`,{isActive:s(h)},()=>[a(f(t.title),1)])],2),v(t.$slots,`icon`,{isActive:s(h)},()=>[c(s(I),{class:d(s(T))},{default:b(()=>[(p(),o(y(t.icon)))]),_:1},8,[`class`])])],42,[`id`,`aria-expanded`,`aria-controls`,`aria-describedby`,`tabindex`,`onClick`,`onKeydown`,`onFocus`,`onBlur`]),c(s(V),null,{default:b(()=>[_(n(`div`,{id:s(j),role:`region`,class:d(s(k)),"aria-hidden":!s(h),"aria-labelledby":s(M)},[n(`div`,{class:d(s(A))},[v(t.$slots,`default`)],2)],10,[`id`,`aria-hidden`,`aria-labelledby`]),[[x,s(h)]])]),_:3})],2))}}),[[`__file`,`collapse-item.vue`]]),ne=O(X,{CollapseItem:$}),re=D($);export{re as n,ne as t};
1
+ import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{Zr as H}from"./index-DgOby2pt.js";var U=e=>M(e)||t(e)||l(e),W=A({accordion:Boolean,modelValue:{type:j([Array,String,Number]),default:()=>H([])},expandIconPosition:{type:j([String]),default:`right`},beforeCollapse:{type:j(Function)}}),G={[z]:U,[B]:U},K=Symbol(`collapseContextKey`),q=`ElCollapse`,J=(e,t)=>{let n=h(R(e.modelValue)),r=r=>{n.value=r;let i=e.accordion?n.value[0]:n.value;t(z,i),t(B,i)},i=t=>{if(e.accordion)r([n.value[0]===t?``:t]);else{let e=[...n.value],i=e.indexOf(t);i>-1?e.splice(i,1):e.push(t),r(e)}};return g(()=>e.modelValue,()=>n.value=R(e.modelValue),{deep:!0}),u(K,{activeNames:n,handleItemClick:async t=>{let{beforeCollapse:n}=e;if(!n){i(t);return}let r=n(t);[w(r),k(r)].includes(!0)||L(q,"beforeCollapse must return type `Promise<boolean>` or `boolean`"),w(r)?r.then(e=>{e!==!1&&i(t)}).catch(e=>{N(q,`some error occurred: ${e}`)}):r&&i(t)}}),{activeNames:n,setActiveNames:r}},Y=e=>{let t=E(`collapse`);return{rootKls:r(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},X=T(i({...i({name:`ElCollapse`}),props:W,emits:G,setup(t,{expose:n,emit:r}){let i=t,{activeNames:a,setActiveNames:o}=J(i,r),{rootKls:c}=Y(i);return n({activeNames:a,setActiveNames:o}),(t,n)=>(p(),e(`div`,{class:d(s(c))},[v(t.$slots,`default`)],2))}}),[[`__file`,`collapse.vue`]]),Z=A({title:{type:String,default:``},name:{type:j([String,Number]),default:void 0},icon:{type:F,default:P},disabled:Boolean}),Q=e=>{let t=C(K),{namespace:n}=E(`collapse`),i=h(!1),a=h(!1),o=ee(),c=r(()=>o.current++),l=r(()=>e.name??`${n.value}-id-${o.prefix}-${s(c)}`);return{focusing:i,id:c,isActive:r(()=>t?.activeNames.value.includes(s(l))),handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:i.value=!0},50)},handleHeaderClick:n=>{e.disabled||n.target?.closest(`input, textarea, select`)||(t?.handleItemClick(s(l)),i.value=!1,a.value=!0)},handleEnterClick:e=>{e.target?.closest(`input, textarea, select`)||(e.preventDefault(),t?.handleItemClick(s(l)))}}},te=(e,{focusing:t,isActive:n,id:i})=>{let a=E(`collapse`),o=r(()=>[a.b(`item`),a.is(`active`,s(n)),a.is(`disabled`,e.disabled)]),c=r(()=>[a.be(`item`,`header`),a.is(`active`,s(n)),{focusing:s(t)&&!e.disabled}]),l=r(()=>[a.be(`item`,`arrow`),a.is(`active`,s(n))]);return{itemTitleKls:r(()=>[a.be(`item`,`title`)]),arrowKls:l,headKls:c,rootKls:o,itemWrapperKls:r(()=>a.be(`item`,`wrap`)),itemContentKls:r(()=>a.be(`item`,`content`)),scopedContentId:r(()=>a.b(`content-${s(i)}`)),scopedHeadId:r(()=>a.b(`head-${s(i)}`))}},$=T(i({...i({name:`ElCollapseItem`}),props:Z,setup(t,{expose:r}){let i=t,{focusing:l,id:u,isActive:h,handleFocus:g,handleHeaderClick:C,handleEnterClick:w}=Q(i),{arrowKls:T,headKls:E,rootKls:D,itemTitleKls:O,itemWrapperKls:k,itemContentKls:A,scopedContentId:j,scopedHeadId:M}=te(i,{focusing:l,isActive:h,id:u});return r({isActive:h}),(t,r)=>(p(),e(`div`,{class:d(s(D))},[n(`div`,{id:s(M),class:d(s(E)),"aria-expanded":s(h),"aria-controls":s(j),"aria-describedby":s(j),tabindex:t.disabled?-1:0,role:`button`,onClick:s(C),onKeydown:S(m(s(w),[`stop`]),[`space`,`enter`]),onFocus:s(g),onBlur:e=>l.value=!1},[n(`span`,{class:d(s(O))},[v(t.$slots,`title`,{isActive:s(h)},()=>[a(f(t.title),1)])],2),v(t.$slots,`icon`,{isActive:s(h)},()=>[c(s(I),{class:d(s(T))},{default:b(()=>[(p(),o(y(t.icon)))]),_:1},8,[`class`])])],42,[`id`,`aria-expanded`,`aria-controls`,`aria-describedby`,`tabindex`,`onClick`,`onKeydown`,`onFocus`,`onBlur`]),c(s(V),null,{default:b(()=>[_(n(`div`,{id:s(j),role:`region`,class:d(s(k)),"aria-hidden":!s(h),"aria-labelledby":s(M)},[n(`div`,{class:d(s(A))},[v(t.$slots,`default`)],2)],10,[`id`,`aria-hidden`,`aria-labelledby`]),[[x,s(h)]])]),_:3})],2))}}),[[`__file`,`collapse-item.vue`]]),ne=O(X,{CollapseItem:$}),re=D($);export{re as n,ne as t};
@@ -1 +1 @@
1
- var e={"button.setup":{message:`设置`,description:`按钮中的文本,用于进行设置`},"button.start":{message:`开始`,description:`按钮文本,用于开始某些操作`},"button.copy":{message:`复制`,description:`按钮中的文本,用于复制某项内容`},"button.copied":{message:`已复制`,description:`按钮文本,用于表示内容已复制`},"button.restart":{message:`重新生成`,description:`按钮文本,用于设置某些内容`},"button.preview":{message:`预览`,description:`按钮文本,用于通过URL打开预览某个文件`},"button.seeRawImage":{message:`查看原图`,description:`按钮文本,用于查看原始图片`},"button.seeRawVideo":{message:`查看视频`,description:`按钮文本,用于查看原始图片`},"button.edit":{message:`编辑`,description:`按钮中的文本,用于编辑内容`},"button.login":{message:`登录`,description:`按钮中的文本,用于登录`},"button.logout":{message:`注销`,description:`按钮中的文本,用于注销`},"button.new":{message:`新建`,description:`按钮中的文本,用于创建新项`},"button.delete":{message:`删除`,description:`按钮中的文本,用于删除内容`},"button.deletePermanently":{message:`永久删除账号`,description:`删除账号确认对话框底部的红色最终删除按钮文本,translate to 'Permanently delete account'`},"button.confirm":{message:`确认`,description:`按钮中的文本,用于确认某项操作`},"button.cancel":{message:`取消`,description:`按钮中的文本,用于取消某项操作`},"button.close":{message:`关闭`,description:`按钮中的文本,用于关闭对话框或面板`},"button.expand":{message:`展开`,description:`按钮提示文本,用于打开提示词输入框的全屏编辑器`},"button.alert":{message:`警告`,description:`按钮中的文本,用于发出警报`},"button.info":{message:`信息`,description:`按钮中的文本,用于显示信息`},"button.publish":{message:`发布`,description:`按钮中的文本,用于发布内容`},"button.watch":{message:`查看`,description:`按钮中的文本,用于观看某项内容`},"button.verify":{message:`实名认证`,description:`按钮中的文本,让用户进行实名认证`},"button.profile":{message:`个人资料`,description:`按钮中的文本,用于显示个人资料`},"button.console":{message:`控制台`,description:`按钮中的文本,用于显示控制台页面,以控制网页中某项内容`},"button.learn":{message:`学习`,description:`按钮中的文本,用于让用户学习某项内容`},"button.buy":{message:`购买`,description:`按钮中的文本,用于让用户购买某项内容`},"button.try":{message:`测试`,description:`按钮中的文本,用于让用户尝试某项内容`},"button.startForFree":{message:`免费开始`,description:`按钮中的文本,用于让用户免费开始`},"button.download":{message:`下载`,description:`按钮中的文本,用于下载文件(如音频、视频、图片)`},"button.downloadAndroid":{message:`下载 Android`,description:`按钮中的文本,用于下载 Android 安装包`},"button.downloadIos":{message:`下载 iOS 安装包`,description:`按钮中的文本,用于下载 iOS 安装包文件`},"button.downloadWindows":{message:`下载 Windows 版`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`下载 macOS 版`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`安装 iOS`,description:`按钮中的文本,用于安装 iOS 应用`},"button.apply":{message:`申请`,description:`按钮中的文本,用于让用户申请API服务`},"button.refresh":{message:`刷新`,description:`按钮中的文本,用于刷新页面`},"button.pay":{message:`支付`,description:`按钮中的文本,用于让用户支付服务费用`},"button.repay":{message:`继续支付`,description:`按钮中的文本,用于让用户继续支付服务费用`},"button.applied":{message:`已申请`,description:`按钮中的文本,用于显示用户已申请该服务`},"button.acquire":{message:`获取`,description:`按钮中的文本,用于让用户获取API服务的令牌或密钥`},"button.fillExample":{message:`填写示例`,description:`按钮中的文本,用于让用户填写示例数据`},"button.buyMore":{message:`充值`,description:`按钮中的文本,用于让用户充值。英文必须翻译为“Top Up”,中文为“充值”。`},"button.update":{message:`更新`,description:`按钮中的文本,用于更新内容`},"button.view":{message:`查看`,description:`按钮中的文本,用于查看某项内容`},"button.create":{message:`创建`,description:`按钮中的文本,用于创建某项内容`},"button.referralEarnings":{message:`推荐收入`,description:`按钮中的文本,用于显示推荐收入,意味着用户可以通过邀请他人使用该服务来赚钱`},"button.finish":{message:`完成`,description:`按钮中的文本,用于完成某项操作`},"entity.id":{message:`ID`,description:`用于显示实体的唯一标识符`},"entity.type":{message:`类型`,description:`用于显示实体的类型`},"entity.website":{message:`Ace Data Cloud`,description:`网站名称,无需翻译,保持为'Ace Data Cloud'`},"entity.copyright":{message:`版权`,description:`显示版权的文本`},"entity.platform":{message:`平台`,description:`指示这是API服务平台的文本`},"entity.title":{message:`标题`,description:`实体的标题`},"entity.icon":{message:`图标`,description:`实体的图标`},"entity.status":{message:`状态`,description:`实体的状态`},"status.loading":{message:`加载中...`,description:`内容加载时显示的状态文案`},"error.appleSignInFailed":{message:`通过 Apple 登录失败,请重试或使用其他登录方式。`,description:`当原生“通过 Apple 登录”因用户取消以外的原因失败时显示的错误提示。`},"error.loginLinkExpired":{message:`登录链接已失效,请重新登录。`,description:`桌面客户端 OAuth 回调因 state 校验失败/过期被丢弃时显示的错误提示。`},"entity.operation":{message:`操作`,description:`实体的操作`},"entity.description":{message:`描述`,description:`实体的描述`},"entity.createdAt":{message:`创建于`,description:`实体创建的时间`},"entity.updatedAt":{message:`更新于`,description:`实体更新的时间`},"entity.order":{message:`订单`,description:`实体的订单,订单包含金钱、服务信息,用户需要为其支付`},"message.noTasks":{message:`没有历史任务,请开始新的任务吧~`,description:`没有任务时的消息`},"message.guestTasks":{message:`登录后即可发起任务,并在这里查看你的作品。`,description:`未登录访客在任务列表区域看到的提示`},"message.usedAmount":{message:`已使用金额`,description:`用于显示服务已使用的金额`},"message.mobileAppDescription":{message:`随时随地使用完整的 AceData 创作工具 —— 支持 Android、iPhone、iPad、Windows 与 macOS。一键安装,或扫码前往。`,description:`应用下载页的说明文案`},"message.mobileAndroidHint":{message:`适用于 Android 手机和平板。可从 Google Play 安装以获得自动更新,也可直接下载 APK。`,description:`Android 下载卡片说明`},"message.mobileAndroidPending":{message:`Android 安装包暂未就绪,请稍后再试。`,description:`Android 安装包暂未可用时的提示`},"message.mobileAvailableNow":{message:`已上架 Google Play`,description:`用于显示 Android 已可下载的状态`},"message.mobileSecureDelivery":{message:`安全 CDN 分发`,description:`用于强调下载链接通过 CDN 交付`},"message.mobileDirectInstall":{message:`直接 APK 安装`,description:`用于描述 Android 端为直接 APK 安装方式`},"message.mobileLatestRelease":{message:`当前公开版本`,description:`用于说明当前展示的是最新公开版本`},"message.mobileSharedAccount":{message:`与网页端共用账号和额度`,description:`用于说明移动端与网页端共用账号`},"message.mobileIosHint":{message:`适用于 iPhone 和 iPad,可直接从 App Store 安装,与网页端共用账号和额度。`,description:`iOS 下载卡片说明`},"message.mobileIosPending":{message:`iOS 版正在完成 Apple 证书与描述文件签名,稍后将在此开放下载。`,description:`iOS 安装包暂未可用时的提示`},"message.mobileComingSoon":{message:`即将推出`,description:`用于标记某个平台(如 iOS)即将开放下载的短状态标签`},"message.mobileNowOnAppStore":{message:`已上架 App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`适用于 Windows 10 及以上版本(64 位)。下载安装程序后双击即可安装。`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`适用于 macOS 11 及以上版本。请按你的机型选择 —— Apple 芯片(M 系列)或 Intel。`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`桌面版目前为未签名的 Beta 版本。Windows 在 SmartScreen 提示中选择“更多信息 → 仍要运行”;macOS 请右键点按应用并选择“打开”以绕过 Gatekeeper。`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`在 Google Play 上获取`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`在 App Store 下载`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`无法访问 Google Play?可直接下载 APK 安装包。`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`扫码前往 Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`扫码前往 App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`iOS 首次安装企业或 Ad Hoc 包时,系统可能要求先在“设置 > 通用 > VPN 与设备管理”中信任证书。`,description:`移动应用安装提示`},"title.mobileApp":{message:`获取 AceData 客户端`,description:`应用下载页标题`},"title.mobileFastAccess":{message:`更快触达,不绕应用商店`,description:`下载页优势卡片标题,强调快速安装`},"title.mobileTrustedRelease":{message:`版本集中管理,分发更稳`,description:`下载页优势卡片标题,强调版本和分发稳定性`},"title.mobileUnifiedExperience":{message:`移动端与网页端体验保持一致`,description:`下载页优势卡片标题,强调统一体验`},"nav.mobileApp":{message:`客户端`,description:`导航中的应用下载入口(移动端 + 桌面端)`},"message.mobileFastAccess":{message:`用户可以在手机扫码直接安装,也可以在桌面端先下载 APK 再分发给团队成员,适合需要快速试用和内测的场景。`,description:`下载页优势说明,强调快速接入`},"message.mobileTrustedRelease":{message:`下载入口集中在同一页面,版本号、平台状态和安装方式一眼可见,减少因为链路分散造成的沟通成本。`,description:`下载页优势说明,强调统一分发`},"message.mobileUnifiedExperience":{message:`登录后的账号体系、额度和服务入口与 Web 保持一致,方便用户在桌面端和移动端之间无缝切换。`,description:`下载页优势说明,强调统一账号体验`},"message.remainingAmount":{message:`剩余金额`,description:`用于显示服务剩余的金额`},"message.copied":{message:`复制成功`,description:`显示内容已成功复制的消息`},"message.restart":{message:`重新生成`,description:`用于显示内容已成功复制的消息`},"message.confirmDelete":{message:`您确定要删除吗?`,description:`确认用户要删除某项内容的消息`},"message.expiredAt":{message:`过期时间`,description:`用于显示服务的过期时间`},"message.alert":{message:`警告`,description:`警告用户的消息`},"message.deleteAccountConfirm":{message:`此操作将永久删除您的账号及所有相关数据,且无法恢复。确定要继续吗?`,description:`永久删除用户账号前显示的确认消息`},"message.deleteAccountSuccess":{message:`您的账号已删除。`,description:`成功删除用户账号后显示的消息`},"message.deleteAccountFailed":{message:`删除账号失败,请稍后重试。`,description:`删除账号失败时显示的消息`},"message.deleteAccountWarning":{message:`此操作不可逆!您的账号及其所有数据将被永久删除,无法找回。`,description:`删除账号确认对话框顶部的红色警示横幅文本,必须强烈警告操作不可撤销`},"message.deleteAccountConsequences":{message:`将永久删除:个人资料、余额与积分、应用与订阅、API 密钥及第三方登录绑定。`,description:`删除账号确认对话框中列出将被删除内容的说明文本`},"message.deleteAccountTypePrompt":{message:`请输入您的用户名以确认删除:`,description:`提示用户必须逐字输入自己的用户名才能确认删除;紧随其后会单独显示该用户名`},"message.deleteAccountPlaceholder":{message:`在此输入您的用户名`,description:`用户名确认输入框的占位符`},"message.info":{message:`提示`,description:`显示信息的消息`},"message.free":{message:`免费`,description:`显示该服务是免费的消息,意味着用户无需支付`},"message.startPrice":{message:`起始`,description:`显示服务的最低价格的消息`},"message.joinDiscord":{message:`加入Discord`,description:`让用户加入Discord频道的消息`},"message.addWeChat":{message:`微信服务`,description:`让用户添加微信账户的消息`},"message.serviceTech":{message:`技术支持`,description:`显示技术支持的消息`},"message.businessCooperation":{message:`数据 & 商业合作`,description:`显示商业合作的消息`},"message.noData":{message:`没有数据`,description:`显示表或列表中没有数据的消息`},"nav.home":{message:`首页`,description:`网站导航栏中的文本,用于显示首页`},"nav.content":{message:`内容`,description:`网站导航栏中的文本,用于显示内容页面`},"nav.category":{message:`类别`,description:`网站导航栏中的文本,用于显示类别页面`},"nav.service":{message:`所有服务`,description:`网站导航栏中的文本,用于显示服务页面`},"nav.profile":{message:`我`,description:`网站导航栏中的文本,用于显示个人资料页面`},"nav.products":{message:`产品`,description:`网站导航栏中的文本,用于显示产品页面`},"nav.referral":{message:`创收联盟`,description:`网站导航栏中的文本,用于显示推荐页面`},"nav.apiPlatform":{message:`API 平台`,description:`网站导航栏中的文本,用于显示API平台页面`},"nav.document":{message:`开发文档`,description:`网站导航栏中的文本,用于显示文档页面`},"nav.console":{message:`控制台`,description:`网站导航栏中的文本,用于显示控制台页面`},"nav.chatgpt":{message:`ChatGPT`,description:`网站导航栏中的文本,用于显示ChatGPT页面,请不要翻译此字段,必须保持为'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`网站导航栏中的文本,用于显示DeepSeek页面,请不要翻译此字段,必须保持为'DeepSeek'`},"nav.grok":{message:`Grok`,description:`网站导航栏中的文本,用于显示Grok页面,请不要翻译此字段,必须保持为'Grok'`},"nav.chat":{message:`Chat`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Chat'`},"nav.veo":{message:`Veo`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Veo'`},"nav.sora":{message:`Sora`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`网站导航栏中的文本,用于显示中途之旅页面,请不要翻译此字段,必须保持为'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`网站导航栏中的文本,用于显示二维艺术页面,请不要翻译此字段,必须保持为'QRArt'`},"nav.suno":{message:`Suno`,description:`网站导航栏中的文本,用于显示Suno页面,请不要翻译此字段,必须保持为'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`网站导航栏中的文本,用于显示Pixverse页面,请不要翻译此字段,必须保持为'Pixverse'`},"nav.flux":{message:`Flux`,description:`网站导航栏中的文本,用于显示Flux页面,请不要翻译此字段,必须保持为'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`网站导航栏中的文本,用于显示Nano Banana页面,请不要翻译此字段,必须保持为'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`网站导航栏中的文本,用于显示OpenAI Image页面,请不要翻译此字段,必须保持为'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`网站导航栏中的文本,用于显示SeeDream页面,请不要翻译此字段,必须保持为'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok 视频`,description:`网站导航栏中的文本,用于显示 Grok Imagine 视频页面`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`网站导航栏中的文本,用于显示Fish Audio页面,请不要翻译此字段,必须保持为'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`网站导航栏中的文本,用于显示 Coding Bridge 页面,请不要翻译此字段,必须保持为'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`网站导航栏中的文本,用于显示WebExtrator页面,请不要翻译此字段,必须保持为'WebExtrator'`},"nav.image":{message:`图片`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`音乐`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`视频`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`推荐收益`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`连接`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`退出登录`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`删除账号`,description:`用于永久删除当前用户账号的菜单项`},"nav.site":{message:`站点配置`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`我的分站`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`设置`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`AI证件照`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`更多`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`语言设置`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`客服支持`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`深色模式`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`警告`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`请选择`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`请填写`,description:`输入的占位符`},"title.allApplications":{message:`所有申请`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`所有订单`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`订单信息`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`充值`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`推荐收益`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`站点配置`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`推荐历史`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`邀请人`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`使用历史`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`密钥`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`联系我们`,description:`显示联系信息的部分标题`},"about.title2":{message:`资源`,description:`显示链接的部分标题`},"about.title3":{message:`链接`,description:`显示支持信息的部分标题`},"about.address":{message:`美国特拉华州纽瓦克大陆路131号305室,邮编19713`,description:`公司的地址`},"about.email":{message:`office@acedata.cloud`,description:`公司的电子邮件`},"about.link1":{message:`服务`,description:`指向文档页面的链接`},"about.link2":{message:`开发文档`,description:`指向服务页面的链接`},"about.link3":{message:`控制台`,description:`指向控制台页面的链接`},"about.link4":{message:`个人资料`,description:`指向个人资料页面的链接`},"about.link5":{message:`UI平台`,description:`指向中心页面的链接`},"about.link6":{message:`推荐收益`,description:`指向推荐收入页面的链接`},"about.link7":{message:`支持`,description:`指向支持页面的链接`},"about.link8":{message:`服务条款`,description:`指向服务条款页面的链接`},"about.link9":{message:`隐私政策`,description:`指向隐私政策页面的链接`},"theme.light":{message:`浅色`,description:`浅色主题的名称`},"theme.dark":{message:`深色`,description:`深色主题的名称`},"theme.system":{message:`系统`,description:`系统主题的名称,表示根据系统设置自动切换主题`},"settings.general":{message:`通用设置`,description:`设置页面中的通用设置部分的标题`},"settings.language":{message:`语言`,description:`设置页面中的语言设置部分的标题`},"settings.theme":{message:`主题`,description:`设置页面中的主题设置部分的标题`},"settings.seo":{message:`SEO设置`,description:`设置页面中的SEO设置部分的标题`},"settings.site":{message:`站点设置`,description:`设置页面中的站点设置部分的标题`},"settings.distribution":{message:`分发设置`,description:`设置页面中的分发设置部分的标题`},"settings.function":{message:`功能设置`,description:`设置页面中的功能设置部分的标题`},"settings.auth":{message:`登录方式`,description:`设置页面侧边栏的『登录方式』tab 标题——配置本站允许使用的登录方式及默认登录方式,仅站点管理员可见`},"settings.apiKey":{message:`API Key`,description:`设置页面侧边栏的 API Key 标签——用户自带(BYOK)的上游服务商 API Key 管理`},"field.operations":{message:`操作`,description:`通用列标题:表格行的操作按钮列(编辑、删除等)`},"nav.gemini":{message:`Gemini`,description:`Text in the website navigation bar to display the Gemini page, must remain as 'Gemini'`},"nav.claude":{message:`Claude`,description:`Text in the website navigation bar to display the Claude page, must remain as 'Claude'`},"button.detail":{message:`查看详情`,description:``},"button.testEnv":{message:`测试环境`,description:`按钮中的文本,用于切换到测试环境`},"button.upload":{message:`上传`,description:`按钮中的文本,用于上传文件或内容`},"message.cnbeian":{message:`中国区备案`,description:`中国区备案的说明信息`},"message.copyFailed":{message:`复制失败`,description:`显示内容复制失败的消息`},"nav.tryNow":{message:`快速体验`,description:`网站导航栏中的文本,用于让用户尝试服务`},"title.coin":{message:`加密货币`,description:`显示加密货币的页面标题`},"title.distributionRank":{message:`推荐排行`,description:`显示推荐排行的页面标题`},"title.distributionPlatformRank":{message:`平台排行`,description:`显示平台排行的页面标题`},"customers.name1":{message:`马克·杜`,description:`客户的姓名`},"customers.job1":{message:`软件工程师`,description:`客户的职业`},"customers.comment1":{message:`Ace Data Cloud 为我们的团队提供了很好的服务,帮助我们提高了生产力。非常喜欢!`,description:`客户的评价`},"customers.name2":{message:`雅各布·威廉姆斯`,description:`客户的姓名`},"customers.job2":{message:`产品经理`,description:`客户的职业`},"customers.comment2":{message:`Ace Data Cloud 是一个很好的集成平台,服务质量优秀。`,description:`客户的评价`},"customers.name3":{message:`拉里·亨利`,description:`客户的姓名`},"customers.job3":{message:`设计师`,description:`客户的职业`},"customers.comment3":{message:`我喜欢 Ace Data Cloud 的服务,使用方便,价格合理,希望能越来越好!`,description:`客户的评价`},"nav.github":{message:`GitHub`,description:`GitHub仓库链接`},"settings.github":{message:`源代码`,description:`在GitHub上查看源代码的链接`},"settings.about":{message:`关于`,description:`设置页面中的关于部分的标题`},"settings.localTools":{message:`本地工具`,description:`桌面专属设置 tab:管理本地工具的授权文件夹、系统权限与永久授权。`},"settings.localToolsDesktopOnly":{message:`仅在桌面应用中可用。`,description:`在 web/移动端打开本地工具 tab 时的提示。`},"settings.localToolsFoldersTitle":{message:`已授权文件夹`,description:`AI 可在本地读写的文件夹列表标题。`},"settings.localToolsFoldersHint":{message:`AI 可在本机读写的文件夹。工具在本地执行;未经你同意,任何内容都不会离开你的设备。`,description:`已授权文件夹标题下的说明。`},"settings.localToolsComputerUseTitle":{message:`电脑操作(实验性)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`让 AI 看到你的屏幕并控制本机的鼠标和键盘。默认关闭,按需开启。macOS 上需在下方授予「屏幕录制」和「辅助功能」权限。每个操作仍会请求你的确认。`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`预先允许所有电脑操作`,"settings.localToolsPreauthorizeHint":`一次性允许截图、点击、输入、按键等所有电脑操作,并触发所需的系统权限。`,"settings.localToolsCuActionsTitle":`逐项允许操作`,"settings.localToolsCuActionsHint":`只打开你愿意让 AI 免确认执行的操作,其余仍会逐次询问。每一项都可在此撤销。`,"settings.localToolsCuScreenshot":`截图`,"settings.localToolsCuClick":`点击`,"settings.localToolsCuMove":`移动指针`,"settings.localToolsCuType":`输入文字`,"settings.localToolsCuKey":`按键`,"settings.localToolsCuScroll":`滚动`,"settings.localToolsBuiltinTitle":`内置工具`,"settings.localToolsBuiltinHint":`打开某个工具后,AI 调用它将不再逐次询问。Shell 可执行本机任意命令——请谨慎开启;文件工具仍限制在你已授权的文件夹内。`,"settings.localToolsBuiltinRisky":`完全访问`,"settings.localToolsAddFolder":{message:`添加文件夹`,description:`选择要授权的文件夹的按钮。`},"settings.localToolsRemove":{message:`移除`,description:`移除已授权文件夹的按钮。`},"settings.localToolsNoFolders":{message:`还没有授权任何文件夹。`,description:`已授权文件夹列表的空状态。`},"settings.localToolsSave":{message:`保存`,description:`保存已授权文件夹。`},"settings.localToolsMcpTitle":{message:`MCP 服务器`,description:`本地工具设置中本地 MCP 服务器配置的分区标题。`},"settings.localToolsMcpHint":{message:`通过 stdio 连接本地 MCP 服务器。它们的工具会提供给 AI 使用,并受同样的逐次调用确认保护。修改后立即生效。`,description:`说明本地 MCP 服务器的作用,以及修改无需重启即可生效。`},"settings.localToolsMcpAdd":{message:`添加服务器`,description:`添加一个新的本地 MCP 服务器行的按钮。`},"settings.localToolsMcpName":{message:`名称`,description:`MCP 服务器名称/标识字段的标签。`},"settings.localToolsMcpCommand":{message:`命令`,description:`MCP 服务器启动命令字段的标签。`},"settings.localToolsMcpArgs":{message:`参数`,description:`MCP 服务器命令参数字段的标签。`},"settings.localToolsMcpArgsHint":{message:`每行一个参数。`,description:`MCP 参数文本框的占位提示。`},"settings.localToolsMcpEnv":{message:`环境变量`,description:`MCP 服务器环境变量字段的标签。`},"settings.localToolsMcpEnvHint":{message:`每行一个 KEY=VALUE。`,description:`MCP 环境变量文本框的占位提示。`},"settings.localToolsMcpNoServers":{message:`尚未配置 MCP 服务器。`,description:`未配置任何 MCP 服务器时显示的空状态。`},"settings.localToolsMcpNamePlaceholder":{message:`例如 filesystem`,description:`MCP 服务器名称输入框的占位符。`},"settings.localToolsMcpCommandPlaceholder":{message:`例如 npx`,description:`MCP 服务器命令输入框的占位符。`},"settings.localToolsMcpNameRequired":{message:`每个服务器都需要名称和命令。`,description:`服务器行缺少名称或命令时的校验错误。`},"settings.localToolsMcpDuplicateName":{message:`服务器名称必须唯一。`,description:`两个服务器名称重复时的校验错误。`},"settings.localToolsMcpNameInvalid":{message:`名称只能包含字母、数字、连字符和下划线。`,description:`服务器名称含非法字符时的校验错误。`},"settings.localToolsMcpEnabled":{message:`启用`,description:`启用/停用某个本地 MCP 服务器的开关标签。`},"settings.localToolsMcpReconnect":{message:`测试 / 重连`,description:`重新启动某个 MCP 服务器并刷新其状态的按钮。`},"settings.localToolsMcpConnecting":{message:`连接中…`,description:`MCP 服务器正在(重新)连接时的状态标签。`},"settings.localToolsMcpNotSaved":{message:`尚未保存`,description:`尚未保存/连接的 MCP 服务器行的状态标签。`},"settings.localToolsMcpConnected":{message:`已连接 · {n} 个工具`,description:`MCP 服务器连接成功时的标签;{n} 为工具数量。`},"settings.localToolsMcpDisabled":{message:`已停用`,description:`MCP 服务器被关闭时的标签。`},"settings.localToolsMcpFailed":{message:`连接失败`,description:`MCP 服务器启动失败时的标签;原因显示在下方。`},"settings.localToolsMcpPlatformHint":{message:`提示:使用 PATH 中的命令,如 npx 或 uvx(例如 npx -y @modelcontextprotocol/server-filesystem ~/Documents)。Windows 上 npx/node 会自动解析。若某服务器显示 “spawn … ENOENT”,请把命令改为完整路径。`,description:`配置 MCP 启动命令的跨平台提示。`},"settings.localToolsSaved":{message:`已保存`,description:`保存本地工具文件夹后的短暂确认。`},"settings.localToolsActiveTools":{message:`可用工具`,description:`当前可用本地工具列表前的标签。`},"settings.localToolsGrantsTitle":{message:`永久允许的操作`,description:`永久授权列表的标题。`},"settings.localToolsGrantsHint":{message:`你选择「永久允许」的工具调用,将不再询问直接执行。撤销任意一项可重新开启确认弹窗。`,description:`永久允许操作标题下的说明。`},"settings.localToolsRevoke":{message:`撤销`,description:`撤销单条永久授权的按钮。`},"settings.localToolsRevokeAll":{message:`全部撤销`,description:`撤销所有永久授权的按钮。`},"settings.localToolsNoGrants":{message:`暂无永久允许的操作。每次执行本地工具前都会先征求你的同意。`,description:`永久允许操作列表的空状态。`},"settings.localToolsPermsTitle":{message:`系统权限`,description:`macOS 系统权限区块的标题。`},"settings.localToolsPermsHint":{message:`可选。上面的文件夹访问无需这些权限——只授予某个任务真正需要的。`,description:`系统权限标题下的说明。`},"settings.localToolsPermFullDisk":{message:`完全磁盘访问权限`,description:`macOS 完全磁盘访问权限行。`},"settings.localToolsPermScreen":{message:`屏幕录制`,description:`macOS 屏幕录制权限行。`},"settings.localToolsPermAccessibility":{message:`辅助功能`,description:`macOS 辅助功能权限行。`},"settings.localToolsGranted":{message:`已授权`,description:`系统权限已授权时的状态标签。`},"settings.localToolsNotGranted":{message:`未授权`,description:`系统权限未授权时的状态标签。`},"settings.localToolsOpen":{message:`打开`,description:`打开对应 macOS 系统设置面板的按钮。`},"settings.subsites":{message:`我的分站`,description:`设置弹窗中分站管理 tab 的标题。仅在 official 主站可见,分站不显示。`},"settings.adminOnlyHint":{message:`此栏目仅站点管理员可见,普通用户无法访问。`,description:`在站点设置 / SEO 设置 / 分发设置 / 功能设置 等仅管理员可见的设置 tab 顶部展示的提示语。`},"settings.officialOnlyHint":{message:`此栏目仅主站可见,分站不会显示。`,description:`在『我的分站』tab 顶部展示的提示语,说明该入口只在 official 主站出现。`},"settings.customDomain":{message:`自定义域名`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`一键搭建`,description:`关于页面中『一键搭建分站』按钮的文本,仅 official 主站显示`},"settings.poweredBy":{message:`开源项目`,description:`关于页面中展示本站基于哪个开源项目搭建的标题`},"settings.poweredByTip":{message:`本站基于 Nexior 开源项目搭建,代码完全开源。`,description:`关于页面中展示本站基于哪个开源项目的说明`},"settings.apiService":{message:`API 服务`,description:`关于页面中展示API服务提供方的标题`},"settings.apiServiceTip":{message:`本站 API 服务由 Ace Data Cloud 提供。`,description:`关于页面中展示API服务提供方的说明`},"settings.buildYourOwn":{message:`搭建同款`,description:`关于页面中提示用户可以搭建同款站点的标题`},"settings.buildYourOwnTip":{message:`想搭建同样的 AI 站点?联系我们获取部署支持。`,description:`关于页面中搭建同款的说明`},"settings.contactUs":{message:`联系客服`,description:`联系客服按钮的文本`},"message.viewOnGithub":{message:`在 GitHub 上查看`,description:`在GitHub上查看项目的链接文本`},"title.notFound":{message:`页面走丢了`,description:`404 页面的标题`},"message.notFound":{message:`你访问的页面不存在,可能链接已经更换或被移除。回首页继续探索 AceData 的 AI 服务吧。`,description:`404 页面的副标题描述`},"message.notFoundEyebrow":{message:`出错啦`,description:`404 页面顶部小标签文本`},"message.notFoundPath":{message:`请求路径`,description:`404 页面展示当前请求路径的标签`},"button.backToHome":{message:`返回首页`,description:`按钮文本,用于跳转回首页`},"button.goBack":{message:`返回上一页`,description:`按钮文本,用于返回浏览历史的上一页`},"title.apiCode":{message:`本次请求对应的 API 代码`,description:`对话框标题:展示当前结果对应的 curl / Python / Node API 调用代码`},"message.viewCodeHint":{message:`查看本次请求对应的 API 代码`,description:`结果卡片操作按钮(U1/U2/下载/扩展…)旁边的 View Code 按钮的悬浮提示。点击按钮会弹出对话框,展示 curl / Python / Node 三种语言下与当前结果等价的 API 调用代码。`},"button.viewCode":{message:`查看代码`,description:`按钮文本:打开对话框,展示当前结果对应的 curl / Python / Node API 调用代码(类似 OpenAI Playground 的 View code)`},"button.getApiKey":{message:`获取 API Key`,description:`API 代码对话框底部的链接文本:点击后跳转到平台控制台用于创建 API Key 的页面`},"button.apiPlatform":{message:`API 平台`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`在你自己的代码里运行下面任意一段即可复现当前结果。`,description:`API code dialog: short hint shown above the language tabs. Explains that the snippet below reproduces the current result when run from the user's own code.`},"tab.apiRequest":{message:`请求`,description:`API code dialog tab label for the request snippet (the code that reproduces the current result).`},"tab.apiResponse":{message:`响应`,description:`API code dialog tab label for the live response returned after clicking Run.`},"button.apiRun":{message:`再次运行`,description:`API code dialog button that re-runs the request live against the API using the user's key. The result already exists, so clicking runs it again, and it is billable.`},"button.apiRunning":{message:`运行中…`,description:`API code dialog Run button label while the live request is in flight.`},"button.apiRunConfirm":{message:`确认运行`,description:`Confirm-button label in the dialog that warns running here consumes extra credits.`},"button.viewDocs":{message:`查看文档`,description:`API code dialog footer button that opens the matching API documentation page on the platform.`},"message.apiClickRun":{message:`点击「再次运行」即可使用你的 API Key 实时执行本次请求。`,description:`API code dialog Response tab empty state, shown before the user has run the request.`},"message.apiRunConfirmTitle":{message:`确认运行`,description:`Title of the confirmation dialog shown before re-running a request from the API code dialog.`},"message.apiRunConfirmDesc":{message:`本次运行会用你的 API Key 真实调用接口并额外消耗积分,确认继续吗?`,description:`Body of the confirmation dialog warning that re-running the request is a real, billable API call.`},"message.apiRunConfirmSkip":{message:`不再提示`,description:`Checkbox in the run-confirmation dialog that, when ticked, suppresses the warning on subsequent runs.`},"message.apiRunTaskCreated":{message:`任务已创建,关闭此窗口即可在下方查看最新结果。`,description:`Success banner shown in the API code dialog after a run returns a task id, hinting that the new task already appears in the list behind the dialog.`},"button.apiViewLatest":{message:`关闭并查看`,description:`Button in the API code dialog success banner that closes the dialog so the user can see the newly created task in the list below.`},"message.uploadInProgress":{message:`参考文件正在上传,请稍候再生成`,description:`用户在参考图/视频/音频还未上传完成时点击生成按钮,会弹出的轻量提示,要求用户等待上传完成后再次点击生成。`},"appUpgrade.title":{message:`需要升级`,description:`原生 App 启动时的版本闸门弹窗标题。当客户端版本低于服务端要求时显示,告知用户需要升级 App。`},"appUpgrade.blockMessage":{message:`当前版本过低,请前往应用商店更新到最新版本后再使用。`,description:`强制升级弹窗正文。当客户端版本低于 min_supported 时显示,无法关闭,唯一按钮跳转到应用商店。`},"appUpgrade.softMessage":{message:`有新版本可用,建议前往应用商店更新以获得最佳体验。`,description:`可选升级提示正文。当客户端版本低于 latest 但高于 min_supported 时显示,用户可以选择稍后再说继续使用。`},"appUpgrade.openStore":{message:`前往更新`,description:`升级弹窗主按钮:在系统浏览器中打开 App Store / Play Store 链接。`},"appUpgrade.later":{message:`稍后再说`,description:`软提示升级弹窗的次按钮:忽略本次提示继续使用,仅在非强制升级场景出现。`},"nav.maestro":{message:`Maestro`,description:`导航栏中 Maestro 文章转视频页面的文字,保持为 'Maestro'`},"nav.digitalhuman":{message:`数字人`,description:`导航栏中数字人口播页面的文字`},"settings.localToolsAndroidPermHint":{message:`启用无障碍服务后,AI 助手才能查看并操作你的屏幕。你可以在下方逐项提前授权具体操作。`,description:`Android 设置里 Computer Use 无障碍权限区块的说明。`},"settings.cuConsentTitle":{message:`允许操作?`,description:`按需授权对话框的标题(模型请求执行某个屏幕操作时弹出)。`},"settings.cuConsentMessage":{message:`AI 助手想在你的手机上执行「{action}」操作,是否允许?`,description:`按需授权对话框正文;{action} 为具体的 computer.* 操作名。`},"settings.cuConsentAllow":{message:`允许一次`,description:`按需授权对话框的允许按钮。`},"settings.cuConsentDeny":{message:`拒绝`,description:`按需授权对话框的拒绝按钮。`}};export{e as default};
1
+ var e={"button.setup":{message:`设置`,description:`按钮中的文本,用于进行设置`},"button.start":{message:`开始`,description:`按钮文本,用于开始某些操作`},"button.copy":{message:`复制`,description:`按钮中的文本,用于复制某项内容`},"button.copied":{message:`已复制`,description:`按钮文本,用于表示内容已复制`},"button.restart":{message:`重新生成`,description:`按钮文本,用于设置某些内容`},"button.preview":{message:`预览`,description:`按钮文本,用于通过URL打开预览某个文件`},"button.seeRawImage":{message:`查看原图`,description:`按钮文本,用于查看原始图片`},"button.seeRawVideo":{message:`查看视频`,description:`按钮文本,用于查看原始图片`},"button.edit":{message:`编辑`,description:`按钮中的文本,用于编辑内容`},"button.login":{message:`登录`,description:`按钮中的文本,用于登录`},"button.logout":{message:`注销`,description:`按钮中的文本,用于注销`},"button.new":{message:`新建`,description:`按钮中的文本,用于创建新项`},"button.delete":{message:`删除`,description:`按钮中的文本,用于删除内容`},"button.deletePermanently":{message:`永久删除账号`,description:`删除账号确认对话框底部的红色最终删除按钮文本,translate to 'Permanently delete account'`},"button.confirm":{message:`确认`,description:`按钮中的文本,用于确认某项操作`},"button.cancel":{message:`取消`,description:`按钮中的文本,用于取消某项操作`},"button.close":{message:`关闭`,description:`按钮中的文本,用于关闭对话框或面板`},"button.expand":{message:`展开`,description:`按钮提示文本,用于打开提示词输入框的全屏编辑器`},"button.alert":{message:`警告`,description:`按钮中的文本,用于发出警报`},"button.info":{message:`信息`,description:`按钮中的文本,用于显示信息`},"button.publish":{message:`发布`,description:`按钮中的文本,用于发布内容`},"button.watch":{message:`查看`,description:`按钮中的文本,用于观看某项内容`},"button.verify":{message:`实名认证`,description:`按钮中的文本,让用户进行实名认证`},"button.profile":{message:`个人资料`,description:`按钮中的文本,用于显示个人资料`},"button.console":{message:`控制台`,description:`按钮中的文本,用于显示控制台页面,以控制网页中某项内容`},"button.learn":{message:`学习`,description:`按钮中的文本,用于让用户学习某项内容`},"button.buy":{message:`购买`,description:`按钮中的文本,用于让用户购买某项内容`},"button.try":{message:`测试`,description:`按钮中的文本,用于让用户尝试某项内容`},"button.startForFree":{message:`免费开始`,description:`按钮中的文本,用于让用户免费开始`},"button.download":{message:`下载`,description:`按钮中的文本,用于下载文件(如音频、视频、图片)`},"button.downloadAndroid":{message:`下载 Android`,description:`按钮中的文本,用于下载 Android 安装包`},"button.downloadIos":{message:`下载 iOS 安装包`,description:`按钮中的文本,用于下载 iOS 安装包文件`},"button.downloadWindows":{message:`下载 Windows 版`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`下载 macOS 版`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`安装 iOS`,description:`按钮中的文本,用于安装 iOS 应用`},"button.apply":{message:`申请`,description:`按钮中的文本,用于让用户申请API服务`},"button.refresh":{message:`刷新`,description:`按钮中的文本,用于刷新页面`},"button.pay":{message:`支付`,description:`按钮中的文本,用于让用户支付服务费用`},"button.repay":{message:`继续支付`,description:`按钮中的文本,用于让用户继续支付服务费用`},"button.applied":{message:`已申请`,description:`按钮中的文本,用于显示用户已申请该服务`},"button.acquire":{message:`获取`,description:`按钮中的文本,用于让用户获取API服务的令牌或密钥`},"button.fillExample":{message:`填写示例`,description:`按钮中的文本,用于让用户填写示例数据`},"button.buyMore":{message:`充值`,description:`按钮中的文本,用于让用户充值。英文必须翻译为“Top Up”,中文为“充值”。`},"button.update":{message:`更新`,description:`按钮中的文本,用于更新内容`},"button.view":{message:`查看`,description:`按钮中的文本,用于查看某项内容`},"button.create":{message:`创建`,description:`按钮中的文本,用于创建某项内容`},"button.referralEarnings":{message:`推荐收入`,description:`按钮中的文本,用于显示推荐收入,意味着用户可以通过邀请他人使用该服务来赚钱`},"button.finish":{message:`完成`,description:`按钮中的文本,用于完成某项操作`},"entity.id":{message:`ID`,description:`用于显示实体的唯一标识符`},"entity.type":{message:`类型`,description:`用于显示实体的类型`},"entity.website":{message:`Ace Data Cloud`,description:`网站名称,无需翻译,保持为'Ace Data Cloud'`},"entity.copyright":{message:`版权`,description:`显示版权的文本`},"entity.platform":{message:`平台`,description:`指示这是API服务平台的文本`},"entity.title":{message:`标题`,description:`实体的标题`},"entity.icon":{message:`图标`,description:`实体的图标`},"entity.status":{message:`状态`,description:`实体的状态`},"status.loading":{message:`加载中...`,description:`内容加载时显示的状态文案`},"error.appleSignInFailed":{message:`通过 Apple 登录失败,请重试或使用其他登录方式。`,description:`当原生“通过 Apple 登录”因用户取消以外的原因失败时显示的错误提示。`},"error.loginLinkExpired":{message:`登录链接已失效,请重新登录。`,description:`桌面客户端 OAuth 回调因 state 校验失败/过期被丢弃时显示的错误提示。`},"entity.operation":{message:`操作`,description:`实体的操作`},"entity.description":{message:`描述`,description:`实体的描述`},"entity.createdAt":{message:`创建于`,description:`实体创建的时间`},"entity.updatedAt":{message:`更新于`,description:`实体更新的时间`},"entity.order":{message:`订单`,description:`实体的订单,订单包含金钱、服务信息,用户需要为其支付`},"message.noTasks":{message:`没有历史任务,请开始新的任务吧~`,description:`没有任务时的消息`},"message.guestTasks":{message:`登录后即可发起任务,并在这里查看你的作品。`,description:`未登录访客在任务列表区域看到的提示`},"message.usedAmount":{message:`已使用金额`,description:`用于显示服务已使用的金额`},"message.mobileAppDescription":{message:`随时随地使用完整的 AceData 创作工具 —— 支持 Android、iPhone、iPad、Windows 与 macOS。一键安装,或扫码前往。`,description:`应用下载页的说明文案`},"message.mobileAndroidHint":{message:`适用于 Android 手机和平板。可从 Google Play 安装以获得自动更新,也可直接下载 APK。`,description:`Android 下载卡片说明`},"message.mobileAndroidPending":{message:`Android 安装包暂未就绪,请稍后再试。`,description:`Android 安装包暂未可用时的提示`},"message.mobileAvailableNow":{message:`已上架 Google Play`,description:`用于显示 Android 已可下载的状态`},"message.mobileSecureDelivery":{message:`安全 CDN 分发`,description:`用于强调下载链接通过 CDN 交付`},"message.mobileDirectInstall":{message:`直接 APK 安装`,description:`用于描述 Android 端为直接 APK 安装方式`},"message.mobileLatestRelease":{message:`当前公开版本`,description:`用于说明当前展示的是最新公开版本`},"message.mobileSharedAccount":{message:`与网页端共用账号和额度`,description:`用于说明移动端与网页端共用账号`},"message.mobileIosHint":{message:`适用于 iPhone 和 iPad,可直接从 App Store 安装,与网页端共用账号和额度。`,description:`iOS 下载卡片说明`},"message.mobileIosPending":{message:`iOS 版正在完成 Apple 证书与描述文件签名,稍后将在此开放下载。`,description:`iOS 安装包暂未可用时的提示`},"message.mobileComingSoon":{message:`即将推出`,description:`用于标记某个平台(如 iOS)即将开放下载的短状态标签`},"message.mobileNowOnAppStore":{message:`已上架 App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`适用于 Windows 10 及以上版本(64 位)。下载安装程序后双击即可安装。`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`适用于 macOS 11 及以上版本。请按你的机型选择 —— Apple 芯片(M 系列)或 Intel。`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`桌面版目前为未签名的 Beta 版本。Windows 在 SmartScreen 提示中选择“更多信息 → 仍要运行”;macOS 请右键点按应用并选择“打开”以绕过 Gatekeeper。`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`在 Google Play 上获取`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`在 App Store 下载`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`无法访问 Google Play?可直接下载 APK 安装包。`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`扫码前往 Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`扫码前往 App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`iOS 首次安装企业或 Ad Hoc 包时,系统可能要求先在“设置 > 通用 > VPN 与设备管理”中信任证书。`,description:`移动应用安装提示`},"title.mobileApp":{message:`获取 AceData 客户端`,description:`应用下载页标题`},"title.mobileFastAccess":{message:`更快触达,不绕应用商店`,description:`下载页优势卡片标题,强调快速安装`},"title.mobileTrustedRelease":{message:`版本集中管理,分发更稳`,description:`下载页优势卡片标题,强调版本和分发稳定性`},"title.mobileUnifiedExperience":{message:`移动端与网页端体验保持一致`,description:`下载页优势卡片标题,强调统一体验`},"nav.mobileApp":{message:`客户端`,description:`导航中的应用下载入口(移动端 + 桌面端)`},"message.mobileFastAccess":{message:`用户可以在手机扫码直接安装,也可以在桌面端先下载 APK 再分发给团队成员,适合需要快速试用和内测的场景。`,description:`下载页优势说明,强调快速接入`},"message.mobileTrustedRelease":{message:`下载入口集中在同一页面,版本号、平台状态和安装方式一眼可见,减少因为链路分散造成的沟通成本。`,description:`下载页优势说明,强调统一分发`},"message.mobileUnifiedExperience":{message:`登录后的账号体系、额度和服务入口与 Web 保持一致,方便用户在桌面端和移动端之间无缝切换。`,description:`下载页优势说明,强调统一账号体验`},"message.remainingAmount":{message:`剩余金额`,description:`用于显示服务剩余的金额`},"message.copied":{message:`复制成功`,description:`显示内容已成功复制的消息`},"message.restart":{message:`重新生成`,description:`用于显示内容已成功复制的消息`},"message.confirmDelete":{message:`您确定要删除吗?`,description:`确认用户要删除某项内容的消息`},"message.expiredAt":{message:`过期时间`,description:`用于显示服务的过期时间`},"message.alert":{message:`警告`,description:`警告用户的消息`},"message.deleteAccountConfirm":{message:`此操作将永久删除您的账号及所有相关数据,且无法恢复。确定要继续吗?`,description:`永久删除用户账号前显示的确认消息`},"message.deleteAccountSuccess":{message:`您的账号已删除。`,description:`成功删除用户账号后显示的消息`},"message.deleteAccountFailed":{message:`删除账号失败,请稍后重试。`,description:`删除账号失败时显示的消息`},"message.deleteAccountWarning":{message:`此操作不可逆!您的账号及其所有数据将被永久删除,无法找回。`,description:`删除账号确认对话框顶部的红色警示横幅文本,必须强烈警告操作不可撤销`},"message.deleteAccountConsequences":{message:`将永久删除:个人资料、余额与积分、应用与订阅、API 密钥及第三方登录绑定。`,description:`删除账号确认对话框中列出将被删除内容的说明文本`},"message.deleteAccountTypePrompt":{message:`请输入您的用户名以确认删除:`,description:`提示用户必须逐字输入自己的用户名才能确认删除;紧随其后会单独显示该用户名`},"message.deleteAccountPlaceholder":{message:`在此输入您的用户名`,description:`用户名确认输入框的占位符`},"message.info":{message:`提示`,description:`显示信息的消息`},"message.free":{message:`免费`,description:`显示该服务是免费的消息,意味着用户无需支付`},"message.startPrice":{message:`起始`,description:`显示服务的最低价格的消息`},"message.joinDiscord":{message:`加入Discord`,description:`让用户加入Discord频道的消息`},"message.addWeChat":{message:`微信服务`,description:`让用户添加微信账户的消息`},"message.serviceTech":{message:`技术支持`,description:`显示技术支持的消息`},"message.businessCooperation":{message:`数据 & 商业合作`,description:`显示商业合作的消息`},"message.noData":{message:`没有数据`,description:`显示表或列表中没有数据的消息`},"nav.home":{message:`首页`,description:`网站导航栏中的文本,用于显示首页`},"nav.content":{message:`内容`,description:`网站导航栏中的文本,用于显示内容页面`},"nav.category":{message:`类别`,description:`网站导航栏中的文本,用于显示类别页面`},"nav.service":{message:`所有服务`,description:`网站导航栏中的文本,用于显示服务页面`},"nav.profile":{message:`我`,description:`网站导航栏中的文本,用于显示个人资料页面`},"nav.products":{message:`产品`,description:`网站导航栏中的文本,用于显示产品页面`},"nav.referral":{message:`创收联盟`,description:`网站导航栏中的文本,用于显示推荐页面`},"nav.apiPlatform":{message:`API 平台`,description:`网站导航栏中的文本,用于显示API平台页面`},"nav.document":{message:`开发文档`,description:`网站导航栏中的文本,用于显示文档页面`},"nav.console":{message:`控制台`,description:`网站导航栏中的文本,用于显示控制台页面`},"nav.chatgpt":{message:`ChatGPT`,description:`网站导航栏中的文本,用于显示ChatGPT页面,请不要翻译此字段,必须保持为'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`网站导航栏中的文本,用于显示DeepSeek页面,请不要翻译此字段,必须保持为'DeepSeek'`},"nav.grok":{message:`Grok`,description:`网站导航栏中的文本,用于显示Grok页面,请不要翻译此字段,必须保持为'Grok'`},"nav.chat":{message:`Chat`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Chat'`},"nav.veo":{message:`Veo`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Veo'`},"nav.sora":{message:`Sora`,description:`网站导航栏中的文本,用于显示聊天页面,请不要翻译此字段,必须保持为'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`网站导航栏中的文本,用于显示中途之旅页面,请不要翻译此字段,必须保持为'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`网站导航栏中的文本,用于显示二维艺术页面,请不要翻译此字段,必须保持为'QRArt'`},"nav.suno":{message:`Suno`,description:`网站导航栏中的文本,用于显示Suno页面,请不要翻译此字段,必须保持为'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`网站导航栏中的文本,用于显示Pixverse页面,请不要翻译此字段,必须保持为'Pixverse'`},"nav.flux":{message:`Flux`,description:`网站导航栏中的文本,用于显示Flux页面,请不要翻译此字段,必须保持为'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`网站导航栏中的文本,用于显示Nano Banana页面,请不要翻译此字段,必须保持为'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`网站导航栏中的文本,用于显示OpenAI Image页面,请不要翻译此字段,必须保持为'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`网站导航栏中的文本,用于显示SeeDream页面,请不要翻译此字段,必须保持为'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok 视频`,description:`网站导航栏中的文本,用于显示 Grok Imagine 视频页面`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`网站导航栏中的文本,用于显示Fish Audio页面,请不要翻译此字段,必须保持为'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`网站导航栏中的文本,用于显示 Coding Bridge 页面,请不要翻译此字段,必须保持为'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`网站导航栏中的文本,用于显示WebExtrator页面,请不要翻译此字段,必须保持为'WebExtrator'`},"nav.image":{message:`图片`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`音乐`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`视频`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`推荐收益`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`连接`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`退出登录`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`删除账号`,description:`用于永久删除当前用户账号的菜单项`},"nav.site":{message:`站点配置`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`我的分站`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`设置`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`AI证件照`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`更多`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`语言设置`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`客服支持`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`深色模式`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`警告`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`请选择`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`请填写`,description:`输入的占位符`},"title.allApplications":{message:`所有申请`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`所有订单`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`订单信息`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`充值`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`推荐收益`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`站点配置`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`推荐历史`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`邀请人`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`使用历史`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`密钥`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`联系我们`,description:`显示联系信息的部分标题`},"about.title2":{message:`资源`,description:`显示链接的部分标题`},"about.title3":{message:`链接`,description:`显示支持信息的部分标题`},"about.address":{message:`美国特拉华州纽瓦克大陆路131号305室,邮编19713`,description:`公司的地址`},"about.email":{message:`office@acedata.cloud`,description:`公司的电子邮件`},"about.link1":{message:`服务`,description:`指向文档页面的链接`},"about.link2":{message:`开发文档`,description:`指向服务页面的链接`},"about.link3":{message:`控制台`,description:`指向控制台页面的链接`},"about.link4":{message:`个人资料`,description:`指向个人资料页面的链接`},"about.link5":{message:`UI平台`,description:`指向中心页面的链接`},"about.link6":{message:`推荐收益`,description:`指向推荐收入页面的链接`},"about.link7":{message:`支持`,description:`指向支持页面的链接`},"about.link8":{message:`服务条款`,description:`指向服务条款页面的链接`},"about.link9":{message:`隐私政策`,description:`指向隐私政策页面的链接`},"theme.light":{message:`浅色`,description:`浅色主题的名称`},"theme.dark":{message:`深色`,description:`深色主题的名称`},"theme.system":{message:`系统`,description:`系统主题的名称,表示根据系统设置自动切换主题`},"settings.general":{message:`通用设置`,description:`设置页面中的通用设置部分的标题`},"settings.language":{message:`语言`,description:`设置页面中的语言设置部分的标题`},"settings.theme":{message:`主题`,description:`设置页面中的主题设置部分的标题`},"settings.seo":{message:`SEO设置`,description:`设置页面中的SEO设置部分的标题`},"settings.site":{message:`站点设置`,description:`设置页面中的站点设置部分的标题`},"settings.distribution":{message:`分发设置`,description:`设置页面中的分发设置部分的标题`},"settings.function":{message:`功能设置`,description:`设置页面中的功能设置部分的标题`},"settings.auth":{message:`登录方式`,description:`设置页面侧边栏的『登录方式』tab 标题——配置本站允许使用的登录方式及默认登录方式,仅站点管理员可见`},"settings.apiKey":{message:`API Key`,description:`设置页面侧边栏的 API Key 标签——用户自带(BYOK)的上游服务商 API Key 管理`},"field.operations":{message:`操作`,description:`通用列标题:表格行的操作按钮列(编辑、删除等)`},"nav.gemini":{message:`Gemini`,description:`Text in the website navigation bar to display the Gemini page, must remain as 'Gemini'`},"nav.claude":{message:`Claude`,description:`Text in the website navigation bar to display the Claude page, must remain as 'Claude'`},"button.detail":{message:`查看详情`,description:``},"button.testEnv":{message:`测试环境`,description:`按钮中的文本,用于切换到测试环境`},"button.upload":{message:`上传`,description:`按钮中的文本,用于上传文件或内容`},"message.cnbeian":{message:`中国区备案`,description:`中国区备案的说明信息`},"message.copyFailed":{message:`复制失败`,description:`显示内容复制失败的消息`},"nav.tryNow":{message:`快速体验`,description:`网站导航栏中的文本,用于让用户尝试服务`},"title.coin":{message:`加密货币`,description:`显示加密货币的页面标题`},"title.distributionRank":{message:`推荐排行`,description:`显示推荐排行的页面标题`},"title.distributionPlatformRank":{message:`平台排行`,description:`显示平台排行的页面标题`},"customers.name1":{message:`马克·杜`,description:`客户的姓名`},"customers.job1":{message:`软件工程师`,description:`客户的职业`},"customers.comment1":{message:`Ace Data Cloud 为我们的团队提供了很好的服务,帮助我们提高了生产力。非常喜欢!`,description:`客户的评价`},"customers.name2":{message:`雅各布·威廉姆斯`,description:`客户的姓名`},"customers.job2":{message:`产品经理`,description:`客户的职业`},"customers.comment2":{message:`Ace Data Cloud 是一个很好的集成平台,服务质量优秀。`,description:`客户的评价`},"customers.name3":{message:`拉里·亨利`,description:`客户的姓名`},"customers.job3":{message:`设计师`,description:`客户的职业`},"customers.comment3":{message:`我喜欢 Ace Data Cloud 的服务,使用方便,价格合理,希望能越来越好!`,description:`客户的评价`},"nav.github":{message:`GitHub`,description:`GitHub仓库链接`},"settings.github":{message:`源代码`,description:`在GitHub上查看源代码的链接`},"settings.about":{message:`关于`,description:`设置页面中的关于部分的标题`},"settings.localTools":{message:`本地工具`,description:`桌面专属设置 tab:管理本地工具的授权文件夹、系统权限与永久授权。`},"settings.localToolsDesktopOnly":{message:`仅在桌面应用中可用。`,description:`在 web/移动端打开本地工具 tab 时的提示。`},"settings.localToolsFoldersTitle":{message:`已授权文件夹`,description:`AI 可在本地读写的文件夹列表标题。`},"settings.localToolsFoldersHint":{message:`AI 可在本机读写的文件夹。工具在本地执行;未经你同意,任何内容都不会离开你的设备。`,description:`已授权文件夹标题下的说明。`},"settings.localToolsComputerUseTitle":{message:`电脑操作(实验性)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`让 AI 看到你的屏幕并控制本机的鼠标和键盘。默认关闭,按需开启。macOS 上需在下方授予「屏幕录制」和「辅助功能」权限。每个操作仍会请求你的确认。`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`预先允许所有电脑操作`,"settings.localToolsPreauthorizeHint":`一次性允许截图、点击、输入、按键等所有电脑操作,并触发所需的系统权限。`,"settings.localToolsCuActionsTitle":`逐项允许操作`,"settings.localToolsCuActionsHint":`只打开你愿意让 AI 免确认执行的操作,其余仍会逐次询问。每一项都可在此撤销。`,"settings.localToolsCuScreenshot":`截图`,"settings.localToolsCuClick":`点击`,"settings.localToolsCuMove":`移动指针`,"settings.localToolsCuType":`输入文字`,"settings.localToolsCuKey":`按键`,"settings.localToolsCuScroll":`滚动`,"settings.localToolsBuiltinTitle":`内置工具`,"settings.localToolsBuiltinHint":`打开某个工具后,AI 调用它将不再逐次询问。Shell 可执行本机任意命令——请谨慎开启;文件工具仍限制在你已授权的文件夹内。`,"settings.localToolsBuiltinRisky":`完全访问`,"settings.localToolsAddFolder":{message:`添加文件夹`,description:`选择要授权的文件夹的按钮。`},"settings.localToolsRemove":{message:`移除`,description:`移除已授权文件夹的按钮。`},"settings.localToolsNoFolders":{message:`还没有授权任何文件夹。`,description:`已授权文件夹列表的空状态。`},"settings.localToolsSave":{message:`保存`,description:`保存已授权文件夹。`},"settings.localToolsMcpTitle":{message:`MCP 服务器`,description:`本地工具设置中本地 MCP 服务器配置的分区标题。`},"settings.localToolsMcpHint":{message:`通过 stdio 连接本地 MCP 服务器。它们的工具会提供给 AI 使用,并受同样的逐次调用确认保护。修改后立即生效。`,description:`说明本地 MCP 服务器的作用,以及修改无需重启即可生效。`},"settings.localToolsMcpAdd":{message:`添加服务器`,description:`添加一个新的本地 MCP 服务器行的按钮。`},"settings.localToolsMcpName":{message:`名称`,description:`MCP 服务器名称/标识字段的标签。`},"settings.localToolsMcpCommand":{message:`命令`,description:`MCP 服务器启动命令字段的标签。`},"settings.localToolsMcpArgs":{message:`参数`,description:`MCP 服务器命令参数字段的标签。`},"settings.localToolsMcpArgsHint":{message:`每行一个参数。`,description:`MCP 参数文本框的占位提示。`},"settings.localToolsMcpEnv":{message:`环境变量`,description:`MCP 服务器环境变量字段的标签。`},"settings.localToolsMcpEnvHint":{message:`每行一个 KEY=VALUE。`,description:`MCP 环境变量文本框的占位提示。`},"settings.localToolsMcpNoServers":{message:`尚未配置 MCP 服务器。`,description:`未配置任何 MCP 服务器时显示的空状态。`},"settings.localToolsMcpNamePlaceholder":{message:`例如 filesystem`,description:`MCP 服务器名称输入框的占位符。`},"settings.localToolsMcpCommandPlaceholder":{message:`例如 npx`,description:`MCP 服务器命令输入框的占位符。`},"settings.localToolsMcpNameRequired":{message:`每个服务器都需要名称和命令。`,description:`服务器行缺少名称或命令时的校验错误。`},"settings.localToolsMcpDuplicateName":{message:`服务器名称必须唯一。`,description:`两个服务器名称重复时的校验错误。`},"settings.localToolsMcpNameInvalid":{message:`名称只能包含字母、数字、连字符和下划线。`,description:`服务器名称含非法字符时的校验错误。`},"settings.localToolsMcpEnabled":{message:`启用`,description:`启用/停用某个本地 MCP 服务器的开关标签。`},"settings.localToolsMcpReconnect":{message:`测试 / 重连`,description:`重新启动某个 MCP 服务器并刷新其状态的按钮。`},"settings.localToolsMcpConnecting":{message:`连接中…`,description:`MCP 服务器正在(重新)连接时的状态标签。`},"settings.localToolsMcpNotSaved":{message:`尚未保存`,description:`尚未保存/连接的 MCP 服务器行的状态标签。`},"settings.localToolsMcpConnected":{message:`已连接 · {n} 个工具`,description:`MCP 服务器连接成功时的标签;{n} 为工具数量。`},"settings.localToolsMcpDisabled":{message:`已停用`,description:`MCP 服务器被关闭时的标签。`},"settings.localToolsMcpFailed":{message:`连接失败`,description:`MCP 服务器启动失败时的标签;原因显示在下方。`},"settings.localToolsMcpPlatformHint":{message:`提示:使用 PATH 中的命令,如 npx 或 uvx(例如 npx -y @modelcontextprotocol/server-filesystem ~/Documents)。Windows 上 npx/node 会自动解析。若某服务器显示 “spawn … ENOENT”,请把命令改为完整路径。`,description:`配置 MCP 启动命令的跨平台提示。`},"settings.localToolsSaved":{message:`已保存`,description:`保存本地工具文件夹后的短暂确认。`},"settings.localToolsActiveTools":{message:`可用工具`,description:`当前可用本地工具列表前的标签。`},"settings.localToolsGrantsTitle":{message:`永久允许的操作`,description:`永久授权列表的标题。`},"settings.localToolsGrantsHint":{message:`你选择「永久允许」的工具调用,将不再询问直接执行。撤销任意一项可重新开启确认弹窗。`,description:`永久允许操作标题下的说明。`},"settings.localToolsRevoke":{message:`撤销`,description:`撤销单条永久授权的按钮。`},"settings.localToolsRevokeAll":{message:`全部撤销`,description:`撤销所有永久授权的按钮。`},"settings.localToolsNoGrants":{message:`暂无永久允许的操作。每次执行本地工具前都会先征求你的同意。`,description:`永久允许操作列表的空状态。`},"settings.localToolsPermsTitle":{message:`系统权限`,description:`macOS 系统权限区块的标题。`},"settings.localToolsPermsHint":{message:`可选。上面的文件夹访问无需这些权限——只授予某个任务真正需要的。`,description:`系统权限标题下的说明。`},"settings.localToolsPermFullDisk":{message:`完全磁盘访问权限`,description:`macOS 完全磁盘访问权限行。`},"settings.localToolsPermScreen":{message:`屏幕录制`,description:`macOS 屏幕录制权限行。`},"settings.localToolsPermAccessibility":{message:`辅助功能`,description:`macOS 辅助功能权限行。`},"settings.localToolsGranted":{message:`已授权`,description:`系统权限已授权时的状态标签。`},"settings.localToolsNotGranted":{message:`未授权`,description:`系统权限未授权时的状态标签。`},"settings.localToolsOpen":{message:`打开`,description:`打开对应 macOS 系统设置面板的按钮。`},"settings.subsites":{message:`我的分站`,description:`设置弹窗中分站管理 tab 的标题。仅在 official 主站可见,分站不显示。`},"settings.adminOnlyHint":{message:`此栏目仅站点管理员可见,普通用户无法访问。`,description:`在站点设置 / SEO 设置 / 分发设置 / 功能设置 等仅管理员可见的设置 tab 顶部展示的提示语。`},"settings.officialOnlyHint":{message:`此栏目仅主站可见,分站不会显示。`,description:`在『我的分站』tab 顶部展示的提示语,说明该入口只在 official 主站出现。`},"settings.customDomain":{message:`自定义域名`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`一键搭建`,description:`关于页面中『一键搭建分站』按钮的文本,仅 official 主站显示`},"settings.poweredBy":{message:`开源项目`,description:`关于页面中展示本站基于哪个开源项目搭建的标题`},"settings.poweredByTip":{message:`本站基于 Nexior 开源项目搭建,代码完全开源。`,description:`关于页面中展示本站基于哪个开源项目的说明`},"settings.apiService":{message:`API 服务`,description:`关于页面中展示API服务提供方的标题`},"settings.apiServiceTip":{message:`本站 API 服务由 Ace Data Cloud 提供。`,description:`关于页面中展示API服务提供方的说明`},"settings.buildYourOwn":{message:`搭建同款`,description:`关于页面中提示用户可以搭建同款站点的标题`},"settings.buildYourOwnTip":{message:`想搭建同样的 AI 站点?联系我们获取部署支持。`,description:`关于页面中搭建同款的说明`},"settings.contactUs":{message:`联系客服`,description:`联系客服按钮的文本`},"message.viewOnGithub":{message:`在 GitHub 上查看`,description:`在GitHub上查看项目的链接文本`},"title.notFound":{message:`页面走丢了`,description:`404 页面的标题`},"message.notFound":{message:`你访问的页面不存在,可能链接已经更换或被移除。回首页继续探索 AceData 的 AI 服务吧。`,description:`404 页面的副标题描述`},"message.notFoundEyebrow":{message:`出错啦`,description:`404 页面顶部小标签文本`},"message.notFoundPath":{message:`请求路径`,description:`404 页面展示当前请求路径的标签`},"button.backToHome":{message:`返回首页`,description:`按钮文本,用于跳转回首页`},"button.goBack":{message:`返回上一页`,description:`按钮文本,用于返回浏览历史的上一页`},"title.apiCode":{message:`本次请求对应的 API 代码`,description:`对话框标题:展示当前结果对应的 curl / Python / Node API 调用代码`},"message.viewCodeHint":{message:`查看本次请求对应的 API 代码`,description:`结果卡片操作按钮(U1/U2/下载/扩展…)旁边的 View Code 按钮的悬浮提示。点击按钮会弹出对话框,展示 curl / Python / Node 三种语言下与当前结果等价的 API 调用代码。`},"button.viewCode":{message:`查看代码`,description:`按钮文本:打开对话框,展示当前结果对应的 curl / Python / Node API 调用代码(类似 OpenAI Playground 的 View code)`},"button.getApiKey":{message:`获取 API Key`,description:`API 代码对话框底部的链接文本:点击后跳转到平台控制台用于创建 API Key 的页面`},"button.apiPlatform":{message:`API 平台`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`在你自己的代码里运行下面任意一段即可复现当前结果。`,description:`API code dialog: short hint shown above the language tabs. Explains that the snippet below reproduces the current result when run from the user's own code.`},"tab.apiRequest":{message:`请求`,description:`API code dialog tab label for the request snippet (the code that reproduces the current result).`},"tab.apiResponse":{message:`响应`,description:`API code dialog tab label for the live response returned after clicking Run.`},"button.apiRun":{message:`再次运行`,description:`API code dialog button that re-runs the request live against the API using the user's key. The result already exists, so clicking runs it again, and it is billable.`},"button.apiRunning":{message:`运行中…`,description:`API code dialog Run button label while the live request is in flight.`},"button.apiRunConfirm":{message:`确认运行`,description:`Confirm-button label in the dialog that warns running here consumes extra credits.`},"button.viewDocs":{message:`查看文档`,description:`API code dialog footer button that opens the matching API documentation page on the platform.`},"message.apiClickRun":{message:`点击「再次运行」即可使用你的 API Key 实时执行本次请求。`,description:`API code dialog Response tab empty state, shown before the user has run the request.`},"message.apiRunConfirmTitle":{message:`确认运行`,description:`Title of the confirmation dialog shown before re-running a request from the API code dialog.`},"message.apiRunConfirmDesc":{message:`本次运行会用你的 API Key 真实调用接口并额外消耗积分,确认继续吗?`,description:`Body of the confirmation dialog warning that re-running the request is a real, billable API call.`},"message.apiRunConfirmSkip":{message:`不再提示`,description:`Checkbox in the run-confirmation dialog that, when ticked, suppresses the warning on subsequent runs.`},"message.apiRunTaskCreated":{message:`任务已创建,关闭此窗口即可在下方查看最新结果。`,description:`Success banner shown in the API code dialog after a run returns a task id, hinting that the new task already appears in the list behind the dialog.`},"button.apiViewLatest":{message:`关闭并查看`,description:`Button in the API code dialog success banner that closes the dialog so the user can see the newly created task in the list below.`},"message.uploadInProgress":{message:`参考文件正在上传,请稍候再生成`,description:`用户在参考图/视频/音频还未上传完成时点击生成按钮,会弹出的轻量提示,要求用户等待上传完成后再次点击生成。`},"appUpgrade.title":{message:`需要升级`,description:`原生 App 启动时的版本闸门弹窗标题。当客户端版本低于服务端要求时显示,告知用户需要升级 App。`},"appUpgrade.blockMessage":{message:`当前版本过低,请前往应用商店更新到最新版本后再使用。`,description:`强制升级弹窗正文。当客户端版本低于 min_supported 时显示,无法关闭,唯一按钮跳转到应用商店。`},"appUpgrade.softMessage":{message:`有新版本可用,建议前往应用商店更新以获得最佳体验。`,description:`可选升级提示正文。当客户端版本低于 latest 但高于 min_supported 时显示,用户可以选择稍后再说继续使用。`},"appUpgrade.openStore":{message:`前往更新`,description:`升级弹窗主按钮:在系统浏览器中打开 App Store / Play Store 链接。`},"appUpgrade.later":{message:`稍后再说`,description:`软提示升级弹窗的次按钮:忽略本次提示继续使用,仅在非强制升级场景出现。`},"nav.maestro":{message:`Maestro`,description:`导航栏中 Maestro 文章转视频页面的文字,保持为 'Maestro'`},"nav.digitalhuman":{message:`数字人`,description:`导航栏中数字人口播页面的文字`},"settings.localToolsAndroidPermHint":{message:`启用无障碍服务后,AI 助手才能查看并操作你的屏幕。你可以在下方逐项提前授权具体操作。`,description:`Android 设置里 Computer Use 无障碍权限区块的说明。`},"settings.cuConsentTitle":{message:`允许操作?`,description:`按需授权对话框的标题(模型请求执行某个屏幕操作时弹出)。`},"settings.cuConsentMessage":{message:`AI 助手想在你的手机上执行「{action}」操作,是否允许?`,description:`按需授权对话框正文;{action} 为具体的 computer.* 操作名。`},"settings.cuConsentAllow":{message:`允许一次`,description:`按需授权对话框的允许按钮。`},"settings.cuConsentAlways":{message:`总是允许`,description:`按需授权对话框的总是允许按钮;持久化授权,此操作以后不再询问。`},"settings.cuConsentDeny":{message:`拒绝`,description:`按需授权对话框的拒绝按钮。`}};export{e as default};