@acedatacloud/nexior 3.289.2 → 3.289.4
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.
- package/dist/assets/{ApiCodeButton-DQxU3p1V.js → ApiCodeButton-CKegFgiT.js} +1 -1
- package/dist/assets/{AskUserQuestionCard-_fsdzzJk.js → AskUserQuestionCard-cuIv6K33.js} +1 -1
- package/dist/assets/{Auth-BjuTHO5f.js → Auth-BhfIcI4T.js} +1 -1
- package/dist/assets/{Bare-DA4zhr9C.js → Bare-Bvah1GiV.js} +1 -1
- package/dist/assets/{BotPlaceholder-DvPHgYBu.js → BotPlaceholder-NtHxC6P3.js} +1 -1
- package/dist/assets/{BottomFooter-CnHkbDxs.js → BottomFooter-cUTRk7VC.js} +1 -1
- package/dist/assets/{Callback-BBXW-Mf2.js → Callback-CiUUK5tq.js} +1 -1
- package/dist/assets/{CodeSnippet-iBN7od85.js → CodeSnippet-Bj40_a1y.js} +1 -1
- package/dist/assets/{Console-COAHnQ2m.js → Console-3eM3G9Rd.js} +1 -1
- package/dist/assets/{Consumption-D95jv4pS.js → Consumption-BbL_KgZ5.js} +1 -1
- package/dist/assets/{Conversation-C-FAWXBB.css → Conversation-B18kdZd3.css} +1 -1
- package/dist/assets/Conversation-B8Dsz_c7.js +3 -0
- package/dist/assets/{CopyToClipboard-BL1mORNs.js → CopyToClipboard-BzpnSsAk.js} +1 -1
- package/dist/assets/{Detail-CDuGklua.js → Detail-DbsbXhfU.js} +2 -2
- package/dist/assets/{Extra-D9VSjU1j.js → Extra-Bkn7g78F.js} +1 -1
- package/dist/assets/{FilePreview-BEZOXlaf.js → FilePreview-BxmWR1SI.js} +1 -1
- package/dist/assets/{Hailuo-BFyFyZXH.js → Hailuo-BED8y1ml.js} +1 -1
- package/dist/assets/{History-BuSm3Aox.js → History-C01VOYP5.js} +1 -1
- package/dist/assets/{ImagePreview-zIkpquFk.js → ImagePreview-DFHmjadL.js} +1 -1
- package/dist/assets/{ImageWrapper-DLyrD-qP.js → ImageWrapper-BQfQr_vF.js} +1 -1
- package/dist/assets/{Index-C4OwzrLq.js → Index-5qcbf8JC.js} +1 -1
- package/dist/assets/{Index-_zFwtt2E.js → Index-AFSv7Aee.js} +1 -1
- package/dist/assets/{Index-Nw23hsXf.js → Index-B286_Ad_.js} +1 -1
- package/dist/assets/{Index-C51GTzts.js → Index-BGL48uVF.js} +1 -1
- package/dist/assets/Index-BMCxVhay.js +1 -0
- package/dist/assets/{Index-B7VwtY37.js → Index-BQdjDvsS.js} +1 -1
- package/dist/assets/{Index-BmW70yMa.js → Index-BhosAgRm.js} +1 -1
- package/dist/assets/{Index-CnUF5QbR.js → Index-BnCAiHZk.js} +1 -1
- package/dist/assets/Index-BrdEcA1S.js +1 -0
- package/dist/assets/{Index-I8Vt5aeW.js → Index-BtwpsTKd.js} +1 -1
- package/dist/assets/{Index-D2Na-BQR.js → Index-Bz2wJiXm.js} +1 -1
- package/dist/assets/{Index-B1EQsBi1.js → Index-C4zeBrBp.js} +1 -1
- package/dist/assets/{Index-BiOs4Hqf.js → Index-CJuB1rQc.js} +1 -1
- package/dist/assets/{Index-C5R_QgA1.js → Index-CLQp7OwZ.js} +1 -1
- package/dist/assets/{Index-DpCMpM2l.js → Index-CSafNM9p.js} +1 -1
- package/dist/assets/{Index-BsWj44Fd.js → Index-CaUvnoF1.js} +1 -1
- package/dist/assets/{Index-C4r1VOiB.js → Index-CtrHbzVR.js} +1 -1
- package/dist/assets/{Index-Bd5I3MCT.js → Index-D-eDF53L.js} +1 -1
- package/dist/assets/{Index-DUYECAtg.js → Index-DLZhAsqd.js} +1 -1
- package/dist/assets/{Index-CiOSjS-T.js → Index-DQ3oqtxc.js} +1 -1
- package/dist/assets/{Index-GacJQbcB.js → Index-Dcds3wmi.js} +1 -1
- package/dist/assets/{Index-D87OPBu2.js → Index-Ds0a-kpt.js} +1 -1
- package/dist/assets/{Index-BCypCPtg.js → Index-Dtdh9N8X.js} +1 -1
- package/dist/assets/Index-DvOeizYy.css +1 -0
- package/dist/assets/{Index--Di4DRIN.js → Index-JKFo56PB.js} +1 -1
- package/dist/assets/{Index-u78A7vTY.js → Index-aXU8V2su.js} +1 -1
- package/dist/assets/{Index-CGb6bPsm.js → Index-fBp1xSAS.js} +1 -1
- package/dist/assets/{Index-BMxT2jqV.js → Index-g4OoXCwt.js} +1 -1
- package/dist/assets/{Index-DJ7_bTu9.js → Index-gr-eBuSf.js} +1 -1
- package/dist/assets/{InfoIcon-BBrKSUP1.js → InfoIcon-8kSvhP3Y.js} +1 -1
- package/dist/assets/{Invitees-w3hBfQZC.js → Invitees-CAKf-Fmq.js} +1 -1
- package/dist/assets/{List-CzubbkM6.js → List-BpbCdQwn.js} +1 -1
- package/dist/assets/{List-BWlDWaOO.js → List-CgEXDEdf.js} +1 -1
- package/dist/assets/{List-Bw7uMGtt.js → List-DAehmhE1.js} +1 -1
- package/dist/assets/{Main-D7rBaiRv.js → Main-CCUW9umt.js} +1 -1
- package/dist/assets/{Model-D_Ke6gxC.js → Model-DPp66yP0.js} +1 -1
- package/dist/assets/{Navigator-ahAXaBeM.js → Navigator-D07GwS2_.js} +2 -2
- package/dist/assets/{NoTasks-C9K3EXND.js → NoTasks-DMTqKms5.js} +1 -1
- package/dist/assets/{NotFound-Bj3udVtD.js → NotFound-BRe6nw25.js} +1 -1
- package/dist/assets/{Pagination-BUpWBV2d.js → Pagination-rdR_oR-a.js} +1 -1
- package/dist/assets/{Pay-BW90DwOt.js → Pay-d_TfxQWP.js} +1 -1
- package/dist/assets/{Player-pHjz1W4z.js → Player-DaGEH1D3.js} +1 -1
- package/dist/assets/{PromptTextarea-BUwjXqO4.js → PromptTextarea-DW6mJHr0.js} +1 -1
- package/dist/assets/{RealtimeCall-CK-iQL1W.js → RealtimeCall-B47P-pNd.js} +1 -1
- package/dist/assets/{ScheduledTasks-BHcQEyJd.js → ScheduledTasks-D4Y7jOZi.js} +1 -1
- package/dist/assets/{Status-C1u8ZdIT.js → Status-Bp9U8vTp.js} +1 -1
- package/dist/assets/{Subscribe-Ct8bWJ5w.js → Subscribe-NnYil_We.js} +1 -1
- package/dist/assets/{TabSwitcher-Bz1bIFdu.js → TabSwitcher-BWGS56Ap.js} +1 -1
- package/dist/assets/{Tts-Bu08QjnH.js → Tts-DXsk-A5H.js} +1 -1
- package/dist/assets/{VideoPlayer-UsP-0qkV.js → VideoPlayer-B0cs5ycA.js} +1 -1
- package/dist/assets/{avatar-Cj9dW7Ww.js → avatar-D92iqtJR.js} +1 -1
- package/dist/assets/{basic-CvLWMHMM.js → basic-BVzlryUQ.js} +1 -1
- package/dist/assets/{chat-by5ztkzk.js → chat-B9pkX5hl.js} +1 -1
- package/dist/assets/{codingBridge-CgH0BSvz.js → codingBridge-DSj9oZfy.js} +1 -1
- package/dist/assets/{codingBridgeNotify-BU8SmGZU.js → codingBridgeNotify-ZHbkOwZw.js} +2 -2
- package/dist/assets/{collapse-xGd3pyq9.js → collapse-BUmaj8wl.js} +1 -1
- package/dist/assets/common-53zVLrH2.js +1 -0
- package/dist/assets/common-BI4DuABj.js +1 -0
- package/dist/assets/common-BLUyNJBH.js +1 -0
- package/dist/assets/common-BSltieDS.js +1 -0
- package/dist/assets/common-BVThukPJ.js +1 -0
- package/dist/assets/common-BVpfn9Kz.js +1 -0
- package/dist/assets/common-BZExpWUc.js +1 -0
- package/dist/assets/common-BdwXQjnl.js +1 -0
- package/dist/assets/common-Bnni4pbN.js +1 -0
- package/dist/assets/common-BoBuTXOL.js +1 -0
- package/dist/assets/common-CRkhqWDt.js +1 -0
- package/dist/assets/common-CXTs99X9.js +1 -0
- package/dist/assets/common-CYyfKbUf.js +1 -0
- package/dist/assets/common-C_S0XFA0.js +1 -0
- package/dist/assets/common-CbTfvatG.js +1 -0
- package/dist/assets/common-CwbA7v68.js +1 -0
- package/dist/assets/common-D8vjgqTE.js +1 -0
- package/dist/assets/common-gRpE0HjM.js +1 -0
- package/dist/assets/{constants-C0JMy8iD.js → constants-DQgjIP2J.js} +1 -1
- package/dist/assets/{createTaskActions-DI0NJWBu.js → createTaskActions-yYyoEq9H.js} +1 -1
- package/dist/assets/{date-picker-BhBGrOUq.js → date-picker-Djxzowsx.js} +1 -1
- package/dist/assets/{digitalhuman-DOY2236l.js → digitalhuman-DJ19vXUJ.js} +1 -1
- package/dist/assets/{dropdown-DZpjj-Rs.js → dropdown-BV-hojzm.js} +1 -1
- package/dist/assets/{esm-C-HDFuKN.js → esm-BL58kVCH.js} +3 -3
- package/dist/assets/{esm-Deg9Wa0D.js → esm-BMmL0k1K.js} +1 -1
- package/dist/assets/{esm-DWeQRUZj.js → esm-BZKffwt4.js} +1 -1
- package/dist/assets/{esm-DijpuTNM.js → esm-C9pC-t53.js} +2 -2
- package/dist/assets/{esm-HA1JA2fF.js → esm-CFWRaLv3.js} +2 -2
- package/dist/assets/{esm-D_1St_9v.js → esm-Ck3Ysqye.js} +1 -1
- package/dist/assets/esm-DKuNqdeL.js +1 -0
- package/dist/assets/{fish-BjP6jnwc.js → fish-BtOrrPOW.js} +1 -1
- package/dist/assets/{flux-BdQ1qA4r.js → flux-TlzLRIa-.js} +1 -1
- package/dist/assets/{grokvideo-CYF2AYWm.js → grokvideo-bLT55M-N.js} +1 -1
- package/dist/assets/{hailuo--uwD9OrX.js → hailuo-CLT3CwCX.js} +1 -1
- package/dist/assets/{headshots-DGQU6Q-3.js → headshots-B30bejlO.js} +1 -1
- package/dist/assets/{image-cD_rczcG.js → image-DCSn_Z2R.js} +1 -1
- package/dist/assets/{index-BFMUZID8.js → index-cECZXQLF.js} +5 -5
- package/dist/assets/{index.browser.esm-CGvs9PzG.js → index.browser.esm-SVA6CYqe.js} +1 -1
- package/dist/assets/{index.es-BxSKbWOt.js → index.es-B25gjst-.js} +1 -1
- package/dist/assets/{input-number-tzY4HiGI.js → input-number-D0EyjjMW.js} +1 -1
- package/dist/assets/{kling-BFj34n5k.js → kling-BEDIFGDm.js} +1 -1
- package/dist/assets/{luma-BRJDkqJM.js → luma-CmOoi9ML.js} +1 -1
- package/dist/assets/{maestro-DKLeZ-nz.js → maestro-By1c7uLt.js} +1 -1
- package/dist/assets/{midjourney-BoGy-GDG.js → midjourney-55SEJbvQ.js} +1 -1
- package/dist/assets/{nanobanana-DhZ4A6WZ.js → nanobanana-DIKNGlu3.js} +1 -1
- package/dist/assets/{openaiimage-C3frHrwN.js → openaiimage-BrkNbEyf.js} +1 -1
- package/dist/assets/{pagination-YjZU0Dg4.js → pagination-D_81JXYH.js} +1 -1
- package/dist/assets/{sora-bQxUxWU6.js → pika-DDk-Y4lV.js} +1 -1
- package/dist/assets/{pixverse-56yKtA8m.js → pixverse-kO0D4xaK.js} +1 -1
- package/dist/assets/{popover-DbNgPoS9.js → popover-Bkcm8Xds.js} +1 -1
- package/dist/assets/{producer-BLkdYpt6.js → producer-Cx9bVBGF.js} +1 -1
- package/dist/assets/{qrart-wXX8LUVV.js → qrart-DI0NEWTm.js} +1 -1
- package/dist/assets/{realtime-BIdawpiQ.js → realtime-B--73AYX.js} +1 -1
- package/dist/assets/{row-DlvBQzWK.js → row-BivCQFau.js} +1 -1
- package/dist/assets/{seedance-CtloET6U.js → seedance-CynKQJhd.js} +1 -1
- package/dist/assets/{seedream-B7rdxiGp.js → seedream-D4-Pns4C.js} +1 -1
- package/dist/assets/{select-BvQYOmI2.js → select-C_MuXSP3.js} +1 -1
- package/dist/assets/{serp-BvX9KhDc.js → serp-ByPCvMfB.js} +1 -1
- package/dist/assets/{slider-CNdYtBG_.js → slider-CbgjSlr9.js} +1 -1
- package/dist/assets/{solana-wallets-D_6Mb4vc.js → solana-wallets-CmUoEtVV.js} +2 -2
- package/dist/assets/{solana-wallets-vue-B9hDVbte.js → solana-wallets-vue-Bafv9Hpg.js} +1 -1
- package/dist/assets/{pika-D1CZ0eCO.js → sora-DRdxyUv9.js} +1 -1
- package/dist/assets/{suno-zSMi4ogm.js → suno-D6iaFo8Z.js} +1 -1
- package/dist/assets/{switch-BtUhB-pq.js → switch-x0jLgjzo.js} +1 -1
- package/dist/assets/{tabs-D7p5AwFu.js → tabs-BmG9wvwg.js} +1 -1
- package/dist/assets/{time-picker-BLbcHWfz.js → time-picker-B8DRO-8k.js} +1 -1
- package/dist/assets/{upload-DPeZOsKX.js → upload-CwEIZpfb.js} +1 -1
- package/dist/assets/{veo-DyaBY7d0.js → veo-CuEDuhk4.js} +1 -1
- package/dist/assets/{wan-DTDtcl3w.js → wan-D_HCBf1Z.js} +1 -1
- package/dist/assets/{web-CnZTtwly.js → web-BiN-UM_F.js} +1 -1
- package/dist/assets/{web-UR7VOK2c.js → web-BtgmeOUk.js} +1 -1
- package/dist/assets/{web-TTAsplpF.js → web-DUjxttao.js} +1 -1
- package/dist/assets/{web-BcOGtjgm.js → web-Dls3sZ8l.js} +1 -1
- package/dist/assets/{web-CQ_ZJtNl.js → web-olmn6rbh.js} +1 -1
- package/dist/assets/{webextrator-rRvfBwe4.js → webextrator-BNT5OpvW.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/Conversation-DPi171hQ.js +0 -3
- package/dist/assets/Index-C3qmNevD.js +0 -1
- package/dist/assets/Index-CNeokgsr.css +0 -1
- package/dist/assets/Index-Cx4jXVdU.js +0 -1
- package/dist/assets/common-B76cxah0.js +0 -1
- package/dist/assets/common-BDzmxVhK.js +0 -1
- package/dist/assets/common-BH5G8_pM.js +0 -1
- package/dist/assets/common-BVCCUoiE.js +0 -1
- package/dist/assets/common-Bi_ZAegY.js +0 -1
- package/dist/assets/common-BsEFCCwY.js +0 -1
- package/dist/assets/common-C4Na18aX.js +0 -1
- package/dist/assets/common-CAEfzF_7.js +0 -1
- package/dist/assets/common-CTEHh7S3.js +0 -1
- package/dist/assets/common-C_dzzej1.js +0 -1
- package/dist/assets/common-CwXUOFLg.js +0 -1
- package/dist/assets/common-DedARFiR.js +0 -1
- package/dist/assets/common-DmckMetn.js +0 -1
- package/dist/assets/common-E5EtxTvE.js +0 -1
- package/dist/assets/common-UUPAf4By.js +0 -1
- package/dist/assets/common-beZhz1X_.js +0 -1
- package/dist/assets/common-kb5T6I3F.js +0 -1
- package/dist/assets/common-rae8Zh5w.js +0 -1
- package/dist/assets/esm-Cg7ruQE0.js +0 -1
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime--c01j_DQ.js";import{$ as e,A as t,D as n,E as r,F as i,N as a,O as o,P as s,S as c,Ut as l,Vt as u,Wt as d,Z as f,_ as p,b as m,bt as h,ct as g,dt as _,et as v,k as y,nt as b,tt as x,ut as S,v as C,y as w}from"./vendor-chart-BJCvKk8-.js";import{t as T}from"./button-BydTr5nV.js";import{I as E,S as D,_ as O,nt as k,w as A}from"./use-deprecated-B-NFNg3W.js";import{t as j}from"./upload-DPeZOsKX.js";import{t as M}from"./tooltip-BxeH2Vts.js";import{t as N}from"./image-cD_rczcG.js";import{n as ee,t as te}from"./checkbox-BC1X4B2U.js";import{t as ne}from"./drawer-R6pcaap2.js";import{n as P,r as F,t as I}from"./dropdown-DZpjj-Rs.js";import{t as re}from"./popover-DbNgPoS9.js";import{t as ie}from"./skeleton-BwNBivMN.js";import{t as ae}from"./vendor-axios-Ck2ffRoh.js";import{$i as oe,Ci as se,Ei as ce,Fi as L,Hi as le,Ii as R,Qi as ue,Si as de,Ti as fe,aa as pe,bi as me,ca as he,ea as ge,ia as z,na as _e,oa as ve,sa as ye,ta as be,vi as xe,wi as Se,xi as Ce}from"./constants-C0JMy8iD.js";import{$t as we,Ar as B,Bn as V,Br as H,E as U,Er as W,Ft as Te,Ht as Ee,I as De,Ir as Oe,Jt as ke,Kt as Ae,Ln as G,Lt as je,M as Me,Mr as K,Nr as Ne,Nt as Pe,Qt as Fe,Ur as q,Vt as Ie,k as Le,qr as Re,vr as ze}from"./index-BFMUZID8.js";import"./vendor-highlight-BtIeKitL.js";import{t as J}from"./index.es-BxSKbWOt.js";import{t as Be}from"./CopyToClipboard-BL1mORNs.js";import{n as Ve,t as He}from"./AskUserQuestionCard-_fsdzzJk.js";import{t as Ue}from"./FilePreview-BEZOXlaf.js";import{t as We}from"./ImagePreview-zIkpquFk.js";var Ge=i({name:`AnsweringMark`,data(){return{}},computed:{conversationId(){return this.$route.params?.id?.toString()}}}),Ke={class:`mark`};function qe(e,n,r,i,a,o){return f(),t(`div`,Ke)}var Je=U(Ge,[[`render`,qe]]),Ye=i({name:`CitationCard`,components:{FontAwesomeIcon:J},props:{citation:{type:Object,required:!0}},data(){return{iconFailed:!1}},computed:{displayUrl(){try{let e=new URL(this.citation.url);return e.host+(e.pathname&&e.pathname!==`/`?e.pathname:``)}catch{return this.citation.url}},hostLabel(){try{return new URL(this.citation.url).host.replace(/^www\./,``)}catch{return``}},resolvedIcon(){if(this.iconFailed)return``;if(this.citation.icon)return this.citation.icon;try{let e=new URL(this.citation.url).host;return e?`https://www.google.com/s2/favicons?domain=${encodeURIComponent(e)}&sz=64`:``}catch{return``}},fallbackIcon(){let e=(this.citation.type||``).toLowerCase();return e===`file`?`fa-solid fa-file-lines`:e===`page`?`fa-solid fa-file`:e===`issue`?`fa-solid fa-circle-dot`:e===`email`?`fa-solid fa-envelope`:e===`message`?`fa-solid fa-message`:e===`web`?`fa-solid fa-globe`:`fa-solid fa-link`}},methods:{onIconError(){this.iconFailed=!0}}}),Xe=[`href`],Ze={class:`head`},Qe=[`src`,`alt`],$e={key:2,class:`source`},et={key:0,class:`title`},tt={key:1,class:`snippet`},nt={class:`url`};function rt(e,r,i,a,s,c){let l=x(`font-awesome-icon`);return f(),t(`a`,{class:`citation-card`,href:e.citation.url,target:`_blank`,rel:`noopener noreferrer`},[n(`div`,Ze,[e.resolvedIcon?(f(),t(`img`,{key:0,src:e.resolvedIcon,alt:e.citation.source||``,class:`icon`,referrerpolicy:`no-referrer`,loading:`lazy`,onError:r[0]||=(...t)=>e.onIconError&&e.onIconError(...t)},null,40,Qe)):(f(),o(l,{key:1,icon:e.fallbackIcon,class:`icon-fallback`},null,8,[`icon`])),e.citation.source||e.hostLabel?(f(),t(`span`,$e,d(e.citation.source||e.hostLabel),1)):y(``,!0)]),e.citation.title?(f(),t(`div`,et,d(e.citation.title),1)):y(``,!0),e.citation.snippet?(f(),t(`div`,tt,d(e.citation.snippet),1)):y(``,!0),n(`div`,nt,d(e.displayUrl),1)],8,Xe)}var it=U(Ye,[[`render`,rt],[`__scopeId`,`data-v-36c9d5dc`]]),at=/\[\^acite:([A-Za-z0-9_-]{1,32})\]/g,ot=i({name:`MarkdownRenderer`,directives:{highlight:Ie},components:{VueMarkdown:Ve,CitationCard:it,ElPopover:re},props:{content:{type:String,required:!1,default:``},citations:{type:Object,required:!1,default:()=>({})}},data(){return{hoveredCitation:null,popoverAnchor:null,popoverVisible:!1}},computed:{enrichedContent(){let e=this.content||``;if(!e.includes(`[^acite:`))return e;let t=this.citations||{};return e.replace(at,(e,n)=>{let r=t[n];return r?ct(n,r):``})}},methods:{onChipHover(e){let t=e.target;if(!t)return;let n=t.closest(`.citation-chip`);if(!n){this.popoverVisible=!1;return}let r=n.dataset.citationId;if(!r)return;let i=(this.citations||{})[r];i&&(this.hoveredCitation=i,this.popoverAnchor=n,this.popoverVisible=!0)},onChipLeave(){this.popoverVisible=!1}}});function st(e){let t=e.source||(()=>{try{return new URL(e.url).host.replace(/^www\./,``)}catch{return``}})()||e.title||`source`;return t.length>24?t.slice(0,23)+`…`:t}function Y(e){return e.replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`)}function ct(e,t){let n=Y(e),r=Y(t.title||t.source||t.url||e),i=Y(st(t)),a=t.url?` href="${Y(t.url)}"`:``;return[`<span class="citation-chip" data-citation-id="${n}" title="${r}">`,`<a class="citation-chip__link"${a} target="_blank" rel="noopener noreferrer" tabindex="-1">`,`<span class="citation-chip__label">${i}</span>`,`</a>`,`</span>`].join(``)}var lt={class:`markdown-with-citations`};function ut(e,n,r,i,a,c){let l=x(`vue-markdown`),u=x(`citation-card`),d=x(`el-popover`),p=b(`highlight`);return f(),t(`div`,lt,[_(s(l,{source:e.enrichedContent,class:`markdown-body bg-transparent pt-[3px] text-[inherit]`,onMouseover:e.onChipHover,onMouseleave:e.onChipLeave},null,8,[`source`,`onMouseover`,`onMouseleave`]),[[p]]),e.hoveredCitation&&e.popoverAnchor?(f(),o(d,{key:0,"virtual-ref":e.popoverAnchor,"virtual-triggering":``,trigger:`hover`,visible:e.popoverVisible,placement:`top`,width:340,"popper-class":`citation-popover`,"show-arrow":!0,"hide-after":120},{default:S(()=>[s(u,{citation:e.hoveredCitation},null,8,[`citation`])]),_:1},8,[`virtual-ref`,`visible`])):y(``,!0)])}var dt=U(ot,[[`render`,ut],[`__scopeId`,`data-v-f3f2e7ba`]]),ft=i({name:`CopyToClipboard`,components:{FontAwesomeIcon:J,ElTooltip:M},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:[`restart`],data(){return{copied:!1}},methods:{onRestart(){this.$emit(`restart`)}}});function pt(e,t,n,r,i,a){let c=x(`font-awesome-icon`),l=x(`el-tooltip`);return f(),o(l,{effect:`dark`,content:e.$t(`common.button.restart`),placement:`bottom`},{default:S(()=>[s(c,{icon:`fa-solid fa-sync`,class:`icon-sync`,onClick:e.onRestart},null,8,[`onClick`])]),_:1},8,[`content`])}var mt=U(ft,[[`render`,pt],[`__scopeId`,`data-v-90e169cb`]]),ht=i({name:`EditMessage`,components:{FontAwesomeIcon:J,ElTooltip:M},props:{messages:{type:Array,required:!1,default:()=>[]}},emits:[`click`],data(){return{copied:!1}},methods:{onEdit(){this.$emit(`click`)}}});function gt(e,n,r,i,a,o){let c=x(`font-awesome-icon`),l=x(`el-tooltip`);return f(),t(`span`,null,[s(l,{effect:`dark`,content:e.$t(`common.button.restart`),placement:`bottom`},{default:S(()=>[s(c,{icon:`fa-solid fa-edit`,class:`icon icon-edit`,onClick:e.onEdit},null,8,[`onClick`])]),_:1},8,[`content`])])}var _t=U(ht,[[`render`,gt],[`__scopeId`,`data-v-8e947e8f`]]),vt={code_execute:`Running code`,web_search:`Searching the web`,image_generate:`Generating image`,video_generate:`Generating video`,music_generate:`Generating music`},yt=i({name:`ToolActivity`,components:{Loading:E,CircleCheckFilled:D,CircleCloseFilled:A,ArrowRight:O},props:{item:{type:Object,required:!0}},data(){return{expanded:!1}},computed:{displayName(){if(this.item.tool_display_name)return this.item.tool_display_name;let e=this.item.tool_name||``;return vt[e]||e.replace(/_/g,` `)},inputText(){return this.item.input?this.item.tool_name===`code_execute`?this.item.input.code||``:this.item.tool_name===`web_search`?this.item.input.query||``:JSON.stringify(this.item.input,null,2):``}}}),bt={class:`tool-icon`},xt={class:`tool-name`},St={key:0,class:`tool-duration`},Ct={key:0,class:`tool-body`},wt={key:0,class:`tool-section`},Tt={class:`tool-code`},Et={key:1,class:`tool-section`},Dt={class:`tool-code`};function Ot(e,r,i,a,c,l){let p=x(`Loading`),m=x(`el-icon`),h=x(`CircleCloseFilled`),g=x(`CircleCheckFilled`),_=x(`ArrowRight`);return f(),t(`div`,{class:u([`tool-activity`,{"is-error":e.item.is_error,"is-running":e.item.status===`running`}])},[n(`div`,{class:`tool-header`,onClick:r[0]||=t=>e.expanded=!e.expanded},[n(`span`,bt,[e.item.status===`running`?(f(),o(m,{key:0,class:`is-loading`},{default:S(()=>[s(p)]),_:1})):e.item.is_error?(f(),o(m,{key:1,color:`var(--el-color-danger)`},{default:S(()=>[s(h)]),_:1})):(f(),o(m,{key:2,color:`var(--el-color-success)`},{default:S(()=>[s(g)]),_:1}))]),n(`span`,xt,d(e.displayName),1),e.item.duration_ms?(f(),t(`span`,St,d(e.item.duration_ms)+`ms`,1)):y(``,!0),s(m,{class:u([`tool-expand`,{rotated:e.expanded}])},{default:S(()=>[s(_)]),_:1},8,[`class`])]),e.expanded?(f(),t(`div`,Ct,[e.inputText?(f(),t(`div`,wt,[r[1]||=n(`div`,{class:`tool-section-label`},`Input`,-1),n(`pre`,Tt,d(e.inputText),1)])):y(``,!0),e.item.output?(f(),t(`div`,Et,[r[2]||=n(`div`,{class:`tool-section-label`},`Output`,-1),n(`pre`,Dt,d(e.item.output),1)])):y(``,!0)])):y(``,!0)],2)}var kt=U(yt,[[`render`,Ot],[`__scopeId`,`data-v-5a4f0ac9`]]),At=i({name:`EntityCard`,components:{ElImage:N,FontAwesomeIcon:J},props:{card:{type:Object,required:!0}},computed:{cardType(){let e=(this.card.type||``).toLowerCase();return e===`audio`||e===`image`?e:e===`video`||e===`embed`?`video`:this.card.mimeType?.startsWith(`audio/`)?`audio`:this.card.mimeType?.startsWith(`video/`)?`video`:this.card.mimeType?.startsWith(`image/`)?`image`:`file`},formattedDuration(){let e=this.card.duration??0;return!Number.isFinite(e)||e<=0?``:`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,`0`)}`},cleanFileName(){try{let e=new URL(this.card.url),t=e.pathname.split(`/`).filter(Boolean);return decodeURIComponent(t[t.length-1]||e.hostname)}catch{return this.card.url}},hostname(){try{return new URL(this.card.url).hostname}catch{return``}},fileIcon(){let e=(this.card.mimeType||``).toLowerCase();return e.includes(`pdf`)?`fa-solid fa-file-pdf`:e.includes(`word`)||e.includes(`msword`)?`fa-solid fa-file-word`:e.includes(`sheet`)||e.includes(`excel`)||e.includes(`csv`)?`fa-solid fa-file-excel`:e.includes(`zip`)||e.includes(`compressed`)?`fa-solid fa-file-zipper`:e.startsWith(`text/`)?`fa-solid fa-file-lines`:`fa-solid fa-file`}}}),jt={key:0,class:`audio-card`},Mt={key:0,class:`thumb`},Nt=[`src`,`alt`],Pt={class:`meta`},Ft=[`title`],It={key:1,class:`sub`},Lt=[`src`],Rt={class:`actions`},zt=[`href`],Bt={key:1,class:`video-card`},Vt={class:`frame`},Ht=[`src`,`title`],Ut={key:0,class:`meta`},Wt=[`title`],Gt={key:1,class:`sub`},Kt={key:2,class:`image-card`},qt=[`title`],Jt=[`href`,`title`],Yt={class:`info`},Xt={class:`title`},Zt={class:`sub`};function Qt(e,r,i,o,c,l){let p=x(`font-awesome-icon`),m=x(`el-image`);return f(),t(`div`,{class:u([`entity-card`,`entity-card--${e.cardType}`])},[e.cardType===`audio`?(f(),t(`div`,jt,[e.card.thumbnail?(f(),t(`div`,Mt,[n(`img`,{src:e.card.thumbnail,alt:e.card.title||``},null,8,Nt)])):y(``,!0),n(`div`,Pt,[e.card.title?(f(),t(`div`,{key:0,class:`title`,title:e.card.title},d(e.card.title),9,Ft)):y(``,!0),e.card.duration?(f(),t(`div`,It,d(e.formattedDuration),1)):y(``,!0),n(`audio`,{class:`player`,controls:``,preload:`metadata`,src:e.card.url},null,8,Lt),n(`div`,Rt,[n(`a`,{class:`download`,href:e.card.url,target:`_blank`,rel:`noopener noreferrer`},[s(p,{icon:`fa-solid fa-arrow-down`}),a(` `+d(e.$t(`common.button.download`)),1)],8,zt)])])])):e.cardType===`video`?(f(),t(`div`,Bt,[n(`div`,Vt,[n(`iframe`,{class:`player`,src:e.card.url,title:e.card.title||``,frameborder:`0`,loading:`lazy`,referrerpolicy:`strict-origin-when-cross-origin`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share`,allowfullscreen:``},null,8,Ht)]),e.card.title||e.card.duration?(f(),t(`div`,Ut,[e.card.title?(f(),t(`span`,{key:0,class:`title`,title:e.card.title},d(e.card.title),9,Wt)):y(``,!0),e.card.duration?(f(),t(`span`,Gt,d(e.formattedDuration),1)):y(``,!0)])):y(``,!0)])):e.cardType===`image`?(f(),t(`div`,Kt,[s(m,{src:e.card.url,alt:e.card.alt||e.card.title||``,fit:`contain`,class:`image`,"preview-src-list":[e.card.url],"initial-index":0,"hide-on-click-modal":!0,"preview-teleported":!0},{placeholder:S(()=>[...r[0]||=[n(`div`,{class:`image-placeholder`},null,-1)]]),error:S(()=>[...r[1]||=[n(`div`,{class:`image-placeholder image-placeholder--error`},null,-1)]]),_:1},8,[`src`,`alt`,`preview-src-list`]),e.card.title?(f(),t(`div`,{key:0,class:`caption`,title:e.card.title},d(e.card.title),9,qt)):y(``,!0)])):(f(),t(`a`,{key:3,class:`file-card`,href:e.card.url,target:`_blank`,rel:`noopener noreferrer`,title:e.card.title||e.card.url},[s(p,{class:`icon`,icon:e.fileIcon},null,8,[`icon`]),n(`div`,Yt,[n(`div`,Xt,d(e.card.title||e.cleanFileName),1),n(`div`,Zt,d(e.card.mimeType||e.hostname),1)]),s(p,{class:`open`,icon:`fa-solid fa-arrow-up-right-from-square`})],8,Jt))],2)}var $t=U(At,[[`render`,Qt],[`__scopeId`,`data-v-16d3b472`]]),en=i({name:`ThinkingBlock`,components:{ArrowRight:O,ElIcon:k,FontAwesomeIcon:J,MarkdownRenderer:dt},props:{content:{type:String,required:!0},done:{type:Boolean,default:!1}},setup(e){let{t}=le(),n=h(!1);return g(()=>e.done,e=>{e&&(n.value=!0)}),{collapsed:n,label:r(()=>e.done?t(`chat.thinking.done`):t(`chat.thinking.inProgress`))}}}),tn={class:`thinking-label`},nn={class:`thinking-content`};function rn(e,r,i,a,o,c){let l=x(`ArrowRight`),p=x(`el-icon`),m=x(`font-awesome-icon`),h=x(`markdown-renderer`);return f(),t(`div`,{class:u([`thinking-block`,{active:!e.done}])},[n(`div`,{class:`thinking-header`,onClick:r[0]||=t=>e.collapsed=!e.collapsed},[s(p,{class:u([`caret`,{"rotate-90":!e.collapsed}])},{default:S(()=>[s(l)]),_:1},8,[`class`]),s(m,{icon:`fa-solid fa-brain`,class:u([`brain`,{pulse:!e.done}])},null,8,[`class`]),n(`span`,tn,d(e.label),1)]),_(n(`div`,nn,[s(h,{content:e.content},null,8,[`content`])],512),[[C,!e.collapsed]])],2)}var an=U(en,[[`render`,rn],[`__scopeId`,`data-v-63e2d974`]]),on=i({name:`ConnectorEntryRow`,components:{ElButton:T,FontAwesomeIcon:J},props:{entry:{type:Object,required:!0},catalog:{type:Object,default:null},disabled:{type:Boolean,default:!1}},emits:[`authorize`],data(){return{logoError:!1}},computed:{fallbackName(){let e=this.entry.connector??``;return e.startsWith(`acedatacloud/`)?e.slice(13):e},displayName(){return this.catalog?.name?.trim()||this.fallbackName},iconUrl(){return this.logoError?``:this.catalog?.icon_url||``},secondaryText(){return this.entry.context&&this.entry.context.trim()?this.entry.context:this.catalog?.short_description||``}},watch:{"catalog.icon_url"(){this.logoError=!1}},methods:{onAuthorize(){this.$emit(`authorize`,this.entry)},onLogoError(){this.logoError=!0}}}),sn={class:`entry-icon`,"aria-hidden":`true`},cn=[`src`,`alt`],ln={class:`entry-text`},un={class:`entry-name`},dn={key:0,class:`entry-context`},fn={class:`entry-action`},pn={key:0,class:`status-pill connected`},mn={key:2,class:`status-pill unconnected`};function hn(e,r,i,s,c,l){let p=x(`font-awesome-icon`),m=x(`el-button`);return f(),t(`div`,{class:u([`connector-entry-row`,{"is-connected":e.entry.status===`connected`}])},[n(`div`,sn,[e.iconUrl?(f(),t(`img`,{key:0,src:e.iconUrl,class:`icon-logo`,alt:e.displayName,onError:r[0]||=(...t)=>e.onLogoError&&e.onLogoError(...t)},null,40,cn)):e.entry.status===`connected`?(f(),o(p,{key:1,icon:`fa-solid fa-circle-check`,class:`icon-connected`})):(f(),o(p,{key:2,icon:`fa-solid fa-plug`,class:`icon-unconnected`}))]),n(`div`,ln,[n(`div`,un,d(e.displayName),1),e.secondaryText?(f(),t(`div`,dn,d(e.secondaryText),1)):y(``,!0)]),n(`div`,fn,[e.entry.status===`connected`?(f(),t(`span`,pn,d(e.$t(`chat.consent.statusConnected`)),1)):e.entry.install_url?(f(),o(m,{key:1,type:`primary`,size:`small`,disabled:e.disabled,onClick:e.onAuthorize},{default:S(()=>[a(d(e.$t(`chat.consent.authorize`)),1)]),_:1},8,[`disabled`,`onClick`])):(f(),t(`span`,mn,d(e.$t(`chat.consent.statusUnconnected`)),1))])],2)}var gn=U(on,[[`render`,hn],[`__scopeId`,`data-v-c9e31277`]]);function _n(e){let t=new Set,n=[];for(let r of e.requirements??[])if(!r.satisfied)for(let e of r.entries??[])e.status===`unconnected`&&!t.has(e.connector)&&(t.add(e.connector),n.push(e.connector));return n}function vn(e,t,n){return JSON.stringify({consent_request_id:e.consent_request_id,authorized:t,skipped:n})}async function yn(){let e=await V.get(`/connections/`,{baseURL:`${K()}/api/v1`});return Array.isArray(e.data)?e.data:[]}var bn=new Map,xn=new Map;async function Sn(e){if(!e)return;let t=bn.get(e);if(t)return t;let n=xn.get(e);if(n)return n;let r=(async()=>{try{let t=(await V.get(`/connectors/${e}/`,{baseURL:`${K()}/api/v1`})).data;return bn.set(e,t),t}catch(t){console.warn(`connector catalog fetch failed`,e,t);return}})().finally(()=>{xn.delete(e)});return xn.set(e,r),r}var X=null,Cn=null,Z=null,Q=0;async function wn(e,t=!1){let n=e??null;if(n!==Cn&&(Cn=n,X=null,Z=null,Q++),!n)return[];if(!t&&X)return X;if(!t&&Z)return Z;let r=++Q,i=(async()=>{try{let e=(await V.get(`/connectors/`,{baseURL:`${K()}/api/v1`,params:{sort:`popular`,limit:200}}))?.data?.items,t=Array.isArray(e)?e.filter(e=>e?.installed&&e?.icon_url).map(e=>({id:e.id,identifier:e.identifier,name:e.name,icon_url:e.icon_url})):[];return Cn===n&&Q===r&&(X=t),t}catch(e){return console.warn(`enabled connectors fetch failed`,e),X??[]}})();return Z=i,i.finally(()=>{Q===r&&(Z=null)}),i}async function Tn(e,t){return(await V.post(`/connectors/${e}/install/`,t,{baseURL:`${K()}/api/v1`})).data}var En=i({name:`ConnectorConsentCard`,components:{ConnectorEntryRow:gn,ElButton:T,ElCheckbox:te,ElCheckboxGroup:ee,ElDialog:q,FontAwesomeIcon:J},props:{toolUseId:{type:String,required:!0},payload:{type:Object,required:!0},resolved:{type:Boolean,default:!1},previousOutput:{type:String,default:``}},emits:[`submit`,`authorize`],data(){return{resolvedAuthorized:[],resolvedSkipped:[],catalogs:{},scopeDialogVisible:!1,scopeDialogEntry:null,scopeDialogCatalog:null,selectedScopes:[],authorizingConnector:``,liveStatuses:{},hasCheckedStatuses:!1,refreshingStatus:!1}},computed:{requirements(){return this.payload?.requirements??[]},effectiveStatus(){return e=>this.liveStatuses[e.connector]??e.status},effectiveEntriesFor(){return e=>e.entries.map(e=>{let t=this.liveStatuses[e.connector];return!t||t===e.status?e:{...e,status:t}})},effectiveSatisfiedFor(){return e=>{let t=e.entries.map(e=>this.effectiveStatus(e));return t.length===0?e.satisfied:e.match===`all`?t.every(e=>e===`connected`):t.some(e=>e===`connected`)}},hasUnsatisfied(){return this.requirements.some(e=>!this.effectiveSatisfiedFor(e))},showContinueButton(){return this.resolved||!this.hasCheckedStatuses?!1:!this.hasUnsatisfied},resolvedSummary(){return this.resolvedAuthorized.length>0?this.$t(`chat.consent.resolvedAuthorized`,{list:this.resolvedAuthorized.join(`, `)}):this.$t(`chat.consent.resolvedSkipped`)}},watch:{resolved:{immediate:!0,handler(e){e&&this.parsePreviousOutput()}},previousOutput:{immediate:!1,handler(){this.resolved&&this.parsePreviousOutput()}},payload:{immediate:!0,deep:!1,handler(){this.refreshCatalogs()}}},mounted(){this.shouldRefreshFromReturn()&&this.refreshConnectionStatuses()},methods:{showMatchLabel(e){return e.entries.length>1&&!this.effectiveSatisfiedFor(e)},catalogFor(e){return this.catalogs[e.catalog_id]||null},async refreshCatalogs(){let e=new Set;for(let t of this.requirements)for(let n of t.entries)n.catalog_id&&e.add(n.catalog_id);await Promise.all(Array.from(e).map(async e=>{if(this.catalogs[e])return;let t=await Sn(e);t&&(this.catalogs={...this.catalogs,[e]:t})}))},onAuthorize(e){let t=this.catalogFor(e);if(!t||t.auth_mode===`byoc`||!t.installable){this.$emit(`authorize`,{tool_use_id:this.toolUseId,entry:e});return}let n=t.permissions||[];if(n.length>1){this.scopeDialogEntry=e,this.scopeDialogCatalog=t,this.selectedScopes=n.map(e=>e.id),this.scopeDialogVisible=!0;return}this.performInstall(e,void 0)},onConfirmScopes(){let e=this.scopeDialogEntry;if(!e){this.scopeDialogVisible=!1;return}let t=[...this.selectedScopes];this.scopeDialogVisible=!1,this.performInstall(e,t)},async performInstall(e,t){this.authorizingConnector=e.connector;try{let n=new URL(window.location.href);n.searchParams.set(`consent`,this.payload.consent_request_id),n.searchParams.delete(`connector`);let r=await Tn(e.catalog_id,{scopes:t,return_url:n.toString()});if(r.type===`redirect`&&r.authorization_url){window.location.href=r.authorization_url;return}this.$emit(`authorize`,{tool_use_id:this.toolUseId,entry:e})}catch(t){console.error(`installFromCatalog failed`,t),H.error(this.$t(`chat.consent.installFailed`)),this.$emit(`authorize`,{tool_use_id:this.toolUseId,entry:e})}finally{this.authorizingConnector=``}},onSkip(){let e=_n(this.payload),t=vn(this.payload,[],e);this.$emit(`submit`,{tool_use_id:this.toolUseId,output:t})},shouldRefreshFromReturn(){if(typeof window>`u`)return!1;try{return new URL(window.location.href).searchParams.get(`consent`)===this.payload?.consent_request_id}catch{return!1}},async refreshConnectionStatuses(){this.refreshingStatus=!0;try{let e=await yn(),t=new Set;for(let n of e){let e=n.connector_identifier;e&&String(n.status).toLowerCase()===`active`&&t.add(e)}let n={};for(let e of this.requirements)for(let r of e.entries)n[r.connector]=t.has(r.connector)?`connected`:`unconnected`;this.liveStatuses=n,this.hasCheckedStatuses=!0}catch(e){console.warn(`listMyConnections failed`,e)}finally{this.refreshingStatus=!1}},onContinue(){let e=[];for(let t of this.requirements)for(let n of t.entries)this.effectiveStatus(n)===`connected`&&e.push(n.connector);let t=vn(this.payload,e,[]);this.$emit(`submit`,{tool_use_id:this.toolUseId,output:t})},parsePreviousOutput(){if(this.resolvedAuthorized=[],this.resolvedSkipped=[],this.previousOutput)try{let e=JSON.parse(this.previousOutput);Array.isArray(e.authorized)&&(this.resolvedAuthorized=e.authorized.filter(e=>typeof e==`string`)),Array.isArray(e.skipped)&&(this.resolvedSkipped=e.skipped.filter(e=>typeof e==`string`))}catch{}}}}),Dn={class:`ccc-header`},On={class:`header-title`},kn={key:0,class:`ccc-rationale`},An={key:0,class:`ccc-req-match`},jn={key:1,class:`ccc-actions`},Mn={key:2,class:`ccc-resolved-banner`},Nn={class:`ccc-scope-hint`},Pn={class:`ccc-scope-label`},Fn={key:0,class:`ccc-scope-desc`};function In(r,i,l,p,m,h){let g=x(`font-awesome-icon`),_=x(`ConnectorEntryRow`),v=x(`el-button`),b=x(`el-checkbox`),C=x(`el-checkbox-group`),w=x(`el-dialog`);return f(),t(`div`,{class:u([`connector-consent-card`,{"is-resolved":r.resolved}])},[n(`div`,Dn,[s(g,{icon:`fa-solid fa-shield-halved`,class:`header-icon`}),n(`span`,On,d(r.$t(`chat.consent.title`)),1)]),r.payload.rationale?(f(),t(`p`,kn,d(r.payload.rationale),1)):y(``,!0),(f(!0),t(c,null,e(r.requirements,n=>(f(),t(`div`,{key:n.requirement_index,class:u([`ccc-requirement`,{"is-satisfied":r.effectiveSatisfiedFor(n)}])},[r.showMatchLabel(n)?(f(),t(`div`,An,d(n.match===`any`?r.$t(`chat.consent.matchAny`):r.$t(`chat.consent.matchAll`)),1)):y(``,!0),(f(!0),t(c,null,e(r.effectiveEntriesFor(n),e=>(f(),o(_,{key:e.connector,entry:e,catalog:r.catalogFor(e),disabled:r.resolved||r.authorizingConnector!==``,onAuthorize:r.onAuthorize},null,8,[`entry`,`catalog`,`disabled`,`onAuthorize`]))),128))],2))),128)),!r.resolved&&(r.hasUnsatisfied||r.showContinueButton)?(f(),t(`div`,jn,[r.hasUnsatisfied?(f(),o(v,{key:0,text:``,disabled:r.authorizingConnector!==``,onClick:r.onSkip},{default:S(()=>[a(d(r.$t(`chat.consent.skip`)),1)]),_:1},8,[`disabled`,`onClick`])):y(``,!0),r.showContinueButton?(f(),o(v,{key:1,type:`primary`,loading:r.refreshingStatus,disabled:r.authorizingConnector!==``,onClick:r.onContinue},{default:S(()=>[a(d(r.$t(`chat.consent.continue`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])):y(``,!0)])):y(``,!0),r.resolved?(f(),t(`div`,Mn,d(r.resolvedSummary),1)):y(``,!0),s(w,{modelValue:r.scopeDialogVisible,"onUpdate:modelValue":i[2]||=e=>r.scopeDialogVisible=e,title:r.scopeDialogCatalog?r.$t(`chat.consent.selectScopes`,{provider:r.scopeDialogCatalog.name}):``,width:`480px`,"close-on-click-modal":!1,"append-to-body":``},{footer:S(()=>[s(v,{disabled:r.authorizingConnector!==``,onClick:i[1]||=e=>r.scopeDialogVisible=!1},{default:S(()=>[a(d(r.$t(`common.button.cancel`)),1)]),_:1},8,[`disabled`]),s(v,{type:`primary`,loading:r.authorizingConnector!==``,onClick:r.onConfirmScopes},{default:S(()=>[a(d(r.$t(`common.button.confirm`)),1)]),_:1},8,[`loading`,`onClick`])]),default:S(()=>[n(`p`,Nn,d(r.$t(`chat.consent.selectScopesHint`)),1),s(C,{modelValue:r.selectedScopes,"onUpdate:modelValue":i[0]||=e=>r.selectedScopes=e},{default:S(()=>[(f(!0),t(c,null,e(r.scopeDialogCatalog?.permissions||[],e=>(f(),t(`div`,{key:e.id,class:`ccc-scope-row`},[s(b,{value:e.id,label:e.id},{default:S(()=>[n(`span`,Pn,d(e.label||e.id),1)]),_:2},1032,[`value`,`label`]),e.desc?(f(),t(`p`,Fn,d(e.desc),1)):y(``,!0)]))),128))]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`,`title`])],2)}var Ln=i({name:`Message`,components:{EditMessage:_t,CopyToClipboard:Be,RestartToGenerate:mt,AnsweringMark:Je,MarkdownRenderer:dt,FilePreview:Ue,ToolActivity:kt,EntityCard:$t,ThinkingBlock:an,AskUserQuestionCard:He,ConnectorConsentCard:U(En,[[`render`,In],[`__scopeId`,`data-v-5b00f3b0`]]),ElButton:T,ElImage:N,ElInput:Re,FontAwesomeIcon:J},props:{messages:{type:Array,required:!1,default:()=>[]},message:{type:Object,required:!0},application:{type:Object,required:!0}},emits:[`stop`,`edit`,`restart`,`answerAskUserQuestion`,`skipAskUserQuestion`,`respondConnectorConsent`,`authorizeConnector`],data(){return{copied:!1,isEditing:!1,questionValue:this.message.content,messageState:W}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},copyableText(){let e=this.message.content;return e?typeof e==`string`?e:Array.isArray(e)?e.filter(e=>e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
|
|
2
|
-
|
|
3
|
-
`).trim():``:``},errorText(){if(console.debug(`error`,this.message.error),!(!this.message.error||!this.message.error?.code)){if(this.message.error?.message)return this.message.error.message;switch(this.message.error?.code){case he:return this.$t(`chat.message.errorUsedUp`);case ue:return this.$t(`chat.message.errorApiError`);case oe:return this.$t(`chat.message.errorBadRequest`);case pe:return this.$t(`chat.message.errorTimeout`);case ge:return this.$t(`chat.message.errorBusy`);case _e:return this.$t(`chat.message.errorContentTooLarge`);case ve:return this.$t(`chat.message.errorTooManyRequests`);case z:return this.$t(`chat.message.errorNotApplied`);case be:return;case ye:default:return this.$t(`chat.message.errorUnknown`)}}},showBuyMore(){return!Oe()&&this.message.role===`assistant`&&this.message.error?.code===`used_up`}},watch:{},methods:{startEditing(){this.isEditing=!0,this.questionValue=this.message.content,console.debug(`start to get answer`,this.message)},cancelEdit(){this.isEditing=!1},onRestart(){this.$emit(`restart`,this.message)},onEdit(){this.isEditing=!1,this.onSubmit()},onEditEnterKey(e){let t=e;t.isComposing||t.keyCode===229||(t.preventDefault(),this.onEdit())},onSubmit(){this.$emit(`edit`,this.message,this.questionValue)},onCopy(){Ee(this.message.content.toString(),{debug:!0}),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)},onBuyMore(){this.$router.push({name:De,params:{id:this.application?.id}})},onAskUserQuestionSubmit(e){this.$emit(`answerAskUserQuestion`,e)},onAskUserQuestionSkip(e){this.$emit(`skipAskUserQuestion`,e)},askUserQuestionPayloadFromBlock(e){return e.pending_question?e.pending_question:{questions:e.input?.questions||[]}},onConnectorConsentSubmit(e){this.$emit(`respondConnectorConsent`,e)},onConnectorConsentAuthorize(e){this.$emit(`authorizeConnector`,e)},consentPayloadFromBlock(e){return e.pending_consent_request??null}}}),Rn=[`role`],zn={class:`author`},Bn={key:0,class:`main`},Vn={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:`ease-in-out`}},class:`content`},Hn={key:0,class:`message-content`},Un={key:1},Wn={key:1,class:`whitespace-pre-wrap break-words w-fit max-w-full py-1`},Gn={key:2},Kn=[`src`],qn={key:2},Jn={key:1,class:`whitespace-pre-wrap break-words w-fit max-w-full py-1`},Yn={key:1,class:`edits`},Xn={class:`flex justify-end`},Zn={initial:{opacity:0,y:5},enter:{opacity:1,y:0,scale:1},delay:300,duration:400,layout:!0,transition:{enter:{delay:.3,duration:.5},layout:{duration:.4,easing:`ease-in-out`}},class:`operations`},Qn={key:1,class:`error-card`},$n={class:`error-content`},er={class:`error-text`};function tr(r,i,l,p,h,g){let v=x(`el-image`),C=x(`thinking-block`),T=x(`markdown-renderer`),E=x(`file-preview`),D=x(`tool-activity`),O=x(`ask-user-question-card`),k=x(`connector-consent-card`),A=x(`entity-card`),j=x(`el-input`),M=x(`el-button`),N=x(`answering-mark`),ee=x(`edit-message`),te=x(`copy-to-clipboard`),ne=x(`restart-to-generate`),P=x(`font-awesome-icon`),F=b(`motion`);return f(),t(`div`,{class:u({message:!0,[r.message.role]:!0}),role:r.message.role},[n(`div`,zn,[r.message.role===`assistant`?(f(),o(v,{key:0,src:r.modelGroup?.icon,fit:`cover`,class:`avatar`},null,8,[`src`])):y(``,!0)]),r.errorText?(f(),t(`div`,Qn,[n(`div`,$n,[s(P,{icon:`fa-solid fa-circle-exclamation`,class:`error-icon`}),n(`span`,er,d(r.errorText),1)]),r.showBuyMore?(f(),o(M,{key:0,round:``,type:`primary`,class:`btn-topup`,size:`small`,onClick:r.onBuyMore},{default:S(()=>[a(d(r.$t(`common.button.buyMore`)),1)]),_:1},8,[`onClick`])):y(``,!0)])):(f(),t(`div`,Bn,[_((f(),t(`div`,Vn,[r.isEditing?(f(),t(`div`,Yn,[s(j,{modelValue:r.questionValue,"onUpdate:modelValue":i[0]||=e=>r.questionValue=e,type:`textarea`,class:`mb-2`,onKeydown:w(m(r.onEditEnterKey,[`exact`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),n(`div`,Xn,[s(M,{round:``,onClick:r.cancelEdit},{default:S(()=>[a(d(r.$t(`common.button.cancel`)),1)]),_:1},8,[`onClick`]),s(M,{type:`primary`,class:`btn-confirm`,round:``,onClick:r.onEdit},{default:S(()=>[a(d(r.$t(`common.button.confirm`)),1)]),_:1},8,[`onClick`])])])):(f(),t(`div`,Hn,[r.message.role===`assistant`&&r.message.thinking?(f(),o(C,{key:0,content:r.message.thinking,done:r.message.state===r.messageState.FINISHED||r.message.state===r.messageState.FAILED},null,8,[`content`,`done`])):y(``,!0),Array.isArray(r.message.content)?(f(),t(`div`,Gn,[(f(!0),t(c,null,e(r.message.content,(e,n)=>(f(),t(`div`,{key:n},[e.type===`image_url`?(f(),t(`img`,{key:0,src:typeof e?.image_url==`string`?e.image_url:e.image_url?.url,fit:`cover`,class:`image`},null,8,Kn)):y(``,!0),e.file_url?(f(),o(E,{key:1,name:e.name||(typeof e?.file_url==`string`?e.file_url:e.file_url?.url),percentage:0,closable:!1,class:`mt-2`},null,8,[`name`])):y(``,!0),e.type===`text`?(f(),t(`div`,qn,[r.message.role===`assistant`?(f(),o(T,{key:0,content:e.text,citations:r.message.citations},null,8,[`content`,`citations`])):(f(),t(`pre`,Jn,d(e.text?.trim()),1))])):y(``,!0),e.type===`tool_use`&&!(e.tool_name===`ask_user_question`&&(e.status===`awaiting_input`||e.status===`done`))&&!(e.tool_name===`request_user_consent`&&(e.status===`awaiting_input`||e.status===`done`))?(f(),o(D,{key:3,item:e},null,8,[`item`])):y(``,!0),e.type===`tool_use`&&e.tool_name===`ask_user_question`&&e.status===`awaiting_input`&&e.pending_question?(f(),o(O,{key:4,"tool-use-id":e.tool_id||``,payload:e.pending_question,collapsed:!1,onSubmit:r.onAskUserQuestionSubmit,onSkip:r.onAskUserQuestionSkip},null,8,[`tool-use-id`,`payload`,`onSubmit`,`onSkip`])):y(``,!0),e.type===`tool_use`&&e.tool_name===`ask_user_question`&&e.status===`done`?(f(),o(O,{key:5,"tool-use-id":e.tool_id||``,payload:r.askUserQuestionPayloadFromBlock(e),collapsed:!0,"previous-output":e.output||``},null,8,[`tool-use-id`,`payload`,`previous-output`])):y(``,!0),e.type===`tool_use`&&e.tool_name===`request_user_consent`&&e.status===`awaiting_input`&&e.pending_consent_request?(f(),o(k,{key:6,"tool-use-id":e.tool_id||``,payload:e.pending_consent_request,resolved:!1,onSubmit:r.onConnectorConsentSubmit,onAuthorize:r.onConnectorConsentAuthorize},null,8,[`tool-use-id`,`payload`,`onSubmit`,`onAuthorize`])):y(``,!0),e.type===`tool_use`&&e.tool_name===`request_user_consent`&&e.status===`done`&&r.consentPayloadFromBlock(e)?(f(),o(k,{key:7,"tool-use-id":e.tool_id||``,payload:r.consentPayloadFromBlock(e),resolved:!0,"previous-output":e.output||``},null,8,[`tool-use-id`,`payload`,`previous-output`])):y(``,!0),e.type===`card`&&e.card?(f(),o(A,{key:8,card:e.card},null,8,[`card`])):y(``,!0)]))),128))])):(f(),t(`div`,Un,[r.message.role===`assistant`?(f(),o(T,{key:0,content:r.message?.content,citations:r.message.citations},null,8,[`content`,`citations`])):(f(),t(`pre`,Wn,d(r.message.content),1))]))])),r.message.state===r.messageState.PENDING?(f(),o(N,{key:2})):y(``,!0)])),[[F]]),_((f(),t(`div`,Zn,[r.message.role===`user`&&!r.isEditing&&!Array.isArray(r.message.content)?(f(),o(ee,{key:0,class:`btn-edit`,onClick:r.startEditing},null,8,[`onClick`])):y(``,!0),r.copyableText&&(r.message.state===r.messageState.FINISHED||r.message.state===r.messageState.FAILED)?(f(),o(te,{key:1,content:r.copyableText,class:`btn-copy`},null,8,[`content`])):y(``,!0),(r.message.state===r.messageState.FINISHED||r.message.state===r.messageState.FAILED)&&r.message.role===`assistant`&&r.message===r.messages[r.messages.length-1]?(f(),o(ne,{key:2,class:`btn-restart`,messages:r.messages,onRestart:r.onRestart},null,8,[`messages`,`onRestart`])):y(``,!0)])),[[F]])]))],10,Rn)}var nr=U(Ln,[[`render`,tr],[`__scopeId`,`data-v-d37cfb68`]]),rr=i({name:`Composer`,components:{FilePreview:Ue,ImagePreview:We,ElTooltip:M,FontAwesomeIcon:J,ElUpload:j,ElButton:T,ElDropdown:I,ElDropdownMenu:F,ElDropdownItem:P},mixins:[je,Te],props:{answering:{type:Boolean,required:!1,default:!1},ready:{type:Boolean,required:!1,default:!0},references:{type:Array,required:!1,default:()=>[]},question:{type:String,required:!0}},emits:[`update:question`,`update:references`,`submit`,`stop`],data(){return{inputHeight:`35px`,questionValue:this.question||``,fileList:[],uploadUrl:Ne()+`/api/v1/files/`}},computed:{model(){return this.$store.state.chat.model},modelGroup(){return this.$store.state.chat.modelGroup},isFileSupported(){return this.model?.isFileSupported},isImageSupported(){return this.model?.isImageSupported},headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},refs(){let e=[];for(let t of this.fileList){let n=t?.response?.file_url;n&&e.push(t?.name?{url:n,name:t.name}:{url:n})}return e},uploading(){return!!this.fileList.find(e=>e.percentage!==void 0&&e.percentage>=0&&e.percentage<100)},extensions(){if(this.isFileSupported===!1&&this.isImageSupported===!0)return`.png,.jpg,.jpeg,.gif,.bmp,.webp,.svg,.tiff,.ico,.heic`},pasteAccept(){return`.png,.jpg,.jpeg,.gif,.bmp,.webp,.svg,.tiff,.ico,.heic,image/*`}},watch:{refs(e){console.debug(`References:`,e),e.length>0&&this.$emit(`update:references`,e)},questionValue(e){this.$emit(`update:question`,e.trim())},question(e){e!==this.questionValue&&(this.questionValue=e)},references(e){console.debug(`References updated:`,e),e.length===0&&(this.fileList=[])},isFileSupported(e,t){t&&!e&&(this.fileList=[])}},methods:{isImageUrl:ke,onStartCall(){this.$router.push({name:Le})},adjustTextareaHeight(){this.$nextTick(()=>{let e=this.$refs.textarea;e&&(e.style.height=`35px`,e.style.height=e.scrollHeight+`px`)})},onSubmit(){!this.question||this.uploading||!this.ready||this.$emit(`submit`)},onEnterKey(e){e.isComposing||e.keyCode===229||(e.preventDefault(),this.onSubmit())},onStop(){this.$emit(`stop`)},onProgress(e,t){console.debug(`File upload progress:`,t.name,e.loaded,e.total,t.percentage)},onExceed(){H.warning(this.$t(`chat.message.uploadReferencesExceed`))},onError(){H.error(this.$t(`chat.message.uploadReferencesError`))},onTriggerUpload(){!this.isFileSupported&&!this.isImageSupported||this.answering||this.$nextTick(()=>{let e=this.$refs.uploader?.$el;(e?.querySelector(`input.el-upload__input`)||e?.querySelector(`input[type="file"]`))?.click()})},onOpenSkills(){window.open(Ae(`https://auth.acedata.cloud/user/skills`),`_blank`,`noopener`)},onOpenConnections(){window.open(Ae(`https://auth.acedata.cloud/user/connections`),`_blank`,`noopener`)}}}),ir={class:`composer`},ar={ref:`uploadTrigger`,class:`upload-trigger`,"aria-hidden":`true`},or={key:0,class:`file-previews`},sr=[`disabled`,`placeholder`],cr={class:`tools`},lr={class:`btn-plus-trigger`},ur=[`aria-disabled`];function dr(r,i,a,h,g,v){let b=x(`el-upload`),T=x(`image-preview`),E=x(`file-preview`),D=x(`font-awesome-icon`),O=x(`el-tooltip`),k=x(`el-dropdown-item`),A=x(`el-dropdown-menu`),j=x(`el-dropdown`),M=x(`el-button`);return f(),t(`div`,ir,[s(b,{ref:`uploader`,"file-list":r.fileList,"onUpdate:fileList":i[0]||=e=>r.fileList=e,class:`upload-hidden`,accept:r.extensions,disabled:!r.isFileSupported&&!r.isImageSupported||r.answering,name:`file`,limit:10,multiple:!0,action:r.uploadUrl,"show-file-list":!1,"on-exceed":r.onExceed,"on-error":r.onError,"on-progress":r.onProgress,headers:r.headers},{default:S(()=>[n(`span`,ar,null,512)]),_:1},8,[`file-list`,`accept`,`disabled`,`action`,`on-exceed`,`on-error`,`on-progress`,`headers`]),r.fileList.length>0?(f(),t(`div`,or,[(f(!0),t(c,null,e(r.fileList,e=>(f(),t(c,{key:e.uid},[r.isImageUrl(e.name)?(f(),o(T,{key:0,url:e.url||e.response?.file_url,name:e.name,percentage:e.percentage,onRemove:t=>r.fileList.splice(r.fileList.indexOf(e),1)},null,8,[`url`,`name`,`percentage`,`onRemove`])):(f(),o(E,{key:1,name:e.name,percentage:e.percentage,onRemove:t=>r.fileList.splice(r.fileList.indexOf(e),1)},null,8,[`name`,`percentage`,`onRemove`]))],64))),128))])):y(``,!0),_(n(`textarea`,{ref:`textarea`,"onUpdate:modelValue":i[1]||=e=>r.questionValue=e,disabled:r.answering,class:`input`,placeholder:r.$t(`chat.message.newMessagePlaceholder`),style:l({height:r.inputHeight}),onKeydown:i[2]||=w(m((...e)=>r.onEnterKey&&r.onEnterKey(...e),[`exact`]),[`enter`]),onInput:i[3]||=(...e)=>r.adjustTextareaHeight&&r.adjustTextareaHeight(...e)},null,44,sr),[[p,r.questionValue]]),n(`div`,cr,[s(j,{trigger:`click`,placement:`top-start`,"hide-on-click":!0,"popper-class":`composer-plus-popper`},{dropdown:S(()=>[s(A,null,{default:S(()=>[s(k,{disabled:!r.isFileSupported&&!r.isImageSupported||r.answering,onClick:r.onTriggerUpload},{default:S(()=>[s(D,{icon:`fa-regular fa-file-alt`,class:`menu-icon`}),n(`span`,null,d(r.$t(`chat.composer.addFiles`)),1)]),_:1},8,[`disabled`,`onClick`]),s(k,{onClick:r.onOpenSkills},{default:S(()=>[s(D,{icon:`fa-solid fa-wand-magic-sparkles`,class:`menu-icon`}),n(`span`,null,d(r.$t(`chat.composer.skills`)),1),s(D,{icon:`fa-solid fa-up-right-from-square`,class:`menu-external`})]),_:1},8,[`onClick`]),s(k,{onClick:r.onOpenConnections},{default:S(()=>[s(D,{icon:`fa-solid fa-plug`,class:`menu-icon`}),n(`span`,null,d(r.$t(`chat.composer.connections`)),1),s(D,{icon:`fa-solid fa-up-right-from-square`,class:`menu-external`})]),_:1},8,[`onClick`])]),_:1})]),default:S(()=>[n(`span`,lr,[s(O,{class:`box-item`,effect:`dark`,content:r.$t(`chat.composer.addAction`),placement:`top`},{default:S(()=>[n(`span`,{class:u({btn:!0,"btn-plus":!0,disabled:r.answering}),"aria-disabled":r.answering,role:`button`},[s(D,{icon:`fa-solid fa-plus`,class:`icon icon-plus`})],10,ur)]),_:1},8,[`content`])])]),_:1}),s(O,{class:`box-item`,effect:`dark`,content:r.$t(`realtime.callTooltip`),placement:`top`},{default:S(()=>[n(`span`,{class:u({btn:!0,"btn-voice":!0}),role:`button`,onClick:i[4]||=(...e)=>r.onStartCall&&r.onStartCall(...e)},[s(D,{icon:`fa-solid fa-microphone`,class:`icon icon-voice`})])]),_:1},8,[`content`])]),s(M,{disabled:r.answering||!r.questionValue||r.uploading||!r.ready,type:`primary`,class:u({btn:!0,"btn-send":!0}),onClick:r.onSubmit},{default:S(()=>[s(D,{icon:`fa-solid fa-arrow-up`,class:`icon icon-send`})]),_:1},8,[`disabled`,`onClick`]),_(s(M,{disabled:!r.answering,type:`primary`,class:u({btn:!0,"btn-stop":!0}),onClick:r.onStop},{default:S(()=>[s(D,{icon:`fa-solid fa-stop`,class:`icon icon-stop`})]),_:1},8,[`disabled`,`onClick`]),[[C,r.answering]])])}var fr=U(rr,[[`render`,dr],[`__scopeId`,`data-v-24c5fbf0`]]),pr=i({name:`ModelSelector`,components:{ElDropdown:I,ElDropdownMenu:F,ElDropdownItem:P,FontAwesomeIcon:J},emits:[`update:modelValue`,`select`,`model-group-changed`,`model-changed`],data(){return{options:[Ce,se,fe,Se,de,ce]}},computed:{model(){return console.log(`model`,this.$store.state.chat.model),this.$store.state.chat.model},modelGroup(){return this.$route.meta?.modelGroup||Ce}},watch:{modelGroup(e){console.debug(`modelGroup from route changed`,e),this.$store.dispatch(`chat/setModelGroup`,e),this.$store.dispatch(`chat/setModel`,e.models[0])}},mounted(){let e=this.modelGroup;this.$store.state.chat?.modelGroup?.name!==e.name&&this.$store.dispatch(`chat/setModelGroup`,e);let t=this.$store.state.chat?.model;e.models.some(e=>e.name===t?.name)||this.$store.dispatch(`chat/setModel`,e.models[0])},methods:{onModelGroupChange(e){this.$store.dispatch(`chat/setModelGroup`,e),this.$emit(`model-group-changed`,e)},onModelChange(e){this.$store.dispatch(`chat/setModel`,e),this.$emit(`model-changed`,e)}}}),mr={class:`selector`},hr={class:`trigger`},gr=[`src`],_r={class:`trigger-name`},vr={class:`item`},yr=[`src`],br={class:`item-info`},xr={key:0,class:`item-name`},Sr={key:0,class:`item-free-tag`},Cr={key:1,class:`item-desc`};function wr(r,i,l,p,m,h){let g=x(`font-awesome-icon`),_=x(`el-dropdown-item`),v=x(`el-dropdown-menu`),b=x(`el-dropdown`);return f(),t(`div`,mr,[s(b,{trigger:`click`,"popper-class":`model-selector-popper`},{dropdown:S(()=>[r.modelGroup&&r.modelGroup?.models?(f(),o(v,{key:0},{default:S(()=>[(f(!0),t(c,null,e(r.modelGroup?.models?.filter(e=>e.enabled),(e,i)=>(f(),o(_,{key:i,class:u({active:r.model?.name===e?.name}),onClick:t=>r.onModelChange(e)},{default:S(()=>[n(`div`,vr,[e?.icon?(f(),t(`img`,{key:0,src:e.icon,class:`item-icon`},null,8,yr)):y(``,!0),n(`div`,br,[e?.getDisplayName?(f(),t(`p`,xr,[a(d(e?.getDisplayName())+` `,1),e?.isFree?(f(),t(`span`,Sr,d(r.$t(`chat.model.freeTag`)),1)):y(``,!0)])):y(``,!0),e?.getDescription?(f(),t(`p`,Cr,d(e?.getDescription()),1)):y(``,!0)]),r.model?.name===e?.name?(f(),o(g,{key:1,icon:`fa-solid fa-check`,class:`item-check`})):y(``,!0)])]),_:2},1032,[`class`,`onClick`]))),128))]),_:1})):y(``,!0)]),default:S(()=>[n(`div`,hr,[r.model?.icon?(f(),t(`img`,{key:0,src:r.model.icon,class:`trigger-icon`},null,8,gr)):y(``,!0),n(`span`,_r,d(r.model?.getDisplayName?.()??r.model?.name??``),1),s(g,{icon:`fa-solid fa-chevron-down`,class:`trigger-arrow`})])]),_:1})])}var Tr=U(pr,[[`render`,wr],[`__scopeId`,`data-v-2e6e7a65`]]),Er=i({name:`DesktopAgentManager`,components:{ElDialog:q},props:{modelValue:{type:Boolean,default:!1},connected:{type:Boolean,default:!1},agentName:{type:String,default:``},toolCount:{type:Number,default:0},connectedAt:{type:String,default:``}},emits:[`update:modelValue`]}),Dr={class:`agent-manager`},Or={class:`description`},kr={key:0,class:`status-card connected`},Ar={class:`status-header`},jr={class:`status-text`},Mr={class:`info-row`},Nr={class:`label`},Pr={class:`value`},Fr={class:`info-row`},Ir={class:`label`},Lr={class:`value`},Rr={class:`info-row`},zr={class:`label`},Br={class:`value`},Vr={class:`hint`},Hr={key:1,class:`status-card disconnected`},Ur={class:`status-header`},Wr={class:`status-text`},Gr={class:`install-guide`},Kr={class:`step-label`},qr={class:`step-label`};function Jr(e,r,i,a,s,c){let l=x(`el-dialog`);return f(),o(l,{"model-value":e.modelValue,title:e.$t(`chat.agent.title`),width:`480px`,"onUpdate:modelValue":r[0]||=t=>e.$emit(`update:modelValue`,t)},{default:S(()=>[n(`div`,Dr,[n(`p`,Or,d(e.$t(`chat.agent.description`)),1),e.connected?(f(),t(`div`,kr,[n(`div`,Ar,[r[1]||=n(`span`,{class:`pulse-dot`},null,-1),n(`span`,jr,d(e.$t(`chat.agent.connected`)),1)]),n(`div`,Mr,[n(`span`,Nr,d(e.$t(`chat.agent.name`))+`:`,1),n(`span`,Pr,d(e.agentName),1)]),n(`div`,Fr,[n(`span`,Ir,d(e.$t(`chat.agent.tools`))+`:`,1),n(`span`,Lr,d(e.toolCount),1)]),n(`div`,Rr,[n(`span`,zr,d(e.$t(`chat.agent.connectedSince`))+`:`,1),n(`span`,Br,d(e.connectedAt),1)]),n(`p`,Vr,d(e.$t(`chat.agent.connectedHint`)),1)])):(f(),t(`div`,Hr,[n(`div`,Ur,[n(`span`,Wr,d(e.$t(`chat.agent.notConnected`)),1)]),n(`div`,Gr,[n(`p`,Kr,d(e.$t(`chat.agent.installLabel`)),1),r[2]||=n(`code`,{class:`command`},`npm install -g @acedatacloud/desktop-agent`,-1),n(`p`,qr,d(e.$t(`chat.agent.runLabel`)),1),r[3]||=n(`code`,{class:`command`},`adc-agent --token YOUR_API_TOKEN`,-1)])]))])]),_:1},8,[`model-value`,`title`])}var Yr=U(Er,[[`render`,Jr],[`__scopeId`,`data-v-a365b6f4`]]),Xr={chatgpt:`openai`,claude:`anthropic`,gemini:`google`,grok:`xai`,deepseek:`deepseek`,kimi:`moonshot`,glm:`zhipu`},Zr=i({name:`BYOKBadge`,components:{ElTooltip:M,FontAwesomeIcon:J},data(){return{credentials:[],loaded:!1}},computed:{token(){return this.$store?.state?.chat?.credential?.token},modelGroup(){return this.$store?.state?.chat?.modelGroup?.name},expectedProvider(){let e=this.modelGroup;if(e)return Xr[e]},activeCredential(){let e=this.expectedProvider;if(e)return this.credentials.find(t=>t.provider===e&&t.is_active)},providerLabel(){return this.activeCredential?.provider_label},show(){return!!this.activeCredential}},watch:{token:{immediate:!0,handler(e){e&&!this.loaded&&this.fetch()}}},methods:{async fetch(){if(this.token)try{let{data:e}=await Fe.list({token:this.token});this.credentials=e?.items??[],this.loaded=!0}catch(e){console.debug(`BYOK badge fetch skipped`,e),this.credentials=[]}},onClickManage(){window.dispatchEvent(new CustomEvent(`open-user-settings`,{detail:{tab:`apiKey`}}))}}}),Qr={class:`badge-text`};function $r(e,t,r,i,a,c){let l=x(`font-awesome-icon`),u=x(`el-tooltip`);return e.show&&e.providerLabel?(f(),o(u,{key:0,content:`${e.$t(`byok.badge.tooltip`,{provider:e.providerLabel})} — ${e.$t(`byok.badge.manage`)}`,placement:`bottom`},{default:S(()=>[n(`button`,{type:`button`,class:`byok-badge`,onClick:t[0]||=(...t)=>e.onClickManage&&e.onClickManage(...t)},[s(l,{icon:`fa-solid fa-key`,class:`badge-icon`}),n(`span`,Qr,d(e.$t(`byok.badge.active`,{provider:e.providerLabel})),1)])]),_:1},8,[`content`])):y(``,!0)}var ei=U(Zr,[[`render`,$r],[`__scopeId`,`data-v-2875e3f2`]]),ti={},ni={class:`disclaimer`};function ri(e,n){return f(),t(`p`,ni,d(e.$t(`chat.message.howToUse`)),1)}var ii=U(ti,[[`render`,ri],[`__scopeId`,`data-v-d2d980ab`]]),$=5,ai=i({name:`ConnectorStrip`,components:{ElTooltip:M},data(){return{enabledConnectors:[],loadSeq:0}},computed:{visibleConnectors(){return this.enabledConnectors.length<=$?this.enabledConnectors:this.enabledConnectors.slice(0,$-1)},overflowCount(){return this.enabledConnectors.length<=$?0:this.enabledConnectors.length-($-1)},userId(){return this.$store.getters.user?.id??null}},watch:{userId(){this.enabledConnectors=[],this.loadConnectors(!0)}},mounted(){this.loadConnectors(),document.addEventListener(`visibilitychange`,this.onVisibilityChange)},beforeUnmount(){document.removeEventListener(`visibilitychange`,this.onVisibilityChange)},methods:{async loadConnectors(e=!1){let t=this.userId,n=++this.loadSeq,r=await wn(t,e);n===this.loadSeq&&this.userId===t&&(this.enabledConnectors=r)},onVisibilityChange(){document.visibilityState===`visible`&&this.loadConnectors(!0)},onOpen(){Pe()}}}),oi={key:0,class:`connector-strip`},si=[`src`,`alt`];function ci(r,i,a,s,l,u){let p=x(`el-tooltip`);return r.visibleConnectors.length>0?(f(),t(`div`,oi,[(f(!0),t(c,null,e(r.visibleConnectors,e=>(f(),o(p,{key:e.id,effect:`dark`,content:e.name,placement:`top`},{default:S(()=>[n(`span`,{class:`connector-chip`,role:`button`,onClick:i[0]||=(...e)=>r.onOpen&&r.onOpen(...e)},[n(`img`,{class:`connector-icon`,src:e.icon_url,alt:e.name,loading:`lazy`},null,8,si)])]),_:2},1032,[`content`]))),128)),r.overflowCount>0?(f(),o(p,{key:0,effect:`dark`,content:r.$t(`chat.composer.connections`),placement:`top`},{default:S(()=>[n(`span`,{class:`connector-chip connector-more`,role:`button`,onClick:i[1]||=(...e)=>r.onOpen&&r.onOpen(...e)},` +`+d(r.overflowCount),1)]),_:1},8,[`content`])):y(``,!0)])):y(``,!0)}var li=U(ai,[[`render`,ci],[`__scopeId`,`data-v-281663b0`]]),ui=i({name:`SidePanel`,components:{ElInput:Re,ElButton:T,ElDialog:q,ElDropdown:I,ElDropdownItem:P,ElDropdownMenu:F,FontAwesomeIcon:J,ElSkeleton:ie},props:{},emits:[`change-conversation`],data(){return{renameDialogVisible:!1,deleteDialogVisible:!1,actingConversation:void 0,renameDraft:``,renameSubmitting:!1,deleteSubmitting:!1}},computed:{conversationId(){return console.debug(`conversationId in side`,this.$route.params?.id),this.$route.params?.id?.toString()},conversations(){return this.$store.state.chat.conversations},conversationGroups(){let e=new Date;e.setHours(0,0,0,0);let t=new Date(e);t.setDate(t.getDate()-1);let n=new Date(e);n.setDate(n.getDate()-e.getDay());let r=new Date(n);r.setDate(r.getDate()-7);let i=this.conversations?.reduce((r,i)=>{let a=new Date(i.updated_at*1e3);return a>=e?r.today.push(i):a>=t?r.yesterday.push(i):a>=n?r.thisWeek.push(i):r.earlier.push(i),r},{today:[],yesterday:[],thisWeek:[],earlier:[]});return{...i?.today?.length>0?{today:i?.today?.sort((e,t)=>t.updated_at-e.updated_at)}:{},...i?.yesterday?.length>0?{yesterday:i?.yesterday?.sort((e,t)=>t.updated_at-e.updated_at)}:{},...i?.thisWeek?.length>0?{thisWeek:i?.thisWeek?.sort((e,t)=>t.updated_at-e.updated_at)}:{},...i?.earlier?.length>0?{earlier:i?.earlier?.sort((e,t)=>t.updated_at-e.updated_at)}:{}}},application(){return this.$store.state.chat.application},loading(){return this.$store.state.chat.status.getConversations===B.Request},token(){return this.$store.state.chat?.credential?.token}},methods:{async onNewConversation(){console.debug(`onNewConversation from side panel`),this.$emit(`change-conversation`,void 0)},onScheduledTasks(){this.$router.push({name:Me})},onClickConversation(e){console.debug(`onClickConversation in side panel`,e),this.$emit(`change-conversation`,e)},getConversationTitle(e){return e?.title||e?.last_message_preview||``},onConversationCommand(e,t){e===`rename`?this.openRenameDialog(t):e===`delete`&&this.openDeleteDialog(t)},openRenameDialog(e){this.actingConversation=e,this.renameDraft=(e?.title||``).trim(),this.renameDialogVisible=!0},openDeleteDialog(e){this.actingConversation=e,this.deleteDialogVisible=!0},async onConfirmRename(){let e=this.token,t=this.actingConversation?.id,n=(this.renameDraft||``).trim();if(!e){H.error(`Token 不存在,请重新登录`);return}if(!t){H.error(`会话不存在`);return}if(!n){H.warning(`请输入名称`);return}this.renameSubmitting=!0;try{await G.updateConversation({id:t,title:n},{token:e}),await this.$store.dispatch(`chat/getConversations`),this.renameDialogVisible=!1,H.success(`已重命名`)}catch(e){console.error(e),H.error(`重命名失败,请稍后重试`)}finally{this.renameSubmitting=!1}},async onConfirmDelete(){let e=this.token,t=this.actingConversation?.id;if(!e){H.error(`Token 不存在,请重新登录`);return}if(!t){H.error(`会话不存在`);return}this.deleteSubmitting=!0;try{await G.deleteConversation(t,{token:e}),await this.$store.dispatch(`chat/getConversations`),t===this.conversationId&&this.$emit(`change-conversation`,void 0),this.deleteDialogVisible=!1,H.success(`已删除`)}catch(e){console.error(e),H.error(`删除失败,请稍后重试`)}finally{this.deleteSubmitting=!1}}}}),di={class:`panel`},fi={key:1,class:`conversations`},pi={class:`icons`},mi={class:`title`},hi={class:`icons`},gi={class:`title`},_i={class:`key`},vi=[`onClick`],yi={class:`title`},bi={class:`operations`};function xi(r,i,l,p,h,g){let _=x(`el-skeleton`),v=x(`font-awesome-icon`),y=x(`el-dropdown-item`),b=x(`el-dropdown-menu`),C=x(`el-dropdown`),T=x(`el-input`),E=x(`el-button`),D=x(`el-dialog`);return f(),t(`div`,di,[r.loading&&r.conversationGroups===void 0?(f(),o(_,{key:0})):(f(),t(`div`,fi,[n(`div`,{class:`conversation`,onClick:i[0]||=(...e)=>r.onNewConversation&&r.onNewConversation(...e)},[n(`div`,pi,[s(v,{icon:`fa-solid fa-plus`,class:`icon`})]),n(`div`,mi,d(r.$t(`chat.message.startNewChat`)),1)]),n(`div`,{class:`conversation`,onClick:i[1]||=(...e)=>r.onScheduledTasks&&r.onScheduledTasks(...e)},[n(`div`,hi,[s(v,{icon:`fa-solid fa-clock`,class:`icon`})]),n(`div`,gi,d(r.$t(`chat.scheduledTasks.navTitle`)),1)]),(f(!0),t(c,null,e(r.conversationGroups,(o,l)=>(f(),t(`div`,{key:l,class:`group`},[n(`div`,_i,d(r.$t(`chat.group.${l}`)),1),(f(!0),t(c,null,e(o,(e,o)=>(f(),t(`div`,{key:o,class:u({conversation:!0,active:e.id===r.conversationId}),onClick:t=>r.onClickConversation(e.id)},[n(`div`,yi,d(r.getConversationTitle(e)),1),n(`div`,bi,[s(C,{trigger:`click`,placement:`bottom-end`,teleported:!0,onCommand:t=>r.onConversationCommand(t,e)},{dropdown:S(()=>[s(b,null,{default:S(()=>[s(y,{command:`rename`,onClick:i[3]||=m(()=>{},[`stop`])},{default:S(()=>[s(v,{icon:`fa-solid fa-pen-to-square`,class:`mr-2`}),i[10]||=a(` 重命名 `,-1)]),_:1}),s(y,{command:`delete`,onClick:i[4]||=m(()=>{},[`stop`])},{default:S(()=>[s(v,{icon:`fa-solid fa-trash`,class:`mr-2`}),a(` `+d(r.$t(`common.button.delete`)),1)]),_:1})]),_:1})]),default:S(()=>[n(`span`,{class:`more`,onClick:i[2]||=m(()=>{},[`stop`])},[s(v,{icon:`fa-solid fa-ellipsis`})])]),_:1},8,[`onCommand`])])],10,vi))),128))]))),128))])),s(D,{modelValue:r.renameDialogVisible,"onUpdate:modelValue":i[7]||=e=>r.renameDialogVisible=e,width:`420px`,title:`重命名`,"close-on-click-modal":!1},{footer:S(()=>[s(E,{onClick:i[6]||=e=>r.renameDialogVisible=!1},{default:S(()=>[a(d(r.$t(`common.button.cancel`)),1)]),_:1}),s(E,{type:`primary`,loading:r.renameSubmitting,onClick:r.onConfirmRename},{default:S(()=>[a(d(r.$t(`common.button.confirm`)),1)]),_:1},8,[`loading`,`onClick`])]),default:S(()=>[s(T,{modelValue:r.renameDraft,"onUpdate:modelValue":i[5]||=e=>r.renameDraft=e,autofocus:``,onKeydown:w(r.onConfirmRename,[`enter`])},null,8,[`modelValue`,`onKeydown`])]),_:1},8,[`modelValue`]),s(D,{modelValue:r.deleteDialogVisible,"onUpdate:modelValue":i[9]||=e=>r.deleteDialogVisible=e,width:`420px`,title:r.$t(`chat.message.confirmDelete`),"close-on-click-modal":!1},{footer:S(()=>[s(E,{onClick:i[8]||=e=>r.deleteDialogVisible=!1},{default:S(()=>[a(d(r.$t(`common.button.cancel`)),1)]),_:1}),s(E,{type:`danger`,loading:r.deleteSubmitting,onClick:r.onConfirmDelete},{default:S(()=>[a(d(r.$t(`common.button.delete`)),1)]),_:1},8,[`loading`,`onClick`])]),default:S(()=>[i[11]||=n(`div`,{class:`delete-tip`},`确认删除该会话?删除后不可恢复。`,-1)]),_:1},8,[`modelValue`,`title`])])}var Si=i({name:`LayoutChat`,components:{SidePanel:U(ui,[[`render`,xi],[`__scopeId`,`data-v-6a955bf1`]]),ElDrawer:ne,ElButton:T,FontAwesomeIcon:J},emits:[`change-conversation`],data(){return{drawer:!1}},methods:{onChangeConversation(e){console.debug(`onChangeConversation in layout`,e),this.$emit(`change-conversation`,e)}}}),Ci={class:`main`},wi={class:`side`},Ti={class:`chat`};function Ei(e,r,i,a,o,c){let l=x(`side-panel`),u=x(`font-awesome-icon`),d=x(`el-button`),p=x(`el-drawer`);return f(),t(`div`,Ci,[n(`div`,wi,[v(e.$slots,`side`,{},()=>[s(l,{onChangeConversation:e.onChangeConversation},null,8,[`onChangeConversation`])],!0)]),n(`div`,Ti,[v(e.$slots,`chat`,{},void 0,!0)]),s(d,{circle:``,class:`menu`,onClick:r[0]||=t=>e.drawer=!0},{default:S(()=>[s(u,{icon:`fa-solid fa-bars`})]),_:1}),s(p,{modelValue:e.drawer,"onUpdate:modelValue":r[1]||=t=>e.drawer=t,direction:`ltr`,"with-header":!1,size:`290px`},{default:S(()=>[s(l,{onChangeConversation:e.onChangeConversation},null,8,[`onChangeConversation`])]),_:1},8,[`modelValue`])])}var Di=U(Si,[[`render`,Ei],[`__scopeId`,`data-v-339f4e5e`]]);function Oi(e){return typeof e==`string`&&e.trim().length>0?e:Array.isArray(e)&&typeof e[0]==`string`&&e[0].trim().length>0?e[0]:null}function ki(e){let t=Oi(e.consent),n=Oi(e.connector);return!t||!n?null:{consentRequestId:t,connector:n}}function Ai(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.role===`assistant`&&Array.isArray(r.content)){for(let e=r.content.length-1;e>=0;e--){let n=r.content[e];if(n.type!==`tool_use`||n.tool_name!==`request_user_consent`||n.status!==`awaiting_input`)continue;let i=n.pending_consent_request;if(!(!i||i.consent_request_id!==t)&&n.tool_id)return{toolUseId:n.tool_id,payload:i}}break}}return null}function ji(e,t){return vn(e,[t],[])}var Mi=i({name:`ChatConversation`,components:{Composer:fr,Disclaimer:ii,ConnectorStrip:li,ModelSelector:Tr,DesktopAgentManager:Yr,"byok-badge":ei,Message:nr,Layout:Di,ElTooltip:M,ElButton:T,FontAwesomeIcon:J},data(){return{drawer:!1,question:``,references:[],upload:!1,answering:!1,canceler:void 0,agentManagerVisible:!1,agentConnected:!1,agentName:``,agentToolCount:0,agentConnectedAt:``,skipNextRestoreId:void 0,messages:[],pendingConsentReturn:null}},computed:{modelGroup(){return this.$store.state.chat.modelGroup},model(){return this.$store.state.chat.model},conversationId(){return this.$route.params.id?.toString()},conversation(){return this.$store.state.chat.conversations?.find(e=>e.id===this.conversationId)},service(){return this.$store.state.chat.service},application(){return this.$store.state.chat.application},applications(){return this.$store.state.chat.applications},credential(){return this.$store.state.chat?.credential},needApply(){return this.$store.state.chat.status.getApplications===B.Success&&!this.application},conversations(){return this.$store.state.chat.conversations},initializing(){return this.$store.state.chat.status.getApplications===B.Request},ready(){return!this.initializing&&!!this.credential?.token&&!!this.application}},watch:{async references(e){console.log(`references changed`,e)},question(e){this.$store.commit(`chat/setPendingDraft`,e||``)},async modelGroup(e){console.debug(`modelGroup changed`,e),this.$store.commit(`chat/setConversations`,[]),await this.$store.dispatch(`chat/getConversations`)},"credential.token":{immediate:!0,async handler(e){e&&(this.modelGroup?.name&&await this.$store.dispatch(`chat/getConversations`),await this.onRestoreCurrentConversation(),this.onCheckAgentStatus())}},async conversationId(e){if(console.debug(`conversationId changed`,e),!e){this.resetConversation();return}await this.onRestoreCurrentConversation()},messages:{handler(){this.pendingConsentReturn&&this.onConsumePendingConsentReturn()},deep:!1}},async mounted(){this.onCaptureConsentReturnFromUrl(),await this.onGetService(),await this.onGetApplication(),this.onConsumePendingDraft(),this.onApplyQueryFromUrl()},methods:{resetConversation(){this.messages=[],this.question=``,this.references=[]},async onRestoreCurrentConversation(){let e=this.conversationId;if(!(!e||!this.credential?.token)){if(this.skipNextRestoreId===e){this.skipNextRestoreId=void 0;return}await this.onRestoreConversation(e)}},async onCheckAgentStatus(){let e=this.credential?.token;if(e)try{let{data:t}=await we.status(e);this.agentConnected=t?.connected===!0,this.agentName=t?.name||``,this.agentToolCount=t?.tool_count||0,this.agentConnectedAt=t?.connected_at||``}catch{this.agentConnected=!1}},onConsumePendingDraft(){if(this.conversationId||this.question&&this.question.trim().length>0)return;let e=this.$store.state.chat?.pendingDraft;e&&(this.question=e)},onApplyQueryFromUrl(){let e=this.$route.query?.query,t=Array.isArray(e)?e[0]:e;if(!t||typeof t!=`string`||this.conversationId)return;if(this.question&&this.question.trim().length>0){let e=this.$store.state.chat?.pendingDraft;if(!(e!=null&&this.question===e))return}this.question=t;let n=new Set([`query`,`source`,`suggestion_id`,`connector`]),r={};for(let[e,t]of Object.entries(this.$route.query||{}))n.has(e)||t!=null&&(r[e]=t);this.$router.replace({path:this.$route.path,query:r})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`chat/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`chat/getApplications`),console.debug(`end onGetApplication`)},async onDraft(e){this.question=e,this.onSubmit()},async onStop(){this.canceler&&(this.canceler.abort(),this.answering=!1)},async onRestart(e){let t=this.messages.findIndex(t=>t===e),n=this.messages[t-1],r=[];if(t!==-1){if(r=this.messages.slice(0,t-1),this.messages=this.messages.slice(0,t),this.references=[],typeof n.content==`string`)this.question=n.content;else if(Array.isArray(n.content))for(let e of n.content)if(e.type===`image_url`||e.type===`file_url`){let t=e.type===`image_url`?e.image_url:e.file_url,n=typeof t==`string`?t:t?.url;n&&this.references.push(e.name?{url:n,name:e.name}:{url:n})}else e.type===`text`&&e.text&&(this.question=e.text)}console.debug(`onRestart!`,this.question,JSON.stringify(this.references));let i=this.credential?.token,a=this.question.trim();if(!i||!a){console.error(`no token or endpoint or question`),this.messages.push({error:{code:z},role:L,state:W.FAILED});return}let o=this.conversationId;G.updateConversation({id:this.conversationId,messages:r},{token:i}).then(async()=>{await this.$store.dispatch(`chat/setConversation`,{id:o,messages:this.messages}),console.debug(`finished update conversation`,this.messages),console.debug(`onRestart`,this.question),await this.onRequest()}).catch(e=>{this.handleRequestError(e)})},async onEdit(e,t){let n=this.messages.findIndex(t=>t===e);n!==-1&&(this.messages=this.messages.slice(0,n)),this.question=t;let r=this.credential?.token;if(!r){console.error(`no token or endpoint or question`),this.messages.push({error:{code:z},role:L,state:W.FAILED});return}let i=this.conversationId;G.updateConversation({id:this.conversationId,messages:this.messages},{token:r}).then(async()=>{await this.$store.dispatch(`chat/setConversation`,{id:i,messages:this.messages}),console.debug(`finished update conversation`,this.messages),this.messages.push({content:this.question,role:R}),console.debug(`onEdit`,this.question),await this.onRequest()}).catch(e=>{this.handleRequestError(e)})},conversationsPath(e){let t=this.$route.matched[0]?.path??``;return e?`${t}/conversations/${e}`:`${t}/conversations`},async onNewConversation(){this.conversationId?await this.$router.push(this.conversationsPath()):this.resetConversation()},async onRestoreConversation(e){console.debug(`onRestoreConversation id`,e);let t=this.conversations?.find(t=>t.id===e);if(!t||!t.messages){let n=await this.$store.dispatch(`chat/getConversation`,e);n&&(t=n)}let n=t?.model,r=xe.find(e=>e.name===n),i=me.find(e=>e.name===r?.modelGroup);i&&this.$store.dispatch(`chat/setModelGroup`,i),r&&this.$store.dispatch(`chat/setModel`,r),this.messages=t?.messages||[],this.onScrollDown()},async onChangeConversation(e){console.log(`onChangeConversation in conversation`,e),await this.onStop();let t=e||``;if(t===(this.conversationId||``)){t||await this.onNewConversation();return}await this.$router.push(this.conversationsPath(t))},async onSubmit(){if(this.references.length>0){let e=[{type:`text`,text:this.question.trim()}];for(let t of this.references){let n=ke(t.url)?{type:`image_url`,image_url:t.url}:{type:`file_url`,file_url:t.url};t.name&&(n.name=t.name),e.push(n)}this.messages.push({content:e,role:R})}else this.messages.push({content:this.question.trim(),role:R});console.debug(`onSubmit`,this.question,this.references),await this.onRequest()},async onRequest(){console.debug(`start to get answer`,this.messages);let e=this.credential?.token,t=this.question.trim(),n=this.references.map(e=>e.url);if(console.debug(`validated`,t,n),this.question=``,this.references=[],!e||!t){console.error(`no token or endpoint or question`),this.messages.push({error:{code:z},role:L,state:W.FAILED});return}let r=this.conversationId;this.messages.push({content:``,role:L,state:W.PENDING}),console.debug(`start to get answer`,this.messages),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,this._streamAssistantTurn({question:t,model:this.model.name,references:n,id:this.conversationId,stateful:!0},e,r)},async onAnswerAskUserQuestion(e){let t=this.credential?.token;if(!t||!this.conversationId){console.error(`cannot resume: no token or no conversation id`);return}let n=[...this.messages].reverse().find(e=>e.role===L);if(n&&Array.isArray(n.content)){let t=n.content.find(t=>t.type===`tool_use`&&t.tool_id===e.tool_use_id);t&&(t.status=`done`,t.output=e.output,delete t.pending_question)}this.messages.push({content:``,role:L,state:W.PENDING}),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,this._streamAssistantTurn({id:this.conversationId,model:this.model.name,stateful:!0,tool_results:[{tool_use_id:e.tool_use_id,output:e.output}]},t,this.conversationId)},onSkipAskUserQuestion(e){let t=[...this.messages].reverse().find(e=>e.role===L);if(!t||!Array.isArray(t.content))return;let n=t.content.find(t=>t.type===`tool_use`&&t.tool_id===e.tool_use_id);n&&(n.status=`done`,n.is_error=!0,n.output=n.output||``,delete n.pending_question)},async onRespondConnectorConsent(e){let t=this.credential?.token;if(!t||!this.conversationId){console.error(`cannot resume: no token or no conversation id`);return}let n=[...this.messages].reverse().find(e=>e.role===L);if(n&&Array.isArray(n.content)){let t=n.content.find(t=>t.type===`tool_use`&&t.tool_id===e.tool_use_id);t&&(t.status=`done`,t.output=e.output)}this.messages.push({content:``,role:L,state:W.PENDING}),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,this._streamAssistantTurn({id:this.conversationId,model:this.model.name,stateful:!0,tool_results:[{tool_use_id:e.tool_use_id,output:e.output}]},t,this.conversationId)},onAuthorizeConnector(e){let t=e.entry?.install_url;if(!t){console.warn(`authorize click with no install_url`,e);return}window.location.href=t},onCaptureConsentReturnFromUrl(){let e=ki(this.$route.query||{});e&&(this.pendingConsentReturn=e)},onConsumePendingConsentReturn(){let e=this.pendingConsentReturn;if(!e||this.messages.length===0)return;let t=Ai(this.messages,e.consentRequestId);if(!t)return;this.pendingConsentReturn=null;let n=ji(t.payload,e.connector);this.stripConsentReturnFromUrl(),this.onRespondConnectorConsent({tool_use_id:t.toolUseId,output:n})},stripConsentReturnFromUrl(){let e={};for(let[t,n]of Object.entries(this.$route.query||{}))t===`consent`||t===`connector`||n!=null&&(e[t]=n);this.$router.replace({path:this.$route.path,query:e})},_streamAssistantTurn(e,t,n){let r=n,i=[],a=new Map,o=``,s=0;G.chatConversation(e,{token:t,stream:e=>{console.debug(`stream response`,e);let t=this.messages[this.messages.length-1];if(e.type===`thinking`&&e.content){let t=this.messages[this.messages.length-1];t.thinking=(t.thinking??``)+e.content}else if(e.type===`tool_use_start`&&e.tool_id){o&&(i.push({type:`text`,text:o}),o=``,s=e.answer?.length??0);let t={type:`tool_use`,tool_id:e.tool_id,tool_name:e.tool_name,tool_display_name:e.tool_display_name,input:e.input,status:`running`};i.push(t),a.set(e.tool_id,t)}else if(e.type===`tool_result`&&e.tool_id){let t=a.get(e.tool_id);t&&(t.output=e.output,t.is_error=e.is_error,t.duration_ms=e.duration_ms,t.status=`done`,delete t.pending_question)}else if(e.type===`ask_user_question`&&e.tool_id&&e.payload){let t=a.get(e.tool_id);t&&(t.status=`awaiting_input`,t.pending_question=e.payload)}else if(e.type===`consent_request`&&e.tool_id&&e.payload){let t=a.get(e.tool_id);t&&(t.status=`awaiting_input`,t.pending_consent_request=e.payload)}else if(e.type===`artifact`&&e.artifact)e.artifact.type===`image`||e.artifact.mimeType?.startsWith(`image/`)?i.push({type:`image_url`,image_url:e.artifact.url,name:e.artifact.name,mimeType:e.artifact.mimeType}):i.push({type:`file_url`,file_url:e.artifact.url,name:e.artifact.name,mimeType:e.artifact.mimeType});else if(e.type===`card`&&e.card)o&&(i.push({type:`text`,text:o}),o=``,s=e.answer?.length??0),i.push({type:`card`,card:e.card});else if(e.type===`citation`&&e.citation){let t=this.messages[this.messages.length-1];t.citations={...t.citations??{},[e.citation.id]:e.citation}}else e.delta_answer&&(o=(e.answer||``).slice(s));let n=[...i];o&&n.push({type:`text`,text:o}),n.length>0?this.messages[this.messages.length-1]={role:L,content:n,thinking:t?.thinking,citations:t?.citations,state:t?.state===W.FINISHED?t?.state:W.ANSWERING}:this.messages[this.messages.length-1]={role:L,content:e.answer,thinking:t?.thinking,citations:t?.citations,state:t?.state===W.FINISHED?t?.state:W.ANSWERING},r=e?.id},signal:this.canceler.signal}).then(async()=>{console.debug(`finished fetch answer`,this.messages),this.messages[this.messages.length-1].state=W.FINISHED,console.debug(`finished fetch answer`,JSON.stringify(this.messages)),await this.$store.dispatch(`chat/setConversation`,{id:r,messages:this.messages}),this.answering=!1,r&&(this.skipNextRestoreId=r,await this.$router.push(this.conversationsPath(r))),this.onScrollDown(),await this.$store.dispatch(`chat/getConversations`),await this.$store.dispatch(`chat/getApplications`)}).catch(e=>{this.handleRequestError(e)})},async handleRequestError(e){if(console.error(`error happened`,e),this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].state=W.FAILED),e.name===`AbortError`){console.error(`aborted`);return}else e instanceof ze?(console.debug(`BaseError`,e),this.messages[this.messages.length-1].error={code:e.code,message:e.detail}):ae.isCancel(e)?this.messages[this.messages.length-1].error={code:be}:this.messages&&this.messages.length>0&&(this.messages[this.messages.length-1].error={code:ye});this.answering=!1},async onScrollDown(){setTimeout(()=>{let e=document.querySelector(`.messages`);!e||!this.messages||this.messages.length===0||(e.scrollTop=e?.scrollHeight)},0)}}}),Ni={class:`toolbar`},Pi={class:`toolbar-left`},Fi={class:`toolbar-actions`},Ii={key:0,class:`messages`},Li={class:`starter`},Ri={class:`composer-connectors`};function zi(r,i,a,l,d,p){let m=x(`model-selector`),h=x(`byok-badge`);x(`font-awesome-icon`),x(`el-button`),x(`el-tooltip`);let g=x(`desktop-agent-manager`),_=x(`message`),v=x(`connector-strip`),b=x(`composer`),C=x(`disclaimer`),w=x(`layout`);return f(),o(w,{onChangeConversation:i[6]||=e=>r.onChangeConversation(e)},{chat:S(()=>[n(`div`,Ni,[n(`div`,Pi,[s(m,{class:`selector`,onModelGroupChanged:i[0]||=e=>r.onChangeConversation(void 0)}),s(h,{class:`byok-badge`})]),n(`div`,Fi,[y(``,!0)])]),r.agentManagerVisible?(f(),o(g,{key:0,modelValue:r.agentManagerVisible,"onUpdate:modelValue":i[2]||=e=>r.agentManagerVisible=e,connected:r.agentConnected,"agent-name":r.agentName,"tool-count":r.agentToolCount,"connected-at":r.agentConnectedAt},null,8,[`modelValue`,`connected`,`agent-name`,`tool-count`,`connected-at`])):y(``,!0),n(`div`,{class:u({dialogue:!0,empty:r.messages.length===0})},[r.messages.length>0?(f(),t(`div`,Ii,[(f(!0),t(c,null,e(r.messages,(e,t)=>(f(),o(_,{key:t,message:e,messages:r.messages,question:r.question,application:r.application,class:`message`,"onUpdate:question":i[3]||=e=>r.question=e,onEdit:r.onEdit,onRestart:r.onRestart,onAnswerAskUserQuestion:r.onAnswerAskUserQuestion,onSkipAskUserQuestion:r.onSkipAskUserQuestion,onRespondConnectorConsent:r.onRespondConnectorConsent,onAuthorizeConnector:r.onAuthorizeConnector},null,8,[`message`,`messages`,`question`,`application`,`onEdit`,`onRestart`,`onAnswerAskUserQuestion`,`onSkipAskUserQuestion`,`onRespondConnectorConsent`,`onAuthorizeConnector`]))),128))])):y(``,!0),n(`div`,Li,[n(`div`,Ri,[s(v)]),s(b,{question:r.question,"onUpdate:question":i[4]||=e=>r.question=e,answering:r.answering,ready:r.ready,references:r.references,"onUpdate:references":i[5]||=e=>r.references=e,onSubmit:r.onSubmit,onStop:r.onStop},null,8,[`question`,`answering`,`ready`,`references`,`onSubmit`,`onStop`]),s(C,{class:`composer-disclaimer`})])],2)]),_:1})}var Bi=U(Mi,[[`render`,zi],[`__scopeId`,`data-v-6e0e85ca`]]);export{Bi as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime--c01j_DQ.js";import{A as e,D as t,F as n,N as r,O as i,P as a,S as o,Wt as s,Z as c,k as l,tt as u,ut as d}from"./vendor-chart-BJCvKk8-.js";import{t as f}from"./button-BydTr5nV.js";import{$ as p,et as m,tt as h}from"./constants-C0JMy8iD.js";import{At as ee,E as g,r as _,s as v,v as y,x as b,y as x}from"./index-BFMUZID8.js";import{t as S}from"./index.es-BxSKbWOt.js";var C=n({name:`DownloadIndex`,components:{ElButton:f,QrCode:ee,FontAwesomeIcon:S},data(){return{faAndroid:y,faApple:x,faGooglePlay:b,faDownload:v,faCircleInfo:_}},computed:{version(){return h},brandTitle(){return this.$store.state.site?.title||`AceData`},brandLogo(){return this.$store.state.site?.logo||`/assets/logo-CDy94G52.png`},androidDownloadUrl(){return p},hasAndroidDownload(){return!!p},playStoreUrl(){return m},hasPlayStore(){return!!m},iosDownloadUrl(){return``},iosFallbackUrl(){return``},hasIosDownload(){return!1}},methods:{openSupport(){window.open(`https://platform.acedata.cloud/support`,`_blank`)}}}),w={class:`download-page`},T={class:`download-page__inner`},E={class:`hero`},D={class:`hero__brand`},O=[`src`,`alt`],k={class:`hero__eyebrow`},A={class:`hero__title`},j={class:`hero__subtitle`},M={class:`hero__badges`},N={class:`badge badge--live`},P={class:`badge`},F={class:`badge`},I={class:`hero__actions`},L={class:`platforms`},R={class:`platform platform--android`},z={class:`platform__head`},B={class:`platform__os`},V={class:`chip chip--live`},H={class:`platform__title`},U={class:`platform__text`},W={key:0,class:`qr`},G={class:`qr__hint`},te={class:`platform__foot platform__foot--stack`},K={key:0,class:`platform__fallback`},q={class:`platform__meta`},J={class:`platform__meta`},Y={class:`platform platform--ios`},X={class:`platform__head`},Z={class:`platform__os`},Q={class:`chip chip--pending`},ne={class:`platform__title`},re={class:`platform__text`},ie={key:0,class:`platform__foot platform__foot--stack`},ae={class:`btn-row`},oe={class:`platform__meta`},se={class:`ios-soon`},ce={class:`ios-soon__text`},le={class:`platform__foot platform__foot--stack`},ue={class:`advantages`},de={class:`advantage`},fe={class:`advantage__title`},pe={class:`advantage__text`},$={class:`advantage`},me={class:`advantage__title`},he={class:`advantage__text`},ge={class:`advantage`},_e={class:`advantage__title`},ve={class:`advantage__text`},ye={class:`note`},be={class:`note__text`};function xe(n,f,p,m,h,ee){let g=u(`font-awesome-icon`),_=u(`el-button`),v=u(`qr-code`);return c(),e(`div`,w,[f[8]||=t(`div`,{class:`download-page__glow`,"aria-hidden":`true`},null,-1),t(`div`,T,[t(`header`,E,[t(`span`,D,[t(`img`,{src:n.brandLogo,alt:n.brandTitle,class:`hero__logo`},null,8,O)]),t(`p`,k,s(n.brandTitle)+` · `+s(n.$t(`common.nav.mobileApp`)),1),t(`h1`,A,s(n.$t(`common.title.mobileApp`)),1),t(`p`,j,s(n.$t(`common.message.mobileAppDescription`)),1),t(`div`,M,[t(`span`,N,[f[0]||=t(`span`,{class:`badge__dot`},null,-1),r(s(n.$t(`common.message.mobileAvailableNow`)),1)]),t(`span`,P,`v`+s(n.version),1),t(`span`,F,s(n.$t(`common.message.mobileSharedAccount`)),1)]),t(`div`,I,[n.hasPlayStore?(c(),i(_,{key:0,type:`primary`,round:``,size:`large`,tag:`a`,href:n.playStoreUrl,target:`_blank`},{default:d(()=>[a(g,{icon:n.faGooglePlay,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.getOnGooglePlay`)),1)]),_:1},8,[`href`])):n.hasAndroidDownload?(c(),i(_,{key:1,type:`primary`,round:``,size:`large`,tag:`a`,href:n.androidDownloadUrl,target:`_blank`},{default:d(()=>[a(g,{icon:n.faAndroid,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.downloadAndroid`)),1)]),_:1},8,[`href`])):l(``,!0),a(_,{round:``,size:`large`,class:`btn-ghost`,onClick:n.openSupport},{default:d(()=>[r(s(n.$t(`common.nav.support`)),1)]),_:1},8,[`onClick`])])]),t(`section`,L,[t(`article`,R,[t(`div`,z,[t(`span`,B,[a(g,{icon:n.faAndroid,class:`platform__os-icon`},null,8,[`icon`]),f[1]||=r(` Android `,-1)]),t(`span`,V,[f[2]||=t(`span`,{class:`chip__dot`},null,-1),r(s(n.$t(`common.message.mobileAvailableNow`)),1)])]),t(`h2`,H,s(n.$t(`common.button.downloadAndroid`)),1),t(`p`,U,s(n.$t(`common.message.mobileAndroidHint`)),1),n.hasPlayStore||n.hasAndroidDownload?(c(),e(`div`,W,[a(v,{value:n.hasPlayStore?n.playStoreUrl:n.androidDownloadUrl,width:184,height:184,class:`qr__img`,type:`image/png`,color:{dark:`#0e2a33ff`,light:`#ffffffff`}},null,8,[`value`]),t(`p`,G,s(n.hasPlayStore?n.$t(`common.message.mobilePlayStoreHint`):n.$t(`common.message.mobileSecureDelivery`)),1)])):l(``,!0),t(`div`,te,[n.hasPlayStore?(c(),i(_,{key:0,type:`primary`,round:``,size:`large`,tag:`a`,href:n.playStoreUrl,target:`_blank`},{default:d(()=>[a(g,{icon:n.faGooglePlay,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.getOnGooglePlay`)),1)]),_:1},8,[`href`])):l(``,!0),n.hasAndroidDownload?(c(),e(o,{key:1},[n.hasPlayStore?(c(),e(`div`,K,[a(_,{round:``,tag:`a`,href:n.androidDownloadUrl,target:`_blank`,class:`btn-ghost`},{default:d(()=>[a(g,{icon:n.faDownload,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.downloadAndroid`)),1)]),_:1},8,[`href`]),t(`span`,q,s(n.$t(`common.message.mobileApkFallback`))+` · v`+s(n.version),1)])):(c(),e(o,{key:1},[a(_,{type:`primary`,round:``,size:`large`,tag:`a`,href:n.androidDownloadUrl,target:`_blank`},{default:d(()=>[a(g,{icon:n.faDownload,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.downloadAndroid`)),1)]),_:1},8,[`href`]),t(`span`,J,s(n.$t(`common.message.mobileDirectInstall`))+` · v`+s(n.version),1)],64))],64)):l(``,!0)])]),t(`article`,Y,[t(`div`,X,[t(`span`,Z,[a(g,{icon:n.faApple,class:`platform__os-icon`},null,8,[`icon`]),f[3]||=r(` iOS `,-1)]),t(`span`,Q,[f[4]||=t(`span`,{class:`chip__dot`},null,-1),r(s(n.$t(`common.message.mobileComingSoon`)),1)])]),t(`h2`,ne,s(n.$t(`common.button.downloadIos`)),1),t(`p`,re,s(n.hasIosDownload?n.$t(`common.message.mobileIosHint`):n.$t(`common.message.mobileIosPending`)),1),n.hasIosDownload?(c(),e(`div`,ie,[t(`div`,ae,[a(_,{type:`primary`,round:``,size:`large`,tag:`a`,href:n.iosDownloadUrl,target:`_blank`},{default:d(()=>[a(g,{icon:n.faApple,class:`btn-icon`},null,8,[`icon`]),r(` `+s(n.$t(`common.button.installIos`)),1)]),_:1},8,[`href`]),a(_,{round:``,size:`large`,class:`btn-ghost`,tag:`a`,href:n.iosFallbackUrl,target:`_blank`},{default:d(()=>[r(s(n.$t(`common.button.downloadIos`)),1)]),_:1},8,[`href`])]),t(`span`,oe,s(n.$t(`common.message.mobileInstallNote`)),1)])):(c(),e(o,{key:1},[t(`div`,se,[a(g,{icon:n.faApple,class:`ios-soon__icon`},null,8,[`icon`]),t(`p`,ce,s(n.$t(`common.message.mobileComingSoon`)),1)]),t(`div`,le,[a(_,{round:``,size:`large`,class:`btn-ghost`,onClick:n.openSupport},{default:d(()=>[r(s(n.$t(`common.nav.support`)),1)]),_:1},8,[`onClick`])])],64))])]),t(`section`,ue,[t(`article`,de,[f[5]||=t(`span`,{class:`advantage__num`},`01`,-1),t(`h3`,fe,s(n.$t(`common.title.mobileFastAccess`)),1),t(`p`,pe,s(n.$t(`common.message.mobileFastAccess`)),1)]),t(`article`,$,[f[6]||=t(`span`,{class:`advantage__num`},`02`,-1),t(`h3`,me,s(n.$t(`common.title.mobileTrustedRelease`)),1),t(`p`,he,s(n.$t(`common.message.mobileTrustedRelease`)),1)]),t(`article`,ge,[f[7]||=t(`span`,{class:`advantage__num`},`03`,-1),t(`h3`,_e,s(n.$t(`common.title.mobileUnifiedExperience`)),1),t(`p`,ve,s(n.$t(`common.message.mobileUnifiedExperience`)),1)])]),t(`aside`,ye,[a(g,{icon:n.faCircleInfo,class:`note__icon`},null,8,[`icon`]),t(`p`,be,s(n.$t(`common.message.mobileInstallNote`)),1)])])])}var Se=g(C,[[`render`,xe],[`__scopeId`,`data-v-46efd51c`]]);export{Se as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.download-page[data-v-46efd51c]{background:var(--el-bg-color);min-height:calc(100vh - 80px);color:var(--el-text-color-primary);position:relative;overflow:hidden}.download-page__glow[data-v-46efd51c]{background:radial-gradient(circle at center, rgba(var(--app-brand-rgb), .18), transparent 68%);pointer-events:none;z-index:0;width:760px;max-width:120vw;height:460px;position:absolute;top:-180px;left:50%;transform:translate(-50%)}.download-page__inner[data-v-46efd51c]{z-index:1;max-width:1080px;margin:0 auto;padding:72px 24px 96px;position:relative}.hero[data-v-46efd51c]{text-align:center;max-width:720px;margin:0 auto 56px}.hero__brand[data-v-46efd51c]{justify-content:center;align-items:center;margin-bottom:26px;display:inline-flex}.hero__logo[data-v-46efd51c]{-o-object-fit:contain;object-fit:contain;width:auto;height:42px;display:block}.hero__eyebrow[data-v-46efd51c]{letter-spacing:.14em;text-transform:uppercase;color:var(--app-brand-hex);margin:0 0 14px;font-size:13px;font-weight:700}.hero__title[data-v-46efd51c]{letter-spacing:-.02em;color:var(--el-text-color-primary);margin:0 0 18px;font-size:clamp(34px,5vw,54px);font-weight:800;line-height:1.08}.hero__subtitle[data-v-46efd51c]{max-width:600px;color:var(--el-text-color-regular);margin:0 auto 32px;font-size:18px;line-height:1.7}.hero__badges[data-v-46efd51c]{flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:36px;display:flex}.badge[data-v-46efd51c]{background:var(--app-bg-section);border:1px solid var(--app-border-subtle);color:var(--el-text-color-regular);border-radius:999px;align-items:center;gap:8px;padding:9px 16px;font-size:13px;font-weight:600;display:inline-flex}.badge--live[data-v-46efd51c]{background:rgba(var(--app-brand-rgb), .1);border-color:rgba(var(--app-brand-rgb), .22);color:var(--app-brand-hex)}.badge__dot[data-v-46efd51c]{background:#10b981;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #10b9812e}.hero__actions[data-v-46efd51c]{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.btn-icon[data-v-46efd51c]{margin-right:8px}.btn-ghost[data-v-46efd51c]{background:var(--app-bg-surface);border-color:var(--app-border-subtle);color:var(--el-text-color-primary)}.platforms[data-v-46efd51c]{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:56px;display:grid}.platform[data-v-46efd51c]{background:var(--app-bg-surface);border:1px solid var(--app-border-subtle);box-shadow:var(--app-shadow-md);border-radius:20px;flex-direction:column;padding:32px;transition:box-shadow .2s,transform .2s;display:flex}.platform[data-v-46efd51c]:hover{box-shadow:var(--app-shadow-lg);transform:translateY(-2px)}.platform__head[data-v-46efd51c]{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.platform__os[data-v-46efd51c]{color:var(--el-text-color-primary);align-items:center;gap:9px;font-size:15px;font-weight:700;display:inline-flex}.platform__os-icon[data-v-46efd51c]{color:var(--app-brand-hex);font-size:20px}.platform--ios .platform__os-icon[data-v-46efd51c]{color:var(--el-text-color-primary)}.chip[data-v-46efd51c]{white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:6px 12px;font-size:12px;font-weight:700;display:inline-flex}.chip__dot[data-v-46efd51c]{border-radius:50%;width:7px;height:7px}.chip--live[data-v-46efd51c]{color:#047857;background:#10b98124}.chip--live .chip__dot[data-v-46efd51c]{background:#10b981}.chip--pending[data-v-46efd51c]{color:#b45309;background:#f59e0b29}.chip--pending .chip__dot[data-v-46efd51c]{background:#f59e0b}.platform__title[data-v-46efd51c]{color:var(--el-text-color-primary);margin:0 0 10px;font-size:26px;font-weight:800;line-height:1.2}.platform__text[data-v-46efd51c]{color:var(--el-text-color-regular);margin:0 0 22px;font-size:15px;line-height:1.7}.qr[data-v-46efd51c]{flex-direction:column;align-items:center;gap:12px;margin-bottom:24px;display:flex}.qr__img[data-v-46efd51c]{background:#fff;border-radius:18px;padding:16px;display:block;box-shadow:inset 0 0 0 1px #0f172a14}.qr__hint[data-v-46efd51c]{letter-spacing:.06em;text-transform:uppercase;color:var(--el-text-color-secondary);margin:0;font-size:11px;font-weight:600}.ios-soon[data-v-46efd51c]{background:var(--app-bg-section);border:1px dashed var(--app-border-subtle);border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:14px;margin-bottom:24px;padding:36px 24px;display:flex}.ios-soon__icon[data-v-46efd51c]{color:var(--el-text-color-secondary);font-size:42px}.ios-soon__text[data-v-46efd51c]{color:var(--el-text-color-regular);margin:0;font-size:14px;font-weight:600}.platform__foot[data-v-46efd51c]{justify-content:space-between;align-items:center;gap:16px;margin-top:auto;display:flex}.platform__foot--stack[data-v-46efd51c]{flex-direction:column;align-items:stretch;gap:12px}.btn-row[data-v-46efd51c]{flex-wrap:wrap;gap:12px;display:flex}.platform__fallback[data-v-46efd51c]{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.platform__meta[data-v-46efd51c]{color:var(--el-text-color-secondary);font-size:12px;line-height:1.6}.advantages[data-v-46efd51c]{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:40px;display:grid}.advantage[data-v-46efd51c]{background:var(--app-bg-section);border:1px solid var(--app-border-subtle);border-radius:20px;padding:28px}.advantage__num[data-v-46efd51c]{letter-spacing:.12em;color:var(--app-brand-hex);margin-bottom:16px;font-size:13px;font-weight:800;display:inline-block}.advantage__title[data-v-46efd51c]{color:var(--el-text-color-primary);margin:0 0 10px;font-size:19px;font-weight:700;line-height:1.3}.advantage__text[data-v-46efd51c]{color:var(--el-text-color-regular);margin:0;font-size:14px;line-height:1.7}.note[data-v-46efd51c]{background:rgba(var(--app-brand-rgb), .07);border:1px solid rgba(var(--app-brand-rgb), .16);border-radius:16px;align-items:flex-start;gap:12px;padding:20px 24px;display:flex}.note__icon[data-v-46efd51c]{color:var(--app-brand-hex);flex-shrink:0;margin-top:2px;font-size:18px}.note__text[data-v-46efd51c]{color:var(--el-text-color-regular);margin:0;font-size:14px;line-height:1.7}html.dark .hero__brand[data-v-46efd51c]{box-shadow:var(--app-shadow-md);background:#fff;border-radius:16px;padding:12px 20px}html.dark .qr__img[data-v-46efd51c]{box-shadow:inset 0 0 0 1px #ffffff1a}@media (width<=860px){.platforms[data-v-46efd51c],.advantages[data-v-46efd51c]{grid-template-columns:1fr}}@media (width<=600px){.download-page__inner[data-v-46efd51c]{padding:48px 16px 72px}.platform[data-v-46efd51c]{padding:24px}.platform__head[data-v-46efd51c]{flex-wrap:wrap}.hero__actions[data-v-46efd51c] .el-button{width:100%;margin-left:0}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime--c01j_DQ.js";import{$ as e,A as t,D as n,F as r,N as i,O as a,P as o,S as s,Vt as c,Wt as l,Z as u,b as d,dt as f,et as p,k as m,tt as h,ut as g,v as _}from"./vendor-chart-BJCvKk8-.js";import{t as v}from"./button-BydTr5nV.js";import{r as y,t as b}from"./select-BvQYOmI2.js";import{t as x}from"./upload-DPeZOsKX.js";import{t as S}from"./tooltip-BxeH2Vts.js";import{t as C}from"./image-cD_rczcG.js";import{t as w}from"./alert-CuX4SjQB.js";import{t as T}from"./drawer-R6pcaap2.js";import{Fn as E,Nn as D,Pn as O,jn as k}from"./constants-C0JMy8iD.js";import{Ar as A,Br as j,E as M,Ft as N,It as ee,Lt as te,Nr as P,Pt as F,Wn as I,cn as L,zt as R}from"./index-BFMUZID8.js";import{t as z}from"./index.es-BxSKbWOt.js";import{t as B}from"./CopyToClipboard-BL1mORNs.js";import{t as V}from"./ImagePreview-zIkpquFk.js";import{n as H}from"./taskDrawerMixin-DEgO_R5H.js";import{t as U}from"./Consumption-D95jv4pS.js";import{n as W,t as G}from"./pagination-YjZU0Dg4.js";import{t as K}from"./ApiCodeButton-DQxU3p1V.js";import{t as q}from"./BotPlaceholder-DvPHgYBu.js";import{t as J}from"./NoTasks-C9K3EXND.js";import{t as Y}from"./InfoIcon-BBrKSUP1.js";import{t as X}from"./PromptTextarea-BUwjXqO4.js";import{t as Z}from"./ImageWrapper-DLyrD-qP.js";var Q=r({name:`LayoutNanobanana`,components:{ElDrawer:T,ElButton:v,FontAwesomeIcon:z},mixins:[H]}),ne={class:`main flex flex-row flex-1`},re={class:`config w-[320px] flex-none h-full overflow-y-auto bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},ie={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ae(e,r,i,a,s,c){let l=h(`font-awesome-icon`),d=h(`el-button`),m=h(`el-drawer`);return u(),t(`div`,ne,[n(`div`,re,[p(e.$slots,`config`,{},void 0,!0)]),n(`div`,ie,[p(e.$slots,`result`,{},void 0,!0)]),f(o(d,{circle:``,class:`menu`,onClick:r[0]||=t=>e.drawer=!0},{default:g(()=>[o(l,{icon:`fa-solid fa-magic`})]),_:1},512),[[_,!e.tasksEmpty]]),o(m,{modelValue:e.drawer,"onUpdate:modelValue":r[1]||=t=>e.drawer=t,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer`},{default:g(()=>[p(e.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var oe=M(Q,[[`render`,ae],[`__scopeId`,`data-v-d7e69eb2`]]),se=r({name:`PromptInput`,components:{PromptTextarea:X},computed:{prompt:{get(){return this.$store.state.nanobanana?.config?.prompt},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,prompt:e})}}},mounted(){this.prompt||=``}});function ce(e,t,n,r,i,o){let s=h(`prompt-textarea`);return u(),a(s,{modelValue:e.prompt,"onUpdate:modelValue":t[0]||=t=>e.prompt=t,title:e.$t(`nanobanana.name.prompt`),info:e.$t(`nanobanana.description.prompt`),placeholder:e.$t(`nanobanana.placeholder.prompt`)},null,8,[`modelValue`,`title`,`info`,`placeholder`])}var le=M(se,[[`render`,ce]]),ue=r({name:`ImageUrlsInput`,components:{ElUpload:x,ElButton:v,InfoIcon:Y,ImagePreview:V,FontAwesomeIcon:z},mixins:[te,N],data(){return{fileList:[],uploadUrl:P()+`/api/v1/files/`,suppressWatch:!1}},computed:{headers(){return{Authorization:`Bearer ${this.$store.state.token.access}`}},urls(){return this.fileList.map(e=>e?.response?.file_url).filter(e=>!!e)},value(){return this.$store.state.nanobanana?.config?.image_urls}},watch:{value:{immediate:!0,handler(e){if(this.suppressWatch)return;if(!e||e.length===0){let e=(this.fileList||[]).filter(e=>!e?.response?.file_url);this.fileList=e.length?e:[];return}let t=[];e.forEach(e=>{let n=this.fileList.find(t=>t?.response?.file_url===e||t?.url===e);n?t.push(n):t.push({name:e.split(`/`).pop()||e,url:e,status:`success`,percentage:100,response:{file_url:e}})}),(this.fileList||[]).filter(e=>!e?.response?.file_url).forEach(e=>{t.some(t=>t===e||t?.url===e?.url||t?.response?.file_url===e?.response?.file_url)||t.push(e)}),this.fileList=t}}},mounted(){},methods:{onChange(e){if(!e?.url&&e?.raw)try{e.url=URL.createObjectURL(e.raw)}catch{}},onRemove(e){if(e?.url&&typeof e.url==`string`&&e.url.startsWith(`blob:`))try{URL.revokeObjectURL(e.url)}catch{}this.onSetImageUrls()},onExceed(){j.warning(this.$t(`nanobanana.message.uploadImageExceed`))},onError(){j.error(this.$t(`nanobanana.message.uploadImageError`))},onSetImageUrls(){let e=this.urls;this.suppressWatch=!0,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,image_urls:e}),this.$nextTick(()=>{this.suppressWatch=!1})},async onSuccess(e,t){e?.file_url&&(t.url=e.file_url,t.response=e),this.onSetImageUrls()},onRemovePreview(e,t){if(this.fileList.splice(e,1),t?.url&&typeof t.url==`string`&&t.url.startsWith(`blob:`))try{URL.revokeObjectURL(t.url)}catch{}this.onSetImageUrls()}}}),de={class:`field flex items-center justify-between`},fe={class:`title font-bold text-[14px] mb-[10px]`},pe={class:`upload-wrapper flex flex-col items-start gap-[8px]`},me={class:`controls flex items-center`},he={class:`file-list flex flex-wrap gap-[10px]`};function ge(r,c,d,f,p,m){let _=h(`font-awesome-icon`),v=h(`el-button`),y=h(`el-upload`),b=h(`info-icon`),x=h(`image-preview`);return u(),t(s,null,[n(`div`,de,[n(`h2`,fe,l(r.$t(`nanobanana.name.imageUrls`)),1),n(`div`,pe,[n(`div`,me,[o(y,{ref:`uploader`,"file-list":r.fileList,"onUpdate:fileList":c[0]||=e=>r.fileList=e,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,name:`file`,class:`value`,limit:5,multiple:!0,"show-file-list":!1,action:r.uploadUrl,"on-exceed":r.onExceed,"on-error":r.onError,"on-success":r.onSuccess,"on-change":r.onChange,"on-remove":r.onRemove,headers:r.headers},{default:g(()=>[o(v,{size:`small`,type:`primary`,round:``},{default:g(()=>[o(_,{icon:`fa-solid fa-upload`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.button.uploadImageUrls`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`on-change`,`on-remove`,`headers`]),o(b,{content:r.$t(`nanobanana.description.imageUrls`),class:`ml-2`},null,8,[`content`])])])]),n(`div`,he,[(u(!0),t(s,null,e(r.fileList,(e,t)=>(u(),a(x,{key:e.uid||e?.response?.file_url||e.url||t,url:e.url||e?.response?.file_url,name:e.name,percentage:e.percentage,onRemove:n=>r.onRemovePreview(t,e)},null,8,[`url`,`name`,`percentage`,`onRemove`]))),128))])],64)}var _e=M(ue,[[`render`,ge]]),ve=r({name:`AspectRatioSelector`,components:{ElSelect:y,ElOption:b},data(){return{options:[`1:1`,`3:2`,`2:3`,`16:9`,`9:16`,`4:3`,`3:4`]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.aspect_ratio},set(e){console.debug(`set aspect_ratio`,e);let t={...this.$store.state.nanobanana?.config||{}};e?t.aspect_ratio=e:delete t.aspect_ratio,this.$store.commit(`nanobanana/setConfig`,t)}}}}),ye={class:`field`},be={class:`title font-bold`};function xe(r,i,c,d,f,p){let m=h(`el-option`),_=h(`el-select`);return u(),t(`div`,ye,[n(`h2`,be,l(r.$t(`nanobanana.name.aspectRatio`)),1),o(_,{modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e,class:`value`,clearable:``,placeholder:r.$t(`nanobanana.placeholder.select`)},{default:g(()=>[(u(!0),t(s,null,e(r.options,e=>(u(),a(m,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Se=M(ve,[[`render`,xe],[`__scopeId`,`data-v-67f08a08`]]),Ce=r({name:`NanobananaModelSelector`,components:{ElSelect:y,ElOption:b,InfoIcon:Y},data(){return{options:[{value:D,label:this.$t(`nanobanana.model.nanoBanana`)},{value:E,label:this.$t(`nanobanana.model.nanoBananaPro`)},{value:O,label:this.$t(`nanobanana.model.nanoBanana2`)}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.model},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,model:e})}},modelDescription(){return this.$t(`nanobanana.description.model`)}},mounted(){this.value||=k}}),we={class:`field`},Te={class:`label`},Ee={class:`box`},De={class:`title font-bold`};function Oe(r,i,c,d,f,p){let m=h(`info-icon`),_=h(`el-option`),v=h(`el-select`);return u(),t(`div`,we,[n(`div`,Te,[n(`div`,Ee,[n(`h2`,De,l(r.$t(`nanobanana.name.model`)),1),o(m,{content:r.modelDescription,class:`info`},null,8,[`content`])])]),o(v,{modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e,class:`value`,placeholder:r.$t(`nanobanana.placeholder.select`)},{default:g(()=>[(u(!0),t(s,null,e(r.options,e=>(u(),a(_,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var ke=M(Ce,[[`render`,Oe],[`__scopeId`,`data-v-94304d73`]]),Ae=r({name:`NanobananaResolutionSelector`,components:{ElSelect:y,ElOption:b,InfoIcon:Y},data(){return{cachedResolution:`1K`,options:[{value:`1K`,label:`1K`},{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]}},computed:{value:{get(){return this.$store.state.nanobanana?.config?.resolution},set(e){this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:e})}},isProModel(){return this.$store.state.nanobanana?.config?.model!==D}},watch:{value(e){this.isProModel&&e&&(this.cachedResolution=e)},isProModel(e){e?this.value||=this.cachedResolution||`1K`:(this.value&&(this.cachedResolution=this.value),this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}},mounted(){this.isProModel&&!this.value&&(this.value=`1K`),!this.isProModel&&this.value&&(this.cachedResolution=this.value,this.$store.commit(`nanobanana/setConfig`,{...this.$store.state.nanobanana?.config,resolution:void 0}))}}),je={class:`field`},Me={class:`label`},Ne={class:`box`},Pe={class:`title font-bold`};function Fe(r,i,c,d,f,p){let m=h(`info-icon`),_=h(`el-option`),v=h(`el-select`);return u(),t(`div`,je,[n(`div`,Me,[n(`div`,Ne,[n(`h2`,Pe,l(r.$t(`nanobanana.name.resolution`)),1),o(m,{content:r.$t(`nanobanana.description.resolutionProOnly`),class:`info`},null,8,[`content`])])]),o(v,{modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e,class:`value`,placeholder:r.$t(`nanobanana.placeholder.select`),disabled:!r.isProModel},{default:g(()=>[(u(!0),t(s,null,e(r.options,e=>(u(),a(_,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])])}var Ie=r({name:`ConfigPanel`,components:{ElButton:v,FontAwesomeIcon:z,PromptInput:le,Consumption:U,ImageUrlsInput:_e,AspectRatioSelector:Se,ModelSelector:ke,ResolutionSelector:M(Ae,[[`render`,Fe],[`__scopeId`,`data-v-fd5ab393`]])},emits:[`generate`],computed:{config(){return this.$store.state.nanobanana?.config},consumption(){let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;return R({...e,action:t?`edit`:`generate`},this.service?.cost)},service(){return this.$store.state.nanobanana?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),Le={class:`flex flex-col h-full`},Re={class:`flex-1 overflow-y-auto p-5`},ze={class:`flex flex-col items-center justify-center px-5 pb-5`};function Be(e,r,a,s,c,d){let f=h(`model-selector`),p=h(`resolution-selector`),m=h(`prompt-input`),_=h(`aspect-ratio-selector`),v=h(`image-urls-input`),y=h(`consumption`),b=h(`font-awesome-icon`),x=h(`el-button`);return u(),t(`div`,Le,[n(`div`,Re,[o(f,{class:`mb-4`}),o(p,{class:`mb-4`}),o(m,{class:`mb-4`}),o(_,{class:`mb-4`}),o(v,{class:`mb-4`})]),n(`div`,ze,[o(y,{value:e.consumption,service:e.service},null,8,[`value`,`service`]),o(x,{type:`primary`,class:`btn w-full`,round:``,onClick:e.onGenerate},{default:g(()=>[o(b,{icon:`fa-solid fa-magic`,class:`mr-2`}),i(` `+l(e.$t(`nanobanana.button.generate`)),1)]),_:1},8,[`onClick`])])])}var Ve=M(Ie,[[`render`,Be]]),He=r({name:`TaskPreview`,components:{ElImage:C,CopyToClipboard:B,FontAwesomeIcon:z,ElAlert:w,ImageWrapper:Z,ElButton:v,ElTooltip:S,ImagePreview:V,ApiCodeButton:K},props:{modelValue:{type:Object,required:!0}},computed:{images(){let e=[];return Array.isArray(this.modelValue?.response?.data)&&this.modelValue?.response?.data?.forEach(t=>{e.push(t)}),e}},methods:{onEdit(e){if(!e)return;console.debug(`Edit image:`,e);let t={...this.$store.state.nanobanana?.config||{}};delete t.action,t.image_urls=[e],this.$store.commit(`nanobanana/setConfig`,t)}}}),Ue={class:`preview`},We={class:`left`},Ge={class:`main`},Ke={class:`bot`},qe={class:`datetime`},Je={class:`info`},Ye={key:0,class:`flex justify-start items-center gap-2 mt-2 w-full overflow-x-auto`},Xe={key:1,class:`prompt mt-2`},Ze={key:0},Qe={key:0,class:c({content:!0,failed:!0})},$e={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},et={class:c({operations:!0,"mt-2":!0,"mb-2":!0})},tt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},nt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},rt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},it={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},at={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ot={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},st={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},ct={key:1,class:c({content:!0})},lt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ut={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},dt={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ft={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},pt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},mt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ht={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},gt={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},_t={key:2,class:c({content:!0})},vt={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},yt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={key:2,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},bt={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},xt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`};function St(r,c,f,p,_,v){let y=h(`el-image`),b=h(`image-preview`),x=h(`image-wrapper`),S=h(`el-button`),C=h(`el-tooltip`),w=h(`api-code-button`),T=h(`font-awesome-icon`),E=h(`copy-to-clipboard`),D=h(`el-alert`);return u(),t(`div`,Ue,[n(`div`,We,[o(y,{src:`https://cdn.acedata.cloud/859plc.jpg`,class:`avatar`})]),n(`div`,Ge,[n(`div`,Ke,[i(l(r.$t(`nanobanana.name.nanobananaBot`))+` `,1),n(`span`,qe,l(r.$dayjs.format(``+new Date(parseFloat((r.modelValue?.created_at||``).toString())*1e3))),1)]),n(`div`,Je,[r.modelValue?.request?.image_urls&&r.modelValue?.request?.image_urls.length>0?(u(),t(`div`,Ye,[(u(!0),t(s,null,e(r.modelValue?.request?.image_urls,(e,t)=>(u(),a(b,{key:t,url:e,name:`image-${t+1}`,closable:!1},null,8,[`url`,`name`]))),128))])):m(``,!0),r.modelValue?.request?.prompt?(u(),t(`p`,Xe,[i(l(r.modelValue?.request?.prompt)+` `,1),r.modelValue?.response?m(``,!0):(u(),t(`span`,Ze,` - (`+l(r.$t(`nanobanana.status.pending`))+`) `,1))])):m(``,!0)]),r.modelValue?.response?.success===!0?(u(),t(`div`,Qe,[n(`div`,$e,[(u(!0),t(s,null,e(r.images,(e,t)=>(u(),a(x,{key:t,src:e?.image_url,"raw-src":e?.image_url},null,8,[`src`,`raw-src`]))),128))]),n(`div`,et,[o(C,{class:`box-item`,effect:`dark`,content:r.$t(`common.button.edit`),placement:`top-start`},{default:g(()=>[o(S,{type:`info`,size:`small`,class:`btn-action`,onClick:c[0]||=d(e=>r.onEdit(r.images?.[0]?.image_url),[`stop`])},{default:g(()=>[i(l(r.$t(`common.button.edit`)),1)]),_:1})]),_:1},8,[`content`]),o(w,{path:`/nano-banana/images`,body:r.modelValue?.request},null,8,[`body`])]),o(D,{closable:!1,class:`mt-2 success`},{default:g(()=>[r.modelValue?.request?.model?(u(),t(`p`,tt,[o(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.model`))+`: `+l(r.modelValue?.request?.model),1)])):m(``,!0),r.modelValue?.request?.resolution?(u(),t(`p`,nt,[o(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.resolution`))+`: `+l(r.modelValue?.request?.resolution),1)])):m(``,!0),r.modelValue?.request?.aspect_ratio?(u(),t(`p`,rt,[o(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.aspectRatio`))+`: `+l(r.modelValue?.request?.aspect_ratio),1)])):m(``,!0),r.modelValue?.request?.action?(u(),t(`p`,it,[o(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.task`))+`: `+l(r.modelValue?.request?.action===`generate`?r.$t(`nanobanana.name.generate`):r.$t(`nanobanana.name.edits`)),1)])):m(``,!0),n(`p`,at,[o(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.taskId`))+`: `+l(r.modelValue?.id)+` `,1),o(E,{content:r.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),r.modelValue?.elapsed?(u(),t(`p`,ot,[o(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.elapsed`))+`: `+l(r.modelValue?.elapsed?.toFixed(2))+`s `,1)])):m(``,!0),r.modelValue?.response?.trace_id?(u(),t(`p`,st,[o(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.traceId`))+`: `+l(r.modelValue?.response?.trace_id)+` `,1),o(E,{content:r.modelValue?.response?.trace_id,class:`btn-copy inline-block`},null,8,[`content`])])):m(``,!0)]),_:1})])):r.modelValue?.response?.success===!1?(u(),t(`div`,ct,[o(D,{closable:!1,class:`failure`},{template:g(()=>[o(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.failure`)),1)]),default:g(()=>[r.modelValue?.request?.model?(u(),t(`p`,lt,[o(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.model`))+`: `+l(r.modelValue?.request?.model),1)])):m(``,!0),r.modelValue?.request?.resolution?(u(),t(`p`,ut,[o(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.resolution`))+`: `+l(r.modelValue?.request?.resolution),1)])):m(``,!0),r.modelValue?.request?.aspect_ratio?(u(),t(`p`,dt,[o(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.aspectRatio`))+`: `+l(r.modelValue?.request?.aspect_ratio),1)])):m(``,!0),r.modelValue?.request?.action?(u(),t(`p`,ft,[o(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.task`))+`: `+l(r.modelValue?.request?.action===`generate`?r.$t(`nanobanana.name.generate`):r.$t(`nanobanana.name.edits`)),1)])):m(``,!0),n(`p`,pt,[o(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.taskId`))+`: `+l(r.modelValue?.id)+` `,1),o(E,{content:r.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),n(`p`,mt,[o(T,{icon:`fa-solid fa-circle-info`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.failureReason`))+`: `+l(r.modelValue?.response?.error?.message)+` `,1),o(E,{content:r.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),r.modelValue?.elapsed?(u(),t(`p`,ht,[o(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.elapsed`))+`: `+l(r.modelValue?.elapsed?.toFixed(2))+`s `,1)])):m(``,!0),r.modelValue?.response?.trace_id?(u(),t(`p`,gt,[o(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.traceId`))+`: `+l(r.modelValue?.response?.trace_id)+` `,1),o(E,{content:r.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])):m(``,!0)]),_:1})])):(u(),t(`div`,_t,[o(D,{closable:!1,class:`info`},{template:g(()=>[o(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.failure`)),1)]),default:g(()=>[r.modelValue?.request?.model?(u(),t(`p`,vt,[o(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.model`))+`: `+l(r.modelValue?.request?.model),1)])):m(``,!0),r.modelValue?.request?.resolution?(u(),t(`p`,yt,[o(T,{icon:`fa-solid fa-image`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.resolution`))+`: `+l(r.modelValue?.request?.resolution),1)])):m(``,!0),r.modelValue?.request?.aspect_ratio?(u(),t(`p`,$,[o(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.aspectRatio`))+`: `+l(r.modelValue?.request?.aspect_ratio),1)])):m(``,!0),r.modelValue?.request?.action?(u(),t(`p`,bt,[o(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.task`))+`: `+l(r.modelValue?.request?.action===`generate`?r.$t(`nanobanana.name.generate`):r.$t(`nanobanana.name.edits`)),1)])):m(``,!0),n(`p`,xt,[o(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),i(` `+l(r.$t(`nanobanana.name.taskId`))+`: `+l(r.modelValue?.id)+` `,1),o(E,{content:r.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})]))])])}var Ct=r({name:`RecentPanel`,components:{TaskPreview:M(He,[[`render`,St],[`__scopeId`,`data-v-63f58569`]]),BotPlaceholder:q,NoTasks:J,ScrollList:W},props:{loading:{type:Boolean,default:!1}},emits:[`reach-top`],data(){return{job:0}},computed:{tasks(){return{...this.$store.state.nanobanana?.tasks,items:this.$store.state.nanobanana?.tasks?.items?.slice()}}},methods:{getScrollElement(){return this.$refs.scrollList?.getScrollElement?.()}}}),wt={key:0},Tt={key:2,class:`w-full h-full flex items-center justify-center`};function Et(n,r,i,c,l,d){let f=h(`bot-placeholder`),p=h(`task-preview`),_=h(`scroll-list`),v=h(`no-tasks`);return u(),t(s,null,[n.tasks?.items===void 0?(u(),t(`div`,wt,[o(f)])):n.tasks?.items?.length&&n.tasks?.items?.length>0?(u(),a(_,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:n.loading,onReachTop:r[0]||=e=>n.$emit(`reach-top`)},{default:g(()=>[(u(!0),t(s,null,e(n.tasks?.items,e=>(u(),a(p,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):m(``,!0),n.tasks?.items?.length===0?(u(),t(`div`,Tt,[o(v)])):m(``,!0)],64)}var Dt=r({name:`NanobananaIndex`,components:{ConfigPanel:Ve,Layout:oe,RecentPanel:M(Ct,[[`render`,Et]])},mixins:[ee],inject:[`initialized`],data(){return{task:void 0,job:0,loading:!1}},computed:{applicationsLoading(){return this.$store.state.nanobanana?.status?.getApplications===A.Request},tasksLoading(){return this.$store.state.nanobanana?.status?.getTasks===A.Request},credential(){return this.$store.state.nanobanana?.credential},config(){return this.$store.state.nanobanana?.config},application(){return this.$store.state.nanobanana?.application},tasks(){return this.$store.state.nanobanana?.tasks}},watch:{tasks:{handler(e,t){e?.items?.length>t?.items?.length&&console.debug(`new tasks detected`)},deep:!0},initialized:{async handler(e){e&&(console.debug(`layout initialized`),await this.onGetTasks(),await this.onScrollDown(),this.job=window.setInterval(()=>{this.onGetTasks()},5e3))},immediate:!0}},async mounted(){await this.onGetService()},async unmounted(){window.clearInterval(this.job)},methods:{async onReachTop(){await G({tasks:this.tasks,getTasks:()=>this.tasks,loading:this.loading,setLoading:e=>this.loading=e,isBlocked:()=>this.tasksLoading,fetch:e=>this.onGetTasks({createdAtMax:e}),getScrollElement:()=>this.getTasksScrollElement()})},async onGetService(){console.debug(`start onGetService`),await this.$store.dispatch(`nanobanana/getService`),console.debug(`end onGetService`)},async onGetApplication(){console.debug(`start onGetApplication`),await this.$store.dispatch(`nanobanana/getApplications`),console.debug(`end onGetApplication`),await this.onGetTasks()},async onScrollDown(){await this.$nextTick();let e=this.getTasksScrollElement();e&&(e.scrollTop=e.scrollHeight)},async onGetTasks(e){if(this.applicationsLoading||this.tasksLoading){console.debug(`loading`);return}console.debug(`start onGetTasks`,e);let{limit:t=20,createdAtMin:n,createdAtMax:r}=e||{};console.debug(`limit`,t,`createdAtMin`,n,`createdAtMax`,r),await this.$store.dispatch(`nanobanana/getTasks`,{limit:t,createdAtMin:n,createdAtMax:r})},async onGenerate(){if(!F(this.uploadTracker,e=>this.$t(e),e=>j.warning(e)))return;let e={...this.config||{}},t=Array.isArray(e?.image_urls)&&e.image_urls.length>0;delete e.action,!t&&`image_urls`in e&&delete e.image_urls,e?.aspect_ratio||delete e.aspect_ratio,e?.model!==`nano-banana-pro`&&`resolution`in e&&delete e.resolution,e?.model===`nano-banana-pro`&&!e?.resolution&&(e.resolution=`1K`);let n={...e,action:t?`edit`:`generate`,async:!0},r=this.credential?.token;if(!r){console.error(`no token specified`);return}j.info(this.$t(`nanobanana.message.startingTask`)),I(`nanobanana`,L.generate(n,{token:r})).then(()=>{j.success(this.$t(`nanobanana.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?j.error(this.$t(`nanobanana.message.usedUp`)):j.error(this.$t(`nanobanana.message.startTaskFailed`)+(t?.error?.message||``))}).finally(async()=>{setTimeout(async()=>{await this.onGetTasks(),await this.onScrollDown()},1e3)})},getTasksScrollElement(){return this.$refs.recentPanel?.getScrollElement?.()}}});function Ot(e,t,n,r,i,s){let c=h(`config-panel`),l=h(`recent-panel`),d=h(`layout`);return u(),a(d,null,{config:g(()=>[o(c,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:g(()=>[o(l,{ref:`recentPanel`,loading:e.loading,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var kt=M(Dt,[[`render`,Ot]]);export{kt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"button.setup":{message:`Einrichten`,description:`Text im Button, der für die Einstellungen verwendet wird`},"button.start":{message:`Starten`,description:`Text im Button, der verwendet wird, um bestimmte Aktionen zu starten`},"button.copy":{message:`Kopieren`,description:`Text im Button, der verwendet wird, um etwas zu kopieren`},"button.copied":{message:`Kopiert`,description:`Text im Button, der anzeigt, dass der Inhalt kopiert wurde`},"button.restart":{message:`Neu generieren`,description:`Text im Button, der verwendet wird, um bestimmte Inhalte neu zu generieren`},"button.preview":{message:`Vorschau`,description:`Text im Button, der verwendet wird, um eine Vorschau einer Datei über die URL zu öffnen`},"button.seeRawImage":{message:`Originalbild anzeigen`,description:`Text im Button, der verwendet wird, um das Originalbild anzuzeigen`},"button.seeRawVideo":{message:`Video anzeigen`,description:`Text im Button, der verwendet wird, um das Originalvideo anzuzeigen`},"button.edit":{message:`Bearbeiten`,description:`Text im Button, der verwendet wird, um Inhalte zu bearbeiten`},"button.login":{message:`Anmelden`,description:`Text im Button, der verwendet wird, um sich anzumelden`},"button.logout":{message:`Abmelden`,description:`Text im Button, der verwendet wird, um sich abzumelden`},"button.new":{message:`Neu`,description:`Text im Button, der verwendet wird, um einen neuen Eintrag zu erstellen`},"button.delete":{message:`Löschen`,description:`Text im Button, der verwendet wird, um Inhalte zu löschen`},"button.deletePermanently":{message:`Konto dauerhaft löschen`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Bestätigen`,description:`Text im Button, der verwendet wird, um eine Aktion zu bestätigen`},"button.cancel":{message:`Abbrechen`,description:`Text im Button, der verwendet wird, um eine Aktion abzubrechen`},"button.close":{message:`Schließen`,description:`Text im Button, der verwendet wird, um ein Dialogfeld oder Panel zu schließen`},"button.expand":{message:`Erweitern`,description:`Schaltflächenhinweistext, um den Vollbild-Editor für die Eingabeaufforderung zu öffnen.`},"button.alert":{message:`Warnung`,description:`Text im Button, der verwendet wird, um eine Warnung auszugeben`},"button.info":{message:`Information`,description:`Text im Button, der verwendet wird, um Informationen anzuzeigen`},"button.publish":{message:`Veröffentlichen`,description:`Text im Button, der verwendet wird, um Inhalte zu veröffentlichen`},"button.watch":{message:`Ansehen`,description:`Text im Button, der verwendet wird, um Inhalte anzusehen`},"button.verify":{message:`Identitätsprüfung`,description:`Text im Button, der den Benutzer zur Identitätsprüfung auffordert`},"button.profile":{message:`Profil`,description:`Text im Button, der verwendet wird, um das Benutzerprofil anzuzeigen`},"button.console":{message:`Konsole`,description:`Text im Button, der verwendet wird, um die Konsolenseite anzuzeigen, um Inhalte auf der Webseite zu steuern`},"button.learn":{message:`Lernen`,description:`Text im Button, der verwendet wird, um den Benutzern das Lernen von Inhalten zu ermöglichen`},"button.buy":{message:`Kaufen`,description:`Text im Button, der verwendet wird, um den Benutzern den Kauf von Inhalten zu ermöglichen`},"button.try":{message:`Ausprobieren`,description:`Text im Button, der verwendet wird, um den Benutzern das Ausprobieren von Inhalten zu ermöglichen`},"button.startForFree":{message:`Kostenlos starten`,description:`Text im Button, der verwendet wird, um den Benutzern den kostenlosen Start zu ermöglichen`},"button.download":{message:`Herunterladen`,description:`Text im Button, der verwendet wird, um Dateien (z. B. Audio, Video, Bilder) herunterzuladen`},"button.downloadAndroid":{message:`Android herunterladen`,description:`Text im Button, der verwendet wird, um das Android-Installationspaket herunterzuladen`},"button.downloadIos":{message:`iOS-Installationspaket herunterladen`,description:`Text im Button, der verwendet wird, um die iOS-Installationsdatei herunterzuladen`},"button.installIos":{message:`iOS installieren`,description:`Text im Button, der verwendet wird, um die iOS-Anwendung zu installieren`},"button.apply":{message:`Beantragen`,description:`Text im Button, der verwendet wird, um den Benutzern die Beantragung eines API-Dienstes zu ermöglichen`},"button.refresh":{message:`Aktualisieren`,description:`Text im Button, der verwendet wird, um die Seite zu aktualisieren`},"button.pay":{message:`Bezahlen`,description:`Text im Button, der verwendet wird, um den Benutzern die Zahlung von Dienstgebühren zu ermöglichen`},"button.repay":{message:`Zahlung fortsetzen`,description:`Text im Button, der verwendet wird, um den Benutzern die Fortsetzung der Zahlung von Dienstgebühren zu ermöglichen`},"button.applied":{message:`Beantragt`,description:`Text im Button, der anzeigt, dass der Benutzer diesen Dienst beantragt hat`},"button.acquire":{message:`Erhalten`,description:`Text im Button, der verwendet wird, um den Benutzern das Erhalten eines Tokens oder Schlüssels für den API-Dienst zu ermöglichen`},"button.fillExample":{message:`Beispiel ausfüllen`,description:`Text im Button, der verwendet wird, um den Benutzern das Ausfüllen von Beispieldaten zu ermöglichen`},"button.buyMore":{message:`Aufladen`,description:`Text im Button, der verwendet wird, um den Benutzern das Aufladen zu ermöglichen. Englisch muss als 'Top Up' übersetzt werden, Chinesisch als '充值'.`},"button.update":{message:`Aktualisieren`,description:`Text im Button, der verwendet wird, um Inhalte zu aktualisieren`},"button.view":{message:`Ansehen`,description:`Text im Button, der verwendet wird, um Inhalte anzusehen`},"button.create":{message:`Erstellen`,description:`Text im Button, der verwendet wird, um Inhalte zu erstellen`},"button.referralEarnings":{message:`Empfohlene Einnahmen`,description:`Text im Button, der die empfohlenen Einnahmen anzeigt, was bedeutet, dass der Benutzer durch die Einladung anderer zur Nutzung des Dienstes Geld verdienen kann.`},"button.finish":{message:`Fertig`,description:`Text im Button, um eine Aktion abzuschließen`},"entity.id":{message:`ID`,description:`Eindeutiger Identifikator für die Anzeige der Entität`},"entity.type":{message:`Typ`,description:`Typ der Entität anzeigen`},"entity.website":{message:`Ace Data Cloud`,description:`Website-Name, keine Übersetzung erforderlich, bleibt 'Ace Data Cloud'`},"entity.copyright":{message:`Urheberrecht`,description:`Text zur Anzeige des Urheberrechts`},"entity.platform":{message:`Plattform`,description:`Text, der angibt, dass dies die API-Dienstplattform ist`},"entity.title":{message:`Titel`,description:`Titel der Entität`},"entity.icon":{message:`Symbol`,description:`Symbol der Entität`},"entity.status":{message:`Status`,description:`Status der Entität`},"status.loading":{message:`Wird geladen...`,description:`Statusnachricht, die beim Laden von Inhalten angezeigt wird`},"error.appleSignInFailed":{message:`Anmeldung mit Apple fehlgeschlagen. Bitte versuchen Sie es erneut oder verwenden Sie eine andere Anmeldemethode.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Operation`,description:`Operation der Entität`},"entity.description":{message:`Beschreibung`,description:`Beschreibung der Entität`},"entity.createdAt":{message:`Erstellt am`,description:`Zeitpunkt der Erstellung der Entität`},"entity.updatedAt":{message:`Aktualisiert am`,description:`Zeitpunkt der Aktualisierung der Entität`},"entity.order":{message:`Bestellung`,description:`Bestellung der Entität, die Geld- und Dienstleistungsinformationen enthält, für die der Benutzer bezahlen muss`},"message.noTasks":{message:`Keine historischen Aufgaben, bitte starten Sie eine neue Aufgabe~`,description:`Nachricht, wenn keine Aufgaben vorhanden sind`},"message.usedAmount":{message:`Verwendeter Betrag`,description:`Zur Anzeige des bereits verwendeten Betrags für den Dienst`},"message.mobileAppDescription":{message:`Verwenden Sie AceData direkt auf Ihrem Handy. Derzeit steht die Android APK zum Download zur Verfügung, das iOS-Installationspaket wird nach der Signierung zum Download freigegeben.`,description:`Beschreibung auf der Download-Seite der mobilen Anwendung`},"message.mobileAndroidHint":{message:`Für Android-Handys und -Tablets, scannen Sie den QR-Code, um die neueste APK herunterzuladen und zu installieren.`,description:`Hinweis auf der Android-Downloadkarte`},"message.mobileAndroidPending":{message:`Das Android-Installationspaket ist noch nicht bereit, bitte versuchen Sie es später erneut.`,description:`Hinweis, wenn das Android-Installationspaket noch nicht verfügbar ist`},"message.mobileAvailableNow":{message:`Android steht zum Download bereit`,description:`Zur Anzeige des Status, dass Android jetzt heruntergeladen werden kann`},"message.mobileSecureDelivery":{message:`Sichere CDN-Verteilung`,description:`Zur Betonung, dass der Download-Link über CDN bereitgestellt wird`},"message.mobileDirectInstall":{message:`Direkte APK-Installation`,description:`Zur Beschreibung der direkten APK-Installationsmethode für Android`},"message.mobileLatestRelease":{message:`Aktuelle öffentliche Version`,description:`Zur Erklärung, dass die aktuelle Anzeige die neueste öffentliche Version ist`},"message.mobileSharedAccount":{message:`Gemeinsames Konto und Kontingent mit der Webversion`,description:`Zur Erklärung, dass das mobile Konto mit dem Webkonto geteilt wird`},"message.mobileIosHint":{message:`Für iPhone und iPad, kann direkt online installiert werden; wenn das System blockiert, kann auch zuerst die IPA heruntergeladen und dann verteilt werden.`,description:`Hinweis auf der iOS-Downloadkarte`},"message.mobileIosPending":{message:`Das iOS-Installationspaket ist noch nicht zum Download verfügbar, wird nach der Vervollständigung des Apple-Zertifikats und der Beschreibung bereitgestellt.`,description:`Hinweis, wenn das iOS-Installationspaket noch nicht verfügbar ist`},"message.mobileComingSoon":{message:`Demnächst verfügbar`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"button.getOnGooglePlay":{message:`Jetzt bei Google Play`,description:`Button label that opens the app's Google Play Store listing`},"message.mobileApkFallback":{message:`Kein Zugriff auf Google Play? Lade die APK direkt herunter.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Scannen, um Google Play zu öffnen`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileInstallNote":{message:`Bei der ersten Installation eines Unternehmens- oder Ad-Hoc-Pakets auf iOS kann das System verlangen, dass das Zertifikat zuerst unter 'Einstellungen > Allgemein > VPN & Geräteverwaltung' vertraut wird.`,description:`Hinweis zur Installation der mobilen Anwendung`},"title.mobileApp":{message:`Mobile Downloads`,description:`Titel der Download-Seite für mobile Anwendungen`},"title.mobileFastAccess":{message:`Schnellerer Zugriff, ohne den App Store zu umgehen`,description:`Titel der Vorteilskarte auf der Download-Seite, die schnelle Installation betont`},"title.mobileTrustedRelease":{message:`Versionen zentral verwalten, stabiler verteilen`,description:`Titel der Vorteilskarte auf der Download-Seite, die Stabilität von Versionen und Verteilung betont`},"title.mobileUnifiedExperience":{message:`Erlebnis auf Mobilgeräten und im Web einheitlich`,description:`Titel der Vorteilskarte auf der Download-Seite, die ein einheitliches Erlebnis betont`},"nav.mobileApp":{message:`Mobile App`,description:`Eingang zur mobilen Anwendungsdownload im Navigationsbereich`},"message.mobileFastAccess":{message:`Benutzer können den QR-Code auf dem Handy scannen, um direkt zu installieren, oder zuerst die APK auf dem Desktop herunterladen und dann an Teammitglieder verteilen, geeignet für Szenarien, die eine schnelle Nutzung und interne Tests erfordern.`,description:`Vorteilsbeschreibung auf der Download-Seite, die schnellen Zugang betont`},"message.mobileTrustedRelease":{message:`Der Download-Eingang ist auf einer Seite zentralisiert, Versionsnummer, Plattformstatus und Installationsmethode sind auf einen Blick sichtbar, wodurch Kommunikationskosten aufgrund von verstreuten Links reduziert werden.`,description:`Vorteilsbeschreibung auf der Download-Seite, die einheitliche Verteilung betont`},"message.mobileUnifiedExperience":{message:`Das Kontosystem, Kontingent und die Dienstzugänge nach dem Login sind mit der Webversion identisch, was den nahtlosen Wechsel zwischen Desktop und Mobil erleichtert.`,description:`Vorteilsbeschreibung auf der Download-Seite, die ein einheitliches Kontow Erlebnis betont`},"message.remainingAmount":{message:`Verbleibender Betrag`,description:`Zur Anzeige des verbleibenden Betrags für den Dienst`},"message.copied":{message:`Erfolgreich kopiert`,description:`Nachricht, die anzeigt, dass der Inhalt erfolgreich kopiert wurde`},"message.restart":{message:`Neu generieren`,description:`用于显示内容已成功复制的消息`},"message.confirmDelete":{message:`Sind Sie sicher, dass Sie löschen möchten?`,description:`确认用户要删除某项内容的消息`},"message.expiredAt":{message:`Ablaufdatum`,description:`用于显示服务的过期时间`},"message.alert":{message:`Warnung`,description:`警告用户的消息`},"message.deleteAccountConfirm":{message:`Dadurch werden Ihr Konto und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden. Möchten Sie wirklich fortfahren?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Ihr Konto wurde gelöscht.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Ihr Konto konnte nicht gelöscht werden. Bitte versuchen Sie es später erneut.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Diese Aktion ist unwiderruflich! Dein Konto und alle zugehörigen Daten werden dauerhaft gelöscht und können nicht wiederhergestellt werden.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Dauerhaft gelöscht: Profil, Guthaben und Credits, Anwendungen und Abonnements, API-Schlüssel sowie Drittanbieter-Login-Verknüpfungen.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Gib deinen Benutzernamen ein, um die Löschung zu bestätigen:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Gib hier deinen Benutzernamen ein`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Hinweis`,description:`显示信息的消息`},"message.free":{message:`Kostenlos`,description:`显示该服务是免费的消息,意味着用户无需支付`},"message.startPrice":{message:`Startpreis`,description:`显示服务的最低价格的消息`},"message.joinDiscord":{message:`Discord beitreten`,description:`让用户加入Discord频道的消息`},"message.addWeChat":{message:`WeChat hinzufügen`,description:`让用户添加微信账户的消息`},"message.serviceTech":{message:`Technischer Support`,description:`显示技术支持的消息`},"message.businessCooperation":{message:`Daten & Geschäftliche Zusammenarbeit`,description:`显示商业合作的消息`},"message.noData":{message:`Keine Daten`,description:`显示表或列表中没有数据的消息`},"nav.home":{message:`Startseite`,description:`网站导航栏中的文本,用于显示首页`},"nav.content":{message:`Inhalt`,description:`网站导航栏中的文本,用于显示内容页面`},"nav.category":{message:`Kategorie`,description:`网站导航栏中的文本,用于显示类别页面`},"nav.service":{message:`Alle Dienste`,description:`网站导航栏中的文本,用于显示服务页面`},"nav.profile":{message:`Mein Profil`,description:`网站导航栏中的文本,用于显示个人资料页面`},"nav.products":{message:`Produkte`,description:`网站导航栏中的文本,用于显示产品页面`},"nav.referral":{message:`Empfehlungsprogramm`,description:`网站导航栏中的文本,用于显示推荐页面`},"nav.apiPlatform":{message:`API Plattform`,description:`网站导航栏中的文本,用于显示API平台页面`},"nav.document":{message:`Entwicklungsdokumentation`,description:`网站导航栏中的文本,用于显示文档页面`},"nav.console":{message:`Konsole`,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 Bild`,description:`网站导航栏中的文本,用于显示OpenAI Image页面,请不要翻译此字段,必须保持为'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Text in der Navigationsleiste der Website, um die SeeDream-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'SeeDream' beibehalten werden`},"nav.seedance":{message:`SeeDance`,description:`Website-Navigationsleiste, um die SeeDance-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'SeeDance' beibehalten werden`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`Website-Navigationsleiste, um die Luma-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Luma' beibehalten werden`},"nav.pika":{message:`Pika`,description:`Website-Navigationsleiste, um die Pika-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Pika' beibehalten werden`},"nav.kling":{message:`Kling`,description:`Website-Navigationsleiste, um die Kling-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Kling' beibehalten werden`},"nav.hailuo":{message:`Hailuo`,description:`Website-Navigationsleiste, um die Hailuo-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Hailuo' beibehalten werden`},"nav.wan":{message:`Wan`,description:`Website-Navigationsleiste, um die Wan-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Wan' beibehalten werden`},"nav.producer":{message:`Producer`,description:`Website-Navigationsleiste, um die Producer-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Producer' beibehalten werden`},"nav.fish":{message:`Fish Audio`,description:`Text in der Navigationsleiste der Website, um die Fish Audio-Seite anzuzeigen. Bitte diesen Text nicht übersetzen, er muss als 'Fish Audio' erhalten bleiben.`},"nav.kimi":{message:`Kimi`,description:`Website-Navigationsleiste, um die Kimi-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'Kimi' beibehalten werden`},"nav.serp":{message:`SERP`,description:`Website-Navigationsleiste, um die SERP-Seite anzuzeigen, bitte dieses Feld nicht übersetzen, muss als 'SERP' beibehalten werden`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Bild`,description:`Website-Navigationsleiste, um die Bildseite anzuzeigen`},"nav.music":{message:`Musik`,description:`Website-Navigationsleiste, um die Musikseite anzuzeigen`},"nav.video":{message:`Video`,description:`Website-Navigationsleiste, um die Videoseite anzuzeigen`},"nav.distribution":{message:`Empfohlene Einnahmen`,description:`Website-Navigationsleiste, um die Seite für empfohlene Einnahmen anzuzeigen`},"nav.connections":{message:`Verbindungen`,description:`Menüpunkt zum Wechseln zur Verbindungsverwaltungsseite auth.acedata.cloud`},"nav.logOut":{message:`Abmelden`,description:`Website-Navigationsleiste, um sich abzumelden`},"nav.deleteAccount":{message:`Konto löschen`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Site-Konfiguration`,description:`Website-Navigationsleiste, um die Seite für die Site-Konfiguration anzuzeigen`},"nav.subsite":{message:`Meine Subsite`,description:`Seitenleisten-Eingang 'Meine Subsite', wird nur angezeigt, wenn die Funktion features.subsite aktiviert ist`},"nav.setting":{message:`Einstellungen`,description:`Website-Navigationsleiste, um die Einstellungsseite anzuzeigen`},"nav.headshots":{message:`AI Passfoto`,description:`Website-Navigationsleiste, um die Seite für die Site-Konfiguration anzuzeigen`},"nav.more":{message:`Mehr`,description:`Website-Navigationsleiste, um mehr Dienste anzuzeigen`},"nav.locale":{message:`Spracheinstellungen`,description:`Website-Navigationsleiste, um die Sprache zu ändern`},"nav.support":{message:`Kundensupport`,description:`Website-Navigationsleiste, um die Kontaktseite anzuzeigen`},"nav.darkMode":{message:`Dunkelmodus`,description:`Website-Navigationsleiste, um zum dunklen Thema zu wechseln`},"title.alert":{message:`Warnung`,description:`Titel der Warnnachricht`},"title.placeholderOfSelect":{message:`Bitte auswählen`,description:`Platzhalter für die Auswahl`},"title.placeholderOfInput":{message:`Bitte ausfüllen`,description:`Platzhalter für die Eingabe`},"title.allApplications":{message:`Alle Anträge`,description:`Titel der Seite, die alle Anträge anzeigt`},"title.allOrders":{message:`Alle Bestellungen`,description:`Titel der Seite, die alle Bestellungen anzeigt`},"title.orderInfo":{message:`Bestellinformationen`,description:`Titel der Seite, die die Bestellinformationen anzeigt`},"title.buyMore":{message:`Aufladen`,description:`Seitenüberschrift für das Aufladen. Englisch muss als 'Top Up' übersetzt werden, Chinesisch als '充值'.`},"title.distribution":{message:`Empfohlene Einnahmen`,description:`Titel der Seite, die die empfohlenen Einnahmen anzeigt, was bedeutet, dass Benutzer durch die Einladung anderer zur Nutzung des Dienstes Geld verdienen können`},"title.site":{message:`Site-Konfiguration`,description:`Titel der Seite, die die Site-Konfiguration anzeigt`},"title.distributionHistory":{message:`Empfehlungshistorie`,description:`Titel der Seite, die die Empfehlungshistorie anzeigt`},"title.invitee":{message:`Einladender`,description:`Titel der Seite, die den Einladenden anzeigt`},"title.allUsages":{message:`Nutzungsverlauf`,description:`Titel der Seite, die alle Nutzungen des API-Dienstes anzeigt`},"title.allCredentials":{message:`Schlüssel`,description:`Titel der Seite, die alle Anmeldeinformationen anzeigt, die zum Zugriff auf die API verwendet werden`},"about.title1":{message:`Kontaktieren Sie uns`,description:`Teilüberschrift, die Kontaktinformationen anzeigt`},"about.title2":{message:`Ressourcen`,description:`Teilüberschrift, die Links anzeigt`},"about.title3":{message:`Links`,description:`Teilüberschrift, die Unterstützungsinformationen anzeigt`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, DE 19713, USA`,description:`Die Adresse des Unternehmens`},"about.email":{message:`office@acedata.cloud`,description:`Die E-Mail-Adresse des Unternehmens`},"about.link1":{message:`Dienstleistungen`,description:`Link zur Dokumentationsseite`},"about.link2":{message:`Entwicklerdokumentation`,description:`Link zur Serviceseite`},"about.link3":{message:`Konsole`,description:`Link zur Konsolenseite`},"about.link4":{message:`Profil`,description:`Link zur Profilseite`},"about.link5":{message:`UI-Plattform`,description:`Link zur Hauptseite`},"about.link6":{message:`Empfohlene Einnahmen`,description:`Link zur Seite für empfohlene Einnahmen`},"about.link7":{message:`Unterstützung`,description:`Link zur Unterstützungsseite`},"about.link8":{message:`Nutzungsbedingungen`,description:`Link zur Seite mit den Nutzungsbedingungen`},"about.link9":{message:`Datenschutzrichtlinie`,description:`Link zur Seite mit der Datenschutzrichtlinie`},"theme.light":{message:`Helles Thema`,description:`Name des hellen Themas`},"theme.dark":{message:`Dunkles Thema`,description:`Name des dunklen Themas`},"theme.system":{message:`System`,description:`Name des Systemthemas, das anzeigt, dass das Thema automatisch basierend auf den Systemeinstellungen gewechselt wird`},"settings.general":{message:`Allgemeine Einstellungen`,description:`Titel des Abschnitts für allgemeine Einstellungen auf der Einstellungsseite`},"settings.language":{message:`Sprache`,description:`Titel des Abschnitts für Spracheinstellungen auf der Einstellungsseite`},"settings.theme":{message:`Thema`,description:`Titel des Abschnitts für Themaeinstellungen auf der Einstellungsseite`},"settings.seo":{message:`SEO-Einstellungen`,description:`Titel des Abschnitts für SEO-Einstellungen auf der Einstellungsseite`},"settings.site":{message:`Site-Einstellungen`,description:`Titel des Abschnitts für Site-Einstellungen auf der Einstellungsseite`},"settings.distribution":{message:`Verteilungseinstellungen`,description:`Titel des Abschnitts für Verteilungseinstellungen auf der Einstellungsseite`},"settings.function":{message:`Funktionseinstellungen`,description:`Titel des Abschnitts für Funktionseinstellungen auf der Einstellungsseite`},"settings.auth":{message:`Anmeldemethode`,description:`Titel des Tabs ‚Anmeldemethode‘ in der Einstellungs-Seitenleiste – konfiguriert die erlaubten Anmeldemethoden und die Standard-Anmeldemethode, nur für Site-Administratoren sichtbar.`},"settings.apiKey":{message:`API-Schlüssel`,description:`API-Schlüssel-Label in der Seitenleiste der Einstellungsseite - Verwaltung des API-Schlüssels des benutzereigenen (BYOK) Anbieters`},"field.operations":{message:`Aktionen`,description:`Allgemeine Spaltenüberschrift: Spalte für Aktionsschaltflächen in Tabellenzeilen (Bearbeiten, Löschen usw.)`},"nav.gemini":{message:`Gemini`,description:`Text in der Navigationsleiste der Website, um die Gemini-Seite anzuzeigen, muss als 'Gemini' bleiben`},"nav.claude":{message:`Claude`,description:`Text in der Navigationsleiste der Website, um die Claude-Seite anzuzeigen, muss als 'Claude' bleiben`},"button.detail":{message:`Details anzeigen`,description:``},"button.testEnv":{message:`Testumgebung`,description:`Text im Button, um zur Testumgebung zu wechseln`},"button.upload":{message:`Hochladen`,description:`Text im Button, um Dateien oder Inhalte hochzuladen`},"message.cnbeian":{message:`China-Region Registrierung`,description:`Hinweis zur Registrierung in der China-Region`},"message.copyFailed":{message:`Kopieren fehlgeschlagen`,description:`Nachricht, die anzeigt, dass das Kopieren des Inhalts fehlgeschlagen ist`},"nav.tryNow":{message:`Jetzt ausprobieren`,description:`Text in der Navigationsleiste der Website, um den Benutzern zu ermöglichen, den Dienst auszuprobieren`},"title.coin":{message:`Kryptowährung`,description:`Titel der Seite, die Kryptowährungen anzeigt`},"title.distributionRank":{message:`Empfehlungsrang`,description:`Titel der Seite, die den Empfehlungsrang anzeigt`},"title.distributionPlatformRank":{message:`Plattformrang`,description:`Titel der Seite, die den Plattformrang anzeigt`},"customers.name1":{message:`Mark Du`,description:`Name des Kunden`},"customers.job1":{message:`Software-Ingenieur`,description:`Beruf des Kunden`},"customers.comment1":{message:`Ace Data Cloud hat unserem Team großartige Dienste geleistet und unsere Produktivität gesteigert. Sehr zufrieden!`,description:`Bewertung des Kunden`},"customers.name2":{message:`Jacob Williams`,description:`Name des Kunden`},"customers.job2":{message:`Produktmanager`,description:`Beruf des Kunden`},"customers.comment2":{message:`Ace Data Cloud ist eine großartige Integrationsplattform mit hervorragender Servicequalität.`,description:`Bewertung des Kunden`},"customers.name3":{message:`Larry Henry`,description:`Name des Kunden`},"customers.job3":{message:`Designer`,description:`Beruf des Kunden`},"customers.comment3":{message:`Ich liebe den Service von Ace Data Cloud, er ist benutzerfreundlich und preiswert. Ich hoffe, es wird immer besser!`,description:`Bewertung des Kunden`},"nav.github":{message:`GitHub`,description:`Link zum GitHub-Repository`},"settings.github":{message:`Quellcode`,description:`Link zum Anzeigen des Quellcodes auf GitHub`},"settings.about":{message:`Über`,description:`Titel des Abschnitts 'Über' auf der Einstellungsseite`},"settings.subsites":{message:`Meine Subsites`,description:`Titel des Tabs zur Verwaltung von Subsites im Einstellungs-Popup. Nur auf der offiziellen Hauptseite sichtbar, Subsites werden nicht angezeigt.`},"settings.adminOnlyHint":{message:`Dieser Abschnitt ist nur für Site-Administratoren sichtbar, normale Benutzer haben keinen Zugriff.`,description:`Eine Hinweiszeile, die oben in den Einstellungen der Site / SEO-Einstellungen / Verteilungseinstellungen / Funktionseinstellungen angezeigt wird und nur für Administratoren sichtbar ist.`},"settings.officialOnlyHint":{message:`Dieser Abschnitt ist nur auf der Hauptseite sichtbar, Unterseiten werden nicht angezeigt.`,description:`Eine Hinweiszeile, die oben im Tab 'Meine Unterseiten' angezeigt wird und erklärt, dass dieser Zugang nur auf der offiziellen Hauptseite erscheint.`},"settings.customDomain":{message:`Eigene Domain`,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:`Ein-Klick-Bau`,description:`Text des Buttons 'Ein-Klick-Bau von Subsites' auf der Über-Seite, nur auf der offiziellen Hauptseite sichtbar`},"settings.poweredBy":{message:`Open-Source-Projekt`,description:`Titel, der auf der Über-Seite anzeigt, auf welchem Open-Source-Projekt diese Seite basiert`},"settings.poweredByTip":{message:`Diese Seite basiert auf dem Open-Source-Projekt Nexior, der Code ist vollständig Open-Source.`,description:`Erklärung auf der Über-Seite, auf welchem Open-Source-Projekt diese Seite basiert`},"settings.apiService":{message:`API-Dienst`,description:`Titel, der auf der Über-Seite den Anbieter des API-Dienstes anzeigt`},"settings.apiServiceTip":{message:`Der API-Dienst dieser Seite wird von Ace Data Cloud bereitgestellt.`,description:`Erklärung auf der Über-Seite, die den Anbieter des API-Dienstes anzeigt`},"settings.buildYourOwn":{message:`Eigene Version erstellen`,description:`Titel auf der Über-Seite, der den Nutzern anzeigt, dass sie eine ähnliche Seite erstellen können`},"settings.buildYourOwnTip":{message:`Möchten Sie eine ähnliche AI-Seite erstellen? Kontaktieren Sie uns für Unterstützung bei der Bereitstellung.`,description:`Erklärung auf der Über-Seite zum Erstellen einer eigenen Version`},"settings.contactUs":{message:`Kontaktieren Sie den Support`,description:`Text des Buttons zum Kontaktieren des Supports`},"message.viewOnGithub":{message:`Auf GitHub ansehen`,description:`Text des Links, um das Projekt auf GitHub anzusehen`},"title.notFound":{message:`Seite nicht gefunden`,description:`Titel der 404-Seite`},"message.notFound":{message:`Die von Ihnen aufgerufene Seite existiert nicht, möglicherweise wurde der Link geändert oder entfernt. Kehren Sie zur Startseite zurück, um die AI-Dienste von AceData weiter zu erkunden.`,description:`Untertitelbeschreibung der 404-Seite`},"message.notFoundEyebrow":{message:`Ein Fehler ist aufgetreten`,description:`Text des kleinen Labels oben auf der 404-Seite`},"message.notFoundPath":{message:`Angeforderter Pfad`,description:`Label auf der 404-Seite, das den aktuellen angeforderten Pfad anzeigt`},"button.backToHome":{message:`Zur Startseite zurück`,description:`Text des Buttons, um zur Startseite zurückzukehren`},"button.goBack":{message:`Zurück zur vorherigen Seite`,description:`Text des Buttons, um zur vorherigen Seite im Verlauf zurückzukehren`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,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:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Anfrage`,description:`API-Code-Dialog Tab-Beschriftung für den Anfrage-Snippet (der Code, der das aktuelle Ergebnis reproduziert).`},"tab.apiResponse":{message:`Antwort`,description:`API-Code-Dialog Tab-Beschriftung für die Live-Antwort, die nach dem Klicken auf Ausführen zurückgegeben wird.`},"button.apiRun":{message:`Erneut ausführen`,description:`API-Code-Dialogschaltfläche, die die Anfrage live gegen die API mit dem Schlüssel des Benutzers erneut ausführt. Das Ergebnis existiert bereits, daher wird es durch Klicken erneut ausgeführt und ist kostenpflichtig.`},"button.apiRunning":{message:`Wird ausgeführt…`,description:`API-Code-Dialog Ausführen-Button-Beschriftung, während die Live-Anfrage verarbeitet wird.`},"button.apiRunConfirm":{message:`Ausführung bestätigen`,description:`Bestätigungs-Schaltflächenbeschriftung im Dialog, der warnt, dass die Ausführung hier zusätzliche Credits verbraucht.`},"button.viewDocs":{message:`Dokumentation anzeigen`,description:`Fußzeilen-Schaltfläche im API-Code-Dialog, die die entsprechende API-Dokumentationsseite auf der Plattform öffnet.`},"message.apiClickRun":{message:`Klicken Sie auf „Erneut ausführen“, um Ihre API-Schlüssel in Echtzeit für diese Anfrage zu verwenden.`,description:`Leerer Zustand des Antwort-Tabs im API-Code-Dialog, der angezeigt wird, bevor der Benutzer die Anfrage ausgeführt hat.`},"message.apiRunConfirmTitle":{message:`Ausführung bestätigen`,description:`Titel des Bestätigungsdialogs, der angezeigt wird, bevor eine Anfrage aus dem API-Code-Dialog erneut ausgeführt wird.`},"message.apiRunConfirmDesc":{message:`Diese Ausführung wird Ihre API-Schlüssel verwenden, um die Schnittstelle tatsächlich aufzurufen und zusätzliche Punkte zu verbrauchen. Möchten Sie fortfahren?`,description:`Inhalt des Bestätigungsdialogs, der warnt, dass das erneute Ausführen der Anfrage einen echten, kostenpflichtigen API-Aufruf darstellt.`},"message.apiRunConfirmSkip":{message:`Nicht erneut anzeigen`,description:`Kontrollkästchen im Bestätigungsdialog, das, wenn es aktiviert ist, die Warnung bei nachfolgenden Ausführungen unterdrückt.`},"message.apiRunTaskCreated":{message:`Aufgabe erstellt, schließen Sie dieses Fenster, um die neuesten Ergebnisse unten zu sehen.`,description:`Erfolgsbanner, das im API-Code-Dialog angezeigt wird, nachdem ein Lauf eine Aufgaben-ID zurückgibt und darauf hinweist, dass die neue Aufgabe bereits in der Liste hinter dem Dialog erscheint.`},"button.apiViewLatest":{message:`Schließen und ansehen`,description:`Schaltfläche im Erfolgsbanner des API-Code-Dialogs, die den Dialog schließt, damit der Benutzer die neu erstellte Aufgabe in der Liste unten sehen kann.`},"message.uploadInProgress":{message:`Referenz-Uploads sind noch in Bearbeitung – bitte warten Sie einen Moment.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Text auf der Navigationsleiste für die Seite, die Artikel in Videos umwandelt, bleibt 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
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:`Final red delete button at the bottom of the delete confirmation dialog`},"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.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:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"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.usedAmount":{message:`Використана сума`,description:`Для відображення суми, що була використана для послуги`},"message.mobileAppDescription":{message:`Використовуйте AceData на телефоні, наразі доступно завантаження Android APK, пакет для iOS буде доступний після підписання.`,description:`Опис на сторінці завантаження мобільного додатку`},"message.mobileAndroidHint":{message:`Для Android телефонів та планшетів, скануйте QR-код для завантаження останнього APK.`,description:`Опис картки завантаження Android`},"message.mobileAndroidPending":{message:`Пакет для Android ще не готовий, спробуйте пізніше.`,description:`Підказка, коли пакет для Android ще не доступний`},"message.mobileAvailableNow":{message:`Android доступний для завантаження`,description:`Для відображення статусу, що Android вже доступний для завантаження`},"message.mobileSecureDelivery":{message:`Безпечна CDN доставка`,description:`Для підкреслення, що посилання для завантаження передається через CDN`},"message.mobileDirectInstall":{message:`Пряме APK встановлення`,description:`Для опису способу прямого встановлення APK на Android`},"message.mobileLatestRelease":{message:`Поточна публічна версія`,description:`Для пояснення, що наразі відображається остання публічна версія`},"message.mobileSharedAccount":{message:`Спільний акаунт та ліміти з веб-версією`,description:`Для пояснення, що мобільна версія використовує спільний акаунт з веб-версією`},"message.mobileIosHint":{message:`Для iPhone та iPad, можна встановити безпосередньо онлайн; якщо система блокує, можна спочатку завантажити IPA, а потім розповсюдити.`,description:`Опис картки завантаження iOS`},"message.mobileIosPending":{message:`Пакет для iOS ще не доступний для завантаження, буде надано після завершення сертифікації Apple.`,description:`Підказка, коли пакет для iOS ще не доступний`},"message.mobileComingSoon":{message:`Незабаром`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"button.getOnGooglePlay":{message:`Завантажити в Google Play`,description:`Button label that opens the app's Google Play 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.mobileInstallNote":{message:`При першому встановленні корпоративного або Ad Hoc пакету на iOS, система може вимагати спочатку довірити сертифікат у 'Налаштування > Загальні > VPN та управління пристроями'.`,description:`Підказка для встановлення мобільного додатку`},"title.mobileApp":{message:`Завантаження мобільного додатку`,description:`Заголовок сторінки завантаження мобільного додатку`},"title.mobileFastAccess":{message:`Швидший доступ, без обхідних шляхів через магазини додатків`,description:`Заголовок картки переваг на сторінці завантаження, підкреслює швидкість встановлення`},"title.mobileTrustedRelease":{message:`Централізоване управління версіями, стабільніша доставка`,description:`Заголовок картки переваг на сторінці завантаження, підкреслює стабільність версій та доставки`},"title.mobileUnifiedExperience":{message:`Єдиний досвід на мобільному та веб-інтерфейсах`,description:`Заголовок картки переваг на сторінці завантаження, підкреслює єдність досвіду`},"nav.mobileApp":{message:`Мобільний додаток`,description:`Вхід для завантаження мобільного додатку в навігації`},"message.mobileFastAccess":{message:`Користувачі можуть сканувати QR-код для прямого встановлення на телефоні або спочатку завантажити APK на настільному комп'ютері та розповсюдити його серед членів команди, що підходить для швидкого тестування та бета-тестування.`,description:`Опис переваг на сторінці завантаження, підкреслює швидкий доступ`},"message.mobileTrustedRelease":{message:`Всі посилання для завантаження зосереджені на одній сторінці, номер версії, статус платформи та спосіб встановлення видно з першого погляду, що зменшує витрати на комунікацію через розподіл ланцюгів.`,description:`Опис переваг на сторінці завантаження, підкреслює єдність доставки`},"message.mobileUnifiedExperience":{message:`Система акаунтів, ліміти та входи до послуг після входу залишаються однаковими з веб-версією, що дозволяє користувачам безперешкодно перемикатися між настільним та мобільним пристроями.`,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:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Ваш обліковий запис видалено.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Не вдалося видалити обліковий запис. Спробуйте пізніше.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Цю дію неможливо скасувати! Ваш акаунт і всі його дані буде назавжди видалено без можливості відновлення.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Буде видалено назавжди: профіль, баланс і кредити, застосунки та підписки, ключі API та прив'язки сторонніх входів.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Введіть своє ім'я користувача, щоб підтвердити видалення:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Введіть своє ім'я користувача тут`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Інформація`,description:`Повідомлення для відображення інформації`},"message.free":{message:`Безкоштовно`,description:`Повідомлення, що вказує на безкоштовність послуги, що означає, що користувач не повинен платити`},"message.startPrice":{message:`Початкова`,description:`Повідомлення для відображення мінімальної ціни послуги`},"message.joinDiscord":{message:`Приєднатися до Discord`,description:`Повідомлення для запрошення користувача приєднатися до каналу Discord`},"message.addWeChat":{message:`Сервіс WeChat`,description:`Повідомлення для запрошення користувача додати обліковий запис WeChat`},"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:`Чат`,description:`Текст у навігаційній панелі сайту для відображення сторінки чату, не перекладати, залишити 'Chat'`},"nav.veo":{message:`Veo`,description:`Текст у навігаційній панелі сайту для відображення сторінки чату, не перекладати, залишити 'Veo'`},"nav.sora":{message:`Sora`,description:`Текст у навігаційній панелі сайту для відображення сторінки чату, не перекладати, залишити 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Текст у навігаційній панелі сайту для відображення сторінки Midjourney, не перекладати, залишити 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Текст у навігаційній панелі сайту для відображення сторінки QRArt, не перекладати, залишити '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 Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"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:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as '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:`Menu item to permanently delete the current user account`},"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:`Заголовок сторінки для поповнення рахунку. Має бути перекладено як 'Поповнити рахунок'.`},"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 Continental Dr, Suite 305, Newark, DE 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:`Заголовок вкладки 'Спосіб входу' на бічній панелі налаштувань — налаштуйте способи входу, які дозволені на сайті, та спосіб входу за замовчуванням, видимий лише для адміністраторів сайту.`},"settings.apiKey":{message:`API Key`,description:`Мітка API Key на бічній панелі сторінки налаштувань — управління API Key постачальників послуг, що надаються користувачем (BYOK)`},"field.operations":{message:`Операції`,description:`Заголовок стовпця: стовпець кнопок операцій рядків таблиці (редагувати, видалити тощо)`},"nav.gemini":{message:`Gemini`,description:`Текст у навігаційній панелі сайту для відображення сторінки Gemini, має залишатися 'Gemini'`},"nav.claude":{message:`Claude`,description:`Текст у навігаційній панелі сайту для відображення сторінки Claude, має залишатися '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.subsites":{message:`Мої підсайти`,description:`Заголовок вкладки управління підсайтами в спливаючому вікні налаштувань. Видно лише на офіційному головному сайті, підсайти не відображаються.`},"settings.adminOnlyHint":{message:`Цей розділ видимий лише для адміністраторів сайту, звичайні користувачі не можуть отримати доступ.`,description:`Цей текст є підказкою, що відображається у верхній частині вкладок налаштувань сайту / SEO налаштувань / налаштувань розповсюдження / налаштувань функцій, які видимі лише для адміністраторів.`},"settings.officialOnlyHint":{message:`Цей розділ видимий лише на основному сайті, підсайти не відображатимуть його.`,description:`Цей текст є підказкою, що відображається у верхній частині вкладки 'Мої підсайти', пояснюючи, що цей вхід доступний лише на офіційному основному сайті.`},"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:`Текст кнопки 'Створити підсайт' на сторінці 'Про нас', відображається лише на офіційному головному сайті`},"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:`Сторінка, яку ви відвідали, не існує, можливо, посилання було змінено або видалено. Поверніться на головну, щоб продовжити дослідження AI послуг AceData.`,description:`Опис підзаголовка 404 сторінки`},"message.notFoundEyebrow":{message:`Сталася помилка`,description:`Текст маленької мітки вгорі 404 сторінки`},"message.notFoundPath":{message:`Запитаний шлях`,description:`Мітка, що показує поточний запитаний шлях на 404 сторінці`},"button.backToHome":{message:`Повернутися на головну`,description:`Текст кнопки для переходу назад на головну`},"button.goBack":{message:`Повернутися на попередню сторінку`,description:`Текст кнопки для повернення на попередню сторінку в історії перегляду`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,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:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Запит`,description:`Мітка вкладки діалогу API коду для фрагмента запиту (код, який відтворює поточний результат).`},"tab.apiResponse":{message:`Відповідь`,description:`Мітка вкладки діалогу API коду для живої відповіді, яка повертається після натискання Запустити.`},"button.apiRun":{message:`Запустити знову`,description:`Кнопка діалогу API коду, яка повторно запускає запит в реальному часі з використанням ключа користувача. Результат вже існує, тому натискання запускає його знову, і це підлягає оплаті.`},"button.apiRunning":{message:`Виконується…`,description:`Мітка кнопки Запустити діалогу API коду, коли запит виконується.`},"button.apiRunConfirm":{message:`Підтвердити запуск`,description:`Мітка кнопки підтвердження в діалозі, який попереджає, що запуск тут споживає додаткові кредити.`},"button.viewDocs":{message:`Переглянути документацію`,description:`Кнопка в нижній частині діалогу API коду, яка відкриває відповідну сторінку документації API на платформі.`},"message.apiClickRun":{message:`Натисніть «Запустити знову», щоб використовувати ваш API Key для виконання цього запиту в реальному часі.`,description:`Стан порожньої вкладки відповіді діалогу API коду, який відображається до того, як користувач запустив запит.`},"message.apiRunConfirmTitle":{message:`Підтвердити запуск`,description:`Заголовок діалогу підтвердження, що відображається перед повторним запуском запиту з діалогу API коду.`},"message.apiRunConfirmDesc":{message:`Цей запуск використовуватиме ваш API Key для реального виклику інтерфейсу та додатково споживатиме кредити. Підтвердити продовження?`,description:`Текст підтвердження в діалозі, що попереджає, що повторний запуск запиту є реальним, платним викликом API.`},"message.apiRunConfirmSkip":{message:`Більше не нагадувати`,description:`Прапорець у діалозі підтвердження запуску, який, якщо його позначити, подавляє попередження при наступних запусках.`},"message.apiRunTaskCreated":{message:`Завдання створено, закрийте це вікно, щоб переглянути останні результати нижче.`,description:`Банер успіху, що відображається в діалозі API-коду після виконання, яке повертає ідентифікатор завдання, натякаючи, що нове завдання вже з'явилося в списку за діалогом.`},"button.apiViewLatest":{message:`Закрити та переглянути`,description:`Кнопка в банері успіху діалогу API-коду, яка закриває діалог, щоб користувач міг побачити новостворене завдання в списку нижче.`},"message.uploadInProgress":{message:`Завантаження довідкових файлів ще триває — зачекайте, будь ласка.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Текст на сторінці перетворення статей Maestro на відео в навігаційній панелі, залишити як 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|