@acedatacloud/nexior 3.307.0 → 3.309.0
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-CI2gWOk_.js → ApiCodeButton-BFW9mbUO.js} +1 -1
- package/dist/assets/{AskUserQuestionCard-DIstjOGP.js → AskUserQuestionCard-DwyP70yo.js} +2 -2
- package/dist/assets/{Auth-k4DyTvAN.js → Auth-g23GwpI8.js} +1 -1
- package/dist/assets/{Bare-dtgl2_O1.js → Bare-Csn8iIAj.js} +1 -1
- package/dist/assets/{BotPlaceholder-CjsS9BLE.js → BotPlaceholder-40EWW7k4.js} +1 -1
- package/dist/assets/{BottomFooter-CVg2tD0W.js → BottomFooter-DtXnUad4.js} +1 -1
- package/dist/assets/{Callback-BT_44er_.js → Callback-CtZct_XO.js} +1 -1
- package/dist/assets/{CodeSnippet-DdWrMPEC.js → CodeSnippet-Clx1Yu8N.js} +1 -1
- package/dist/assets/{Console-3P8JkrBb.js → Console-z1WYZe_S.js} +1 -1
- package/dist/assets/{Consumption-BLaLD9qN.js → Consumption-Ce-cb3NP.js} +1 -1
- package/dist/assets/Conversation-CGcLYeCN.js +3 -0
- package/dist/assets/{CopyToClipboard-Bm3NJbU3.js → CopyToClipboard-CdyZTIIb.js} +1 -1
- package/dist/assets/Detail-Btyxt4SW.js +2 -0
- package/dist/assets/Extra-CRd5_pYy.js +1 -0
- package/dist/assets/{FilePreview-Dkp-Vapx.js → FilePreview-Cy2Q58G8.js} +1 -1
- package/dist/assets/{Hailuo-HvbwgpyQ.js → Hailuo-B4SVJjkC.js} +1 -1
- package/dist/assets/{History-BEVO-L3l.js → History-PynXugwv.js} +1 -1
- package/dist/assets/{ImagePreview-Dw3PSq3P.js → ImagePreview-8J98fJum.js} +1 -1
- package/dist/assets/{ImageWrapper-BINAG4rr.js → ImageWrapper-OY5plUfb.js} +1 -1
- package/dist/assets/{Index-b74jtmYs.js → Index-0dYoZMyL.js} +1 -1
- package/dist/assets/{Index-CSxxH4JA.js → Index-B75v-5kR.js} +1 -1
- package/dist/assets/{Index-B9_M0N53.js → Index-BDJfnLa8.js} +1 -1
- package/dist/assets/{Index-mmolWg8S.js → Index-BHWcswtW.js} +1 -1
- package/dist/assets/{Index-CPEBKDOh.js → Index-BKxG7c8G.js} +1 -1
- package/dist/assets/{Index-B90E-I6f.js → Index-Bfb3_-r3.js} +1 -1
- package/dist/assets/{Index-Cu455-op.js → Index-BhKybCjz.js} +1 -1
- package/dist/assets/Index-Bpzkr8nW.js +1 -0
- package/dist/assets/{Index-D9dXKomy.js → Index-BxdK7zvJ.js} +1 -1
- package/dist/assets/Index-CBYxSCot.js +1 -0
- package/dist/assets/{Index-5y81HqdI.js → Index-CFJvuIQP.js} +1 -1
- package/dist/assets/Index-CZJ1TUZI.js +1 -0
- package/dist/assets/Index-CfRA4S9_.js +1 -0
- package/dist/assets/{Index-CObP19-L.js → Index-CquEpR8N.js} +1 -1
- package/dist/assets/{Index-Bkz8Esyw.js → Index-CrI3_PRd.js} +1 -1
- package/dist/assets/{Index-C1dEGe_b.js → Index-D0WzC1My.js} +1 -1
- package/dist/assets/{Index-D2zDlkOS.js → Index-DAyjUF3v.js} +1 -1
- package/dist/assets/Index-DF650yJD.js +1 -0
- package/dist/assets/{Index-Cf3IQDp9.js → Index-DG7_DzFf.js} +1 -1
- package/dist/assets/Index-DGKHVt7X.js +1 -0
- package/dist/assets/{Index-D47H3M87.js → Index-DGy1_DtF.js} +1 -1
- package/dist/assets/{Index-B79ETbEY.js → Index-DTNafOXc.js} +1 -1
- package/dist/assets/Index-DZ1cLLM7.js +1 -0
- package/dist/assets/{Index-B2JvuimV.js → Index-Dany8Bqk.js} +1 -1
- package/dist/assets/{Index-BNaSorsr.js → Index-Dlpvte7G.js} +1 -1
- package/dist/assets/Index-iCSU8ivM.js +1 -0
- package/dist/assets/{Index-CxI8pWZD.js → Index-oxiWl1GW.js} +1 -1
- package/dist/assets/{Index-DfTRmDQY.js → Index-z617oGKY.js} +2 -2
- package/dist/assets/{Invitees-Cq6QLQZX.js → Invitees-DOdVq3Dt.js} +1 -1
- package/dist/assets/List-BcOXzi1E.js +1 -0
- package/dist/assets/{List-B9JC97aq.js → List-CmWiv4pf.js} +1 -1
- package/dist/assets/List-Djlml2vb.js +1 -0
- package/dist/assets/LocalTools-CTng5rdg.js +1 -0
- package/dist/assets/LocalTools-Ch9oLue7.css +1 -0
- package/dist/assets/{LocalTools-BPL9SuyN.js → LocalTools-Db_4IXrM.js} +1 -1
- package/dist/assets/{Main-H72OghiY.js → Main-BJsBx5sM.js} +1 -1
- package/dist/assets/Model-_96ZH91F.js +1 -0
- package/dist/assets/{Navigator-n2V1Pgtk.js → Navigator-pW926vua.js} +2 -2
- package/dist/assets/{NoTasks-CabNnSUM.js → NoTasks-D8AI-YEq.js} +1 -1
- package/dist/assets/{NotFound-DGkTStuf.js → NotFound-DjV49Ji0.js} +1 -1
- package/dist/assets/{Pagination-zpuLfk7P.js → Pagination-gbw9ob3C.js} +1 -1
- package/dist/assets/Pay-DZvSdgmK.js +1 -0
- package/dist/assets/{Player-CTQgP2Kv.js → Player-CqEUBJBD.js} +1 -1
- package/dist/assets/{PromptTextarea-CFH8Xp3G.js → PromptTextarea-0aoApT2i.js} +1 -1
- package/dist/assets/{RealtimeCall-QAr00QO0.js → RealtimeCall-DJJ7-sTv.js} +1 -1
- package/dist/assets/ScheduledTasks-B-rIDIzg.js +2 -0
- package/dist/assets/Status-Rg8P852o.js +1 -0
- package/dist/assets/Subscribe-p52kGnLe.js +1 -0
- package/dist/assets/{TabSwitcher-C0fXq1F-.js → TabSwitcher-DAf9gDlX.js} +1 -1
- package/dist/assets/Tts-DbQa_uvq.js +1 -0
- package/dist/assets/{VideoPlayer-DdbAac6V.js → VideoPlayer-DEOqz-Us.js} +1 -1
- package/dist/assets/{avatar-BcfbQj_C.js → avatar-Chc2NxB5.js} +1 -1
- package/dist/assets/{basic-DD7JlZ5J.js → basic-DAE2Q9hN.js} +1 -1
- package/dist/assets/{chat-CaYHBJBa.js → chat-BtjrEou7.js} +1 -1
- package/dist/assets/{codingBridge-CvSabUYl.js → codingBridge-BVSneyyQ.js} +2 -2
- package/dist/assets/codingBridgeNotify-D7pElF71.js +2 -0
- package/dist/assets/{collapse-BVlAkllk.js → collapse-kT9asIfB.js} +1 -1
- package/dist/assets/{common-C_0ErBA4.js → common-BIvJWeFU.js} +1 -1
- package/dist/assets/{common-Biasf4zm.js → common-BQFvkeTR.js} +1 -1
- package/dist/assets/{common-CZ7oKPtU.js → common-BqZSKeht.js} +1 -1
- package/dist/assets/{common-CXvgyQTA.js → common-C-0ESVJe.js} +1 -1
- package/dist/assets/{common-DFNRsLN1.js → common-CI5RZ8CN.js} +1 -1
- package/dist/assets/{common-NaBSOA3r.js → common-Ctja8dT4.js} +1 -1
- package/dist/assets/{common-CgKtgbXN.js → common-D8pz_qne.js} +1 -1
- package/dist/assets/{common-Cmxdf2_E.js → common-DBqVJdFv.js} +1 -1
- package/dist/assets/{common-DJV0c76u.js → common-DDUqOJNh.js} +1 -1
- package/dist/assets/{common-BbaVZouS.js → common-Dku5-d_9.js} +1 -1
- package/dist/assets/{common-PqKiwdW6.js → common-ErqcyjDo.js} +1 -1
- package/dist/assets/{common-D_Nb3vSv.js → common-F4C9Y7t6.js} +1 -1
- package/dist/assets/{common-CvivEw9T.js → common-FsG1nhXK.js} +1 -1
- package/dist/assets/{common-BoAcwOef.js → common-I2a9yeJu.js} +1 -1
- package/dist/assets/{common-CVxcjmLm.js → common-NvhpjFYA.js} +1 -1
- package/dist/assets/{common-B41ihZJm.js → common-kK9f7LbC.js} +1 -1
- package/dist/assets/{common-ucKLoMrO.js → common-keMR2vQ0.js} +1 -1
- package/dist/assets/{common-cWsMCkDW.js → common-lFlMnqaA.js} +1 -1
- package/dist/assets/{constants-C2imKs2p.js → constants-D-ka8VWP.js} +1 -1
- package/dist/assets/{createTaskActions-DV3rZkxO.js → createTaskActions-DD2EJCcs.js} +1 -1
- package/dist/assets/{date-picker-DMYJG21g.js → date-picker-BmxcYgiE.js} +1 -1
- package/dist/assets/{digitalhuman-BkSTPLG7.js → digitalhuman-hsB7VtY6.js} +1 -1
- package/dist/assets/{dropdown-CW-vChSX.js → dropdown-Br35okjN.js} +1 -1
- package/dist/assets/{esm-DnXvYbma.js → esm-1Qxdvf1H.js} +1 -1
- package/dist/assets/{esm-BJlNhjAd.js → esm-9_h8eJFz.js} +1 -1
- package/dist/assets/esm-BP-NRuB3.js +1 -0
- package/dist/assets/{esm-B7T9kYd9.js → esm-D354mWFn.js} +2 -2
- package/dist/assets/{esm-g-JnYdHE.js → esm-DbE3gVFg.js} +1 -1
- package/dist/assets/{esm-C7_0w6UL.js → esm-fYstjxSo.js} +2 -2
- package/dist/assets/{esm-B_TtSrcF.js → esm-h7hFPrwB.js} +3 -3
- package/dist/assets/{fish-Bz_Vbuq2.js → fish-CVD2DvYL.js} +1 -1
- package/dist/assets/{flux-wuJQ6U2_.js → flux-CIB-l5iK.js} +1 -1
- package/dist/assets/{grokvideo-Bh5ogiGb.js → grokvideo-CS2x8rz8.js} +1 -1
- package/dist/assets/{hailuo-BNKnmZLm.js → hailuo-DuTP90Jp.js} +1 -1
- package/dist/assets/{headshots-MdkhgPEe.js → headshots-BVziBBEG.js} +1 -1
- package/dist/assets/{image-DJ3ZXfEt.js → image-DjYhvq19.js} +1 -1
- package/dist/assets/index-YTTljVk9.js +570 -0
- package/dist/assets/{index.browser.esm-C-4AxE0E.js → index.browser.esm-CUNW7XUg.js} +1 -1
- package/dist/assets/{index.es-92W3_m2f.js → index.es-DZlm2UU4.js} +1 -1
- package/dist/assets/{input-number-Dnu3tH7n.js → input-number-DcK8yBbj.js} +1 -1
- package/dist/assets/{kling-DM1uwo-6.js → kling-Bh5JAiOs.js} +1 -1
- package/dist/assets/{luma-1Sb-fKnw.js → luma-CLuLmyn0.js} +1 -1
- package/dist/assets/{maestro-m7-lWqg2.js → maestro-O2mQLcYf.js} +1 -1
- package/dist/assets/{midjourney-LIUFD8MH.js → midjourney-eptK2is-.js} +1 -1
- package/dist/assets/{nanobanana-BmKrIXka.js → nanobanana-DaxP12Gi.js} +1 -1
- package/dist/assets/{openaiimage-xeEh_F7d.js → openaiimage-PGU_PHeL.js} +1 -1
- package/dist/assets/{pagination-CrOWf3en.js → pagination-CPUjHPAO.js} +1 -1
- package/dist/assets/{pika-RRCYlTeC.js → pika-BQowETAm.js} +1 -1
- package/dist/assets/{pixverse-CxYwl_uz.js → pixverse-DLomwZE2.js} +1 -1
- package/dist/assets/{popover-BkSUxfEc.js → popover-CnW7D2fJ.js} +1 -1
- package/dist/assets/{producer-Dm1o3jth.js → producer-DV30bBUu.js} +1 -1
- package/dist/assets/{qrart-CxchU5S2.js → qrart-C3fYjcyZ.js} +1 -1
- package/dist/assets/{realtime-DO6DprKw.js → realtime-C8NoZ6yi.js} +1 -1
- package/dist/assets/{row-DaduunWt.js → row-CNtypLmO.js} +1 -1
- package/dist/assets/{seedance-DmC0ODOj.js → seedance-D5FLlim0.js} +1 -1
- package/dist/assets/{seedream-BqrXb7E0.js → seedream-CsIyZEyH.js} +1 -1
- package/dist/assets/{select-Dj4jq0B4.js → select-CuIPccg6.js} +1 -1
- package/dist/assets/{serp-uT2Md0cj.js → serp-CRjZtE1D.js} +1 -1
- package/dist/assets/{slider-DyKE_6xY.js → slider-B6IFBhBD.js} +1 -1
- package/dist/assets/solana-wallets-CNYFj_D9.js +2 -0
- package/dist/assets/{solana-wallets-vue-BhsZ2GPE.js → solana-wallets-vue-2zT8cL5W.js} +1 -1
- package/dist/assets/{sora-D4eESV4u.js → sora-BhDxXZut.js} +1 -1
- package/dist/assets/{suno-Dkf5WQwb.js → suno-CPGtiAJF.js} +1 -1
- package/dist/assets/surface-B5ZXUAsd.js +1 -0
- package/dist/assets/surface-DjJVA_Sb.js +1 -0
- package/dist/assets/{switch-9BNED6Ci.js → switch-Dh0w9gvT.js} +1 -1
- package/dist/assets/{tabs-DtPD78qL.js → tabs-BBCAWomx.js} +1 -1
- package/dist/assets/{time-picker-D3zz7FY4.js → time-picker-DBpRzHEy.js} +1 -1
- package/dist/assets/{upload-BNDRK3nk.js → upload-ByduJfLk.js} +1 -1
- package/dist/assets/{veo-CLeuPLIH.js → veo-MtKIQSjB.js} +1 -1
- package/dist/assets/{wan-CP3kqxtn.js → wan-DZ59MlEZ.js} +1 -1
- package/dist/assets/{web-Db_U-iDC.js → web-B2Ctgmpb.js} +1 -1
- package/dist/assets/{web-D3bi2t3n.js → web-COQ9igWS.js} +1 -1
- package/dist/assets/{web-D6DZZd3t.js → web-CWsHvipZ.js} +1 -1
- package/dist/assets/{web-vvg5BzuE.js → web-DQ7gIvmA.js} +1 -1
- package/dist/assets/{web-CklM3Zs9.js → web-lOlif7Co.js} +1 -1
- package/dist/assets/{webextrator-CO-Hfz9u.js → webextrator-03oX1zBs.js} +1 -1
- package/dist/index.html +4 -2
- package/package.json +1 -1
- package/dist/assets/Conversation-CnKAkFaX.js +0 -3
- package/dist/assets/Detail-BKWHRd0U.js +0 -2
- package/dist/assets/Extra-CF8aLrRM.js +0 -1
- package/dist/assets/Index-B1utyC6M.js +0 -1
- package/dist/assets/Index-B3pNRsMe.js +0 -1
- package/dist/assets/Index-BaImUqkH.js +0 -1
- package/dist/assets/Index-CJMYREIj.js +0 -1
- package/dist/assets/Index-CKWvPEVQ.js +0 -1
- package/dist/assets/Index-D2t44u9b.js +0 -1
- package/dist/assets/Index-UfSIoAZJ.js +0 -1
- package/dist/assets/Index-vy0OQdbR.js +0 -1
- package/dist/assets/List-C8IAfg6P.js +0 -1
- package/dist/assets/List-lqcYw95b.js +0 -1
- package/dist/assets/LocalTools-Cxe6atfp.js +0 -1
- package/dist/assets/LocalTools-DM8BzuBp.css +0 -1
- package/dist/assets/Model-BCaRyQvh.js +0 -1
- package/dist/assets/Pay-CleIwzyx.js +0 -1
- package/dist/assets/ScheduledTasks-CZhz9IvQ.js +0 -2
- package/dist/assets/Status-DxS5227P.js +0 -1
- package/dist/assets/Subscribe-Da__aCq3.js +0 -1
- package/dist/assets/Tts-gcldexo8.js +0 -1
- package/dist/assets/codingBridgeNotify-DE6IAKp9.js +0 -2
- package/dist/assets/esm-ZrqsEI9c.js +0 -1
- package/dist/assets/index-wSDGhLdn.js +0 -570
- package/dist/assets/solana-wallets-CwuMzuEn.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,
|
|
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(R()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await B.savePushSubscription({kind:L()?`apns`:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await V();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await B.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await se(e.vapid_public_key);t&&await B.savePushSubscription({kind:`webpush`,subscription:t,ua:navigator.userAgent},{token:n})}}catch(e){console.warn(`[codingBridge] web push setup skipped`,e)}return`enabled`},disableNotifications:async({rootState:e})=>{let t=e.token?.access;if(R()||!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
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,Qi as p,R as m,S as h,T as g,V as _,_ as v,a as y,b,c as x,d as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-D-ka8VWP.js";import{l as I,o as L}from"./surface-DjJVA_Sb.js";import{Pr as R,Xn as z,nn as B}from"./index-YTTljVk9.js";import{a as se,i as V,n as H,o as U,r as W}from"./codingBridgeNotify-D7pElF71.js";var G=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,K=()=>{try{return typeof localStorage<`u`&&localStorage.getItem(`cbDebug`)===`1`}catch{return!1}},q=(e,t)=>{if(!K())return;let n=t?.payload??{};console.debug(`[codingBridge]`,e,{type:t?.type,id:t?.id,node_id:t?.node_id??t?.from_node,action:n?.action,event:n?.event,session_id:n?.session_id,trace_id:n?.trace_id})},ce=class{ws;token;handlers;reconnectDelay=o;reconnectTimer;closedByUser=!1;constructor(e,t){this.token=e,this.handlers=t}get isOpen(){return this.ws?.readyState===WebSocket.OPEN}connect(){this.closedByUser=!1,this.open()}open(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;let e=`${p}?token=${encodeURIComponent(this.token)}`,t;try{t=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectDelay=o,this.handlers.onOpen?.()},t.onmessage=e=>this.onMessage(e),t.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},t.onerror=()=>{t.close()}}onMessage(e){let n;try{n=JSON.parse(e.data)}catch{return}let r=n?.payload??{};switch(q(`recv`,n),n?.type){case t:this.handlers.onEvent?.(r,n?.from_node);break;case m:this.handlers.onNodesSnapshot?.(r.nodes??[]);break;case F:this.handlers.onNodeStatus?.(r.node_id,r.status);break;case w:this.handlers.onRelayError?.(r.code??`error`,r.message??``);break;default:break}}scheduleReconnect(){if(this.closedByUser||this.reconnectTimer)return;let e=this.reconnectDelay;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.open()},e),this.reconnectDelay=Math.min(this.reconnectDelay*2,_)}sendEnvelope(e,t){if(!this.isOpen)return;let n={v:2,id:G(),ts:Date.now(),type:e,...t};q(`send`,n),this.ws?.send(JSON.stringify(n))}sendToNode(e,t){this.sendEnvelope(ee,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(E,{})}resume(e){this.sendEnvelope(ae,{payload:{resume_from:e}})}close(){if(this.closedByUser=!0,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),void 0),this.ws){this.ws.onclose=null,this.ws.onerror=null,this.ws.onmessage=null,this.ws.onopen=null;try{this.ws.close()}catch{}this.ws=void 0}}},J,Y=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,X=(e,t,n)=>({id:Y(),session_id:e,kind:t,ts:Date.now(),...n}),Z=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},le=e=>{let t=Z(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
|
|
2
|
+
`)},ue=(e,t)=>{H({title:`Approval needed`,body:`Claude wants to use ${t.tool||`a tool`}. Tap to review.`,data:t},t=>{t.node_id&&e(`selectNode`,t.node_id)})},Q=(t,o,p,m,_)=>{let y=m?.event,x=m?.session_id,S=m?.trace_id,C=m?.seq;if(typeof C==`number`&&x){let e=p.lastSeq[x];if(e!==void 0&&C<=e)return;t(`setLastSeq`,{session_id:x,seq:C})}switch(x&&S&&t(`updateSession`,{session_id:x,trace_id:S}),y){case ne:t(`upsertSession`,{session_id:x,node_id:_,status:`running`,cwd:m.cwd,model:m.model,...m.effort===void 0?{}:{effort:m.effort},...m.permission_mode===void 0?{}:{permission_mode:m.permission_mode},trace_id:S});break;case r:{let e=m.sdk_session_id;x&&e&&e!==x&&t(`renameSession`,{from:x,to:e});break}case f:{let e=m.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`appendDelta`,{session_id:x,stream_id:e,text:m.text??``}):t(`appendEvent`,X(x,`text`,{text:m.text??``,stream_id:e,streaming:!0,trace_id:S}));break}case u:{let e=m.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`finalizeStream`,{session_id:x,stream_id:e,text:m.text}):t(`appendEvent`,X(x,`text`,{text:m.text,trace_id:S}));break}case a:t(`appendEvent`,X(x,`thinking`,{text:m.text,trace_id:S}));break;case c:t(`appendEvent`,X(x,`tool_use`,{tool:m.tool,tool_use_id:m.tool_use_id,input:m.input,trace_id:S}));break;case s:t(`appendEvent`,X(x,`tool_result`,{tool_use_id:m.tool_use_id,content:m.content,is_error:m.is_error,trace_id:S}));break;case h:t(`addPermission`,{request_id:m.request_id,session_id:x,node_id:_,tool:m.tool,input:m.input,title:m.title,display_name:m.display_name,description:m.description}),ue(o,{node_id:_,session_id:x,request_id:m.request_id,tool:m.display_name||m.title||m.tool});break;case N:for(let e of m.requests??[])t(`addPermission`,{request_id:e.request_id,session_id:e.session_id,node_id:_,tool:e.tool,input:e.input,title:e.title,display_name:e.display_name,description:e.description});break;case n:t(`removePermission`,m.request_id);break;case re:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`result`,{subtype:m.subtype,is_error:m.is_error,text:m.result,cost_usd:m.cost_usd,cut_uuid:m.cut_uuid,sdk_session_id:m.sdk_session_id,trace_id:S})),t(`updateSession`,{session_id:x,status:`idle`,cost_usd:m.cost_usd});break;case d:t(`appendEvent`,X(x,`notice`,{text:m.text,subtype:m.code,command:m.command,level:m.level}));break;case i:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`error`,{text:m.message,trace_id:S})),t(`updateSession`,{session_id:x,status:`error`}),t(`updateStatus`,{key:`getHistoryDetail`,value:R.Success});break;case g:t(`finalizeAllStreams`,{session_id:x}),t(`updateSession`,{session_id:x,status:`closed`});break;case e:t(`rewindToCut`,{session_id:x,cut_uuid:m.cut_uuid}),m.prompt&&t(`appendEvent`,X(x,`prompt`,{text:m.prompt,trace_id:S})),t(`updateSession`,{session_id:x,status:`running`});break;case l:o(`resyncSession`,x);break;case M:for(let e of m.sessions??[])t(`upsertSession`,{session_id:e.session_id,node_id:_,status:e.status??`running`,started:!0,cwd:e.cwd,model:e.model,...e.effort===void 0?{}:{effort:e.effort},...e.permission_mode===void 0?{}:{permission_mode:e.permission_mode}});break;case b:if(_){t(`setHistory`,{node_id:_,sessions:m.sessions??[]}),t(`updateStatus`,{key:`getHistory`,value:R.Success});let e=p.historyRef;e&&e.node_id===_&&!p.currentSessionId&&o(`reattachSession`,e)}break;case P:de(t,p,m,_),t(`updateStatus`,{key:`getHistoryDetail`,value:R.Success});break;case j:t(`setDirectory`,{path:m.path,parent:m.parent??null,sep:m.sep??`/`,entries:m.entries??[],truncated:m.truncated,error:m.error});break;case v:_&&t(`setCapabilities`,{node_id:_,capabilities:{providers:m.providers??[]}});break;default:break}},de=(e,t,n,r)=>{let i=n?.session_id,a=fe(n?.provider);if(!i||!r)return;let o=a===`claude`||a===`codex`||a===`copilot`,s=t.sessions[i],c=!!s&&(s.started===!0||s.status===`running`||s.status===`starting`),l=t.lastComposer?.[r]??{};e(`upsertSession`,{session_id:i,node_id:r,status:c?s.status:`idle`,cwd:n.cwd??s?.cwd??l.cwd,model:n.model??s?.model??l.model,effort:n.effort??s?.effort??l.effort,permission_mode:n.permission_mode??s?.permission_mode??l.permissionMode,provider:a,started:!!c,readonly:!o&&!c});let u=t.events[i]?.length??0,d=(n.events??[]).length,f=s?.status===`running`||s?.status===`starting`;c&&u>0&&(f||u>=d)||e(`setEvents`,{session_id:i,events:(n.events??[]).map((e,t)=>({id:Y(),session_id:i,kind:e.kind,ts:typeof e.ts==`number`?e.ts:Date.now()+t,text:e.text,tool:e.tool,tool_use_id:e.tool_use_id,input:e.input,content:e.content,is_error:e.is_error,subtype:e.subtype,cost_usd:e.cost_usd}))}),e(`setCurrentNode`,r),e(`setCurrentSession`,i),e(`setHistoryRef`,{node_id:r,provider:a,session_id:i})},fe=e=>e===`codex`||e===`copilot`?e:`claude`,$={namespaced:!0,state:z,mutations:{resetAll:e=>{Object.assign(e,z())},updateStatus:(e,t)=>{e.status[t.key]=t.value},setConnection:(e,t)=>{e.connection=t},setNodes:(e,t)=>{e.nodes=t},mergeNodeSnapshot:(e,t)=>{let n=new Set(t.map(e=>e.node_id));for(let t of e.nodes)t.status=n.has(t.node_id)?`online`:`offline`;for(let n of t)e.nodes.some(e=>e.node_id===n.node_id)||e.nodes.push({...n,status:`online`})},setNodeStatus:(e,t)=>{let n=e.nodes.find(e=>e.node_id===t.node_id);n&&(n.status=t.status)},setCurrentNode:(e,t)=>{e.currentNodeId=t},setCurrentSession:(e,t)=>{e.currentSessionId=t},upsertSession:(e,t)=>{e.sessions[t.session_id]={...e.sessions[t.session_id],...t},e.events[t.session_id]||(e.events[t.session_id]=[])},updateSession:(e,t)=>{let n=e.sessions[t.session_id];n&&(e.sessions[t.session_id]={...n,...t})},renameSession:(e,t)=>{let{from:n,to:r}=t;if(n===r||!e.sessions[n])return;e.sessions[r]={...e.sessions[r],...e.sessions[n],session_id:r},delete e.sessions[n];let i=e.events[n];i&&(i.length||!e.events[r]?.length)&&(e.events[r]=i),delete e.events[n],delete e.lastSeq[n],e.lastSeq[r]=0;for(let t of e.permissions)t.session_id===n&&(t.session_id=r);e.currentSessionId===n&&(e.currentSessionId=r),e.historyRef?.session_id===n&&(e.historyRef={...e.historyRef,session_id:r})},appendEvent:(e,t)=>{e.events[t.session_id]||(e.events[t.session_id]=[]),e.events[t.session_id].push(t)},truncateEventsBefore:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.findIndex(e=>e.id===t.event_id);r>=0&&(e.events[t.session_id]=n.slice(0,r))},rewindToCut:(e,t)=>{let n=e.events[t.session_id];if(!n)return;if(!t.cut_uuid){e.events[t.session_id]=[];return}let r=n.findIndex(e=>e.kind===`result`&&e.cut_uuid===t.cut_uuid);r>=0&&(e.events[t.session_id]=n.slice(0,r+1))},setLastSeq:(e,t)=>{let n=e.lastSeq[t.session_id]??0;t.seq>n&&(e.lastSeq[t.session_id]=t.seq)},appendDelta:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(r.text=(r.text??``)+(t.text??``))},finalizeStream:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(typeof t.text==`string`&&(r.text=t.text),r.streaming=!1)},finalizeAllStreams:(e,t)=>{let n=e.events[t.session_id];if(n)for(let e of n)e.streaming&&=!1},setEvents:(e,t)=>{e.events[t.session_id]=t.events},setHistory:(e,t)=>{e.history[t.node_id]=t.sessions},setHistoryRef:(e,t)=>{e.historyRef=t},setDirectory:(e,t)=>{e.directory=t,e.directoryLoading=!1},setDirectoryLoading:(e,t)=>{e.directoryLoading=t},setLastComposer:(e,t)=>{e.lastComposer={...e.lastComposer,[t.node_id]:{...e.lastComposer[t.node_id],...t.prefs}}},setCapabilities:(e,t)=>{e.capabilities[t.node_id]=t.capabilities},addPermission:(e,t)=>{e.permissions.some(e=>e.request_id===t.request_id)||e.permissions.push(t)},removePermission:(e,t)=>{e.permissions=e.permissions.filter(e=>e.request_id!==t)},removeNodeData:(e,t)=>{delete e.history[t],delete e.capabilities[t],e.historyRef?.node_id===t&&(e.historyRef=void 0);for(let n of Object.values(e.sessions))n.node_id===t&&(delete e.sessions[n.session_id],delete e.events[n.session_id],delete e.lastSeq[n.session_id],e.currentSessionId===n.session_id&&(e.currentSessionId=void 0))}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},getApplications:async()=>{},setApplication:async()=>{},getNodes:async({commit:e,rootState:t})=>{let n=t.token?.access;if(!n)return[];e(`updateStatus`,{key:`getNodes`,value:R.Request});try{let{data:t}=await B.getNodes({token:n});return e(`setNodes`,t.nodes??[]),e(`updateStatus`,{key:`getNodes`,value:R.Success}),t.nodes??[]}catch(t){throw e(`updateStatus`,{key:`getNodes`,value:R.Error}),t}},claimPair:async({commit:e,dispatch:t,rootState:n},r)=>{let i=n.token?.access;if(!i)throw Error(`not authenticated`);e(`updateStatus`,{key:`claimPair`,value:R.Request});try{let{data:n}=await B.claimPair(r.trim(),{token:i});return e(`updateStatus`,{key:`claimPair`,value:R.Success}),await t(`getNodes`),n.node_name}catch(t){throw e(`updateStatus`,{key:`claimPair`,value:R.Error}),t}},deleteNode:async({commit:e,dispatch:t,state:n,rootState:r},i)=>{let a=r.token?.access;if(!a)throw Error(`not authenticated`);e(`updateStatus`,{key:`deleteNode`,value:R.Request});try{await B.deleteNode(i,{token:a}),e(`removeNodeData`,i),n.currentNodeId===i&&(e(`setCurrentNode`,void 0),e(`setCurrentSession`,void 0)),e(`updateStatus`,{key:`deleteNode`,value:R.Success}),await t(`getNodes`)}catch(t){throw e(`updateStatus`,{key:`deleteNode`,value:R.Error}),t}},connect:({commit:e,dispatch:t,state:n,rootState:r})=>{let i=r.token?.access;i&&(J?.isOpen||(J?.close(),e(`setConnection`,`connecting`),J=new ce(i,{onOpen:()=>{e(`setConnection`,`connected`);let r={...n.lastSeq};Object.keys(r).length&&J?.resume(r),n.currentNodeId&&(t(`getHistory`,n.currentNodeId),t(`getCapabilities`,n.currentNodeId),t(`requestSessions`,n.currentNodeId),t(`requestPendingPermissions`,n.currentNodeId))},onClose:()=>e(`setConnection`,`disconnected`),onEvent:(r,i)=>Q(e,t,n,r,i),onNodesSnapshot:t=>{e(`mergeNodeSnapshot`,t)},onNodeStatus:(r,i)=>{e(`setNodeStatus`,{node_id:r,status:i}),i===`online`&&r===n.currentNodeId&&(t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r))},onRelayError:(e,t)=>console.warn(`[codingBridge] relay error`,e,t)}),J.connect()))},disconnect:({commit:e})=>{J?.close(),J=void 0,e(`setConnection`,`disconnected`)},selectNode:({commit:e,dispatch:t,state:n},r)=>{if(e(`setCurrentNode`,r),!r){e(`setCurrentSession`,void 0);return}let i=Object.values(n.sessions).filter(e=>e.node_id===r).map(e=>e.session_id);e(`setCurrentSession`,i.length?i[i.length-1]:void 0),t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r)},requestSessions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:O})},requestPendingPermissions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:y})},enableNotifications:async({dispatch:e,rootState:t})=>{let n=t.token?.access;if(!n)return`unsupported`;if(I()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await B.savePushSubscription({kind:L()?`apns`:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await V();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await B.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await se(e.vapid_public_key);t&&await B.savePushSubscription({kind:`webpush`,subscription:t,ua:navigator.userAgent},{token:n})}}catch(e){console.warn(`[codingBridge] web push setup skipped`,e)}return`enabled`},disableNotifications:async({rootState:e})=>{let t=e.token?.access;if(I()||!t)return;let n=await U();if(n)try{await B.deletePushSubscription({endpoint:n},{token:t})}catch(e){console.warn(`[codingBridge] failed to deregister web push`,e)}},newSession:({commit:e})=>{e(`setCurrentSession`,void 0),e(`setHistoryRef`,void 0)},sendPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=n.prompt?.trim(),a=n.images?.length?n.images:void 0,o=n.attachments?.length?n.attachments:void 0;if(!r||!J||!i&&!a&&!o)return;let s=Y(),c=t.currentSessionId,l=c?t.sessions[c]:void 0;if(!l||!l.started){let t=l?.provider||n.provider||`claude`;l?(c=l.session_id,e(`updateSession`,{session_id:c,status:`starting`,trace_id:s,...n.cwd?{cwd:n.cwd}:{},...n.model===void 0?{}:{model:n.model},...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}})):(c=Y(),e(`upsertSession`,{session_id:c,node_id:r,status:`starting`,cwd:n.cwd,model:n.model,effort:n.effort,permission_mode:n.permissionMode,provider:t,trace_id:s}),e(`setCurrentSession`,c),e(`setHistoryRef`,{node_id:r,provider:t,session_id:c})),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,started:!0}),J.sendToNode(r,{action:C,session_id:c,trace_id:s,prompt:i,cwd:n.cwd||l?.cwd||void 0,model:n.model||l?.model||void 0,permission_mode:n.permissionMode||`bypassPermissions`,provider:t,effort:n.effort||void 0,images:a,attachments:o,resume_session_id:l?.session_id||void 0})}else e(`updateSession`,{session_id:c,trace_id:s}),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,status:`running`,model:n.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),J.sendToNode(r,{action:S,session_id:c,trace_id:s,prompt:i,model:n.model??``,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode},images:a,attachments:o})},editPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=t.currentSessionId,a=n.prompt?.trim();if(!r||!i||!J||!a)return;let o=t.sessions[i],s=t.events[i]??[],c=s.findIndex(e=>e.id===n.eventId);if(!o||c<0)return;let l;for(let e=c-1;e>=0;e--)if(s[e].kind===`result`&&s[e].cut_uuid){l=s[e].cut_uuid;break}let u=n.images?.length?n.images:void 0,d=n.attachments?.length?n.attachments:void 0,f=Y();e(`truncateEventsBefore`,{session_id:i,event_id:n.eventId}),e(`updateSession`,{session_id:i,status:`running`,trace_id:f,model:n.model||o.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),e(`appendEvent`,X(i,`prompt`,{text:a,images:u,attachments:d,trace_id:f})),J.sendToNode(r,{action:ie,session_id:i,trace_id:f,cut_uuid:l,prompt:a,model:n.model||o.model||void 0,permission_mode:n.permissionMode||void 0,effort:n.effort||void 0,images:u,attachments:d,restore_code:!!n.restoreCode})},retryLastPrompt:({commit:e,dispatch:t,state:n})=>{let r=n.currentSessionId;if(!r)return;let i=n.sessions[r],a=[...n.events[r]??[]].reverse().find(e=>e.kind===`prompt`);!i||!a||(e(`updateSession`,{session_id:r,started:!1}),t(`sendPrompt`,{prompt:a.text??``,cwd:i.cwd,model:i.model,provider:i.provider,images:a.images,attachments:a.attachments}))},interruptSession:({state:e})=>{let t=e.currentSessionId,n=e.currentNodeId;!t||!n||!J||J.sendToNode(n,{action:A,session_id:t})},closeSession:({commit:e,state:t},n)=>{let r=n??t.currentSessionId;if(!r)return;let i=t.sessions[r]?.node_id??t.currentNodeId;i&&J&&J.sendToNode(i,{action:x,session_id:r}),e(`updateSession`,{session_id:r,status:`closed`}),t.currentSessionId===r&&e(`setCurrentSession`,void 0)},resolvePermission:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:n.decision}),e(`removePermission`,n.request_id))},answerQuestion:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:`allow`,answer:Z(n.output),answer_text:le(n.output)}),e(`removePermission`,n.request_id))},getHistory:({commit:e,state:t},n)=>{let r=n??t.currentNodeId;!r||!J||(e(`updateStatus`,{key:`getHistory`,value:R.Request}),J.sendToNode(r,{action:te,limit:200}))},getHistoryDetail:({commit:e},t)=>{!t?.node_id||!t?.session_id||!J||(e(`updateStatus`,{key:`getHistoryDetail`,value:R.Request}),J.sendToNode(t.node_id,{action:D,provider:t.provider,session_id:t.session_id}),setTimeout(()=>e(`updateStatus`,{key:`getHistoryDetail`,value:R.Success}),12e3))},reattachSession:({state:e,commit:t,dispatch:n},r)=>{!r?.node_id||!r?.session_id||(t(`setCurrentNode`,r.node_id),t(`setCurrentSession`,r.session_id),n(`getHistoryDetail`,r),n(`requestSessions`,r.node_id),n(`requestPendingPermissions`,r.node_id),J?.resume({[r.session_id]:e.lastSeq[r.session_id]??0}))},resyncSession:({state:e,dispatch:t},n)=>{let r=e.sessions[n];r?.node_id&&t(`getHistoryDetail`,{node_id:r.node_id,session_id:n,provider:r.provider??`claude`})},browseDir:({commit:e,state:t},n)=>{let r=t.currentNodeId;!r||!J||(e(`setDirectoryLoading`,!0),J.sendToNode(r,{action:oe,path:n||void 0}))},clearDirectory:({commit:e})=>{e(`setDirectory`,void 0)},getCapabilities:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:k})}}};export{$ as codingBridge,$ as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-D354mWFn.js","assets/index-YTTljVk9.js","assets/rolldown-runtime--c01j_DQ.js","assets/preload-helper-zJ_50EbN.js","assets/constants-D-ka8VWP.js","assets/vendor-chart-BJCvKk8-.js","assets/vendor-axios-Ck2ffRoh.js","assets/button-BydTr5nV.js","assets/use-deprecated-B-NFNg3W.js","assets/install-CmiepWqE.js","assets/en-CpRrS3Ur.js","assets/runtime-B1Eal4u3.js","assets/vendor-vue-CCKiwo0U.js","assets/vendor-dayjs-C9ICuEWn.js","assets/use-dialog-BA0DNk5w.js","assets/teleport-BEkn5-id.js","assets/aria-CQaCu-Fx.js","assets/event-BGnHezxC.js","assets/scroll-CgpW_lTC.js","assets/vnode-BKrYEsqE.js","assets/use-aria-QsRrwtXj.js","assets/vendor-vue-router-WDnlh53U.js","assets/surface-DjJVA_Sb.js","assets/surface-B5ZXUAsd.js","assets/index-Bi16_FuT.css","assets/esm-BP-NRuB3.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-zJ_50EbN.js";import{l as t}from"./surface-DjJVA_Sb.js";var n=`/sw.js`,r=()=>typeof window<`u`&&`Notification`in window,i=()=>typeof navigator<`u`&&`serviceWorker`in navigator,a=()=>i()&&`PushManager`in window,o=()=>r()?Notification.permission:`unsupported`,s=e=>{let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},c=async()=>{if(!i())return null;try{return await navigator.serviceWorker.getRegistration(n)??await navigator.serviceWorker.register(n)}catch(e){return console.warn(`[codingBridge] service worker registration failed`,e),null}},l=async()=>{if(!r())return`unsupported`;if(Notification.permission!==`default`)return Notification.permission;try{return await Notification.requestPermission()}catch{return`denied`}},u=(e,n)=>{if(!(typeof document<`u`&&document.visibilityState===`visible`)){if(t()){d(e);return}if(!(!r()||Notification.permission!==`granted`))try{let t=new Notification(e.title,{body:e.body,tag:e.data.request_id||`coding-bridge-permission`,data:e.data});t.onclick=()=>{try{window.focus()}catch{}n?.(e.data),t.close()}}catch(e){console.warn(`[codingBridge] failed to raise local notification`,e)}}},d=async t=>{try{let{LocalNotifications:n}=await e(async()=>{let{LocalNotifications:e}=await import(`./esm-D354mWFn.js`);return{LocalNotifications:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]));if((await n.checkPermissions()).display!==`granted`&&(await n.requestPermissions()).display!==`granted`)return;await n.schedule({notifications:[{id:f(t.data.request_id||`permission`),title:t.title,body:t.body,extra:t.data}]})}catch(e){console.warn(`[codingBridge] native local notification failed`,e)}},f=e=>{let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)%2147483e3},p=async e=>{if(!a()||!e||await l()!==`granted`)return null;let t=await c();if(!t)return null;try{return(await t.pushManager.getSubscription()??await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:s(e)})).toJSON()}catch(e){return console.warn(`[codingBridge] web push subscribe failed`,e),null}},m=async()=>{if(!a())return null;let e=await(await c())?.pushManager.getSubscription();if(!e)return null;let t=e.endpoint;try{await e.unsubscribe()}catch{}return t},h=async n=>{if(!t())return null;try{let{PushNotifications:t}=await e(async()=>{let{PushNotifications:e}=await import(`./esm-BP-NRuB3.js`);return{PushNotifications:e}},__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])),r=await t.requestPermissions();if(r.receive!==`granted`)return console.warn(`[codingBridge] push permission not granted (receive=${r.receive})`),null;let i=await new Promise(e=>{let n=setTimeout(()=>{console.warn(`[codingBridge] push registration timed out — no device token`),e(null)},1e4);t.addListener(`registration`,t=>{clearTimeout(n),e(t.value)}),t.addListener(`registrationError`,t=>{clearTimeout(n),console.warn(`[codingBridge] push registrationError`,t),e(null)}),t.register()});return n&&t.addListener(`pushNotificationActionPerformed`,e=>{n(e.notification?.data??{})}),i}catch(e){return e?.code===`UNIMPLEMENTED`?console.warn(`[codingBridge] PushNotifications plugin not available in this build`,e):console.warn(`[codingBridge] native push registration failed`,e),null}};export{p as a,l as i,u as n,m as o,h as r,r as s,o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{
|
|
1
|
+
import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{Zr as H}from"./index-YTTljVk9.js";var U=e=>M(e)||t(e)||l(e),W=A({accordion:Boolean,modelValue:{type:j([Array,String,Number]),default:()=>H([])},expandIconPosition:{type:j([String]),default:`right`},beforeCollapse:{type:j(Function)}}),G={[z]:U,[B]:U},K=Symbol(`collapseContextKey`),q=`ElCollapse`,J=(e,t)=>{let n=h(R(e.modelValue)),r=r=>{n.value=r;let i=e.accordion?n.value[0]:n.value;t(z,i),t(B,i)},i=t=>{if(e.accordion)r([n.value[0]===t?``:t]);else{let e=[...n.value],i=e.indexOf(t);i>-1?e.splice(i,1):e.push(t),r(e)}};return g(()=>e.modelValue,()=>n.value=R(e.modelValue),{deep:!0}),u(K,{activeNames:n,handleItemClick:async t=>{let{beforeCollapse:n}=e;if(!n){i(t);return}let r=n(t);[w(r),k(r)].includes(!0)||L(q,"beforeCollapse must return type `Promise<boolean>` or `boolean`"),w(r)?r.then(e=>{e!==!1&&i(t)}).catch(e=>{N(q,`some error occurred: ${e}`)}):r&&i(t)}}),{activeNames:n,setActiveNames:r}},Y=e=>{let t=E(`collapse`);return{rootKls:r(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},X=T(i({...i({name:`ElCollapse`}),props:W,emits:G,setup(t,{expose:n,emit:r}){let i=t,{activeNames:a,setActiveNames:o}=J(i,r),{rootKls:c}=Y(i);return n({activeNames:a,setActiveNames:o}),(t,n)=>(p(),e(`div`,{class:d(s(c))},[v(t.$slots,`default`)],2))}}),[[`__file`,`collapse.vue`]]),Z=A({title:{type:String,default:``},name:{type:j([String,Number]),default:void 0},icon:{type:F,default:P},disabled:Boolean}),Q=e=>{let t=C(K),{namespace:n}=E(`collapse`),i=h(!1),a=h(!1),o=ee(),c=r(()=>o.current++),l=r(()=>e.name??`${n.value}-id-${o.prefix}-${s(c)}`);return{focusing:i,id:c,isActive:r(()=>t?.activeNames.value.includes(s(l))),handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:i.value=!0},50)},handleHeaderClick:n=>{e.disabled||n.target?.closest(`input, textarea, select`)||(t?.handleItemClick(s(l)),i.value=!1,a.value=!0)},handleEnterClick:e=>{e.target?.closest(`input, textarea, select`)||(e.preventDefault(),t?.handleItemClick(s(l)))}}},te=(e,{focusing:t,isActive:n,id:i})=>{let a=E(`collapse`),o=r(()=>[a.b(`item`),a.is(`active`,s(n)),a.is(`disabled`,e.disabled)]),c=r(()=>[a.be(`item`,`header`),a.is(`active`,s(n)),{focusing:s(t)&&!e.disabled}]),l=r(()=>[a.be(`item`,`arrow`),a.is(`active`,s(n))]);return{itemTitleKls:r(()=>[a.be(`item`,`title`)]),arrowKls:l,headKls:c,rootKls:o,itemWrapperKls:r(()=>a.be(`item`,`wrap`)),itemContentKls:r(()=>a.be(`item`,`content`)),scopedContentId:r(()=>a.b(`content-${s(i)}`)),scopedHeadId:r(()=>a.b(`head-${s(i)}`))}},$=T(i({...i({name:`ElCollapseItem`}),props:Z,setup(t,{expose:r}){let i=t,{focusing:l,id:u,isActive:h,handleFocus:g,handleHeaderClick:C,handleEnterClick:w}=Q(i),{arrowKls:T,headKls:E,rootKls:D,itemTitleKls:O,itemWrapperKls:k,itemContentKls:A,scopedContentId:j,scopedHeadId:M}=te(i,{focusing:l,isActive:h,id:u});return r({isActive:h}),(t,r)=>(p(),e(`div`,{class:d(s(D))},[n(`div`,{id:s(M),class:d(s(E)),"aria-expanded":s(h),"aria-controls":s(j),"aria-describedby":s(j),tabindex:t.disabled?-1:0,role:`button`,onClick:s(C),onKeydown:S(m(s(w),[`stop`]),[`space`,`enter`]),onFocus:s(g),onBlur:e=>l.value=!1},[n(`span`,{class:d(s(O))},[v(t.$slots,`title`,{isActive:s(h)},()=>[a(f(t.title),1)])],2),v(t.$slots,`icon`,{isActive:s(h)},()=>[c(s(I),{class:d(s(T))},{default:b(()=>[(p(),o(y(t.icon)))]),_:1},8,[`class`])])],42,[`id`,`aria-expanded`,`aria-controls`,`aria-describedby`,`tabindex`,`onClick`,`onKeydown`,`onFocus`,`onBlur`]),c(s(V),null,{default:b(()=>[_(n(`div`,{id:s(j),role:`region`,class:d(s(k)),"aria-hidden":!s(h),"aria-labelledby":s(M)},[n(`div`,{class:d(s(A))},[v(t.$slots,`default`)],2)],10,[`id`,`aria-hidden`,`aria-labelledby`]),[[x,s(h)]])]),_:3})],2))}}),[[`__file`,`collapse-item.vue`]]),ne=O(X,{CollapseItem:$}),re=D($);export{re as n,ne as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={"button.setup":{message:`Configuración`,description:`Texto en el botón, utilizado para realizar configuraciones`},"button.start":{message:`Iniciar`,description:`Texto en el botón, utilizado para comenzar ciertas acciones`},"button.copy":{message:`Copiar`,description:`Texto en el botón, utilizado para copiar contenido`},"button.copied":{message:`Copiado`,description:`Texto en el botón, utilizado para indicar que el contenido ha sido copiado`},"button.restart":{message:`Regenerar`,description:`Texto en el botón, utilizado para regenerar contenido`},"button.preview":{message:`Vista previa`,description:`Texto en el botón, utilizado para abrir una vista previa de un archivo a través de URL`},"button.seeRawImage":{message:`Ver imagen original`,description:`Texto en el botón, utilizado para ver la imagen original`},"button.seeRawVideo":{message:`Ver video original`,description:`Texto en el botón, utilizado para ver el video original`},"button.edit":{message:`Editar`,description:`Texto en el botón, utilizado para editar contenido`},"button.login":{message:`Iniciar sesión`,description:`Texto en el botón, utilizado para iniciar sesión`},"button.logout":{message:`Cerrar sesión`,description:`Texto en el botón, utilizado para cerrar sesión`},"button.new":{message:`Nuevo`,description:`Texto en el botón, utilizado para crear un nuevo elemento`},"button.delete":{message:`Eliminar`,description:`Texto en el botón, utilizado para eliminar contenido`},"button.deletePermanently":{message:`Eliminar cuenta permanentemente`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Confirmar`,description:`Texto en el botón, utilizado para confirmar una acción`},"button.cancel":{message:`Cancelar`,description:`Texto en el botón, utilizado para cancelar una acción`},"button.close":{message:`Cerrar`,description:`Texto en el botón, utilizado para cerrar un cuadro de diálogo o panel`},"button.expand":{message:`Expandir`,description:`Texto del botón que se utiliza para abrir el editor de pantalla completa del cuadro de entrada de sugerencias.`},"button.alert":{message:`Alerta`,description:`Texto en el botón, utilizado para emitir una alerta`},"button.info":{message:`Información`,description:`Texto en el botón, utilizado para mostrar información`},"button.publish":{message:`Publicar`,description:`Texto en el botón, utilizado para publicar contenido`},"button.watch":{message:`Ver`,description:`Texto en el botón, utilizado para ver contenido`},"button.verify":{message:`Verificación de identidad`,description:`Texto en el botón, que permite al usuario realizar la verificación de identidad`},"button.profile":{message:`Perfil`,description:`Texto en el botón, utilizado para mostrar el perfil del usuario`},"button.console":{message:`Consola`,description:`Texto en el botón, utilizado para mostrar la página de consola para controlar contenido en la web`},"button.learn":{message:`Aprender`,description:`Texto en el botón, utilizado para permitir al usuario aprender sobre un tema`},"button.buy":{message:`Comprar`,description:`Texto en el botón, utilizado para permitir al usuario comprar algo`},"button.try":{message:`Probar`,description:`Texto en el botón, utilizado para permitir al usuario probar algo`},"button.startForFree":{message:`Comenzar gratis`,description:`Texto en el botón, utilizado para permitir al usuario comenzar de forma gratuita`},"button.download":{message:`Descargar`,description:`Texto en el botón, utilizado para descargar archivos (como audio, video, imágenes)`},"button.downloadAndroid":{message:`Descargar Android`,description:`Texto en el botón, utilizado para descargar el paquete de instalación de Android`},"button.downloadIos":{message:`Descargar paquete de instalación de iOS`,description:`Texto en el botón, utilizado para descargar el archivo del paquete de instalación de iOS`},"button.downloadWindows":{message:`Descargar para Windows`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Descargar para macOS`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Instalar iOS`,description:`Texto en el botón, utilizado para instalar la aplicación de iOS`},"button.apply":{message:`Solicitar`,description:`Texto en el botón, utilizado para permitir al usuario solicitar el servicio API`},"button.refresh":{message:`Actualizar`,description:`Texto en el botón, utilizado para actualizar la página`},"button.pay":{message:`Pagar`,description:`Texto en el botón, utilizado para permitir al usuario pagar por el servicio`},"button.repay":{message:`Continuar pagando`,description:`Texto en el botón, utilizado para permitir al usuario continuar pagando por el servicio`},"button.applied":{message:`Solicitado`,description:`Texto en el botón, utilizado para mostrar que el usuario ha solicitado el servicio`},"button.acquire":{message:`Obtener`,description:`Texto en el botón, utilizado para permitir al usuario obtener un token o clave del servicio API`},"button.fillExample":{message:`Completar ejemplo`,description:`Texto en el botón, utilizado para permitir al usuario completar datos de ejemplo`},"button.buyMore":{message:`Recargar`,description:`Texto en el botón, utilizado para permitir al usuario recargar. Debe traducirse como 'Recargar'.`},"button.update":{message:`Actualizar`,description:`Texto en el botón, utilizado para actualizar contenido`},"button.view":{message:`Ver`,description:`Texto en el botón, utilizado para ver contenido`},"button.create":{message:`Crear`,description:`Texto en el botón, utilizado para crear contenido`},"button.referralEarnings":{message:`Ingresos por referidos`,description:`Texto en el botón que muestra los ingresos por referidos, significa que el usuario puede ganar dinero invitando a otros a usar el servicio.`},"button.finish":{message:`Finalizar`,description:`Texto en el botón para completar una acción`},"entity.id":{message:`ID`,description:`Identificador único para mostrar la entidad`},"entity.type":{message:`Tipo`,description:`Tipo de entidad a mostrar`},"entity.website":{message:`Ace Data Cloud`,description:`Nombre del sitio web, no necesita traducción, mantener como 'Ace Data Cloud'`},"entity.copyright":{message:`Derechos de autor`,description:`Texto que muestra los derechos de autor`},"entity.platform":{message:`Plataforma`,description:`Texto que indica que este es un servicio de plataforma API`},"entity.title":{message:`Título`,description:`Título de la entidad`},"entity.icon":{message:`Ícono`,description:`Ícono de la entidad`},"entity.status":{message:`Estado`,description:`Estado de la entidad`},"status.loading":{message:`Cargando...`,description:`Texto de estado mostrado mientras se carga el contenido`},"error.appleSignInFailed":{message:`No se pudo iniciar sesión con Apple. Inténtalo de nuevo o usa otro método de inicio de sesión.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Operación`,description:`Operación de la entidad`},"entity.description":{message:`Descripción`,description:`Descripción de la entidad`},"entity.createdAt":{message:`Creado el`,description:`Fecha de creación de la entidad`},"entity.updatedAt":{message:`Actualizado el`,description:`Fecha de actualización de la entidad`},"entity.order":{message:`Orden`,description:`Orden de la entidad, que incluye información sobre dinero y servicios que el usuario debe pagar`},"message.noTasks":{message:`No hay tareas históricas, ¡comienza una nueva tarea!~`,description:`Mensaje cuando no hay tareas`},"message.guestTasks":{message:`Inicia sesión para empezar una tarea y ver aquí tus creaciones.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Monto utilizado`,description:`Para mostrar el monto utilizado del servicio`},"message.mobileAppDescription":{message:`Usa AceData directamente en tu teléfono, actualmente se ofrece la descarga del APK de Android. El paquete de instalación de iOS estará disponible después de completar la firma.`,description:`Texto descriptivo en la página de descarga de la aplicación móvil`},"message.mobileAndroidHint":{message:`Compatible con teléfonos y tabletas Android, escanea para descargar e instalar el último APK.`,description:`Descripción de la tarjeta de descarga de Android`},"message.mobileAndroidPending":{message:`El paquete de instalación de Android aún no está listo, por favor intenta más tarde.`,description:`Mensaje cuando el paquete de instalación de Android no está disponible`},"message.mobileAvailableNow":{message:`Android disponible para descarga`,description:`Para mostrar el estado de que Android ya está disponible para descargar`},"message.mobileSecureDelivery":{message:`Distribución segura por CDN`,description:`Para enfatizar que el enlace de descarga se entrega a través de CDN`},"message.mobileDirectInstall":{message:`Instalación directa de APK`,description:`Para describir que la instalación en Android es mediante APK directa`},"message.mobileLatestRelease":{message:`Versión pública actual`,description:`Para indicar que la versión mostrada es la última pública`},"message.mobileSharedAccount":{message:`Cuenta y cuota compartidas con la versión web`,description:`Para indicar que la versión móvil comparte cuenta con la versión web`},"message.mobileIosHint":{message:`Compatible con iPhone y iPad, se puede instalar directamente en línea; si el sistema bloquea, también se puede descargar el IPA y luego distribuir.`,description:`Descripción de la tarjeta de descarga de iOS`},"message.mobileIosPending":{message:`El paquete de instalación de iOS aún no está disponible para descarga, se proporcionará después de completar los certificados y perfiles de Apple.`,description:`Mensaje cuando el paquete de instalación de iOS no está disponible`},"message.mobileComingSoon":{message:`Próximamente`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`Para Windows 10 y posterior (64 bits). Descarga el instalador y haz doble clic para instalar.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`Para macOS 11 y posterior. Elige la versión que coincida con tu Mac: Apple Silicon (serie M) o Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Las apps de escritorio son versiones beta sin firmar. En Windows, elige «Más información → Ejecutar de todas formas» en el aviso de SmartScreen; en macOS, haz clic derecho en la app y elige «Abrir» para omitir Gatekeeper.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Disponible en Google Play`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`¿Sin acceso a Google Play? Descarga el APK directamente.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Escanea para abrir Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Al instalar por primera vez un paquete empresarial o Ad Hoc en iOS, el sistema puede requerir que confíes en el certificado en 'Configuración > General > VPN y gestión de dispositivos'.`,description:`Consejo de instalación de la aplicación móvil`},"title.mobileApp":{message:`Descarga móvil`,description:`Título de la página de descarga de la aplicación móvil`},"title.mobileFastAccess":{message:`Acceso más rápido, sin pasar por la tienda de aplicaciones`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la instalación rápida`},"title.mobileTrustedRelease":{message:`Gestión centralizada de versiones, distribución más estable`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la estabilidad de versiones y distribución`},"title.mobileUnifiedExperience":{message:`Experiencia unificada entre móvil y web`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la experiencia unificada`},"nav.mobileApp":{message:`Aplicación móvil`,description:`Entrada de descarga de la aplicación móvil en la navegación`},"message.mobileFastAccess":{message:`Los usuarios pueden escanear en el teléfono para instalar directamente, o pueden descargar el APK en el escritorio y luego distribuirlo a los miembros del equipo, ideal para pruebas rápidas y pruebas internas.`,description:`Descripción de ventajas en la página de descarga, enfatizando el acceso rápido`},"message.mobileTrustedRelease":{message:`Los enlaces de descarga están centralizados en una sola página, con número de versión, estado de la plataforma y método de instalación visibles de un vistazo, reduciendo los costos de comunicación causados por la dispersión de enlaces.`,description:`Descripción de ventajas en la página de descarga, enfatizando la distribución unificada`},"message.mobileUnifiedExperience":{message:`El sistema de cuentas, cuotas y entradas de servicio después de iniciar sesión se mantiene consistente con la versión web, facilitando a los usuarios cambiar sin problemas entre el escritorio y el móvil.`,description:`Descripción de ventajas en la página de descarga, enfatizando la experiencia de cuenta unificada`},"message.remainingAmount":{message:`Monto restante`,description:`Para mostrar el monto restante del servicio`},"message.copied":{message:`Copiado con éxito`,description:`Mensaje que indica que el contenido se ha copiado con éxito`},"message.restart":{message:`Regenerar`,description:`Mensaje que indica que el contenido se ha copiado con éxito`},"message.confirmDelete":{message:`¿Estás seguro de que deseas eliminarlo?`,description:`Mensaje que confirma que el usuario desea eliminar un contenido`},"message.expiredAt":{message:`Fecha de expiración`,description:`Mensaje que muestra la fecha de expiración del servicio`},"message.alert":{message:`Advertencia`,description:`Mensaje que alerta al usuario`},"message.deleteAccountConfirm":{message:`Esto eliminará permanentemente tu cuenta y todos los datos asociados. Esta acción no se puede deshacer. ¿Seguro que quieres continuar?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Tu cuenta ha sido eliminada.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`No se pudo eliminar tu cuenta. Inténtalo de nuevo más tarde.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`¡Esta acción es irreversible! Tu cuenta y todos sus datos se eliminarán de forma permanente y no se podrán recuperar.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Se eliminan de forma permanente: perfil, saldo y créditos, aplicaciones y suscripciones, claves de API y vínculos de inicio de sesión de terceros.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Escribe tu nombre de usuario para confirmar la eliminación:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Escribe aquí tu nombre de usuario`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Información`,description:`Mensaje que muestra información`},"message.free":{message:`Gratis`,description:`Mensaje que indica que el servicio es gratuito, lo que significa que el usuario no necesita pagar`},"message.startPrice":{message:`Precio inicial`,description:`Mensaje que muestra el precio más bajo del servicio`},"message.joinDiscord":{message:`Unirse a Discord`,description:`Mensaje que invita al usuario a unirse al canal de Discord`},"message.addWeChat":{message:`Agregar WeChat`,description:`Mensaje que invita al usuario a agregar su cuenta de WeChat`},"message.serviceTech":{message:`Soporte técnico`,description:`Mensaje que muestra el soporte técnico`},"message.businessCooperation":{message:`Cooperación de datos y negocios`,description:`Mensaje que muestra la cooperación comercial`},"message.noData":{message:`Sin datos`,description:`Mensaje que indica que no hay datos en la tabla o lista`},"nav.home":{message:`Inicio`,description:`Texto en la barra de navegación del sitio web que muestra la página de inicio`},"nav.content":{message:`Contenido`,description:`Texto en la barra de navegación del sitio web que muestra la página de contenido`},"nav.category":{message:`Categoría`,description:`Texto en la barra de navegación del sitio web que muestra la página de categoría`},"nav.service":{message:`Todos los servicios`,description:`Texto en la barra de navegación del sitio web que muestra la página de servicios`},"nav.profile":{message:`Yo`,description:`Texto en la barra de navegación del sitio web que muestra la página de perfil`},"nav.products":{message:`Productos`,description:`Texto en la barra de navegación del sitio web que muestra la página de productos`},"nav.referral":{message:`Programa de referidos`,description:`Texto en la barra de navegación del sitio web que muestra la página de referidos`},"nav.apiPlatform":{message:`Plataforma API`,description:`Texto en la barra de navegación del sitio web que muestra la página de la plataforma API`},"nav.document":{message:`Documentación de desarrollo`,description:`Texto en la barra de navegación del sitio web que muestra la página de documentación`},"nav.console":{message:`Consola`,description:`Texto en la barra de navegación del sitio web que muestra la página de consola`},"nav.chatgpt":{message:`ChatGPT`,description:`Texto en la barra de navegación del sitio web que muestra la página de ChatGPT, no traducir este campo, debe permanecer como 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Texto en la barra de navegación del sitio web que muestra la página de DeepSeek, no traducir este campo, debe permanecer como 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Texto en la barra de navegación del sitio web que muestra la página de Grok, no traducir este campo, debe permanecer como 'Grok'`},"nav.chat":{message:`Chat`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Chat'`},"nav.veo":{message:`Veo`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Veo'`},"nav.sora":{message:`Sora`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Texto en la barra de navegación del sitio web que muestra la página de Midjourney, no traducir este campo, debe permanecer como 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Texto en la barra de navegación del sitio web que muestra la página de arte 2D, no traducir este campo, debe permanecer como 'QRArt'`},"nav.suno":{message:`Suno`,description:`Texto en la barra de navegación del sitio web que muestra la página de Suno, no traducir este campo, debe permanecer como 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Texto en la barra de navegación del sitio web que muestra la página de Pixverse, no traducir este campo, debe permanecer como 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Texto en la barra de navegación del sitio web que muestra la página de Flux, no traducir este campo, debe permanecer como 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Texto en la barra de navegación del sitio web que muestra la página de Nano Banana, no traducir este campo, debe permanecer como 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`Texto en la barra de navegación del sitio web que muestra la página de OpenAI Image, no traducir este campo, debe permanecer como 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Texto en la barra de navegación del sitio, que muestra la página SeeDream, no debe traducirse, debe permanecer como 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Texto en la barra de navegación del sitio web que se utiliza para mostrar la página de Fish Audio, por favor no traduzca este campo, debe permanecer como 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Imagen`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`Música`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`Vídeo`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`Recompensas`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`Conexiones`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`Cerrar sesión`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`Eliminar cuenta`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Configuración del sitio`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`Mis subsitios`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`Configuración`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`Foto de identificación AI`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`Más`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`Configuración de idioma`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`Soporte al cliente`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`Modo oscuro`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`Advertencia`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`Por favor seleccione`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`Por favor complete`,description:`输入的占位符`},"title.allApplications":{message:`Todas las solicitudes`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`Todos los pedidos`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`Información del pedido`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`Recargar`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`Recompensas`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`Configuración del sitio`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`Historial de recomendaciones`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`Invitado`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`Historial de uso`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`Claves`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`Contáctanos`,description:`Título de la sección que muestra la información de contacto`},"about.title2":{message:`Recursos`,description:`Título de la sección que muestra enlaces`},"about.title3":{message:`Enlaces`,description:`Título de la sección que muestra información de soporte`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, DE 19713, EE. UU.`,description:`La dirección de la empresa`},"about.email":{message:`office@acedata.cloud`,description:`El correo electrónico de la empresa`},"about.link1":{message:`Servicios`,description:`Enlace a la página de documentación`},"about.link2":{message:`Documentación de desarrollo`,description:`Enlace a la página de servicios`},"about.link3":{message:`Consola`,description:`Enlace a la página de la consola`},"about.link4":{message:`Perfil`,description:`Enlace a la página de perfil`},"about.link5":{message:`Plataforma UI`,description:`Enlace a la página principal`},"about.link6":{message:`Ingresos por referidos`,description:`Enlace a la página de ingresos por referidos`},"about.link7":{message:`Soporte`,description:`Enlace a la página de soporte`},"about.link8":{message:`Términos de servicio`,description:`Enlace a la página de términos de servicio`},"about.link9":{message:`Política de privacidad`,description:`Enlace a la página de política de privacidad`},"theme.light":{message:`Claro`,description:`Nombre del tema claro`},"theme.dark":{message:`Oscuro`,description:`Nombre del tema oscuro`},"theme.system":{message:`Sistema`,description:`Nombre del tema del sistema, indica que el tema cambia automáticamente según la configuración del sistema`},"settings.general":{message:`Configuración general`,description:`Título de la sección de configuración general en la página de configuración`},"settings.language":{message:`Idioma`,description:`Título de la sección de configuración de idioma en la página de configuración`},"settings.theme":{message:`Tema`,description:`Título de la sección de configuración de tema en la página de configuración`},"settings.seo":{message:`Configuración SEO`,description:`Título de la sección de configuración SEO en la página de configuración`},"settings.site":{message:`Configuración del sitio`,description:`Título de la sección de configuración del sitio en la página de configuración`},"settings.distribution":{message:`Configuración de distribución`,description:`Título de la sección de configuración de distribución en la página de configuración`},"settings.function":{message:`Configuración de funciones`,description:`Título de la sección de configuración de funciones en la página de configuración`},"settings.auth":{message:`Método de inicio de sesión`,description:`Título de la pestaña 'Método de inicio de sesión' en la barra lateral de la página de configuración — configura los métodos de inicio de sesión permitidos en el sitio y el método de inicio de sesión predeterminado, visible solo para el administrador del sitio.`},"settings.apiKey":{message:`Clave API`,description:`Etiqueta de la clave API en la barra lateral de la página de configuración: gestión de claves API de proveedores de servicios upstream (BYOK)`},"field.operations":{message:`Operaciones`,description:`Título de columna genérico: columna de botones de operación en las filas de la tabla (editar, eliminar, etc.)`},"nav.gemini":{message:`Gemini`,description:`Texto en la barra de navegación del sitio web para mostrar la página de Gemini, debe permanecer como 'Gemini'`},"nav.claude":{message:`Claude`,description:`Texto en la barra de navegación del sitio web para mostrar la página de Claude, debe permanecer como 'Claude'`},"button.detail":{message:`Ver detalles`,description:``},"button.testEnv":{message:`Entorno de prueba`,description:`Texto en el botón para cambiar al entorno de prueba`},"button.upload":{message:`Subir`,description:`Texto en el botón para subir archivos o contenido`},"message.cnbeian":{message:`Registro en China`,description:`Información de registro en China`},"message.copyFailed":{message:`Error al copiar`,description:`Mensaje que indica que la copia de contenido falló`},"nav.tryNow":{message:`Prueba rápida`,description:`Texto en la barra de navegación del sitio web para permitir que los usuarios prueben el servicio`},"title.coin":{message:`Criptomonedas`,description:`Título de la página que muestra criptomonedas`},"title.distributionRank":{message:`Ranking de referidos`,description:`Título de la página que muestra el ranking de referidos`},"title.distributionPlatformRank":{message:`Ranking de plataformas`,description:`Título de la página que muestra el ranking de plataformas`},"customers.name1":{message:`Mark Du`,description:`Nombre del cliente`},"customers.job1":{message:`Ingeniero de software`,description:`Profesión del cliente`},"customers.comment1":{message:`Ace Data Cloud ha brindado un excelente servicio a nuestro equipo, ayudándonos a aumentar la productividad. ¡Me encanta!`,description:`Comentario del cliente`},"customers.name2":{message:`Jacob Williams`,description:`Nombre del cliente`},"customers.job2":{message:`Gerente de producto`,description:`Profesión del cliente`},"customers.comment2":{message:`Ace Data Cloud es una gran plataforma de integración, con un servicio de calidad excepcional.`,description:`Comentario del cliente`},"customers.name3":{message:`Larry Henry`,description:`Nombre del cliente`},"customers.job3":{message:`Diseñador`,description:`Profesión del cliente`},"customers.comment3":{message:`Me encanta el servicio de Ace Data Cloud, es fácil de usar y a buen precio, ¡espero que siga mejorando!`,description:`Comentario del cliente`},"nav.github":{message:`GitHub`,description:`Enlace al repositorio de GitHub`},"settings.github":{message:`Código fuente`,description:`Enlace para ver el código fuente en GitHub`},"settings.about":{message:`Acerca de`,description:`Título de la sección 'Acerca de' en la página de configuración`},"settings.localTools":{message:`Herramientas locales`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Disponible solo en la aplicación de escritorio.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Carpetas autorizadas`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Carpetas que la IA puede leer y escribir en este equipo. Las herramientas se ejecutan localmente; nada sale de tu dispositivo sin tu consentimiento.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Autorizar previamente todas las acciones del equipo`,"settings.localToolsPreauthorizeHint":`Permite de una vez la captura de pantalla, el clic, la escritura, las teclas y todas las acciones, y solicita los permisos del sistema necesarios.`,"settings.localToolsCuActionsTitle":`Permitir acciones individuales`,"settings.localToolsCuActionsHint":`Activa solo las acciones que quieras que la IA ejecute sin preguntar cada vez. Cada una se puede revocar aquí.`,"settings.localToolsCuScreenshot":`Captura de pantalla`,"settings.localToolsCuClick":`Clic`,"settings.localToolsCuMove":`Mover el puntero`,"settings.localToolsCuType":`Escribir texto`,"settings.localToolsCuKey":`Pulsar teclas`,"settings.localToolsCuScroll":`Desplazamiento`,"settings.localToolsBuiltinTitle":`Herramientas integradas`,"settings.localToolsBuiltinHint":`Activa una herramienta para que la IA la ejecute sin preguntar. Shell puede ejecutar cualquier comando en este equipo; actívalo solo si confías. Las herramientas de archivos siguen limitadas a tus carpetas autorizadas.`,"settings.localToolsBuiltinRisky":`Acceso total`,"settings.localToolsAddFolder":{message:`Agregar carpeta`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Quitar`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Aún no hay carpetas autorizadas.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Guardar`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Guardado`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Herramientas activas`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Acciones siempre permitidas`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Llamadas de herramientas que elegiste permitir siempre. Se ejecutan sin volver a preguntar. Revoca cualquiera para reactivar la confirmación.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Revocar`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Revocar todo`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`No hay acciones siempre permitidas. Se te preguntará antes de ejecutar cada herramienta local.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Permisos del sistema`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Opcional. El acceso a carpetas de arriba no necesita ninguno; concede solo lo que requiera una tarea concreta.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Acceso a todo el disco`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Grabación de pantalla`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Accesibilidad`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Concedido`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`No concedido`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Abrir…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Mis subsitios`,description:`Título de la pestaña de gestión de subsitios en el cuadro de configuración. Solo visible en el sitio principal oficial, los subsitios no se muestran.`},"settings.adminOnlyHint":{message:`Esta sección solo es visible para administradores del sitio, los usuarios normales no pueden acceder.`,description:`Mensaje que se muestra en la parte superior de las pestañas de configuración del sitio / configuración SEO / configuración de distribución / configuración de funciones, que solo son visibles para administradores.`},"settings.officialOnlyHint":{message:`Esta sección solo es visible en el sitio principal, no se mostrará en las subpáginas.`,description:`Mensaje que se muestra en la parte superior de la pestaña 'Mis subpáginas', indicando que este acceso solo aparece en el sitio oficial.`},"settings.customDomain":{message:`Dominio personalizado`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Construir ahora`,description:`Texto del botón 'Construir subsitio' en la página 'Acerca de', solo visible en el sitio principal oficial`},"settings.poweredBy":{message:`Proyecto de código abierto`,description:`Título que muestra en qué proyecto de código abierto se basa este sitio en la página 'Acerca de'`},"settings.poweredByTip":{message:`Este sitio se basa en el proyecto de código abierto Nexior, el código es completamente abierto.`,description:`Descripción que muestra en qué proyecto de código abierto se basa este sitio en la página 'Acerca de'`},"settings.apiService":{message:`Servicio API`,description:`Título que muestra el proveedor del servicio API en la página 'Acerca de'`},"settings.apiServiceTip":{message:`El servicio API de este sitio es proporcionado por Ace Data Cloud.`,description:`Descripción que muestra el proveedor del servicio API en la página 'Acerca de'`},"settings.buildYourOwn":{message:`Construye el tuyo`,description:`Título que indica a los usuarios que pueden construir un sitio similar en la página 'Acerca de'`},"settings.buildYourOwnTip":{message:`¿Quieres construir un sitio de IA similar? Contáctanos para obtener soporte de implementación.`,description:`Descripción sobre cómo construir un sitio similar en la página 'Acerca de'`},"settings.contactUs":{message:`Contactar soporte`,description:`Texto del botón para contactar soporte`},"message.viewOnGithub":{message:`Ver en GitHub`,description:`Texto del enlace para ver el proyecto en GitHub`},"title.notFound":{message:`Página no encontrada`,description:`Título de la página 404`},"message.notFound":{message:`La página que buscas no existe, es posible que el enlace haya cambiado o haya sido eliminado. Regresa a la página de inicio para seguir explorando los servicios de IA de AceData.`,description:`Descripción secundaria de la página 404`},"message.notFoundEyebrow":{message:`¡Ha ocurrido un error!`,description:`Texto de la etiqueta pequeña en la parte superior de la página 404`},"message.notFoundPath":{message:`Ruta solicitada`,description:`Etiqueta que muestra la ruta de solicitud actual en la página 404`},"button.backToHome":{message:`Volver a la página de inicio`,description:`Texto del botón para regresar a la página de inicio`},"button.goBack":{message:`Regresar a la página anterior`,description:`Texto del botón para regresar a la página anterior en el historial de navegación`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Solicitud`,description:`Etiqueta de la pestaña del diálogo de código API para el fragmento de solicitud (el código que reproduce el resultado actual).`},"tab.apiResponse":{message:`Respuesta`,description:`Etiqueta de la pestaña del diálogo de código API para la respuesta en vivo devuelta después de hacer clic en Ejecutar.`},"button.apiRun":{message:`Ejecutar de nuevo`,description:`Botón del diálogo de código API que vuelve a ejecutar la solicitud en vivo contra la API usando la clave del usuario. El resultado ya existe, por lo que al hacer clic se ejecuta de nuevo y es facturable.`},"button.apiRunning":{message:`Ejecutando…`,description:`Etiqueta del botón Ejecutar en el diálogo de código API mientras la solicitud en vivo está en proceso.`},"button.apiRunConfirm":{message:`Confirmar ejecución`,description:`Etiqueta del botón de confirmación en el diálogo que advierte que ejecutar aquí consume créditos adicionales.`},"button.viewDocs":{message:`Ver documentación`,description:`Botón en el pie del diálogo de código API que abre la página de documentación API correspondiente en la plataforma.`},"message.apiClickRun":{message:`Haz clic en 'Ejecutar de nuevo' para usar tu API Key y ejecutar esta solicitud en tiempo real.`,description:`Estado vacío de la pestaña de respuesta del diálogo de código API, mostrado antes de que el usuario ejecute la solicitud.`},"message.apiRunConfirmTitle":{message:`Confirmar ejecución`,description:`Título del diálogo de confirmación mostrado antes de volver a ejecutar una solicitud desde el diálogo de código API.`},"message.apiRunConfirmDesc":{message:`Esta ejecución utilizará tu API Key para realizar una llamada real a la API y consumirá créditos adicionales, ¿confirmas continuar?`,description:`Cuerpo del diálogo de confirmación que advierte que volver a ejecutar la solicitud es una llamada API real y facturable.`},"message.apiRunConfirmSkip":{message:`No volver a mostrar`,description:`Casilla de verificación en el diálogo de confirmación de ejecución que, al marcarse, suprime la advertencia en ejecuciones posteriores.`},"message.apiRunTaskCreated":{message:`Tarea creada, cierra esta ventana para ver los resultados más recientes a continuación.`,description:`Banner de éxito mostrado en el diálogo de código API después de que una ejecución devuelve un id de tarea, sugiriendo que la nueva tarea ya aparece en la lista detrás del diálogo.`},"button.apiViewLatest":{message:`Cerrar y ver`,description:`Botón en el banner de éxito del diálogo de código API que cierra el diálogo para que el usuario pueda ver la tarea recién creada en la lista a continuación.`},"message.uploadInProgress":{message:`Las cargas de referencia aún están en curso; espera un momento.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Texto en la barra de navegación que lleva a la página de conversión de artículos a videos de Maestro, manteniendo 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|
|
1
|
+
var e={"button.setup":{message:`Configuración`,description:`Texto en el botón, utilizado para realizar configuraciones`},"button.start":{message:`Iniciar`,description:`Texto en el botón, utilizado para comenzar ciertas acciones`},"button.copy":{message:`Copiar`,description:`Texto en el botón, utilizado para copiar contenido`},"button.copied":{message:`Copiado`,description:`Texto en el botón, utilizado para indicar que el contenido ha sido copiado`},"button.restart":{message:`Regenerar`,description:`Texto en el botón, utilizado para regenerar contenido`},"button.preview":{message:`Vista previa`,description:`Texto en el botón, utilizado para abrir una vista previa de un archivo a través de URL`},"button.seeRawImage":{message:`Ver imagen original`,description:`Texto en el botón, utilizado para ver la imagen original`},"button.seeRawVideo":{message:`Ver video original`,description:`Texto en el botón, utilizado para ver el video original`},"button.edit":{message:`Editar`,description:`Texto en el botón, utilizado para editar contenido`},"button.login":{message:`Iniciar sesión`,description:`Texto en el botón, utilizado para iniciar sesión`},"button.logout":{message:`Cerrar sesión`,description:`Texto en el botón, utilizado para cerrar sesión`},"button.new":{message:`Nuevo`,description:`Texto en el botón, utilizado para crear un nuevo elemento`},"button.delete":{message:`Eliminar`,description:`Texto en el botón, utilizado para eliminar contenido`},"button.deletePermanently":{message:`Eliminar cuenta permanentemente`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Confirmar`,description:`Texto en el botón, utilizado para confirmar una acción`},"button.cancel":{message:`Cancelar`,description:`Texto en el botón, utilizado para cancelar una acción`},"button.close":{message:`Cerrar`,description:`Texto en el botón, utilizado para cerrar un cuadro de diálogo o panel`},"button.expand":{message:`Expandir`,description:`Texto del botón que se utiliza para abrir el editor de pantalla completa del cuadro de entrada de sugerencias.`},"button.alert":{message:`Alerta`,description:`Texto en el botón, utilizado para emitir una alerta`},"button.info":{message:`Información`,description:`Texto en el botón, utilizado para mostrar información`},"button.publish":{message:`Publicar`,description:`Texto en el botón, utilizado para publicar contenido`},"button.watch":{message:`Ver`,description:`Texto en el botón, utilizado para ver contenido`},"button.verify":{message:`Verificación de identidad`,description:`Texto en el botón, que permite al usuario realizar la verificación de identidad`},"button.profile":{message:`Perfil`,description:`Texto en el botón, utilizado para mostrar el perfil del usuario`},"button.console":{message:`Consola`,description:`Texto en el botón, utilizado para mostrar la página de consola para controlar contenido en la web`},"button.learn":{message:`Aprender`,description:`Texto en el botón, utilizado para permitir al usuario aprender sobre un tema`},"button.buy":{message:`Comprar`,description:`Texto en el botón, utilizado para permitir al usuario comprar algo`},"button.try":{message:`Probar`,description:`Texto en el botón, utilizado para permitir al usuario probar algo`},"button.startForFree":{message:`Comenzar gratis`,description:`Texto en el botón, utilizado para permitir al usuario comenzar de forma gratuita`},"button.download":{message:`Descargar`,description:`Texto en el botón, utilizado para descargar archivos (como audio, video, imágenes)`},"button.downloadAndroid":{message:`Descargar Android`,description:`Texto en el botón, utilizado para descargar el paquete de instalación de Android`},"button.downloadIos":{message:`Descargar paquete de instalación de iOS`,description:`Texto en el botón, utilizado para descargar el archivo del paquete de instalación de iOS`},"button.downloadWindows":{message:`Descargar para Windows`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Descargar para macOS`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Instalar iOS`,description:`Texto en el botón, utilizado para instalar la aplicación de iOS`},"button.apply":{message:`Solicitar`,description:`Texto en el botón, utilizado para permitir al usuario solicitar el servicio API`},"button.refresh":{message:`Actualizar`,description:`Texto en el botón, utilizado para actualizar la página`},"button.pay":{message:`Pagar`,description:`Texto en el botón, utilizado para permitir al usuario pagar por el servicio`},"button.repay":{message:`Continuar pagando`,description:`Texto en el botón, utilizado para permitir al usuario continuar pagando por el servicio`},"button.applied":{message:`Solicitado`,description:`Texto en el botón, utilizado para mostrar que el usuario ha solicitado el servicio`},"button.acquire":{message:`Obtener`,description:`Texto en el botón, utilizado para permitir al usuario obtener un token o clave del servicio API`},"button.fillExample":{message:`Completar ejemplo`,description:`Texto en el botón, utilizado para permitir al usuario completar datos de ejemplo`},"button.buyMore":{message:`Recargar`,description:`Texto en el botón, utilizado para permitir al usuario recargar. Debe traducirse como 'Recargar'.`},"button.update":{message:`Actualizar`,description:`Texto en el botón, utilizado para actualizar contenido`},"button.view":{message:`Ver`,description:`Texto en el botón, utilizado para ver contenido`},"button.create":{message:`Crear`,description:`Texto en el botón, utilizado para crear contenido`},"button.referralEarnings":{message:`Ingresos por referidos`,description:`Texto en el botón que muestra los ingresos por referidos, significa que el usuario puede ganar dinero invitando a otros a usar el servicio.`},"button.finish":{message:`Finalizar`,description:`Texto en el botón para completar una acción`},"entity.id":{message:`ID`,description:`Identificador único para mostrar la entidad`},"entity.type":{message:`Tipo`,description:`Tipo de entidad a mostrar`},"entity.website":{message:`Ace Data Cloud`,description:`Nombre del sitio web, no necesita traducción, mantener como 'Ace Data Cloud'`},"entity.copyright":{message:`Derechos de autor`,description:`Texto que muestra los derechos de autor`},"entity.platform":{message:`Plataforma`,description:`Texto que indica que este es un servicio de plataforma API`},"entity.title":{message:`Título`,description:`Título de la entidad`},"entity.icon":{message:`Ícono`,description:`Ícono de la entidad`},"entity.status":{message:`Estado`,description:`Estado de la entidad`},"status.loading":{message:`Cargando...`,description:`Texto de estado mostrado mientras se carga el contenido`},"error.appleSignInFailed":{message:`No se pudo iniciar sesión con Apple. Inténtalo de nuevo o usa otro método de inicio de sesión.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Operación`,description:`Operación de la entidad`},"entity.description":{message:`Descripción`,description:`Descripción de la entidad`},"entity.createdAt":{message:`Creado el`,description:`Fecha de creación de la entidad`},"entity.updatedAt":{message:`Actualizado el`,description:`Fecha de actualización de la entidad`},"entity.order":{message:`Orden`,description:`Orden de la entidad, que incluye información sobre dinero y servicios que el usuario debe pagar`},"message.noTasks":{message:`No hay tareas históricas, ¡comienza una nueva tarea!~`,description:`Mensaje cuando no hay tareas`},"message.guestTasks":{message:`Inicia sesión para empezar una tarea y ver aquí tus creaciones.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Monto utilizado`,description:`Para mostrar el monto utilizado del servicio`},"message.mobileAppDescription":{message:`Usa AceData directamente en tu teléfono, actualmente se ofrece la descarga del APK de Android. El paquete de instalación de iOS estará disponible después de completar la firma.`,description:`Texto descriptivo en la página de descarga de la aplicación móvil`},"message.mobileAndroidHint":{message:`Compatible con teléfonos y tabletas Android, escanea para descargar e instalar el último APK.`,description:`Descripción de la tarjeta de descarga de Android`},"message.mobileAndroidPending":{message:`El paquete de instalación de Android aún no está listo, por favor intenta más tarde.`,description:`Mensaje cuando el paquete de instalación de Android no está disponible`},"message.mobileAvailableNow":{message:`Android disponible para descarga`,description:`Para mostrar el estado de que Android ya está disponible para descargar`},"message.mobileSecureDelivery":{message:`Distribución segura por CDN`,description:`Para enfatizar que el enlace de descarga se entrega a través de CDN`},"message.mobileDirectInstall":{message:`Instalación directa de APK`,description:`Para describir que la instalación en Android es mediante APK directa`},"message.mobileLatestRelease":{message:`Versión pública actual`,description:`Para indicar que la versión mostrada es la última pública`},"message.mobileSharedAccount":{message:`Cuenta y cuota compartidas con la versión web`,description:`Para indicar que la versión móvil comparte cuenta con la versión web`},"message.mobileIosHint":{message:`Compatible con iPhone y iPad, se puede instalar directamente en línea; si el sistema bloquea, también se puede descargar el IPA y luego distribuir.`,description:`Descripción de la tarjeta de descarga de iOS`},"message.mobileIosPending":{message:`El paquete de instalación de iOS aún no está disponible para descarga, se proporcionará después de completar los certificados y perfiles de Apple.`,description:`Mensaje cuando el paquete de instalación de iOS no está disponible`},"message.mobileComingSoon":{message:`Próximamente`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`Para Windows 10 y posterior (64 bits). Descarga el instalador y haz doble clic para instalar.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`Para macOS 11 y posterior. Elige la versión que coincida con tu Mac: Apple Silicon (serie M) o Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Las apps de escritorio son versiones beta sin firmar. En Windows, elige «Más información → Ejecutar de todas formas» en el aviso de SmartScreen; en macOS, haz clic derecho en la app y elige «Abrir» para omitir Gatekeeper.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Disponible en Google Play`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`¿Sin acceso a Google Play? Descarga el APK directamente.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Escanea para abrir Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Al instalar por primera vez un paquete empresarial o Ad Hoc en iOS, el sistema puede requerir que confíes en el certificado en 'Configuración > General > VPN y gestión de dispositivos'.`,description:`Consejo de instalación de la aplicación móvil`},"title.mobileApp":{message:`Descarga móvil`,description:`Título de la página de descarga de la aplicación móvil`},"title.mobileFastAccess":{message:`Acceso más rápido, sin pasar por la tienda de aplicaciones`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la instalación rápida`},"title.mobileTrustedRelease":{message:`Gestión centralizada de versiones, distribución más estable`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la estabilidad de versiones y distribución`},"title.mobileUnifiedExperience":{message:`Experiencia unificada entre móvil y web`,description:`Título de la tarjeta de ventajas en la página de descarga, enfatizando la experiencia unificada`},"nav.mobileApp":{message:`Aplicación móvil`,description:`Entrada de descarga de la aplicación móvil en la navegación`},"message.mobileFastAccess":{message:`Los usuarios pueden escanear en el teléfono para instalar directamente, o pueden descargar el APK en el escritorio y luego distribuirlo a los miembros del equipo, ideal para pruebas rápidas y pruebas internas.`,description:`Descripción de ventajas en la página de descarga, enfatizando el acceso rápido`},"message.mobileTrustedRelease":{message:`Los enlaces de descarga están centralizados en una sola página, con número de versión, estado de la plataforma y método de instalación visibles de un vistazo, reduciendo los costos de comunicación causados por la dispersión de enlaces.`,description:`Descripción de ventajas en la página de descarga, enfatizando la distribución unificada`},"message.mobileUnifiedExperience":{message:`El sistema de cuentas, cuotas y entradas de servicio después de iniciar sesión se mantiene consistente con la versión web, facilitando a los usuarios cambiar sin problemas entre el escritorio y el móvil.`,description:`Descripción de ventajas en la página de descarga, enfatizando la experiencia de cuenta unificada`},"message.remainingAmount":{message:`Monto restante`,description:`Para mostrar el monto restante del servicio`},"message.copied":{message:`Copiado con éxito`,description:`Mensaje que indica que el contenido se ha copiado con éxito`},"message.restart":{message:`Regenerar`,description:`Mensaje que indica que el contenido se ha copiado con éxito`},"message.confirmDelete":{message:`¿Estás seguro de que deseas eliminarlo?`,description:`Mensaje que confirma que el usuario desea eliminar un contenido`},"message.expiredAt":{message:`Fecha de expiración`,description:`Mensaje que muestra la fecha de expiración del servicio`},"message.alert":{message:`Advertencia`,description:`Mensaje que alerta al usuario`},"message.deleteAccountConfirm":{message:`Esto eliminará permanentemente tu cuenta y todos los datos asociados. Esta acción no se puede deshacer. ¿Seguro que quieres continuar?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Tu cuenta ha sido eliminada.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`No se pudo eliminar tu cuenta. Inténtalo de nuevo más tarde.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`¡Esta acción es irreversible! Tu cuenta y todos sus datos se eliminarán de forma permanente y no se podrán recuperar.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Se eliminan de forma permanente: perfil, saldo y créditos, aplicaciones y suscripciones, claves de API y vínculos de inicio de sesión de terceros.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Escribe tu nombre de usuario para confirmar la eliminación:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Escribe aquí tu nombre de usuario`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Información`,description:`Mensaje que muestra información`},"message.free":{message:`Gratis`,description:`Mensaje que indica que el servicio es gratuito, lo que significa que el usuario no necesita pagar`},"message.startPrice":{message:`Precio inicial`,description:`Mensaje que muestra el precio más bajo del servicio`},"message.joinDiscord":{message:`Unirse a Discord`,description:`Mensaje que invita al usuario a unirse al canal de Discord`},"message.addWeChat":{message:`Agregar WeChat`,description:`Mensaje que invita al usuario a agregar su cuenta de WeChat`},"message.serviceTech":{message:`Soporte técnico`,description:`Mensaje que muestra el soporte técnico`},"message.businessCooperation":{message:`Cooperación de datos y negocios`,description:`Mensaje que muestra la cooperación comercial`},"message.noData":{message:`Sin datos`,description:`Mensaje que indica que no hay datos en la tabla o lista`},"nav.home":{message:`Inicio`,description:`Texto en la barra de navegación del sitio web que muestra la página de inicio`},"nav.content":{message:`Contenido`,description:`Texto en la barra de navegación del sitio web que muestra la página de contenido`},"nav.category":{message:`Categoría`,description:`Texto en la barra de navegación del sitio web que muestra la página de categoría`},"nav.service":{message:`Todos los servicios`,description:`Texto en la barra de navegación del sitio web que muestra la página de servicios`},"nav.profile":{message:`Yo`,description:`Texto en la barra de navegación del sitio web que muestra la página de perfil`},"nav.products":{message:`Productos`,description:`Texto en la barra de navegación del sitio web que muestra la página de productos`},"nav.referral":{message:`Programa de referidos`,description:`Texto en la barra de navegación del sitio web que muestra la página de referidos`},"nav.apiPlatform":{message:`Plataforma API`,description:`Texto en la barra de navegación del sitio web que muestra la página de la plataforma API`},"nav.document":{message:`Documentación de desarrollo`,description:`Texto en la barra de navegación del sitio web que muestra la página de documentación`},"nav.console":{message:`Consola`,description:`Texto en la barra de navegación del sitio web que muestra la página de consola`},"nav.chatgpt":{message:`ChatGPT`,description:`Texto en la barra de navegación del sitio web que muestra la página de ChatGPT, no traducir este campo, debe permanecer como 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Texto en la barra de navegación del sitio web que muestra la página de DeepSeek, no traducir este campo, debe permanecer como 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Texto en la barra de navegación del sitio web que muestra la página de Grok, no traducir este campo, debe permanecer como 'Grok'`},"nav.chat":{message:`Chat`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Chat'`},"nav.veo":{message:`Veo`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Veo'`},"nav.sora":{message:`Sora`,description:`Texto en la barra de navegación del sitio web que muestra la página de chat, no traducir este campo, debe permanecer como 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Texto en la barra de navegación del sitio web que muestra la página de Midjourney, no traducir este campo, debe permanecer como 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Texto en la barra de navegación del sitio web que muestra la página de arte 2D, no traducir este campo, debe permanecer como 'QRArt'`},"nav.suno":{message:`Suno`,description:`Texto en la barra de navegación del sitio web que muestra la página de Suno, no traducir este campo, debe permanecer como 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Texto en la barra de navegación del sitio web que muestra la página de Pixverse, no traducir este campo, debe permanecer como 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Texto en la barra de navegación del sitio web que muestra la página de Flux, no traducir este campo, debe permanecer como 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Texto en la barra de navegación del sitio web que muestra la página de Nano Banana, no traducir este campo, debe permanecer como 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`Texto en la barra de navegación del sitio web que muestra la página de OpenAI Image, no traducir este campo, debe permanecer como 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Texto en la barra de navegación del sitio, que muestra la página SeeDream, no debe traducirse, debe permanecer como 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Texto en la barra de navegación del sitio web que se utiliza para mostrar la página de Fish Audio, por favor no traduzca este campo, debe permanecer como 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Imagen`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`Música`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`Vídeo`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`Recompensas`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`Conexiones`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`Cerrar sesión`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`Eliminar cuenta`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Configuración del sitio`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`Mis subsitios`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`Configuración`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`Foto de identificación AI`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`Más`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`Configuración de idioma`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`Soporte al cliente`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`Modo oscuro`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`Advertencia`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`Por favor seleccione`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`Por favor complete`,description:`输入的占位符`},"title.allApplications":{message:`Todas las solicitudes`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`Todos los pedidos`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`Información del pedido`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`Recargar`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`Recompensas`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`Configuración del sitio`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`Historial de recomendaciones`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`Invitado`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`Historial de uso`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`Claves`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`Contáctanos`,description:`Título de la sección que muestra la información de contacto`},"about.title2":{message:`Recursos`,description:`Título de la sección que muestra enlaces`},"about.title3":{message:`Enlaces`,description:`Título de la sección que muestra información de soporte`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, DE 19713, EE. UU.`,description:`La dirección de la empresa`},"about.email":{message:`office@acedata.cloud`,description:`El correo electrónico de la empresa`},"about.link1":{message:`Servicios`,description:`Enlace a la página de documentación`},"about.link2":{message:`Documentación de desarrollo`,description:`Enlace a la página de servicios`},"about.link3":{message:`Consola`,description:`Enlace a la página de la consola`},"about.link4":{message:`Perfil`,description:`Enlace a la página de perfil`},"about.link5":{message:`Plataforma UI`,description:`Enlace a la página principal`},"about.link6":{message:`Ingresos por referidos`,description:`Enlace a la página de ingresos por referidos`},"about.link7":{message:`Soporte`,description:`Enlace a la página de soporte`},"about.link8":{message:`Términos de servicio`,description:`Enlace a la página de términos de servicio`},"about.link9":{message:`Política de privacidad`,description:`Enlace a la página de política de privacidad`},"theme.light":{message:`Claro`,description:`Nombre del tema claro`},"theme.dark":{message:`Oscuro`,description:`Nombre del tema oscuro`},"theme.system":{message:`Sistema`,description:`Nombre del tema del sistema, indica que el tema cambia automáticamente según la configuración del sistema`},"settings.general":{message:`Configuración general`,description:`Título de la sección de configuración general en la página de configuración`},"settings.language":{message:`Idioma`,description:`Título de la sección de configuración de idioma en la página de configuración`},"settings.theme":{message:`Tema`,description:`Título de la sección de configuración de tema en la página de configuración`},"settings.seo":{message:`Configuración SEO`,description:`Título de la sección de configuración SEO en la página de configuración`},"settings.site":{message:`Configuración del sitio`,description:`Título de la sección de configuración del sitio en la página de configuración`},"settings.distribution":{message:`Configuración de distribución`,description:`Título de la sección de configuración de distribución en la página de configuración`},"settings.function":{message:`Configuración de funciones`,description:`Título de la sección de configuración de funciones en la página de configuración`},"settings.auth":{message:`Método de inicio de sesión`,description:`Título de la pestaña 'Método de inicio de sesión' en la barra lateral de la página de configuración — configura los métodos de inicio de sesión permitidos en el sitio y el método de inicio de sesión predeterminado, visible solo para el administrador del sitio.`},"settings.apiKey":{message:`Clave API`,description:`Etiqueta de la clave API en la barra lateral de la página de configuración: gestión de claves API de proveedores de servicios upstream (BYOK)`},"field.operations":{message:`Operaciones`,description:`Título de columna genérico: columna de botones de operación en las filas de la tabla (editar, eliminar, etc.)`},"nav.gemini":{message:`Gemini`,description:`Texto en la barra de navegación del sitio web para mostrar la página de Gemini, debe permanecer como 'Gemini'`},"nav.claude":{message:`Claude`,description:`Texto en la barra de navegación del sitio web para mostrar la página de Claude, debe permanecer como 'Claude'`},"button.detail":{message:`Ver detalles`,description:``},"button.testEnv":{message:`Entorno de prueba`,description:`Texto en el botón para cambiar al entorno de prueba`},"button.upload":{message:`Subir`,description:`Texto en el botón para subir archivos o contenido`},"message.cnbeian":{message:`Registro en China`,description:`Información de registro en China`},"message.copyFailed":{message:`Error al copiar`,description:`Mensaje que indica que la copia de contenido falló`},"nav.tryNow":{message:`Prueba rápida`,description:`Texto en la barra de navegación del sitio web para permitir que los usuarios prueben el servicio`},"title.coin":{message:`Criptomonedas`,description:`Título de la página que muestra criptomonedas`},"title.distributionRank":{message:`Ranking de referidos`,description:`Título de la página que muestra el ranking de referidos`},"title.distributionPlatformRank":{message:`Ranking de plataformas`,description:`Título de la página que muestra el ranking de plataformas`},"customers.name1":{message:`Mark Du`,description:`Nombre del cliente`},"customers.job1":{message:`Ingeniero de software`,description:`Profesión del cliente`},"customers.comment1":{message:`Ace Data Cloud ha brindado un excelente servicio a nuestro equipo, ayudándonos a aumentar la productividad. ¡Me encanta!`,description:`Comentario del cliente`},"customers.name2":{message:`Jacob Williams`,description:`Nombre del cliente`},"customers.job2":{message:`Gerente de producto`,description:`Profesión del cliente`},"customers.comment2":{message:`Ace Data Cloud es una gran plataforma de integración, con un servicio de calidad excepcional.`,description:`Comentario del cliente`},"customers.name3":{message:`Larry Henry`,description:`Nombre del cliente`},"customers.job3":{message:`Diseñador`,description:`Profesión del cliente`},"customers.comment3":{message:`Me encanta el servicio de Ace Data Cloud, es fácil de usar y a buen precio, ¡espero que siga mejorando!`,description:`Comentario del cliente`},"nav.github":{message:`GitHub`,description:`Enlace al repositorio de GitHub`},"settings.github":{message:`Código fuente`,description:`Enlace para ver el código fuente en GitHub`},"settings.about":{message:`Acerca de`,description:`Título de la sección 'Acerca de' en la página de configuración`},"settings.localTools":{message:`Herramientas locales`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Disponible solo en la aplicación de escritorio.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Carpetas autorizadas`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Carpetas que la IA puede leer y escribir en este equipo. Las herramientas se ejecutan localmente; nada sale de tu dispositivo sin tu consentimiento.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Autorizar previamente todas las acciones del equipo`,"settings.localToolsPreauthorizeHint":`Permite de una vez la captura de pantalla, el clic, la escritura, las teclas y todas las acciones, y solicita los permisos del sistema necesarios.`,"settings.localToolsCuActionsTitle":`Permitir acciones individuales`,"settings.localToolsCuActionsHint":`Activa solo las acciones que quieras que la IA ejecute sin preguntar cada vez. Cada una se puede revocar aquí.`,"settings.localToolsCuScreenshot":`Captura de pantalla`,"settings.localToolsCuClick":`Clic`,"settings.localToolsCuMove":`Mover el puntero`,"settings.localToolsCuType":`Escribir texto`,"settings.localToolsCuKey":`Pulsar teclas`,"settings.localToolsCuScroll":`Desplazamiento`,"settings.localToolsBuiltinTitle":`Herramientas integradas`,"settings.localToolsBuiltinHint":`Activa una herramienta para que la IA la ejecute sin preguntar. Shell puede ejecutar cualquier comando en este equipo; actívalo solo si confías. Las herramientas de archivos siguen limitadas a tus carpetas autorizadas.`,"settings.localToolsBuiltinRisky":`Acceso total`,"settings.localToolsAddFolder":{message:`Agregar carpeta`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Quitar`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Aún no hay carpetas autorizadas.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Guardar`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Guardado`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Herramientas activas`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Acciones siempre permitidas`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Llamadas de herramientas que elegiste permitir siempre. Se ejecutan sin volver a preguntar. Revoca cualquiera para reactivar la confirmación.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Revocar`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Revocar todo`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`No hay acciones siempre permitidas. Se te preguntará antes de ejecutar cada herramienta local.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Permisos del sistema`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Opcional. El acceso a carpetas de arriba no necesita ninguno; concede solo lo que requiera una tarea concreta.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Acceso a todo el disco`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Grabación de pantalla`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Accesibilidad`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Concedido`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`No concedido`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Abrir…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Mis subsitios`,description:`Título de la pestaña de gestión de subsitios en el cuadro de configuración. Solo visible en el sitio principal oficial, los subsitios no se muestran.`},"settings.adminOnlyHint":{message:`Esta sección solo es visible para administradores del sitio, los usuarios normales no pueden acceder.`,description:`Mensaje que se muestra en la parte superior de las pestañas de configuración del sitio / configuración SEO / configuración de distribución / configuración de funciones, que solo son visibles para administradores.`},"settings.officialOnlyHint":{message:`Esta sección solo es visible en el sitio principal, no se mostrará en las subpáginas.`,description:`Mensaje que se muestra en la parte superior de la pestaña 'Mis subpáginas', indicando que este acceso solo aparece en el sitio oficial.`},"settings.customDomain":{message:`Dominio personalizado`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Construir ahora`,description:`Texto del botón 'Construir subsitio' en la página 'Acerca de', solo visible en el sitio principal oficial`},"settings.poweredBy":{message:`Proyecto de código abierto`,description:`Título que muestra en qué proyecto de código abierto se basa este sitio en la página 'Acerca de'`},"settings.poweredByTip":{message:`Este sitio se basa en el proyecto de código abierto Nexior, el código es completamente abierto.`,description:`Descripción que muestra en qué proyecto de código abierto se basa este sitio en la página 'Acerca de'`},"settings.apiService":{message:`Servicio API`,description:`Título que muestra el proveedor del servicio API en la página 'Acerca de'`},"settings.apiServiceTip":{message:`El servicio API de este sitio es proporcionado por Ace Data Cloud.`,description:`Descripción que muestra el proveedor del servicio API en la página 'Acerca de'`},"settings.buildYourOwn":{message:`Construye el tuyo`,description:`Título que indica a los usuarios que pueden construir un sitio similar en la página 'Acerca de'`},"settings.buildYourOwnTip":{message:`¿Quieres construir un sitio de IA similar? Contáctanos para obtener soporte de implementación.`,description:`Descripción sobre cómo construir un sitio similar en la página 'Acerca de'`},"settings.contactUs":{message:`Contactar soporte`,description:`Texto del botón para contactar soporte`},"message.viewOnGithub":{message:`Ver en GitHub`,description:`Texto del enlace para ver el proyecto en GitHub`},"title.notFound":{message:`Página no encontrada`,description:`Título de la página 404`},"message.notFound":{message:`La página que buscas no existe, es posible que el enlace haya cambiado o haya sido eliminado. Regresa a la página de inicio para seguir explorando los servicios de IA de AceData.`,description:`Descripción secundaria de la página 404`},"message.notFoundEyebrow":{message:`¡Ha ocurrido un error!`,description:`Texto de la etiqueta pequeña en la parte superior de la página 404`},"message.notFoundPath":{message:`Ruta solicitada`,description:`Etiqueta que muestra la ruta de solicitud actual en la página 404`},"button.backToHome":{message:`Volver a la página de inicio`,description:`Texto del botón para regresar a la página de inicio`},"button.goBack":{message:`Regresar a la página anterior`,description:`Texto del botón para regresar a la página anterior en el historial de navegación`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Solicitud`,description:`Etiqueta de la pestaña del diálogo de código API para el fragmento de solicitud (el código que reproduce el resultado actual).`},"tab.apiResponse":{message:`Respuesta`,description:`Etiqueta de la pestaña del diálogo de código API para la respuesta en vivo devuelta después de hacer clic en Ejecutar.`},"button.apiRun":{message:`Ejecutar de nuevo`,description:`Botón del diálogo de código API que vuelve a ejecutar la solicitud en vivo contra la API usando la clave del usuario. El resultado ya existe, por lo que al hacer clic se ejecuta de nuevo y es facturable.`},"button.apiRunning":{message:`Ejecutando…`,description:`Etiqueta del botón Ejecutar en el diálogo de código API mientras la solicitud en vivo está en proceso.`},"button.apiRunConfirm":{message:`Confirmar ejecución`,description:`Etiqueta del botón de confirmación en el diálogo que advierte que ejecutar aquí consume créditos adicionales.`},"button.viewDocs":{message:`Ver documentación`,description:`Botón en el pie del diálogo de código API que abre la página de documentación API correspondiente en la plataforma.`},"message.apiClickRun":{message:`Haz clic en 'Ejecutar de nuevo' para usar tu API Key y ejecutar esta solicitud en tiempo real.`,description:`Estado vacío de la pestaña de respuesta del diálogo de código API, mostrado antes de que el usuario ejecute la solicitud.`},"message.apiRunConfirmTitle":{message:`Confirmar ejecución`,description:`Título del diálogo de confirmación mostrado antes de volver a ejecutar una solicitud desde el diálogo de código API.`},"message.apiRunConfirmDesc":{message:`Esta ejecución utilizará tu API Key para realizar una llamada real a la API y consumirá créditos adicionales, ¿confirmas continuar?`,description:`Cuerpo del diálogo de confirmación que advierte que volver a ejecutar la solicitud es una llamada API real y facturable.`},"message.apiRunConfirmSkip":{message:`No volver a mostrar`,description:`Casilla de verificación en el diálogo de confirmación de ejecución que, al marcarse, suprime la advertencia en ejecuciones posteriores.`},"message.apiRunTaskCreated":{message:`Tarea creada, cierra esta ventana para ver los resultados más recientes a continuación.`,description:`Banner de éxito mostrado en el diálogo de código API después de que una ejecución devuelve un id de tarea, sugiriendo que la nueva tarea ya aparece en la lista detrás del diálogo.`},"button.apiViewLatest":{message:`Cerrar y ver`,description:`Botón en el banner de éxito del diálogo de código API que cierra el diálogo para que el usuario pueda ver la tarea recién creada en la lista a continuación.`},"message.uploadInProgress":{message:`Las cargas de referencia aún están en curso; espera un momento.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Texto en la barra de navegación que lleva a la página de conversión de artículos a videos de Maestro, manteniendo 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`},"settings.localToolsAndroidPermHint":{message:`Enable the accessibility service so the assistant can see and control your screen. You can pre-authorize individual actions below.`,description:`Hint for the Android Computer Use accessibility permission section in Settings.`},"settings.cuConsentTitle":{message:`Allow action?`,description:`Title of the on-demand consent dialog shown when the assistant requests a screen action.`},"settings.cuConsentMessage":{message:`The assistant wants to run "{action}" on your phone. Allow it?`,description:`Body of the on-demand consent dialog; {action} is the computer.* action name.`},"settings.cuConsentAllow":{message:`Allow once`,description:`Allow button of the on-demand consent dialog.`},"settings.cuConsentDeny":{message:`Deny`,description:`Deny button of the on-demand consent dialog.`}};export{e as default};
|