@acedatacloud/nexior 3.321.0 → 3.321.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ApiCodeButton-DrjK0_qT.js → ApiCodeButton-BvZxMZTH.js} +1 -1
- package/dist/assets/{Artifacts-C8BsVSr6.js → Artifacts-EW-TFQzC.js} +1 -1
- package/dist/assets/{AskUserQuestionCard-D1efVUqK.js → AskUserQuestionCard-DXvb5dvg.js} +1 -1
- package/dist/assets/{Auth-D28D1dYe.js → Auth-De9w2Byk.js} +1 -1
- package/dist/assets/{Bare-CEYnjNQm.js → Bare-w-mDmV04.js} +1 -1
- package/dist/assets/{BotPlaceholder-kUSKYvib.js → BotPlaceholder-D0xi2CsK.js} +1 -1
- package/dist/assets/{BottomFooter-ZP32wCSY.js → BottomFooter-BCX_oSt5.js} +1 -1
- package/dist/assets/{Callback-CgMUqEb7.js → Callback-B_UFUNZs.js} +1 -1
- package/dist/assets/{CodeSnippet-DUqjMjnn.js → CodeSnippet-DHYLghyA.js} +1 -1
- package/dist/assets/{Console-BBzLQUJH.js → Console-DAlxmMwL.js} +1 -1
- package/dist/assets/{Consumption-Cnpp8pQ8.js → Consumption-Dug1KpQy.js} +1 -1
- package/dist/assets/Conversation-BIjIYTYL.js +1 -0
- package/dist/assets/{Conversation-DI9XZzO4.js → Conversation-BfRVb85e.js} +1 -1
- package/dist/assets/{CopyToClipboard-DY_1J40c.js → CopyToClipboard-Dck5vBxW.js} +1 -1
- package/dist/assets/{Detail-CIXVCHJR.js → Detail-Yx6eKOLw.js} +2 -2
- package/dist/assets/{Extra-Bts0Rqd2.js → Extra-i-xx4dcs.js} +1 -1
- package/dist/assets/{FilePreview-YTh190j9.js → FilePreview-CRNmVlzf.js} +1 -1
- package/dist/assets/{Hailuo-D9i8_Jhq.js → Hailuo-BmpeCWK3.js} +1 -1
- package/dist/assets/{History-CH9BJhcR.js → History-BqtkaoPW.js} +1 -1
- package/dist/assets/{ImagePreview-BI0-hUzt.js → ImagePreview-CAc8PlWR.js} +1 -1
- package/dist/assets/{ImageWrapper-DzTGCugr.js → ImageWrapper-Ry476ooj.js} +1 -1
- package/dist/assets/{Index-BSKNIESZ.js → Index-B-9sU9X4.js} +1 -1
- package/dist/assets/{Index-C9istB7v.js → Index-B3lCHoBi.js} +1 -1
- package/dist/assets/{Index-C3OZE_FW.js → Index-B5cPdMCN.js} +1 -1
- package/dist/assets/{Index-DdE5BNee.js → Index-B5tc4Es1.js} +1 -1
- package/dist/assets/{Index-D9SLl9z4.js → Index-BNsvB66G.js} +1 -1
- package/dist/assets/{Index-CdkOzvwb.js → Index-BRYxjxIg.js} +1 -1
- package/dist/assets/{Index-BF38sL5o.js → Index-BvAVurZA.js} +1 -1
- package/dist/assets/{Index-1IluNwPe.js → Index-BwgoTHR2.js} +1 -1
- package/dist/assets/{Index-CsbTsHBp.js → Index-BwmbDTIJ.js} +1 -1
- package/dist/assets/{Index-BXcc1xee.js → Index-CFX9Rs7k.js} +1 -1
- package/dist/assets/{Index-7OMkYjlN.js → Index-CHL03xvD.js} +1 -1
- package/dist/assets/{Index-dxe2LS0A.js → Index-CIuq-Dut.js} +1 -1
- package/dist/assets/{Index-CkWyCLbe.js → Index-CLDATOT2.js} +1 -1
- package/dist/assets/{Index-BmqkB1Up.css → Index-CLr2BFzd.css} +1 -1
- package/dist/assets/{Index-g_nKP5bM.js → Index-CYAemxWU.js} +1 -1
- package/dist/assets/{Index-CjYdyPg8.js → Index-Cge7IjV5.js} +1 -1
- package/dist/assets/{Index-xE9Ib5eU.js → Index-Chbu_REr.js} +1 -1
- package/dist/assets/{Index-shh0Eu1Q.js → Index-D0d2_NCt.js} +1 -1
- package/dist/assets/{Index-Buiwjbj2.js → Index-D4bkohm7.js} +1 -1
- package/dist/assets/{Index-DHba1ME8.js → Index-D7ImHubk.js} +1 -1
- package/dist/assets/{Index-D_Pj4Nfb.js → Index-DDIQOoEA.js} +1 -1
- package/dist/assets/{Index-Dr9q2wxf.js → Index-DFr91bKb.js} +1 -1
- package/dist/assets/Index-DbolPS5a.js +1 -0
- package/dist/assets/{Index-K62F4q2t.js → Index-Den27Thd.js} +1 -1
- package/dist/assets/{Index-B1W8Rp-B.js → Index-DuscjAwS.js} +1 -1
- package/dist/assets/{Index-ClSORIU7.js → Index-Dux69xGf.js} +1 -1
- package/dist/assets/{Index-2DuQRVb_.js → Index-NAm7ncXG.js} +1 -1
- package/dist/assets/{Index-BeL2M3rW.js → Index-aNoxkk7V.js} +1 -1
- package/dist/assets/{Index-1QCbRyRL.js → Index-dugV8AGu.js} +1 -1
- package/dist/assets/{Index-DspXKrCu.css → Index-n6jG_3SR.css} +1 -1
- package/dist/assets/{Invitees-CLJRJtwh.js → Invitees-CgXO0ll9.js} +1 -1
- package/dist/assets/{List-DGCI4F0o.js → List-CVFyZgNt.js} +1 -1
- package/dist/assets/{List-bsjpi3oB.js → List-CZFJvzZZ.js} +1 -1
- package/dist/assets/{List-D87kVupb.js → List-DTbQc9vp.js} +1 -1
- package/dist/assets/{LocalTools-9ebBONap.js → LocalTools-D2k18GLw.js} +1 -1
- package/dist/assets/{LocalTools-DmYt0Lnm.js → LocalTools-u-dJmBc4.js} +1 -1
- package/dist/assets/{Main-Dk6bSOFX.js → Main-DnCDGePR.js} +1 -1
- package/dist/assets/{Message-BF9lpBSW.js → Message-DNm9Pq44.js} +2 -2
- package/dist/assets/{Model-QVegKUb8.js → Model-va6D1uPH.js} +1 -1
- package/dist/assets/{Navigator-OSlIAYhX.js → Navigator-C7kPlTB0.js} +3 -3
- package/dist/assets/{NoTasks-CWr0xxsU.js → NoTasks-RVBrZ_bb.js} +1 -1
- package/dist/assets/{NotFound-QmwuJQ_3.js → NotFound-D53_ceUZ.js} +1 -1
- package/dist/assets/{Pagination-G92-WKw9.js → Pagination-BFyU2ccT.js} +1 -1
- package/dist/assets/{Pay-D1Ne17js.js → Pay-DfDaOZ0-.js} +1 -1
- package/dist/assets/{Player-yTAq3c2g.js → Player-CekOtYKP.js} +1 -1
- package/dist/assets/{PromptTextarea-DnNoCW_o.js → PromptTextarea-gzCu7teW.js} +1 -1
- package/dist/assets/{RealtimeCall-ChgoH1Gk.js → RealtimeCall-OXA6qrsg.js} +1 -1
- package/dist/assets/{ScheduledTasks-C3klWpSc.js → ScheduledTasks-CAFxHjCt.js} +1 -1
- package/dist/assets/{Status-BgXsLWqi.js → Status-BIPJT7fQ.js} +1 -1
- package/dist/assets/{Subscribe-BIJJKzVV.js → Subscribe-ByxvwQ3j.js} +1 -1
- package/dist/assets/{TabSwitcher-BXGPXI8l.js → TabSwitcher-CYeRK9Qj.js} +1 -1
- package/dist/assets/{Tts-q3Yg_7uJ.js → Tts-CJ-yWbWY.js} +1 -1
- package/dist/assets/{VideoPlayer-CfzNYNNz.js → VideoPlayer-V3up_w3_.js} +1 -1
- package/dist/assets/{VideoPreview-z97lRVVw.js → VideoPreview-DtU2IjC-.js} +1 -1
- package/dist/assets/{alert-CjynZSNg.js → alert-Dd1AiDUe.js} +1 -1
- package/dist/assets/{avatar-By38wH2Y.js → avatar-D6uOB0Ud.js} +1 -1
- package/dist/assets/{basic-C4QP20_5.js → basic-CKPXBbQp.js} +1 -1
- package/dist/assets/{chat-BN0QFmm9.js → chat-BGfo0nOf.js} +1 -1
- package/dist/assets/codingBridge-CGGqeZsJ.js +2 -0
- package/dist/assets/{codingBridgeNotify-CIDp3aLZ.js → codingBridgeNotify-kUv9z-Hj.js} +2 -2
- package/dist/assets/{collapse-8CfL4Uxc.js → collapse-BDr5Tax1.js} +1 -1
- package/dist/assets/{constants-m8v8ZYCt.js → constants-cSF5AGUI.js} +1 -1
- package/dist/assets/{createTaskActions-Dgth_Ol7.js → createTaskActions-wRLojnDz.js} +1 -1
- package/dist/assets/{date-picker-DIQFoutW.js → date-picker-B5Tqi03B.js} +1 -1
- package/dist/assets/{digitalhuman-CHKezOlo.js → digitalhuman-8Wo9z_Jx.js} +1 -1
- package/dist/assets/{drawer-DgHGx2f5.js → drawer-BwzaUz3d.js} +1 -1
- package/dist/assets/{dropdown-RGtZKIeu.js → dropdown-CVMzYtIU.js} +1 -1
- package/dist/assets/{dropdown-Dx-rZALT.js → dropdown-Z0XE_A0a.js} +1 -1
- package/dist/assets/{esm-DXSDwUBR.js → esm-58oUtDGY.js} +2 -2
- package/dist/assets/esm-By2REu6v.js +1 -0
- package/dist/assets/{esm-CKzMwdYm.js → esm-CtbzxB4u.js} +3 -3
- package/dist/assets/{esm-DDNMHQjw.js → esm-D8c1vb3l.js} +1 -1
- package/dist/assets/{esm-DC7JxSlh.js → esm-DEBwYgHl.js} +2 -2
- package/dist/assets/{esm-Cak7KZNo.js → esm-Dt7DxaNd.js} +1 -1
- package/dist/assets/{esm-GOhMn-YM.js → esm-XVrjJT2X.js} +1 -1
- package/dist/assets/{fish-BGVf3u8A.js → fish-B8R5RzC4.js} +1 -1
- package/dist/assets/{flux-VEuGwjRd.js → flux-Bj9Q3ZhV.js} +1 -1
- package/dist/assets/{grokvideo-jm6z6Wav.js → grokvideo-ZF20MlRM.js} +1 -1
- package/dist/assets/{hailuo-CDj8VwBj.js → hailuo-0LVSpj8A.js} +1 -1
- package/dist/assets/{headshots-BiExJ1wU.js → headshots-CBOVe_11.js} +1 -1
- package/dist/assets/{i18n-j_9Xk2RS.js → i18n-27iZn9gb.js} +1 -1
- package/dist/assets/{image-DJ4WPTjw.js → image-qteqPy5H.js} +1 -1
- package/dist/assets/{index-Hbcj2HVJ.js → index-CHBZTxdB.js} +5 -5
- package/dist/assets/{index.browser.esm-DKM7AbsV.js → index.browser.esm-BvIffV5d.js} +1 -1
- package/dist/assets/{index.es-dQyZ5P5R.js → index.es-oPc3AvSO.js} +1 -1
- package/dist/assets/{input-number-D37_nCuK.js → input-number-DClree2G.js} +1 -1
- package/dist/assets/kling-59Z6MxcM.js +1 -0
- package/dist/assets/kling-B1QlFyAe.js +1 -0
- package/dist/assets/kling-BEBDcTg5.js +1 -0
- package/dist/assets/kling-BEO0McAG.js +1 -0
- package/dist/assets/kling-BIZn64wm.js +1 -0
- package/dist/assets/kling-BsM3OSTR.js +1 -0
- package/dist/assets/kling-ByVEzCMw.js +1 -0
- package/dist/assets/kling-C92J08nF.js +1 -0
- package/dist/assets/{kling-0KHAS5CW.js → kling-CPKPey_t.js} +1 -1
- package/dist/assets/kling-CSRmwt_f.js +1 -0
- package/dist/assets/kling-CTFvMkZr.js +1 -0
- package/dist/assets/kling-D3MyKkPT.js +1 -0
- package/dist/assets/kling-DN95GeNu.js +1 -0
- package/dist/assets/kling-DX_ENx7v.js +1 -0
- package/dist/assets/kling-_eDULOvq.js +1 -0
- package/dist/assets/kling-fezjH413.js +1 -0
- package/dist/assets/kling-jT3Zhfyx.js +1 -0
- package/dist/assets/kling-jjIQFuuE.js +1 -0
- package/dist/assets/kling-sIPAwEqj.js +1 -0
- package/dist/assets/{luma-BgvYmUi6.js → luma-D15qbJVx.js} +1 -1
- package/dist/assets/{maestro-CrZlm6-d.js → maestro-BUOLk_kM.js} +1 -1
- package/dist/assets/{midjourney-DepSooIE.js → midjourney-O2Y44jrv.js} +1 -1
- package/dist/assets/{mobileLocalExec-CDzhIHkQ.js → mobileLocalExec-CQxhg18r.js} +2 -2
- package/dist/assets/nanobanana-CUZLa6Ps.js +1 -0
- package/dist/assets/{nanobanana-BZFOAWBy.js → nanobanana-DGb3Pl_a.js} +1 -1
- package/dist/assets/nanobanana-t0azjVdU.js +1 -0
- package/dist/assets/{openaiimage-GKTU_xMR.js → openaiimage-CEJpTrfR.js} +1 -1
- package/dist/assets/{pagination-CvVEt5AR.js → pagination-Cf6OU6TC.js} +1 -1
- package/dist/assets/{pika-keSJccaz.js → pika-B5SfmstB.js} +1 -1
- package/dist/assets/{pixverse-C3bZ3PoL.js → pixverse-Ygu03i_5.js} +1 -1
- package/dist/assets/{popover-Dw2cWW19.js → popover-DgohGDWM.js} +1 -1
- package/dist/assets/{producer-CVE0_U2X.js → producer-zePyQeHm.js} +1 -1
- package/dist/assets/{qrart-DcUay8n7.js → qrart-DhxPyTD-.js} +1 -1
- package/dist/assets/{realtime-BbWY8U7Q.js → realtime-B9Z42aIg.js} +1 -1
- package/dist/assets/{row-UYXGfcIt.js → row-DnSqsbqr.js} +1 -1
- package/dist/assets/{seedance-B4FihD_-.js → seedance-C9A6jD6U.js} +1 -1
- package/dist/assets/{seedream-DYdzbGUj.js → seedream-C_0l8MES.js} +1 -1
- package/dist/assets/{select-Bt9OQKZ1.js → select-D51kt1Zz.js} +1 -1
- package/dist/assets/{serp-CT7mMscM.js → serp-CZ3PVfii.js} +1 -1
- package/dist/assets/{slider-Bjx8SMMJ.js → slider-CyhY5gD6.js} +1 -1
- package/dist/assets/{solana-wallets-CjNGMd3n.js → solana-wallets-BKsmsHO2.js} +2 -2
- package/dist/assets/{solana-wallets-vue-Ba36W2jw.js → solana-wallets-vue-BDFT9grA.js} +1 -1
- package/dist/assets/{sora-CbFyXlmK.js → sora-DNM9gJF2.js} +1 -1
- package/dist/assets/{suno-Ca2hn8-M.js → suno-c8ol7tXD.js} +1 -1
- package/dist/assets/{switch-DGfZcJkA.js → switch-B-0uKYNM.js} +1 -1
- package/dist/assets/{table-CCX689XI.js → table-DziuQ1uS.js} +1 -1
- package/dist/assets/{tabs-fbYZd-4b.js → tabs-DQMZGmkq.js} +1 -1
- package/dist/assets/{time-picker-BwWhxkiw.js → time-picker-BOcFsJXS.js} +1 -1
- package/dist/assets/{tooltip-BPfq4nyS.js → tooltip-CJVX4lE9.js} +1 -1
- package/dist/assets/{upload-BeiGnjvC.js → upload-D94R1Rp8.js} +1 -1
- package/dist/assets/{veo-BhO-fKPq.js → veo-BRPRd1Ay.js} +1 -1
- package/dist/assets/{wan-CUuFy1ks.js → wan-CBiEzeSI.js} +1 -1
- package/dist/assets/{web-KmSAjZny.js → web-B2rjsS88.js} +1 -1
- package/dist/assets/{web-_51mCA9P.js → web-BdjZG5Er.js} +1 -1
- package/dist/assets/{web-Bo6ELAQ1.js → web-C3YBWnzg.js} +1 -1
- package/dist/assets/{web-Gz8JlaYj.js → web-DMbmGqbl.js} +1 -1
- package/dist/assets/{web-BxvSrBpo.js → web-Squj3Uzy.js} +1 -1
- package/dist/assets/{webextrator-C212ff5G.js → webextrator-CStuy-KW.js} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/Conversation-CRa6sj1r.js +0 -1
- package/dist/assets/Index-CQ0MD5Bh.js +0 -1
- package/dist/assets/codingBridge-DutHpJ77.js +0 -2
- package/dist/assets/esm-C84xXDLA.js +0 -1
- package/dist/assets/kling-BLSICnGT.js +0 -1
- package/dist/assets/kling-BLZu-_yt.js +0 -1
- package/dist/assets/kling-BOKDjQ6F.js +0 -1
- package/dist/assets/kling-BRkAOJlT.js +0 -1
- package/dist/assets/kling-BW5jAllG.js +0 -1
- package/dist/assets/kling-BXjsugvi.js +0 -1
- package/dist/assets/kling-Bx4FFnR3.js +0 -1
- package/dist/assets/kling-CfTVHiYr.js +0 -1
- package/dist/assets/kling-CuVoW7Vi.js +0 -1
- package/dist/assets/kling-DIcQkEJ_.js +0 -1
- package/dist/assets/kling-DOJOoAT6.js +0 -1
- package/dist/assets/kling-DPvRMx_H.js +0 -1
- package/dist/assets/kling-DUx1Z4-V.js +0 -1
- package/dist/assets/kling-DhkxBQiC.js +0 -1
- package/dist/assets/kling-DioYK9i_.js +0 -1
- package/dist/assets/kling-Dlag9WyK.js +0 -1
- package/dist/assets/kling-IiAZssjO.js +0 -1
- package/dist/assets/kling-hlOmnGZq.js +0 -1
- package/dist/assets/nanobanana-BQSJ_4Ro.js +0 -1
- package/dist/assets/nanobanana-BRXs5x7A.js +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,S as c,T as l,at as u,b as d,ht as f,it as p,j as m,mt as h,qt as g,rt as _,tt as v,x as y,z as b}from"./vendor-chart-Dw-P17PN.js";import{t as x}from"./upload-BeiGnjvC.js";import{t as S}from"./tooltip-BPfq4nyS.js";import{t as C}from"./drawer-DgHGx2f5.js";import{n as w,r as T,t as E}from"./dropdown-RGtZKIeu.js";import{t as D}from"./skeleton-CoheJz5x.js";import{t as O}from"./vendor-axios-Ck2ffRoh.js";import{Fi as k,Ii as A,Ki as j,Li as M,Mi as N,Ni as ee,Pi as te,fa as ne,ji as re,ki as ie,la as P,oa as ae,qi as F}from"./constants-m8v8ZYCt.js";import{$t as I,A as L,Ar as oe,Bt as se,F as ce,Gr as R,Hr as z,Ht as le,M as B,R as ue,Rr as V,Si as H,Wt as de,Yn as U,Yt as fe,ai as W,dn as pe,ei as G,en as K,ni as q,pi as J,rn as Y,un as me,z as he}from"./index-Hbcj2HVJ.js";import{t as X}from"./index.es-dQyZ5P5R.js";import{n as ge,r as _e,t as ve}from"./Message-BF9lpBSW.js";import{t as ye}from"./FilePreview-YTh190j9.js";import{t as be}from"./ImagePreview-BI0-hUzt.js";var xe=b({name:`Composer`,components:{FilePreview:ye,ImagePreview:be,ElTooltip:S,FontAwesomeIcon:X,ElUpload:x,ElButton:J,ElDropdown:E,ElDropdownMenu:T,ElDropdownItem:w},mixins:[de,le],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:R()+`/api/v1/files/`}},computed:{model(){return this.$store.state.chat.model},modelGroup(){return this.$store.state.chat.modelGroup},isVoiceCallSupported(){return this.modelGroup?.isVoiceCallSupported??!1},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.some(e=>e.status===`ready`||e.status===`uploading`)},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:Y,onStartCall(){this.$router.push({name:ce})},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(){q.warning(this.$t(`chat.message.uploadReferencesExceed`))},onError(){q.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(I(`https://auth.acedata.cloud/user/skills`),`_blank`,`noopener`)},onOpenConnections(){window.open(I(`https://auth.acedata.cloud/user/connections`),`_blank`,`noopener`)}}}),Se={class:`composer`},Ce={ref:`uploadTrigger`,class:`upload-trigger`,"aria-hidden":`true`},we={key:0,class:`file-previews`},Te=[`disabled`,`placeholder`],Ee={class:`tools`},De={class:`btn-plus-trigger`},Oe=[`aria-disabled`];function ke(r,p,b,x,S,C){let w=u(`el-upload`),T=u(`image-preview`),E=u(`file-preview`),D=u(`font-awesome-icon`),O=u(`el-tooltip`),k=u(`el-dropdown-item`),A=u(`el-dropdown-menu`),j=u(`el-dropdown`),M=u(`el-button`);return v(),s(`div`,Se,[a(w,{ref:`uploader`,"file-list":r.fileList,"onUpdate:fileList":p[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:h(()=>[e(`span`,Ce,null,512)]),_:1},8,[`file-list`,`accept`,`disabled`,`action`,`on-exceed`,`on-error`,`on-progress`,`headers`]),r.fileList.length>0?(v(),s(`div`,we,[(v(!0),s(l,null,_(r.fileList,e=>(v(),s(l,{key:e.uid},[r.isImageUrl(e.name)?(v(),m(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`])):(v(),m(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))])):o(``,!0),f(e(`textarea`,{ref:`textarea`,"onUpdate:modelValue":p[1]||=e=>r.questionValue=e,disabled:r.answering,class:`input`,placeholder:r.$t(`chat.message.newMessagePlaceholder`),style:g({height:r.inputHeight}),onKeydown:p[2]||=c(t((...e)=>r.onEnterKey&&r.onEnterKey(...e),[`exact`]),[`enter`]),onInput:p[3]||=(...e)=>r.adjustTextareaHeight&&r.adjustTextareaHeight(...e)},null,44,Te),[[d,r.questionValue]]),e(`div`,Ee,[a(j,{trigger:`click`,placement:`top-start`,"hide-on-click":!0,"popper-class":`composer-plus-popper`},{dropdown:h(()=>[a(A,null,{default:h(()=>[a(k,{disabled:!r.isFileSupported&&!r.isImageSupported||r.answering,onClick:r.onTriggerUpload},{default:h(()=>[a(D,{icon:`fa-regular fa-file-alt`,class:`menu-icon`}),e(`span`,null,i(r.$t(`chat.composer.addFiles`)),1)]),_:1},8,[`disabled`,`onClick`]),a(k,{onClick:r.onOpenSkills},{default:h(()=>[a(D,{icon:`fa-solid fa-wand-magic-sparkles`,class:`menu-icon`}),e(`span`,null,i(r.$t(`chat.composer.skills`)),1),a(D,{icon:`fa-solid fa-up-right-from-square`,class:`menu-external`})]),_:1},8,[`onClick`]),a(k,{onClick:r.onOpenConnections},{default:h(()=>[a(D,{icon:`fa-solid fa-plug`,class:`menu-icon`}),e(`span`,null,i(r.$t(`chat.composer.connections`)),1),a(D,{icon:`fa-solid fa-up-right-from-square`,class:`menu-external`})]),_:1},8,[`onClick`])]),_:1})]),default:h(()=>[e(`span`,De,[a(O,{class:`box-item`,effect:`dark`,content:r.$t(`chat.composer.addAction`),placement:`top`},{default:h(()=>[e(`span`,{class:n({btn:!0,"btn-plus":!0,disabled:r.answering}),"aria-disabled":r.answering,role:`button`},[a(D,{icon:`fa-solid fa-plus`,class:`icon icon-plus`})],10,Oe)]),_:1},8,[`content`])])]),_:1}),r.isVoiceCallSupported?(v(),m(O,{key:0,class:`box-item`,effect:`dark`,content:r.$t(`realtime.callTooltip`),placement:`top`},{default:h(()=>[e(`span`,{class:n({btn:!0,"btn-voice":!0}),role:`button`,onClick:p[4]||=(...e)=>r.onStartCall&&r.onStartCall(...e)},[a(D,{icon:`fa-solid fa-microphone`,class:`icon icon-voice`})])]),_:1},8,[`content`])):o(``,!0)]),a(M,{disabled:r.answering||!r.questionValue||r.uploading||!r.ready,type:`primary`,class:n({btn:!0,"btn-send":!0}),onClick:r.onSubmit},{default:h(()=>[a(D,{icon:`fa-solid fa-arrow-up`,class:`icon icon-send`})]),_:1},8,[`disabled`,`onClick`]),f(a(M,{disabled:!r.answering,type:`primary`,class:n({btn:!0,"btn-stop":!0}),onClick:r.onStop},{default:h(()=>[a(D,{icon:`fa-solid fa-stop`,class:`icon icon-stop`})]),_:1},8,[`disabled`,`onClick`]),[[y,r.answering]])])}var Ae=L(xe,[[`render`,ke],[`__scopeId`,`data-v-b779be71`]]),je=b({name:`ModelSelector`,components:{ElDropdown:E,ElDropdownMenu:T,ElDropdownItem:w,FontAwesomeIcon:X},emits:[`update:modelValue`,`select`,`model-group-changed`,`model-changed`],data(){return{options:[N,te,A,k,ee,M]}},computed:{model(){return console.log(`model`,this.$store.state.chat.model),this.$store.state.chat.model},modelGroup(){return this.$route.meta?.modelGroup||N}},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)}}}),Me={class:`selector`},Ne={class:`trigger`},Pe=[`src`],Fe={class:`trigger-name`},Ie={class:`item`},Le=[`src`],Re={class:`item-info`},ze={key:0,class:`item-name`},Be={key:0,class:`item-free-tag`},Ve={key:1,class:`item-desc`};function He(t,c,d,f,p,g){let y=u(`font-awesome-icon`),b=u(`el-dropdown-item`),x=u(`el-dropdown-menu`),S=u(`el-dropdown`);return v(),s(`div`,Me,[a(S,{trigger:`click`,"popper-class":`model-selector-popper`},{dropdown:h(()=>[t.modelGroup&&t.modelGroup?.models?(v(),m(x,{key:0},{default:h(()=>[(v(!0),s(l,null,_(t.modelGroup?.models?.filter(e=>e.enabled),(a,c)=>(v(),m(b,{key:c,class:n({active:t.model?.name===a?.name}),onClick:e=>t.onModelChange(a)},{default:h(()=>[e(`div`,Ie,[a?.icon?(v(),s(`img`,{key:0,src:a.icon,class:`item-icon`},null,8,Le)):o(``,!0),e(`div`,Re,[a?.getDisplayName?(v(),s(`p`,ze,[r(i(a?.getDisplayName())+` `,1),a?.isFree?(v(),s(`span`,Be,i(t.$t(`chat.model.freeTag`)),1)):o(``,!0)])):o(``,!0),a?.getDescription?(v(),s(`p`,Ve,i(a?.getDescription()),1)):o(``,!0)]),t.model?.name===a?.name?(v(),m(y,{key:1,icon:`fa-solid fa-check`,class:`item-check`})):o(``,!0)])]),_:2},1032,[`class`,`onClick`]))),128))]),_:1})):o(``,!0)]),default:h(()=>[e(`div`,Ne,[t.model?.icon?(v(),s(`img`,{key:0,src:t.model.icon,class:`trigger-icon`},null,8,Pe)):o(``,!0),e(`span`,Fe,i(t.model?.getDisplayName?.()??t.model?.name??``),1),a(y,{icon:`fa-solid fa-chevron-down`,class:`trigger-arrow`})])]),_:1})])}var Ue=L(je,[[`render`,He],[`__scopeId`,`data-v-2e6e7a65`]]),We=b({name:`DesktopAgentManager`,components:{ElDialog:W},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`]}),Ge={class:`agent-manager`},Ke={class:`description`},qe={key:0,class:`status-card connected`},Je={class:`status-header`},Ye={class:`status-text`},Xe={class:`info-row`},Ze={class:`label`},Qe={class:`value`},$e={class:`info-row`},et={class:`label`},tt={class:`value`},nt={class:`info-row`},rt={class:`label`},it={class:`value`},at={class:`hint`},ot={key:1,class:`status-card disconnected`},st={class:`status-header`},ct={class:`status-text`},lt={class:`install-guide`},ut={class:`step-label`},dt={class:`step-label`};function ft(t,n,r,a,o,c){let l=u(`el-dialog`);return v(),m(l,{"model-value":t.modelValue,title:t.$t(`chat.agent.title`),width:`480px`,"onUpdate:modelValue":n[0]||=e=>t.$emit(`update:modelValue`,e)},{default:h(()=>[e(`div`,Ge,[e(`p`,Ke,i(t.$t(`chat.agent.description`)),1),t.connected?(v(),s(`div`,qe,[e(`div`,Je,[n[1]||=e(`span`,{class:`pulse-dot`},null,-1),e(`span`,Ye,i(t.$t(`chat.agent.connected`)),1)]),e(`div`,Xe,[e(`span`,Ze,i(t.$t(`chat.agent.name`))+`:`,1),e(`span`,Qe,i(t.agentName),1)]),e(`div`,$e,[e(`span`,et,i(t.$t(`chat.agent.tools`))+`:`,1),e(`span`,tt,i(t.toolCount),1)]),e(`div`,nt,[e(`span`,rt,i(t.$t(`chat.agent.connectedSince`))+`:`,1),e(`span`,it,i(t.connectedAt),1)]),e(`p`,at,i(t.$t(`chat.agent.connectedHint`)),1)])):(v(),s(`div`,ot,[e(`div`,st,[e(`span`,ct,i(t.$t(`chat.agent.notConnected`)),1)]),e(`div`,lt,[e(`p`,ut,i(t.$t(`chat.agent.installLabel`)),1),n[2]||=e(`code`,{class:`command`},`npm install -g @acedatacloud/desktop-agent`,-1),e(`p`,dt,i(t.$t(`chat.agent.runLabel`)),1),n[3]||=e(`code`,{class:`command`},`adc-agent --token YOUR_API_TOKEN`,-1)])]))])]),_:1},8,[`model-value`,`title`])}var pt=L(We,[[`render`,ft],[`__scopeId`,`data-v-a365b6f4`]]),mt={chatgpt:`openai`,claude:`anthropic`,gemini:`google`,grok:`xai`,deepseek:`deepseek`,kimi:`moonshot`,glm:`zhipu`},ht=b({name:`BYOKBadge`,components:{ElTooltip:S,FontAwesomeIcon:X},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 mt[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 me.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`}}))}}}),gt={class:`badge-text`};function _t(t,n,r,s,c,l){let d=u(`font-awesome-icon`),f=u(`el-tooltip`);return t.show&&t.providerLabel?(v(),m(f,{key:0,content:`${t.$t(`byok.badge.tooltip`,{provider:t.providerLabel})} — ${t.$t(`byok.badge.manage`)}`,placement:`bottom`},{default:h(()=>[e(`button`,{type:`button`,class:`byok-badge`,onClick:n[0]||=(...e)=>t.onClickManage&&t.onClickManage(...e)},[a(d,{icon:`fa-solid fa-key`,class:`badge-icon`}),e(`span`,gt,i(t.$t(`byok.badge.active`,{provider:t.providerLabel})),1)])]),_:1},8,[`content`])):o(``,!0)}var vt=L(ht,[[`render`,_t],[`__scopeId`,`data-v-2875e3f2`]]),yt=b({name:`ShareConversationDialog`,components:{ElDialog:W,ElInput:H,ElButton:J,FontAwesomeIcon:X},props:{modelValue:{type:Boolean,default:!1},conversationId:{type:String,default:void 0},shareId:{type:String,default:void 0}},emits:[`update:modelValue`,`update:shareId`],data(){return{localShareId:this.shareId,creating:!1,disabling:!1,copied:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit(`update:modelValue`,e)}},token(){return this.$store.state.chat?.credential?.token},shareUrl(){return this.localShareId?`${typeof window<`u`?window.location.origin:``}/share/${this.localShareId}`:``}},watch:{shareId(e){this.localShareId=e},modelValue(e){e&&(this.localShareId=this.shareId,this.copied=!1)}},methods:{selectAll(e){e.target?.select?.()},async onCreate(){if(!this.token){q.error(this.$t(`chat.share.needLogin`));return}if(!this.conversationId){q.error(this.$t(`chat.share.noConversation`));return}this.creating=!0;try{let{data:e}=await U.shareConversation(this.conversationId,{token:this.token}),t=e?.share_id;if(!t)throw Error(`missing share_id`);this.localShareId=t,this.$emit(`update:shareId`,t)}catch(e){console.error(`shareConversation failed`,e),q.error(this.$t(`chat.share.createFailed`))}finally{this.creating=!1}},onCopy(){this.shareUrl&&(fe(this.shareUrl,{debug:!1}),this.copied=!0,q.success(this.$t(`chat.share.copied`)),setTimeout(()=>{this.copied=!1},2500))},async onDisable(){if(!this.token||!this.conversationId){this.localShareId=void 0,this.$emit(`update:shareId`,void 0);return}this.disabling=!0;try{await U.unshareConversation(this.conversationId,{token:this.token}),this.localShareId=void 0,this.$emit(`update:shareId`,void 0),q.success(this.$t(`chat.share.disabled`))}catch(e){console.error(`unshareConversation failed`,e),q.error(this.$t(`chat.share.disableFailed`))}finally{this.disabling=!1}}}}),bt={class:`share-desc`},xt={key:0,class:`share-linked`},St={class:`share-url-row`},Ct={key:1,class:`share-create`};function wt(t,n,o,c,l,d){let f=u(`el-input`),p=u(`el-button`),g=u(`font-awesome-icon`),_=u(`el-dialog`);return v(),m(_,{modelValue:t.visible,"onUpdate:modelValue":n[2]||=e=>t.visible=e,width:`460px`,title:t.$t(`chat.share.dialogTitle`),"close-on-click-modal":!0},{footer:h(()=>[a(p,{onClick:n[1]||=e=>t.visible=!1},{default:h(()=>[r(i(t.$t(`common.button.close`)),1)]),_:1})]),default:h(()=>[e(`p`,bt,i(t.$t(`chat.share.description`)),1),t.localShareId?(v(),s(`div`,xt,[e(`div`,St,[a(f,{modelValue:t.shareUrl,"onUpdate:modelValue":n[0]||=e=>t.shareUrl=e,readonly:``,class:`share-url`,onFocus:t.selectAll},null,8,[`modelValue`,`onFocus`]),a(p,{type:`primary`,onClick:t.onCopy},{default:h(()=>[r(i(t.copied?t.$t(`chat.share.copied`):t.$t(`chat.share.copy`)),1)]),_:1},8,[`onClick`])]),a(p,{link:``,type:`danger`,class:`share-disable`,loading:t.disabling,onClick:t.onDisable},{default:h(()=>[a(g,{icon:`fa-solid fa-link-slash`,class:`mr-1`}),r(` `+i(t.$t(`chat.share.disable`)),1)]),_:1},8,[`loading`,`onClick`])])):(v(),s(`div`,Ct,[a(p,{type:`primary`,round:``,loading:t.creating,onClick:t.onCreate},{default:h(()=>[a(g,{icon:`fa-solid fa-link`,class:`mr-1`}),r(` `+i(t.$t(`chat.share.createLink`)),1)]),_:1},8,[`loading`,`onClick`])]))]),_:1},8,[`modelValue`,`title`])}var Z=L(yt,[[`render`,wt],[`__scopeId`,`data-v-0d1ca31a`]]),Tt={},Et={class:`disclaimer`};function Dt(e,t){return v(),s(`p`,Et,i(e.$t(`chat.message.howToUse`)),1)}var Ot=L(Tt,[[`render`,Dt],[`__scopeId`,`data-v-d2d980ab`]]),Q=5,kt=b({name:`ConnectorStrip`,components:{ElTooltip:S},data(){return{enabledConnectors:[],loadSeq:0}},computed:{visibleConnectors(){return this.enabledConnectors.length<=Q?this.enabledConnectors:this.enabledConnectors.slice(0,Q-1)},overflowCount(){return this.enabledConnectors.length<=Q?0:this.enabledConnectors.length-(Q-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 ge(t,e);n===this.loadSeq&&this.userId===t&&(this.enabledConnectors=r)},onVisibilityChange(){document.visibilityState===`visible`&&this.loadConnectors(!0)},onOpen(){se()}}}),At={key:0,class:`connector-strip`},jt=[`src`,`alt`];function Mt(t,n,r,a,c,d){let f=u(`el-tooltip`);return t.visibleConnectors.length>0?(v(),s(`div`,At,[(v(!0),s(l,null,_(t.visibleConnectors,r=>(v(),m(f,{key:r.id,effect:`dark`,content:r.name,placement:`top`},{default:h(()=>[e(`span`,{class:`connector-chip`,role:`button`,onClick:n[0]||=(...e)=>t.onOpen&&t.onOpen(...e)},[e(`img`,{class:`connector-icon`,src:r.icon_url,alt:r.name,loading:`lazy`},null,8,jt)])]),_:2},1032,[`content`]))),128)),t.overflowCount>0?(v(),m(f,{key:0,effect:`dark`,content:t.$t(`chat.composer.connections`),placement:`top`},{default:h(()=>[e(`span`,{class:`connector-chip connector-more`,role:`button`,onClick:n[1]||=(...e)=>t.onOpen&&t.onOpen(...e)},` +`+i(t.overflowCount),1)]),_:1},8,[`content`])):o(``,!0)])):o(``,!0)}var Nt=L(kt,[[`render`,Mt],[`__scopeId`,`data-v-281663b0`]]),Pt=b({name:`SidePanel`,components:{ElInput:H,ElButton:J,ElDialog:W,ElDropdown:E,ElDropdownItem:w,ElDropdownMenu:T,FontAwesomeIcon:X,ElSkeleton:D,ShareConversationDialog:Z},props:{},emits:[`change-conversation`],data(){return{renameDialogVisible:!1,deleteDialogVisible:!1,shareDialogVisible:!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===z.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:he})},onArtifacts(){this.$router.push({name:ue})},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):e===`share`&&this.openShareDialog(t)},openShareDialog(e){this.actingConversation=e,this.shareDialogVisible=!0},onShareIdUpdated(e){this.actingConversation&&(this.actingConversation.share_id=e,this.$store.dispatch(`chat/setConversation`,{...this.actingConversation,share_id:e}))},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){q.error(`Token 不存在,请重新登录`);return}if(!t){q.error(`会话不存在`);return}if(!n){q.warning(`请输入名称`);return}this.renameSubmitting=!0;try{await U.updateConversation({id:t,title:n},{token:e}),await this.$store.dispatch(`chat/getConversations`),this.renameDialogVisible=!1,q.success(`已重命名`)}catch(e){console.error(e),q.error(`重命名失败,请稍后重试`)}finally{this.renameSubmitting=!1}},async onConfirmDelete(){let e=this.token,t=this.actingConversation?.id;if(!e){q.error(`Token 不存在,请重新登录`);return}if(!t){q.error(`会话不存在`);return}this.deleteSubmitting=!0;try{await U.deleteConversation(t,{token:e}),await this.$store.dispatch(`chat/getConversations`),t===this.conversationId&&this.$emit(`change-conversation`,void 0),this.deleteDialogVisible=!1,q.success(`已删除`)}catch(e){console.error(e),q.error(`删除失败,请稍后重试`)}finally{this.deleteSubmitting=!1}}}}),Ft={class:`panel`},It={key:1,class:`conversations`},Lt={class:`icons`},Rt={class:`title`},zt={class:`icons`},Bt={class:`title`},Vt={class:`icons`},Ht={class:`title`},Ut={class:`key`},Wt=[`onClick`],Gt={class:`title`},Kt={class:`operations`};function qt(o,d,f,p,g,y){let b=u(`el-skeleton`),x=u(`font-awesome-icon`),S=u(`el-dropdown-item`),C=u(`el-dropdown-menu`),w=u(`el-dropdown`),T=u(`el-input`),E=u(`el-button`),D=u(`el-dialog`),O=u(`share-conversation-dialog`);return v(),s(`div`,Ft,[o.loading&&o.conversationGroups===void 0?(v(),m(b,{key:0})):(v(),s(`div`,It,[e(`div`,{class:`conversation`,onClick:d[0]||=(...e)=>o.onNewConversation&&o.onNewConversation(...e)},[e(`div`,Lt,[a(x,{icon:`fa-solid fa-plus`,class:`icon`})]),e(`div`,Rt,i(o.$t(`chat.message.startNewChat`)),1)]),e(`div`,{class:`conversation`,onClick:d[1]||=(...e)=>o.onScheduledTasks&&o.onScheduledTasks(...e)},[e(`div`,zt,[a(x,{icon:`fa-solid fa-clock`,class:`icon`})]),e(`div`,Bt,i(o.$t(`chat.scheduledTasks.navTitle`)),1)]),e(`div`,{class:`conversation`,onClick:d[2]||=(...e)=>o.onArtifacts&&o.onArtifacts(...e)},[e(`div`,Vt,[a(x,{icon:`fa-solid fa-box-archive`,class:`icon`})]),e(`div`,Ht,i(o.$t(`chat.artifacts.navTitle`)),1)]),(v(!0),s(l,null,_(o.conversationGroups,(c,u)=>(v(),s(`div`,{key:u,class:`group`},[e(`div`,Ut,i(o.$t(`chat.group.${u}`)),1),(v(!0),s(l,null,_(c,(c,l)=>(v(),s(`div`,{key:l,class:n({conversation:!0,active:c.id===o.conversationId}),onClick:e=>o.onClickConversation(c.id)},[e(`div`,Gt,i(o.getConversationTitle(c)),1),e(`div`,Kt,[a(w,{trigger:`click`,placement:`bottom-end`,teleported:!0,onCommand:e=>o.onConversationCommand(e,c)},{dropdown:h(()=>[a(C,null,{default:h(()=>[a(S,{command:`rename`,onClick:d[4]||=t(()=>{},[`stop`])},{default:h(()=>[a(x,{icon:`fa-solid fa-pen-to-square`,class:`mr-2`}),d[13]||=r(` 重命名 `,-1)]),_:1}),a(S,{command:`share`,onClick:d[5]||=t(()=>{},[`stop`])},{default:h(()=>[a(x,{icon:`fa-solid fa-share-nodes`,class:`mr-2`}),r(` `+i(o.$t(`chat.share.menu`)),1)]),_:1}),a(S,{command:`delete`,onClick:d[6]||=t(()=>{},[`stop`])},{default:h(()=>[a(x,{icon:`fa-solid fa-trash`,class:`mr-2`}),r(` `+i(o.$t(`common.button.delete`)),1)]),_:1})]),_:1})]),default:h(()=>[e(`span`,{class:`more`,onClick:d[3]||=t(()=>{},[`stop`])},[a(x,{icon:`fa-solid fa-ellipsis`})])]),_:1},8,[`onCommand`])])],10,Wt))),128))]))),128))])),a(D,{modelValue:o.renameDialogVisible,"onUpdate:modelValue":d[9]||=e=>o.renameDialogVisible=e,width:`420px`,title:`重命名`,"close-on-click-modal":!1},{footer:h(()=>[a(E,{onClick:d[8]||=e=>o.renameDialogVisible=!1},{default:h(()=>[r(i(o.$t(`common.button.cancel`)),1)]),_:1}),a(E,{type:`primary`,loading:o.renameSubmitting,onClick:o.onConfirmRename},{default:h(()=>[r(i(o.$t(`common.button.confirm`)),1)]),_:1},8,[`loading`,`onClick`])]),default:h(()=>[a(T,{modelValue:o.renameDraft,"onUpdate:modelValue":d[7]||=e=>o.renameDraft=e,autofocus:``,onKeydown:c(o.onConfirmRename,[`enter`])},null,8,[`modelValue`,`onKeydown`])]),_:1},8,[`modelValue`]),a(D,{modelValue:o.deleteDialogVisible,"onUpdate:modelValue":d[11]||=e=>o.deleteDialogVisible=e,width:`420px`,title:o.$t(`chat.message.confirmDelete`),"close-on-click-modal":!1},{footer:h(()=>[a(E,{onClick:d[10]||=e=>o.deleteDialogVisible=!1},{default:h(()=>[r(i(o.$t(`common.button.cancel`)),1)]),_:1}),a(E,{type:`danger`,loading:o.deleteSubmitting,onClick:o.onConfirmDelete},{default:h(()=>[r(i(o.$t(`common.button.delete`)),1)]),_:1},8,[`loading`,`onClick`])]),default:h(()=>[d[14]||=e(`div`,{class:`delete-tip`},`确认删除该会话?删除后不可恢复。`,-1)]),_:1},8,[`modelValue`,`title`]),a(O,{modelValue:o.shareDialogVisible,"onUpdate:modelValue":d[12]||=e=>o.shareDialogVisible=e,"conversation-id":o.actingConversation?.id,"share-id":o.actingConversation?.share_id,"onUpdate:shareId":o.onShareIdUpdated},null,8,[`modelValue`,`conversation-id`,`share-id`,`onUpdate:shareId`])])}var Jt=b({name:`LayoutChat`,components:{SidePanel:L(Pt,[[`render`,qt],[`__scopeId`,`data-v-aff7c556`]]),ElDrawer:C,ElButton:J,FontAwesomeIcon:X},emits:[`change-conversation`],data(){return{drawer:!1}},methods:{onChangeConversation(e){console.debug(`onChangeConversation in layout`,e),this.$emit(`change-conversation`,e)}}}),Yt={class:`main`},Xt={class:`side`},Zt={class:`chat`};function Qt(t,n,r,i,o,c){let l=u(`side-panel`),d=u(`font-awesome-icon`),f=u(`el-button`),m=u(`el-drawer`);return v(),s(`div`,Yt,[e(`div`,Xt,[p(t.$slots,`side`,{},()=>[a(l,{onChangeConversation:t.onChangeConversation},null,8,[`onChangeConversation`])],!0)]),e(`div`,Zt,[p(t.$slots,`chat`,{},void 0,!0)]),a(f,{circle:``,class:`menu`,onClick:n[0]||=e=>t.drawer=!0},{default:h(()=>[a(d,{icon:`fa-solid fa-bars`})]),_:1}),a(m,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`290px`},{default:h(()=>[a(l,{onChangeConversation:t.onChangeConversation},null,8,[`onChangeConversation`])]),_:1},8,[`modelValue`])])}var $t=L(Jt,[[`render`,Qt],[`__scopeId`,`data-v-7418117b`]]);function $(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 en(e){let t=$(e.consent),n=$(e.connector);return!t||!n?null:{consentRequestId:t,connector:n}}function tn(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 nn(e,t){return _e(e,[t],[])}function rn(e,t){try{let n=new URL(e),r=n.searchParams.get(`return_to`);if(!r||!t)return e;let i=new URL(r),a=i.pathname.match(/^\/chat\/c\/([^/]+)/);if(!a)return e;let o=a[1],s=new URL(`${i.origin}${t}/conversations/${o}`);return i.searchParams.forEach((e,t)=>s.searchParams.set(t,e)),n.searchParams.set(`return_to`,s.toString()),n.toString()}catch{return e}}function an(e){return Array.isArray(e?.messages)&&e.messages.length>0}var on=b({name:`ChatConversation`,components:{Composer:Ae,Disclaimer:Ot,ConnectorStrip:Nt,ModelSelector:Ue,DesktopAgentManager:pt,"byok-badge":vt,ShareConversationDialog:Z,Message:ve,Layout:$t,ElTooltip:S,ElButton:J,FontAwesomeIcon:X},data(){return{drawer:!1,question:``,references:[],localTools:[],pendingClientTools:[],clientToolRunId:0,upload:!1,answering:!1,canceler:void 0,agentManagerVisible:!1,agentConnected:!1,agentName:``,agentToolCount:0,agentConnectedAt:``,shareDialogVisible:!1,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===z.Success&&!this.application},conversations(){return this.$store.state.chat.conversations},initializing(){return this.$store.state.chat.status.getApplications===z.Request},ready(){return this.$store.getters.authenticated?!this.initializing&&!!this.credential?.token&&!!this.application:!0}},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(),G()&&(this.localTools=await B()?.listTools()??[])},methods:{resetConversation(){this.messages=[],this.question=``,this.references=[],this.pendingClientTools=[]},onShareIdUpdated(e){this.conversation&&this.$store.dispatch(`chat/setConversation`,{...this.conversation,share_id:e})},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 pe.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.pendingClientTools=[],this.clientToolRunId++,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:P},role:j,state:V.FAILED});return}let o=this.conversationId;U.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:P},role:j,state:V.FAILED});return}let i=this.conversationId;U.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:F}),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(!an(t)){let n=await this.$store.dispatch(`chat/getConversation`,e);n&&(t=n)}let n=t?.model,r=ie.find(e=>e.name===n),i=re.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(K()){if(this.references.length>0){let e=[{type:`text`,text:this.question.trim()}];for(let t of this.references){let n=Y(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:F})}else this.messages.push({content:this.question.trim(),role:F});console.debug(`onSubmit`,this.question,this.references),await this.onRequest()}},async onRequest(){if(!K())return;G()&&(this.localTools=await B()?.listTools()??[]),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:P},role:j,state:V.FAILED});return}let r=this.conversationId;this.messages.push({content:``,role:j,state:V.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,...this._localToolInjection()},e,r)},_resumeWithToolResults(e,t){let n=this.credential?.token,r=t??this.conversationId;if(!n||!r||!e.length){console.error(`cannot resume: no token / conversation id / results`);return}let i=[...this.messages].reverse().find(e=>e.role===j);if(i&&Array.isArray(i.content)){let t=i.content,n=[];for(let r of e){let e=t.find(e=>e.type===`tool_use`&&e.tool_id===r.tool_use_id);if(e&&(e.status=`done`,e.output=r.output,r.is_error&&(e.is_error=!0),delete e.pending_question),r.image&&this._isValidResultImage(r.image)){let e=`${r.tool_use_id} screenshot`,i=t.some(t=>t.type===`image_url`&&t.alt===e),a=n.some(t=>t.alt===e);!i&&!a&&n.push({type:`image_url`,image_url:{url:r.image},alt:e})}}n.length&&t.push(...n)}this.messages.push({content:``,role:j,state:V.PENDING}),this.onScrollDown(),this.answering=!0,this.canceler=new AbortController,this._streamAssistantTurn({id:r,model:this.model.name,stateful:!0,tool_results:e,...this._localToolInjection()},n,r)},async onAnswerAskUserQuestion(e){this._resumeWithToolResults([{tool_use_id:e.tool_use_id,output:e.output,...e.is_error?{is_error:!0}:{}}],e.conversationId)},_localToolInjection(){return!G()||!this.localTools.length?{}:{client_tools:this._wiredTools().map(({spec:e,wire:t})=>({name:t,displayName:e.name,description:e.description,inputSchema:e.input_schema}))}},_wiredTools(){let e=new Set;return this.localTools.map(t=>{let n=t.name.replace(/[^a-zA-Z0-9_-]/g,`_`);if(e.has(n)){let t=2;for(;e.has(`${n}_${t}`);)t++;n=`${n}_${t}`}return e.add(n),{spec:t,wire:n}})},async _runClientTools(e,t,n){let r=(t??this.conversationId)||``,i=[];for(let t of e){if(n!==void 0&&n!==this.clientToolRunId)return;let e=this._wiredTools().find(e=>e.wire===t.name)?.spec.name??t.name,a;try{a=JSON.parse(JSON.stringify(t.input??{}))}catch{a={}}let o;try{o=await B()?.invoke({name:e,input:a,sessionId:r})??{output:`local execution unavailable`,is_error:!0}}catch(e){o={output:e instanceof Error?e.message:String(e),is_error:!0}}let s=o.image?await this._hostToolResultImage(o.image)||o.image:void 0;i.push({tool_use_id:t.toolId,output:o.output,...o.is_error?{is_error:!0}:{},...s?{image:s}:{}})}n!==void 0&&n!==this.clientToolRunId||this._resumeWithToolResults(i,t)},_isValidResultImage(e){return!e||e.length>6e6?!1:e.startsWith(`https://`)?!/\s/.test(e):/^data:image\/(png|jpe?g|webp);base64,[A-Za-z0-9+/]+={0,2}$/.test(e)},async _hostToolResultImage(e){if(!e||!e.startsWith(`data:`))return e||null;let t=this.$store.getters.token?.access;if(!t)return null;try{let n=await(await fetch(e)).blob(),r=(n.type.split(`/`)[1]||`png`).split(`;`)[0],i=new FormData;i.append(`file`,n,`screenshot.${r}`);let a=await fetch(`${R()}/api/v1/files/`,{method:`POST`,headers:{Authorization:`Bearer ${t}`},body:i});if(!a.ok)return null;let o=await a.json(),s=o?.file_url||o?.data?.file_url;return typeof s==`string`&&s?s:null}catch(e){return console.warn(`[computer-use] screenshot upload failed; sending inline`,e),null}},onSkipAskUserQuestion(e){let t=[...this.messages].reverse().find(e=>e.role===j);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===j);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:j,state:V.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}],...this._localToolInjection()},t,this.conversationId)},onAuthorizeConnector(e){let t=e.entry?.install_url;if(!t){console.warn(`authorize click with no install_url`,e);return}let n=this.$route.matched[0]?.path??``;window.location.href=rn(t,n)},onCaptureConsentReturnFromUrl(){let e=en(this.$route.query||{});e&&(this.pendingConsentReturn=e)},onConsumePendingConsentReturn(){let e=this.pendingConsentReturn;if(!e||this.messages.length===0)return;let t=tn(this.messages,e.consentRequestId);if(!t)return;this.pendingConsentReturn=null;let n=nn(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=this.messages.length-1,a=[],o=new Map,s=``,c=0;U.chatConversation(e,{token:t,stream:e=>{console.debug(`stream response`,e);let t=this.messages[i];if(e.type===`thinking`&&e.content){let t=this.messages[i];t.thinking=(t.thinking??``)+e.content}else if(e.type===`tool_use_start`&&e.tool_id){let t=o.get(e.tool_id);t?(e.tool_name&&(t.tool_name=e.tool_name),e.tool_display_name&&(t.tool_display_name=e.tool_display_name),e.input&&Object.keys(e.input).length>0&&(t.input=e.input)):(s&&(a.push({type:`text`,text:s}),s=``,c=e.answer?.length??0),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`},a.push(t),o.set(e.tool_id,t)),G()&&e.execution===`client`&&!this.pendingClientTools.some(t=>t.toolId===e.tool_id)&&(t.status=`awaiting_input`,this.pendingClientTools.push({toolId:e.tool_id,name:e.tool_name||``,input:e.input||{}}))}else if(e.type===`tool_progress`&&e.tool_id){let t=o.get(e.tool_id);t&&(t.input_stream=(t.input_stream??``)+(e.progress??``))}else if(e.type===`tool_result`&&e.tool_id){let t=o.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.input_stream,delete t.pending_question)}else if(e.type===`ask_user_question`&&e.tool_id&&e.payload){let t=o.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=o.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/`)?a.push({type:`image_url`,image_url:e.artifact.url,name:e.artifact.name,mimeType:e.artifact.mimeType}):a.push({type:`file_url`,file_url:e.artifact.url,name:e.artifact.name,mimeType:e.artifact.mimeType});else if(e.type===`card`&&e.card)s&&(a.push({type:`text`,text:s}),s=``,c=e.answer?.length??0),a.push({type:`card`,card:e.card});else if(e.type===`citation`&&e.citation){let t=this.messages[i];t.citations={...t.citations??{},[e.citation.id]:e.citation}}else e.delta_answer&&(s=(e.answer||``).slice(c));let n=[...a];s&&n.push({type:`text`,text:s}),n.length>0?this.messages[i]={role:j,content:n,thinking:t?.thinking,citations:t?.citations,state:t?.state===V.FINISHED?t?.state:V.ANSWERING}:this.messages[i]={role:j,content:e.answer,thinking:t?.thinking,citations:t?.citations,state:t?.state===V.FINISHED?t?.state:V.ANSWERING},r=e?.id},signal:this.canceler.signal}).then(async()=>{if(console.debug(`finished fetch answer`,this.messages),this.messages[i].state=V.FINISHED,console.debug(`finished fetch answer`,JSON.stringify(this.messages)),await this.$store.dispatch(`chat/setConversation`,{id:r,messages:this.messages}),this.pendingClientTools.length||(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`),this.pendingClientTools.length){let e=this.pendingClientTools;this.pendingClientTools=[];let t=++this.clientToolRunId;await this._runClientTools(e,r,t)}}).catch(e=>{this.handleRequestError(e,i)})},async handleRequestError(e,t){console.error(`error happened`,e),this.pendingClientTools=[];let n=t??this.messages.length-1,r=n>=0?this.messages[n]:void 0;if(r&&(r.state=V.FAILED),e.name===`AbortError`){console.error(`aborted`),this.answering=!1;return}else e instanceof oe?(console.debug(`BaseError`,e),r&&(r.error={code:e.code,message:e.detail})):O.isCancel(e)?r&&(r.error={code:ae}):r&&(r.error={code:ne});this.answering=!1},async onScrollDown(){setTimeout(()=>{let e=document.querySelector(`.messages`);!e||!this.messages||this.messages.length===0||(e.scrollTop=e?.scrollHeight)},0)}}}),sn={class:`toolbar`},cn={class:`toolbar-left`},ln={class:`toolbar-actions`},un={key:0,class:`messages`},dn={class:`starter`},fn={class:`composer-connectors`};function pn(t,r,i,c,d,f){let p=u(`model-selector`),g=u(`byok-badge`),y=u(`font-awesome-icon`),b=u(`el-button`),x=u(`el-tooltip`),S=u(`desktop-agent-manager`),C=u(`share-conversation-dialog`),w=u(`message`),T=u(`connector-strip`),E=u(`composer`),D=u(`disclaimer`),O=u(`layout`);return v(),m(O,{onChangeConversation:r[8]||=e=>t.onChangeConversation(e)},{chat:h(()=>[e(`div`,sn,[e(`div`,cn,[a(p,{class:`selector`,onModelGroupChanged:r[0]||=e=>t.onChangeConversation(void 0)}),a(g,{class:`byok-badge`})]),e(`div`,ln,[t.conversationId?(v(),m(x,{key:0,content:t.$t(`chat.share.menu`),placement:`bottom`},{default:h(()=>[a(b,{class:`toolbar-btn`,text:``,onClick:r[1]||=e=>t.shareDialogVisible=!0},{default:h(()=>[a(y,{icon:`fa-solid fa-share-nodes`})]),_:1})]),_:1},8,[`content`])):o(``,!0),o(``,!0)])]),t.agentManagerVisible?(v(),m(S,{key:0,modelValue:t.agentManagerVisible,"onUpdate:modelValue":r[3]||=e=>t.agentManagerVisible=e,connected:t.agentConnected,"agent-name":t.agentName,"tool-count":t.agentToolCount,"connected-at":t.agentConnectedAt},null,8,[`modelValue`,`connected`,`agent-name`,`tool-count`,`connected-at`])):o(``,!0),a(C,{modelValue:t.shareDialogVisible,"onUpdate:modelValue":r[4]||=e=>t.shareDialogVisible=e,"conversation-id":t.conversationId,"share-id":t.conversation?.share_id,"onUpdate:shareId":t.onShareIdUpdated},null,8,[`modelValue`,`conversation-id`,`share-id`,`onUpdate:shareId`]),e(`div`,{class:n({dialogue:!0,empty:t.messages.length===0})},[t.messages.length>0?(v(),s(`div`,un,[(v(!0),s(l,null,_(t.messages,(e,n)=>(v(),m(w,{key:n,message:e,messages:t.messages,question:t.question,application:t.application,class:`message`,"onUpdate:question":r[5]||=e=>t.question=e,onEdit:t.onEdit,onRestart:t.onRestart,onAnswerAskUserQuestion:t.onAnswerAskUserQuestion,onSkipAskUserQuestion:t.onSkipAskUserQuestion,onRespondConnectorConsent:t.onRespondConnectorConsent,onAuthorizeConnector:t.onAuthorizeConnector},null,8,[`message`,`messages`,`question`,`application`,`onEdit`,`onRestart`,`onAnswerAskUserQuestion`,`onSkipAskUserQuestion`,`onRespondConnectorConsent`,`onAuthorizeConnector`]))),128))])):o(``,!0),e(`div`,dn,[e(`div`,fn,[a(T)]),a(E,{question:t.question,"onUpdate:question":r[6]||=e=>t.question=e,answering:t.answering,ready:t.ready,references:t.references,"onUpdate:references":r[7]||=e=>t.references=e,onSubmit:t.onSubmit,onStop:t.onStop},null,8,[`question`,`answering`,`ready`,`references`,`onSubmit`,`onStop`]),a(D,{class:`composer-disclaimer`})])],2)]),_:1})}var mn=L(on,[[`render`,pn],[`__scopeId`,`data-v-85efdf10`]]);export{mn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime--c01j_DQ.js";import{A as e,C as t,Gt as n,I as r,Jt as i,L as a,M as o,N as s,S as c,T as l,at as u,ht as d,it as f,j as p,mt as m,qt as h,rt as g,tt as _,x as v,z as y}from"./vendor-chart-Dw-P17PN.js";import{r as b,t as x}from"./select-Bt9OQKZ1.js";import{t as S}from"./upload-BeiGnjvC.js";import{t as C}from"./tooltip-BPfq4nyS.js";import{t as w}from"./image-DJ4WPTjw.js";import{t as T}from"./alert-CjynZSNg.js";import{t as E}from"./drawer-DgHGx2f5.js";import{Fn as D,Ln as O,Rn as k,zn as A}from"./constants-m8v8ZYCt.js";import{A as j,Gr as M,Hr as N,Ht as P,Kt as F,Ut as ee,Vt as te,Wt as I,bn as L,en as R,ni as z,nr as B,pi as V}from"./index-Hbcj2HVJ.js";import{t as H}from"./index.es-dQyZ5P5R.js";import{t as U}from"./CopyToClipboard-DY_1J40c.js";import{t as W}from"./ImagePreview-BI0-hUzt.js";import{n as G}from"./taskDrawerMixin-DyAUhFEq.js";import{t as K}from"./Consumption-Cnpp8pQ8.js";import{i as q,n as J,t as Y}from"./pagination-CvVEt5AR.js";import{t as X}from"./ApiCodeButton-DrjK0_qT.js";import{t as Z}from"./BotPlaceholder-kUSKYvib.js";import{t as Q}from"./NoTasks-CWr0xxsU.js";import{t as ne}from"./PromptTextarea-DnNoCW_o.js";import{t as re}from"./ImageWrapper-DzTGCugr.js";var ie=y({name:`LayoutNanobanana`,components:{ElDrawer:E,ElButton:V,FontAwesomeIcon:H},mixins:[G]}),ae={class:`main flex flex-row flex-1`},oe={class:`config w-[320px] flex-none h-full overflow-y-auto bg-[var(--app-sidebar-bg)] border-r border-[var(--app-border-subtle)]`},se={class:`result h-full p-6 flex-1 flex flex-col min-w-0 overflow-x-hidden bg-[var(--app-content-bg)]`};function ce(t,n,r,i,o,c){let l=u(`font-awesome-icon`),p=u(`el-button`),h=u(`el-drawer`);return _(),s(`div`,ae,[e(`div`,oe,[f(t.$slots,`config`,{},void 0,!0)]),e(`div`,se,[f(t.$slots,`result`,{},void 0,!0)]),d(a(p,{circle:``,class:`menu`,onClick:n[0]||=e=>t.drawer=!0},{default:m(()=>[a(l,{icon:`fa-solid fa-magic`})]),_:1},512),[[v,!t.tasksEmpty]]),a(h,{modelValue:t.drawer,"onUpdate:modelValue":n[1]||=e=>t.drawer=e,direction:`ltr`,"with-header":!1,size:`340px`,class:`drawer`},{default:m(()=>[f(t.$slots,`config`,{},void 0,!0)]),_:3},8,[`modelValue`])])}var le=j(ie,[[`render`,ce],[`__scopeId`,`data-v-d7e69eb2`]]),ue=y({name:`PromptInput`,components:{PromptTextarea:ne},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 de(e,t,n,r,i,a){let o=u(`prompt-textarea`);return _(),p(o,{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 fe=j(ue,[[`render`,de]]),pe=y({name:`ImageUrlsInput`,components:{ElUpload:S,ElButton:V,InfoIcon:q,ImagePreview:W,FontAwesomeIcon:H},mixins:[I,P],data(){return{fileList:[],uploadUrl:M()+`/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(){z.warning(this.$t(`nanobanana.message.uploadImageExceed`))},onError(){z.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()}}}),me={class:`field flex items-center justify-between`},he={class:`title font-bold text-[14px] mb-[10px]`},ge={class:`upload-wrapper flex flex-col items-start gap-[8px]`},_e={class:`controls flex items-center`},ve={class:`file-list flex flex-wrap gap-[10px]`};function ye(t,n,o,c,d,f){let h=u(`font-awesome-icon`),v=u(`el-button`),y=u(`el-upload`),b=u(`info-icon`),x=u(`image-preview`);return _(),s(l,null,[e(`div`,me,[e(`h2`,he,i(t.$t(`nanobanana.name.imageUrls`)),1),e(`div`,ge,[e(`div`,_e,[a(y,{ref:`uploader`,"file-list":t.fileList,"onUpdate:fileList":n[0]||=e=>t.fileList=e,accept:`.png,.jpg,.jpeg,.gif,.bmp,.webp`,name:`file`,class:`value`,limit:5,multiple:!0,"show-file-list":!1,action:t.uploadUrl,"on-exceed":t.onExceed,"on-error":t.onError,"on-success":t.onSuccess,"on-change":t.onChange,"on-remove":t.onRemove,headers:t.headers},{default:m(()=>[a(v,{size:`small`,type:`primary`,round:``},{default:m(()=>[a(h,{icon:`fa-solid fa-upload`,class:`mr-1`}),r(` `+i(t.$t(`nanobanana.button.uploadImageUrls`)),1)]),_:1})]),_:1},8,[`file-list`,`action`,`on-exceed`,`on-error`,`on-success`,`on-change`,`on-remove`,`headers`]),a(b,{content:t.$t(`nanobanana.description.imageUrls`),class:`ml-2`},null,8,[`content`])])])]),e(`div`,ve,[(_(!0),s(l,null,g(t.fileList,(e,n)=>(_(),p(x,{key:e.uid||e?.response?.file_url||e.url||n,url:e.url||e?.response?.file_url,name:e.name,percentage:e.percentage,onRemove:r=>t.onRemovePreview(n,e)},null,8,[`url`,`name`,`percentage`,`onRemove`]))),128))])],64)}var be=j(pe,[[`render`,ye]]),xe=y({name:`AspectRatioSelector`,components:{InfoIcon:q},data(){return{options:[{value:`1:1`,label:`1:1`,width:20,height:20},{value:`3:2`,label:`3:2`,width:27,height:18},{value:`2:3`,label:`2:3`,width:18,height:27},{value:`16:9`,label:`16:9`,width:25,height:13},{value:`9:16`,label:`9:16`,width:13,height:25},{value:`4:3`,label:`4:3`,width:24,height:18},{value:`3:4`,label:`3:4`,width:18,height:24}]}},computed:{value(){return this.$store.state.nanobanana?.config?.aspect_ratio}},methods:{onSelect(e){let t=this.value===e?void 0:e,n={...this.$store.state.nanobanana?.config||{}};t?n.aspect_ratio=t:delete n.aspect_ratio,this.$store.commit(`nanobanana/setConfig`,n)}}}),Se={class:`ratio`},Ce={class:`header`},we={class:`title font-bold`},Te=[`aria-label`],Ee=[`aria-checked`,`aria-label`,`onClick`,`onKeydown`],De={class:`preview`},Oe={class:`name`};function ke(r,o,d,f,p,m){let v=u(`info-icon`);return _(),s(`div`,Se,[e(`div`,Ce,[e(`h2`,we,i(r.$t(`nanobanana.name.aspectRatio`)),1),a(v,{content:r.$t(`nanobanana.description.aspectRatio`),class:`ml-1`},null,8,[`content`])]),e(`div`,{class:`items`,role:`radiogroup`,"aria-label":r.$t(`nanobanana.name.aspectRatio`)},[(_(!0),s(l,null,g(r.options,a=>(_(),s(`div`,{key:a.value,class:n([`item`,{active:r.value===a.value}]),role:`radio`,"aria-checked":r.value===a.value,"aria-label":a.label,tabindex:`0`,onClick:e=>r.onSelect(a.value),onKeydown:[c(t(e=>r.onSelect(a.value),[`prevent`]),[`enter`]),c(t(e=>r.onSelect(a.value),[`prevent`]),[`space`])]},[e(`div`,De,[e(`div`,{class:`rect`,style:h({width:a.width+`px`,height:a.height+`px`})},null,4)]),e(`p`,Oe,i(a.label),1)],42,Ee))),128))],8,Te)])}var Ae=j(xe,[[`render`,ke],[`__scopeId`,`data-v-7131eb97`]]),je=y({name:`NanobananaModelSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:q},data(){return{options:[{value:O,label:this.$t(`nanobanana.model.nanoBanana`)},{value:A,label:this.$t(`nanobanana.model.nanoBananaPro`)},{value:k,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||=D}}),Me={class:`field`},Ne={class:`label`},Pe={class:`box`},Fe={class:`title font-bold`};function Ie(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,Me,[e(`div`,Ne,[e(`div`,Pe,[e(`h2`,Fe,i(t.$t(`nanobanana.name.model`)),1),a(f,{content:t.modelDescription,class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`)},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])])}var Le=j(je,[[`render`,Ie],[`__scopeId`,`data-v-94304d73`]]),Re=y({name:`NanobananaResolutionSelector`,components:{ElSelect:b,ElOption:x,InfoIcon:q},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!==O}},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}))}}),ze={class:`field`},Be={class:`label`},Ve={class:`box`},He={class:`title font-bold`};function Ue(t,n,r,o,c,d){let f=u(`info-icon`),h=u(`el-option`),v=u(`el-select`);return _(),s(`div`,ze,[e(`div`,Be,[e(`div`,Ve,[e(`h2`,He,i(t.$t(`nanobanana.name.resolution`)),1),a(f,{content:t.$t(`nanobanana.description.resolutionProOnly`),class:`info`},null,8,[`content`])])]),a(v,{modelValue:t.value,"onUpdate:modelValue":n[0]||=e=>t.value=e,class:`value`,placeholder:t.$t(`nanobanana.placeholder.select`),disabled:!t.isProModel},{default:m(()=>[(_(!0),s(l,null,g(t.options,e=>(_(),p(h,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])])}var We=y({name:`ConfigPanel`,components:{ElButton:V,FontAwesomeIcon:H,PromptInput:fe,Consumption:K,ImageUrlsInput:be,AspectRatioSelector:Ae,ModelSelector:Le,ResolutionSelector:j(Re,[[`render`,Ue],[`__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 F({...e,action:t?`edit`:`generate`},this.service?.cost)},service(){return this.$store.state.nanobanana?.service}},methods:{onGenerate(){this.$emit(`generate`)}}}),Ge={class:`flex flex-col h-full`},Ke={class:`flex-1 overflow-y-auto p-5`},qe={class:`flex flex-col items-center justify-center px-5 pb-5`};function Je(t,n,o,c,l,d){let f=u(`model-selector`),p=u(`resolution-selector`),h=u(`prompt-input`),g=u(`aspect-ratio-selector`),v=u(`image-urls-input`),y=u(`consumption`),b=u(`font-awesome-icon`),x=u(`el-button`);return _(),s(`div`,Ge,[e(`div`,Ke,[a(f,{class:`mb-4`}),a(p,{class:`mb-4`}),a(h,{class:`mb-4`}),a(g,{class:`mb-4`}),a(v,{class:`mb-4`})]),e(`div`,qe,[a(y,{value:t.consumption,service:t.service},null,8,[`value`,`service`]),a(x,{type:`primary`,class:`btn w-full`,round:``,onClick:t.onGenerate},{default:m(()=>[a(b,{icon:`fa-solid fa-magic`,class:`mr-2`}),r(` `+i(t.$t(`nanobanana.button.generate`)),1)]),_:1},8,[`onClick`])])])}var Ye=j(We,[[`render`,Je]]),Xe=y({name:`TaskPreview`,components:{ElImage:w,CopyToClipboard:U,FontAwesomeIcon:H,ElAlert:T,ImageWrapper:re,ElButton:V,ElTooltip:C,ImagePreview:W,ApiCodeButton:X},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},hasImages(){return this.images.some(e=>!!e?.image_url)},showResult(){let e=this.modelValue?.response;return e?e.success===!0?!0:this.hasImages&&e.success!==!1:!1}},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)}}}),Ze={class:`preview`},Qe={class:`left`},$e={class:`main`},et={class:`bot`},tt={class:`datetime`},nt={class:`info`},rt={key:0,class:`flex justify-start items-center gap-2 mt-2 w-full overflow-x-auto`},it={key:1,class:`prompt mt-2`},at={key:0},ot={key:0,class:n({content:!0,failed:!0})},st={class:`flex justify-start items-center gap-4 w-full overflow-x-auto`},ct={class:n({operations:!0,"mt-2":!0,"mb-2":!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={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},ht={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},gt={key:1,class:n({content:!0})},_t={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},vt={key:1,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},yt={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`},St={class:`text-[var(--el-text-color-regular)] text-xs mb-2`},Ct={key:4,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},wt={key:5,class:`text-[var(--el-text-color-regular)] text-xs mb-0`},Tt={key:2,class:n({content:!0})},Et={key:0,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},$={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`},Ot={key:3,class:`text-[var(--el-text-color-regular)] text-xs mb-2`},kt={class:`text-[var(--el-text-color-regular)] text-xs mb-2`};function At(n,c,d,f,h,v){let y=u(`el-image`),b=u(`image-preview`),x=u(`image-wrapper`),S=u(`el-button`),C=u(`el-tooltip`),w=u(`api-code-button`),T=u(`font-awesome-icon`),E=u(`copy-to-clipboard`),D=u(`el-alert`);return _(),s(`div`,Ze,[e(`div`,Qe,[a(y,{src:`https://cdn.acedata.cloud/859plc.jpg`,class:`avatar`})]),e(`div`,$e,[e(`div`,et,[r(i(n.$t(`nanobanana.name.nanobananaBot`))+` `,1),e(`span`,tt,i(n.$dayjs.format(``+new Date(parseFloat((n.modelValue?.created_at||``).toString())*1e3))),1)]),e(`div`,nt,[n.modelValue?.request?.image_urls&&n.modelValue?.request?.image_urls.length>0?(_(),s(`div`,rt,[(_(!0),s(l,null,g(n.modelValue?.request?.image_urls,(e,t)=>(_(),p(b,{key:t,url:e,name:`image-${t+1}`,closable:!1},null,8,[`url`,`name`]))),128))])):o(``,!0),n.modelValue?.request?.prompt?(_(),s(`p`,it,[r(i(n.modelValue?.request?.prompt)+` `,1),n.modelValue?.response?o(``,!0):(_(),s(`span`,at,` - (`+i(n.$t(`nanobanana.status.pending`))+`) `,1))])):o(``,!0)]),n.showResult?(_(),s(`div`,ot,[e(`div`,st,[(_(!0),s(l,null,g(n.images,(e,t)=>(_(),p(x,{key:t,src:e?.image_url,"raw-src":e?.image_url},null,8,[`src`,`raw-src`]))),128))]),e(`div`,ct,[a(C,{class:`box-item`,effect:`dark`,content:n.$t(`common.button.edit`),placement:`top-start`},{default:m(()=>[a(S,{type:`info`,size:`small`,class:`btn-action`,onClick:c[0]||=t(e=>n.onEdit(n.images?.[0]?.image_url),[`stop`])},{default:m(()=>[r(i(n.$t(`common.button.edit`)),1)]),_:1})]),_:1},8,[`content`]),a(w,{path:`/nano-banana/images`,body:n.modelValue?.request},null,8,[`body`])]),a(D,{closable:!1,class:`mt-2 success`},{default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,lt,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,ut,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,dt,[a(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,ft,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,pt,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy inline-block`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,mt,[a(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,ht,[a(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(E,{content:n.modelValue?.response?.trace_id,class:`btn-copy inline-block`},null,8,[`content`])])):o(``,!0)]),_:1})])):n.modelValue?.response?.success===!1?(_(),s(`div`,gt,[a(D,{closable:!1,class:`failure`},{template:m(()=>[a(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.failure`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,_t,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,vt,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,yt,[a(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,bt,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,xt,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])]),e(`p`,St,[a(T,{icon:`fa-solid fa-circle-info`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.failureReason`))+`: `+i(n.modelValue?.response?.error?.message)+` `,1),a(E,{content:n.modelValue?.response?.error?.message,class:`btn-copy`},null,8,[`content`])]),n.modelValue?.elapsed?(_(),s(`p`,Ct,[a(T,{icon:`fa-solid fa-clock`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.elapsed`))+`: `+i(n.modelValue?.elapsed?.toFixed(2))+`s `,1)])):o(``,!0),n.modelValue?.response?.trace_id?(_(),s(`p`,wt,[a(T,{icon:`fa-solid fa-hashtag`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.traceId`))+`: `+i(n.modelValue?.response?.trace_id)+` `,1),a(E,{content:n.modelValue?.response?.trace_id,class:`btn-copy`},null,8,[`content`])])):o(``,!0)]),_:1})])):n.modelValue?.response?(_(),s(`div`,Tt,[a(D,{closable:!1,class:`info`},{template:m(()=>[a(T,{icon:`fa-solid fa-exclamation-triangle`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.failure`)),1)]),default:m(()=>[n.modelValue?.request?.model?(_(),s(`p`,Et,[a(T,{icon:`fa-solid fa-cube`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.model`))+`: `+i(n.modelValue?.request?.model),1)])):o(``,!0),n.modelValue?.request?.resolution?(_(),s(`p`,$,[a(T,{icon:`fa-solid fa-image`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.resolution`))+`: `+i(n.modelValue?.request?.resolution),1)])):o(``,!0),n.modelValue?.request?.aspect_ratio?(_(),s(`p`,Dt,[a(T,{icon:`fa-solid fa-up-right-from-square`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.aspectRatio`))+`: `+i(n.modelValue?.request?.aspect_ratio),1)])):o(``,!0),n.modelValue?.request?.action?(_(),s(`p`,Ot,[a(T,{icon:`fa-solid fa-bolt`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.task`))+`: `+i(n.modelValue?.request?.action===`generate`?n.$t(`nanobanana.name.generate`):n.$t(`nanobanana.name.edits`)),1)])):o(``,!0),e(`p`,kt,[a(T,{icon:`fa-solid fa-magic`,class:`mr-1`}),r(` `+i(n.$t(`nanobanana.name.taskId`))+`: `+i(n.modelValue?.id)+` `,1),a(E,{content:n.modelValue?.id,class:`btn-copy`},null,8,[`content`])])]),_:1})])):o(``,!0)])])}var jt=y({name:`RecentPanel`,components:{TaskPreview:j(Xe,[[`render`,At],[`__scopeId`,`data-v-03632767`]]),BotPlaceholder:Z,NoTasks:Q,ScrollList:J},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?.()}}}),Mt={key:0},Nt={key:2,class:`w-full h-full flex items-center justify-center`};function Pt(e,t,n,r,i,c){let d=u(`bot-placeholder`),f=u(`task-preview`),h=u(`scroll-list`),v=u(`no-tasks`);return _(),s(l,null,[e.tasks?.items===void 0?(_(),s(`div`,Mt,[a(d)])):e.tasks?.items?.length&&e.tasks?.items?.length>0?(_(),p(h,{key:1,ref:`scrollList`,class:`tasks h-full w-full overflow-y-auto`,loading:e.loading,onReachTop:t[0]||=t=>e.$emit(`reach-top`)},{default:m(()=>[(_(!0),s(l,null,g(e.tasks?.items,e=>(_(),p(f,{key:e.id,"model-value":e},null,8,[`model-value`]))),128))]),_:1},8,[`loading`])):o(``,!0),e.tasks?.items?.length===0?(_(),s(`div`,Nt,[a(v)])):o(``,!0)],64)}var Ft=y({name:`NanobananaIndex`,components:{ConfigPanel:Ye,Layout:le,RecentPanel:j(jt,[[`render`,Pt]])},mixins:[ee],inject:[`initialized`],data(){return{task:void 0,job:0,loading:!1}},computed:{applicationsLoading(){return this.$store.state.nanobanana?.status?.getApplications===N.Request},tasksLoading(){return this.$store.state.nanobanana?.status?.getTasks===N.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 Y({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(!te(this.uploadTracker,e=>this.$t(e),e=>z.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`&&`resolution`in e&&delete e.resolution,e?.model!==`nano-banana`&&!e?.resolution&&(e.resolution=`1K`);let n={...e,action:t?`edit`:`generate`,async:!0};if(!R())return;let r=this.credential?.token;if(!r){console.error(`no token specified`);return}z.info(this.$t(`nanobanana.message.startingTask`)),B(`nanobanana`,L.generate(n,{token:r})).then(()=>{z.success(this.$t(`nanobanana.message.startTaskSuccess`))}).catch(e=>{let t=e?.response?.data;t?.error?.code===`used_up`?z.error(this.$t(`nanobanana.message.usedUp`)):z.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 It(e,t,n,r,i,o){let s=u(`config-panel`),c=u(`recent-panel`),l=u(`layout`);return _(),p(l,null,{config:m(()=>[a(s,{onGenerate:e.onGenerate},null,8,[`onGenerate`])]),result:m(()=>[a(c,{ref:`recentPanel`,loading:e.loading,onReachTop:e.onReachTop},null,8,[`loading`,`onReachTop`])]),_:1})}var Lt=j(Ft,[[`render`,It]]);export{Lt as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,S as m,T as h,V as g,_,a as v,b as y,c as b,d as x,ea as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-m8v8ZYCt.js";import{Hr as I,Qr as L,Yr as R,ir as z,ln as B}from"./index-Hbcj2HVJ.js";import{a as se,i as V,n as H,o as U,r as W}from"./codingBridgeNotify-CIDp3aLZ.js";var G=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,K=()=>{try{return typeof localStorage<`u`&&localStorage.getItem(`cbDebug`)===`1`}catch{return!1}},q=(e,t)=>{if(!K())return;let n=t?.payload??{};console.debug(`[codingBridge]`,e,{type:t?.type,id:t?.id,node_id:t?.node_id??t?.from_node,action:n?.action,event:n?.event,session_id:n?.session_id,trace_id:n?.trace_id})},ce=class{ws;token;handlers;reconnectDelay=o;reconnectTimer;closedByUser=!1;constructor(e,t){this.token=e,this.handlers=t}get isOpen(){return this.ws?.readyState===WebSocket.OPEN}connect(){this.closedByUser=!1,this.open()}open(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;let e=`${S}?token=${encodeURIComponent(this.token)}`,t;try{t=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectDelay=o,this.handlers.onOpen?.()},t.onmessage=e=>this.onMessage(e),t.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},t.onerror=()=>{t.close()}}onMessage(e){let n;try{n=JSON.parse(e.data)}catch{return}let r=n?.payload??{};switch(q(`recv`,n),n?.type){case t:this.handlers.onEvent?.(r,n?.from_node);break;case p:this.handlers.onNodesSnapshot?.(r.nodes??[]);break;case F:this.handlers.onNodeStatus?.(r.node_id,r.status);break;case w:this.handlers.onRelayError?.(r.code??`error`,r.message??``);break;default:break}}scheduleReconnect(){if(this.closedByUser||this.reconnectTimer)return;let e=this.reconnectDelay;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.open()},e),this.reconnectDelay=Math.min(this.reconnectDelay*2,g)}sendEnvelope(e,t){if(!this.isOpen)return;let n={v:2,id:G(),ts:Date.now(),type:e,...t};q(`send`,n),this.ws?.send(JSON.stringify(n))}sendToNode(e,t){this.sendEnvelope(ee,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(E,{})}resume(e){this.sendEnvelope(ae,{payload:{resume_from:e}})}close(){if(this.closedByUser=!0,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),void 0),this.ws){this.ws.onclose=null,this.ws.onerror=null,this.ws.onmessage=null,this.ws.onopen=null;try{this.ws.close()}catch{}this.ws=void 0}}},J,Y=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,X=(e,t,n)=>({id:Y(),session_id:e,kind:t,ts:Date.now(),...n}),Z=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},le=e=>{let t=Z(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
|
|
2
|
-
`)},ue=(e,t)=>{H({title:`Approval needed`,body:`Claude wants to use ${t.tool||`a tool`}. Tap to review.`,data:t},t=>{t.node_id&&e(`selectNode`,t.node_id)})},Q=(t,o,p,g,v)=>{let b=g?.event,x=g?.session_id,S=g?.trace_id,C=g?.seq;if(typeof C==`number`&&x){let e=p.lastSeq[x];if(e!==void 0&&C<=e)return;t(`setLastSeq`,{session_id:x,seq:C})}switch(x&&S&&t(`updateSession`,{session_id:x,trace_id:S}),b){case ne:t(`upsertSession`,{session_id:x,node_id:v,status:`running`,cwd:g.cwd,model:g.model,...g.effort===void 0?{}:{effort:g.effort},...g.permission_mode===void 0?{}:{permission_mode:g.permission_mode},trace_id:S});break;case r:{let e=g.sdk_session_id;x&&e&&e!==x&&t(`renameSession`,{from:x,to:e});break}case f:{let e=g.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`appendDelta`,{session_id:x,stream_id:e,text:g.text??``}):t(`appendEvent`,X(x,`text`,{text:g.text??``,stream_id:e,streaming:!0,trace_id:S}));break}case u:{let e=g.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`finalizeStream`,{session_id:x,stream_id:e,text:g.text}):t(`appendEvent`,X(x,`text`,{text:g.text,trace_id:S}));break}case a:t(`appendEvent`,X(x,`thinking`,{text:g.text,trace_id:S}));break;case c:t(`appendEvent`,X(x,`tool_use`,{tool:g.tool,tool_use_id:g.tool_use_id,input:g.input,trace_id:S}));break;case s:t(`appendEvent`,X(x,`tool_result`,{tool_use_id:g.tool_use_id,content:g.content,is_error:g.is_error,trace_id:S}));break;case m:t(`addPermission`,{request_id:g.request_id,session_id:x,node_id:v,tool:g.tool,input:g.input,title:g.title,display_name:g.display_name,description:g.description}),ue(o,{node_id:v,session_id:x,request_id:g.request_id,tool:g.display_name||g.title||g.tool});break;case N:for(let e of g.requests??[])t(`addPermission`,{request_id:e.request_id,session_id:e.session_id,node_id:v,tool:e.tool,input:e.input,title:e.title,display_name:e.display_name,description:e.description});break;case n:t(`removePermission`,g.request_id);break;case re:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`result`,{subtype:g.subtype,is_error:g.is_error,text:g.result,cost_usd:g.cost_usd,cut_uuid:g.cut_uuid,sdk_session_id:g.sdk_session_id,trace_id:S})),t(`updateSession`,{session_id:x,status:`idle`,cost_usd:g.cost_usd});break;case d:t(`appendEvent`,X(x,`notice`,{text:g.text,subtype:g.code,command:g.command,level:g.level}));break;case i:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`error`,{text:g.message,trace_id:S})),t(`updateSession`,{session_id:x,status:`error`}),t(`updateStatus`,{key:`getHistoryDetail`,value:I.Success});break;case h:t(`finalizeAllStreams`,{session_id:x}),t(`updateSession`,{session_id:x,status:`closed`});break;case e:t(`rewindToCut`,{session_id:x,cut_uuid:g.cut_uuid}),g.prompt&&t(`appendEvent`,X(x,`prompt`,{text:g.prompt,trace_id:S})),t(`updateSession`,{session_id:x,status:`running`});break;case l:o(`resyncSession`,x);break;case M:for(let e of g.sessions??[])t(`upsertSession`,{session_id:e.session_id,node_id:v,status:e.status??`running`,started:!0,cwd:e.cwd,model:e.model,...e.effort===void 0?{}:{effort:e.effort},...e.permission_mode===void 0?{}:{permission_mode:e.permission_mode}});break;case y:if(v){t(`setHistory`,{node_id:v,sessions:g.sessions??[]}),t(`updateStatus`,{key:`getHistory`,value:I.Success});let e=p.historyRef;e&&e.node_id===v&&!p.currentSessionId&&o(`reattachSession`,e)}break;case P:de(t,p,g,v),t(`updateStatus`,{key:`getHistoryDetail`,value:I.Success});break;case j:t(`setDirectory`,{path:g.path,parent:g.parent??null,sep:g.sep??`/`,entries:g.entries??[],truncated:g.truncated,error:g.error});break;case _:v&&t(`setCapabilities`,{node_id:v,capabilities:{providers:g.providers??[]}});break;default:break}},de=(e,t,n,r)=>{let i=n?.session_id,a=fe(n?.provider);if(!i||!r)return;let o=a===`claude`||a===`codex`||a===`copilot`,s=t.sessions[i],c=!!s&&(s.started===!0||s.status===`running`||s.status===`starting`),l=t.lastComposer?.[r]??{};e(`upsertSession`,{session_id:i,node_id:r,status:c?s.status:`idle`,cwd:n.cwd??s?.cwd??l.cwd,model:n.model??s?.model??l.model,effort:n.effort??s?.effort??l.effort,permission_mode:n.permission_mode??s?.permission_mode??l.permissionMode,provider:a,started:!!c,readonly:!o&&!c});let u=t.events[i]?.length??0,d=(n.events??[]).length,f=s?.status===`running`||s?.status===`starting`;c&&u>0&&(f||u>=d)||e(`setEvents`,{session_id:i,events:(n.events??[]).map((e,t)=>({id:Y(),session_id:i,kind:e.kind,ts:typeof e.ts==`number`?e.ts:Date.now()+t,text:e.text,tool:e.tool,tool_use_id:e.tool_use_id,input:e.input,content:e.content,is_error:e.is_error,subtype:e.subtype,cost_usd:e.cost_usd}))}),e(`setCurrentNode`,r),e(`setCurrentSession`,i),e(`setHistoryRef`,{node_id:r,provider:a,session_id:i})},fe=e=>e===`codex`||e===`copilot`?e:`claude`,$={namespaced:!0,state:z,mutations:{resetAll:e=>{Object.assign(e,z())},updateStatus:(e,t)=>{e.status[t.key]=t.value},setConnection:(e,t)=>{e.connection=t},setNodes:(e,t)=>{e.nodes=t},mergeNodeSnapshot:(e,t)=>{let n=new Set(t.map(e=>e.node_id));for(let t of e.nodes)t.status=n.has(t.node_id)?`online`:`offline`;for(let n of t)e.nodes.some(e=>e.node_id===n.node_id)||e.nodes.push({...n,status:`online`})},setNodeStatus:(e,t)=>{let n=e.nodes.find(e=>e.node_id===t.node_id);n&&(n.status=t.status)},setCurrentNode:(e,t)=>{e.currentNodeId=t},setCurrentSession:(e,t)=>{e.currentSessionId=t},upsertSession:(e,t)=>{e.sessions[t.session_id]={...e.sessions[t.session_id],...t},e.events[t.session_id]||(e.events[t.session_id]=[])},updateSession:(e,t)=>{let n=e.sessions[t.session_id];n&&(e.sessions[t.session_id]={...n,...t})},renameSession:(e,t)=>{let{from:n,to:r}=t;if(n===r||!e.sessions[n])return;e.sessions[r]={...e.sessions[r],...e.sessions[n],session_id:r},delete e.sessions[n];let i=e.events[n];i&&(i.length||!e.events[r]?.length)&&(e.events[r]=i),delete e.events[n],delete e.lastSeq[n],e.lastSeq[r]=0;for(let t of e.permissions)t.session_id===n&&(t.session_id=r);e.currentSessionId===n&&(e.currentSessionId=r),e.historyRef?.session_id===n&&(e.historyRef={...e.historyRef,session_id:r})},appendEvent:(e,t)=>{e.events[t.session_id]||(e.events[t.session_id]=[]),e.events[t.session_id].push(t)},truncateEventsBefore:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.findIndex(e=>e.id===t.event_id);r>=0&&(e.events[t.session_id]=n.slice(0,r))},rewindToCut:(e,t)=>{let n=e.events[t.session_id];if(!n)return;if(!t.cut_uuid){e.events[t.session_id]=[];return}let r=n.findIndex(e=>e.kind===`result`&&e.cut_uuid===t.cut_uuid);r>=0&&(e.events[t.session_id]=n.slice(0,r+1))},setLastSeq:(e,t)=>{let n=e.lastSeq[t.session_id]??0;t.seq>n&&(e.lastSeq[t.session_id]=t.seq)},appendDelta:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(r.text=(r.text??``)+(t.text??``))},finalizeStream:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(typeof t.text==`string`&&(r.text=t.text),r.streaming=!1)},finalizeAllStreams:(e,t)=>{let n=e.events[t.session_id];if(n)for(let e of n)e.streaming&&=!1},setEvents:(e,t)=>{e.events[t.session_id]=t.events},setHistory:(e,t)=>{e.history[t.node_id]=t.sessions},setHistoryRef:(e,t)=>{e.historyRef=t},setDirectory:(e,t)=>{e.directory=t,e.directoryLoading=!1},setDirectoryLoading:(e,t)=>{e.directoryLoading=t},setLastComposer:(e,t)=>{e.lastComposer={...e.lastComposer,[t.node_id]:{...e.lastComposer[t.node_id],...t.prefs}}},setCapabilities:(e,t)=>{e.capabilities[t.node_id]=t.capabilities},addPermission:(e,t)=>{e.permissions.some(e=>e.request_id===t.request_id)||e.permissions.push(t)},removePermission:(e,t)=>{e.permissions=e.permissions.filter(e=>e.request_id!==t)},removeNodeData:(e,t)=>{delete e.history[t],delete e.capabilities[t],e.historyRef?.node_id===t&&(e.historyRef=void 0);for(let n of Object.values(e.sessions))n.node_id===t&&(delete e.sessions[n.session_id],delete e.events[n.session_id],delete e.lastSeq[n.session_id],e.currentSessionId===n.session_id&&(e.currentSessionId=void 0))}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},getApplications:async()=>{},setApplication:async()=>{},getNodes:async({commit:e,rootState:t})=>{let n=t.token?.access;if(!n)return[];e(`updateStatus`,{key:`getNodes`,value:I.Request});try{let{data:t}=await B.getNodes({token:n});return e(`setNodes`,t.nodes??[]),e(`updateStatus`,{key:`getNodes`,value:I.Success}),t.nodes??[]}catch(t){throw e(`updateStatus`,{key:`getNodes`,value:I.Error}),t}},claimPair:async({commit:e,dispatch:t,rootState:n},r)=>{let i=n.token?.access;if(!i)throw Error(`not authenticated`);e(`updateStatus`,{key:`claimPair`,value:I.Request});try{let{data:n}=await B.claimPair(r.trim(),{token:i});return e(`updateStatus`,{key:`claimPair`,value:I.Success}),await t(`getNodes`),n.node_name}catch(t){throw e(`updateStatus`,{key:`claimPair`,value:I.Error}),t}},deleteNode:async({commit:e,dispatch:t,state:n,rootState:r},i)=>{let a=r.token?.access;if(!a)throw Error(`not authenticated`);e(`updateStatus`,{key:`deleteNode`,value:I.Request});try{await B.deleteNode(i,{token:a}),e(`removeNodeData`,i),n.currentNodeId===i&&(e(`setCurrentNode`,void 0),e(`setCurrentSession`,void 0)),e(`updateStatus`,{key:`deleteNode`,value:I.Success}),await t(`getNodes`)}catch(t){throw e(`updateStatus`,{key:`deleteNode`,value:I.Error}),t}},connect:({commit:e,dispatch:t,state:n,rootState:r})=>{let i=r.token?.access;i&&(J?.isOpen||(J?.close(),e(`setConnection`,`connecting`),J=new ce(i,{onOpen:()=>{e(`setConnection`,`connected`);let r={...n.lastSeq};Object.keys(r).length&&J?.resume(r),n.currentNodeId&&(t(`getHistory`,n.currentNodeId),t(`getCapabilities`,n.currentNodeId),t(`requestSessions`,n.currentNodeId),t(`requestPendingPermissions`,n.currentNodeId))},onClose:()=>e(`setConnection`,`disconnected`),onEvent:(r,i)=>Q(e,t,n,r,i),onNodesSnapshot:t=>{e(`mergeNodeSnapshot`,t)},onNodeStatus:(r,i)=>{e(`setNodeStatus`,{node_id:r,status:i}),i===`online`&&r===n.currentNodeId&&(t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r))},onRelayError:(e,t)=>console.warn(`[codingBridge] relay error`,e,t)}),J.connect()))},disconnect:({commit:e})=>{J?.close(),J=void 0,e(`setConnection`,`disconnected`)},selectNode:({commit:e,dispatch:t,state:n},r)=>{if(e(`setCurrentNode`,r),!r){e(`setCurrentSession`,void 0);return}let i=Object.values(n.sessions).filter(e=>e.node_id===r).map(e=>e.session_id);e(`setCurrentSession`,i.length?i[i.length-1]:void 0),t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r)},requestSessions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:O})},requestPendingPermissions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:v})},enableNotifications:async({dispatch:e,rootState:t})=>{let n=t.token?.access;if(!n)return`unsupported`;if(L()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await B.savePushSubscription({kind:R()?`apns`:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await V();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await B.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await se(e.vapid_public_key);t&&await B.savePushSubscription({kind:`webpush`,subscription:t,ua:navigator.userAgent},{token:n})}}catch(e){console.warn(`[codingBridge] web push setup skipped`,e)}return`enabled`},disableNotifications:async({rootState:e})=>{let t=e.token?.access;if(L()||!t)return;let n=await U();if(n)try{await B.deletePushSubscription({endpoint:n},{token:t})}catch(e){console.warn(`[codingBridge] failed to deregister web push`,e)}},newSession:({commit:e})=>{e(`setCurrentSession`,void 0),e(`setHistoryRef`,void 0)},sendPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=n.prompt?.trim(),a=n.images?.length?n.images:void 0,o=n.attachments?.length?n.attachments:void 0;if(!r||!J||!i&&!a&&!o)return;let s=Y(),c=t.currentSessionId,l=c?t.sessions[c]:void 0;if(!l||!l.started){let t=l?.provider||n.provider||`claude`;l?(c=l.session_id,e(`updateSession`,{session_id:c,status:`starting`,trace_id:s,...n.cwd?{cwd:n.cwd}:{},...n.model===void 0?{}:{model:n.model},...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}})):(c=Y(),e(`upsertSession`,{session_id:c,node_id:r,status:`starting`,cwd:n.cwd,model:n.model,effort:n.effort,permission_mode:n.permissionMode,provider:t,trace_id:s}),e(`setCurrentSession`,c),e(`setHistoryRef`,{node_id:r,provider:t,session_id:c})),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,started:!0}),J.sendToNode(r,{action:C,session_id:c,trace_id:s,prompt:i,cwd:n.cwd||l?.cwd||void 0,model:n.model||l?.model||void 0,permission_mode:n.permissionMode||`bypassPermissions`,provider:t,effort:n.effort||void 0,images:a,attachments:o,resume_session_id:l?.session_id||void 0})}else e(`updateSession`,{session_id:c,trace_id:s}),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,status:`running`,model:n.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),J.sendToNode(r,{action:x,session_id:c,trace_id:s,prompt:i,model:n.model??``,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode},images:a,attachments:o})},editPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=t.currentSessionId,a=n.prompt?.trim();if(!r||!i||!J||!a)return;let o=t.sessions[i],s=t.events[i]??[],c=s.findIndex(e=>e.id===n.eventId);if(!o||c<0)return;let l;for(let e=c-1;e>=0;e--)if(s[e].kind===`result`&&s[e].cut_uuid){l=s[e].cut_uuid;break}let u=n.images?.length?n.images:void 0,d=n.attachments?.length?n.attachments:void 0,f=Y();e(`truncateEventsBefore`,{session_id:i,event_id:n.eventId}),e(`updateSession`,{session_id:i,status:`running`,trace_id:f,model:n.model||o.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),e(`appendEvent`,X(i,`prompt`,{text:a,images:u,attachments:d,trace_id:f})),J.sendToNode(r,{action:ie,session_id:i,trace_id:f,cut_uuid:l,prompt:a,model:n.model||o.model||void 0,permission_mode:n.permissionMode||void 0,effort:n.effort||void 0,images:u,attachments:d,restore_code:!!n.restoreCode})},retryLastPrompt:({commit:e,dispatch:t,state:n})=>{let r=n.currentSessionId;if(!r)return;let i=n.sessions[r],a=[...n.events[r]??[]].reverse().find(e=>e.kind===`prompt`);!i||!a||(e(`updateSession`,{session_id:r,started:!1}),t(`sendPrompt`,{prompt:a.text??``,cwd:i.cwd,model:i.model,provider:i.provider,images:a.images,attachments:a.attachments}))},interruptSession:({state:e})=>{let t=e.currentSessionId,n=e.currentNodeId;!t||!n||!J||J.sendToNode(n,{action:A,session_id:t})},closeSession:({commit:e,state:t},n)=>{let r=n??t.currentSessionId;if(!r)return;let i=t.sessions[r]?.node_id??t.currentNodeId;i&&J&&J.sendToNode(i,{action:b,session_id:r}),e(`updateSession`,{session_id:r,status:`closed`}),t.currentSessionId===r&&e(`setCurrentSession`,void 0)},resolvePermission:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:n.decision}),e(`removePermission`,n.request_id))},answerQuestion:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:`allow`,answer:Z(n.output),answer_text:le(n.output)}),e(`removePermission`,n.request_id))},getHistory:({commit:e,state:t},n)=>{let r=n??t.currentNodeId;!r||!J||(e(`updateStatus`,{key:`getHistory`,value:I.Request}),J.sendToNode(r,{action:te,limit:200}))},getHistoryDetail:({commit:e},t)=>{!t?.node_id||!t?.session_id||!J||(e(`updateStatus`,{key:`getHistoryDetail`,value:I.Request}),J.sendToNode(t.node_id,{action:D,provider:t.provider,session_id:t.session_id}),setTimeout(()=>e(`updateStatus`,{key:`getHistoryDetail`,value:I.Success}),12e3))},reattachSession:({state:e,commit:t,dispatch:n},r)=>{!r?.node_id||!r?.session_id||(t(`setCurrentNode`,r.node_id),t(`setCurrentSession`,r.session_id),n(`getHistoryDetail`,r),n(`requestSessions`,r.node_id),n(`requestPendingPermissions`,r.node_id),J?.resume({[r.session_id]:e.lastSeq[r.session_id]??0}))},resyncSession:({state:e,dispatch:t},n)=>{let r=e.sessions[n];r?.node_id&&t(`getHistoryDetail`,{node_id:r.node_id,session_id:n,provider:r.provider??`claude`})},browseDir:({commit:e,state:t},n)=>{let r=t.currentNodeId;!r||!J||(e(`setDirectoryLoading`,!0),J.sendToNode(r,{action:oe,path:n||void 0}))},clearDirectory:({commit:e})=>{e(`setDirectory`,void 0)},getCapabilities:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:k})}}};export{$ as codingBridge,$ as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ai as e}from"./index-Hbcj2HVJ.js";var t=e(`PushNotifications`,{});export{t as PushNotifications};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"tab.videoGeneration":{message:`视频生成`,description:`Tab 标签:Video Generation`},"tab.motionControl":{message:`动作控制`,description:`Tab 标签:Motion Control`},"name.motionImage":{message:`人物参考图片`,description:`Motion Control 中的人物图输入`},"name.motionVideo":{message:`动作参考视频`,description:`Motion Control 中的参考视频输入`},"name.motionPrompt":{message:`补充提示词(可选)`,description:`Motion Control 中的补充提示词`},"name.characterOrientation":{message:`人物朝向`,description:`人物朝向字段`},"name.orientationImage":{message:`跟随图片`,description:`人物朝向选项:跟随图片`},"name.orientationVideo":{message:`跟随视频`,description:`人物朝向选项:跟随视频`},"name.keepOriginalSound":{message:`保留原始音频`,description:`keep_original_sound 开关`},"description.motionImage":{message:`上传人物参考图,生成视频中的人物、背景等元素均以此为参照`,description:`motion image_url 说明`},"description.motionVideo":{message:`上传动作参考视频,生成视频中的人物动作与该视频一致(MP4 / MOV,≤1 分钟,≤1 GB)`,description:`motion video_url 说明`},"description.motionPrompt":{message:`可选。可以包含正向描述与负向描述,辅助生成效果`,description:`motion prompt 说明`},"description.characterOrientation":{message:`选「跟随视频」时,复杂动作表现更好;选「跟随图片」时,人物朝向与参考图一致,镜头运动表现更好`,description:`character_orientation 说明`},"description.motionMode":{message:`std 性能优先,pro 画质优先`,description:`motion mode 说明`},"description.keepOriginalSound":{message:`开启后保留参考视频的原声;关闭后输出视频不包含原始音频`,description:`keep_original_sound 说明`},"placeholder.motionPrompt":{message:`例如:一个人在跳舅。可选。`,description:`motion prompt 占位符`},"button.generateMotion":{message:`生成动作控制视频`,description:`Motion Control 生成按钮`},"message.motionMissingInputs":{message:`请同时上传人物图与动作参考视频`,description:`Motion Control 缺少输入时的提示`},"message.motionPricingNote":{message:`按生成视频时长计费,最终金额随参考视频长度浮动`,description:`Motion Control 按秒计费的说明`},"inspiration.title":{message:`灵感与预设`,description:`Inspiration 抽屉的标题`},"inspiration.openButton":{message:`灵感`,description:`打开 Inspiration 抽屉的按钮`},"inspiration.removeChip":{message:`移除此预设`,description:`移除提示词区中已选预设的按钮 aria-label`},"inspiration.hint":{message:`点击短语自动追加到提示词;再次点击可移除。`,description:`Inspiration 抽屉顶部的使用说明`},"inspiration.empty":{message:`暂无可用预设`,description:`Inspiration 抽屉空状态`},"inspiration.selectedSummary":{message:`已选 {count} 项`,description:`已选择的预设数量`},"inspiration.clearSelected":{message:`全部清除`,description:`清除所有已选预设的按钮`},"inspiration.group.cameraMovements":{message:`镜头运动`,description:`Inspiration 分组:镜头运动`},"inspiration.group.cameraSpeed":{message:`运动速度`,description:`Inspiration 分组:运动速度`},"inspiration.group.shotType":{message:`镜头景别`,description:`Inspiration 分组:景别 / 视角`},"inspiration.group.light":{message:`光影`,description:`Inspiration 分组:光影`},"inspiration.group.frame":{message:`画面`,description:`Inspiration 分组:画面 / 构图`},"inspiration.group.atmosphere":{message:`氛围`,description:`Inspiration 分组:氛围 / 风格`},"inspiration.chip.rotateAround":{message:`镜头围绕主体旋转`,description:``},"inspiration.chip.stationary":{message:`镜头静止`,description:``},"inspiration.chip.handheld":{message:`手持拍摄`,description:``},"inspiration.chip.zoomOut":{message:`镜头拉远`,description:``},"inspiration.chip.zoomIn":{message:`镜头推近`,description:``},"inspiration.chip.follow":{message:`镜头跟随主体移动`,description:``},"inspiration.chip.panRight":{message:`镜头向右平移`,description:``},"inspiration.chip.tiltUp":{message:`镜头向上倾斜`,description:``},"inspiration.chip.tiltDown":{message:`镜头向下倾斜`,description:``},"inspiration.chip.orbit":{message:`镜头环绕推进`,description:``},"inspiration.chip.speedSlow":{message:`镜头运动缓慢`,description:``},"inspiration.chip.speedMedium":{message:`镜头运动中速`,description:``},"inspiration.chip.speedFast":{message:`镜头运动快速`,description:``},"inspiration.chip.shotClose":{message:`近景特写`,description:``},"inspiration.chip.shotMedium":{message:`中景`,description:``},"inspiration.chip.shotLong":{message:`远景`,description:``},"inspiration.chip.shotLowAngle":{message:`低角度仰拍`,description:``},"inspiration.chip.shotHighAngle":{message:`高角度俯拍`,description:``},"inspiration.chip.shotShallowDof":{message:`浅景深`,description:``},"inspiration.chip.shotFront":{message:`正面视角`,description:``},"inspiration.chip.shotProfile":{message:`侧面视角`,description:``},"inspiration.chip.shotCloseUp":{message:`面部特写`,description:``},"inspiration.chip.shotDrone":{message:`无人机视角`,description:``},"inspiration.chip.lightSunlight":{message:`阳光`,description:``},"inspiration.chip.lightSoft":{message:`柔光`,description:``},"inspiration.chip.lightNeon":{message:`霓虹光`,description:``},"inspiration.chip.lightWarm":{message:`暖光`,description:``},"inspiration.chip.lightNature":{message:`自然光`,description:``},"inspiration.chip.lightCandle":{message:`烛光`,description:``},"inspiration.chip.lightCityNight":{message:`城市夜景灯光`,description:``},"inspiration.chip.frameRichDetails":{message:`细节丰富`,description:``},"inspiration.chip.frameSimpleBg":{message:`简洁背景`,description:``},"inspiration.chip.atmosphereMysterious":{message:`神秘氛围`,description:``},"inspiration.chip.atmospherePeaceful":{message:`宁静氛围`,description:``},"inspiration.chip.atmosphereHeartwarming":{message:`温暖治愈`,description:``},"inspiration.chip.atmosphereVivid":{message:`鲜活生动`,description:``},"inspiration.chip.atmosphereColorful":{message:`色彩丰富`,description:``},"name.taskId":{message:`任务 ID`,description:`任务的 ID`},"name.type":{message:`类型`,description:`要生成的 Kling视频的内容类型,如'链接'、'文本'等`},"name.modeStd":{message:`标准 (720p)`,description:`Kling视频的标准模式(输出 720p)`},"name.modePro":{message:`高品质 (1080p)`,description:`Kling视频的高品质模式(输出 1080p)`},"name.mode4k":{message:`原生 4K`,description:`Kling 4K 模式(仅 v3 / v3-Omni 支持)`},"name.cameraControl":{message:`运镜控制`,description:`相机控制类型与参数`},"name.cameraTypeNone":{message:`不使用`,description:`不使用运镜控制`},"name.cameraTypeSimple":{message:`自定义(6 维度)`,description:`使用自定义六维度参数`},"name.cameraTypeDownBack":{message:`下移并后退`,description:`预设运镜:下移并后退`},"name.cameraTypeForwardUp":{message:`向前并上移`,description:`预设运镜:向前并上移`},"name.cameraTypeLeftTurnForward":{message:`左转并前进`,description:`预设运镜:左转并前进`},"name.cameraTypeRightTurnForward":{message:`右转并前进`,description:`预设运镜:右转并前进`},"name.cc_horizontal":{message:`水平移动`,description:`camera_control.config.horizontal`},"name.cc_vertical":{message:`垂直移动`,description:`camera_control.config.vertical`},"name.cc_pan":{message:`水平摇镜(pan)`,description:`camera_control.config.pan`},"name.cc_tilt":{message:`垂直摇镜(tilt)`,description:`camera_control.config.tilt`},"name.cc_roll":{message:`翻滚(roll)`,description:`camera_control.config.roll`},"name.cc_zoom":{message:`推拉变焦(zoom)`,description:`camera_control.config.zoom`},"name.failure":{message:`失败`,description:`任务的失败状态`},"name.failureReason":{message:`失败原因`,description:`任务失败的原因`},"name.status":{message:`状态`,description:`任务的状态`},"name.traceId":{message:`追踪 ID`,description:`任务的追踪 ID`},"name.elapsed":{message:`耗时`,description:`任务的耗时(秒)`},"name.createdAt":{message:`创建时间`,description:`生成 Kling 视频的日期和时间`},"name.cfgScale":{message:`自由度`,description:`生成视频的自由度参数(0-1),值越大越贴近参考(英文建议:Freedom Level)`},"name.generateAudio":{message:`同步生成音效`,description:`是否同步生成音效,支持 kling-v3、kling-v3-omni 和 kling-v2-6(pro 模式)`},"name.startImage":{message:`首帧参考图片`,description:`表单字段标签:首帧参考图(英文建议翻译为“First Frame”,保持简短避免遮挡按钮)`},"name.negativePrompt":{message:`负向提示词`,description:`生成视频的负向文本提示`},"name.endImage":{message:`尾帧参考图片`,description:`表单字段标签:尾帧参考图(英文建议翻译为“Last Frame”,保持简短避免遮挡按钮)`},"name.videoUrl":{message:`自定义视频`,description:`自定义视频`},"name.prompt":{message:`视频提示`,description:`内容输入的提示`},"name.duration":{message:`视频时长`,description:`视频的时长`},"name.ingredients":{message:`多图创建视频`,description:`多图创建视频开关/标签(英文建议:Multi-Image,保持简短)`},"name.model":{message:`模型版本`,description:`要生成视频所采用的模型版本`},"name.ratio":{message:`视频比例`,description:`要生成视频所采用的视频比例`},"name.mode":{message:`视频模式`,description:`要生成视频所采用的模式`},"name.perSecond":{message:`秒`,description:`按秒计费时的单位后缀,如“1.20 积分/秒”`},"name.effect":{message:`视频效果`,description:`风格参数的名称,用于在不同版本或风格的模型之间切换`},"name.ingredientsModel":{message:`成分模型`,description:`要生成视频所采用的模型版本`},"name.klingBot":{message:`Kling Bot`,description:`Kling 视频生成器的名称`},"description.ingredients":{message:`如果您想上传多张图片来生成自己的视频,请打开此按钮。`,description:`参数'ingredients'的描述`},"description.imageUrl":{message:`在多图创建视频的任务中,它必须上传多张图片。`,description:`参数'imageUrl'的描述`},"description.prompt":{message:`生成Kling视频的提示词`,description:`参数'prompt'的描述`},"description.negativePrompt":{message:`负向文本提示,可选,不能超过200个字符`,description:`参数'prompt'的描述`},"description.uploadStartImage":{message:`上传首帧图像作为生成的参考,最后的视频会参考首帧生成`,description:`上传参考参数的描述`},"description.uploadEndImage":{message:`上传尾帧图像作为生成的参考,最后的视频会参考尾帧生成`,description:`上传参考参数的描述`},"description.cfgScale":{message:`生成视频的自由度,可选[0,1]。值越大,相关性越强,`,description:`上传参考参数的描述`},"description.mode":{message:`std 性能更高,pro 画质更好;4K 仅 v3 / v3-Omni 支持,且不可与运镜控制同时使用`,description:`模式字段的整体说明`},"description.mode4kRequiresV3":{message:`仅 kling-v3 / kling-v3-omni 支持`,description:`4k 选项被禁用的原因(模型不匹配)`},"description.mode4kIncompatibleCamera":{message:`已开启运镜控制,不可与 4K 同时使用`,description:`4k 选项被禁用的原因(已设置运镜)`},"description.duration":{message:`普通模型仅支持 5/10 秒;v3 / v3-Omni 支持 3/5/8/10/12/15 秒`,description:`时长字段的整体说明`},"description.durationV3Only":{message:`仅 v3 / v3-Omni 支持`,description:`时长选项禁用原因`},"description.generateAudio":{message:`在生成视频的同时合成音效。仅 kling-v3 / kling-v3-omni / kling-v2-6(pro 模式)支持`,description:`音效开关说明(已支持)`},"description.generateAudioUnsupported":{message:`当前模型不支持同步音效,仅 kling-v3 / kling-v3-omni / kling-v2-6(pro 模式)可用`,description:`音效开关说明(已禁用)`},"description.cameraControl":{message:`控制相机的运动方向。选择「自定义」可在 6 个维度上微调,每项取值 [-1, 1]`,description:`运镜控制说明`},"description.cameraControlDisabled4k":{message:`已选择 4K 模式,运镜控制不可用,请切换到 std / pro 后再启用`,description:`运镜控制被禁用原因`},"description.cameraControlDisabledImage2Video":{message:`上传首帧参考图后不支持运镜控制,请移除首帧参考图后再使用`,description:`运镜控制被禁用原因(image2video)`},"description.cameraControlNotSupported":{message:`当前模型/模式/时长不支持运镜控制,请先调整配置后再启用`,description:`运镜控制被禁用原因(模型不支持)`},"status.pending":{message:`等待中`,description:`任务的等待状态`},"status.processing":{message:`处理中`,description:`任务的等待状态`},"placeholder.paddingNoise":{message:`请选择...`,description:`填充噪音输入的占位符`},"placeholder.select":{message:`请选择`,description:`下拉选择字段中的占位文本`},"placeholder.paddingLevel":{message:`请选择...`,description:`填充级别的占位符`},"placeholder.prompt":{message:`输入要生成的视频风格的提示词,例如:moving`,description:`提示字段中的占位文本`},"placeholder.negativePrompt":{message:`输入要生成的视频风格的负向提示词,不超过200字符`,description:`提示字段中的占位文本`},"placeholder.position":{message:`请选择...`,description:`位置输入的占位符`},"placeholder.aspectRatio":{message:`请选择...`,description:`宽高比输入的占位符`},"placeholder.cameraType":{message:`不使用`,description:`运镜类型选择占位符`},"placeholder.preset":{message:`请选择...`,description:`预设输入的占位符`},"placeholder.markerShape":{message:`请选择...`,description:`标记形状输入的占位符`},"placeholder.rotate":{message:`请选择...`,description:`旋转输入的占位符`},"placeholder.subMarker":{message:`请选择...`,description:`子标记输入的占位符`},"button.precise":{message:`精确`,description:`生成Kling视频的按钮文本`},"button.creative":{message:`创意`,description:`生成Kling视频的按钮文本`},"button.generate":{message:`生成`,description:`生成Kling视频的按钮文本`},"button.extend":{message:`扩展视频`,description:`扩展视频按钮文本`},"button.download":{message:`下载视频`,description:`下载视频按钮文本`},"button.uploadImageUrl":{message:`上传图片`,description:`上传图片按钮文本(英文请简化为“Upload”,不要用“Upload Image”)`},"button.uploadVideoUrl":{message:`上传视频`,description:`上传视频的按钮文本`},"button.uploadReferences":{message:`上传`,description:`按钮文本,允许用户上传参考`},"message.uploadReferencesExceed":{message:`最多可上传 1 张图片`,description:`上传的图片数量超过限制时的错误消息`},"message.uploadReferencesSuccess":{message:`成功上传图片`,description:`成功上传图片时的成功消息`},"message.uploadReferencesError":{message:`上传图片失败,请稍后重试`,description:`图片上传失败时的错误消息`},"message.endImageRequiresStart":{message:`使用尾帧参考图前,请先上传首帧参考图`,description:`用户只上传了尾帧没有首帧时的错误提示`},"message.endImageNotSupported":{message:`尾帧参考图不被当前模型/模式/时长支持,请先调整配置(常见要求:模式 pro、时长 5s)。`,description:`上传尾帧时当前模型不支持的提示`},"message.featureNotSupportedTitle":{message:`需要确认`,description:`切换参数时会丢失现有设置的确认弹窗标题`},"message.featureNotSupportedBody":{message:`当前选择不支持以下已启用的设置:{fields}。继续将清理这些设置。`,description:`切换 model/mode/duration 后会丢失募集设置的提示文案,{fields} 会被占位符替换为实际字段名`},"message.featureRemovedNotice":{message:`已清理不支持的设置:{fields}`,description:`用户确认切换后的 toast 提醒`},"button.confirmContinue":{message:`继续切换`,description:`feature 丢失确认弹窗的主按钮`},"button.cancelSwitch":{message:`取消`,description:`feature 丢失确认弹窗的取消按钮`},"message.startingTask":{message:`正在启动任务...`,description:`绘图任务开始时的消息`},"message.startTaskSuccess":{message:`成功发起生成任务`,description:`成功启动任务时的成功消息`},"message.startTaskFailed":{message:`发起任务失败,请联系管理员`,description:`启动绘图任务失败时的错误消息`},"message.usedUp":{message:`您的积分已用完,请购买更多积分后继续使用`,description:`已用完时的消息`},"message.generating":{message:`生成中...`,description:`图像正在生成时的消息`},"message.downloadVideo":{message:`下载此视频`,description:`图像正在生成时的消息`},"message.extendVideo":{message:`继续生成此视频`,description:`图像正在生成时的消息`},"message.generateFailed":{message:`生成图像失败`,description:`图像生成失败时的消息`},"message.uploadVideoExceed":{message:`上传首帧图片数量超过限制`,description:`上传首帧图片数量超过限制时的错误信息`},"message.uploadVideoSizeExceed":{message:`上传文件大小不能超过 10MB!`,description:`上传文件大小不能超过 10MB!时的错误信息`},"message.uploadVideoTypeFailed":{message:`上传文件必须是 MP4 格式!`,description:`上传文件必须是 MP4 格式!的错误信息`},"message.uploadStartImageExceed":{message:`上传首帧图片数量超过限制`,description:`上传首帧图片数量超过限制时的错误信息`},"message.uploadEndImageExceed":{message:`上传尾帧图片数量超过限制`,description:`上传首帧图片数量超过限制时的错误信息`},"message.uploadStartImageError":{message:`上传首帧图片失败`,description:`上传首帧图片失败时的错误信息`},"message.uploadVideoError":{message:`上传视频失败`,description:`上传首帧图片失败时的错误信息`},"message.uploadEndImageError":{message:`上传尾帧图片失败`,description:`上传尾帧图片失败时的错误信息`},"message.uploadDocumentsError":{message:`上传文档失败`,description:`上传文档失败时的错误信息`},"message.noOperations":{message:`没有可用操作`,description:`没有可用操作时的消息`},"message.noTasks":{message:`没有历史任务,请点击左方生成视频`,description:`没有任务时的消息`},"tab.talkingPhoto":{message:`会说话的照片`,description:`Tab 标签:Talking Photo`},"name.talkingPhotoImage":{message:`人物照片`,description:`Talking Photo 的人物照片输入`},"name.talkingPhotoAudio":{message:`驱动音频`,description:`Talking Photo 的驱动音频输入`},"name.talkingPhotoPrompt":{message:`动作提示词(可选)`,description:`Talking Photo 的可选动作提示词`},"description.talkingPhotoImage":{message:`上传一张清晰正脸照片,将自动让它动起来并开口说话。`,description:`Talking Photo 人物照片说明`},"description.talkingPhotoAudio":{message:`上传一段音频(mp3/wav,≤5MB),人物会按音频对口型说话。`,description:`Talking Photo 驱动音频说明`},"description.talkingPhotoPrompt":{message:`可选:描述希望的表情/动作,如「温柔地看向镜头」。`,description:`Talking Photo 动作提示词说明`},"placeholder.talkingPhotoPrompt":{message:`例如:温柔、平静、自然,轻微头部动作`,description:`Talking Photo 提示词输入占位符`},"button.generateTalkingPhoto":{message:`生成会说话的照片`,description:`Talking Photo 生成按钮`},"button.uploadAudio":{message:`上传音频`,description:`Talking Photo 上传音频按钮`},"message.talkingPhotoMissingInputs":{message:`请先上传人物照片和驱动音频。`,description:`Talking Photo 缺少输入时的提示`},"message.uploadAudioExceed":{message:`只能上传一个音频文件。`,description:`Talking Photo 音频超出数量限制提示`},"message.uploadAudioError":{message:`音频上传失败,请重试。`,description:`Talking Photo 音频上传失败提示`}};export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"tab.videoGeneration":{message:`Videon luonti`,description:`Tab-otsikko: Video Generation`},"tab.motionControl":{message:`Liikeohjaus`,description:`Tab-otsikko: Motion Control`},"name.motionImage":{message:`Henkilökuva`,description:`Liikeohjauksen henkilöhahmon kuva`},"name.motionVideo":{message:`Liikevideo`,description:`Liikeohjauksen viitevideo`},"name.motionPrompt":{message:`Lisäohjeet (valinnainen)`,description:`Liikeohjauksen lisäohjeet`},"name.characterOrientation":{message:`Henkilön suunta`,description:`Henkilön suunta -kenttä`},"name.orientationImage":{message:`Seuraa kuvaa`,description:`Henkilön suunta -vaihtoehto: Seuraa kuvaa`},"name.orientationVideo":{message:`Seuraa videota`,description:`Henkilön suunta -vaihtoehto: Seuraa videota`},"name.keepOriginalSound":{message:`Säilytä alkuperäinen ääni`,description:`keep_original_sound-kytkin`},"description.motionImage":{message:`Lataa henkilökuva, jota käytetään viitteenä videon henkilöille, taustalle jne.`,description:`motion image_url -kuvaus`},"description.motionVideo":{message:`Lataa liikevideo, jonka mukaan videon henkilöhahmojen liikkeet toteutetaan (MP4 / MOV, ≤1 minuutti, ≤1 GB)`,description:`motion video_url -kuvaus`},"description.motionPrompt":{message:`Valinnainen. Voit sisältää positiivisia ja negatiivisia kuvastoja, jotka auttavat luomaan vaikutusta.`,description:`motion prompt -kuvaus`},"description.characterOrientation":{message:`Valitessasi 'Seuraa videota', monimutkaiset liikkeet toimivat paremmin; valitessasi 'Seuraa kuvaa', henkilön suunta vastaa viitettä, ja kameran liike toimii paremmin.`,description:`character_orientation -kuvaus`},"description.motionMode":{message:`std suorituskyky etusijalla, pro kuvanlaatu etusijalla`,description:`motion mode -kuvaus`},"description.keepOriginalSound":{message:`Kun tämä on päällä, alkuperäinen ääni säilytetään viitevideosta; kun se on pois päältä, tuotetussa videossa ei ole alkuperäistä ääntä.`,description:`keep_original_sound -kuvaus`},"placeholder.motionPrompt":{message:`Esimerkiksi: henkilö hyppää. Valinnainen.`,description:`motion prompt -paikkamerkki`},"button.generateMotion":{message:`Luo liikevideo`,description:`Liikeohjauksen luontipainike`},"message.motionMissingInputs":{message:`Lataa sekä henkilökuva että liikevideo`,description:`Liikeohjauksen puuttuvista syötteistä ilmoittava viesti`},"message.motionPricingNote":{message:`Laskutetaan tuotetun videon sekunneilta; lopullinen summa riippuu viitevideon pituudesta.`,description:`Explains that Motion Control is billed per second`},"inspiration.title":{message:`Inspiraatio ja esiasetukset`,description:`Inspiration-laatikon otsikko`},"inspiration.openButton":{message:`Inspiraatio`,description:`Inspiration-laatikon avauspainike`},"inspiration.removeChip":{message:`Poista tämä esiasetus`,description:`Poista valitun esiasetuksen painike aria-label`},"inspiration.hint":{message:`Napsauta fraasia lisätäksesi sen automaattisesti ohjeisiin; napsauta uudelleen poistaaksesi sen.`,description:`Inspiration-laatikon yläosan käyttöohje`},"inspiration.empty":{message:`Ei saatavilla olevia esiasetuksia`,description:`Inspiration-laatikon tyhjät tila`},"inspiration.selectedSummary":{message:`Valittu {count} kohdetta`,description:`Valittujen esiasetusten määrä`},"inspiration.clearSelected":{message:`Tyhjennä kaikki`,description:`Poista kaikki valitut esiasetukset -painike`},"inspiration.group.cameraMovements":{message:`Kameran liikkeet`,description:`Inspiration-ryhmä: Kameran liikkeet`},"inspiration.group.cameraSpeed":{message:`Liikenopeus`,description:`Inspiration-ryhmä: Liikenopeus`},"inspiration.group.shotType":{message:`Kameran kuvakulma`,description:`Inspiration-ryhmä: Kuvakulma / näkökulma`},"inspiration.group.light":{message:`Valo ja varjo`,description:`Inspiration-ryhmä: Valo ja varjo`},"inspiration.group.frame":{message:`Kuva`,description:`Inspiration-ryhmä: Kuva / sommittelu`},"inspiration.group.atmosphere":{message:`Tunnelma`,description:`Inspiration-ryhmä: Tunnelma / tyyli`},"inspiration.chip.rotateAround":{message:`Kamera kiertää kohteen ympäri`,description:``},"inspiration.chip.stationary":{message:`Kamera paikallaan`,description:``},"inspiration.chip.handheld":{message:`Käsikamera`,description:``},"inspiration.chip.zoomOut":{message:`Kamera zoomaa ulos`,description:``},"inspiration.chip.zoomIn":{message:`Kamera zoomaa sisään`,description:``},"inspiration.chip.follow":{message:`Kamera seuraa kohteen liikettä`,description:``},"inspiration.chip.panRight":{message:`Kamera siirtyy oikealle`,description:``},"inspiration.chip.tiltUp":{message:`Kamera kallistuu ylös`,description:``},"inspiration.chip.tiltDown":{message:`Kamera kallistuu alas`,description:``},"inspiration.chip.orbit":{message:`Kamera kiertää kohteen ympäri`,description:``},"inspiration.chip.speedSlow":{message:`Kameran liike hidas`,description:``},"inspiration.chip.speedMedium":{message:`Kameran liike keskinopea`,description:``},"inspiration.chip.speedFast":{message:`Kameran liike nopea`,description:``},"inspiration.chip.shotClose":{message:`Lähikuva`,description:``},"inspiration.chip.shotMedium":{message:`Keskikuva`,description:``},"inspiration.chip.shotLong":{message:`Kaukokuva`,description:``},"inspiration.chip.shotLowAngle":{message:`Alakulma`,description:``},"inspiration.chip.shotHighAngle":{message:`Ylänkulma`,description:``},"inspiration.chip.shotShallowDof":{message:`Matala syvyys`,description:``},"inspiration.chip.shotFront":{message:`Etunäkymä`,description:``},"inspiration.chip.shotProfile":{message:`Sivunäkymä`,description:``},"inspiration.chip.shotCloseUp":{message:`Kasvokuva`,description:``},"inspiration.chip.shotDrone":{message:`Drone-näkymä`,description:``},"inspiration.chip.lightSunlight":{message:`Auringonvalo`,description:``},"inspiration.chip.lightSoft":{message:`Pehmeä valo`,description:``},"inspiration.chip.lightNeon":{message:`Neonvalo`,description:``},"inspiration.chip.lightWarm":{message:`Lämmin valo`,description:``},"inspiration.chip.lightNature":{message:`Luonnonvalo`,description:``},"inspiration.chip.lightCandle":{message:`Kynttilänvalo`,description:``},"inspiration.chip.lightCityNight":{message:`Kaupungin yövalaistus`,description:``},"inspiration.chip.frameRichDetails":{message:`Rikkaat yksityiskohdat`,description:``},"inspiration.chip.frameSimpleBg":{message:`Yksinkertainen tausta`,description:``},"inspiration.chip.atmosphereMysterious":{message:`Salaperäinen tunnelma`,description:``},"inspiration.chip.atmospherePeaceful":{message:`Rauhallinen tunnelma`,description:``},"inspiration.chip.atmosphereHeartwarming":{message:`Lämminhenkinen`,description:``},"inspiration.chip.atmosphereVivid":{message:`Elävä`,description:``},"inspiration.chip.atmosphereColorful":{message:`Värikäs`,description:``},"name.taskId":{message:`Tehtävän ID`,description:`Tehtävän ID`},"name.type":{message:`Tyyppi`,description:`Kling-videon sisältötyyppi, kuten 'linkki', 'teksti' jne.`},"name.modeStd":{message:`Standardi (720p)`,description:`Kling-videon standarditila (720p)`},"name.modePro":{message:`Korkea laatu (1080p)`,description:`Kling-videon korkean laadun tila (1080p)`},"name.mode4k":{message:`Natiivinen 4K`,description:`Kling 4K -tila (vain v3 / v3-Omni tukee)`},"name.cameraControl":{message:`Kameran ohjaus`,description:`Kameran ohjaustyyppi ja parametrit`},"name.cameraTypeNone":{message:`Ei käytössä`,description:`Ei käytä kameran ohjausta`},"name.cameraTypeSimple":{message:`Mukautettu (6 ulottuvuutta)`,description:`Käyttää mukautettuja kuuden ulottuvuuden parametreja`},"name.cameraTypeDownBack":{message:`Alas ja taakse`,description:`Esiasetettu kameran liike: alas ja taakse`},"name.cameraTypeForwardUp":{message:`Eteenpäin ja ylös`,description:`Esiasetettu kameran liike: eteenpäin ja ylös`},"name.cameraTypeLeftTurnForward":{message:`Vasemmalle kääntyminen ja eteenpäin`,description:`Esiasetettu kameran liike: vasemmalle kääntyminen ja eteenpäin`},"name.cameraTypeRightTurnForward":{message:`Oikealle kääntyminen ja eteenpäin`,description:`Esiasetettu kameran liike: oikealle kääntyminen ja eteenpäin`},"name.cc_horizontal":{message:`Vaakasuora liike`,description:`camera_control.config.horizontal`},"name.cc_vertical":{message:`Pystysuora liike`,description:`camera_control.config.vertical`},"name.cc_pan":{message:`Vaakasuora pan (kääntö)`,description:`camera_control.config.pan`},"name.cc_tilt":{message:`Pystysuora kallistus`,description:`camera_control.config.tilt`},"name.cc_roll":{message:`Rullaus`,description:`camera_control.config.roll`},"name.cc_zoom":{message:`Zoomaus`,description:`camera_control.config.zoom`},"name.failure":{message:`Epäonnistuminen`,description:`Tehtävän epäonnistumistila`},"name.failureReason":{message:`Epäonnistumisen syy`,description:`Tehtävän epäonnistumisen syy`},"name.status":{message:`Tila`,description:`Tehtävän tila`},"name.traceId":{message:`Seuranta ID`,description:`Tehtävän seuranta ID`},"name.elapsed":{message:`Kesto`,description:`Tehtävän kesto (sekuntia)`},"name.createdAt":{message:`Luontiaika`,description:`Kling-videon luontipäivämäärä ja -aika`},"name.cfgScale":{message:`Vapausaste`,description:`Videon luomisen vapausasteparametri (0-1), suurempi arvo tarkoittaa läheisyyttä viittaukseen`},"name.generateAudio":{message:`Synkronoi ääni`,description:`Synkronoidaanko ääni, tukee kling-v3, kling-v3-omni ja kling-v2-6 (pro-tila)`},"name.startImage":{message:`Ensimmäinen kehys`,description:`Lomakkeen kenttäotsikko: ensimmäinen kehys (pitäisi olla lyhyt, jotta se ei peitä painiketta)`},"name.negativePrompt":{message:`Negatiivinen vihje`,description:`Videon negatiivinen tekstivihje`},"name.endImage":{message:`Viimeinen kehys`,description:`Lomakkeen kenttäotsikko: viimeinen kehys (pitäisi olla lyhyt, jotta se ei peitä painiketta)`},"name.videoUrl":{message:`Mukautettu video`,description:`Mukautettu video`},"name.prompt":{message:`Videovihje`,description:`Sisältösyötteen vihje`},"name.duration":{message:`Videon kesto`,description:`Videon kesto`},"name.ingredients":{message:`Monikuva-video`,description:`Monikuva-video kytkin/otsikko (pitäisi olla lyhyt)`},"name.model":{message:`Malliversio`,description:`Malliversio, jota käytetään videon luomiseen`},"name.ratio":{message:`Videon suhde`,description:`Videon suhde, jota käytetään videon luomiseen`},"name.mode":{message:`Videotila`,description:`Videon luomiseen käytettävä tila`},"name.perSecond":{message:`sekunti`,description:`Unit suffix for per-second pricing`},"name.effect":{message:`Videotehoste`,description:`Tyyliparametrin nimi, jota käytetään mallin eri versioiden tai tyylien välillä vaihtamiseen`},"name.ingredientsModel":{message:`Ainesosamalli`,description:`Videon luomiseen käytettävä malliversio`},"name.klingBot":{message:`Kling Bot`,description:`Kling-videogeneraattorin nimi`},"description.ingredients":{message:`Jos haluat ladata useita kuvia oman videon luomiseksi, avaa tämä painike.`,description:`Parametrin 'ingredients' kuvaus`},"description.imageUrl":{message:`Monikuvatehtävässä on ladattava useita kuvia.`,description:`Parametrin 'imageUrl' kuvaus`},"description.prompt":{message:`Kling-videon luomiseen käytettävä kehotus`,description:`Parametrin 'prompt' kuvaus`},"description.negativePrompt":{message:`Negatiivinen tekstikehotus, valinnainen, enintään 200 merkkiä`,description:`Parametrin 'prompt' kuvaus`},"description.uploadStartImage":{message:`Lataa ensimmäinen kehyskuva viittauksena luomiseen, lopullinen video perustuu ensimmäiseen kehykseen`,description:`Latausviittausparametrin kuvaus`},"description.uploadEndImage":{message:`Lataa viimeinen kehyskuva viittauksena luomiseen, lopullinen video perustuu viimeiseen kehykseen`,description:`Latausviittausparametrin kuvaus`},"description.cfgScale":{message:`Videon luomisen vapausaste, valinnainen [0,1]. Suurempi arvo tarkoittaa vahvempaa korrelaatiota.`,description:`Latausviittausparametrin kuvaus`},"description.mode":{message:`std tarjoaa paremman suorituskyvyn, pro parempaa laatua; 4K tukee vain v3 / v3-Omni, eikä sitä voi käyttää yhdessä kameran ohjauksen kanssa`,description:`Tilakentän yleiskuvaus`},"description.mode4kRequiresV3":{message:`Vain kling-v3 / kling-v3-omni tukee`,description:`4K-vaihtoehdon poistamisen syy (mallin yhteensopimattomuus)`},"description.mode4kIncompatibleCamera":{message:`Kameran ohjaus on käytössä, eikä sitä voi käyttää 4K:n kanssa`,description:`4K-vaihtoehdon poistamisen syy (kameran ohjaus asetettu)`},"description.duration":{message:`Normaali malli tukee vain 5/10 sekuntia; v3 / v3-Omni tukee 3/5/8/10/12/15 sekuntia`,description:`Keston kentän yleiskuvaus`},"description.durationV3Only":{message:`Vain v3 / v3-Omni tukee`,description:`Kesto-vaihtoehdon poistamisen syy`},"description.generateAudio":{message:`Syntetisoi äänitehosteet videon luomisen yhteydessä. Vain kling-v3 / kling-v3-omni / kling-v2-6 (pro-tila) tukee`,description:`Äänitehostekytkimen kuvaus (tuettu)`},"description.generateAudioUnsupported":{message:`Nykyinen malli ei tue synkronoitua äänitehostetta, vain kling-v3 / kling-v3-omni / kling-v2-6 (pro-tila) on käytettävissä`,description:`Äänitehostekytkimen kuvaus (poistettu käytöstä)`},"description.cameraControl":{message:`Ohjaa kameran liikettä. Valitse 'Mukautettu' hienosäätääksesi kuudessa ulottuvuudessa, jokaiselle arvot [-1, 1]`,description:`Kameran ohjauksen kuvaus`},"description.cameraControlDisabled4k":{message:`4K-tila on valittu, kameran ohjaus ei ole käytettävissä, vaihda std / pro-tilaan ja aktivoi sitten`,description:`Kameran ohjauksen poistamisen syy`},"description.cameraControlDisabledImage2Video":{message:`Liikekontrollia ei tueta, kun ensimmäinen kehysreferenssikuva on ladattu. Poista ensimmäinen kehysreferenssikuva ja yritä uudelleen.`,description:`Liikekontrollin poistamisen syy (image2video)`},"description.cameraControlNotSupported":{message:`Nykyinen malli/tila/kesto ei tue liikekontrollia. Säädä asetuksia ja aktivoi sitten uudelleen.`,description:`Liikekontrollin poistamisen syy (malli ei tue)`},"status.pending":{message:`Odottaa`,description:`Tehtävän odotustila`},"status.processing":{message:`Käsitellään`,description:`Tehtävän odotustila`},"placeholder.paddingNoise":{message:`Valitse...`,description:`Täyteäänien syötteen paikkamerkki`},"placeholder.select":{message:`Valitse`,description:`Valintakentän paikkamerkki`},"placeholder.paddingLevel":{message:`Valitse...`,description:`Täyteasteen paikkamerkki`},"placeholder.prompt":{message:`Syötä videon tyylin kehotus, esim. moving`,description:`Kehotuskentän paikkamerkki`},"placeholder.negativePrompt":{message:`Syötä videon tyylin negatiivinen kehotus, enintään 200 merkkiä`,description:`Kehotuskentän paikkamerkki`},"placeholder.position":{message:`Valitse...`,description:`Sijainnin syötteen paikkamerkki`},"placeholder.aspectRatio":{message:`Valitse...`,description:`Leveys-korkeus-suhteen syötteen paikkamerkki`},"placeholder.cameraType":{message:`Ei käytössä`,description:`Kameratyypin valinnan paikkamerkki`},"placeholder.preset":{message:`Valitse...`,description:`Esiasetuksen syötteen paikkamerkki`},"placeholder.markerShape":{message:`Valitse...`,description:`Merkki muodon syötteen paikkamerkki`},"placeholder.rotate":{message:`Valitse...`,description:`Kääntösyötteen paikkamerkki`},"placeholder.subMarker":{message:`Valitse...`,description:`Alamerkin syötteen paikkamerkki`},"button.precise":{message:`Tarkka`,description:`Kling-videon luomiseen käytettävä painiketeksti`},"button.creative":{message:`Luova`,description:`Kling-videon luomiseen käytettävä painiketeksti`},"button.generate":{message:`Luo`,description:`Kling-videon luomiseen käytettävä painiketeksti`},"button.extend":{message:`Laajenna videota`,description:`Laajenna videota -painikkeen teksti`},"button.download":{message:`Lataa video`,description:`Lataa video -painikkeen teksti`},"button.uploadImageUrl":{message:`Lataa`,description:`Kuvien lataamiseen tarkoitettu painikkeen teksti (yksinkertaista englanniksi 'Upload', älä käytä 'Upload Image')`},"button.uploadVideoUrl":{message:`Lataa video`,description:`Videon lataamiseen tarkoitettu painikkeen teksti`},"button.uploadReferences":{message:`Lataa`,description:`Painikkeen teksti, joka sallii käyttäjän ladata viittauksia`},"message.uploadReferencesExceed":{message:`Voit ladata enintään 1 kuva`,description:`Virheilmoitus, kun ladattujen kuvien määrä ylittää rajan`},"message.uploadReferencesSuccess":{message:`Kuva ladattu onnistuneesti`,description:`Onnistuneesta kuvien lataamisesta ilmoittava viesti`},"message.uploadReferencesError":{message:`Kuvan lataaminen epäonnistui, yritä myöhemmin uudelleen`,description:`Virheilmoitus, kun kuvan lataaminen epäonnistuu`},"message.endImageRequiresStart":{message:`Lataa ensin aloituskuva ennen loppukuvan käyttöä`,description:`Virheilmoitus, kun käyttäjä on ladannut vain loppukuvan ilman aloituskuvaa`},"message.endImageNotSupported":{message:`Loppukuvaa ei tueta nykyisellä mallilla/tilalla/kestolla, säädä asetuksia (yleiset vaatimukset: tila pro, kesto 5s).`,description:`Ilmoitus, kun loppukuva ei ole tuettu nykyisellä mallilla`},"message.featureNotSupportedTitle":{message:`Vahvistus tarvitaan`,description:`Vahvistusikkunan otsikko, kun asetusten vaihtaminen johtaa nykyisten asetusten menettämiseen`},"message.featureNotSupportedBody":{message:`Nykyinen valinta ei tue seuraavia käytössä olevia asetuksia: {fields}. Jatkaminen poistaa nämä asetukset.`,description:`Ilmoitus, kun mallin/tilan/keston vaihtaminen johtaa asetusten menettämiseen, {fields} korvataan todellisilla kentän nimillä`},"message.featureRemovedNotice":{message:`Poistettu tuettomat asetukset: {fields}`,description:`Toast-ilmoitus käyttäjän vahvistettua vaihdon`},"button.confirmContinue":{message:`Jatka vaihtamista`,description:`Pääpainike ominaisuuden menettämisen vahvistusikkunassa`},"button.cancelSwitch":{message:`Peruuta`,description:`Peruuta-painike ominaisuuden menettämisen vahvistusikkunassa`},"message.startingTask":{message:`Aloitetaan tehtävä...`,description:`Viesti, kun piirustustehtävä alkaa`},"message.startTaskSuccess":{message:`Tehtävä käynnistetty onnistuneesti`,description:`Onnistuneesta tehtävän käynnistämisestä ilmoittava viesti`},"message.startTaskFailed":{message:`Tehtävän käynnistäminen epäonnistui, ota yhteyttä ylläpitäjään`,description:`Virheilmoitus, kun piirustustehtävän käynnistäminen epäonnistuu`},"message.usedUp":{message:`Pisteesi on käytetty loppuun, osta lisää pisteitä jatkaaksesi käyttöä`,description:`Viesti, kun pisteet on käytetty loppuun`},"message.generating":{message:`Generoidaan...`,description:`Viesti, kun kuvaa generoidaan`},"message.downloadVideo":{message:`Lataa tämä video`,description:`Viesti, kun kuvaa generoidaan`},"message.extendVideo":{message:`Jatka tämän videon generoimista`,description:`Viesti, kun kuvaa generoidaan`},"message.generateFailed":{message:`Kuvan generoiminen epäonnistui`,description:`Viesti, kun kuvan generoiminen epäonnistuu`},"message.uploadVideoExceed":{message:`Aloituskuvien määrä ylittää rajan`,description:`Virheilmoitus, kun aloituskuvien määrä ylittää rajan`},"message.uploadVideoSizeExceed":{message:`Ladattavan tiedoston koko ei saa ylittää 10MB!`,description:`Virheilmoitus, kun ladattavan tiedoston koko ylittää 10MB`},"message.uploadVideoTypeFailed":{message:`Ladattavan tiedoston on oltava MP4-muodossa!`,description:`Virheilmoitus, kun ladattavan tiedoston muoto ei ole MP4`},"message.uploadStartImageExceed":{message:`Aloituskuvien määrä ylittää rajan`,description:`Virheilmoitus, kun aloituskuvien määrä ylittää rajan`},"message.uploadEndImageExceed":{message:`Loppukuva määrän ylittää rajan`,description:`Virheilmoitus, kun loppukuvien määrä ylittää rajan`},"message.uploadStartImageError":{message:`Aloituskuvan lataaminen epäonnistui`,description:`Virheilmoitus, kun aloituskuvan lataaminen epäonnistuu`},"message.uploadVideoError":{message:`Videon lataaminen epäonnistui`,description:`Virheilmoitus, kun videon lataaminen epäonnistuu`},"message.uploadEndImageError":{message:`Loppukuvan lataaminen epäonnistui`,description:`Virheilmoitus, kun loppukuvan lataaminen epäonnistuu`},"message.uploadDocumentsError":{message:`Asiakirjan lataaminen epäonnistui`,description:`Virheilmoitus, kun asiakirjan lataaminen epäonnistuu`},"message.noOperations":{message:`Ei käytettävissä olevia toimintoja`,description:`Viesti, kun käytettävissä ei ole toimintoja`},"message.noTasks":{message:`Ei historiallisia tehtäviä, napsauta vasemmalla luodaksesi videon`,description:`Viesti, kun tehtäviä ei ole`},"tab.talkingPhoto":{message:`Puhuva kuva`,description:`Tab label: Talking Photo`},"name.talkingPhotoImage":{message:`Muotokuva`,description:`Talking Photo portrait image input`},"name.talkingPhotoAudio":{message:`Ohjaava ääni`,description:`Talking Photo driving audio input`},"name.talkingPhotoPrompt":{message:`Liikekehote (valinnainen)`,description:`Talking Photo optional motion prompt`},"description.talkingPhotoImage":{message:`Lataa selkeä kasvokuva edestä; se animoidaan ja saadaan puhumaan.`,description:`Talking Photo portrait image help text`},"description.talkingPhotoAudio":{message:`Lataa äänileike (mp3/wav, ≤5 Mt); hahmo huulisynkronoi siihen.`,description:`Talking Photo driving audio help text`},"description.talkingPhotoPrompt":{message:`Valinnainen: kuvaile haluttu ilme/liike, esim. ”katso lempeästi kameraan”.`,description:`Talking Photo motion prompt help text`},"placeholder.talkingPhotoPrompt":{message:`esim. lempeä, rauhallinen, luonnollinen, kevyt pään liike`,description:`Talking Photo prompt input placeholder`},"button.generateTalkingPhoto":{message:`Luo puhuva kuva`,description:`Talking Photo generate button`},"button.uploadAudio":{message:`Lataa ääni`,description:`Talking Photo upload audio button`},"message.talkingPhotoMissingInputs":{message:`Lataa ensin muotokuva ja ohjaava ääni.`,description:`Talking Photo missing inputs warning`},"message.uploadAudioExceed":{message:`Vain yksi äänitiedosto on sallittu.`,description:`Talking Photo audio count limit warning`},"message.uploadAudioError":{message:`Äänen lataus epäonnistui, yritä uudelleen.`,description:`Talking Photo audio upload error`}};export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"tab.videoGeneration":{message:`비디오 생성`,description:`Tab 标签:Video Generation`},"tab.motionControl":{message:`모션 제어`,description:`Tab 标签:Motion Control`},"name.motionImage":{message:`인물 참조 이미지`,description:`Motion Control 中的人物图输入`},"name.motionVideo":{message:`모션 참조 비디오`,description:`Motion Control 中的参考视频输入`},"name.motionPrompt":{message:`추가 프롬프트(선택 사항)`,description:`Motion Control 中的补充提示词`},"name.characterOrientation":{message:`인물 방향`,description:`人物朝向字段`},"name.orientationImage":{message:`따라갈 이미지`,description:`人物朝向选项:跟随图片`},"name.orientationVideo":{message:`따라갈 비디오`,description:`人物朝向选项:跟随视频`},"name.keepOriginalSound":{message:`원본 오디오 유지`,description:`keep_original_sound 开关`},"description.motionImage":{message:`인물 참조 이미지를 업로드하여 비디오의 인물, 배경 등 요소를 이로 참조합니다.`,description:`motion image_url 说明`},"description.motionVideo":{message:`모션 참조 비디오를 업로드하여 비디오의 인물 동작이 해당 비디오와 일치하도록 합니다.(MP4 / MOV, ≤1 분, ≤1 GB)`,description:`motion video_url 说明`},"description.motionPrompt":{message:`선택 사항입니다. 긍정적 설명과 부정적 설명을 포함할 수 있으며, 효과 생성에 도움을 줍니다.`,description:`motion prompt 说明`},"description.characterOrientation":{message:`‘따라갈 비디오’를 선택하면 복잡한 동작 표현이 더 좋습니다; ‘따라갈 이미지’를 선택하면 인물 방향이 참조 이미지와 일치하고 카메라 움직임 표현이 더 좋습니다.`,description:`character_orientation 说明`},"description.motionMode":{message:`std 성능 우선, pro 화질 우선`,description:`motion mode 说明`},"description.keepOriginalSound":{message:`켜면 참조 비디오의 원음이 유지됩니다; 끄면 출력 비디오에 원본 오디오가 포함되지 않습니다.`,description:`keep_original_sound 说明`},"placeholder.motionPrompt":{message:`예: 한 사람이 춤추고 있습니다. 선택 사항입니다.`,description:`motion prompt 占位符`},"button.generateMotion":{message:`모션 제어 비디오 생성`,description:`Motion Control 生成按钮`},"message.motionMissingInputs":{message:`인물 이미지와 모션 참조 비디오를 모두 업로드해 주세요.`,description:`Motion Control 缺少输入时的提示`},"message.motionPricingNote":{message:`생성된 영상의 초 단위로 청구되며, 최종 금액은 참조 영상 길이에 따라 달라집니다.`,description:`Explains that Motion Control is billed per second`},"inspiration.title":{message:`영감 및 프리셋`,description:`Inspiration 抽屉的标题`},"inspiration.openButton":{message:`영감`,description:`打开 Inspiration 抽屉的按钮`},"inspiration.removeChip":{message:`이 프리셋 제거`,description:`移除提示词区中已选预设的按钮 aria-label`},"inspiration.hint":{message:`문구를 클릭하면 자동으로 프롬프트에 추가됩니다; 다시 클릭하면 제거됩니다.`,description:`Inspiration 抽屉顶部的使用说明`},"inspiration.empty":{message:`사용 가능한 프리셋이 없습니다.`,description:`Inspiration 抽屉空状态`},"inspiration.selectedSummary":{message:`선택된 항목 {count}개`,description:`已选择的预设数量`},"inspiration.clearSelected":{message:`모두 지우기`,description:`清除所有已选预设的按钮`},"inspiration.group.cameraMovements":{message:`카메라 움직임`,description:`Inspiration 分组:镜头运动`},"inspiration.group.cameraSpeed":{message:`움직임 속도`,description:`Inspiration 分组:运动速度`},"inspiration.group.shotType":{message:`샷 유형`,description:`Inspiration 分组:景别 / 视角`},"inspiration.group.light":{message:`조명`,description:`Inspiration 分组:光影`},"inspiration.group.frame":{message:`화면`,description:`Inspiration 分组:画面 / 构图`},"inspiration.group.atmosphere":{message:`분위기`,description:`Inspiration 分组:氛围 / 风格`},"inspiration.chip.rotateAround":{message:`주제를 중심으로 카메라 회전`,description:``},"inspiration.chip.stationary":{message:`카메라 정지`,description:``},"inspiration.chip.handheld":{message:`핸드헬드 촬영`,description:``},"inspiration.chip.zoomOut":{message:`카메라 줌 아웃`,description:``},"inspiration.chip.zoomIn":{message:`카메라 줌 인`,description:``},"inspiration.chip.follow":{message:`주제를 따라 카메라 이동`,description:``},"inspiration.chip.panRight":{message:`카메라 오른쪽으로 팬`,description:``},"inspiration.chip.tiltUp":{message:`카메라 위로 기울이기`,description:``},"inspiration.chip.tiltDown":{message:`카메라 아래로 기울이기`,description:``},"inspiration.chip.orbit":{message:`카메라 궤도 회전`,description:``},"inspiration.chip.speedSlow":{message:`카메라 움직임 느림`,description:``},"inspiration.chip.speedMedium":{message:`카메라 움직임 중간`,description:``},"inspiration.chip.speedFast":{message:`카메라 움직임 빠름`,description:``},"inspiration.chip.shotClose":{message:`근접 촬영`,description:``},"inspiration.chip.shotMedium":{message:`중간 샷`,description:``},"inspiration.chip.shotLong":{message:`원거리 촬영`,description:``},"inspiration.chip.shotLowAngle":{message:`저각도 촬영`,description:``},"inspiration.chip.shotHighAngle":{message:`고각도 촬영`,description:``},"inspiration.chip.shotShallowDof":{message:`얕은 심도`,description:``},"inspiration.chip.shotFront":{message:`정면`,description:``},"inspiration.chip.shotProfile":{message:`측면`,description:``},"inspiration.chip.shotCloseUp":{message:`얼굴 클로즈업`,description:``},"inspiration.chip.shotDrone":{message:`드론 시점`,description:``},"inspiration.chip.lightSunlight":{message:`햇빛`,description:``},"inspiration.chip.lightSoft":{message:`부드러운 빛`,description:``},"inspiration.chip.lightNeon":{message:`네온 조명`,description:``},"inspiration.chip.lightWarm":{message:`따뜻한 빛`,description:``},"inspiration.chip.lightNature":{message:`자연광`,description:``},"inspiration.chip.lightCandle":{message:`촛불`,description:``},"inspiration.chip.lightCityNight":{message:`도시 야경 조명`,description:``},"inspiration.chip.frameRichDetails":{message:`세부사항 풍부`,description:``},"inspiration.chip.frameSimpleBg":{message:`간단한 배경`,description:``},"inspiration.chip.atmosphereMysterious":{message:`신비로운 분위기`,description:``},"inspiration.chip.atmospherePeaceful":{message:`평화로운 분위기`,description:``},"inspiration.chip.atmosphereHeartwarming":{message:`따뜻하고 치유되는`,description:``},"inspiration.chip.atmosphereVivid":{message:`생생한`,description:``},"inspiration.chip.atmosphereColorful":{message:`다채로운`,description:``},"name.taskId":{message:`작업 ID`,description:`작업의 ID`},"name.type":{message:`유형`,description:`생성할 Kling 비디오의 콘텐츠 유형, 예: '링크', '텍스트' 등`},"name.modeStd":{message:`표준 (720p)`,description:`Kling 비디오의 표준 모드 (출력 720p)`},"name.modePro":{message:`고품질 (1080p)`,description:`Kling 비디오의 고품질 모드 (출력 1080p)`},"name.mode4k":{message:`네이티브 4K`,description:`Kling 4K 모드 (v3 / v3-Omni 전용 지원)`},"name.cameraControl":{message:`카메라 제어`,description:`카메라 제어 유형 및 매개변수`},"name.cameraTypeNone":{message:`사용 안 함`,description:`카메라 제어 사용 안 함`},"name.cameraTypeSimple":{message:`사용자 정의 (6차원)`,description:`사용자 정의 6차원 매개변수 사용`},"name.cameraTypeDownBack":{message:`아래로 이동 및 후퇴`,description:`프리셋 카메라 이동: 아래로 이동 및 후퇴`},"name.cameraTypeForwardUp":{message:`앞으로 이동 및 위로`,description:`프리셋 카메라 이동: 앞으로 이동 및 위로`},"name.cameraTypeLeftTurnForward":{message:`왼쪽으로 회전 및 전진`,description:`프리셋 카메라 이동: 왼쪽으로 회전 및 전진`},"name.cameraTypeRightTurnForward":{message:`오른쪽으로 회전 및 전진`,description:`프리셋 카메라 이동: 오른쪽으로 회전 및 전진`},"name.cc_horizontal":{message:`수평 이동`,description:`camera_control.config.horizontal`},"name.cc_vertical":{message:`수직 이동`,description:`camera_control.config.vertical`},"name.cc_pan":{message:`수평 팬`,description:`camera_control.config.pan`},"name.cc_tilt":{message:`수직 틸트`,description:`camera_control.config.tilt`},"name.cc_roll":{message:`롤`,description:`camera_control.config.roll`},"name.cc_zoom":{message:`줌`,description:`camera_control.config.zoom`},"name.failure":{message:`실패`,description:`작업의 실패 상태`},"name.failureReason":{message:`실패 원인`,description:`작업 실패의 원인`},"name.status":{message:`상태`,description:`작업의 상태`},"name.traceId":{message:`추적 ID`,description:`작업의 추적 ID`},"name.elapsed":{message:`소요 시간`,description:`작업의 소요 시간 (초)`},"name.createdAt":{message:`생성 시간`,description:`Kling 비디오 생성 날짜 및 시간`},"name.cfgScale":{message:`자유도`,description:`비디오 생성의 자유도 매개변수 (0-1), 값이 클수록 참조에 가까워짐 (영어 제안: Freedom Level)`},"name.generateAudio":{message:`오디오 동기 생성`,description:`오디오를 동기 생성할지 여부, kling-v3, kling-v3-omni 및 kling-v2-6 (pro 모드) 지원`},"name.startImage":{message:`첫 프레임 참조 이미지`,description:`폼 필드 레이블: 첫 프레임 참조 이미지 (영어 제안: 'First Frame', 간단하게 유지하여 버튼 가리기 방지)`},"name.negativePrompt":{message:`부정적 프롬프트`,description:`비디오 생성의 부정적 텍스트 프롬프트`},"name.endImage":{message:`마지막 프레임 참조 이미지`,description:`폼 필드 레이블: 마지막 프레임 참조 이미지 (영어 제안: 'Last Frame', 간단하게 유지하여 버튼 가리기 방지)`},"name.videoUrl":{message:`사용자 정의 비디오`,description:`사용자 정의 비디오`},"name.prompt":{message:`비디오 프롬프트`,description:`내용 입력의 프롬프트`},"name.duration":{message:`비디오 길이`,description:`비디오의 길이`},"name.ingredients":{message:`다중 이미지 비디오 생성`,description:`다중 이미지 비디오 생성 스위치/레이블 (영어 제안: Multi-Image, 간단하게 유지)`},"name.model":{message:`모델 버전`,description:`비디오 생성을 위해 사용되는 모델 버전`},"name.ratio":{message:`비디오 비율`,description:`비디오를 생성하는 데 사용되는 비디오 비율`},"name.mode":{message:`비디오 모드`,description:`비디오를 생성하는 데 사용되는 모드`},"name.perSecond":{message:`초`,description:`Unit suffix for per-second pricing`},"name.effect":{message:`비디오 효과`,description:`다양한 버전 또는 스타일의 모델 간 전환에 사용되는 스타일 매개변수의 이름`},"name.ingredientsModel":{message:`성분 모델`,description:`비디오를 생성하는 데 사용되는 모델 버전`},"name.klingBot":{message:`Kling 봇`,description:`Kling 비디오 생성기의 이름`},"description.ingredients":{message:`자신의 비디오를 생성하기 위해 여러 이미지를 업로드하려면 이 버튼을 활성화하세요.`,description:`매개변수 'ingredients'의 설명`},"description.imageUrl":{message:`다중 이미지로 비디오를 생성하는 작업에서는 여러 이미지를 업로드해야 합니다.`,description:`매개변수 'imageUrl'의 설명`},"description.prompt":{message:`Kling 비디오 생성을 위한 프롬프트`,description:`매개변수 'prompt'의 설명`},"description.negativePrompt":{message:`부정적인 텍스트 프롬프트, 선택 사항, 200자 이내`,description:`매개변수 'negativePrompt'의 설명`},"description.uploadStartImage":{message:`생성된 비디오의 참조로 첫 번째 프레임 이미지를 업로드하세요. 마지막 비디오는 첫 번째 프레임을 참조하여 생성됩니다.`,description:`업로드 참조 매개변수의 설명`},"description.uploadEndImage":{message:`생성된 비디오의 참조로 마지막 프레임 이미지를 업로드하세요. 마지막 비디오는 마지막 프레임을 참조하여 생성됩니다.`,description:`업로드 참조 매개변수의 설명`},"description.cfgScale":{message:`비디오 생성의 자유도, 선택 사항 [0,1]. 값이 클수록 관련성이 강해집니다.`,description:`업로드 참조 매개변수의 설명`},"description.mode":{message:`std는 성능이 더 높고, pro는 화질이 더 좋습니다; 4K는 v3 / v3-Omni에서만 지원되며, 카메라 제어와 동시에 사용할 수 없습니다.`,description:`모드 필드의 전체 설명`},"description.mode4kRequiresV3":{message:`kling-v3 / kling-v3-omni에서만 지원됩니다.`,description:`4K 옵션이 비활성화된 이유 (모델 불일치)`},"description.mode4kIncompatibleCamera":{message:`카메라 제어가 활성화되어 있어 4K와 동시에 사용할 수 없습니다.`,description:`4K 옵션이 비활성화된 이유 (카메라 제어 설정됨)`},"description.duration":{message:`일반 모델은 5/10초만 지원합니다; v3 / v3-Omni는 3/5/8/10/12/15초를 지원합니다.`,description:`지속 시간 필드의 전체 설명`},"description.durationV3Only":{message:`v3 / v3-Omni에서만 지원됩니다.`,description:`지속 시간 옵션 비활성화 이유`},"description.generateAudio":{message:`비디오 생성과 동시에 음향을 합성합니다. kling-v3 / kling-v3-omni / kling-v2-6 (pro 모드)에서만 지원됩니다.`,description:`음향 스위치 설명 (지원됨)`},"description.generateAudioUnsupported":{message:`현재 모델은 동기화된 음향을 지원하지 않습니다. kling-v3 / kling-v3-omni / kling-v2-6 (pro 모드)에서만 사용 가능합니다.`,description:`음향 스위치 설명 (비활성화됨)`},"description.cameraControl":{message:`카메라의 움직임 방향을 제어합니다. '사용자 정의'를 선택하면 6개 차원에서 미세 조정할 수 있으며, 각 항목의 값은 [-1, 1]입니다.`,description:`카메라 제어 설명`},"description.cameraControlDisabled4k":{message:`4K 모드가 선택되어 카메라 제어를 사용할 수 없습니다. std / pro로 전환한 후 다시 활성화하세요.`,description:`카메라 제어가 비활성화된 이유`},"description.cameraControlDisabledImage2Video":{message:`첫 프레임 참조 이미지를 업로드한 후에는 카메라 제어를 사용할 수 없습니다. 첫 프레임 참조 이미지를 제거한 후 다시 사용해 주세요.`,description:`카메라 제어가 비활성화된 이유 (image2video)`},"description.cameraControlNotSupported":{message:`현재 모델/모드/길이가 카메라 제어를 지원하지 않습니다. 설정을 조정한 후 다시 활성화해 주세요.`,description:`카메라 제어가 비활성화된 이유 (모델이 지원하지 않음)`},"status.pending":{message:`대기 중`,description:`작업의 대기 상태`},"status.processing":{message:`처리 중`,description:`작업의 대기 상태`},"placeholder.paddingNoise":{message:`선택하세요...`,description:`패딩 노이즈 입력의 자리 표시자`},"placeholder.select":{message:`선택`,description:`선택 필드의 자리 표시자 텍스트`},"placeholder.paddingLevel":{message:`선택하세요...`,description:`패딩 수준의 자리 표시자`},"placeholder.prompt":{message:`생성할 비디오 스타일의 프롬프트를 입력하세요. 예: moving`,description:`프롬프트 필드의 자리 표시자 텍스트`},"placeholder.negativePrompt":{message:`생성할 비디오 스타일의 부정적인 프롬프트를 입력하세요. 200자 이내`,description:`프롬프트 필드의 자리 표시자 텍스트`},"placeholder.position":{message:`선택하세요...`,description:`위치 입력의 자리 표시자`},"placeholder.aspectRatio":{message:`선택하세요...`,description:`가로 세로 비율 입력의 자리 표시자`},"placeholder.cameraType":{message:`사용하지 않음`,description:`카메라 유형 선택 자리 표시자`},"placeholder.preset":{message:`선택하세요...`,description:`프리셋 입력의 자리 표시자`},"placeholder.markerShape":{message:`선택하세요...`,description:`마커 형태 입력의 자리 표시자`},"placeholder.rotate":{message:`선택하세요...`,description:`회전 입력의 자리 표시자`},"placeholder.subMarker":{message:`선택하세요...`,description:`서브 마커 입력의 자리 표시자`},"button.precise":{message:`정확하게`,description:`Kling 비디오 생성을 위한 버튼 텍스트`},"button.creative":{message:`창의적`,description:`Kling 비디오 생성을 위한 버튼 텍스트`},"button.generate":{message:`생성`,description:`Kling 비디오 생성을 위한 버튼 텍스트`},"button.extend":{message:`비디오 확장`,description:`비디오 확장 버튼 텍스트`},"button.download":{message:`비디오 다운로드`,description:`비디오 다운로드 버튼 텍스트`},"button.uploadImageUrl":{message:`업로드`,description:`이미지 업로드 버튼 텍스트 (영어는 'Upload'로 간단히 해주세요, 'Upload Image'는 사용하지 마세요)`},"button.uploadVideoUrl":{message:`비디오 업로드`,description:`비디오 업로드 버튼 텍스트`},"button.uploadReferences":{message:`업로드`,description:`사용자가 참조를 업로드할 수 있도록 하는 버튼 텍스트`},"message.uploadReferencesExceed":{message:`최대 1장의 이미지만 업로드할 수 있습니다`,description:`업로드된 이미지 수가 제한을 초과할 때의 오류 메시지`},"message.uploadReferencesSuccess":{message:`이미지 업로드 성공`,description:`이미지 업로드가 성공했을 때의 성공 메시지`},"message.uploadReferencesError":{message:`이미지 업로드 실패, 나중에 다시 시도하세요`,description:`이미지 업로드 실패 시의 오류 메시지`},"message.endImageRequiresStart":{message:`끝 프레임 참조 이미지를 사용하기 전에 시작 프레임 참조 이미지를 먼저 업로드하세요`,description:`사용자가 시작 프레임 없이 끝 프레임만 업로드했을 때의 오류 메시지`},"message.endImageNotSupported":{message:`끝 프레임 참조 이미지는 현재 모델/모드/지속 시간에서 지원되지 않습니다. 설정을 조정하세요 (일반 요구 사항: 모드 pro, 지속 시간 5초).`,description:`끝 프레임을 업로드할 때 현재 모델이 지원하지 않는 경우의 메시지`},"message.featureNotSupportedTitle":{message:`확인 필요`,description:`매개변수를 전환할 때 기존 설정이 손실된다는 확인 팝업 제목`},"message.featureNotSupportedBody":{message:`현재 선택은 다음과 같은 활성화된 설정을 지원하지 않습니다: {fields}. 계속하면 이러한 설정이 지워집니다.`,description:`모델/모드/지속 시간을 전환한 후 설정이 손실된다는 메시지, {fields}는 실제 필드 이름으로 대체됩니다`},"message.featureRemovedNotice":{message:`지원되지 않는 설정이 지워졌습니다: {fields}`,description:`사용자가 전환 후 확인한 후의 toast 알림`},"button.confirmContinue":{message:`계속 전환`,description:`기능 손실 확인 팝업의 주 버튼`},"button.cancelSwitch":{message:`취소`,description:`기능 손실 확인 팝업의 취소 버튼`},"message.startingTask":{message:`작업 시작 중...`,description:`그림 작업이 시작될 때의 메시지`},"message.startTaskSuccess":{message:`생성 작업 시작 성공`,description:`작업 시작이 성공했을 때의 성공 메시지`},"message.startTaskFailed":{message:`작업 시작 실패, 관리자에게 문의하세요`,description:`그림 작업 시작 실패 시의 오류 메시지`},"message.usedUp":{message:`포인트가 소진되었습니다. 추가 포인트를 구매한 후 계속 사용하세요`,description:`소진되었을 때의 메시지`},"message.generating":{message:`생성 중...`,description:`이미지가 생성 중일 때의 메시지`},"message.downloadVideo":{message:`이 비디오 다운로드`,description:`이미지가 생성 중일 때의 메시지`},"message.extendVideo":{message:`이 비디오 계속 생성`,description:`이미지가 생성 중일 때의 메시지`},"message.generateFailed":{message:`이미지 생성 실패`,description:`이미지 생성 실패 시의 메시지`},"message.uploadVideoExceed":{message:`시작 프레임 이미지 수가 제한을 초과했습니다`,description:`시작 프레임 이미지 수가 제한을 초과할 때의 오류 메시지`},"message.uploadVideoSizeExceed":{message:`업로드 파일 크기는 10MB를 초과할 수 없습니다!`,description:`업로드 파일 크기가 10MB를 초과할 수 없을 때의 오류 메시지`},"message.uploadVideoTypeFailed":{message:`업로드 파일은 MP4 형식이어야 합니다!`,description:`업로드 파일이 MP4 형식이어야 할 때의 오류 메시지`},"message.uploadStartImageExceed":{message:`시작 프레임 이미지 수가 제한을 초과했습니다`,description:`시작 프레임 이미지 수가 제한을 초과할 때의 오류 메시지`},"message.uploadEndImageExceed":{message:`끝 프레임 이미지 수가 제한을 초과했습니다`,description:`끝 프레임 이미지 수가 제한을 초과할 때의 오류 메시지`},"message.uploadStartImageError":{message:`시작 프레임 이미지 업로드 실패`,description:`시작 프레임 이미지 업로드 실패 시의 오류 메시지`},"message.uploadVideoError":{message:`비디오 업로드 실패`,description:`비디오 업로드 실패 시의 오류 메시지`},"message.uploadEndImageError":{message:`끝 프레임 이미지 업로드 실패`,description:`끝 프레임 이미지 업로드 실패 시의 오류 메시지`},"message.uploadDocumentsError":{message:`문서 업로드 실패`,description:`문서 업로드 실패 시의 오류 메시지`},"message.noOperations":{message:`사용 가능한 작업이 없습니다`,description:`사용 가능한 작업이 없을 때의 메시지`},"message.noTasks":{message:`역사적 작업이 없습니다. 왼쪽에서 비디오 생성 버튼을 클릭하세요`,description:`작업이 없을 때의 메시지`},"tab.talkingPhoto":{message:`말하는 사진`,description:`Tab label: Talking Photo`},"name.talkingPhotoImage":{message:`인물 사진`,description:`Talking Photo portrait image input`},"name.talkingPhotoAudio":{message:`구동 오디오`,description:`Talking Photo driving audio input`},"name.talkingPhotoPrompt":{message:`모션 프롬프트(선택)`,description:`Talking Photo optional motion prompt`},"description.talkingPhotoImage":{message:`선명한 정면 인물 사진을 업로드하세요. 자동으로 움직이며 말하게 됩니다.`,description:`Talking Photo portrait image help text`},"description.talkingPhotoAudio":{message:`오디오 클립(mp3/wav, 5MB 이하)을 업로드하세요. 인물이 오디오에 맞춰 입을 맞춥니다.`,description:`Talking Photo driving audio help text`},"description.talkingPhotoPrompt":{message:`선택: 원하는 표정/동작을 설명하세요. 예: «카메라를 부드럽게 바라보기».`,description:`Talking Photo motion prompt help text`},"placeholder.talkingPhotoPrompt":{message:`예: 부드럽고, 차분하고, 자연스럽고, 미세한 머리 움직임`,description:`Talking Photo prompt input placeholder`},"button.generateTalkingPhoto":{message:`말하는 사진 생성`,description:`Talking Photo generate button`},"button.uploadAudio":{message:`오디오 업로드`,description:`Talking Photo upload audio button`},"message.talkingPhotoMissingInputs":{message:`먼저 인물 사진과 구동 오디오를 업로드하세요.`,description:`Talking Photo missing inputs warning`},"message.uploadAudioExceed":{message:`오디오 파일은 하나만 업로드할 수 있습니다.`,description:`Talking Photo audio count limit warning`},"message.uploadAudioError":{message:`오디오 업로드에 실패했습니다. 다시 시도하세요.`,description:`Talking Photo audio upload error`}};export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"tab.videoGeneration":{message:`Video Generation`,description:`Tab label: Video Generation`},"tab.motionControl":{message:`Motion Control`,description:`Tab label: Motion Control`},"name.motionImage":{message:`Character Reference Image`,description:`Character image input in Motion Control`},"name.motionVideo":{message:`Motion Reference Video`,description:`Reference video input in Motion Control`},"name.motionPrompt":{message:`Additional Prompt (Optional)`,description:`Additional prompt in Motion Control`},"name.characterOrientation":{message:`Character Orientation`,description:`Character orientation field`},"name.orientationImage":{message:`Follow Image`,description:`Character orientation option: Follow Image`},"name.orientationVideo":{message:`Follow Video`,description:`Character orientation option: Follow Video`},"name.keepOriginalSound":{message:`Keep Original Audio`,description:`keep_original_sound toggle`},"description.motionImage":{message:`Upload a character reference image; elements like character and background in the generated video will reference this.`,description:`motion image_url description`},"description.motionVideo":{message:`Upload a motion reference video; the character's actions in the generated video will match this video (MP4 / MOV, ≤1 minute, ≤1 GB).`,description:`motion video_url description`},"description.motionPrompt":{message:`Optional. Can include positive and negative descriptions to assist in generating effects.`,description:`motion prompt description`},"description.characterOrientation":{message:`Choosing 'Follow Video' performs better for complex actions; choosing 'Follow Image' aligns the character's orientation with the reference image, improving camera movement.`,description:`character_orientation description`},"description.motionMode":{message:`std prioritizes performance, pro prioritizes quality.`,description:`motion mode description`},"description.keepOriginalSound":{message:`Enabling keeps the original audio from the reference video; disabling outputs a video without the original audio.`,description:`keep_original_sound description`},"placeholder.motionPrompt":{message:`For example: A person is jumping. Optional.`,description:`motion prompt placeholder`},"button.generateMotion":{message:`Generate Motion Control Video`,description:`Motion Control generate button`},"message.motionMissingInputs":{message:`Please upload both the character image and motion reference video.`,description:`Prompt when inputs are missing in Motion Control`},"message.motionPricingNote":{message:`Billed per second of the generated video; the final amount scales with the reference video length.`,description:`Explains that Motion Control is billed per second`},"inspiration.title":{message:`Inspiration and Presets`,description:`Title of the Inspiration drawer`},"inspiration.openButton":{message:`Inspiration`,description:`Button to open the Inspiration drawer`},"inspiration.removeChip":{message:`Remove this preset`,description:`Button aria-label to remove selected preset in the prompt area`},"inspiration.hint":{message:`Click a phrase to automatically add it to the prompt; click again to remove it.`,description:`Usage instructions at the top of the Inspiration drawer`},"inspiration.empty":{message:`No available presets`,description:`Empty state of the Inspiration drawer`},"inspiration.selectedSummary":{message:`{count} items selected`,description:`Number of selected presets`},"inspiration.clearSelected":{message:`Clear All`,description:`Button to clear all selected presets`},"inspiration.group.cameraMovements":{message:`Camera Movements`,description:`Inspiration group: Camera Movements`},"inspiration.group.cameraSpeed":{message:`Movement Speed`,description:`Inspiration group: Movement Speed`},"inspiration.group.shotType":{message:`Shot Type`,description:`Inspiration group: Shot Type / Perspective`},"inspiration.group.light":{message:`Lighting`,description:`Inspiration group: Lighting`},"inspiration.group.frame":{message:`Framing`,description:`Inspiration group: Framing / Composition`},"inspiration.group.atmosphere":{message:`Atmosphere`,description:`Inspiration group: Atmosphere / Style`},"inspiration.chip.rotateAround":{message:`Camera rotates around the subject`,description:``},"inspiration.chip.stationary":{message:`Camera is stationary`,description:``},"inspiration.chip.handheld":{message:`Handheld shooting`,description:``},"inspiration.chip.zoomOut":{message:`Camera zooms out`,description:``},"inspiration.chip.zoomIn":{message:`Camera zooms in`,description:``},"inspiration.chip.follow":{message:`Camera follows the subject`,description:``},"inspiration.chip.panRight":{message:`Camera pans right`,description:``},"inspiration.chip.tiltUp":{message:`Camera tilts up`,description:``},"inspiration.chip.tiltDown":{message:`Camera tilts down`,description:``},"inspiration.chip.orbit":{message:`Camera orbits in`,description:``},"inspiration.chip.speedSlow":{message:`Camera movement slow`,description:``},"inspiration.chip.speedMedium":{message:`Camera movement medium`,description:``},"inspiration.chip.speedFast":{message:`Camera movement fast`,description:``},"inspiration.chip.shotClose":{message:`Close-up shot`,description:``},"inspiration.chip.shotMedium":{message:`Medium shot`,description:``},"inspiration.chip.shotLong":{message:`Long shot`,description:``},"inspiration.chip.shotLowAngle":{message:`Low angle shot`,description:``},"inspiration.chip.shotHighAngle":{message:`High angle shot`,description:``},"inspiration.chip.shotShallowDof":{message:`Shallow Depth of Field`,description:``},"inspiration.chip.shotFront":{message:`Front View`,description:``},"inspiration.chip.shotProfile":{message:`Side View`,description:``},"inspiration.chip.shotCloseUp":{message:`Close-Up`,description:``},"inspiration.chip.shotDrone":{message:`Drone View`,description:``},"inspiration.chip.lightSunlight":{message:`Sunlight`,description:``},"inspiration.chip.lightSoft":{message:`Soft Light`,description:``},"inspiration.chip.lightNeon":{message:`Neon Light`,description:``},"inspiration.chip.lightWarm":{message:`Warm Light`,description:``},"inspiration.chip.lightNature":{message:`Natural Light`,description:``},"inspiration.chip.lightCandle":{message:`Candlelight`,description:``},"inspiration.chip.lightCityNight":{message:`City Night Lights`,description:``},"inspiration.chip.frameRichDetails":{message:`Rich Details`,description:``},"inspiration.chip.frameSimpleBg":{message:`Simple Background`,description:``},"inspiration.chip.atmosphereMysterious":{message:`Mysterious Atmosphere`,description:``},"inspiration.chip.atmospherePeaceful":{message:`Peaceful Atmosphere`,description:``},"inspiration.chip.atmosphereHeartwarming":{message:`Heartwarming`,description:``},"inspiration.chip.atmosphereVivid":{message:`Vivid`,description:``},"inspiration.chip.atmosphereColorful":{message:`Colorful`,description:``},"name.taskId":{message:`Task ID`,description:`The ID of the task`},"name.type":{message:`Type`,description:`Content type of the Kling video to be generated, such as 'link', 'text', etc.`},"name.modeStd":{message:`Standard (720p)`,description:`Standard mode for Kling video (outputs 720p)`},"name.modePro":{message:`High Quality (1080p)`,description:`High quality mode for Kling video (outputs 1080p)`},"name.mode4k":{message:`Native 4K`,description:`Kling 4K mode (supported only by v3 / v3-Omni)`},"name.cameraControl":{message:`Camera Control`,description:`Type and parameters of camera control`},"name.cameraTypeNone":{message:`None`,description:`No camera control used`},"name.cameraTypeSimple":{message:`Custom (6 Dimensions)`,description:`Using custom six-dimensional parameters`},"name.cameraTypeDownBack":{message:`Down and Back`,description:`Preset camera movement: down and back`},"name.cameraTypeForwardUp":{message:`Forward and Up`,description:`Preset camera movement: forward and up`},"name.cameraTypeLeftTurnForward":{message:`Left Turn and Forward`,description:`Preset camera movement: left turn and forward`},"name.cameraTypeRightTurnForward":{message:`Right Turn and Forward`,description:`Preset camera movement: right turn and forward`},"name.cc_horizontal":{message:`Horizontal Movement`,description:`camera_control.config.horizontal`},"name.cc_vertical":{message:`Vertical Movement`,description:`camera_control.config.vertical`},"name.cc_pan":{message:`Pan`,description:`camera_control.config.pan`},"name.cc_tilt":{message:`Tilt`,description:`camera_control.config.tilt`},"name.cc_roll":{message:`Roll`,description:`camera_control.config.roll`},"name.cc_zoom":{message:`Zoom`,description:`camera_control.config.zoom`},"name.failure":{message:`Failure`,description:`The failure status of the task`},"name.failureReason":{message:`Failure Reason`,description:`The reason for the task failure`},"name.status":{message:`Status`,description:`The status of the task`},"name.traceId":{message:`Trace ID`,description:`The trace ID of the task`},"name.elapsed":{message:`Elapsed Time`,description:`The elapsed time of the task (in seconds)`},"name.createdAt":{message:`Created At`,description:`The date and time the Kling video was generated`},"name.cfgScale":{message:`Freedom Level`,description:`The freedom level parameter for video generation (0-1), larger values are closer to the reference`},"name.generateAudio":{message:`Generate Audio Sync`,description:`Whether to generate audio sync, supports kling-v3, kling-v3-omni, and kling-v2-6 (pro mode)`},"name.startImage":{message:`First Frame`,description:`Form field label: first frame reference image`},"name.negativePrompt":{message:`Negative Prompt`,description:`Negative text prompt for video generation`},"name.endImage":{message:`Last Frame`,description:`Form field label: last frame reference image`},"name.videoUrl":{message:`Custom Video`,description:`Custom video`},"name.prompt":{message:`Video Prompt`,description:`Prompt for content input`},"name.duration":{message:`Video Duration`,description:`The duration of the video`},"name.ingredients":{message:`Multi-Image`,description:`Multi-image video creation toggle/label`},"name.model":{message:`Model Version`,description:`The model version used to generate the video`},"name.ratio":{message:`Video Ratio`,description:`The video ratio used to generate the video`},"name.mode":{message:`Video Mode`,description:`The mode used to generate the video`},"name.perSecond":{message:`second`,description:`Unit suffix for per-second pricing, e.g. "1.20 Credit/second"`},"name.effect":{message:`Video Effect`,description:`The name of the style parameter used to switch between different versions or styles of the model`},"name.ingredientsModel":{message:`Ingredients Model`,description:`The model version used to generate the video`},"name.klingBot":{message:`Kling Bot`,description:`The name of the Kling video generator`},"description.ingredients":{message:`Enable this button if you want to upload multiple images to generate your video.`,description:`Description of the 'ingredients' parameter`},"description.imageUrl":{message:`In the task of creating a video from multiple images, multiple images must be uploaded.`,description:`Description of the 'imageUrl' parameter`},"description.prompt":{message:`Prompt words for generating Kling videos`,description:`Description of the 'prompt' parameter`},"description.negativePrompt":{message:`Negative text prompt, optional, must not exceed 200 characters`,description:`Description of the 'negativePrompt' parameter`},"description.uploadStartImage":{message:`Upload the first frame image as a reference for generation; the final video will reference the first frame.`,description:`Description of the upload reference parameter`},"description.uploadEndImage":{message:`Upload the last frame image as a reference for generation; the final video will reference the last frame.`,description:`Description of the upload reference parameter`},"description.cfgScale":{message:`The degree of freedom for generating the video, optional [0,1]. The larger the value, the stronger the correlation.`,description:`Description of the upload reference parameter`},"description.mode":{message:`std has better performance, pro has better quality; 4K is only supported by v3 / v3-Omni and cannot be used with camera control simultaneously.`,description:`Overall description of the mode field`},"description.mode4kRequiresV3":{message:`Only kling-v3 / kling-v3-omni is supported`,description:`Reason for 4K option being disabled (model mismatch)`},"description.mode4kIncompatibleCamera":{message:`Camera control is enabled and cannot be used with 4K simultaneously.`,description:`Reason for 4K option being disabled (camera control set)`},"description.duration":{message:`The standard model only supports 5/10 seconds; v3 / v3-Omni supports 3/5/8/10/12/15 seconds.`,description:`Overall description of the duration field`},"description.durationV3Only":{message:`Only v3 / v3-Omni is supported`,description:`Reason for duration option being disabled`},"description.generateAudio":{message:`Synthesize sound effects while generating the video. Only kling-v3 / kling-v3-omni / kling-v2-6 (pro mode) is supported.`,description:`Description of the audio effect switch (enabled)`},"description.generateAudioUnsupported":{message:`The current model does not support synchronized sound effects; only kling-v3 / kling-v3-omni / kling-v2-6 (pro mode) is available.`,description:`Description of the audio effect switch (disabled)`},"description.cameraControl":{message:`Control the direction of camera movement. Selecting 'Custom' allows fine-tuning across 6 dimensions, each value [-1, 1].`,description:`Description of camera control`},"description.cameraControlDisabled4k":{message:`4K mode is selected, camera control is unavailable; please switch to std / pro and then enable.`,description:`Reason for camera control being disabled`},"description.cameraControlDisabledImage2Video":{message:`Camera control is not supported when a start-frame image is uploaded (image-to-video). Remove the start-frame image to use camera control.`,description:`Reason for camera control being disabled (image2video)`},"description.cameraControlNotSupported":{message:`Camera control is not supported by the current model / mode / duration combination. Adjust the configuration first to enable it.`,description:`Reason for camera control being disabled (model does not support it)`},"status.pending":{message:`Pending`,description:`The waiting status of the task`},"status.processing":{message:`Processing`,description:`The processing status of the task`},"placeholder.paddingNoise":{message:`Please select...`,description:`Placeholder for padding noise input`},"placeholder.select":{message:`Select`,description:`Placeholder text for select fields`},"placeholder.paddingLevel":{message:`Please select...`,description:`Placeholder for padding level`},"placeholder.prompt":{message:`Enter prompt words for the video style, e.g., moving`,description:`Placeholder text in the prompt field`},"placeholder.negativePrompt":{message:`Enter negative prompt words for the video style, up to 200 characters`,description:`Placeholder text in the negative prompt field`},"placeholder.position":{message:`Please select...`,description:`Placeholder for position input`},"placeholder.aspectRatio":{message:`Please select...`,description:`Placeholder for aspect ratio input`},"placeholder.cameraType":{message:`Not used`,description:`Placeholder for camera type selection`},"placeholder.preset":{message:`Please select...`,description:`Placeholder for preset input`},"placeholder.markerShape":{message:`Please select...`,description:`Placeholder for marker shape input`},"placeholder.rotate":{message:`Please select...`,description:`Placeholder for rotation input`},"placeholder.subMarker":{message:`Please select...`,description:`Placeholder for sub-marker input`},"button.precise":{message:`Precise`,description:`Button text for generating Kling videos`},"button.creative":{message:`Creative`,description:`Button text for generating Kling videos`},"button.generate":{message:`Generate`,description:`Button text for generating Kling videos`},"button.extend":{message:`Extend Video`,description:`Text for the button that allows the user to extend the video`},"button.download":{message:`Download Video`,description:`Text for the button to download the video`},"button.uploadImageUrl":{message:`Upload`,description:`Text for the button to upload an image (simplified to 'Upload', do not use 'Upload Image')`},"button.uploadVideoUrl":{message:`Upload Video`,description:`Text for the button to upload a video`},"button.uploadReferences":{message:`Upload`,description:`Text for the button that allows users to upload references`},"message.uploadReferencesExceed":{message:`You can upload a maximum of 1 image`,description:`Error message when the number of uploaded images exceeds the limit`},"message.uploadReferencesSuccess":{message:`Image uploaded successfully`,description:`Success message when an image is uploaded successfully`},"message.uploadReferencesError":{message:`Image upload failed, please try again later`,description:`Error message when image upload fails`},"message.endImageRequiresStart":{message:`Please upload the first frame reference image before using the end frame reference image`,description:`Error message when the user has only uploaded the end frame without the first frame`},"message.endImageNotSupported":{message:`The end frame reference image is not supported by the current model/mode/duration, please adjust the settings (common requirements: mode pro, duration 5s).`,description:`Message when the current model does not support the uploaded end frame`},"message.featureNotSupportedTitle":{message:`Confirmation Required`,description:`Title for the confirmation popup when switching parameters will lose existing settings`},"message.featureNotSupportedBody":{message:`The current selection does not support the following enabled settings: {fields}. Continuing will clear these settings.`,description:`Message indicating that switching model/mode/duration will lose existing settings, {fields} will be replaced with actual field names`},"message.featureRemovedNotice":{message:`Cleared unsupported settings: {fields}`,description:`Toast notification after the user confirms the switch`},"button.confirmContinue":{message:`Continue Switching`,description:`Main button for the feature loss confirmation popup`},"button.cancelSwitch":{message:`Cancel`,description:`Cancel button for the feature loss confirmation popup`},"message.startingTask":{message:`Starting task...`,description:`Message when the drawing task starts`},"message.startTaskSuccess":{message:`Task initiated successfully`,description:`Success message when the task is successfully started`},"message.startTaskFailed":{message:`Failed to initiate task, please contact the administrator`,description:`Error message when starting the drawing task fails`},"message.usedUp":{message:`Your credits are exhausted, please purchase more credits to continue using`,description:`Message when credits are exhausted`},"message.generating":{message:`Generating...`,description:`Message when the image is being generated`},"message.downloadVideo":{message:`Download This Video`,description:`Message when the image is being generated`},"message.extendVideo":{message:`Continue Generating This Video`,description:`Message when the image is being generated`},"message.generateFailed":{message:`Image generation failed`,description:`Message when image generation fails`},"message.uploadVideoExceed":{message:`The number of uploaded first frame images exceeds the limit`,description:`Error message when the number of uploaded first frame images exceeds the limit`},"message.uploadVideoSizeExceed":{message:`Uploaded file size cannot exceed 10MB!`,description:`Error message when the uploaded file size exceeds 10MB`},"message.uploadVideoTypeFailed":{message:`Uploaded file must be in MP4 format!`,description:`Error message when the uploaded file is not in MP4 format`},"message.uploadStartImageExceed":{message:`The number of uploaded first frame images exceeds the limit`,description:`Error message when the number of uploaded first frame images exceeds the limit`},"message.uploadEndImageExceed":{message:`The number of uploaded end frame images exceeds the limit`,description:`Error message when the number of uploaded end frame images exceeds the limit`},"message.uploadStartImageError":{message:`Failed to upload first frame image`,description:`Error message when the first frame image upload fails`},"message.uploadVideoError":{message:`Failed to upload video`,description:`Error message when the first frame image upload fails`},"message.uploadEndImageError":{message:`Failed to upload end frame image`,description:`Error message when the end frame image upload fails`},"message.uploadDocumentsError":{message:`Failed to upload document`,description:`Error message when document upload fails`},"message.noOperations":{message:`No available operations`,description:`Message when there are no available operations`},"message.noTasks":{message:`No historical tasks, please click on the left to generate a video`,description:`Message when there are no tasks`},"tab.talkingPhoto":{message:`Talking Photo`,description:`Tab label: Talking Photo`},"name.talkingPhotoImage":{message:`Portrait Photo`,description:`Talking Photo portrait image input`},"name.talkingPhotoAudio":{message:`Driving Audio`,description:`Talking Photo driving audio input`},"name.talkingPhotoPrompt":{message:`Motion Prompt (optional)`,description:`Talking Photo optional motion prompt`},"description.talkingPhotoImage":{message:`Upload a clear frontal portrait; it will be animated and made to speak.`,description:`Talking Photo portrait image help text`},"description.talkingPhotoAudio":{message:`Upload an audio clip (mp3/wav, <=5MB); the character lip-syncs to it.`,description:`Talking Photo driving audio help text`},"description.talkingPhotoPrompt":{message:`Optional: describe the desired expression/motion, e.g. "look gently at the camera".`,description:`Talking Photo motion prompt help text`},"placeholder.talkingPhotoPrompt":{message:`e.g. gentle, calm, natural, subtle head movement`,description:`Talking Photo prompt input placeholder`},"button.generateTalkingPhoto":{message:`Generate Talking Photo`,description:`Talking Photo generate button`},"button.uploadAudio":{message:`Upload Audio`,description:`Talking Photo upload audio button`},"message.talkingPhotoMissingInputs":{message:`Please upload a portrait photo and a driving audio first.`,description:`Talking Photo missing inputs warning`},"message.uploadAudioExceed":{message:`Only one audio file is allowed.`,description:`Talking Photo audio count limit warning`},"message.uploadAudioError":{message:`Audio upload failed, please retry.`,description:`Talking Photo audio upload error`}};export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={"tab.videoGeneration":{message:`Generación de video`,description:`Tab etiqueta: Generación de Video`},"tab.motionControl":{message:`Control de movimiento`,description:`Tab etiqueta: Control de Movimiento`},"name.motionImage":{message:`Imagen de referencia`,description:`Entrada de imagen de personaje en Control de Movimiento`},"name.motionVideo":{message:`Video de referencia`,description:`Entrada de video de referencia en Control de Movimiento`},"name.motionPrompt":{message:`Sugerencias adicionales (opcional)`,description:`Sugerencias adicionales en Control de Movimiento`},"name.characterOrientation":{message:`Orientación del personaje`,description:`Campo de orientación del personaje`},"name.orientationImage":{message:`Imagen de seguimiento`,description:`Opción de orientación del personaje: imagen de seguimiento`},"name.orientationVideo":{message:`Video de seguimiento`,description:`Opción de orientación del personaje: video de seguimiento`},"name.keepOriginalSound":{message:`Conservar audio original`,description:`Interruptor de conservar audio original`},"description.motionImage":{message:`Sube una imagen de referencia del personaje, los elementos como el personaje y el fondo en el video se basarán en esto.`,description:`Descripción de motion image_url`},"description.motionVideo":{message:`Sube un video de referencia, los movimientos del personaje en el video generado serán consistentes con este video (MP4 / MOV, ≤1 minuto, ≤1 GB)`,description:`Descripción de motion video_url`},"description.motionPrompt":{message:`Opcional. Puede incluir descripciones positivas y negativas para ayudar a generar el efecto.`,description:`Descripción de motion prompt`},"description.characterOrientation":{message:`Al seleccionar 'Video de seguimiento', los movimientos complejos se representan mejor; al seleccionar 'Imagen de seguimiento', la orientación del personaje será consistente con la imagen de referencia, y el movimiento de la cámara se representará mejor.`,description:`Descripción de character_orientation`},"description.motionMode":{message:`std prioriza rendimiento, pro prioriza calidad de imagen`,description:`Descripción de motion mode`},"description.keepOriginalSound":{message:`Si está activado, se conservará el audio original del video de referencia; si está desactivado, el video de salida no incluirá audio original.`,description:`Descripción de keep_original_sound`},"placeholder.motionPrompt":{message:`Por ejemplo: una persona está saltando. Opcional.`,description:`Placeholder para motion prompt`},"button.generateMotion":{message:`Generar video de control de movimiento`,description:`Botón de generación en Control de Movimiento`},"message.motionMissingInputs":{message:`Por favor, sube tanto la imagen del personaje como el video de referencia.`,description:`Mensaje cuando faltan entradas en Control de Movimiento`},"message.motionPricingNote":{message:`Se cobra por segundo del vídeo generado; el importe final varía según la duración del vídeo de referencia.`,description:`Explains that Motion Control is billed per second`},"inspiration.title":{message:`Inspiración y preajustes`,description:`Título del cajón de Inspiración`},"inspiration.openButton":{message:`Inspiración`,description:`Botón para abrir el cajón de Inspiración`},"inspiration.removeChip":{message:`Eliminar este preajuste`,description:`Botón aria-label para eliminar un preajuste seleccionado en la zona de sugerencias`},"inspiration.hint":{message:`Haz clic en la frase para agregarla automáticamente a las sugerencias; haz clic nuevamente para eliminarla.`,description:`Instrucciones de uso en la parte superior del cajón de Inspiración`},"inspiration.empty":{message:`No hay preajustes disponibles`,description:`Estado vacío del cajón de Inspiración`},"inspiration.selectedSummary":{message:`Seleccionados {count} elementos`,description:`Cantidad de preajustes seleccionados`},"inspiration.clearSelected":{message:`Eliminar todo`,description:`Botón para eliminar todos los preajustes seleccionados`},"inspiration.group.cameraMovements":{message:`Movimientos de cámara`,description:`Grupo de Inspiración: Movimientos de cámara`},"inspiration.group.cameraSpeed":{message:`Velocidad de movimiento`,description:`Grupo de Inspiración: Velocidad de movimiento`},"inspiration.group.shotType":{message:`Tipo de plano`,description:`Grupo de Inspiración: Plano / Ángulo`},"inspiration.group.light":{message:`Luz y sombra`,description:`Grupo de Inspiración: Luz y sombra`},"inspiration.group.frame":{message:`Composición`,description:`Grupo de Inspiración: Composición`},"inspiration.group.atmosphere":{message:`Atmósfera`,description:`Grupo de Inspiración: Atmósfera / Estilo`},"inspiration.chip.rotateAround":{message:`La cámara gira alrededor del sujeto`,description:``},"inspiration.chip.stationary":{message:`Cámara estática`,description:``},"inspiration.chip.handheld":{message:`Grabación a mano`,description:``},"inspiration.chip.zoomOut":{message:`Alejar la cámara`,description:``},"inspiration.chip.zoomIn":{message:`Acercar la cámara`,description:``},"inspiration.chip.follow":{message:`La cámara sigue al sujeto`,description:``},"inspiration.chip.panRight":{message:`Mover la cámara a la derecha`,description:``},"inspiration.chip.tiltUp":{message:`Inclinar la cámara hacia arriba`,description:``},"inspiration.chip.tiltDown":{message:`Inclinar la cámara hacia abajo`,description:``},"inspiration.chip.orbit":{message:`La cámara avanza en órbita`,description:``},"inspiration.chip.speedSlow":{message:`Movimiento de cámara lento`,description:``},"inspiration.chip.speedMedium":{message:`Movimiento de cámara medio`,description:``},"inspiration.chip.speedFast":{message:`Movimiento de cámara rápido`,description:``},"inspiration.chip.shotClose":{message:`Primer plano`,description:``},"inspiration.chip.shotMedium":{message:`Plano medio`,description:``},"inspiration.chip.shotLong":{message:`Plano largo`,description:``},"inspiration.chip.shotLowAngle":{message:`Toma en ángulo bajo`,description:``},"inspiration.chip.shotHighAngle":{message:`Toma en ángulo alto`,description:``},"inspiration.chip.shotShallowDof":{message:`Profundidad de campo superficial`,description:``},"inspiration.chip.shotFront":{message:`Vista frontal`,description:``},"inspiration.chip.shotProfile":{message:`Vista lateral`,description:``},"inspiration.chip.shotCloseUp":{message:`Primer plano`,description:``},"inspiration.chip.shotDrone":{message:`Vista de dron`,description:``},"inspiration.chip.lightSunlight":{message:`Luz solar`,description:``},"inspiration.chip.lightSoft":{message:`Luz suave`,description:``},"inspiration.chip.lightNeon":{message:`Luz de neón`,description:``},"inspiration.chip.lightWarm":{message:`Luz cálida`,description:``},"inspiration.chip.lightNature":{message:`Luz natural`,description:``},"inspiration.chip.lightCandle":{message:`Luz de vela`,description:``},"inspiration.chip.lightCityNight":{message:`Luces nocturnas de la ciudad`,description:``},"inspiration.chip.frameRichDetails":{message:`Detalles ricos`,description:``},"inspiration.chip.frameSimpleBg":{message:`Fondo simple`,description:``},"inspiration.chip.atmosphereMysterious":{message:`Atmósfera misteriosa`,description:``},"inspiration.chip.atmospherePeaceful":{message:`Atmósfera tranquila`,description:``},"inspiration.chip.atmosphereHeartwarming":{message:`Cálido y reconfortante`,description:``},"inspiration.chip.atmosphereVivid":{message:`Vivo`,description:``},"inspiration.chip.atmosphereColorful":{message:`Colorido`,description:``},"name.taskId":{message:`ID de tarea`,description:`ID de la tarea`},"name.type":{message:`Tipo`,description:`Tipo de contenido del video Kling a generar, como 'enlace', 'texto', etc.`},"name.modeStd":{message:`Estándar (720p)`,description:`Modo estándar del video Kling (salida 720p)`},"name.modePro":{message:`Alta calidad (1080p)`,description:`Modo de alta calidad del video Kling (salida 1080p)`},"name.mode4k":{message:`Nativo 4K`,description:`Modo Kling 4K (solo soportado en v3 / v3-Omni)`},"name.cameraControl":{message:`Control de cámara`,description:`Tipo y parámetros de control de cámara`},"name.cameraTypeNone":{message:`No usar`,description:`No usar control de cámara`},"name.cameraTypeSimple":{message:`Personalizado (6 dimensiones)`,description:`Usar parámetros personalizados de seis dimensiones`},"name.cameraTypeDownBack":{message:`Bajar y retroceder`,description:`Preset de cámara: bajar y retroceder`},"name.cameraTypeForwardUp":{message:`Avanzar y subir`,description:`Preset de cámara: avanzar y subir`},"name.cameraTypeLeftTurnForward":{message:`Girar a la izquierda y avanzar`,description:`Preset de cámara: girar a la izquierda y avanzar`},"name.cameraTypeRightTurnForward":{message:`Girar a la derecha y avanzar`,description:`Preset de cámara: girar a la derecha y avanzar`},"name.cc_horizontal":{message:`Movimiento horizontal`,description:`camera_control.config.horizontal`},"name.cc_vertical":{message:`Movimiento vertical`,description:`camera_control.config.vertical`},"name.cc_pan":{message:`Paneo horizontal`,description:`camera_control.config.pan`},"name.cc_tilt":{message:`Inclinación vertical`,description:`camera_control.config.tilt`},"name.cc_roll":{message:`Rodar`,description:`camera_control.config.roll`},"name.cc_zoom":{message:`Zoom`,description:`camera_control.config.zoom`},"name.failure":{message:`Fallo`,description:`Estado de fallo de la tarea`},"name.failureReason":{message:`Razón del fallo`,description:`Razón del fallo de la tarea`},"name.status":{message:`Estado`,description:`Estado de la tarea`},"name.traceId":{message:`ID de seguimiento`,description:`ID de seguimiento de la tarea`},"name.elapsed":{message:`Tiempo transcurrido`,description:`Tiempo transcurrido de la tarea (en segundos)`},"name.createdAt":{message:`Fecha de creación`,description:`Fecha y hora de generación del video Kling`},"name.cfgScale":{message:`Nivel de libertad`,description:`Parámetro de libertad para generar el video (0-1), cuanto mayor sea el valor, más se asemejará a la referencia`},"name.generateAudio":{message:`Generar audio sincronizado`,description:`Si se debe generar audio sincronizado, soporta kling-v3, kling-v3-omni y kling-v2-6 (modo pro)`},"name.startImage":{message:`Imagen de referencia inicial`,description:`Etiqueta del campo del formulario: imagen de referencia inicial`},"name.negativePrompt":{message:`Palabras clave negativas`,description:`Texto de indicación negativa para generar el video`},"name.endImage":{message:`Imagen de referencia final`,description:`Etiqueta del campo del formulario: imagen de referencia final`},"name.videoUrl":{message:`Video personalizado`,description:`Video personalizado`},"name.prompt":{message:`Indicación de video`,description:`Indicación para la entrada de contenido`},"name.duration":{message:`Duración del video`,description:`Duración del video`},"name.ingredients":{message:`Crear video con múltiples imágenes`,description:`Interruptor/etiqueta para crear video con múltiples imágenes`},"name.model":{message:`Versión del modelo`,description:`Modelo utilizado para generar el video`},"name.ratio":{message:`Relación de aspecto`,description:`El aspecto de video utilizado para generar el video`},"name.mode":{message:`Modo de video`,description:`El modo utilizado para generar el video`},"name.perSecond":{message:`segundo`,description:`Unit suffix for per-second pricing`},"name.effect":{message:`Efecto de video`,description:`Nombre del parámetro de estilo para alternar entre diferentes versiones o estilos del modelo`},"name.ingredientsModel":{message:`Modelo de ingredientes`,description:`La versión del modelo utilizada para generar el video`},"name.klingBot":{message:`Kling Bot`,description:`Nombre del generador de video Kling`},"description.ingredients":{message:`Si desea subir varias imágenes para generar su propio video, active este botón.`,description:`Descripción del parámetro 'ingredients'`},"description.imageUrl":{message:`En la tarea de crear un video con múltiples imágenes, debe subir varias imágenes.`,description:`Descripción del parámetro 'imageUrl'`},"description.prompt":{message:`Palabras clave para generar el video Kling`,description:`Descripción del parámetro 'prompt'`},"description.negativePrompt":{message:`Texto de indicación negativa, opcional, no más de 200 caracteres`,description:`Descripción del parámetro 'negativePrompt'`},"description.uploadStartImage":{message:`Suba la imagen del primer fotograma como referencia para la generación; el video final se generará en base al primer fotograma.`,description:`Descripción del parámetro de referencia de carga`},"description.uploadEndImage":{message:`Suba la imagen del último fotograma como referencia para la generación; el video final se generará en base al último fotograma.`,description:`Descripción del parámetro de referencia de carga`},"description.cfgScale":{message:`Grado de libertad para generar el video, opcional [0,1]. Cuanto mayor sea el valor, mayor será la correlación.`,description:`Descripción del parámetro de referencia de carga`},"description.mode":{message:`std tiene mejor rendimiento, pro tiene mejor calidad de imagen; 4K solo es compatible con v3 / v3-Omni y no se puede usar con control de cámara al mismo tiempo.`,description:`Descripción general del campo de modo`},"description.mode4kRequiresV3":{message:`Solo compatible con kling-v3 / kling-v3-omni`,description:`Razón por la que la opción 4K está deshabilitada (modelo no coincide)`},"description.mode4kIncompatibleCamera":{message:`El control de cámara está activado y no se puede usar con 4K al mismo tiempo.`,description:`Razón por la que la opción 4K está deshabilitada (control de cámara configurado)`},"description.duration":{message:`El modelo normal solo admite 5/10 segundos; v3 / v3-Omni admite 3/5/8/10/12/15 segundos.`,description:`Descripción general del campo de duración`},"description.durationV3Only":{message:`Solo compatible con v3 / v3-Omni`,description:`Razón por la que la opción de duración está deshabilitada`},"description.generateAudio":{message:`Sintetizar efectos de sonido mientras se genera el video. Solo compatible con kling-v3 / kling-v3-omni / kling-v2-6 (modo pro).`,description:`Descripción del interruptor de efectos de sonido (habilitado)`},"description.generateAudioUnsupported":{message:`El modelo actual no admite efectos de sonido sincronizados, solo kling-v3 / kling-v3-omni / kling-v2-6 (modo pro) están disponibles.`,description:`Descripción del interruptor de efectos de sonido (deshabilitado)`},"description.cameraControl":{message:`Controlar la dirección del movimiento de la cámara. Seleccione 'Personalizado' para ajustar en 6 dimensiones, cada valor entre [-1, 1].`,description:`Descripción del control de cámara`},"description.cameraControlDisabled4k":{message:`Se ha seleccionado el modo 4K, el control de cámara no está disponible, cambie a std / pro y luego habilítelo.`,description:`Razón por la que el control de cámara está deshabilitado`},"description.cameraControlDisabledImage2Video":{message:`El control de cámara está deshabilitado después de subir la imagen de referencia del primer fotograma. Por favor, elimine la imagen de referencia del primer fotograma antes de continuar.`,description:`Razón por la que el control de cámara está deshabilitado (image2video)`},"description.cameraControlNotSupported":{message:`El modelo/modo/duración actual no soporta el control de cámara. Por favor, ajuste la configuración antes de habilitarlo.`,description:`Razón por la que el control de cámara está deshabilitado (modelo no soportado)`},"status.pending":{message:`En espera`,description:`Estado de espera de la tarea`},"status.processing":{message:`Procesando`,description:`Estado de espera de la tarea`},"placeholder.paddingNoise":{message:`Seleccione...`,description:`Marcador de posición para la entrada de ruido de relleno`},"placeholder.select":{message:`Seleccionar`,description:`Texto de marcador de posición en el campo de selección`},"placeholder.paddingLevel":{message:`Seleccione...`,description:`Marcador de posición para el nivel de relleno`},"placeholder.prompt":{message:`Ingrese las palabras clave para el estilo del video a generar, por ejemplo: moving`,description:`Texto de marcador de posición en el campo de indicaciones`},"placeholder.negativePrompt":{message:`Ingrese las palabras clave negativas para el estilo del video a generar, no más de 200 caracteres`,description:`Texto de marcador de posición en el campo de indicaciones`},"placeholder.position":{message:`Seleccione...`,description:`Marcador de posición para la entrada de posición`},"placeholder.aspectRatio":{message:`Seleccione...`,description:`Marcador de posición para la entrada de relación de aspecto`},"placeholder.cameraType":{message:`No usar`,description:`Marcador de posición para la selección de tipo de cámara`},"placeholder.preset":{message:`Seleccione...`,description:`Marcador de posición para la entrada de preajuste`},"placeholder.markerShape":{message:`Seleccione...`,description:`Marcador de posición para la entrada de forma de marcador`},"placeholder.rotate":{message:`Seleccione...`,description:`Marcador de posición para la entrada de rotación`},"placeholder.subMarker":{message:`Seleccione...`,description:`Marcador de posición para la entrada de sub-marcador`},"button.precise":{message:`Preciso`,description:`Texto del botón para generar el video Kling`},"button.creative":{message:`Creativo`,description:`Texto del botón para generar el video Kling`},"button.generate":{message:`Generar`,description:`Texto del botón para generar el video Kling`},"button.extend":{message:`Extender video`,description:`Texto del botón para extender el video`},"button.download":{message:`Descargar video`,description:`Texto del botón para descargar el video`},"button.uploadImageUrl":{message:`Subir`,description:`Texto del botón para subir una imagen (simplificado a 'Subir')`},"button.uploadVideoUrl":{message:`Subir video`,description:`Texto del botón para subir un video`},"button.uploadReferences":{message:`Subir`,description:`Texto del botón que permite al usuario subir referencias`},"message.uploadReferencesExceed":{message:`Se puede subir un máximo de 1 imagen`,description:`Mensaje de error cuando se excede el límite de imágenes subidas`},"message.uploadReferencesSuccess":{message:`Imagen subida con éxito`,description:`Mensaje de éxito al subir una imagen`},"message.uploadReferencesError":{message:`Error al subir la imagen, por favor intente de nuevo más tarde`,description:`Mensaje de error cuando la subida de la imagen falla`},"message.endImageRequiresStart":{message:`Por favor, suba primero la imagen de inicio antes de usar la imagen de fin`,description:`Mensaje de error cuando el usuario solo ha subido la imagen de fin sin la de inicio`},"message.endImageNotSupported":{message:`La imagen de fin no es compatible con el modelo/modo/duración actual, ajuste la configuración primero (requisitos comunes: modo pro, duración 5s).`,description:`Mensaje cuando la imagen de fin no es compatible con el modelo actual`},"message.featureNotSupportedTitle":{message:`Confirmación requerida`,description:`Título del cuadro de confirmación al cambiar parámetros que perderán configuraciones existentes`},"message.featureNotSupportedBody":{message:`La selección actual no es compatible con las siguientes configuraciones habilitadas: {fields}. Continuar limpiará estas configuraciones.`,description:`Mensaje que indica que se perderán configuraciones al cambiar modelo/modo/duración, {fields} será reemplazado por los nombres de los campos reales`},"message.featureRemovedNotice":{message:`Se han limpiado las configuraciones no compatibles: {fields}`,description:`Notificación toast al confirmar el cambio por parte del usuario`},"button.confirmContinue":{message:`Continuar cambio`,description:`Botón principal del cuadro de confirmación de pérdida de características`},"button.cancelSwitch":{message:`Cancelar`,description:`Botón de cancelar en el cuadro de confirmación de pérdida de características`},"message.startingTask":{message:`Iniciando tarea...`,description:`Mensaje al comenzar la tarea de dibujo`},"message.startTaskSuccess":{message:`Tarea de generación iniciada con éxito`,description:`Mensaje de éxito al iniciar la tarea`},"message.startTaskFailed":{message:`Error al iniciar la tarea, por favor contacte al administrador`,description:`Mensaje de error al fallar al iniciar la tarea de dibujo`},"message.usedUp":{message:`Se han agotado sus puntos, por favor compre más puntos para continuar usando`,description:`Mensaje cuando se han agotado los puntos`},"message.generating":{message:`Generando...`,description:`Mensaje mientras se genera la imagen`},"message.downloadVideo":{message:`Descargar este video`,description:`Mensaje mientras se genera la imagen`},"message.extendVideo":{message:`Continuar generando este video`,description:`Mensaje mientras se genera la imagen`},"message.generateFailed":{message:`Error al generar la imagen`,description:`Mensaje cuando la generación de la imagen falla`},"message.uploadVideoExceed":{message:`Se ha excedido el límite de imágenes de inicio`,description:`Mensaje de error cuando se excede el límite de imágenes de inicio`},"message.uploadVideoSizeExceed":{message:`¡El tamaño del archivo subido no puede exceder 10 MB!`,description:`Mensaje de error cuando el tamaño del archivo subido excede 10 MB`},"message.uploadVideoTypeFailed":{message:`¡El archivo subido debe ser en formato MP4!`,description:`Mensaje de error cuando el archivo subido no es en formato MP4`},"message.uploadStartImageExceed":{message:`Se ha excedido el límite de imágenes de inicio`,description:`Mensaje de error cuando se excede el límite de imágenes de inicio`},"message.uploadEndImageExceed":{message:`Se ha excedido el límite de imágenes de fin`,description:`Mensaje de error cuando se excede el límite de imágenes de fin`},"message.uploadStartImageError":{message:`Error al subir la imagen de inicio`,description:`Mensaje de error al fallar al subir la imagen de inicio`},"message.uploadVideoError":{message:`Error al subir el video`,description:`Mensaje de error al fallar al subir la imagen de inicio`},"message.uploadEndImageError":{message:`Error al subir la imagen de fin`,description:`Mensaje de error al fallar al subir la imagen de fin`},"message.uploadDocumentsError":{message:`Error al subir el documento`,description:`Mensaje de error al fallar al subir el documento`},"message.noOperations":{message:`No hay operaciones disponibles`,description:`Mensaje cuando no hay operaciones disponibles`},"message.noTasks":{message:`No hay tareas históricas, por favor haga clic en generar video a la izquierda`,description:`Mensaje cuando no hay tareas`},"tab.talkingPhoto":{message:`Foto que habla`,description:`Tab label: Talking Photo`},"name.talkingPhotoImage":{message:`Foto de retrato`,description:`Talking Photo portrait image input`},"name.talkingPhotoAudio":{message:`Audio de control`,description:`Talking Photo driving audio input`},"name.talkingPhotoPrompt":{message:`Indicación de movimiento (opcional)`,description:`Talking Photo optional motion prompt`},"description.talkingPhotoImage":{message:`Sube un retrato frontal nítido; se animará y se hará hablar.`,description:`Talking Photo portrait image help text`},"description.talkingPhotoAudio":{message:`Sube un clip de audio (mp3/wav, ≤5 MB); el personaje sincronizará los labios.`,description:`Talking Photo driving audio help text`},"description.talkingPhotoPrompt":{message:`Opcional: describe la expresión/movimiento deseado, p. ej. «mirar suavemente a la cámara».`,description:`Talking Photo motion prompt help text`},"placeholder.talkingPhotoPrompt":{message:`p. ej. suave, tranquilo, natural, ligero movimiento de cabeza`,description:`Talking Photo prompt input placeholder`},"button.generateTalkingPhoto":{message:`Generar foto que habla`,description:`Talking Photo generate button`},"button.uploadAudio":{message:`Subir audio`,description:`Talking Photo upload audio button`},"message.talkingPhotoMissingInputs":{message:`Sube primero una foto de retrato y un audio de control.`,description:`Talking Photo missing inputs warning`},"message.uploadAudioExceed":{message:`Solo se permite un archivo de audio.`,description:`Talking Photo audio count limit warning`},"message.uploadAudioError":{message:`Error al subir el audio, inténtalo de nuevo.`,description:`Talking Photo audio upload error`}};export{e as default};
|