chainlesschain 0.162.30 → 0.162.31
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/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-CsNttUU7.js → AIOps-BqWP6FKu.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-lgohjckQ.js → ActionButton-CXwMgOvX.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-ccV3LAca.js → Analytics-DAebZ4IY.js} +3 -3
- package/src/assets/web-panel/assets/AppLayout-CYsqYoME.js +9 -0
- package/src/assets/web-panel/assets/{Audit-B1gFM5U9.js → Audit-BbTtX1Nf.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BeWE3ERo.js → Backup-DgqY2Eb-.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-CDkPsNG2.js → BaseInput-Cq2ZuSoO.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-ztb9ia6e.js → Chat-D2kqpUyO.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-C-svYkrC.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-BcfRBlIY.js → Checkbox-_9swHpyc.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DOs99xkr.js → Codegen-Cr9YbCPl.js} +1 -1
- package/src/assets/web-panel/assets/{Col-D1X6tYlj.js → Col--wdpCMxx.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DTksIWtz.js → Community-DuFcVnLu.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DIJtAYBO.js → Compact-1yzYeT04.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BBf7LF_k.js → Compliance-Dq3aU9Df.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-UBPXQ40s.js → Cowork-CrWcnIg8.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-CkRm1jPB.js → Cron-Bh6fKZ0h.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-qALlTl7e.js → Crosschain-8ofPaWVW.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CqyqVS6E.js → DID-D3EiYm3w.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-BFjEdFne.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-Cb5UzbSZ.js → Dropdown-pYVPcP6O.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CarBq8Fk.js → EmailListRenderer-zBPodwJ1.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CSiGXaZz.js → FamilyGuardDashboard-CyQTW6PW.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DUxhVoBN.js → Federation-Ctaq3zYq.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BoMQpkhx.js → FormItemContext-CWYJCLq1.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DTVqC_CX.js → GenericCardRenderer-B1g6t9R9.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C_XuPtK5.js → Git-DH-v8iwd.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BZyqlqz-.js → Governance-jZxXvOs5.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DdZVUimI.js → Inference-D07LRghn.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-IzZ-jnCn.js → KnowledgeGraph-DnGtRZhx.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-koTK6eNc.js → Logs-D2pM9C4W.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-6zpJ1L8n.js → Marketplace-UyIO7C7r.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Ywc4IVks.js → McpTools-Bf1gvZPf.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-C_zB9dUa.js → Memory-C1bWj4RN.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Nc05r24L.js → MobileBridge-C_Ot1H_a.js} +2 -2
- package/src/assets/web-panel/assets/{MobileProjects-BJGxL526.js → MobileProjects-zr-PpsT_.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Im7SIcz1.js → Mtc-CnzFUz5J.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-BFFzvzMD.js → MtcAudit-CAAh99wz.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-CcNEbycq.js → Multisig-D6IAg6HE.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CDH6OTXN.js → NLProgramming-BFMarxb0.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Dqg3QXcU.js → Notes-BRp9ro3t.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-CDVmK1eU.js → NotificationSettings-C0Au3Cxb.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-ISp6btRY.js +1 -0
- package/src/assets/web-panel/assets/{Organization-DJb9bRQS.js → Organization-DYoxLBRX.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-CK7Q5dje.js → Overflow-rO8JJWGJ.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CJIyYfwc.js → P2P-DJleeXIK.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-uqRULcuw.js → PdhVaultBrowser-DM5qghFp.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-Crvwt6bq.js → Permissions-D5v4Beya.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-DcN5OWzg.js → PersonalDataHub-c2ZTX0Pv.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-DfWJvvJW.js → Pipeline-Crrkyhpz.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DepD0S3v.js → Privacy-DZVyrJKa.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-B7OKhH27.js → ProjectInit-DKg7J0gz.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BJ4ueRFv.js → ProjectSettings-3ndmTvVH.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Dl_hPdhU.js → Projects-ll5wnj2L.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-Dl0FT1S3.js → Providers-BeqBVMhB.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-V2hYLhfp.js → QuickAsk-DKAAxzuA.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-8Kaiodgv.js → Recommend-Byu7IGei.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-CsxB3JGg.js → Reputation-BKhWAmCu.js} +1 -1
- package/src/assets/web-panel/assets/{Row-6-x7tEYq.js → Row-BFtn11O6.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Buv6f5tw.js → RssFeed-D5a0PT0k.js} +2 -2
- package/src/assets/web-panel/assets/{Search-ABrDz84n.js → Search-DAkuaZNe.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DqOJmz18.js → Security-C79Ml2Ms.js} +4 -4
- package/src/assets/web-panel/assets/{Services-Cq4Tda3q.js → Services-BBk_jH6-.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-n74QlyYq.js → Skeleton-Cy0VvL0M.js} +1 -1
- package/src/assets/web-panel/assets/Skills-OQNky3uI.js +1 -0
- package/src/assets/web-panel/assets/{Sla-hwRgJ99Z.js → Sla-CbX1f8xN.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-B6Bs6_-8.js → SpeechSettings-BIkoUjws.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CTp2dZ0z.js → SyncSettings-DG6Swk7G.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-D70Lis6S.js → Tasks-C9R8sgyi.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Cags0ssw.js → Templates-AaJPeCIz.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BxCMzzGt.js → Tenant-jVFRofww.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-v05SDqHd.js → Terminal-DHBMzfK6.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BLUDHbBL.js → TimelineRenderer-9RFfOHSI.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-D-xKLJYv.js → Tokens-ZTfwuABF.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-B47tVIbH.js → Trigger-Xo7uZNQs.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DmRU9kfs.js → Trust-C0cTPYvn.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DzgSGs-c.js → UkeySign-DmMKio71.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-C6qu58up.js → VideoEditing-DP7B-oGT.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Dh8ZWx8f.js → Wallet-B1kZDARo.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-DFHOVuAY.js → WebAuthn-Bo5kBx27.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-B_fyQ3Y_.js → WorkflowEditor-DGI9SNHH.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BR-WxnCQ.js → chat-y97W1CIG.js} +1 -1
- package/src/assets/web-panel/assets/{colors-C-6RysQe.js → colors-DtTNo0sH.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-B_9_SCKN.js → compact-item-D0q0exuS.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-D6rklIbE.js → createContext-D7pLFs2I.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BDK34w0I.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BrotgSvd.js → hasIn-CXjG5B2j.js} +1 -1
- package/src/assets/web-panel/assets/{index-DkpDFJRn.js → index-1dwtkcJv.js} +1 -1
- package/src/assets/web-panel/assets/{index-DfqUsPl2.js → index-4mWZhCzz.js} +1 -1
- package/src/assets/web-panel/assets/{index-BaLhL3Tj.js → index-6np5ESBM.js} +1 -1
- package/src/assets/web-panel/assets/{index-DigjvHuo.js → index-8jxbZupG.js} +1 -1
- package/src/assets/web-panel/assets/{index-MCmNzIC7.js → index-B3y_4OdG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWmJukRW.js → index-B4dPdrvC.js} +1 -1
- package/src/assets/web-panel/assets/index-B6SaRuCI.js +1 -0
- package/src/assets/web-panel/assets/index-B9ekWb3I.js +1 -0
- package/src/assets/web-panel/assets/{index-GzuCTHVZ.js → index-BJUf19Wd.js} +3 -3
- package/src/assets/web-panel/assets/{index-PzM_GlKb.js → index-BO644Q4S.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTQkYbir.js → index-BPXhU-jp.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsDNNDBN.js → index-BU944DeT.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bwkg_EJk.js → index-B_hjkMtX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMnomft7.js → index-BdhEYW2a.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJ70GAW2.js → index-BgmvrPJH.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTh0fWI4.js → index-BgyrM0UN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAfRNHna.js → index-BnLrbXDA.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCWzUY8K.js → index-BqVjUN8b.js} +1 -1
- package/src/assets/web-panel/assets/{index-kkjq_hwC.js → index-BzCPx1cq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CK8YwdNd.js → index-CFsPe2N7.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6KqyxG1.js → index-CKrbutAQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bv9BrnD2.js → index-CSdhC7Qo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJgp_QFo.js → index-Cbqu804A.js} +1 -1
- package/src/assets/web-panel/assets/{index-rWiOF7Iu.js → index-CkGFqlYX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CrGp-4E2.js → index-Ct6xtKkc.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cn5ghmbB.js → index-DY6KLlgG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbRl_gIW.js → index-D_4WcI1V.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTpElYJs.js → index-DjCawXk1.js} +1 -1
- package/src/assets/web-panel/assets/{index-MBOwmoOi.js → index-Dr45Nm9V.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2yXH6vy.js → index-EaIfumgW.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTCUOKu9.js → index-POaFzYGS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIiCIC2j.js → index-TrBGgrwG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdDmzoPE.js → index-YWOEx3rP.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cn21XmDt.js → index-_3wPBMKt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CsWVDOd2.js → index-aarO4HT9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTpxOc5s.js → index-bVJvqDAz.js} +1 -1
- package/src/assets/web-panel/assets/{index-B85rQNYG.js → index-gFLQe31v.js} +1 -1
- package/src/assets/web-panel/assets/{index-ZehgEQYa.js → index-kvV0f4tV.js} +1 -1
- package/src/assets/web-panel/assets/{index-E_5VXq8H.js → index-qoB3whR9.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-C2v_L5na.js → initDefaultProps-BnXISaAa.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DNDqGbfr.js → motion-ChY7C0zJ.js} +1 -1
- package/src/assets/web-panel/assets/{move-xvpQ_6hJ.js → move-ByFZMFM5.js} +1 -1
- package/src/assets/web-panel/assets/{omit-Cb0FsfrO.js → omit-BYeliY1H.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BxhYpnum.js → pickAttrs-B9dcAKnu.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-B3soaW4h.js → placementArrow-D3F_txz7.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B-eRSLvd.js → responsiveObserve-ClkwY7wS.js} +1 -1
- package/src/assets/web-panel/assets/{slide--cM2ZOx-.js → slide-BNgy2Eea.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DjBhfi8Q.js → statusUtils-Bv3heMCD.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-C30mMh8o.js → styleChecker-DVdlHbQm.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-f7y2Qlzs.js → useFlexGapSupport-alrRY5BK.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-iTCXoLoZ.js → useFs-CcVh0-Vu.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BH0RXmVF.js → usePersonalDataHub-CkkHPhyq.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DQtmeDXM.js → vnode-DWi0X9WN.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-vw50zkLZ.js → zoom-DCbqxxLH.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +306 -1
- package/src/commands/ask.js +35 -1
- package/src/commands/checkpoint.js +239 -0
- package/src/commands/cost.js +114 -0
- package/src/commands/session.js +22 -2
- package/src/index.js +4 -0
- package/src/lib/file-checkpoint.js +300 -0
- package/src/lib/llm-pricing.js +227 -0
- package/src/lib/personal-data-hub-wiring.js +30 -0
- package/src/lib/recent-session.js +72 -0
- package/src/lib/session-picker.js +68 -0
- package/src/repl/agent-repl.js +58 -2
- package/src/repl/chat-repl.js +16 -1
- package/src/runtime/agent-core.js +68 -31
- package/src/runtime/fallback-model.js +109 -0
- package/src/runtime/file-ref-expander.js +258 -0
- package/src/runtime/headless-runner.js +576 -0
- package/src/runtime/headless-stream.js +302 -0
- package/src/runtime/policies/agent-policy.js +6 -0
- package/src/runtime/quiet-stdout.js +35 -0
- package/src/runtime/system-prompt.js +60 -0
- package/src/assets/web-panel/assets/AppLayout-B0hl5cPk.js +0 -9
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Dlw_6n3M.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-XlMpT7K_.js +0 -3
- package/src/assets/web-panel/assets/OrderTableRenderer-Bg0bkfjR.js +0 -1
- package/src/assets/web-panel/assets/Skills-CC0iozL5.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BiN5HELJ.js +0 -1
- package/src/assets/web-panel/assets/index-BhxiT2LJ.js +0 -1
- package/src/assets/web-panel/assets/index-DBNSZ2oz.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as b,J as d,U as y,R as l,c as t,K as n,o as pe,b as Q,r as c,P as s,Q as k,V as r,S as x,F as Ce}from"./vendor-BvqAck49.js";import{_ as ze,b as fe,u as ye,d as ie}from"./index-GzuCTHVZ.js";import{u as be}from"./useFs-iTCXoLoZ.js";import{az as Pe,R as Be,aQ as Le,as as Ae,aS as Te,S as Fe,z as Me}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const Re={__name:"Backup",setup(ke,{expose:v}){v();const{t:i}=fe(),e=ye(),W=be(),E=c(!1),g=c("backup"),C=c(!1),h=c(!1),B=c(!1),w=c(""),f=c([]),O=c(""),F=Q(()=>[{title:i("backup.backupColumns.id"),key:"id"},{title:i("backup.backupColumns.size"),key:"size",width:120},{title:i("backup.backupColumns.createdAt"),key:"createdAt"},{title:i("backup.backupColumns.action"),key:"action",width:100}]);async function m(){h.value=!0,w.value="";try{const{output:a}=await e.execute("backup list --json",15e3),o=T(a);Array.isArray(o)?f.value=o:o&&Array.isArray(o.backups)?f.value=o.backups:(f.value=[],a&&a.trim()&&(O.value=a))}catch(a){w.value=i("backup.messages.loadBackupsFailed",{err:a.message})}finally{h.value=!1}}async function S(){B.value=!0,O.value="",w.value="";try{const{output:a}=await e.execute("backup create --json",3e4);O.value=a||i("backup.backup.createDefaultMessage"),await m()}catch(a){O.value=i("backup.messages.createBackupFailed",{err:a.message})}finally{B.value=!1}}const M=c(!1),L=c(!1),A=c(null),z=c("");function G(a){A.value=a,z.value="",M.value=!0}async function u(){if(A.value){L.value=!0,z.value="";try{const{output:a}=await e.execute(`backup restore ${A.value.id}`,6e4);z.value=a||i("backup.backup.restoreDefaultMessage")}catch(a){z.value=i("backup.messages.restoreFailed",{err:a.message})}finally{L.value=!1}}}const p=c(!1),R=c(""),D=c(!1),U=c(""),q=c(0),X=c(""),P=c(""),Y=c(!1),Z=c(!1),I=c([]),ve=Q(()=>[{title:i("backup.conflictColumns.path"),key:"path"},{title:i("backup.conflictColumns.type"),key:"type",width:120}]);async function j(){p.value=!0,R.value="";try{const{output:a}=await e.execute("sync status --json",15e3),o=T(a);o?(D.value=o.online||o.synced||o.status==="online"||!1,U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced"),q.value=o.pending??o.pendingChanges??0,X.value=o.lastSync||o.lastSyncTime||""):ce(a)}catch(a){R.value=i("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function ce(a){if(!a){U.value=i("backup.sync.unknown");return}D.value=/synced|online|up.to.date/i.test(a),U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced");const o=a.match(/pending[:\s]+(\d+)/i);q.value=o?parseInt(o[1]):0;const _=a.match(/last[:\s]+(.+)/i);_&&(X.value=_[1].trim())}async function ge(){Y.value=!0,P.value="";try{const{output:a}=await e.execute("sync push",3e4);P.value=a||i("backup.sync.pushDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function me(){Z.value=!0,P.value="";try{const{output:a}=await e.execute("sync pull",3e4);P.value=a||i("backup.sync.pullDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function se(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),o=T(a);Array.isArray(o)?I.value=o:o&&Array.isArray(o.conflicts)?I.value=o.conflicts:I.value=[]}catch{I.value=[]}}const $=c(!1),ee=c(""),ae=c(!1),te=c(""),ne=c(!1),N=c(""),H=c([]),_e=Q(()=>[{title:i("backup.pinColumns.cid"),key:"cid"},{title:i("backup.pinColumns.name"),key:"name"},{title:i("backup.pinColumns.size"),key:"size",width:120},{title:i("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:i("backup.pinColumns.action"),key:"action",width:120}]);async function re(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),o=T(a);if(o)ae.value=o.online||o.status==="online"||o.connected||!1,te.value=o.peerId||o.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const _=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=_?_[1]:""}}catch(a){ee.value=i("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function K(){ne.value=!0,N.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),o=T(a);Array.isArray(o)?H.value=o:o&&Array.isArray(o.pins)?H.value=o.pins:H.value=[]}catch(a){N.value=i("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const xe=c(!1),oe=c(!1),le=c(""),J=c("");async function he(){if(le.value.trim()){oe.value=!0,J.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);J.value=a||i("backup.ipfs.pinDefaultSuccess"),await K()}catch(a){J.value=i("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function we(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await K()}catch(o){N.value=i("backup.messages.unpinFailed",{err:o.message})}}function T(a){if(!a||!a.trim())return null;try{return JSON.parse(a.trim())}catch{const _=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(_)try{return JSON.parse(_[0])}catch{}return null}}async function Oe(){if(f.value.length){E.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:f.value.length,backups:f.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?i("backup.messages.exportOk",{count:f.value.length,path:a.path}):i("backup.messages.exportOkDefault"))}catch(a){ie.error(i("backup.messages.exportFailed",{err:a.message||a}))}finally{E.value=!1}}}function Se(a){if(a==null||isNaN(a))return"-";const o=Number(a);if(o===0)return"0 B";const _=["B","KB","MB","GB","TB"],V=Math.floor(Math.log(o)/Math.log(1024));return(o/Math.pow(1024,V)).toFixed(V>0?1:0)+" "+_[V]}async function ue(){C.value=!0;try{await Promise.all([m(),j(),se(),re(),K()])}finally{C.value=!1}}pe(ue);const de={t:i,ws:e,fs:W,exportingList:E,activeTab:g,refreshing:C,backupLoading:h,backupCreating:B,backupError:w,backups:f,lastBackupResult:O,backupColumns:F,loadBackups:m,createBackup:S,showRestoreModal:M,restoreLoading:L,restoreTarget:A,restoreResult:z,confirmRestore:G,doRestore:u,syncLoading:p,syncError:R,syncOnline:D,syncStatusText:U,syncPending:q,lastSyncTime:X,syncOutput:P,pushLoading:Y,pullLoading:Z,conflicts:I,conflictColumns:ve,loadSync:j,parseSyncStatusText:ce,syncPush:ge,syncPull:me,loadConflicts:se,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:N,pins:H,pinColumns:_e,loadIpfsStatus:re,loadPins:K,showPinModal:xe,pinLoading:oe,pinFilePath:le,pinResult:J,doPin:he,unpinFile:we,safeParseJson:T,exportBackupList:Oe,formatSize:Se,refreshAll:ue,ref:c,computed:Q,onMounted:pe,get useI18n(){return fe},get CloudUploadOutlined(){return Me},get SyncOutlined(){return Fe},get HddOutlined(){return Te},get PlusOutlined(){return Ae},get DeleteOutlined(){return Le},get ReloadOutlined(){return Be},get DownloadOutlined(){return Pe},get message(){return ie},get useWsStore(){return ye},get useFs(){return be}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Ee={class:"page-sub"},Ue={key:0,style:{"text-align":"center",padding:"30px"}},je={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ne={key:1},He={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ke={key:3,style:{"margin-top":"16px"}},Je={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ve={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Qe={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},We={style:{color:"var(--text-secondary)"}},Ge={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},qe={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},$e={key:0,style:{"text-align":"center",padding:"30px"}},ea={key:0,style:{"margin-bottom":"16px"}},aa={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ta={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},na={key:0,style:{"font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},la={key:0,style:{"text-align":"center",padding:"30px"}},ia={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ra={key:1},ua={key:2},da={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},pa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},fa={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ya={key:0,style:{"margin-top":"12px"}},ba={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function ka(ke,v,i,e,W,E){const g=b("a-button"),C=b("a-space"),h=b("a-spin"),B=b("a-empty"),w=b("a-table"),f=b("a-card"),O=b("a-modal"),F=b("a-tab-pane"),m=b("a-statistic"),S=b("a-col"),M=b("a-row"),L=b("a-tag"),A=b("a-popconfirm"),z=b("a-input"),G=b("a-tabs");return s(),d("div",null,[y("div",De,[y("div",null,[y("h2",Ie,l(e.t("backup.title")),1),y("p",Ee,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(G,{activeKey:e.activeTab,"onUpdate:activeKey":v[4]||(v[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(F,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),k(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(C,null,{default:n(()=>[t(e.CloudUploadOutlined),y("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(C,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(s(),d("div",Ue,[t(h)])):e.backups.length===0&&!e.lastBackupResult?(s(),x(B,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(s(),x(w,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(s(),d("span",je,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(s(),d("span",Ne,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(s(),d("span",He,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(g,{key:3,size:"small",type:"link",onClick:R=>e.confirmRestore(p)},{default:n(()=>[k(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(s(),d("div",Ke,[y("div",Je,l(e.t("backup.backup.lastResultLabel")),1),y("pre",Ve,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(s(),d("div",Qe,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(O,{open:e.showRestoreModal,"onUpdate:open":v[0]||(v[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[y("p",We,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(s(),d("div",Ge,[y("div",null,[y("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),v[5]||(v[5]=k()),y("span",qe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(s(),d("div",Xe,[y("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),k(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(s(),d("div",Ye,[y("pre",Ze,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(F,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),k(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(s(),d("div",$e,[t(h)])):(s(),d(Ce,{key:1},[t(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(C,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(s(),d("div",ea,[y("div",aa,l(e.t("backup.sync.outputLabel")),1),y("pre",ta,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(s(),x(f,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(w,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(s(),d("span",na,l(p.path),1)):r("v-if",!0),u.key==="type"?(s(),x(L,{key:1,color:"red"},{default:n(()=>[k(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(s(),d("div",oa,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(F,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),k(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(f,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(L,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[k(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(s(),d("div",la,[t(h)])):(s(),x(M,{key:1,gutter:[16,16]},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(s(),d("div",ia,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(f,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:v[1]||(v[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(s(),d("div",ca,[t(h)])):e.pins.length===0?(s(),x(B,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(s(),x(w,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(s(),d("span",sa,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(s(),d("span",ra,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(s(),d("span",ua,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(s(),d("span",da,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(A,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:R=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),k(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(s(),d("div",pa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(O,{open:e.showPinModal,"onUpdate:open":v[3]||(v[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[y("div",fa,l(e.t("backup.ipfs.pinModalIntro")),1),t(z,{value:e.pinFilePath,"onUpdate:value":v[2]||(v[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(s(),d("div",ya,[y("pre",ba,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const ha=ze(Re,[["render",ka],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/Backup.vue"]]);export{ha as default};
|
|
1
|
+
import{I as b,J as d,U as y,R as l,c as t,K as n,o as pe,b as Q,r as c,P as s,Q as k,V as r,S as x,F as Ce}from"./vendor-BvqAck49.js";import{_ as ze,b as fe,u as ye,d as ie}from"./index-BJUf19Wd.js";import{u as be}from"./useFs-CcVh0-Vu.js";import{az as Pe,R as Be,aQ as Le,as as Ae,aS as Te,S as Fe,z as Me}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const Re={__name:"Backup",setup(ke,{expose:v}){v();const{t:i}=fe(),e=ye(),W=be(),E=c(!1),g=c("backup"),C=c(!1),h=c(!1),B=c(!1),w=c(""),f=c([]),O=c(""),F=Q(()=>[{title:i("backup.backupColumns.id"),key:"id"},{title:i("backup.backupColumns.size"),key:"size",width:120},{title:i("backup.backupColumns.createdAt"),key:"createdAt"},{title:i("backup.backupColumns.action"),key:"action",width:100}]);async function m(){h.value=!0,w.value="";try{const{output:a}=await e.execute("backup list --json",15e3),o=T(a);Array.isArray(o)?f.value=o:o&&Array.isArray(o.backups)?f.value=o.backups:(f.value=[],a&&a.trim()&&(O.value=a))}catch(a){w.value=i("backup.messages.loadBackupsFailed",{err:a.message})}finally{h.value=!1}}async function S(){B.value=!0,O.value="",w.value="";try{const{output:a}=await e.execute("backup create --json",3e4);O.value=a||i("backup.backup.createDefaultMessage"),await m()}catch(a){O.value=i("backup.messages.createBackupFailed",{err:a.message})}finally{B.value=!1}}const M=c(!1),L=c(!1),A=c(null),z=c("");function G(a){A.value=a,z.value="",M.value=!0}async function u(){if(A.value){L.value=!0,z.value="";try{const{output:a}=await e.execute(`backup restore ${A.value.id}`,6e4);z.value=a||i("backup.backup.restoreDefaultMessage")}catch(a){z.value=i("backup.messages.restoreFailed",{err:a.message})}finally{L.value=!1}}}const p=c(!1),R=c(""),D=c(!1),U=c(""),q=c(0),X=c(""),P=c(""),Y=c(!1),Z=c(!1),I=c([]),ve=Q(()=>[{title:i("backup.conflictColumns.path"),key:"path"},{title:i("backup.conflictColumns.type"),key:"type",width:120}]);async function j(){p.value=!0,R.value="";try{const{output:a}=await e.execute("sync status --json",15e3),o=T(a);o?(D.value=o.online||o.synced||o.status==="online"||!1,U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced"),q.value=o.pending??o.pendingChanges??0,X.value=o.lastSync||o.lastSyncTime||""):ce(a)}catch(a){R.value=i("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function ce(a){if(!a){U.value=i("backup.sync.unknown");return}D.value=/synced|online|up.to.date/i.test(a),U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced");const o=a.match(/pending[:\s]+(\d+)/i);q.value=o?parseInt(o[1]):0;const _=a.match(/last[:\s]+(.+)/i);_&&(X.value=_[1].trim())}async function ge(){Y.value=!0,P.value="";try{const{output:a}=await e.execute("sync push",3e4);P.value=a||i("backup.sync.pushDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function me(){Z.value=!0,P.value="";try{const{output:a}=await e.execute("sync pull",3e4);P.value=a||i("backup.sync.pullDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function se(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),o=T(a);Array.isArray(o)?I.value=o:o&&Array.isArray(o.conflicts)?I.value=o.conflicts:I.value=[]}catch{I.value=[]}}const $=c(!1),ee=c(""),ae=c(!1),te=c(""),ne=c(!1),N=c(""),H=c([]),_e=Q(()=>[{title:i("backup.pinColumns.cid"),key:"cid"},{title:i("backup.pinColumns.name"),key:"name"},{title:i("backup.pinColumns.size"),key:"size",width:120},{title:i("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:i("backup.pinColumns.action"),key:"action",width:120}]);async function re(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),o=T(a);if(o)ae.value=o.online||o.status==="online"||o.connected||!1,te.value=o.peerId||o.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const _=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=_?_[1]:""}}catch(a){ee.value=i("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function J(){ne.value=!0,N.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),o=T(a);Array.isArray(o)?H.value=o:o&&Array.isArray(o.pins)?H.value=o.pins:H.value=[]}catch(a){N.value=i("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const xe=c(!1),oe=c(!1),le=c(""),K=c("");async function he(){if(le.value.trim()){oe.value=!0,K.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);K.value=a||i("backup.ipfs.pinDefaultSuccess"),await J()}catch(a){K.value=i("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function we(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await J()}catch(o){N.value=i("backup.messages.unpinFailed",{err:o.message})}}function T(a){if(!a||!a.trim())return null;try{return JSON.parse(a.trim())}catch{const _=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(_)try{return JSON.parse(_[0])}catch{}return null}}async function Oe(){if(f.value.length){E.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:f.value.length,backups:f.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?i("backup.messages.exportOk",{count:f.value.length,path:a.path}):i("backup.messages.exportOkDefault"))}catch(a){ie.error(i("backup.messages.exportFailed",{err:a.message||a}))}finally{E.value=!1}}}function Se(a){if(a==null||isNaN(a))return"-";const o=Number(a);if(o===0)return"0 B";const _=["B","KB","MB","GB","TB"],V=Math.floor(Math.log(o)/Math.log(1024));return(o/Math.pow(1024,V)).toFixed(V>0?1:0)+" "+_[V]}async function ue(){C.value=!0;try{await Promise.all([m(),j(),se(),re(),J()])}finally{C.value=!1}}pe(ue);const de={t:i,ws:e,fs:W,exportingList:E,activeTab:g,refreshing:C,backupLoading:h,backupCreating:B,backupError:w,backups:f,lastBackupResult:O,backupColumns:F,loadBackups:m,createBackup:S,showRestoreModal:M,restoreLoading:L,restoreTarget:A,restoreResult:z,confirmRestore:G,doRestore:u,syncLoading:p,syncError:R,syncOnline:D,syncStatusText:U,syncPending:q,lastSyncTime:X,syncOutput:P,pushLoading:Y,pullLoading:Z,conflicts:I,conflictColumns:ve,loadSync:j,parseSyncStatusText:ce,syncPush:ge,syncPull:me,loadConflicts:se,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:N,pins:H,pinColumns:_e,loadIpfsStatus:re,loadPins:J,showPinModal:xe,pinLoading:oe,pinFilePath:le,pinResult:K,doPin:he,unpinFile:we,safeParseJson:T,exportBackupList:Oe,formatSize:Se,refreshAll:ue,ref:c,computed:Q,onMounted:pe,get useI18n(){return fe},get CloudUploadOutlined(){return Me},get SyncOutlined(){return Fe},get HddOutlined(){return Te},get PlusOutlined(){return Ae},get DeleteOutlined(){return Le},get ReloadOutlined(){return Be},get DownloadOutlined(){return Pe},get message(){return ie},get useWsStore(){return ye},get useFs(){return be}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Ee={class:"page-sub"},Ue={key:0,style:{"text-align":"center",padding:"30px"}},je={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ne={key:1},He={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:3,style:{"margin-top":"16px"}},Ke={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ve={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Qe={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},We={style:{color:"var(--text-secondary)"}},Ge={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},qe={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},$e={key:0,style:{"text-align":"center",padding:"30px"}},ea={key:0,style:{"margin-bottom":"16px"}},aa={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ta={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},na={key:0,style:{"font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},la={key:0,style:{"text-align":"center",padding:"30px"}},ia={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ra={key:1},ua={key:2},da={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},pa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},fa={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ya={key:0,style:{"margin-top":"12px"}},ba={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function ka(ke,v,i,e,W,E){const g=b("a-button"),C=b("a-space"),h=b("a-spin"),B=b("a-empty"),w=b("a-table"),f=b("a-card"),O=b("a-modal"),F=b("a-tab-pane"),m=b("a-statistic"),S=b("a-col"),M=b("a-row"),L=b("a-tag"),A=b("a-popconfirm"),z=b("a-input"),G=b("a-tabs");return s(),d("div",null,[y("div",De,[y("div",null,[y("h2",Ie,l(e.t("backup.title")),1),y("p",Ee,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(G,{activeKey:e.activeTab,"onUpdate:activeKey":v[4]||(v[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(F,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),k(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(C,null,{default:n(()=>[t(e.CloudUploadOutlined),y("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(C,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(s(),d("div",Ue,[t(h)])):e.backups.length===0&&!e.lastBackupResult?(s(),x(B,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(s(),x(w,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(s(),d("span",je,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(s(),d("span",Ne,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(s(),d("span",He,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(g,{key:3,size:"small",type:"link",onClick:R=>e.confirmRestore(p)},{default:n(()=>[k(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(s(),d("div",Je,[y("div",Ke,l(e.t("backup.backup.lastResultLabel")),1),y("pre",Ve,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(s(),d("div",Qe,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(O,{open:e.showRestoreModal,"onUpdate:open":v[0]||(v[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[y("p",We,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(s(),d("div",Ge,[y("div",null,[y("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),v[5]||(v[5]=k()),y("span",qe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(s(),d("div",Xe,[y("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),k(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(s(),d("div",Ye,[y("pre",Ze,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(F,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),k(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(s(),d("div",$e,[t(h)])):(s(),d(Ce,{key:1},[t(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(C,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(s(),d("div",ea,[y("div",aa,l(e.t("backup.sync.outputLabel")),1),y("pre",ta,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(s(),x(f,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(w,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(s(),d("span",na,l(p.path),1)):r("v-if",!0),u.key==="type"?(s(),x(L,{key:1,color:"red"},{default:n(()=>[k(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(s(),d("div",oa,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(F,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),k(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(f,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(L,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[k(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(s(),d("div",la,[t(h)])):(s(),x(M,{key:1,gutter:[16,16]},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(s(),d("div",ia,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(f,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:v[1]||(v[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(s(),d("div",ca,[t(h)])):e.pins.length===0?(s(),x(B,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(s(),x(w,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(s(),d("span",sa,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(s(),d("span",ra,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(s(),d("span",ua,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(s(),d("span",da,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(A,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:R=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),k(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(s(),d("div",pa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(O,{open:e.showPinModal,"onUpdate:open":v[3]||(v[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[y("div",fa,l(e.t("backup.ipfs.pinModalIntro")),1),t(z,{value:e.pinFilePath,"onUpdate:value":v[2]||(v[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(s(),d("div",ya,[y("pre",ba,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const ha=ze(Re,[["render",ka],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Backup.vue"]]);export{ha as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as s,f}from"./index-
|
|
1
|
+
import{P as s,f}from"./index-BJUf19Wd.js";import{d as w,c as O,s as h,w as k,b,r as S}from"./vendor-BvqAck49.js";var z=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const K=w({compatConfig:{MODE:3},props:{disabled:s.looseBool,type:s.string,value:s.any,tag:{type:String,default:"input"},size:s.string,onChange:Function,onInput:Function,onBlur:Function,onFocus:Function,onKeydown:Function,onCompositionstart:Function,onCompositionend:Function,onKeyup:Function,onPaste:Function,onMousedown:Function},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{expose:o}=u;const t=h(null);return o({focus:()=>{t.value&&t.value.focus()},blur:()=>{t.value&&t.value.blur()},input:t,setSelectionRange:(l,c,d)=>{var v;(v=t.value)===null||v===void 0||v.setSelectionRange(l,c,d)},select:()=>{var l;(l=t.value)===null||l===void 0||l.select()},getSelectionStart:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionStart},getSelectionEnd:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionEnd},getScrollTop:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.scrollTop}}),()=>{const{tag:l,value:c}=n,d=z(n,["tag","value"]);return O(l,f(f({},d),{},{ref:t,value:c}),null)}}});function D(n){const u=n.getBoundingClientRect(),o=document.documentElement;return{left:u.left+(window.scrollX||o.scrollLeft)-(o.clientLeft||document.body.clientLeft||0),top:u.top+(window.scrollY||o.scrollTop)-(o.clientTop||document.body.clientTop||0)}}function N(n){return Array.prototype.slice.apply(n).map(o=>`${o}: ${n.getPropertyValue(o)};`).join("")}function M(n){return Object.keys(n).reduce((u,o)=>{const t=n[o];return typeof t>"u"||t===null||(u+=`${o}: ${n[o]};`),u},"")}var $=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const A=w({compatConfig:{MODE:3},inheritAttrs:!1,props:{disabled:s.looseBool,type:s.string,value:s.any,lazy:s.bool.def(!0),tag:{type:String,default:"input"},size:s.string,style:s.oneOfType([String,Object]),class:s.string},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{emit:o,attrs:t,expose:r}=u;const a=h(null),y=S(),i=S(!1);k([()=>n.value,i],()=>{i.value||(y.value=n.value)},{immediate:!0});const l=e=>{o("change",e)},c=e=>{i.value=!0,e.target.composing=!0,o("compositionstart",e)},d=e=>{i.value=!1,e.target.composing=!1,o("compositionend",e);const p=document.createEvent("HTMLEvents");p.initEvent("input",!0,!0),e.target.dispatchEvent(p),l(e)},v=e=>{if(i.value&&n.lazy){y.value=e.target.value;return}o("input",e)},_=e=>{o("blur",e)},C=e=>{o("focus",e)},E=()=>{a.value&&a.value.focus()},P=()=>{a.value&&a.value.blur()},j=e=>{o("keydown",e)},F=e=>{o("keyup",e)},T=(e,p,g)=>{var m;(m=a.value)===null||m===void 0||m.setSelectionRange(e,p,g)},B=()=>{var e;(e=a.value)===null||e===void 0||e.select()};r({focus:E,blur:P,input:b(()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.input}),setSelectionRange:T,select:B,getSelectionStart:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionStart()},getSelectionEnd:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionEnd()},getScrollTop:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getScrollTop()}});const R=e=>{o("mousedown",e)},x=e=>{o("paste",e)},I=b(()=>n.style&&typeof n.style!="string"?M(n.style):n.style);return()=>{const{style:e,lazy:p}=n,g=$(n,["style","lazy"]);return O(K,f(f(f({},g),t),{},{style:I.value,onInput:v,onChange:l,onBlur:_,onFocus:C,ref:a,value:y.value,onCompositionstart:c,onCompositionend:d,onKeyup:F,onKeydown:j,onPaste:x,onMousedown:R}),null)}}});export{A as B,D as g,N as s};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{P as c,J as m,U as u,S as M,R as h,V as _,_ as
|
|
1
|
+
import{P as c,J as m,U as u,S as M,R as h,V as _,_ as H,b,$ as te,F as D,Z as Q,L as le,w as B,n as L,o as X,x as re,r as A,I as R,c as v,K as I,Q as E,a1 as Te,a2 as Ae,M as ce,N as de,a as ue}from"./vendor-BvqAck49.js";import{_ as K,b as he}from"./index-BJUf19Wd.js";import{u as fe,M as Pe}from"./chat-y97W1CIG.js";import{ag as Re,L as ve,ah as Fe,a0 as Le,a as je,b as De,ai as qe,aj as Ne,o as Be,c as Ve,f as We,a4 as Qe,ak as Ue,a6 as He,a7 as Ke,al as $e,af as Ge,ab as Je}from"./icons-DP3uiYxy.js";import{r as me}from"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Xe={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(a,{expose:d,emit:t}){d();const e=a,n=t;function i(){e.expandable&&n("toggle")}const s={props:e,emit:n,onToggle:i,get CheckCircleFilled(){return je},get ClockCircleOutlined(){return Le},get DownOutlined(){return Fe},get LoadingOutlined(){return ve},get RightOutlined(){return Re}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Ye=["data-testid"],Ze={class:"cb-action__icon"},et={class:"cb-action__label"},tt={key:0,class:"cb-action__detail"},nt={key:1,class:"cb-action__caret"};function st(a,d,t,e,n,i){return c(),m("div",{class:H(["cb-action",[`cb-action--${t.item.status}`,{"cb-action--expandable":t.expandable,"cb-action--open":t.expanded}]]),"data-testid":`tool-card-${t.item.id}`,onClick:e.onToggle},[u("span",Ze,[t.item.status==="done"?(c(),M(e.CheckCircleFilled,{key:0})):t.item.status==="running"?(c(),M(e.LoadingOutlined,{key:1})):(c(),M(e.ClockCircleOutlined,{key:2}))]),u("span",et,h(t.item.label),1),t.item.detail?(c(),m("span",tt,h(t.item.detail),1)):_("v-if",!0),t.expandable?(c(),m("span",nt,[t.expanded?(c(),M(e.DownOutlined,{key:0})):(c(),M(e.RightOutlined,{key:1}))])):_("v-if",!0)],10,Ye)}const it=K(Xe,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/ToolInvocationCard.vue"]]),ot={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(a,{expose:d}){d();const t=a,e=b(()=>me(t.content||"")),n={props:t,rendered:e,computed:b,get renderMarkdown(){return me}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},at=["innerHTML"];function lt(a,d,t,e,n,i){return c(),m("div",{class:"markdown-content",innerHTML:e.rendered},null,8,at)}const rt=K(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);function W(a,d,t){let e=t.initialDeps??[],n,i=!0;function s(){var o,p,f;let S;t.key&&((o=t.debug)!=null&&o.call(t))&&(S=Date.now());const x=a();if(!(x.length!==e.length||x.some((y,l)=>e[l]!==y)))return n;e=x;let g;if(t.key&&((p=t.debug)!=null&&p.call(t))&&(g=Date.now()),n=d(...x),t.key&&((f=t.debug)!=null&&f.call(t))){const y=Math.round((Date.now()-S)*100)/100,l=Math.round((Date.now()-g)*100)/100,C=l/16,k=(z,P)=>{for(z=String(z);z.length<P;)z=" "+z;return z};console.info(`%c⏱ ${k(l,5)} /${k(y,5)} ms`,`
|
|
2
2
|
font-size: .6rem;
|
|
3
3
|
font-weight: bold;
|
|
4
|
-
color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function ge(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ct=(a,d)=>Math.abs(a-d)<1.01,dt=a=>a,ut=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},ht=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class pe{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dt,rangeExtractor:ut,onChange:()=>{},measureElement:ht,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=W(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=W(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=W(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const b=x[g];b&&(O[b.lane]=g)}for(let g=S;g<t;g++){const b=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(b);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(b),V=typeof P=="number"?P:this.options.estimateSize(g),U=k+V;x[g]={index:g,start:k,size:V,end:U,key:b,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=W(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ft({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=W(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=W(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return ge(e[_e(0,e.length-1,n=>ge(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ct(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ft({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=_e(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=y(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new pe({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),L(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(b){console.error("[VirtualMessageList] init failed:",b)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:b,scrollHeight:l,clientHeight:C}=i.value;b<100&&n("load-more"),b+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=b=>{const l=e.messages.findIndex(C=>C.id===b);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};B(()=>e.messages.length,(b,l)=>{s.value?(s.value.setOptions({count:b,estimateSize:()=>e.estimateSize}),o.value++,b>l&&L(()=>x())):L(()=>{f(),s.value&&o.value++})}),B(()=>e.messages,b=>{!s.value&&b.length>0?L(()=>f()):s.value&&(s.value.setOptions({count:b.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,L(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{L(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:y,watch:B,onMounted:X,onUnmounted:re,nextTick:L,get Virtualizer(){return pe}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},gt={key:1,class:"fallback-list"};function pt(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,Q(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",gt,[(c(!0),m(D,null,Q(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const vt=H(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),_t={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=y(()=>e.message.metadata?.originalInput||""),p=y(()=>e.message.metadata?.understanding||{}),f=y(()=>p.value.correctedInput||o.value),S=y(()=>p.value.intent||"未识别"),x=y(()=>p.value.keyPoints||[]),O=y(()=>f.value!==o.value&&o.value.trim()!==""),g=y(()=>e.message.metadata?.status||"pending"),b=y(()=>g.value==="confirmed"),l=y(()=>g.value==="corrected"),C=y(()=>!!e.message.metadata?.streaming),k=y(()=>e.message.metadata?.streamingTokens||0),z=y(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function V(){i.value=!0,s.value=f.value}function U(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:b,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:V,handleSubmitCorrection:U,handleCancelCorrection:T,ref:A,computed:y,get CheckCircleOutlined(){return We},get ExclamationCircleOutlined(){return Ve},get BulbOutlined(){return Be},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return De},get LoadingOutlined(){return ve}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},bt={class:"intent-confirmation-message"},yt={class:"confirmation-header"},St={class:"header-icon"},kt={class:"header-text"},xt={key:0},Ct={key:1},wt={key:2},It={class:"understanding-content"},Ot={key:0,class:"original-input"},Mt={class:"label"},Et={class:"value original-text"},zt={key:1,class:"corrected-input"},Tt={class:"label"},At={class:"value corrected-text"},Pt={class:"intent-section"},Rt={class:"label"},Ft={class:"value"},Lt={key:2,class:"key-points-section"},jt={class:"label"},Dt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Bt={class:"value correction-text"},Vt={key:0,class:"streaming-indicator"},Wt={key:0,class:"streaming-tokens"},Qt={key:1,class:"action-buttons"},Ut={key:2,class:"correction-input-section"},Kt={class:"correction-actions"};function Ht(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",bt,[u("div",yt,[u("div",St,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",kt,[e.isConfirmed?(c(),m("span",xt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",Ct,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",wt,h(t.message.content),1))])]),u("div",It,[e.hasCorrectedInput?(c(),m("div",Ot,[u("div",Mt,h(a.$t("chat.intent.label.original")),1),u("div",Et,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",zt,[u("div",Tt,h(a.$t("chat.intent.label.understood")),1),u("div",At,h(e.correctedInput),1)])):_("v-if",!0),u("div",Pt,[u("div",Rt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Ft,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",Lt,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Dt,[(c(!0),m(D,null,Q(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",qt,[u("div",Nt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Bt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Vt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Wt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Qt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Ut,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Kt,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const $t=H(_t,[["render",Ht],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Gt={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=y(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=y(()=>f.contextMode);function b(r){f.setContextMode(r)}const l=y(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=y(()=>f.currentSessionId),z=y(()=>k.value?f.getMessages(k.value):[]),P=y(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),V=y(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),U=y(()=>f.pendingQuestion[k.value]),T=y(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const $=ue(new Set);function be(r){$.has(r)?$.delete(r):$.add(r)}function ye(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const j=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return j.length?t("chat.tool.argsPreview",{n:j.length,key:j[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
|
|
5
|
-
`)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function Se(r){await f.createSession(r)}async function Y(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function ke(r){f.confirmIntent(k.value,r.messageId)}function xe(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=
|
|
4
|
+
color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function ge(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ct=(a,d)=>Math.abs(a-d)<1.01,dt=a=>a,ut=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},ht=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class pe{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dt,rangeExtractor:ut,onChange:()=>{},measureElement:ht,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=W(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=W(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=W(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const y=x[g];y&&(O[y.lane]=g)}for(let g=S;g<t;g++){const y=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(y);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(y),V=typeof P=="number"?P:this.options.estimateSize(g),U=k+V;x[g]={index:g,start:k,size:V,end:U,key:y,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=W(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ft({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=W(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=W(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return ge(e[_e(0,e.length-1,n=>ge(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ct(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ft({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=_e(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=b(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new pe({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),L(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(y){console.error("[VirtualMessageList] init failed:",y)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:y,scrollHeight:l,clientHeight:C}=i.value;y<100&&n("load-more"),y+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=y=>{const l=e.messages.findIndex(C=>C.id===y);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};B(()=>e.messages.length,(y,l)=>{s.value?(s.value.setOptions({count:y,estimateSize:()=>e.estimateSize}),o.value++,y>l&&L(()=>x())):L(()=>{f(),s.value&&o.value++})}),B(()=>e.messages,y=>{!s.value&&y.length>0?L(()=>f()):s.value&&(s.value.setOptions({count:y.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,L(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{L(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:b,watch:B,onMounted:X,onUnmounted:re,nextTick:L,get Virtualizer(){return pe}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},gt={key:1,class:"fallback-list"};function pt(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,Q(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",gt,[(c(!0),m(D,null,Q(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const vt=K(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),_t={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=b(()=>e.message.metadata?.originalInput||""),p=b(()=>e.message.metadata?.understanding||{}),f=b(()=>p.value.correctedInput||o.value),S=b(()=>p.value.intent||"未识别"),x=b(()=>p.value.keyPoints||[]),O=b(()=>f.value!==o.value&&o.value.trim()!==""),g=b(()=>e.message.metadata?.status||"pending"),y=b(()=>g.value==="confirmed"),l=b(()=>g.value==="corrected"),C=b(()=>!!e.message.metadata?.streaming),k=b(()=>e.message.metadata?.streamingTokens||0),z=b(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function V(){i.value=!0,s.value=f.value}function U(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:y,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:V,handleSubmitCorrection:U,handleCancelCorrection:T,ref:A,computed:b,get CheckCircleOutlined(){return We},get ExclamationCircleOutlined(){return Ve},get BulbOutlined(){return Be},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return De},get LoadingOutlined(){return ve}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},yt={class:"intent-confirmation-message"},bt={class:"confirmation-header"},St={class:"header-icon"},kt={class:"header-text"},xt={key:0},Ct={key:1},wt={key:2},It={class:"understanding-content"},Ot={key:0,class:"original-input"},Mt={class:"label"},Et={class:"value original-text"},zt={key:1,class:"corrected-input"},Tt={class:"label"},At={class:"value corrected-text"},Pt={class:"intent-section"},Rt={class:"label"},Ft={class:"value"},Lt={key:2,class:"key-points-section"},jt={class:"label"},Dt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Bt={class:"value correction-text"},Vt={key:0,class:"streaming-indicator"},Wt={key:0,class:"streaming-tokens"},Qt={key:1,class:"action-buttons"},Ut={key:2,class:"correction-input-section"},Ht={class:"correction-actions"};function Kt(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",yt,[u("div",bt,[u("div",St,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",kt,[e.isConfirmed?(c(),m("span",xt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",Ct,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",wt,h(t.message.content),1))])]),u("div",It,[e.hasCorrectedInput?(c(),m("div",Ot,[u("div",Mt,h(a.$t("chat.intent.label.original")),1),u("div",Et,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",zt,[u("div",Tt,h(a.$t("chat.intent.label.understood")),1),u("div",At,h(e.correctedInput),1)])):_("v-if",!0),u("div",Pt,[u("div",Rt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Ft,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",Lt,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Dt,[(c(!0),m(D,null,Q(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",qt,[u("div",Nt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Bt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Vt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Wt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Qt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Ut,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Ht,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const $t=K(_t,[["render",Kt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Gt={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=b(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=b(()=>f.contextMode);function y(r){f.setContextMode(r)}const l=b(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=b(()=>f.currentSessionId),z=b(()=>k.value?f.getMessages(k.value):[]),P=b(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),V=b(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),U=b(()=>f.pendingQuestion[k.value]),T=b(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const $=ue(new Set);function ye(r){$.has(r)?$.delete(r):$.add(r)}function be(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const j=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return j.length?t("chat.tool.argsPreview",{n:j.length,key:j[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
|
|
5
|
+
`)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function Se(r){await f.createSession(r)}async function Y(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function ke(r){f.confirmIntent(k.value,r.messageId)}function xe(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=b(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),G=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
|
|
6
6
|
`),G.value=!0}function we(){const r=Z.value.split(`
|
|
7
|
-
`).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),G.value=!1}function Ie(){f.setCustomQuickPrompts(null),G.value=!1}const Oe=y(()=>t(`chat.empty.hint.${g.value}`));async function Me(r){k.value||await f.createSession("chat"),O.value=r,await Y()}function Ee(r){f.answerQuestion(k.value,r)}B([z,P],()=>{L(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:j}){if(!r||S.has(j))return;S.add(j);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await L(),await Y())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const j=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${j}`;return{prompt:w,autoSend:j,session:ae,token:ze}}async function J(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&B(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{J()},{immediate:!1}),B(()=>f.pendingAutoSend,()=>{J()},{deep:!0}),X(async()=>{await f.loadSessions(),await J()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:b,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:V,pendingQuestion:U,isLoading:T,formatTime:q,expandedTools:$,toggleToolDetail:be,toToolItem:ye,toolDetail:ne,newSession:Se,sendMessage:Y,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:G,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Ie,emptyHint:Oe,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:J,ref:A,reactive:ue,computed:y,watch:B,nextTick:L,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Je},get RobotOutlined(){return Ge},get SendOutlined(){return $e},get FolderOutlined(){return He},get GlobalOutlined(){return Ke},get UserOutlined(){return Ue},get FileTextOutlined(){return Qe},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:$t,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Jt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Xt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Yt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Zt=["title"],en={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},tn={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},nn={style:{flex:"1","overflow-y":"auto",padding:"8px"}},sn=["onClick"],on={class:"session-icon"},an={class:"session-info"},ln={class:"session-title"},rn={class:"session-meta"},cn={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},dn={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},un={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},hn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},fn={style:{"font-size":"13px",color:"var(--text-muted)"}},mn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},gn={key:1,class:"chat-header"},pn={class:"chat-intent-toggle"},vn={class:"chat-intent-toggle-label"},_n={key:2,class:"chat-area-body"},bn={key:0,class:"chat-empty-prompts"},yn={class:"empty-title"},Sn={class:"empty-hint"},kn={class:"quick-prompts"},xn={class:"system-banner"},Cn={class:"tool-msg"},wn={key:0,class:"tool-detail"},In={class:"tool-detail__pre tool-detail__pre--input"},On={key:0,class:"tool-detail__result"},Mn={class:"tool-detail__pre tool-detail__pre--result"},En={class:"msg-body"},zn={class:"msg-meta-row"},Tn={class:"msg-role"},An={class:"msg-time"},Pn={key:0,class:"msg-tokens"},Rn={key:0,class:"bubble user"},Fn={key:2,class:"question-card"},Ln={class:"question-text"},jn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Dn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},qn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Nn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Bn={style:{"margin-top":"8px"}};function Vn(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),b=R("a-modal");return c(),m("div",Jt,[_(" Session Sidebar "),u("div",Xt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Yt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Zt)])):(c(),m("div",en,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",tn,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",nn,[(c(!0),m(D,null,Q(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:K(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",on,h(l.type==="agent"?"🤖":"💬"),1),u("div",an,[u("div",ln,h(l.title||a.$t("chat.session.untitled")),1),u("div",rn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,sn))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",cn,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",dn,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",un,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",hn,h(a.$t("chat.empty.title")),1),u("div",fn,h(a.$t("chat.empty.subtitle")),1),u("div",mn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",gn,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",pn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",vn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",_n,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",bn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",yn,h(a.$t("chat.empty.startTitle")),1),u("div",Sn,h(e.emptyHint),1),u("div",kn,[(c(!0),m(D,null,Q(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:K(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",Cn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",wn,[u("pre",In,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",On,[u("pre",Mn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:K(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",En,[u("div",zn,[u("span",Tn,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",An,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",Pn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",Rn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:K(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Fn,[u("div",Ln,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",jn,[(c(!0),m(D,null,Q(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Dn,[u("div",qn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Te(Ae(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
|
|
8
|
-
chat-area-body's v-if/v-else pair stays unbroken. `),v(
|
|
7
|
+
`).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),G.value=!1}function Ie(){f.setCustomQuickPrompts(null),G.value=!1}const Oe=b(()=>t(`chat.empty.hint.${g.value}`));async function Me(r){k.value||await f.createSession("chat"),O.value=r,await Y()}function Ee(r){f.answerQuestion(k.value,r)}B([z,P],()=>{L(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:j}){if(!r||S.has(j))return;S.add(j);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await L(),await Y())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const j=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${j}`;return{prompt:w,autoSend:j,session:ae,token:ze}}async function J(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&B(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{J()},{immediate:!1}),B(()=>f.pendingAutoSend,()=>{J()},{deep:!0}),X(async()=>{await f.loadSessions(),await J()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:y,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:V,pendingQuestion:U,isLoading:T,formatTime:q,expandedTools:$,toggleToolDetail:ye,toToolItem:be,toolDetail:ne,newSession:Se,sendMessage:Y,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:G,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Ie,emptyHint:Oe,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:J,ref:A,reactive:ue,computed:b,watch:B,nextTick:L,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Je},get RobotOutlined(){return Ge},get SendOutlined(){return $e},get FolderOutlined(){return Ke},get GlobalOutlined(){return He},get UserOutlined(){return Ue},get FileTextOutlined(){return Qe},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:$t,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Jt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Xt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Yt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Zt=["title"],en={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},tn={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},nn={style:{flex:"1","overflow-y":"auto",padding:"8px"}},sn=["onClick"],on={class:"session-icon"},an={class:"session-info"},ln={class:"session-title"},rn={class:"session-meta"},cn={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},dn={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},un={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},hn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},fn={style:{"font-size":"13px",color:"var(--text-muted)"}},mn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},gn={key:1,class:"chat-header"},pn={class:"chat-intent-toggle"},vn={class:"chat-intent-toggle-label"},_n={key:2,class:"chat-area-body"},yn={key:0,class:"chat-empty-prompts"},bn={class:"empty-title"},Sn={class:"empty-hint"},kn={class:"quick-prompts"},xn={class:"system-banner"},Cn={class:"tool-msg"},wn={key:0,class:"tool-detail"},In={class:"tool-detail__pre tool-detail__pre--input"},On={key:0,class:"tool-detail__result"},Mn={class:"tool-detail__pre tool-detail__pre--result"},En={class:"msg-body"},zn={class:"msg-meta-row"},Tn={class:"msg-role"},An={class:"msg-time"},Pn={key:0,class:"msg-tokens"},Rn={key:0,class:"bubble user"},Fn={key:2,class:"question-card"},Ln={class:"question-text"},jn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Dn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},qn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Nn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Bn={style:{"margin-top":"8px"}};function Vn(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),y=R("a-modal");return c(),m("div",Jt,[_(" Session Sidebar "),u("div",Xt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Yt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Zt)])):(c(),m("div",en,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",tn,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",nn,[(c(!0),m(D,null,Q(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:H(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",on,h(l.type==="agent"?"🤖":"💬"),1),u("div",an,[u("div",ln,h(l.title||a.$t("chat.session.untitled")),1),u("div",rn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,sn))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",cn,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",dn,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",un,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",hn,h(a.$t("chat.empty.title")),1),u("div",fn,h(a.$t("chat.empty.subtitle")),1),u("div",mn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",gn,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",pn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",vn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",_n,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",yn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",bn,h(a.$t("chat.empty.startTitle")),1),u("div",Sn,h(e.emptyHint),1),u("div",kn,[(c(!0),m(D,null,Q(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:H(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",Cn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",wn,[u("pre",In,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",On,[u("pre",Mn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:H(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",En,[u("div",zn,[u("span",Tn,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",An,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",Pn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",Rn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:H(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Fn,[u("div",Ln,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",jn,[(c(!0),m(D,null,Q(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Dn,[u("div",qn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Te(Ae(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
|
|
8
|
+
chat-area-body's v-if/v-else pair stays unbroken. `),v(y,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:I(()=>[u("div",Nn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",Bn,[v(s,{size:"small",onClick:e.resetPromptsToDefault},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}const Gn=K(Gt,[["render",Vn],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Chat.vue"]]);export{Gn as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as v,P as u,J as y,U as n,R as a,S,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-BJUf19Wd.js";import"./icons-DP3uiYxy.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},M={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function A(c,d,t,r,i,l){const o=v("a-tag");return u(),y("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",M,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),S(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const j=k(N,[["render",A],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as o,i as E,f as V,P as W}from"./index-
|
|
1
|
+
import{h as o,i as E,f as V,P as W}from"./index-BJUf19Wd.js";import{d as F,r as f,w as I,c as h}from"./vendor-BvqAck49.js";import{i as M}from"./initDefaultProps-BnXISaAa.js";var R=function(t,l){var c={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.indexOf(n)<0&&(c[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(t);a<n.length;a++)l.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(t,n[a])&&(c[n[a]]=t[n[a]]);return c};const T={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},J=F({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:M(T,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup(t,l){let{attrs:c,emit:n,expose:a}=l;const d=f(t.checked===void 0?t.defaultChecked:t.checked),s=f();I(()=>t.checked,()=>{d.value=t.checked}),a({focus(){var e;(e=s.value)===null||e===void 0||e.focus()},blur(){var e;(e=s.value)===null||e===void 0||e.blur()}});const i=f(),y=e=>{if(t.disabled)return;t.checked===void 0&&(d.value=e.target.checked),e.shiftKey=i.value;const u={target:o(o({},t),{checked:e.target.checked}),stopPropagation(){e.stopPropagation()},preventDefault(){e.preventDefault()},nativeEvent:e};t.checked!==void 0&&(s.value.checked=!!t.checked),n("change",u),i.value=!1},k=e=>{n("click",e),i.value=e.shiftKey};return()=>{const{prefixCls:e,name:u,id:m,type:g,disabled:b,readonly:x,tabindex:C,autofocus:O,value:P,required:S}=t,_=R(t,["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"]),{class:j,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D}=c,v=o(o({},_),c),$=Object.keys(v).reduce((p,r)=>((r.startsWith("data-")||r.startsWith("aria-")||r==="role")&&(p[r]=v[r]),p),{}),q=E(e,j,{[`${e}-checked`]:d.value,[`${e}-disabled`]:b}),A=o(o({name:u,id:m,type:g,readonly:x,disabled:b,tabindex:C,class:`${e}-input`,checked:!!d.value,autofocus:O,value:P},$),{onChange:y,onClick:k,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D,required:S});return h("span",{class:q},[h("input",V({ref:s},A),null),h("span",{class:`${e}-inner`},null)])}}});export{J as V};
|