chainlesschain 0.162.69 → 0.162.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/{AIOps-mRHaZd6j.js → AIOps-pes7_jGr.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-DKwlStrh.js → ActionButton-DiHWdeH1.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-JKNBk90h.js → Analytics-C51UX-V_.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-D_00au6T.js → AppLayout-BE6LJLw9.js} +4 -4
  6. package/src/assets/web-panel/assets/{Audit-COIvlSub.js → Audit-CtTkLTe2.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-DM0caJ_V.js → Backup-lmpVwPxc.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-BCcZwFqj.js → BaseInput-Dr7DR1E1.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-Mzs83VXS.js → Chat-DXph6klA.js} +5 -5
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-B3WgjkqK.js → ChatBubbleRenderer-RefrXxqp.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-BSK8NcWS.js → Checkbox-BF0aS5R9.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-CEZLn0zj.js → Codegen-B-oHWNTV.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-C3wDVrB5.js → Col-B6KdyRTE.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-DgGS3UTp.js → Community-D5ac0KyO.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-BYw2zw-v.js → Compact-Dc61O2eQ.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-DkkuY155.js → Compliance-a48qvNmd.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-CExycS2P.js → Cowork-CIF9lSRj.js} +3 -3
  18. package/src/assets/web-panel/assets/{Cron-CIERLVft.js → Cron-C_gkf4xd.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-CsHN5kXa.js → Crosschain-CJt15PzW.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-BVSo2C6D.js → DID-D8I_okEj.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-DmC4cW02.js → Dashboard-O4q-qCF2.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-B73mSg7P.js → Dropdown-flRziiaw.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-B6m4si5I.js → EmailListRenderer-CnnkfGPw.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DLcJUP1r.js → FamilyGuardDashboard-CYAJpGqd.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-gzFvFfqM.js → Federation-Dm3WqzQ_.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-CR4BrjCr.js → FormItemContext-CpAIter6.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-D-vZ_Mus.js → GenericCardRenderer-ChzXcyuN.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-Cy2qd9re.js → Git-DElmMsL4.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-CCxHR2cK.js → Governance-EWmgn9io.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-CPGRthgg.js → Inference-VtOR_sef.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-rNtsv5PI.js → KnowledgeGraph-OMqlGkMR.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-D2uSdTps.js → Logs-CTgYDsTZ.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-fv9Y2P9i.js → Marketplace-DZIUTbn8.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-BXdt1OfF.js → McpTools-DWeOErCA.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-uVwjHReb.js → Memory-DwFBp-ev.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-DUekknEV.js → MobileBridge-D42xBfE3.js} +2 -2
  37. package/src/assets/web-panel/assets/MobileProjects-BHCHauUl.js +1 -0
  38. package/src/assets/web-panel/assets/{Mtc-DU7qxB15.js → Mtc-CabnNsyS.js} +6 -6
  39. package/src/assets/web-panel/assets/{MtcAudit-D82jFkm-.js → MtcAudit-Ddx9Awu5.js} +6 -6
  40. package/src/assets/web-panel/assets/{Multisig-CbXPwmLK.js → Multisig-CJpYBZ8f.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-xinU-pAd.js → NLProgramming-BvPJskVG.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-CF695fi9.js → Notes-92ELvJM2.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-DqE8Uw97.js → NotificationSettings-CXz0SUzP.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-C6OcpNmv.js → OrderTableRenderer-4iWRkMr-.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-BdSbVJSd.js → Organization-DblqJPeY.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-Cwd_BqS5.js → Overflow-CHfS3HwD.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-Cu9QkrOR.js → P2P-DIg0pLIG.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-B-qgBBLE.js → PdhVaultBrowser-BhD3DGjk.js} +3 -3
  49. package/src/assets/web-panel/assets/{Permissions-BM4iUYhq.js → Permissions-Ct7bwrz8.js} +4 -4
  50. package/src/assets/web-panel/assets/{PersonalDataHub-BFFOGNIt.js → PersonalDataHub-DG9c1eas.js} +4 -4
  51. package/src/assets/web-panel/assets/{Pipeline-CfgXjou1.js → Pipeline-BwQnEqG0.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-B5BKvDsX.js → Privacy-BvWaf-Ba.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-YdvJ_Keh.js → ProjectInit-BFzMHtiW.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-2WrdaB3v.js → ProjectSettings-DDpokSpH.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-DIziui4g.js → Projects-3IL8lyPl.js} +1 -1
  56. package/src/assets/web-panel/assets/{Providers-B6_KBUE6.js → Providers-C6BsEzSR.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-CrNUnzCS.js → QuickAsk-Mh6690Ey.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-C776RdRO.js → Recommend-CJbZ6wgA.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-RMht4VQm.js → Reputation-GDcyl6iQ.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-D0WYOsJu.js → Row-6p4DKFSi.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-BVPn-wVM.js → RssFeed-BLhrkoDq.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-5G03gU05.js → Search-Ckiyt35t.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-B7_HAVGp.js → Security-qhh-B5Qt.js} +4 -4
  64. package/src/assets/web-panel/assets/{Services-DG-gNQSw.js → Services-D7a2OwKm.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-DXUXpGp2.js → Skeleton-CSMxupKd.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-D19MUfuA.js → Skills-CGpMng8w.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-DZdS2c4B.js → Sla-CYtaU3Ar.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-DEWyi82O.js → SpeechSettings-BTCsu1uM.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-COwILO7T.js → SyncSettings-Cnzx2L5I.js} +2 -2
  70. package/src/assets/web-panel/assets/Tasks-BhnGtqaZ.js +1 -0
  71. package/src/assets/web-panel/assets/{Templates-CouCONlo.js → Templates-Ccdx_C3w.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-DJF8zjXy.js → Tenant-ZN8c86j3.js} +1 -1
  73. package/src/assets/web-panel/assets/Terminal-BfgM0oyN.js +3 -0
  74. package/src/assets/web-panel/assets/{TimelineRenderer-Hd1UCvLm.js → TimelineRenderer-CjgirE9d.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-DvR4eNpx.js → Tokens-QoRpi6Wf.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-CYslzJDF.js → Trigger-CEQKJkhs.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-Bje6U7_E.js → Trust-UTuAzV1q.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-Cz-GZJDg.js → UkeySign-JDs9I7fl.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-Bb1UWWOc.js → VideoEditing-BACYQQSd.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-B2ZGejOh.js → Wallet-C-SKluhH.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-CKJmoHdr.js → WebAuthn-9chizTFy.js} +5 -5
  82. package/src/assets/web-panel/assets/{WorkflowEditor-Whk2YLrb.js → WorkflowEditor-0mF-LAUo.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-RoIuy9Y2.js → chat-Di7QINiP.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-BhEd_bKZ.js → colors-SBmhHMM9.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-CidH0uK1.js → compact-item-BmbETbNj.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-C_rRS-Ds.js → createContext-C7hFnsJ7.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-gNvbyy4j.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-CmeIRIpe.js → hasIn-CFtthKDD.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-ys4rkmSl.js → index-B4etIqbf.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-dMw41BZp.js → index-BCcCs7LJ.js} +1 -1
  91. package/src/assets/web-panel/assets/index-BNXpMnIY.js +1 -0
  92. package/src/assets/web-panel/assets/{index-DLQQetVM.js → index-BT2uOwmA.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-CcXsvVqO.js → index-BcRTX_WO.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-Luxberfg.js → index-BcawAm_i.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-_dSvONj9.js → index-Bpo7UVJe.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CNIuqDnx.js → index-C07kpleB.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-Ds3Cg0Ae.js → index-C2CN7coN.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Ruva8uPi.js → index-C2fhXmhW.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CWd-l-yG.js → index-C6tZzsb9.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CoGpLFSs.js → index-CNpb8m5a.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DT1y-Y3f.js → index-CSnTUPQx.js} +3 -3
  102. package/src/assets/web-panel/assets/{index-qksnYfTn.js → index-CWDk3nDZ.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CX3pUViM.js → index-CcBhsVYn.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DjMeZpai.js → index-CgXQwqXr.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DPvldj2b.js → index-Cib-RTws.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DBkcH93B.js → index-ClIp4Vin.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DoZHyQzC.js → index-CovTrPpI.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CrfbYvUn.js → index-D0yO3vWh.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-C6k3kLEx.js → index-D134XFWR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-r7fl2fJ5.js → index-D6vNUp6c.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-D-_Hp7sk.js → index-D8CeUlN0.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CEQ-hwZR.js → index-DEYnWiq1.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B1mwMvn4.js → index-DI2xH1fU.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CONjSq4V.js → index-DRBc1Ewn.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Np_V608u.js → index-DWfObC0n.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CZHr43Om.js → index-Dk4ez5rf.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-GjeCpE-O.js → index-Dps9xdE8.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BzUwFZ_8.js → index-Dww6gCzI.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-C5PRk4sg.js → index-NxxQTlPJ.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CNr2Jahq.js → index-PN02VlUB.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-B6m1mhdz.js → index-WjZVyLn7.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Bx_Je5Dv.js → index-_a2NG3iP.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-Cb96fe_j.js → index-_hO8-EnW.js} +1 -1
  124. package/src/assets/web-panel/assets/index-gfHxqT1Q.js +1 -0
  125. package/src/assets/web-panel/assets/{index-j5F0sAV-.js → index-lRVjtXeH.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CqGJIS-s.js → index-sA4vr5WV.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-IGkFXvXp.js → index-sz0w-D-C.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-DkSV8vgw.js → initDefaultProps-B1zCwkvT.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-Cp8NKUFr.js → motion-BDGIV9KA.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-CLyMNWcC.js → move-BITqgluK.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-8eo0vufF.js → omit-uD97QKBF.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-DezDJBf9.js → pickAttrs-CZpXhSIE.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-MzOUG99n.js → placementArrow-ByUvT_08.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-BIM3OijT.js → responsiveObserve-BQG9LlBs.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-BboGfin4.js → slide-Bx9TyeEE.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-B2H0FDx9.js → statusUtils-XWaMqYM8.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-BEkY7TC8.js → styleChecker-BZ-nMyDB.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-BsmYDsvA.js → useFlexGapSupport-D_iwA3vx.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-CO3oipa2.js → useFs-DuvW_aRX.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-C-yb9KXG.js → usePersonalDataHub-BO7orS0d.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-2w5Ks8oo.js → vnode-Cc_fqAL4.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-BbwfKB6m.js → zoom-BGkBp90M.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/agent.js +4 -0
  145. package/src/lib/agent-core.js +1 -0
  146. package/src/lib/cowork-workflow.js +344 -30
  147. package/src/lib/hook-manager.js +3 -2
  148. package/src/lib/workflow-state-reader.js +10 -1
  149. package/src/runtime/headless-stream.js +14 -2
  150. package/src/assets/web-panel/assets/MobileProjects-Dl8xYWOU.js +0 -1
  151. package/src/assets/web-panel/assets/Tasks-D-O2-bZx.js +0 -1
  152. package/src/assets/web-panel/assets/Terminal-BTXj0cal.js +0 -3
  153. package/src/assets/web-panel/assets/devWarning-CahsJx-O.js +0 -1
  154. package/src/assets/web-panel/assets/index-BpAHKzLk.js +0 -1
  155. package/src/assets/web-panel/assets/index-D-uS5svS.js +0 -1
@@ -1 +1 @@
1
- import{I as m,J as f,U as b,R as c,c as o,K as e,V as y,S as h,o as tt,b as j,r as x,P as d,Q as _,F as T,Z as B,$ as xt}from"./vendor-BvqAck49.js";import{_ as Lt,b as et,u as at,d as A}from"./index-DT1y-Y3f.js";import{u as ot}from"./useFs-CO3oipa2.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{s as St,am as Ct,f as Tt,d as Et,m as Ot,az as At,R as wt}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";function it(n){const i=nt(n);if(!i)return null;try{return JSON.parse(i)}catch{}const r=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const st=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),ct=Object.freeze(["low","medium","high","critical"]);function q(n,i=0){return typeof n=="number"&&Number.isFinite(n)?n:i}function Q(n){if(!n)return{noDb:!1,error:""};const i=nt(n),r=/Database not available/i.test(i);return{noDb:r,error:r?"Database not available":""}}function Rt(n,i=0){if(!n||typeof n!="object")return null;const r=n.id||"";if(!r)return null;let t=n.details;if(typeof t=="string"&&t)try{t=JSON.parse(t)}catch{}const L=typeof n.success=="boolean"?n.success:n.success===1||n.success==="1"||n.success===!0,M=n.audit_mtc_event_id??n.auditMtcEventId??null;return{key:r,id:r,eventType:String(n.event_type??n.eventType??"").toLowerCase(),operation:String(n.operation||""),actor:n.actor??"",target:n.target??"",details:t??null,riskLevel:String(n.risk_level??n.riskLevel??"low").toLowerCase(),ipAddress:n.ip_address??n.ipAddress??"",userAgent:n.user_agent??n.userAgent??"",success:L,errorMessage:n.error_message??n.errorMessage??"",createdAt:n.created_at??n.createdAt??"",auditMtcEventId:M,_idx:i}}function rt(n){const i=it(n);return Array.isArray(i)?i.map(Rt).filter(Boolean):[]}const zt={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function lt(n){const i=JSON.parse(JSON.stringify(zt));for(const t of st)i.byEventType[t]=0;for(const t of ct)i.byRiskLevel[t]=0;const r=it(n);if(!r||typeof r!="object"||Array.isArray(r))return i;if(i.total=q(r.total,0),i.failures=q(r.failures,0),i.highRisk=q(r.highRisk,0),r.byEventType&&typeof r.byEventType=="object")for(const[t,L]of Object.entries(r.byEventType))typeof L=="number"&&Number.isFinite(L)&&(i.byEventType[t]=L);if(r.byRiskLevel&&typeof r.byRiskLevel=="object")for(const[t,L]of Object.entries(r.byRiskLevel))typeof L=="number"&&Number.isFinite(L)&&(i.byRiskLevel[t]=L);return i}function It(n){return!n||!n.auditMtcEventId?"none":"tracked"}function Mt(n){if(n==null||n==="")return"—";const i=String(n),r=i.includes(" ")&&!i.includes("T")?i.replace(" ","T")+"Z":i,t=new Date(r);return isNaN(t.getTime())?i:t.toLocaleString("zh-CN",{hour12:!1})}const Dt={__name:"Audit",setup(n,{expose:i}){i();const{t:r}=et(),t=at(),L=ot(),M=x(!1),w=x([]),E=x({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),N=x({noDb:!1,error:""}),R=x("events"),S=x(""),p=x(""),O=x(""),v=x(""),F=x(!1),z=x(!1),J=x(null),U=j(()=>[{title:r("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:r("audit.logColumns.operation"),key:"operation"},{title:r("audit.logColumns.actor"),key:"actor",width:"140px"},{title:r("audit.logColumns.target"),key:"target",width:"180px"},{title:r("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:r("audit.logColumns.success"),key:"success",width:"80px"},{title:r("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:r("audit.logColumns.action"),key:"action",width:"80px"}]),I=x({});function D(a){return a.auditMtcEventId&&I.value[a.id]||null}function V(a){const s=D(a);return s?s.state==="staging"?r("audit.mtc.stagingLabel"):s.state==="batched"?r("audit.mtc.batchedLabel",{batchId:s.batchId||"?"}):r("audit.mtc.unknownLabel"):r("audit.mtc.signedNotChecked")}function P(a){const s=D(a);return s?s.state==="staging"?"orange":s.state==="batched"?"green":"default":"blue"}function W(a){if(!a.auditMtcEventId)return"";const s=D(a),u=r("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return s?s.state==="staging"?r("audit.mtc.tooltipStaging",{base:u}):s.state==="batched"?r("audit.mtc.tooltipBatched",{base:u,batchId:s.batchId,treeHead:s.treeHeadId||""}):u:r("audit.mtc.tooltipNotChecked",{base:u})}async function k(a){if(!a.auditMtcEventId)return;const s=a.auditMtcEventId.replace(/"/g,'\\"');try{const u=await t.execute(`audit mtc reconcile-check "${s}" --json`,8e3);let C;try{C=JSON.parse(u.output.trim())}catch{const $=u.output.match(/\{[\s\S]*\}/);C=$?JSON.parse($[0]):null}if(!C){A.warning(r("audit.mtc.noJson"));return}const ht=C.found?{state:"batched",batchId:C.batchId,treeHeadId:C.treeHeadId}:C.staging?{state:"staging"}:{state:"unknown"};I.value={...I.value,[a.id]:ht}}catch(u){A.error(r("audit.mtc.checkFailed",{err:u?.message||u}))}}const Y=j(()=>E.value.total?(E.value.total-E.value.failures)/E.value.total*100:100),H=j(()=>!!(p.value||O.value||v.value||F.value)),l=j(()=>{let a=w.value;if(O.value&&(a=a.filter(s=>s.eventType===O.value)),v.value&&(a=a.filter(s=>s.riskLevel===v.value)),F.value&&(a=a.filter(s=>!s.success)),p.value){const s=p.value.toLowerCase();a=a.filter(u=>(u.operation||"").toLowerCase().includes(s)||(u.actor||"").toLowerCase().includes(s)||(u.target||"").toLowerCase().includes(s))}return a});function g(a){const s=`audit.type.${a}`,u=r(s);return u===s?a:u}function Z(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function dt(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function ut(a){const s=`audit.risk.${a}`,u=r(s);return u===s?a:u}function ft(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function yt(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function gt(a,s){return s?Math.round(a/s*100):0}function _t(a,s){return a?a.length<=s?a:a.slice(0,s)+"…":""}function mt(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let K=null;function bt(){clearTimeout(K),K=setTimeout(()=>{p.value=S.value.trim()},300)}function vt(){p.value=S.value.trim()}async function G(){M.value=!0,N.value={noDb:!1,error:""};try{const[a,s]=await Promise.all([t.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),t.execute("audit stats --json",8e3).catch(()=>({output:""}))]),u=[a,s].map(C=>Q(C.output)).find(C=>C.noDb);u&&(N.value=u),w.value=rt(a.output),E.value=lt(s.output)}catch(a){A.error(r("audit.messages.loadFailed",{err:a?.message||a}))}finally{M.value=!1}}function pt(a){J.value=a,z.value=!0}async function kt(){try{const{output:a}=await t.execute("audit export -f json -n 10000",2e4);if(Q(a).noDb){A.error(r("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){A.error(r("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const u=await L.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(u.canceled)return;A.success(u.path?r("audit.messages.exportOk",{path:u.path}):r("audit.messages.exportOkDefault"))}catch(a){A.error(r("audit.messages.exportFailed",{err:a?.message||a}))}}tt(G);const X={t:r,ws:t,fs:L,loading:M,logs:w,stats:E,errorState:N,activeTab:R,searchInput:S,searchTerm:p,typeFilter:O,riskFilter:v,failuresOnly:F,showDetailsModal:z,currentLog:J,logColumns:U,mtcStatusCache:I,getMtcStatusEntry:D,getMtcLabel:V,getMtcColor:P,getMtcTooltip:W,checkMtcStatus:k,successRate:Y,hasFilters:H,filteredLogs:l,typeLabel:g,typeColor:Z,typeBarColor:dt,riskLabel:ut,riskColor:ft,riskBarColor:yt,pctOfTotal:gt,truncate:_t,formatDetails:mt,get searchDebounce(){return K},set searchDebounce(a){K=a},onSearchInput:bt,runSearch:vt,loadAll:G,viewLogDetails:pt,exportJson:kt,ref:x,computed:j,onMounted:tt,get useI18n(){return et},get ReloadOutlined(){return wt},get DownloadOutlined(){return At},get FileSearchOutlined(){return Ot},get CloseCircleOutlined(){return Et},get CheckCircleOutlined(){return Tt},get WarningOutlined(){return Ct},get AlertOutlined(){return St},get message(){return A},get useWsStore(){return at},get useFs(){return ot},get parseLogs(){return rt},get parseStats(){return lt},get detectAuditError(){return Q},get formatAuditTime(){return Mt},get classifyMtcStatus(){return It},get EVENT_TYPES(){return st},get RISK_LEVELS(){return ct}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Nt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ft={class:"page-title"},Jt={class:"page-sub"},jt={class:"type-name"},Bt={class:"type-count"},Vt={class:"filter-bar"},Pt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Kt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},Ut={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},Wt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Yt={key:1,style:{color:"var(--text-muted)"}},Ht={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Zt={key:1,style:{color:"var(--text-muted)"}},qt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Qt={key:0,style:{"padding-top":"8px"}},Gt={style:{"font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},$t={style:{"font-family":"monospace"}},te={key:0,style:{"font-family":"monospace","font-size":"12px"}},ee={key:1,style:{color:"var(--text-muted)"}},ae={key:0,style:{"font-family":"monospace","font-size":"12px"}},oe={key:1,style:{color:"var(--text-muted)"}},re={style:{"font-family":"monospace","font-size":"12px"}},le={style:{"font-family":"monospace","font-size":"11px"}},ne={style:{color:"#ff4d4f"}},ie={class:"details-pre"};function se(n,i,r,t,L,M){const w=m("a-button"),E=m("a-space"),N=m("a-alert"),R=m("a-statistic"),S=m("a-card"),p=m("a-col"),O=m("a-row"),v=m("a-tag"),F=m("a-input-search"),z=m("a-radio-button"),J=m("a-radio-group"),U=m("a-checkbox"),I=m("a-tooltip"),D=m("a-table"),V=m("a-tab-pane"),P=m("a-progress"),W=m("a-tabs"),k=m("a-descriptions-item"),Y=m("a-descriptions"),H=m("a-modal");return d(),f("div",null,[b("div",Nt,[b("div",null,[b("h2",Ft,c(t.t("audit.title")),1),b("p",Jt,c(t.t("audit.subtitle")),1)]),o(E,null,{default:e(()=>[o(w,{loading:t.loading,onClick:t.loadAll},{icon:e(()=>[o(t.ReloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.refresh")),1)]),_:1},8,["loading"]),o(w,{onClick:t.exportJson},{icon:e(()=>[o(t.DownloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.exportJson")),1)]),_:1})]),_:1})]),y(" noDb banner "),t.errorState.noDb?(d(),h(N,{key:0,type:"info","show-icon":"",message:t.t("audit.noDb.message"),description:t.t("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("v-if",!0),y(" Stat cards "),o(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:e(()=>[o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.total"),value:t.stats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:e(()=>[o(t.FileSearchOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.failures"),value:t.stats.failures,"value-style":{color:t.stats.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.CloseCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.highRisk"),value:t.stats.highRisk,"value-style":{color:t.stats.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.critical"),value:t.stats.byRiskLevel.critical||0,"value-style":{color:(t.stats.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:e(()=>[o(t.AlertOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:24,sm:8,lg:4},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.successRate"),value:t.successRate,suffix:"%",precision:1,"value-style":{color:t.successRate>=95?"#52c41a":t.successRate>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:e(()=>[o(t.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),y(" Event type catalogue "),o(S,{title:t.t("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:e(()=>[o(O,{gutter:[12,12]},{default:e(()=>[(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),h(p,{key:l,xs:12,sm:8,lg:3},{default:e(()=>[b("div",{class:"type-pill",style:xt({borderLeftColor:t.typeBarColor(l)})},[o(v,{color:t.typeColor(l),style:{"font-family":"monospace","font-size":"11px"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),b("div",jt,c(t.typeLabel(l)),1),b("div",Bt,c(t.stats.byEventType[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),y(" Tabs "),o(W,{activeKey:t.activeTab,"onUpdate:activeKey":i[4]||(i[4]=l=>t.activeTab=l),class:"audit-tabs"},{default:e(()=>[y(" ── Events tab ──────────────────────────────────────────── "),o(V,{key:"events",tab:t.t("audit.tabs.events")},{default:e(()=>[b("div",Vt,[o(F,{value:t.searchInput,"onUpdate:value":i[0]||(i[0]=l=>t.searchInput=l),placeholder:t.t("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:t.runSearch,onInput:t.onSearchInput},null,8,["value","placeholder"]),o(J,{value:t.typeFilter,"onUpdate:value":i[1]||(i[1]=l=>t.typeFilter=l),size:"small","button-style":"solid"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allTypes")),1)]),_:1}),(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(J,{value:t.riskFilter,"onUpdate:value":i[2]||(i[2]=l=>t.riskFilter=l),size:"small"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allRisks")),1)]),_:1}),(d(!0),f(T,null,B(t.RISK_LEVELS,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(U,{checked:t.failuresOnly,"onUpdate:checked":i[3]||(i[3]=l=>t.failuresOnly=l)},{default:e(()=>[_(c(t.t("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),o(D,{columns:t.logColumns,"data-source":t.filteredLogs,pagination:{pageSize:20,showTotal:l=>t.t("audit.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:e(({column:l,record:g})=>[l.key==="createdAt"?(d(),f("span",Pt,c(t.formatAuditTime(g.createdAt)),1)):y("v-if",!0),l.key==="eventType"?(d(),h(v,{key:1,color:t.typeColor(g.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(g.eventType),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="operation"?(d(),f(T,{key:2},[b("span",Kt,c(g.operation),1),g.errorMessage?(d(),f("div",Ut,c(g.errorMessage),1)):y("v-if",!0)],64)):y("v-if",!0),l.key==="actor"?(d(),f(T,{key:3},[g.actor?(d(),f("span",Wt,c(g.actor),1)):(d(),f("span",Yt,"—"))],64)):y("v-if",!0),l.key==="target"?(d(),f(T,{key:4},[g.target?(d(),f("span",Ht,c(t.truncate(g.target,32)),1)):(d(),f("span",Zt,"—"))],64)):y("v-if",!0),l.key==="riskLevel"?(d(),h(v,{key:5,color:t.riskColor(g.riskLevel)},{default:e(()=>[_(c(t.riskLabel(g.riskLevel)),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="success"?(d(),h(v,{key:6,color:g.success?"green":"red"},{default:e(()=>[_(c(g.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="mtc"?(d(),f(T,{key:7},[t.classifyMtcStatus(g)==="none"?(d(),h(I,{key:0,title:t.t("audit.mtc.noneTooltip")},{default:e(()=>[o(v,{color:"default"},{default:e(()=>[...i[6]||(i[6]=[_("—",-1)])]),_:1})]),_:1},8,["title"])):(d(),h(I,{key:1,title:t.getMtcTooltip(g)},{default:e(()=>[o(v,{color:t.getMtcColor(g),style:{cursor:"pointer"},onClick:Z=>t.checkMtcStatus(g)},{default:e(()=>[_(c(t.getMtcLabel(g)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):y("v-if",!0),l.key==="action"?(d(),h(w,{key:8,size:"small",type:"link",onClick:Z=>t.viewLogDetails(g)},{default:e(()=>[_(c(t.t("audit.rowAction.details")),1)]),_:1},8,["onClick"])):y("v-if",!0)]),emptyText:e(()=>[b("div",qt,[o(t.FileSearchOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(t.hasFilters?t.t("audit.empty.filtered"):t.t("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),y(" ── Breakdown tab ───────────────────────────────────────── "),o(V,{key:"breakdown",tab:t.t("audit.tabs.breakdown")},{default:e(()=>[o(O,{gutter:[16,16]},{default:e(()=>[o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.typeColor(l),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byEventType[l]||0,t.stats.total),"stroke-color":t.typeBarColor(l),format:()=>`${t.stats.byEventType[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,B(t.RISK_LEVELS,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.riskColor(l),style:{"min-width":"80px","text-align":"center"}},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byRiskLevel[l]||0,t.stats.total),"stroke-color":t.riskBarColor(l),format:()=>`${t.stats.byRiskLevel[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),y(" ── Event details modal ─────────────────────────────────── "),o(H,{open:t.showDetailsModal,"onUpdate:open":i[5]||(i[5]=l=>t.showDetailsModal=l),title:t.t("audit.details.title",{id:t.currentLog?.id?.slice(0,8)||""}),width:720,footer:null},{default:e(()=>[t.currentLog?(d(),f("div",Qt,[o(Y,{column:2,size:"small",bordered:""},{default:e(()=>[o(k,{label:t.t("audit.details.id"),span:2},{default:e(()=>[b("span",Gt,c(t.currentLog.id),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.eventType")},{default:e(()=>[o(v,{color:t.typeColor(t.currentLog.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(t.currentLog.eventType),1)]),_:1},8,["color"]),b("span",Xt,c(t.typeLabel(t.currentLog.eventType)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.riskLevel")},{default:e(()=>[o(v,{color:t.riskColor(t.currentLog.riskLevel)},{default:e(()=>[_(c(t.riskLabel(t.currentLog.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.operation"),span:2},{default:e(()=>[b("span",$t,c(t.currentLog.operation),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.status")},{default:e(()=>[o(v,{color:t.currentLog.success?"green":"red"},{default:e(()=>[_(c(t.currentLog.success?t.t("audit.details.success"):t.t("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.time")},{default:e(()=>[_(c(t.formatAuditTime(t.currentLog.createdAt)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.actor")},{default:e(()=>[t.currentLog.actor?(d(),f("span",te,c(t.currentLog.actor),1)):(d(),f("span",ee,"—"))]),_:1},8,["label"]),o(k,{label:t.t("audit.details.target")},{default:e(()=>[t.currentLog.target?(d(),f("span",ae,c(t.currentLog.target),1)):(d(),f("span",oe,"—"))]),_:1},8,["label"]),t.currentLog.ipAddress?(d(),h(k,{key:0,label:t.t("audit.details.ip")},{default:e(()=>[b("span",re,c(t.currentLog.ipAddress),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.userAgent?(d(),h(k,{key:1,label:t.t("audit.details.userAgent")},{default:e(()=>[b("span",le,c(t.currentLog.userAgent),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.errorMessage?(d(),h(k,{key:2,label:t.t("audit.details.errorMessage"),span:2},{default:e(()=>[b("span",ne,c(t.currentLog.errorMessage),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.details?(d(),h(k,{key:3,label:t.t("audit.details.details"),span:2},{default:e(()=>[b("pre",ie,c(t.formatDetails(t.currentLog.details)),1)]),_:1},8,["label"])):y("v-if",!0)]),_:1})])):y("v-if",!0)]),_:1},8,["open","title"])])}const _e=Lt(Dt,[["render",se],["__scopeId","data-v-be9f4fc3"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/views/Audit.vue"]]);export{_e as default};
1
+ import{I as m,J as f,U as b,R as c,c as o,K as e,V as y,S as h,o as tt,b as J,r as x,P as d,Q as _,F as T,Z as V,$ as xt}from"./vendor-BvqAck49.js";import{_ as Lt,b as et,u as at,d as A}from"./index-CSnTUPQx.js";import{u as ot}from"./useFs-DuvW_aRX.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{s as St,am as Ct,f as Tt,d as Et,m as Ot,az as At,R as wt}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";function it(n){const i=nt(n);if(!i)return null;try{return JSON.parse(i)}catch{}const r=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const st=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),ct=Object.freeze(["low","medium","high","critical"]);function Z(n,i=0){return typeof n=="number"&&Number.isFinite(n)?n:i}function q(n){if(!n)return{noDb:!1,error:""};const i=nt(n),r=/Database not available/i.test(i);return{noDb:r,error:r?"Database not available":""}}function Rt(n,i=0){if(!n||typeof n!="object")return null;const r=n.id||"";if(!r)return null;let t=n.details;if(typeof t=="string"&&t)try{t=JSON.parse(t)}catch{}const L=typeof n.success=="boolean"?n.success:n.success===1||n.success==="1"||n.success===!0,M=n.audit_mtc_event_id??n.auditMtcEventId??null;return{key:r,id:r,eventType:String(n.event_type??n.eventType??"").toLowerCase(),operation:String(n.operation||""),actor:n.actor??"",target:n.target??"",details:t??null,riskLevel:String(n.risk_level??n.riskLevel??"low").toLowerCase(),ipAddress:n.ip_address??n.ipAddress??"",userAgent:n.user_agent??n.userAgent??"",success:L,errorMessage:n.error_message??n.errorMessage??"",createdAt:n.created_at??n.createdAt??"",auditMtcEventId:M,_idx:i}}function rt(n){const i=it(n);return Array.isArray(i)?i.map(Rt).filter(Boolean):[]}const zt={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function lt(n){const i=JSON.parse(JSON.stringify(zt));for(const t of st)i.byEventType[t]=0;for(const t of ct)i.byRiskLevel[t]=0;const r=it(n);if(!r||typeof r!="object"||Array.isArray(r))return i;if(i.total=Z(r.total,0),i.failures=Z(r.failures,0),i.highRisk=Z(r.highRisk,0),r.byEventType&&typeof r.byEventType=="object")for(const[t,L]of Object.entries(r.byEventType))typeof L=="number"&&Number.isFinite(L)&&(i.byEventType[t]=L);if(r.byRiskLevel&&typeof r.byRiskLevel=="object")for(const[t,L]of Object.entries(r.byRiskLevel))typeof L=="number"&&Number.isFinite(L)&&(i.byRiskLevel[t]=L);return i}function It(n){return!n||!n.auditMtcEventId?"none":"tracked"}function Mt(n){if(n==null||n==="")return"—";const i=String(n),r=i.includes(" ")&&!i.includes("T")?i.replace(" ","T")+"Z":i,t=new Date(r);return isNaN(t.getTime())?i:t.toLocaleString("zh-CN",{hour12:!1})}const Dt={__name:"Audit",setup(n,{expose:i}){i();const{t:r}=et(),t=at(),L=ot(),M=x(!1),w=x([]),E=x({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),N=x({noDb:!1,error:""}),R=x("events"),S=x(""),p=x(""),O=x(""),v=x(""),F=x(!1),z=x(!1),j=x(null),U=J(()=>[{title:r("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:r("audit.logColumns.operation"),key:"operation"},{title:r("audit.logColumns.actor"),key:"actor",width:"140px"},{title:r("audit.logColumns.target"),key:"target",width:"180px"},{title:r("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:r("audit.logColumns.success"),key:"success",width:"80px"},{title:r("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:r("audit.logColumns.action"),key:"action",width:"80px"}]),I=x({});function D(a){return a.auditMtcEventId&&I.value[a.id]||null}function B(a){const s=D(a);return s?s.state==="staging"?r("audit.mtc.stagingLabel"):s.state==="batched"?r("audit.mtc.batchedLabel",{batchId:s.batchId||"?"}):r("audit.mtc.unknownLabel"):r("audit.mtc.signedNotChecked")}function P(a){const s=D(a);return s?s.state==="staging"?"orange":s.state==="batched"?"green":"default":"blue"}function W(a){if(!a.auditMtcEventId)return"";const s=D(a),u=r("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return s?s.state==="staging"?r("audit.mtc.tooltipStaging",{base:u}):s.state==="batched"?r("audit.mtc.tooltipBatched",{base:u,batchId:s.batchId,treeHead:s.treeHeadId||""}):u:r("audit.mtc.tooltipNotChecked",{base:u})}async function k(a){if(!a.auditMtcEventId)return;const s=a.auditMtcEventId.replace(/"/g,'\\"');try{const u=await t.execute(`audit mtc reconcile-check "${s}" --json`,8e3);let C;try{C=JSON.parse(u.output.trim())}catch{const $=u.output.match(/\{[\s\S]*\}/);C=$?JSON.parse($[0]):null}if(!C){A.warning(r("audit.mtc.noJson"));return}const ht=C.found?{state:"batched",batchId:C.batchId,treeHeadId:C.treeHeadId}:C.staging?{state:"staging"}:{state:"unknown"};I.value={...I.value,[a.id]:ht}}catch(u){A.error(r("audit.mtc.checkFailed",{err:u?.message||u}))}}const Y=J(()=>E.value.total?(E.value.total-E.value.failures)/E.value.total*100:100),H=J(()=>!!(p.value||O.value||v.value||F.value)),l=J(()=>{let a=w.value;if(O.value&&(a=a.filter(s=>s.eventType===O.value)),v.value&&(a=a.filter(s=>s.riskLevel===v.value)),F.value&&(a=a.filter(s=>!s.success)),p.value){const s=p.value.toLowerCase();a=a.filter(u=>(u.operation||"").toLowerCase().includes(s)||(u.actor||"").toLowerCase().includes(s)||(u.target||"").toLowerCase().includes(s))}return a});function g(a){const s=`audit.type.${a}`,u=r(s);return u===s?a:u}function Q(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function dt(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function ut(a){const s=`audit.risk.${a}`,u=r(s);return u===s?a:u}function ft(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function yt(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function gt(a,s){return s?Math.round(a/s*100):0}function _t(a,s){return a?a.length<=s?a:a.slice(0,s)+"…":""}function mt(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let K=null;function bt(){clearTimeout(K),K=setTimeout(()=>{p.value=S.value.trim()},300)}function vt(){p.value=S.value.trim()}async function G(){M.value=!0,N.value={noDb:!1,error:""};try{const[a,s]=await Promise.all([t.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),t.execute("audit stats --json",8e3).catch(()=>({output:""}))]),u=[a,s].map(C=>q(C.output)).find(C=>C.noDb);u&&(N.value=u),w.value=rt(a.output),E.value=lt(s.output)}catch(a){A.error(r("audit.messages.loadFailed",{err:a?.message||a}))}finally{M.value=!1}}function pt(a){j.value=a,z.value=!0}async function kt(){try{const{output:a}=await t.execute("audit export -f json -n 10000",2e4);if(q(a).noDb){A.error(r("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){A.error(r("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const u=await L.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(u.canceled)return;A.success(u.path?r("audit.messages.exportOk",{path:u.path}):r("audit.messages.exportOkDefault"))}catch(a){A.error(r("audit.messages.exportFailed",{err:a?.message||a}))}}tt(G);const X={t:r,ws:t,fs:L,loading:M,logs:w,stats:E,errorState:N,activeTab:R,searchInput:S,searchTerm:p,typeFilter:O,riskFilter:v,failuresOnly:F,showDetailsModal:z,currentLog:j,logColumns:U,mtcStatusCache:I,getMtcStatusEntry:D,getMtcLabel:B,getMtcColor:P,getMtcTooltip:W,checkMtcStatus:k,successRate:Y,hasFilters:H,filteredLogs:l,typeLabel:g,typeColor:Q,typeBarColor:dt,riskLabel:ut,riskColor:ft,riskBarColor:yt,pctOfTotal:gt,truncate:_t,formatDetails:mt,get searchDebounce(){return K},set searchDebounce(a){K=a},onSearchInput:bt,runSearch:vt,loadAll:G,viewLogDetails:pt,exportJson:kt,ref:x,computed:J,onMounted:tt,get useI18n(){return et},get ReloadOutlined(){return wt},get DownloadOutlined(){return At},get FileSearchOutlined(){return Ot},get CloseCircleOutlined(){return Et},get CheckCircleOutlined(){return Tt},get WarningOutlined(){return Ct},get AlertOutlined(){return St},get message(){return A},get useWsStore(){return at},get useFs(){return ot},get parseLogs(){return rt},get parseStats(){return lt},get detectAuditError(){return q},get formatAuditTime(){return Mt},get classifyMtcStatus(){return It},get EVENT_TYPES(){return st},get RISK_LEVELS(){return ct}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Nt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ft={class:"page-title"},jt={class:"page-sub"},Jt={class:"type-name"},Vt={class:"type-count"},Bt={class:"filter-bar"},Pt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Kt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},Ut={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},Wt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Yt={key:1,style:{color:"var(--text-muted)"}},Ht={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Qt={key:1,style:{color:"var(--text-muted)"}},Zt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},qt={key:0,style:{"padding-top":"8px"}},Gt={style:{"font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},$t={style:{"font-family":"monospace"}},te={key:0,style:{"font-family":"monospace","font-size":"12px"}},ee={key:1,style:{color:"var(--text-muted)"}},ae={key:0,style:{"font-family":"monospace","font-size":"12px"}},oe={key:1,style:{color:"var(--text-muted)"}},re={style:{"font-family":"monospace","font-size":"12px"}},le={style:{"font-family":"monospace","font-size":"11px"}},ne={style:{color:"#ff4d4f"}},ie={class:"details-pre"};function se(n,i,r,t,L,M){const w=m("a-button"),E=m("a-space"),N=m("a-alert"),R=m("a-statistic"),S=m("a-card"),p=m("a-col"),O=m("a-row"),v=m("a-tag"),F=m("a-input-search"),z=m("a-radio-button"),j=m("a-radio-group"),U=m("a-checkbox"),I=m("a-tooltip"),D=m("a-table"),B=m("a-tab-pane"),P=m("a-progress"),W=m("a-tabs"),k=m("a-descriptions-item"),Y=m("a-descriptions"),H=m("a-modal");return d(),f("div",null,[b("div",Nt,[b("div",null,[b("h2",Ft,c(t.t("audit.title")),1),b("p",jt,c(t.t("audit.subtitle")),1)]),o(E,null,{default:e(()=>[o(w,{loading:t.loading,onClick:t.loadAll},{icon:e(()=>[o(t.ReloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.refresh")),1)]),_:1},8,["loading"]),o(w,{onClick:t.exportJson},{icon:e(()=>[o(t.DownloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.exportJson")),1)]),_:1})]),_:1})]),y(" noDb banner "),t.errorState.noDb?(d(),h(N,{key:0,type:"info","show-icon":"",message:t.t("audit.noDb.message"),description:t.t("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("v-if",!0),y(" Stat cards "),o(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:e(()=>[o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.total"),value:t.stats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:e(()=>[o(t.FileSearchOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.failures"),value:t.stats.failures,"value-style":{color:t.stats.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.CloseCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.highRisk"),value:t.stats.highRisk,"value-style":{color:t.stats.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.critical"),value:t.stats.byRiskLevel.critical||0,"value-style":{color:(t.stats.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:e(()=>[o(t.AlertOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:24,sm:8,lg:4},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.successRate"),value:t.successRate,suffix:"%",precision:1,"value-style":{color:t.successRate>=95?"#52c41a":t.successRate>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:e(()=>[o(t.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),y(" Event type catalogue "),o(S,{title:t.t("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:e(()=>[o(O,{gutter:[12,12]},{default:e(()=>[(d(!0),f(T,null,V(t.EVENT_TYPES,l=>(d(),h(p,{key:l,xs:12,sm:8,lg:3},{default:e(()=>[b("div",{class:"type-pill",style:xt({borderLeftColor:t.typeBarColor(l)})},[o(v,{color:t.typeColor(l),style:{"font-family":"monospace","font-size":"11px"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),b("div",Jt,c(t.typeLabel(l)),1),b("div",Vt,c(t.stats.byEventType[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),y(" Tabs "),o(W,{activeKey:t.activeTab,"onUpdate:activeKey":i[4]||(i[4]=l=>t.activeTab=l),class:"audit-tabs"},{default:e(()=>[y(" ── Events tab ──────────────────────────────────────────── "),o(B,{key:"events",tab:t.t("audit.tabs.events")},{default:e(()=>[b("div",Bt,[o(F,{value:t.searchInput,"onUpdate:value":i[0]||(i[0]=l=>t.searchInput=l),placeholder:t.t("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:t.runSearch,onInput:t.onSearchInput},null,8,["value","placeholder"]),o(j,{value:t.typeFilter,"onUpdate:value":i[1]||(i[1]=l=>t.typeFilter=l),size:"small","button-style":"solid"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allTypes")),1)]),_:1}),(d(!0),f(T,null,V(t.EVENT_TYPES,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(j,{value:t.riskFilter,"onUpdate:value":i[2]||(i[2]=l=>t.riskFilter=l),size:"small"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allRisks")),1)]),_:1}),(d(!0),f(T,null,V(t.RISK_LEVELS,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(U,{checked:t.failuresOnly,"onUpdate:checked":i[3]||(i[3]=l=>t.failuresOnly=l)},{default:e(()=>[_(c(t.t("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),o(D,{columns:t.logColumns,"data-source":t.filteredLogs,pagination:{pageSize:20,showTotal:l=>t.t("audit.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:e(({column:l,record:g})=>[l.key==="createdAt"?(d(),f("span",Pt,c(t.formatAuditTime(g.createdAt)),1)):y("v-if",!0),l.key==="eventType"?(d(),h(v,{key:1,color:t.typeColor(g.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(g.eventType),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="operation"?(d(),f(T,{key:2},[b("span",Kt,c(g.operation),1),g.errorMessage?(d(),f("div",Ut,c(g.errorMessage),1)):y("v-if",!0)],64)):y("v-if",!0),l.key==="actor"?(d(),f(T,{key:3},[g.actor?(d(),f("span",Wt,c(g.actor),1)):(d(),f("span",Yt,"—"))],64)):y("v-if",!0),l.key==="target"?(d(),f(T,{key:4},[g.target?(d(),f("span",Ht,c(t.truncate(g.target,32)),1)):(d(),f("span",Qt,"—"))],64)):y("v-if",!0),l.key==="riskLevel"?(d(),h(v,{key:5,color:t.riskColor(g.riskLevel)},{default:e(()=>[_(c(t.riskLabel(g.riskLevel)),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="success"?(d(),h(v,{key:6,color:g.success?"green":"red"},{default:e(()=>[_(c(g.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="mtc"?(d(),f(T,{key:7},[t.classifyMtcStatus(g)==="none"?(d(),h(I,{key:0,title:t.t("audit.mtc.noneTooltip")},{default:e(()=>[o(v,{color:"default"},{default:e(()=>[...i[6]||(i[6]=[_("—",-1)])]),_:1})]),_:1},8,["title"])):(d(),h(I,{key:1,title:t.getMtcTooltip(g)},{default:e(()=>[o(v,{color:t.getMtcColor(g),style:{cursor:"pointer"},onClick:Q=>t.checkMtcStatus(g)},{default:e(()=>[_(c(t.getMtcLabel(g)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):y("v-if",!0),l.key==="action"?(d(),h(w,{key:8,size:"small",type:"link",onClick:Q=>t.viewLogDetails(g)},{default:e(()=>[_(c(t.t("audit.rowAction.details")),1)]),_:1},8,["onClick"])):y("v-if",!0)]),emptyText:e(()=>[b("div",Zt,[o(t.FileSearchOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(t.hasFilters?t.t("audit.empty.filtered"):t.t("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),y(" ── Breakdown tab ───────────────────────────────────────── "),o(B,{key:"breakdown",tab:t.t("audit.tabs.breakdown")},{default:e(()=>[o(O,{gutter:[16,16]},{default:e(()=>[o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,V(t.EVENT_TYPES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.typeColor(l),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byEventType[l]||0,t.stats.total),"stroke-color":t.typeBarColor(l),format:()=>`${t.stats.byEventType[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,V(t.RISK_LEVELS,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.riskColor(l),style:{"min-width":"80px","text-align":"center"}},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byRiskLevel[l]||0,t.stats.total),"stroke-color":t.riskBarColor(l),format:()=>`${t.stats.byRiskLevel[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),y(" ── Event details modal ─────────────────────────────────── "),o(H,{open:t.showDetailsModal,"onUpdate:open":i[5]||(i[5]=l=>t.showDetailsModal=l),title:t.t("audit.details.title",{id:t.currentLog?.id?.slice(0,8)||""}),width:720,footer:null},{default:e(()=>[t.currentLog?(d(),f("div",qt,[o(Y,{column:2,size:"small",bordered:""},{default:e(()=>[o(k,{label:t.t("audit.details.id"),span:2},{default:e(()=>[b("span",Gt,c(t.currentLog.id),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.eventType")},{default:e(()=>[o(v,{color:t.typeColor(t.currentLog.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(t.currentLog.eventType),1)]),_:1},8,["color"]),b("span",Xt,c(t.typeLabel(t.currentLog.eventType)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.riskLevel")},{default:e(()=>[o(v,{color:t.riskColor(t.currentLog.riskLevel)},{default:e(()=>[_(c(t.riskLabel(t.currentLog.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.operation"),span:2},{default:e(()=>[b("span",$t,c(t.currentLog.operation),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.status")},{default:e(()=>[o(v,{color:t.currentLog.success?"green":"red"},{default:e(()=>[_(c(t.currentLog.success?t.t("audit.details.success"):t.t("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.time")},{default:e(()=>[_(c(t.formatAuditTime(t.currentLog.createdAt)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.actor")},{default:e(()=>[t.currentLog.actor?(d(),f("span",te,c(t.currentLog.actor),1)):(d(),f("span",ee,"—"))]),_:1},8,["label"]),o(k,{label:t.t("audit.details.target")},{default:e(()=>[t.currentLog.target?(d(),f("span",ae,c(t.currentLog.target),1)):(d(),f("span",oe,"—"))]),_:1},8,["label"]),t.currentLog.ipAddress?(d(),h(k,{key:0,label:t.t("audit.details.ip")},{default:e(()=>[b("span",re,c(t.currentLog.ipAddress),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.userAgent?(d(),h(k,{key:1,label:t.t("audit.details.userAgent")},{default:e(()=>[b("span",le,c(t.currentLog.userAgent),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.errorMessage?(d(),h(k,{key:2,label:t.t("audit.details.errorMessage"),span:2},{default:e(()=>[b("span",ne,c(t.currentLog.errorMessage),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.details?(d(),h(k,{key:3,label:t.t("audit.details.details"),span:2},{default:e(()=>[b("pre",ie,c(t.formatDetails(t.currentLog.details)),1)]),_:1},8,["label"])):y("v-if",!0)]),_:1})])):y("v-if",!0)]),_:1},8,["open","title"])])}const _e=Lt(Dt,[["render",se],["__scopeId","data-v-be9f4fc3"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Audit.vue"]]);export{_e as default};
@@ -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-DT1y-Y3f.js";import{u as be}from"./useFs-CO3oipa2.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(""),Y=c(0),q=c(""),P=c(""),X=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"),Y.value=o.pending??o.pendingChanges??0,q.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);Y.value=o?parseInt(o[1]):0;const _=a.match(/last[:\s]+(.+)/i);_&&(q.value=_[1].trim())}async function ge(){X.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{X.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(""),J=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 H(){ne.value=!0,N.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),o=T(a);Array.isArray(o)?J.value=o:o&&Array.isArray(o.pins)?J.value=o.pins:J.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 H()}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 H()}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(),H()])}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:Y,lastSyncTime:q,syncOutput:P,pushLoading:X,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:J,pinColumns:_e,loadIpfsStatus:re,loadPins:H,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},Je={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},He={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"}},Ye={style:{"font-family":"monospace"}},qe={key:0},Xe={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",Je,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",He,[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",Ye,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(s(),d("div",qe,[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",Xe,[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-YJBpJd/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-CSnTUPQx.js";import{u as be}from"./useFs-DuvW_aRX.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(),G=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 W(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 G.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:G,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:W,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"}},Ge={style:{color:"var(--text-secondary)"}},We={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,G,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"),W=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(W,{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",Ge,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(s(),d("div",We,[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-wQGCAD/repo/packages/web-panel/src/views/Backup.vue"]]);export{ha as default};
@@ -1 +1 @@
1
- import{P as s,f}from"./index-DT1y-Y3f.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
+ import{P as s,f}from"./index-CSnTUPQx.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 H,b as y,$ as te,F as D,Z as Q,L as le,w as B,n as L,o as Y,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 J,b as he}from"./index-DT1y-Y3f.js";import{u as fe,M as Pe}from"./chat-RoIuy9Y2.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 Je,al as Ke,af as $e,ab as Ge}from"./icons-DP3uiYxy.js";import{r as me}from"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Ye={__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}},Xe=["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,Xe)}const it=J(Ye,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-YJBpJd/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=y(()=>me(t.content||"")),n={props:t,rendered:e,computed:y,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=J(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-YJBpJd/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((b,l)=>e[l]!==b)))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 b=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(b,5)} ms`,`
1
+ import{P as c,J as m,U as u,S as M,R as h,V as _,_ as H,b as y,$ as te,F as j,Z as B,L as le,w as Q,n as D,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 G,b as he}from"./index-CSnTUPQx.js";import{u as fe,M as Pe}from"./chat-Di7QINiP.js";import{ag as Re,L as ve,ah as Fe,a0 as De,a as Le,b as je,ai as qe,aj as Ne,o as Qe,c as Ve,f as We,a4 as Be,ak as Ue,a6 as He,a7 as Ge,al as Ke,af as $e,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 Le},get ClockCircleOutlined(){return De},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=G(Xe,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-wQGCAD/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=y(()=>me(t.content||"")),n={props:t,rendered:e,computed:y,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=G(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-wQGCAD/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((b,l)=>e[l]!==b)))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 b=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(b,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}),Y(()=>{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:Y,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=J(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-YJBpJd/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"},Ht={class:"correction-actions"};function Jt(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",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 Kt=J(_t,[["render",Jt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),$t={__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 K=ue(new Set);function be(r){K.has(r)?K.delete(r):K.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 X(){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=y(()=>{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)):[]}),$=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
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++}}),D(()=>{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"})};Q(()=>e.messages.length,(b,l)=>{s.value?(s.value.setOptions({count:b,estimateSize:()=>e.estimateSize}),o.value++,b>l&&D(()=>x())):D(()=>{f(),s.value&&o.value++})}),Q(()=>e.messages,b=>{!s.value&&b.length>0?D(()=>f()):s.value&&(s.value.setOptions({count:b.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,D(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{D(()=>{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:Q,onMounted:X,onUnmounted:re,nextTick:D,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(j,null,B(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(j,null,B(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=G(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-wQGCAD/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 Qe},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return je},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"},Dt={key:2,class:"key-points-section"},Lt={class:"label"},jt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Qt={class:"value correction-text"},Vt={key:0,class:"streaming-indicator"},Wt={key:0,class:"streaming-tokens"},Bt={key:1,class:"action-buttons"},Ut={key:2,class:"correction-input-section"},Ht={class:"correction-actions"};function Gt(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",Dt,[u("div",Lt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",jt,[(c(!0),m(j,null,B(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",Qt,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",Bt,[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 Kt=G(_t,[["render",Gt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),$t={__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 K=ue(new Set);function be(r){K.has(r)?K.delete(r):K.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 L=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return L.length?t("chat.tool.argsPreview",{n:L.length,key:L[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=y(()=>{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)):[]}),$=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
6
6
  `),$.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),$.value=!1}function Ie(){f.setCustomQuickPrompts(null),$.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 X()}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 X())}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 G(){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],()=>{G()},{immediate:!1}),B(()=>f.pendingAutoSend,()=>{G()},{deep:!0}),Y(async()=>{await f.loadSessions(),await G()});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:K,toggleToolDetail:be,toToolItem:ye,toolDetail:ne,newSession:Se,sendMessage:X,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:$,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Ie,emptyHint:Oe,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:G,ref:A,reactive:ue,computed:y,watch:B,nextTick:L,onMounted:Y,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Ge},get RobotOutlined(){return $e},get SendOutlined(){return Ke},get FolderOutlined(){return Je},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:Kt,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Gt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Yt={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"}},Xt={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",Gt,[_(" Session Sidebar "),u("div",Yt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Xt,[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",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: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(b,{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 $n=J($t,[["render",Vn],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/views/Chat.vue"]]);export{$n as default};
7
+ `).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),$.value=!1}function Ie(){f.setCustomQuickPrompts(null),$.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)}Q([z,P],()=>{D(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:L}){if(!r||S.has(L))return;S.add(L);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await D(),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 L=(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||""}::${L}`;return{prompt:w,autoSend:L,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&&Q(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{J()},{immediate:!1}),Q(()=>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:K,toggleToolDetail:be,toToolItem:ye,toolDetail:ne,newSession:Se,sendMessage:Y,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:$,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:Q,nextTick:D,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Je},get RobotOutlined(){return $e},get SendOutlined(){return Ke},get FolderOutlined(){return Ge},get GlobalOutlined(){return He},get UserOutlined(){return Ue},get FileTextOutlined(){return Be},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:Kt,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"},Dn={class:"question-text"},Ln={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},jn={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)"}},Qn={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(j,null,B(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",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(j,null,B(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(j,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(j,{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(j,{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",Dn,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",Ln,[(c(!0),m(j,null,B(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",jn,[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(b,{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",Qn,[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 $n=G($t,[["render",Vn],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Chat.vue"]]);export{$n as default};
@@ -1 +1 @@
1
- import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-DT1y-Y3f.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"},J={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",J,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(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",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
1
+ import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as w,V as x,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-CSnTUPQx.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"},D={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",D,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[w(a(t.event.source.adapter),1)]),_:1},8,["color"])):x("v-if",!0)])],2)}const j=k(N,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-wQGCAD/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-DT1y-Y3f.js";import{d as F,r as f,w as I,c as h}from"./vendor-BvqAck49.js";import{i as M}from"./initDefaultProps-DkSV8vgw.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};
1
+ import{h as o,i as E,f as V,P as W}from"./index-CSnTUPQx.js";import{d as F,r as f,w as I,c as h}from"./vendor-BvqAck49.js";import{i as M}from"./initDefaultProps-B1zCwkvT.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};