chainlesschain 0.157.1 → 0.157.3

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 (137) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-Dp5EHuSs.js → ActionButton-mV_H2ZBW.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-Dt69R7IX.js → Analytics-GW0Daj2c.js} +1 -1
  5. package/src/assets/web-panel/assets/AppLayout-CILzvZ4I.css +1 -0
  6. package/src/assets/web-panel/assets/AppLayout-DznHOSmD.js +1 -0
  7. package/src/assets/web-panel/assets/Backup-BP13XrWC.js +1 -0
  8. package/src/assets/web-panel/assets/{BaseInput-CMHSpW6z.js → BaseInput-BAFrPrGk.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-DQusK0UJ.js → Chat-D6KtPMGk.js} +2 -2
  10. package/src/assets/web-panel/assets/{Checkbox-DXQE64jQ.js → Checkbox-xnGUwzCJ.js} +1 -1
  11. package/src/assets/web-panel/assets/{Col-GesfSTFv.js → Col-BVK4mypO.js} +1 -1
  12. package/src/assets/web-panel/assets/Community-CreqDQST.js +1 -0
  13. package/src/assets/web-panel/assets/Community-DqDfLQui.css +1 -0
  14. package/src/assets/web-panel/assets/{Compact-DOVOXT5H.js → Compact-HV2KpdeM.js} +1 -1
  15. package/src/assets/web-panel/assets/{Cowork-BaJ4irYi.js → Cowork-BIhVZQdQ.js} +3 -3
  16. package/src/assets/web-panel/assets/{Cron-DLx6zElQ.js → Cron-ZYoqq3dP.js} +2 -2
  17. package/src/assets/web-panel/assets/{DID-O2dY9RPB.js → DID-Dzs7_3Ix.js} +2 -2
  18. package/src/assets/web-panel/assets/{Dashboard-BReDcgB_.js → Dashboard-DpWD0jBe.js} +1 -1
  19. package/src/assets/web-panel/assets/{Dropdown-O-lFvQpB.js → Dropdown-BhJQ7ase.js} +1 -1
  20. package/src/assets/web-panel/assets/{FormItemContext-Dld2C8JQ.js → FormItemContext-D0BWmaoR.js} +1 -1
  21. package/src/assets/web-panel/assets/{Git-hvFWgySH.js → Git-bXqWPH2a.js} +1 -1
  22. package/src/assets/web-panel/assets/{KnowledgeGraph-B_y3Ap4i.js → KnowledgeGraph-CHwQzfXh.js} +1 -1
  23. package/src/assets/web-panel/assets/{Logs-DhFPaoDT.js → Logs-pjiNzTno.js} +1 -1
  24. package/src/assets/web-panel/assets/Marketplace-B-4uYu_j.css +1 -0
  25. package/src/assets/web-panel/assets/Marketplace-Dyfg9_ug.js +1 -0
  26. package/src/assets/web-panel/assets/{McpTools-D0XTOWu9.js → McpTools-Bltof0JN.js} +2 -2
  27. package/src/assets/web-panel/assets/{Memory-DW_B6rnE.js → Memory-ClxOtILG.js} +2 -2
  28. package/src/assets/web-panel/assets/{Notes-BbyhsweS.js → Notes-DkAhw9_e.js} +2 -2
  29. package/src/assets/web-panel/assets/{Organization-CChT-ntv.js → Organization-DddzeMd6.js} +3 -3
  30. package/src/assets/web-panel/assets/{Overflow-CZx2xJzC.js → Overflow-CZY_3usr.js} +1 -1
  31. package/src/assets/web-panel/assets/{OverrideContext-9ePmgwvW.js → OverrideContext-D01nzvZl.js} +1 -1
  32. package/src/assets/web-panel/assets/{P2P-CwaXSJZR.js → P2P-Buux_Lgw.js} +2 -2
  33. package/src/assets/web-panel/assets/{Permissions-D5U7ha3z.js → Permissions-Cqn9Jeuf.js} +4 -4
  34. package/src/assets/web-panel/assets/Portal-CARXcQZJ.js +1 -0
  35. package/src/assets/web-panel/assets/{ProjectSettings-BQX5tF8E.js → ProjectSettings-BQPrAum5.js} +1 -1
  36. package/src/assets/web-panel/assets/{Projects-CLL9WS2z.js → Projects-BEbAmoTM.js} +2 -2
  37. package/src/assets/web-panel/assets/{Providers-fjohdAMK.js → Providers-CYeQV4vn.js} +1 -1
  38. package/src/assets/web-panel/assets/{Row-C-bX9EFG.js → Row-DfL3PHtV.js} +1 -1
  39. package/src/assets/web-panel/assets/RssFeed-DI5F5RaQ.js +3 -0
  40. package/src/assets/web-panel/assets/{Security-DXW6YBaw.js → Security-Dvn_envm.js} +3 -3
  41. package/src/assets/web-panel/assets/{Services-BnNYoCwx.js → Services-CuaENMDT.js} +2 -2
  42. package/src/assets/web-panel/assets/{Skeleton-B-K9_08N.js → Skeleton-DZIDyklE.js} +1 -1
  43. package/src/assets/web-panel/assets/{Skills-DB8Qba_i.js → Skills-BkPNofwG.js} +1 -1
  44. package/src/assets/web-panel/assets/{Tasks-0fHss8Sn.js → Tasks-h03UxSCR.js} +1 -1
  45. package/src/assets/web-panel/assets/{Templates-Cfch0kkR.js → Templates-B1OanGmU.js} +1 -1
  46. package/src/assets/web-panel/assets/Trigger-CyX3zvNU.js +1 -0
  47. package/src/assets/web-panel/assets/{VideoEditing-CiTgOTo4.js → VideoEditing-CJHLV59r.js} +1 -1
  48. package/src/assets/web-panel/assets/{Wallet-BQiQ4WyF.js → Wallet-GwRmIUiB.js} +4 -4
  49. package/src/assets/web-panel/assets/{WebAuthn-Dq27qj5Y.js → WebAuthn-CZ_q_1nf.js} +5 -5
  50. package/src/assets/web-panel/assets/{WorkflowEditor-BSXLy_fi.js → WorkflowEditor--0SM6yv0.js} +1 -1
  51. package/src/assets/web-panel/assets/{chat-BNXQJRrX.js → chat-DK35BNpC.js} +1 -1
  52. package/src/assets/web-panel/assets/{collapseMotion-CSS8MlIE.js → collapseMotion-D_K_bBA2.js} +1 -1
  53. package/src/assets/web-panel/assets/{colors-CHcJ8oqQ.js → colors-ZsSPXEpx.js} +1 -1
  54. package/src/assets/web-panel/assets/community-parser-CO25nZFt.js +3 -0
  55. package/src/assets/web-panel/assets/{compact-item-BIM24cFh.js → compact-item-CwFgypMe.js} +1 -1
  56. package/src/assets/web-panel/assets/{createContext-yGfIqyCQ.js → createContext-CXDfCmTY.js} +1 -1
  57. package/src/assets/web-panel/assets/{hasIn-BXMsXiz7.js → hasIn-CuA5Qv5d.js} +1 -1
  58. package/src/assets/web-panel/assets/icons-DuLXY5ve.js +57 -0
  59. package/src/assets/web-panel/assets/{index-DX3NKnlx.js → index--02skmxm.js} +1 -1
  60. package/src/assets/web-panel/assets/{index-DViNLv05.js → index-0BsRZQ70.js} +2 -2
  61. package/src/assets/web-panel/assets/{index-BDzwtAvJ.js → index-7fYLkWFb.js} +1 -1
  62. package/src/assets/web-panel/assets/{index-CPzBvwi4.js → index-B1aCZ8tU.js} +1 -1
  63. package/src/assets/web-panel/assets/{index-CELIaC07.js → index-BTmBSfDP.js} +2 -2
  64. package/src/assets/web-panel/assets/index-BYpWUsV7.js +1 -0
  65. package/src/assets/web-panel/assets/index-BZeiwAUS.js +1 -0
  66. package/src/assets/web-panel/assets/{index-BaV1qPw2.js → index-Bdz6ZN2n.js} +2 -2
  67. package/src/assets/web-panel/assets/{index-Csq1ymAd.js → index-Bf6QSnBq.js} +1 -1
  68. package/src/assets/web-panel/assets/{index-T5htsJq3.js → index-Bi6eldWX.js} +1 -1
  69. package/src/assets/web-panel/assets/{index-pj_DB3gf.js → index-BoAaMGTC.js} +1 -1
  70. package/src/assets/web-panel/assets/{index-BsSnr41N.js → index-BrBmPm9P.js} +1 -1
  71. package/src/assets/web-panel/assets/{index-CWRVLGUY.js → index-Bzai2qqL.js} +2 -2
  72. package/src/assets/web-panel/assets/index-CP6IHxV9.js +1 -0
  73. package/src/assets/web-panel/assets/index-CU5HVlet.js +1 -0
  74. package/src/assets/web-panel/assets/{index-BEPQ53hT.js → index-CW0BgiQ7.js} +1 -1
  75. package/src/assets/web-panel/assets/{index-DNwo9Dzx.js → index-CiyAMvep.js} +1 -1
  76. package/src/assets/web-panel/assets/{index-CWhMnsWX.js → index-Ck5LhFMy.js} +3 -3
  77. package/src/assets/web-panel/assets/{index-CSzJBDW_.js → index-CotI08pv.js} +1 -1
  78. package/src/assets/web-panel/assets/{index-CfXwGGJa.js → index-CyZXgmzB.js} +1 -1
  79. package/src/assets/web-panel/assets/index-CzEyEx5i.js +1 -0
  80. package/src/assets/web-panel/assets/index-D8XA7siu.js +36 -0
  81. package/src/assets/web-panel/assets/{index-BPRyVdxV.js → index-DGV4y7Ok.js} +1 -1
  82. package/src/assets/web-panel/assets/index-DI6cGrS9.js +1 -0
  83. package/src/assets/web-panel/assets/{index-C6RUQfzA.js → index-DILaZYt9.js} +1 -1
  84. package/src/assets/web-panel/assets/{index-PbAFYgta.js → index-DOlW8HfH.js} +1 -1
  85. package/src/assets/web-panel/assets/{index-C_VBCJdj.js → index-DPLo4dr_.js} +1 -1
  86. package/src/assets/web-panel/assets/{index-DrBsteza.js → index-D_3tdh8I.js} +1 -1
  87. package/src/assets/web-panel/assets/{index-36fB-tdr.js → index-DaMGhrmy.js} +3 -3
  88. package/src/assets/web-panel/assets/{index-D2aA1Eww.js → index-Dj1YuMWN.js} +1 -1
  89. package/src/assets/web-panel/assets/index-DnoDj1K9.js +1 -0
  90. package/src/assets/web-panel/assets/{index-B50P9i-m.js → index-GHDuYmBz.js} +2 -2
  91. package/src/assets/web-panel/assets/{index-CvI-6roc.js → index-ZeKq1gO8.js} +2 -2
  92. package/src/assets/web-panel/assets/index-mzATEmde.js +55 -0
  93. package/src/assets/web-panel/assets/{index-OcnmMROX.js → index-nGWg45HB.js} +1 -1
  94. package/src/assets/web-panel/assets/index-nOYPI6Gi.js +3 -0
  95. package/src/assets/web-panel/assets/index-psUMSTuC.js +1 -0
  96. package/src/assets/web-panel/assets/{index-DYbkrS1k.js → index-wnbQQPT7.js} +3 -3
  97. package/src/assets/web-panel/assets/{initDefaultProps-DR3dFRrN.js → initDefaultProps-DFvrAEOp.js} +1 -1
  98. package/src/assets/web-panel/assets/{motion-Dab0Jzue.js → motion-Cfd1jQ_B.js} +3 -3
  99. package/src/assets/web-panel/assets/{move-CbXivKK7.js → move-CtwIMT78.js} +1 -1
  100. package/src/assets/web-panel/assets/{omit-CyPQ4Rvu.js → omit-DsID1k1x.js} +1 -1
  101. package/src/assets/web-panel/assets/{pickAttrs-DLkAq0jb.js → pickAttrs-hmUpaGeX.js} +1 -1
  102. package/src/assets/web-panel/assets/{placementArrow-OJpzGLKb.js → placementArrow-Mcm6Nlo6.js} +1 -1
  103. package/src/assets/web-panel/assets/{responsiveObserve-BSL-2rcG.js → responsiveObserve-CARlpUva.js} +1 -1
  104. package/src/assets/web-panel/assets/{slide-CSTFi1jq.js → slide-CoE_bmVd.js} +1 -1
  105. package/src/assets/web-panel/assets/{statusUtils-DYDvuHx4.js → statusUtils-DXv0eID1.js} +1 -1
  106. package/src/assets/web-panel/assets/{styleChecker-BMkbm-8r.js → styleChecker-KAcyElmo.js} +1 -1
  107. package/src/assets/web-panel/assets/{transition-B3-w1SVL.js → transition-CzoVM28y.js} +1 -1
  108. package/src/assets/web-panel/assets/{useConfigInject-DIr4olCu.js → useConfigInject-D5hyBDTd.js} +2 -2
  109. package/src/assets/web-panel/assets/useFlexGapSupport-P_d7Gj-x.js +1 -0
  110. package/src/assets/web-panel/assets/{useMergedState-DUMpRiCy.js → useMergedState-BUoJnBiL.js} +1 -1
  111. package/src/assets/web-panel/assets/{useRefs-C8A7zAB_.js → useRefs-XiBYSxE0.js} +1 -1
  112. package/src/assets/web-panel/assets/{useState-CSbzOa8O.js → useState-E1W-GoWe.js} +1 -1
  113. package/src/assets/web-panel/assets/{vendor-aH7YaPZi.js → vendor-xFZ6Jlpw.js} +1 -1
  114. package/src/assets/web-panel/assets/{vnode-Df_mZ5AJ.js → vnode-DUk2z77k.js} +1 -1
  115. package/src/assets/web-panel/assets/{ws-BTS8ehTm.js → ws-Dg01CdRG.js} +1 -1
  116. package/src/assets/web-panel/assets/{zoom-CY5xo2Ia.js → zoom-BTYQHwzp.js} +1 -1
  117. package/src/assets/web-panel/index.html +3 -3
  118. package/src/commands/db.js +325 -1
  119. package/src/assets/web-panel/assets/AppLayout-BiOlkA-r.js +0 -1
  120. package/src/assets/web-panel/assets/AppLayout-Wr63FaJ2.css +0 -1
  121. package/src/assets/web-panel/assets/Backup-sEweroFg.js +0 -1
  122. package/src/assets/web-panel/assets/Portal-DXIqogG2.js +0 -1
  123. package/src/assets/web-panel/assets/RssFeed-BsKQE8pe.js +0 -3
  124. package/src/assets/web-panel/assets/Trigger-CAZQ8LeJ.js +0 -1
  125. package/src/assets/web-panel/assets/icons-DEoqYzGZ.js +0 -57
  126. package/src/assets/web-panel/assets/index-B-tWHvIW.js +0 -1
  127. package/src/assets/web-panel/assets/index-BPln_4T8.js +0 -1
  128. package/src/assets/web-panel/assets/index-BPzN5a2A.js +0 -36
  129. package/src/assets/web-panel/assets/index-Bm7xqsYQ.js +0 -1
  130. package/src/assets/web-panel/assets/index-BtfOEVOq.js +0 -3
  131. package/src/assets/web-panel/assets/index-CEBBaWRc.js +0 -1
  132. package/src/assets/web-panel/assets/index-CN1O5Ka0.js +0 -1
  133. package/src/assets/web-panel/assets/index-D_E9PBtZ.js +0 -1
  134. package/src/assets/web-panel/assets/index-DlqQ3NPc.js +0 -1
  135. package/src/assets/web-panel/assets/index-Mc421_zZ.js +0 -55
  136. package/src/assets/web-panel/assets/index-lx2gVL_l.js +0 -1
  137. package/src/assets/web-panel/assets/useFlexGapSupport-d0_YPT4c.js +0 -1
@@ -1,4 +1,4 @@
1
- import{u as De}from"./ws-BTS8ehTm.js";import{_ as Te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as v}from"./index-36fB-tdr.js";import{r as K,l as E,a7 as $e,Y as re,E as ie}from"./icons-DEoqYzGZ.js";import{l as Se,F as _,D as x,c as t,x as s,r as f,q as u,v as r,J as m,u as b,m as C,I as y,G as k,H as We,j as Ue,a as de}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const Oe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},je={key:0,style:{"text-align":"center",padding:"60px"}},qe={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ne={key:1,style:{color:"var(--text-primary)"}},Fe={key:3,style:{color:"#52c41a","font-family":"monospace"}},Le={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Me={key:0,style:{"text-align":"center",padding:"60px"}},Be={key:0,style:{color:"#e0e0e0"}},He={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ve={key:3,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"12px"}},Je={key:0,style:{"margin-top":"8px"}},Ke={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Ee={key:0,style:{"text-align":"center",padding:"30px"}},Pe={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Re={key:2,style:{color:"#e0e0e0","font-family":"monospace"}},Ge={key:3,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},Ye={style:{"margin-top":"16px"}},Qe={style:{"font-family":"monospace",color:"#ccc"}},Xe={style:{"font-family":"monospace",color:"#ccc"}},Ze={style:{"font-family":"monospace",color:"#52c41a"}},et={__name:"Wallet",setup(tt){const A=De(),$=f("wallets"),P=f(!1);function R(l){try{return JSON.parse(l)}catch{return null}}async function ue(){P.value=!0;try{$.value==="wallets"?await W():$.value==="assets"?await L():$.value==="transfer"&&await H()}finally{P.value=!1}}function pe(l){l==="assets"&&I.value.length===0&&L(),l==="transfer"&&T.value.length===0&&H()}const j=f(!1),G=f(!1),Y=f(""),z=f([]),q=f(!1),S=f(""),ce=[{title:"地址",key:"address",dataIndex:"address",ellipsis:!0},{title:"名称",key:"name",dataIndex:"name",width:"150px"},{title:"默认",key:"isDefault",width:"80px"},{title:"余额",key:"balance",dataIndex:"balance",width:"120px"},{title:"操作",key:"action",width:"100px"}],ne=Ue(()=>{const l=z.value.find(a=>a.isDefault);if(!l||!l.address)return"未设置";const e=l.address;return e.length>16?e.slice(0,8)+"..."+e.slice(-6):e});async function W(){j.value=!0;try{const{output:l}=await A.execute("wallet list --json",15e3),e=R(l);e&&Array.isArray(e)?z.value=e.map((a,i)=>({key:a.address||a.id||i,address:a.address||a.id||"-",name:a.name||a.label||"-",isDefault:a.isDefault||a.default||!1,balance:a.balance??"-"})):e&&e.wallets&&Array.isArray(e.wallets)?z.value=e.wallets.map((a,i)=>({key:a.address||a.id||i,address:a.address||a.id||"-",name:a.name||a.label||"-",isDefault:a.isDefault||a.default||!1,balance:a.balance??"-"})):z.value=fe(l)}catch(l){v.error("加载钱包列表失败: "+l.message)}finally{j.value=!1}}function fe(l){const e=[],a=l.split(`
2
- `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ wallet/i))continue;const d=n.match(/(0x[a-fA-F0-9]{8,})/);if(d){const V=/default|默认|\*/.test(n),U=n.match(/name[:\s]+(\S+)/i);e.push({key:d[1],address:d[1],name:U?U[1]:"-",isDefault:V,balance:"-"})}}return e}async function me(){if(!S.value.trim()){v.warning("请输入钱包名称");return}G.value=!0;try{const{output:l}=await A.execute(`wallet create --name "${S.value.trim()}" --json`,2e4);l.includes("error")||l.includes("失败")?v.error("创建失败: "+l.slice(0,120)):(v.success("钱包已创建"),q.value=!1,S.value="",await W())}catch(l){v.error("创建失败: "+l.message)}finally{G.value=!1}}async function ye(l){Y.value=l;try{const{output:e}=await A.execute(`wallet set-default ${l}`,15e3);e.includes("error")||e.includes("失败")?v.error("设置失败: "+e.slice(0,120)):(v.success("已设为默认钱包"),await W())}catch(e){v.error("设置失败: "+e.message)}finally{Y.value=""}}const N=f(!1),Q=f(!1),I=f([]),F=f(!1),g=de({name:"",type:"token",description:""}),ve=[{title:"名称",key:"name",dataIndex:"name",width:"180px"},{title:"类型",key:"type",dataIndex:"type",width:"100px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"地址",key:"address",dataIndex:"address",ellipsis:!0}];function _e(l){return{token:"blue",nft:"purple",data:"cyan"}[(l||"").toLowerCase()]||"default"}async function L(){N.value=!0;try{const{output:l}=await A.execute("wallet assets --json",15e3),e=R(l);e&&Array.isArray(e)?I.value=e.map((a,i)=>({key:a.id||a.address||i,name:a.name||"-",type:a.type||"-",description:a.description||"",address:a.address||a.id||"-"})):e&&e.assets&&Array.isArray(e.assets)?I.value=e.assets.map((a,i)=>({key:a.id||a.address||i,name:a.name||"-",type:a.type||"-",description:a.description||"",address:a.address||a.id||"-"})):I.value=ge(l)}catch(l){v.error("加载资产列表失败: "+l.message)}finally{N.value=!1}}function ge(l){const e=[],a=l.split(`
3
- `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ asset/i))continue;const d=n.split(/\s*[|│]\s*/);d.length>=2&&e.push({key:e.length,name:d[0]||"-",type:d[1]||"-",description:d[2]||"",address:d[3]||"-"})}return e}async function ke(){if(!g.name.trim()){v.warning("请输入资产名称");return}Q.value=!0;try{let l=`wallet asset "${g.name.trim()}" --type ${g.type}`;g.description.trim()&&(l+=` --description "${g.description.trim().replace(/"/g,'\\"')}"`),l+=" --json";const{output:e}=await A.execute(l,2e4);e.includes("error")||e.includes("失败")?v.error("注册失败: "+e.slice(0,120)):(v.success("资产已注册"),F.value=!1,g.name="",g.type="token",g.description="",await L())}catch(l){v.error("注册失败: "+l.message)}finally{Q.value=!1}}const M=f(!1),B=f(!1),D=f(!1),w=f(null),T=f([]),c=de({assetId:"",toAddress:"",amount:null}),be=[{title:"时间",key:"time",dataIndex:"time",width:"150px"},{title:"类型",key:"type",dataIndex:"type",width:"80px"},{title:"数量",key:"amount",dataIndex:"amount",width:"100px"},{title:"目标",key:"to",dataIndex:"to",ellipsis:!0}];function xe(){if(!c.assetId.trim()||!c.toAddress.trim()||!c.amount){v.warning("请填写完整的转账信息");return}D.value=!0}async function we(){M.value=!0,w.value=null;try{const l=`wallet transfer ${c.assetId.trim()} ${c.toAddress.trim()} --amount ${c.amount}`,{output:e,exitCode:a}=await A.execute(l,3e4);w.value={success:a===0&&!e.includes("error")&&!e.includes("失败"),output:e||"转账已提交"},w.value.success?(v.success("转账成功"),D.value=!1,await H()):D.value=!1}catch(l){w.value={success:!1,output:"转账失败: "+l.message},D.value=!1}finally{M.value=!1}}async function H(){B.value=!0;try{const{output:l}=await A.execute("wallet history --limit 20 --json",15e3),e=R(l);e&&Array.isArray(e)?T.value=e.map((a,i)=>({key:a.id||a.hash||i,time:a.time||a.timestamp||a.createdAt||"-",type:a.type||a.direction||"-",amount:a.amount??"-",to:a.to||a.recipient||"-"})):e&&e.history&&Array.isArray(e.history)?T.value=e.history.map((a,i)=>({key:a.id||a.hash||i,time:a.time||a.timestamp||a.createdAt||"-",type:a.type||a.direction||"-",amount:a.amount??"-",to:a.to||a.recipient||"-"})):T.value=he(l)}catch(l){v.error("加载交易历史失败: "+l.message)}finally{B.value=!1}}function he(l){const e=[],a=l.split(`
4
- `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ transaction/i))continue;const d=n.split(/\s*[|│]\s*/);d.length>=3&&e.push({key:e.length,time:d[0]||"-",type:d[1]||"-",amount:d[2]||"-",to:d[3]||"-"})}return e}return Se(()=>{W()}),(l,e)=>{const a=u("a-button"),i=u("a-statistic"),n=u("a-card"),d=u("a-col"),V=u("a-row"),U=u("a-space"),X=u("a-spin"),J=u("a-tag"),Z=u("a-empty"),ee=u("a-table"),O=u("a-input"),h=u("a-form-item"),te=u("a-form"),ae=u("a-modal"),se=u("a-tab-pane"),le=u("a-select-option"),Ae=u("a-select"),Ce=u("a-input-number"),oe=u("a-descriptions-item"),ze=u("a-descriptions"),Ie=u("a-tabs");return r(),_("div",null,[x("div",Oe,[e[14]||(e[14]=x("div",null,[x("h2",{class:"page-title"},"钱包管理"),x("p",{class:"page-sub"},"资产 / 转账 / 历史")],-1)),t(a,{type:"primary",ghost:"",loading:P.value,onClick:ue},{icon:s(()=>[t(b(K))]),default:s(()=>[e[13]||(e[13]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),t(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"钱包数量",value:z.value.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:s(()=>[t(b(E))]),_:1},8,["value"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"总资产数",value:I.value.length,"value-style":{color:"#52c41a",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"默认钱包",value:ne.value,"value-style":{color:ne.value!=="未设置"?"#faad14":"#888",fontSize:"14px",fontFamily:"monospace"}},{prefix:s(()=>[t(b(E))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"总交易数",value:T.value.length,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:s(()=>[t(b($e))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),t(Ie,{activeKey:$.value,"onUpdate:activeKey":e[12]||(e[12]=o=>$.value=o),type:"card",onChange:pe},{default:s(()=>[t(se,{key:"wallets"},{tab:s(()=>[t(b(E)),e[15]||(e[15]=m(" 钱包列表 ",-1))]),default:s(()=>[t(U,{style:{"margin-bottom":"16px"}},{default:s(()=>[t(a,{type:"primary",loading:j.value,onClick:W},{icon:s(()=>[t(b(K))]),default:s(()=>[e[16]||(e[16]=m(" 刷新列表 ",-1))]),_:1},8,["loading"]),t(a,{onClick:e[0]||(e[0]=o=>q.value=!0)},{icon:s(()=>[t(b(re))]),default:s(()=>[e[17]||(e[17]=m(" 创建钱包 ",-1))]),_:1})]),_:1}),j.value?(r(),_("div",je,[t(X,{size:"large"})])):(r(),C(ee,{key:1,columns:ce,"data-source":z.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="address"?(r(),_("span",qe,y(p.address),1)):k("",!0),o.key==="name"?(r(),_("span",Ne,y(p.name||"-"),1)):k("",!0),o.key==="isDefault"?(r(),C(J,{key:2,color:p.isDefault?"green":"default"},{default:s(()=>[m(y(p.isDefault?"默认":"-"),1)]),_:2},1032,["color"])):k("",!0),o.key==="balance"?(r(),_("span",Fe,y(p.balance??"-"),1)):k("",!0),o.key==="action"?(r(),_(We,{key:4},[p.isDefault?(r(),_("span",Le,"当前默认")):(r(),C(a,{key:0,size:"small",type:"link",loading:Y.value===p.address,onClick:at=>ye(p.address)},{default:s(()=>[...e[18]||(e[18]=[m(" 设为默认 ",-1)])]),_:1},8,["loading","onClick"]))],64)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无钱包,点击「创建钱包」添加"})]),_:1},8,["data-source","pagination"])),t(ae,{open:q.value,"onUpdate:open":e[2]||(e[2]=o=>q.value=o),title:"创建钱包","confirm-loading":G.value,onOk:me,"ok-text":"创建","cancel-text":"取消"},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:s(()=>[t(h,{label:"钱包名称",required:""},{default:s(()=>[t(O,{value:S.value,"onUpdate:value":e[1]||(e[1]=o=>S.value=o),placeholder:"请输入钱包名称"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),t(se,{key:"assets"},{tab:s(()=>[t(b(E)),e[19]||(e[19]=m(" 资产管理 ",-1))]),default:s(()=>[t(U,{style:{"margin-bottom":"16px"}},{default:s(()=>[t(a,{type:"primary",loading:N.value,onClick:L},{icon:s(()=>[t(b(K))]),default:s(()=>[e[20]||(e[20]=m(" 刷新资产 ",-1))]),_:1},8,["loading"]),t(a,{onClick:e[3]||(e[3]=o=>F.value=!0)},{icon:s(()=>[t(b(re))]),default:s(()=>[e[21]||(e[21]=m(" 注册资产 ",-1))]),_:1})]),_:1}),N.value?(r(),_("div",Me,[t(X,{size:"large"})])):(r(),C(ee,{key:1,columns:ve,"data-source":I.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="name"?(r(),_("span",Be,y(p.name),1)):k("",!0),o.key==="type"?(r(),C(J,{key:1,color:_e(p.type)},{default:s(()=>[m(y(p.type),1)]),_:2},1032,["color"])):k("",!0),o.key==="description"?(r(),_("span",He,y(p.description||"-"),1)):k("",!0),o.key==="address"?(r(),_("span",Ve,y(p.address||"-"),1)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无资产,点击「注册资产」添加"})]),_:1},8,["data-source","pagination"])),t(ae,{open:F.value,"onUpdate:open":e[7]||(e[7]=o=>F.value=o),title:"注册资产","confirm-loading":Q.value,onOk:ke,"ok-text":"注册","cancel-text":"取消"},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:s(()=>[t(h,{label:"资产名称",required:""},{default:s(()=>[t(O,{value:g.name,"onUpdate:value":e[4]||(e[4]=o=>g.name=o),placeholder:"请输入资产名称"},null,8,["value"])]),_:1}),t(h,{label:"资产类型",required:""},{default:s(()=>[t(Ae,{value:g.type,"onUpdate:value":e[5]||(e[5]=o=>g.type=o),placeholder:"请选择类型"},{default:s(()=>[t(le,{value:"token"},{default:s(()=>[...e[22]||(e[22]=[m("Token",-1)])]),_:1}),t(le,{value:"nft"},{default:s(()=>[...e[23]||(e[23]=[m("NFT",-1)])]),_:1}),t(le,{value:"data"},{default:s(()=>[...e[24]||(e[24]=[m("Data",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(h,{label:"描述"},{default:s(()=>[t(O,{value:g.description,"onUpdate:value":e[6]||(e[6]=o=>g.description=o),placeholder:"资产描述(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),t(se,{key:"transfer"},{tab:s(()=>[t(b(ie)),e[25]||(e[25]=m(" 转账 ",-1))]),default:s(()=>[t(V,{gutter:[24,24]},{default:s(()=>[t(d,{xs:24,md:12},{default:s(()=>[t(n,{title:"发起转账",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18}},{default:s(()=>[t(h,{label:"资产 ID",required:""},{default:s(()=>[t(O,{value:c.assetId,"onUpdate:value":e[8]||(e[8]=o=>c.assetId=o),placeholder:"请输入资产 ID"},null,8,["value"])]),_:1}),t(h,{label:"目标地址",required:""},{default:s(()=>[t(O,{value:c.toAddress,"onUpdate:value":e[9]||(e[9]=o=>c.toAddress=o),placeholder:"请输入接收方地址"},null,8,["value"])]),_:1}),t(h,{label:"数量",required:""},{default:s(()=>[t(Ce,{value:c.amount,"onUpdate:value":e[10]||(e[10]=o=>c.amount=o),min:0,step:.01,placeholder:"转账数量",style:{width:"100%"}},null,8,["value"])]),_:1}),t(h,{"wrapper-col":{offset:6,span:18}},{default:s(()=>[t(a,{type:"primary",loading:M.value,disabled:!c.assetId.trim()||!c.toAddress.trim()||!c.amount,onClick:xe},{icon:s(()=>[t(b(ie))]),default:s(()=>[e[26]||(e[26]=m(" 确认转账 ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),w.value?(r(),_("div",Je,[t(J,{color:w.value.success?"green":"red"},{default:s(()=>[m(y(w.value.success?"成功":"失败"),1)]),_:1},8,["color"]),x("pre",Ke,y(w.value.output),1)])):k("",!0)]),_:1})]),_:1}),t(d,{xs:24,md:12},{default:s(()=>[t(n,{title:"交易历史",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:s(()=>[t(a,{size:"small",loading:B.value,onClick:H},{icon:s(()=>[t(b(K))]),_:1},8,["loading"])]),default:s(()=>[B.value?(r(),_("div",Ee,[t(X)])):(r(),C(ee,{key:1,columns:be,"data-source":T.value,pagination:{pageSize:10,showTotal:o=>`共 ${o} 条`,size:"small"},size:"small","row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="time"?(r(),_("span",Pe,y(p.time),1)):k("",!0),o.key==="type"?(r(),C(J,{key:1,color:p.type==="send"?"orange":"green"},{default:s(()=>[m(y(p.type),1)]),_:2},1032,["color"])):k("",!0),o.key==="amount"?(r(),_("span",Re,y(p.amount),1)):k("",!0),o.key==="to"?(r(),_("span",Ge,y(p.to),1)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无交易记录"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1})]),_:1}),t(ae,{open:D.value,"onUpdate:open":e[11]||(e[11]=o=>D.value=o),title:"确认转账","confirm-loading":M.value,onOk:we,"ok-text":"确认","cancel-text":"取消","ok-type":"primary"},{default:s(()=>[x("div",Ye,[e[27]||(e[27]=x("p",{style:{color:"var(--text-primary)"}},"请确认以下转账信息:",-1)),t(ze,{column:1,bordered:"",size:"small",style:{"margin-top":"12px"}},{default:s(()=>[t(oe,{label:"资产 ID"},{default:s(()=>[x("span",Qe,y(c.assetId),1)]),_:1}),t(oe,{label:"目标地址"},{default:s(()=>[x("span",Xe,y(c.toAddress),1)]),_:1}),t(oe,{label:"数量"},{default:s(()=>[x("span",Ze,y(c.amount),1)]),_:1})]),_:1})])]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},mt=Te(et,[["__scopeId","data-v-01e6c0f1"]]);export{mt as default};
1
+ import{u as De}from"./ws-Dg01CdRG.js";import{_ as Te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as v}from"./index-DaMGhrmy.js";import{s as K,m as P,a9 as $e,_ as re,H as ie}from"./icons-DuLXY5ve.js";import{l as Se,F as _,D as x,c as t,x as s,r as f,q as u,v as r,J as m,u as b,m as C,I as y,G as k,H as We,j as Ue,a as de}from"./vendor-xFZ6Jlpw.js";import"./index-D8XA7siu.js";import"./useConfigInject-D5hyBDTd.js";import"./transition-CzoVM28y.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CARXcQZJ.js";import"./index-U4Zd5IK6.js";const Oe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},je={key:0,style:{"text-align":"center",padding:"60px"}},qe={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ne={key:1,style:{color:"var(--text-primary)"}},Fe={key:3,style:{color:"#52c41a","font-family":"monospace"}},He={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Le={key:0,style:{"text-align":"center",padding:"60px"}},Me={key:0,style:{color:"#e0e0e0"}},Be={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ve={key:3,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"12px"}},Je={key:0,style:{"margin-top":"8px"}},Ke={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Pe={key:0,style:{"text-align":"center",padding:"30px"}},Re={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Ee={key:2,style:{color:"#e0e0e0","font-family":"monospace"}},Ge={key:3,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},Qe={style:{"margin-top":"16px"}},Xe={style:{"font-family":"monospace",color:"#ccc"}},Ye={style:{"font-family":"monospace",color:"#ccc"}},Ze={style:{"font-family":"monospace",color:"#52c41a"}},et={__name:"Wallet",setup(tt){const A=De(),$=f("wallets"),R=f(!1);function E(l){try{return JSON.parse(l)}catch{return null}}async function ue(){R.value=!0;try{$.value==="wallets"?await W():$.value==="assets"?await H():$.value==="transfer"&&await B()}finally{R.value=!1}}function pe(l){l==="assets"&&I.value.length===0&&H(),l==="transfer"&&T.value.length===0&&B()}const j=f(!1),G=f(!1),Q=f(""),z=f([]),q=f(!1),S=f(""),ce=[{title:"地址",key:"address",dataIndex:"address",ellipsis:!0},{title:"名称",key:"name",dataIndex:"name",width:"150px"},{title:"默认",key:"isDefault",width:"80px"},{title:"余额",key:"balance",dataIndex:"balance",width:"120px"},{title:"操作",key:"action",width:"100px"}],ne=Ue(()=>{const l=z.value.find(a=>a.isDefault);if(!l||!l.address)return"未设置";const e=l.address;return e.length>16?e.slice(0,8)+"..."+e.slice(-6):e});async function W(){j.value=!0;try{const{output:l}=await A.execute("wallet list --json",15e3),e=E(l);e&&Array.isArray(e)?z.value=e.map((a,i)=>({key:a.address||a.id||i,address:a.address||a.id||"-",name:a.name||a.label||"-",isDefault:a.isDefault||a.default||!1,balance:a.balance??"-"})):e&&e.wallets&&Array.isArray(e.wallets)?z.value=e.wallets.map((a,i)=>({key:a.address||a.id||i,address:a.address||a.id||"-",name:a.name||a.label||"-",isDefault:a.isDefault||a.default||!1,balance:a.balance??"-"})):z.value=fe(l)}catch(l){v.error("加载钱包列表失败: "+l.message)}finally{j.value=!1}}function fe(l){const e=[],a=l.split(`
2
+ `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ wallet/i))continue;const d=n.match(/(0x[a-fA-F0-9]{8,})/);if(d){const V=/default|默认|\*/.test(n),U=n.match(/name[:\s]+(\S+)/i);e.push({key:d[1],address:d[1],name:U?U[1]:"-",isDefault:V,balance:"-"})}}return e}async function me(){if(!S.value.trim()){v.warning("请输入钱包名称");return}G.value=!0;try{const{output:l}=await A.execute(`wallet create --name "${S.value.trim()}" --json`,2e4);l.includes("error")||l.includes("失败")?v.error("创建失败: "+l.slice(0,120)):(v.success("钱包已创建"),q.value=!1,S.value="",await W())}catch(l){v.error("创建失败: "+l.message)}finally{G.value=!1}}async function ye(l){Q.value=l;try{const{output:e}=await A.execute(`wallet set-default ${l}`,15e3);e.includes("error")||e.includes("失败")?v.error("设置失败: "+e.slice(0,120)):(v.success("已设为默认钱包"),await W())}catch(e){v.error("设置失败: "+e.message)}finally{Q.value=""}}const N=f(!1),X=f(!1),I=f([]),F=f(!1),g=de({name:"",type:"token",description:""}),ve=[{title:"名称",key:"name",dataIndex:"name",width:"180px"},{title:"类型",key:"type",dataIndex:"type",width:"100px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"地址",key:"address",dataIndex:"address",ellipsis:!0}];function _e(l){return{token:"blue",nft:"purple",data:"cyan"}[(l||"").toLowerCase()]||"default"}async function H(){N.value=!0;try{const{output:l}=await A.execute("wallet assets --json",15e3),e=E(l);e&&Array.isArray(e)?I.value=e.map((a,i)=>({key:a.id||a.address||i,name:a.name||"-",type:a.type||"-",description:a.description||"",address:a.address||a.id||"-"})):e&&e.assets&&Array.isArray(e.assets)?I.value=e.assets.map((a,i)=>({key:a.id||a.address||i,name:a.name||"-",type:a.type||"-",description:a.description||"",address:a.address||a.id||"-"})):I.value=ge(l)}catch(l){v.error("加载资产列表失败: "+l.message)}finally{N.value=!1}}function ge(l){const e=[],a=l.split(`
3
+ `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ asset/i))continue;const d=n.split(/\s*[|│]\s*/);d.length>=2&&e.push({key:e.length,name:d[0]||"-",type:d[1]||"-",description:d[2]||"",address:d[3]||"-"})}return e}async function ke(){if(!g.name.trim()){v.warning("请输入资产名称");return}X.value=!0;try{let l=`wallet asset "${g.name.trim()}" --type ${g.type}`;g.description.trim()&&(l+=` --description "${g.description.trim().replace(/"/g,'\\"')}"`),l+=" --json";const{output:e}=await A.execute(l,2e4);e.includes("error")||e.includes("失败")?v.error("注册失败: "+e.slice(0,120)):(v.success("资产已注册"),F.value=!1,g.name="",g.type="token",g.description="",await H())}catch(l){v.error("注册失败: "+l.message)}finally{X.value=!1}}const L=f(!1),M=f(!1),D=f(!1),w=f(null),T=f([]),c=de({assetId:"",toAddress:"",amount:null}),be=[{title:"时间",key:"time",dataIndex:"time",width:"150px"},{title:"类型",key:"type",dataIndex:"type",width:"80px"},{title:"数量",key:"amount",dataIndex:"amount",width:"100px"},{title:"目标",key:"to",dataIndex:"to",ellipsis:!0}];function xe(){if(!c.assetId.trim()||!c.toAddress.trim()||!c.amount){v.warning("请填写完整的转账信息");return}D.value=!0}async function we(){L.value=!0,w.value=null;try{const l=`wallet transfer ${c.assetId.trim()} ${c.toAddress.trim()} --amount ${c.amount}`,{output:e,exitCode:a}=await A.execute(l,3e4);w.value={success:a===0&&!e.includes("error")&&!e.includes("失败"),output:e||"转账已提交"},w.value.success?(v.success("转账成功"),D.value=!1,await B()):D.value=!1}catch(l){w.value={success:!1,output:"转账失败: "+l.message},D.value=!1}finally{L.value=!1}}async function B(){M.value=!0;try{const{output:l}=await A.execute("wallet history --limit 20 --json",15e3),e=E(l);e&&Array.isArray(e)?T.value=e.map((a,i)=>({key:a.id||a.hash||i,time:a.time||a.timestamp||a.createdAt||"-",type:a.type||a.direction||"-",amount:a.amount??"-",to:a.to||a.recipient||"-"})):e&&e.history&&Array.isArray(e.history)?T.value=e.history.map((a,i)=>({key:a.id||a.hash||i,time:a.time||a.timestamp||a.createdAt||"-",type:a.type||a.direction||"-",amount:a.amount??"-",to:a.to||a.recipient||"-"})):T.value=he(l)}catch(l){v.error("加载交易历史失败: "+l.message)}finally{M.value=!1}}function he(l){const e=[],a=l.split(`
4
+ `);for(const i of a){const n=i.trim();if(!n||n.startsWith("─")||n.match(/^\d+ transaction/i))continue;const d=n.split(/\s*[|│]\s*/);d.length>=3&&e.push({key:e.length,time:d[0]||"-",type:d[1]||"-",amount:d[2]||"-",to:d[3]||"-"})}return e}return Se(()=>{W()}),(l,e)=>{const a=u("a-button"),i=u("a-statistic"),n=u("a-card"),d=u("a-col"),V=u("a-row"),U=u("a-space"),Y=u("a-spin"),J=u("a-tag"),Z=u("a-empty"),ee=u("a-table"),O=u("a-input"),h=u("a-form-item"),te=u("a-form"),ae=u("a-modal"),se=u("a-tab-pane"),le=u("a-select-option"),Ae=u("a-select"),Ce=u("a-input-number"),oe=u("a-descriptions-item"),ze=u("a-descriptions"),Ie=u("a-tabs");return r(),_("div",null,[x("div",Oe,[e[14]||(e[14]=x("div",null,[x("h2",{class:"page-title"},"钱包管理"),x("p",{class:"page-sub"},"资产 / 转账 / 历史")],-1)),t(a,{type:"primary",ghost:"",loading:R.value,onClick:ue},{icon:s(()=>[t(b(K))]),default:s(()=>[e[13]||(e[13]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),t(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"钱包数量",value:z.value.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:s(()=>[t(b(P))]),_:1},8,["value"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"总资产数",value:I.value.length,"value-style":{color:"#52c41a",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"默认钱包",value:ne.value,"value-style":{color:ne.value!=="未设置"?"#faad14":"#888",fontSize:"14px",fontFamily:"monospace"}},{prefix:s(()=>[t(b(P))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(d,{xs:24,sm:12,lg:6},{default:s(()=>[t(n,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(i,{title:"总交易数",value:T.value.length,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:s(()=>[t(b($e))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),t(Ie,{activeKey:$.value,"onUpdate:activeKey":e[12]||(e[12]=o=>$.value=o),type:"card",onChange:pe},{default:s(()=>[t(se,{key:"wallets"},{tab:s(()=>[t(b(P)),e[15]||(e[15]=m(" 钱包列表 ",-1))]),default:s(()=>[t(U,{style:{"margin-bottom":"16px"}},{default:s(()=>[t(a,{type:"primary",loading:j.value,onClick:W},{icon:s(()=>[t(b(K))]),default:s(()=>[e[16]||(e[16]=m(" 刷新列表 ",-1))]),_:1},8,["loading"]),t(a,{onClick:e[0]||(e[0]=o=>q.value=!0)},{icon:s(()=>[t(b(re))]),default:s(()=>[e[17]||(e[17]=m(" 创建钱包 ",-1))]),_:1})]),_:1}),j.value?(r(),_("div",je,[t(Y,{size:"large"})])):(r(),C(ee,{key:1,columns:ce,"data-source":z.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="address"?(r(),_("span",qe,y(p.address),1)):k("",!0),o.key==="name"?(r(),_("span",Ne,y(p.name||"-"),1)):k("",!0),o.key==="isDefault"?(r(),C(J,{key:2,color:p.isDefault?"green":"default"},{default:s(()=>[m(y(p.isDefault?"默认":"-"),1)]),_:2},1032,["color"])):k("",!0),o.key==="balance"?(r(),_("span",Fe,y(p.balance??"-"),1)):k("",!0),o.key==="action"?(r(),_(We,{key:4},[p.isDefault?(r(),_("span",He,"当前默认")):(r(),C(a,{key:0,size:"small",type:"link",loading:Q.value===p.address,onClick:at=>ye(p.address)},{default:s(()=>[...e[18]||(e[18]=[m(" 设为默认 ",-1)])]),_:1},8,["loading","onClick"]))],64)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无钱包,点击「创建钱包」添加"})]),_:1},8,["data-source","pagination"])),t(ae,{open:q.value,"onUpdate:open":e[2]||(e[2]=o=>q.value=o),title:"创建钱包","confirm-loading":G.value,onOk:me,"ok-text":"创建","cancel-text":"取消"},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:s(()=>[t(h,{label:"钱包名称",required:""},{default:s(()=>[t(O,{value:S.value,"onUpdate:value":e[1]||(e[1]=o=>S.value=o),placeholder:"请输入钱包名称"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),t(se,{key:"assets"},{tab:s(()=>[t(b(P)),e[19]||(e[19]=m(" 资产管理 ",-1))]),default:s(()=>[t(U,{style:{"margin-bottom":"16px"}},{default:s(()=>[t(a,{type:"primary",loading:N.value,onClick:H},{icon:s(()=>[t(b(K))]),default:s(()=>[e[20]||(e[20]=m(" 刷新资产 ",-1))]),_:1},8,["loading"]),t(a,{onClick:e[3]||(e[3]=o=>F.value=!0)},{icon:s(()=>[t(b(re))]),default:s(()=>[e[21]||(e[21]=m(" 注册资产 ",-1))]),_:1})]),_:1}),N.value?(r(),_("div",Le,[t(Y,{size:"large"})])):(r(),C(ee,{key:1,columns:ve,"data-source":I.value,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="name"?(r(),_("span",Me,y(p.name),1)):k("",!0),o.key==="type"?(r(),C(J,{key:1,color:_e(p.type)},{default:s(()=>[m(y(p.type),1)]),_:2},1032,["color"])):k("",!0),o.key==="description"?(r(),_("span",Be,y(p.description||"-"),1)):k("",!0),o.key==="address"?(r(),_("span",Ve,y(p.address||"-"),1)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无资产,点击「注册资产」添加"})]),_:1},8,["data-source","pagination"])),t(ae,{open:F.value,"onUpdate:open":e[7]||(e[7]=o=>F.value=o),title:"注册资产","confirm-loading":X.value,onOk:ke,"ok-text":"注册","cancel-text":"取消"},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:s(()=>[t(h,{label:"资产名称",required:""},{default:s(()=>[t(O,{value:g.name,"onUpdate:value":e[4]||(e[4]=o=>g.name=o),placeholder:"请输入资产名称"},null,8,["value"])]),_:1}),t(h,{label:"资产类型",required:""},{default:s(()=>[t(Ae,{value:g.type,"onUpdate:value":e[5]||(e[5]=o=>g.type=o),placeholder:"请选择类型"},{default:s(()=>[t(le,{value:"token"},{default:s(()=>[...e[22]||(e[22]=[m("Token",-1)])]),_:1}),t(le,{value:"nft"},{default:s(()=>[...e[23]||(e[23]=[m("NFT",-1)])]),_:1}),t(le,{value:"data"},{default:s(()=>[...e[24]||(e[24]=[m("Data",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(h,{label:"描述"},{default:s(()=>[t(O,{value:g.description,"onUpdate:value":e[6]||(e[6]=o=>g.description=o),placeholder:"资产描述(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),t(se,{key:"transfer"},{tab:s(()=>[t(b(ie)),e[25]||(e[25]=m(" 转账 ",-1))]),default:s(()=>[t(V,{gutter:[24,24]},{default:s(()=>[t(d,{xs:24,md:12},{default:s(()=>[t(n,{title:"发起转账",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[t(te,{"label-col":{span:6},"wrapper-col":{span:18}},{default:s(()=>[t(h,{label:"资产 ID",required:""},{default:s(()=>[t(O,{value:c.assetId,"onUpdate:value":e[8]||(e[8]=o=>c.assetId=o),placeholder:"请输入资产 ID"},null,8,["value"])]),_:1}),t(h,{label:"目标地址",required:""},{default:s(()=>[t(O,{value:c.toAddress,"onUpdate:value":e[9]||(e[9]=o=>c.toAddress=o),placeholder:"请输入接收方地址"},null,8,["value"])]),_:1}),t(h,{label:"数量",required:""},{default:s(()=>[t(Ce,{value:c.amount,"onUpdate:value":e[10]||(e[10]=o=>c.amount=o),min:0,step:.01,placeholder:"转账数量",style:{width:"100%"}},null,8,["value"])]),_:1}),t(h,{"wrapper-col":{offset:6,span:18}},{default:s(()=>[t(a,{type:"primary",loading:L.value,disabled:!c.assetId.trim()||!c.toAddress.trim()||!c.amount,onClick:xe},{icon:s(()=>[t(b(ie))]),default:s(()=>[e[26]||(e[26]=m(" 确认转账 ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),w.value?(r(),_("div",Je,[t(J,{color:w.value.success?"green":"red"},{default:s(()=>[m(y(w.value.success?"成功":"失败"),1)]),_:1},8,["color"]),x("pre",Ke,y(w.value.output),1)])):k("",!0)]),_:1})]),_:1}),t(d,{xs:24,md:12},{default:s(()=>[t(n,{title:"交易历史",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:s(()=>[t(a,{size:"small",loading:M.value,onClick:B},{icon:s(()=>[t(b(K))]),_:1},8,["loading"])]),default:s(()=>[M.value?(r(),_("div",Pe,[t(Y)])):(r(),C(ee,{key:1,columns:be,"data-source":T.value,pagination:{pageSize:10,showTotal:o=>`共 ${o} 条`,size:"small"},size:"small","row-class-name":()=>"wallet-row"},{bodyCell:s(({column:o,record:p})=>[o.key==="time"?(r(),_("span",Re,y(p.time),1)):k("",!0),o.key==="type"?(r(),C(J,{key:1,color:p.type==="send"?"orange":"green"},{default:s(()=>[m(y(p.type),1)]),_:2},1032,["color"])):k("",!0),o.key==="amount"?(r(),_("span",Ee,y(p.amount),1)):k("",!0),o.key==="to"?(r(),_("span",Ge,y(p.to),1)):k("",!0)]),emptyText:s(()=>[t(Z,{description:"暂无交易记录"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1})]),_:1}),t(ae,{open:D.value,"onUpdate:open":e[11]||(e[11]=o=>D.value=o),title:"确认转账","confirm-loading":L.value,onOk:we,"ok-text":"确认","cancel-text":"取消","ok-type":"primary"},{default:s(()=>[x("div",Qe,[e[27]||(e[27]=x("p",{style:{color:"var(--text-primary)"}},"请确认以下转账信息:",-1)),t(ze,{column:1,bordered:"",size:"small",style:{"margin-top":"12px"}},{default:s(()=>[t(oe,{label:"资产 ID"},{default:s(()=>[x("span",Xe,y(c.assetId),1)]),_:1}),t(oe,{label:"目标地址"},{default:s(()=>[x("span",Ye,y(c.toAddress),1)]),_:1}),t(oe,{label:"数量"},{default:s(()=>[x("span",Ze,y(c.amount),1)]),_:1})]),_:1})])]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},mt=Te(et,[["__scopeId","data-v-01e6c0f1"]]);export{mt as default};
@@ -1,5 +1,5 @@
1
- import{u as Ie}from"./ws-BTS8ehTm.js";import{_ as Oe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as u}from"./index-36fB-tdr.js";import{r as le,Y as Te,ac as ze,K as oe,af as Le,L as ne}from"./icons-DEoqYzGZ.js";import{l as $e,F as y,D as g,c as a,x as l,r,q as s,v as i,J as c,u as k,m as I,I as m,G as h,H as j,L as se}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Pe={key:0,style:{"text-align":"center",padding:"60px"}},Ne=["title"],We={key:1,style:{color:"var(--text-primary)"}},Re={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},je={key:4,style:{color:"var(--text-secondary)","font-size":"12px"}},Ke={key:0,style:{"text-align":"center",padding:"60px"}},Me={style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},qe={style:{color:"var(--text-secondary)","font-size":"12px"}},Be={style:{"margin-top":"16px"}},Ve={key:0,style:{"text-align":"center",padding:"60px"}},Fe={style:{display:"flex","align-items":"center",gap:"16px","margin-bottom":"16px"}},Je={key:0,style:{"margin-top":"16px"}},Ee={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}},Ye={key:0,style:{"margin-top":"16px"}},Ge={style:{background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},He={__name:"WebAuthn",setup(Ze){const x=Ie(),O=r("webauthn"),K=r(!1);async function re(){K.value=!0;try{O.value==="webauthn"?await P():O.value==="sso"?await E():O.value==="2fa"&&await ee()}finally{K.value=!1}}function ie(t){t==="sso"&&!V.value&&E(),t==="2fa"&&!G.value&&ee()}function T(t){try{return JSON.parse(t)}catch{return null}}function ue(t){return t?t.length<=16?t:t.slice(0,8)+"..."+t.slice(-8):"-"}const M=r(!1),q=r(!1),L=r([]),$=r(!1),D=r(""),de=[{title:"ID",key:"id",dataIndex:"id",width:"180px"},{title:"名称",key:"name",dataIndex:"name",width:"160px"},{title:"类型",key:"type",dataIndex:"type",width:"120px"},{title:"创建时间",key:"createdAt",dataIndex:"createdAt",width:"180px"},{title:"最后使用",key:"lastUsed",dataIndex:"lastUsed",width:"180px"},{title:"操作",key:"actions",width:"100px",fixed:"right"}];async function P(){M.value=!0;try{const{output:t}=await x.execute("webauthn list --json",15e3),e=T(t);e&&Array.isArray(e)?L.value=e.map((o,v)=>({key:o.id||v,id:o.id||"-",name:o.name||o.displayName||"-",type:o.type||"public-key",createdAt:o.createdAt||o.created||"-",lastUsed:o.lastUsed||o.lastAuthentication||"-"})):e&&e.credentials?L.value=e.credentials.map((o,v)=>({key:o.id||v,id:o.id||"-",name:o.name||o.displayName||"-",type:o.type||"public-key",createdAt:o.createdAt||o.created||"-",lastUsed:o.lastUsed||o.lastAuthentication||"-"})):L.value=ce(t)}catch(t){u.error("加载 WebAuthn 凭证失败: "+t.message)}finally{M.value=!1}}function ce(t){const e=[],o=t.split(`
2
- `);for(const v of o){const b=v.trim();if(!b||b.startsWith("─")||b.startsWith("No "))continue;const d=b.split(/\s*[|│]\s*/);d.length>=2&&e.push({key:e.length,id:d[0]||"-",name:d[1]||"-",type:d[2]||"public-key",createdAt:d[3]||"-",lastUsed:d[4]||"-"})}return e}async function pe(){const t=D.value.trim();if(!t){u.warning("请输入凭证名称");return}q.value=!0;try{const e=t.replace(/"/g,'\\"'),{output:o}=await x.execute(`webauthn register --name "${e}" --json`,3e4);o.includes("error")||o.includes("失败")?u.error("注册失败: "+o.slice(0,120)):(u.success("WebAuthn 凭证已注册"),$.value=!1,D.value="",await P())}catch(e){u.error("注册失败: "+e.message)}finally{q.value=!1}}async function fe(t){try{const{output:e}=await x.execute(`webauthn delete "${t.id}"`,15e3);e.includes("error")||e.includes("失败")?u.error("删除失败: "+e.slice(0,120)):(u.success("凭证已删除"),await P())}catch(e){u.error("删除失败: "+e.message)}}const B=r(!1),V=r(!1),F=r(!1),N=r(!1),p=r({provider:"",clientId:"",redirectUrl:"",enabled:!1}),f=r({provider:void 0,clientId:"",clientSecret:"",issuerUrl:""}),J=r([]);async function E(){B.value=!0;try{const{output:t}=await x.execute("sso status --json",15e3),e=T(t);if(e)p.value={provider:e.provider||"",clientId:e.clientId||e.client_id||"",redirectUrl:e.redirectUrl||e.redirect_url||e.callbackUrl||"",enabled:e.enabled||e.active||!1};else{const o=t.split(`
3
- `);for(const v of o){const b=v.trim().match(/^(.+?)\s*[:=:]\s*(.+)$/);if(b){const d=b[1].toLowerCase(),C=b[2].trim();d.includes("provider")?p.value.provider=C:d.includes("client")&&d.includes("id")?p.value.clientId=C:d.includes("redirect")||d.includes("callback")?p.value.redirectUrl=C:(d.includes("status")||d.includes("enabled"))&&(p.value.enabled=/true|enabled|active|已启用/i.test(C))}}}J.value=[{label:"提供商",value:p.value.provider||"未配置",color:p.value.provider?"#1677ff":"#999"},{label:"状态",value:p.value.enabled?"已启用":"未启用",color:p.value.enabled?"#52c41a":"#faad14"}],V.value=!0}catch{p.value={provider:"",clientId:"",redirectUrl:"",enabled:!1},J.value=[{label:"提供商",value:"未配置",color:"#999"},{label:"状态",value:"未启用",color:"#faad14"}],V.value=!0}finally{B.value=!1}}async function ve(){if(!f.value.provider){u.warning("请选择 SSO 提供商");return}if(!f.value.clientId.trim()){u.warning("请输入 Client ID");return}F.value=!0;try{const t=[`config set sso.provider ${f.value.provider}`,`config set sso.clientId ${f.value.clientId.trim()}`];f.value.clientSecret.trim()&&t.push(`config set sso.clientSecret ${f.value.clientSecret.trim()}`),f.value.issuerUrl.trim()&&t.push(`config set sso.issuerUrl ${f.value.issuerUrl.trim()}`);for(const e of t)await x.execute(e,1e4);u.success("SSO 配置已保存"),N.value=!1,await E()}catch(t){u.error("保存失败: "+t.message)}finally{F.value=!1}}const Y=r(!1),G=r(!1),w=r(!1),U=r(!1),A=r(""),H=r(!1),S=r([]);async function ee(){Y.value=!0;try{const{output:t}=await x.execute("auth 2fa status --json",15e3),e=T(t);e?w.value=e.enabled||e.active||!1:w.value=/enabled|已启用|active/i.test(t),G.value=!0}catch{w.value=!1,G.value=!0}finally{Y.value=!1}}async function ye(){U.value=!0,A.value="";try{const{output:t}=await x.execute("auth 2fa enable --type totp --json",2e4);if(t.includes("error")||t.includes("失败"))u.error("启用失败: "+t.slice(0,120));else{const e=T(t);e&&e.secret?A.value=`TOTP Secret: ${e.secret}
4
- OTP Auth URL: ${e.otpAuthUrl||e.uri||""}`:A.value=t,w.value=!0,u.success("TOTP 已启用")}}catch(t){u.error("启用失败: "+t.message)}finally{U.value=!1}}async function me(){U.value=!0,A.value="";try{const{output:t}=await x.execute("auth 2fa disable",15e3);t.includes("error")||t.includes("失败")?u.error("禁用失败: "+t.slice(0,120)):(w.value=!1,u.success("双因素认证已禁用"))}catch(t){u.error("禁用失败: "+t.message)}finally{U.value=!1}}async function be(){H.value=!0,S.value=[];try{const{output:t}=await x.execute("auth 2fa recovery-codes --json",15e3),e=T(t);if(e&&Array.isArray(e.codes))S.value=e.codes;else if(e&&Array.isArray(e))S.value=e;else{const o=t.split(`
5
- `).map(v=>v.trim()).filter(v=>v&&/^[A-Za-z0-9-]{6,}$/.test(v));S.value=o.length>0?o:[t.trim()||"无法生成恢复码"]}S.value.length>0&&S.value[0]!=="无法生成恢复码"&&u.success("恢复码已生成")}catch(t){u.error("生成恢复码失败: "+t.message)}finally{H.value=!1}}return $e(()=>{P()}),(t,e)=>{const o=s("a-button"),v=s("a-space"),b=s("a-spin"),d=s("a-tag"),C=s("a-popconfirm"),ge=s("a-empty"),_e=s("a-table"),Z=s("a-input"),z=s("a-form-item"),te=s("a-form"),ae=s("a-modal"),Q=s("a-tab-pane"),xe=s("a-statistic"),W=s("a-card"),ke=s("a-col"),we=s("a-row"),R=s("a-descriptions-item"),Se=s("a-descriptions"),X=s("a-select-option"),he=s("a-select"),Ce=s("a-input-password"),Ue=s("a-alert"),Ae=s("a-tabs");return i(),y("div",null,[g("div",De,[e[11]||(e[11]=g("div",null,[g("h2",{class:"page-title"},"认证管理"),g("p",{class:"page-sub"},"WebAuthn / SSO / 双因素认证")],-1)),a(o,{type:"primary",ghost:"",loading:K.value,onClick:re},{icon:l(()=>[a(k(le))]),default:l(()=>[e[10]||(e[10]=c(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Ae,{activeKey:O.value,"onUpdate:activeKey":e[9]||(e[9]=n=>O.value=n),type:"card",onChange:ie},{default:l(()=>[a(Q,{key:"webauthn"},{tab:l(()=>[a(k(oe)),e[12]||(e[12]=c(" WebAuthn ",-1))]),default:l(()=>[a(v,{style:{"margin-bottom":"16px"}},{default:l(()=>[a(o,{type:"primary",onClick:e[0]||(e[0]=n=>$.value=!0)},{icon:l(()=>[a(k(Te))]),default:l(()=>[e[13]||(e[13]=c(" 注册新凭证 ",-1))]),_:1})]),_:1}),M.value?(i(),y("div",Pe,[a(b,{size:"large"})])):(i(),I(_e,{key:1,columns:de,"data-source":L.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"auth-row"},{bodyCell:l(({column:n,record:_})=>[n.key==="id"?(i(),y("span",{key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"},title:_.id},m(ue(_.id)),9,Ne)):h("",!0),n.key==="name"?(i(),y("span",We,m(_.name),1)):h("",!0),n.key==="type"?(i(),I(d,{key:2,color:"blue"},{default:l(()=>[c(m(_.type||"public-key"),1)]),_:2},1024)):h("",!0),n.key==="createdAt"?(i(),y("span",Re,m(_.createdAt||"-"),1)):h("",!0),n.key==="lastUsed"?(i(),y("span",je,m(_.lastUsed||"-"),1)):h("",!0),n.key==="actions"?(i(),I(C,{key:5,title:"确定要删除此凭证吗?","ok-text":"确定","cancel-text":"取消",onConfirm:Qe=>fe(_)},{default:l(()=>[a(o,{type:"link",danger:"",size:"small"},{icon:l(()=>[a(k(ze))]),default:l(()=>[e[14]||(e[14]=c(" 删除 ",-1))]),_:1})]),_:1},8,["onConfirm"])):h("",!0)]),emptyText:l(()=>[a(ge,{description:"暂无 WebAuthn 凭证,点击「注册新凭证」添加"})]),_:1},8,["data-source","pagination"])),a(ae,{open:$.value,"onUpdate:open":e[2]||(e[2]=n=>$.value=n),title:"注册 WebAuthn 凭证","confirm-loading":q.value,onOk:pe,"ok-text":"注册","cancel-text":"取消"},{default:l(()=>[a(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"凭证名称",required:""},{default:l(()=>[a(Z,{value:D.value,"onUpdate:value":e[1]||(e[1]=n=>D.value=n),placeholder:"例如:YubiKey-5, TouchID"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(Q,{key:"sso"},{tab:l(()=>[a(k(Le)),e[15]||(e[15]=c(" SSO 配置 ",-1))]),default:l(()=>[B.value?(i(),y("div",Ke,[a(b,{size:"large"})])):(i(),y(j,{key:1},[a(we,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[(i(!0),y(j,null,se(J.value,n=>(i(),I(ke,{xs:12,sm:6,key:n.label},{default:l(()=>[a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:l(()=>[a(xe,{title:n.label,value:n.value,"value-style":{color:n.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},title:"当前 SSO 配置"},{default:l(()=>[a(Se,{column:{xs:1,sm:2},bordered:"",size:"small",style:{background:"var(--bg-card)"}},{default:l(()=>[a(R,{label:"提供商"},{default:l(()=>[a(d,{color:p.value.provider?"blue":"default"},{default:l(()=>[c(m(p.value.provider||"未配置"),1)]),_:1},8,["color"])]),_:1}),a(R,{label:"Client ID"},{default:l(()=>[g("span",Me,m(p.value.clientId||"-"),1)]),_:1}),a(R,{label:"Redirect URL"},{default:l(()=>[g("span",qe,m(p.value.redirectUrl||"-"),1)]),_:1}),a(R,{label:"状态"},{default:l(()=>[a(d,{color:p.value.enabled?"green":"default"},{default:l(()=>[c(m(p.value.enabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1})]),_:1}),g("div",Be,[a(o,{type:"primary",onClick:e[3]||(e[3]=n=>N.value=!0)},{icon:l(()=>[a(k(oe))]),default:l(()=>[e[16]||(e[16]=c(" 配置 SSO ",-1))]),_:1})])]),_:1})],64)),a(ae,{open:N.value,"onUpdate:open":e[8]||(e[8]=n=>N.value=n),title:"配置 SSO","confirm-loading":F.value,onOk:ve,"ok-text":"保存","cancel-text":"取消",width:"520px"},{default:l(()=>[a(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"提供商",required:""},{default:l(()=>[a(he,{value:f.value.provider,"onUpdate:value":e[4]||(e[4]=n=>f.value.provider=n),placeholder:"选择 SSO 提供商"},{default:l(()=>[a(X,{value:"OIDC"},{default:l(()=>[...e[17]||(e[17]=[c("OIDC",-1)])]),_:1}),a(X,{value:"SAML"},{default:l(()=>[...e[18]||(e[18]=[c("SAML",-1)])]),_:1}),a(X,{value:"LDAP"},{default:l(()=>[...e[19]||(e[19]=[c("LDAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(z,{label:"Client ID",required:""},{default:l(()=>[a(Z,{value:f.value.clientId,"onUpdate:value":e[5]||(e[5]=n=>f.value.clientId=n),placeholder:"输入 Client ID"},null,8,["value"])]),_:1}),a(z,{label:"Client Secret"},{default:l(()=>[a(Ce,{value:f.value.clientSecret,"onUpdate:value":e[6]||(e[6]=n=>f.value.clientSecret=n),placeholder:"输入 Client Secret"},null,8,["value"])]),_:1}),a(z,{label:"Issuer URL"},{default:l(()=>[a(Z,{value:f.value.issuerUrl,"onUpdate:value":e[7]||(e[7]=n=>f.value.issuerUrl=n),placeholder:"https://sso.example.com"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(Q,{key:"2fa"},{tab:l(()=>[a(k(ne)),e[20]||(e[20]=c(" 双因素认证 ",-1))]),default:l(()=>[Y.value?(i(),y("div",Ve,[a(b,{size:"large"})])):(i(),y(j,{key:1},[a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},title:"TOTP 双因素认证"},{default:l(()=>[g("div",Fe,[e[21]||(e[21]=g("span",{style:{color:"var(--text-primary)","font-size":"14px"}},"状态:",-1)),a(d,{color:w.value?"green":"default",style:{"font-size":"13px"}},{default:l(()=>[c(m(w.value?"已启用":"未启用"),1)]),_:1},8,["color"])]),a(v,null,{default:l(()=>[w.value?(i(),I(C,{key:1,title:"确定要禁用双因素认证吗?这会降低账户安全性。","ok-text":"确定禁用","cancel-text":"取消",onConfirm:me},{default:l(()=>[a(o,{danger:"",loading:U.value},{default:l(()=>[...e[23]||(e[23]=[c(" 禁用 ",-1)])]),_:1},8,["loading"])]),_:1})):(i(),I(o,{key:0,type:"primary",loading:U.value,onClick:ye},{icon:l(()=>[a(k(ne))]),default:l(()=>[e[22]||(e[22]=c(" 启用 TOTP ",-1))]),_:1},8,["loading"]))]),_:1}),A.value?(i(),y("div",Je,[g("pre",Ee,m(A.value),1)])):h("",!0)]),_:1}),a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},title:"恢复码"},{default:l(()=>[e[25]||(e[25]=g("p",{style:{color:"var(--text-secondary)","margin-bottom":"12px"}}," 恢复码可在丢失 TOTP 设备时用于登录。请妥善保管。 ",-1)),a(o,{loading:H.value,onClick:be},{icon:l(()=>[a(k(le))]),default:l(()=>[e[24]||(e[24]=c(" 生成恢复码 ",-1))]),_:1},8,["loading"]),S.value.length>0?(i(),y("div",Ye,[a(Ue,{type:"warning","show-icon":"",style:{"margin-bottom":"12px"},message:"请立即保存这些恢复码,关闭后将无法再次查看。"}),g("div",Ge,[(i(!0),y(j,null,se(S.value,(n,_)=>(i(),y("div",{key:_,style:{"font-family":"monospace","font-size":"14px",color:"#e0e0e0",padding:"4px 0","letter-spacing":"2px"}},m(_+1)+". "+m(n),1))),128))])])):h("",!0)]),_:1})],64))]),_:1})]),_:1},8,["activeKey"])])}}},dt=Oe(He,[["__scopeId","data-v-a4bec262"]]);export{dt as default};
1
+ import{u as Ie}from"./ws-Dg01CdRG.js";import{_ as Oe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as u}from"./index-DaMGhrmy.js";import{s as le,_ as Te,ae as ze,K as oe,ah as Le,L as ne}from"./icons-DuLXY5ve.js";import{l as $e,F as y,D as _,c as a,x as l,r,q as s,v as i,J as c,u as k,m as I,I as m,G as h,H as j,L as se}from"./vendor-xFZ6Jlpw.js";import"./index-D8XA7siu.js";import"./useConfigInject-D5hyBDTd.js";import"./transition-CzoVM28y.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CARXcQZJ.js";import"./index-U4Zd5IK6.js";const De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Pe={key:0,style:{"text-align":"center",padding:"60px"}},Ne=["title"],We={key:1,style:{color:"var(--text-primary)"}},Re={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},je={key:4,style:{color:"var(--text-secondary)","font-size":"12px"}},Ke={key:0,style:{"text-align":"center",padding:"60px"}},Me={style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},qe={style:{color:"var(--text-secondary)","font-size":"12px"}},Be={style:{"margin-top":"16px"}},Ve={key:0,style:{"text-align":"center",padding:"60px"}},Fe={style:{display:"flex","align-items":"center",gap:"16px","margin-bottom":"16px"}},Je={key:0,style:{"margin-top":"16px"}},Ee={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}},Ge={key:0,style:{"margin-top":"16px"}},He={style:{background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},Ye={__name:"WebAuthn",setup(Ze){const x=Ie(),O=r("webauthn"),K=r(!1);async function re(){K.value=!0;try{O.value==="webauthn"?await P():O.value==="sso"?await E():O.value==="2fa"&&await ee()}finally{K.value=!1}}function ie(t){t==="sso"&&!V.value&&E(),t==="2fa"&&!H.value&&ee()}function T(t){try{return JSON.parse(t)}catch{return null}}function ue(t){return t?t.length<=16?t:t.slice(0,8)+"..."+t.slice(-8):"-"}const M=r(!1),q=r(!1),L=r([]),$=r(!1),D=r(""),de=[{title:"ID",key:"id",dataIndex:"id",width:"180px"},{title:"名称",key:"name",dataIndex:"name",width:"160px"},{title:"类型",key:"type",dataIndex:"type",width:"120px"},{title:"创建时间",key:"createdAt",dataIndex:"createdAt",width:"180px"},{title:"最后使用",key:"lastUsed",dataIndex:"lastUsed",width:"180px"},{title:"操作",key:"actions",width:"100px",fixed:"right"}];async function P(){M.value=!0;try{const{output:t}=await x.execute("webauthn list --json",15e3),e=T(t);e&&Array.isArray(e)?L.value=e.map((o,f)=>({key:o.id||f,id:o.id||"-",name:o.name||o.displayName||"-",type:o.type||"public-key",createdAt:o.createdAt||o.created||"-",lastUsed:o.lastUsed||o.lastAuthentication||"-"})):e&&e.credentials?L.value=e.credentials.map((o,f)=>({key:o.id||f,id:o.id||"-",name:o.name||o.displayName||"-",type:o.type||"public-key",createdAt:o.createdAt||o.created||"-",lastUsed:o.lastUsed||o.lastAuthentication||"-"})):L.value=ce(t)}catch(t){u.error("加载 WebAuthn 凭证失败: "+t.message)}finally{M.value=!1}}function ce(t){const e=[],o=t.split(`
2
+ `);for(const f of o){const b=f.trim();if(!b||b.startsWith("─")||b.startsWith("No "))continue;const d=b.split(/\s*[|│]\s*/);d.length>=2&&e.push({key:e.length,id:d[0]||"-",name:d[1]||"-",type:d[2]||"public-key",createdAt:d[3]||"-",lastUsed:d[4]||"-"})}return e}async function pe(){const t=D.value.trim();if(!t){u.warning("请输入凭证名称");return}q.value=!0;try{const e=t.replace(/"/g,'\\"'),{output:o}=await x.execute(`webauthn register --name "${e}" --json`,3e4);o.includes("error")||o.includes("失败")?u.error("注册失败: "+o.slice(0,120)):(u.success("WebAuthn 凭证已注册"),$.value=!1,D.value="",await P())}catch(e){u.error("注册失败: "+e.message)}finally{q.value=!1}}async function ve(t){try{const{output:e}=await x.execute(`webauthn delete "${t.id}"`,15e3);e.includes("error")||e.includes("失败")?u.error("删除失败: "+e.slice(0,120)):(u.success("凭证已删除"),await P())}catch(e){u.error("删除失败: "+e.message)}}const B=r(!1),V=r(!1),F=r(!1),N=r(!1),p=r({provider:"",clientId:"",redirectUrl:"",enabled:!1}),v=r({provider:void 0,clientId:"",clientSecret:"",issuerUrl:""}),J=r([]);async function E(){B.value=!0;try{const{output:t}=await x.execute("sso status --json",15e3),e=T(t);if(e)p.value={provider:e.provider||"",clientId:e.clientId||e.client_id||"",redirectUrl:e.redirectUrl||e.redirect_url||e.callbackUrl||"",enabled:e.enabled||e.active||!1};else{const o=t.split(`
3
+ `);for(const f of o){const b=f.trim().match(/^(.+?)\s*[:=:]\s*(.+)$/);if(b){const d=b[1].toLowerCase(),C=b[2].trim();d.includes("provider")?p.value.provider=C:d.includes("client")&&d.includes("id")?p.value.clientId=C:d.includes("redirect")||d.includes("callback")?p.value.redirectUrl=C:(d.includes("status")||d.includes("enabled"))&&(p.value.enabled=/true|enabled|active|已启用/i.test(C))}}}J.value=[{label:"提供商",value:p.value.provider||"未配置",color:p.value.provider?"#1677ff":"#999"},{label:"状态",value:p.value.enabled?"已启用":"未启用",color:p.value.enabled?"#52c41a":"#faad14"}],V.value=!0}catch{p.value={provider:"",clientId:"",redirectUrl:"",enabled:!1},J.value=[{label:"提供商",value:"未配置",color:"#999"},{label:"状态",value:"未启用",color:"#faad14"}],V.value=!0}finally{B.value=!1}}async function fe(){if(!v.value.provider){u.warning("请选择 SSO 提供商");return}if(!v.value.clientId.trim()){u.warning("请输入 Client ID");return}F.value=!0;try{const t=[`config set sso.provider ${v.value.provider}`,`config set sso.clientId ${v.value.clientId.trim()}`];v.value.clientSecret.trim()&&t.push(`config set sso.clientSecret ${v.value.clientSecret.trim()}`),v.value.issuerUrl.trim()&&t.push(`config set sso.issuerUrl ${v.value.issuerUrl.trim()}`);for(const e of t)await x.execute(e,1e4);u.success("SSO 配置已保存"),N.value=!1,await E()}catch(t){u.error("保存失败: "+t.message)}finally{F.value=!1}}const G=r(!1),H=r(!1),w=r(!1),U=r(!1),A=r(""),Y=r(!1),S=r([]);async function ee(){G.value=!0;try{const{output:t}=await x.execute("auth 2fa status --json",15e3),e=T(t);e?w.value=e.enabled||e.active||!1:w.value=/enabled|已启用|active/i.test(t),H.value=!0}catch{w.value=!1,H.value=!0}finally{G.value=!1}}async function ye(){U.value=!0,A.value="";try{const{output:t}=await x.execute("auth 2fa enable --type totp --json",2e4);if(t.includes("error")||t.includes("失败"))u.error("启用失败: "+t.slice(0,120));else{const e=T(t);e&&e.secret?A.value=`TOTP Secret: ${e.secret}
4
+ OTP Auth URL: ${e.otpAuthUrl||e.uri||""}`:A.value=t,w.value=!0,u.success("TOTP 已启用")}}catch(t){u.error("启用失败: "+t.message)}finally{U.value=!1}}async function me(){U.value=!0,A.value="";try{const{output:t}=await x.execute("auth 2fa disable",15e3);t.includes("error")||t.includes("失败")?u.error("禁用失败: "+t.slice(0,120)):(w.value=!1,u.success("双因素认证已禁用"))}catch(t){u.error("禁用失败: "+t.message)}finally{U.value=!1}}async function be(){Y.value=!0,S.value=[];try{const{output:t}=await x.execute("auth 2fa recovery-codes --json",15e3),e=T(t);if(e&&Array.isArray(e.codes))S.value=e.codes;else if(e&&Array.isArray(e))S.value=e;else{const o=t.split(`
5
+ `).map(f=>f.trim()).filter(f=>f&&/^[A-Za-z0-9-]{6,}$/.test(f));S.value=o.length>0?o:[t.trim()||"无法生成恢复码"]}S.value.length>0&&S.value[0]!=="无法生成恢复码"&&u.success("恢复码已生成")}catch(t){u.error("生成恢复码失败: "+t.message)}finally{Y.value=!1}}return $e(()=>{P()}),(t,e)=>{const o=s("a-button"),f=s("a-space"),b=s("a-spin"),d=s("a-tag"),C=s("a-popconfirm"),_e=s("a-empty"),ge=s("a-table"),Z=s("a-input"),z=s("a-form-item"),te=s("a-form"),ae=s("a-modal"),Q=s("a-tab-pane"),xe=s("a-statistic"),W=s("a-card"),ke=s("a-col"),we=s("a-row"),R=s("a-descriptions-item"),Se=s("a-descriptions"),X=s("a-select-option"),he=s("a-select"),Ce=s("a-input-password"),Ue=s("a-alert"),Ae=s("a-tabs");return i(),y("div",null,[_("div",De,[e[11]||(e[11]=_("div",null,[_("h2",{class:"page-title"},"认证管理"),_("p",{class:"page-sub"},"WebAuthn / SSO / 双因素认证")],-1)),a(o,{type:"primary",ghost:"",loading:K.value,onClick:re},{icon:l(()=>[a(k(le))]),default:l(()=>[e[10]||(e[10]=c(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Ae,{activeKey:O.value,"onUpdate:activeKey":e[9]||(e[9]=n=>O.value=n),type:"card",onChange:ie},{default:l(()=>[a(Q,{key:"webauthn"},{tab:l(()=>[a(k(oe)),e[12]||(e[12]=c(" WebAuthn ",-1))]),default:l(()=>[a(f,{style:{"margin-bottom":"16px"}},{default:l(()=>[a(o,{type:"primary",onClick:e[0]||(e[0]=n=>$.value=!0)},{icon:l(()=>[a(k(Te))]),default:l(()=>[e[13]||(e[13]=c(" 注册新凭证 ",-1))]),_:1})]),_:1}),M.value?(i(),y("div",Pe,[a(b,{size:"large"})])):(i(),I(ge,{key:1,columns:de,"data-source":L.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"auth-row"},{bodyCell:l(({column:n,record:g})=>[n.key==="id"?(i(),y("span",{key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"},title:g.id},m(ue(g.id)),9,Ne)):h("",!0),n.key==="name"?(i(),y("span",We,m(g.name),1)):h("",!0),n.key==="type"?(i(),I(d,{key:2,color:"blue"},{default:l(()=>[c(m(g.type||"public-key"),1)]),_:2},1024)):h("",!0),n.key==="createdAt"?(i(),y("span",Re,m(g.createdAt||"-"),1)):h("",!0),n.key==="lastUsed"?(i(),y("span",je,m(g.lastUsed||"-"),1)):h("",!0),n.key==="actions"?(i(),I(C,{key:5,title:"确定要删除此凭证吗?","ok-text":"确定","cancel-text":"取消",onConfirm:Qe=>ve(g)},{default:l(()=>[a(o,{type:"link",danger:"",size:"small"},{icon:l(()=>[a(k(ze))]),default:l(()=>[e[14]||(e[14]=c(" 删除 ",-1))]),_:1})]),_:1},8,["onConfirm"])):h("",!0)]),emptyText:l(()=>[a(_e,{description:"暂无 WebAuthn 凭证,点击「注册新凭证」添加"})]),_:1},8,["data-source","pagination"])),a(ae,{open:$.value,"onUpdate:open":e[2]||(e[2]=n=>$.value=n),title:"注册 WebAuthn 凭证","confirm-loading":q.value,onOk:pe,"ok-text":"注册","cancel-text":"取消"},{default:l(()=>[a(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"凭证名称",required:""},{default:l(()=>[a(Z,{value:D.value,"onUpdate:value":e[1]||(e[1]=n=>D.value=n),placeholder:"例如:YubiKey-5, TouchID"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(Q,{key:"sso"},{tab:l(()=>[a(k(Le)),e[15]||(e[15]=c(" SSO 配置 ",-1))]),default:l(()=>[B.value?(i(),y("div",Ke,[a(b,{size:"large"})])):(i(),y(j,{key:1},[a(we,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[(i(!0),y(j,null,se(J.value,n=>(i(),I(ke,{xs:12,sm:6,key:n.label},{default:l(()=>[a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:l(()=>[a(xe,{title:n.label,value:n.value,"value-style":{color:n.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},title:"当前 SSO 配置"},{default:l(()=>[a(Se,{column:{xs:1,sm:2},bordered:"",size:"small",style:{background:"var(--bg-card)"}},{default:l(()=>[a(R,{label:"提供商"},{default:l(()=>[a(d,{color:p.value.provider?"blue":"default"},{default:l(()=>[c(m(p.value.provider||"未配置"),1)]),_:1},8,["color"])]),_:1}),a(R,{label:"Client ID"},{default:l(()=>[_("span",Me,m(p.value.clientId||"-"),1)]),_:1}),a(R,{label:"Redirect URL"},{default:l(()=>[_("span",qe,m(p.value.redirectUrl||"-"),1)]),_:1}),a(R,{label:"状态"},{default:l(()=>[a(d,{color:p.value.enabled?"green":"default"},{default:l(()=>[c(m(p.value.enabled?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1})]),_:1}),_("div",Be,[a(o,{type:"primary",onClick:e[3]||(e[3]=n=>N.value=!0)},{icon:l(()=>[a(k(oe))]),default:l(()=>[e[16]||(e[16]=c(" 配置 SSO ",-1))]),_:1})])]),_:1})],64)),a(ae,{open:N.value,"onUpdate:open":e[8]||(e[8]=n=>N.value=n),title:"配置 SSO","confirm-loading":F.value,onOk:fe,"ok-text":"保存","cancel-text":"取消",width:"520px"},{default:l(()=>[a(te,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"提供商",required:""},{default:l(()=>[a(he,{value:v.value.provider,"onUpdate:value":e[4]||(e[4]=n=>v.value.provider=n),placeholder:"选择 SSO 提供商"},{default:l(()=>[a(X,{value:"OIDC"},{default:l(()=>[...e[17]||(e[17]=[c("OIDC",-1)])]),_:1}),a(X,{value:"SAML"},{default:l(()=>[...e[18]||(e[18]=[c("SAML",-1)])]),_:1}),a(X,{value:"LDAP"},{default:l(()=>[...e[19]||(e[19]=[c("LDAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(z,{label:"Client ID",required:""},{default:l(()=>[a(Z,{value:v.value.clientId,"onUpdate:value":e[5]||(e[5]=n=>v.value.clientId=n),placeholder:"输入 Client ID"},null,8,["value"])]),_:1}),a(z,{label:"Client Secret"},{default:l(()=>[a(Ce,{value:v.value.clientSecret,"onUpdate:value":e[6]||(e[6]=n=>v.value.clientSecret=n),placeholder:"输入 Client Secret"},null,8,["value"])]),_:1}),a(z,{label:"Issuer URL"},{default:l(()=>[a(Z,{value:v.value.issuerUrl,"onUpdate:value":e[7]||(e[7]=n=>v.value.issuerUrl=n),placeholder:"https://sso.example.com"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(Q,{key:"2fa"},{tab:l(()=>[a(k(ne)),e[20]||(e[20]=c(" 双因素认证 ",-1))]),default:l(()=>[G.value?(i(),y("div",Ve,[a(b,{size:"large"})])):(i(),y(j,{key:1},[a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},title:"TOTP 双因素认证"},{default:l(()=>[_("div",Fe,[e[21]||(e[21]=_("span",{style:{color:"var(--text-primary)","font-size":"14px"}},"状态:",-1)),a(d,{color:w.value?"green":"default",style:{"font-size":"13px"}},{default:l(()=>[c(m(w.value?"已启用":"未启用"),1)]),_:1},8,["color"])]),a(f,null,{default:l(()=>[w.value?(i(),I(C,{key:1,title:"确定要禁用双因素认证吗?这会降低账户安全性。","ok-text":"确定禁用","cancel-text":"取消",onConfirm:me},{default:l(()=>[a(o,{danger:"",loading:U.value},{default:l(()=>[...e[23]||(e[23]=[c(" 禁用 ",-1)])]),_:1},8,["loading"])]),_:1})):(i(),I(o,{key:0,type:"primary",loading:U.value,onClick:ye},{icon:l(()=>[a(k(ne))]),default:l(()=>[e[22]||(e[22]=c(" 启用 TOTP ",-1))]),_:1},8,["loading"]))]),_:1}),A.value?(i(),y("div",Je,[_("pre",Ee,m(A.value),1)])):h("",!0)]),_:1}),a(W,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},title:"恢复码"},{default:l(()=>[e[25]||(e[25]=_("p",{style:{color:"var(--text-secondary)","margin-bottom":"12px"}}," 恢复码可在丢失 TOTP 设备时用于登录。请妥善保管。 ",-1)),a(o,{loading:Y.value,onClick:be},{icon:l(()=>[a(k(le))]),default:l(()=>[e[24]||(e[24]=c(" 生成恢复码 ",-1))]),_:1},8,["loading"]),S.value.length>0?(i(),y("div",Ge,[a(Ue,{type:"warning","show-icon":"",style:{"margin-bottom":"12px"},message:"请立即保存这些恢复码,关闭后将无法再次查看。"}),_("div",He,[(i(!0),y(j,null,se(S.value,(n,g)=>(i(),y("div",{key:g,style:{"font-family":"monospace","font-size":"14px",color:"#e0e0e0",padding:"4px 0","letter-spacing":"2px"}},m(g+1)+". "+m(n),1))),128))])])):h("",!0)]),_:1})],64))]),_:1})]),_:1},8,["activeKey"])])}}},dt=Oe(Ye,[["__scopeId","data-v-a4bec262"]]);export{dt as default};
@@ -1 +1 @@
1
- import{k as T,r as b,l as Y,F as v,D as _,c as s,x as o,q as p,v as c,J as m,u as h,m as j,E as K,I as y,P as Q,H as V,L as D,G as N,j as X}from"./vendor-aH7YaPZi.js";import{u as Z}from"./ws-BTS8ehTm.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{Y as te,r as ae}from"./icons-DEoqYzGZ.js";import{a as C}from"./index-36fB-tdr.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const se=T("workflow",()=>{const f=Z(),l=b([]),t=b(null),x=b([]),w=b("idle"),R=b(!1),z=b(null);async function J(){R.value=!0,z.value=null;try{await f.waitConnected();const e=await f.sendRaw({type:"workflow-list"});return l.value=Array.isArray(e.workflows)?e.workflows:[],l.value}catch(e){throw z.value=e.message,e}finally{R.value=!1}}async function W(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-get",id:e});return t.value=n.workflow||null,t.value}async function A(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-save",workflow:e});if(n.saved){const u=l.value.findIndex(r=>r.id===e.id);u>=0?l.value.splice(u,1,e):l.value.push(e)}return n}async function B(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-remove",id:e});return n.removed&&(l.value=l.value.filter(u=>u.id!==e)),n}async function q(e,{onEvent:n}={}){await f.waitConnected(),x.value=[],w.value="running";const u=f.onMessage(r=>{!r||typeof r.type!="string"||r.type.startsWith("workflow:")&&(x.value.push(r),n&&n(r),r.type==="workflow:done"&&(w.value=r.status||"completed"))});try{return await f.sendRaw({type:"workflow-run",id:e},12e4)}catch(r){throw w.value="failed",z.value=r.message,r}finally{u()}}function M(e){const n=[];if(!e||typeof e!="object")return{valid:!1,errors:["workflow must be an object"]};if(e.id||n.push("id required"),e.name||n.push("name required"),!Array.isArray(e.steps)||e.steps.length===0)n.push("steps required");else{let g=function(i){$.set(i,E);for(const O of r.get(i)||[]){if(!r.has(O)){n.push(`unknown dependency: ${O}`);continue}const I=$.get(O);if(I===E){n.push(`cycle via ${i} -> ${O}`);return}I===L&&g(O)}$.set(i,S)};const u=new Set;for(const i of e.steps)i.id||n.push("step.id required"),u.has(i.id)&&n.push(`duplicate step id: ${i.id}`),u.add(i.id);const r=new Map;for(const i of e.steps)r.set(i.id,i.dependsOn||[]);const L=0,E=1,S=2,$=new Map([...r.keys()].map(i=>[i,L]));for(const i of r.keys())$.get(i)===L&&g(i)}return{valid:n.length===0,errors:n}}function d(e){return JSON.stringify(e,null,2)}return{workflows:l,current:t,runEvents:x,runStatus:w,loading:R,error:z,list:J,get:W,save:A,remove:B,run:q,validateLocal:M,exportJson:d}}),ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},oe={style:{flex:"1"}},le={style:{"font-weight":"500"}},re={style:{color:"#888","font-size":"12px"}},ie={style:{color:"#888","font-size":"12px"}},ue={key:0,style:{"margin-top":"12px",color:"#d32f2f"}},de={style:{color:"#1976d2"}},ce={key:0},pe={key:1},fe={key:2,style:{color:"#555"}},ve={__name:"WorkflowEditor",setup(f){const l=se(),t=b(null),x=b(!1),w=X(()=>t.value?l.validateLocal(t.value):null);Y(()=>l.list().catch(()=>{}));function R(){t.value={id:"",name:"",description:"",steps:[{id:"step1",message:"",dependsOn:[]}]}}async function z(d){try{const e=await l.get(d);e&&(t.value=JSON.parse(JSON.stringify(e)),t.value.steps||(t.value.steps=[]))}catch(e){C.error(`加载失败: ${e.message}`)}}function J(){t.value.steps||(t.value.steps=[]),t.value.steps.push({id:`step${t.value.steps.length+1}`,message:"",dependsOn:[]})}function W(d){t.value.steps.splice(d,1)}async function A(){const d=l.validateLocal(t.value);if(!d.valid){C.error(d.errors[0]);return}try{await l.save(t.value),C.success("保存成功")}catch(e){C.error(`保存失败: ${e.message}`)}}async function B(d){try{await l.remove(d),t.value?.id===d&&(t.value=null),C.success("已删除")}catch(e){C.error(`删除失败: ${e.message}`)}}async function q(){x.value=!0;try{await l.run(t.value.id),C.success(`运行完成:${l.runStatus}`)}catch(d){C.error(`运行失败: ${d.message}`)}finally{x.value=!1}}function M(){const d=l.exportJson(t.value),e=new Blob([d],{type:"application/json"}),n=URL.createObjectURL(e),u=document.createElement("a");u.href=n,u.download=`${t.value.id||"workflow"}.json`,u.click(),URL.revokeObjectURL(n)}return(d,e)=>{const n=p("a-button"),u=p("a-space"),r=p("a-empty"),L=p("a-list-item"),E=p("a-list"),S=p("a-card"),$=p("a-col"),g=p("a-input"),i=p("a-form-item"),O=p("a-divider"),I=p("a-select"),F=p("a-input-group"),G=p("a-textarea"),H=p("a-form"),P=p("a-row");return c(),v("div",null,[_("div",ne,[e[6]||(e[6]=_("div",null,[_("h2",{class:"page-title"},"工作流编辑器"),_("p",{class:"page-sub"},"创建、编辑、运行 Cowork 工作流(N1 — 初版:表单编辑,画布视图规划中)")],-1)),s(u,null,{default:o(()=>[s(n,{onClick:R,type:"primary"},{icon:o(()=>[s(h(te))]),default:o(()=>[e[4]||(e[4]=m(" 新建 ",-1))]),_:1}),s(n,{ghost:"",loading:h(l).loading,onClick:e[0]||(e[0]=a=>h(l).list())},{icon:o(()=>[s(h(ae))]),default:o(()=>[e[5]||(e[5]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(P,{gutter:16},{default:o(()=>[s($,{span:8},{default:o(()=>[s(S,{title:"工作流列表",size:"small"},{default:o(()=>[h(l).workflows.length?(c(),j(E,{key:1,"data-source":h(l).workflows,size:"small"},{renderItem:o(({item:a})=>[s(L,{class:K({active:t.value?.id===a.id}),style:{cursor:"pointer"},onClick:U=>z(a.id)},{default:o(()=>[_("div",oe,[_("div",le,y(a.name||a.id),1),_("div",re,y((a.steps||[]).length)+" 步骤 ",1)]),s(n,{size:"small",danger:"",type:"text",onClick:Q(U=>B(a.id),["stop"])},{default:o(()=>[...e[7]||(e[7]=[m("删除",-1)])]),_:1},8,["onClick"])]),_:2},1032,["class","onClick"])]),_:1},8,["data-source"])):(c(),j(r,{key:0,description:"暂无工作流"}))]),_:1})]),_:1}),s($,{span:16},{default:o(()=>[t.value?(c(),j(S,{key:0,size:"small"},{title:o(()=>[m(" 编辑: "+y(t.value.name||t.value.id),1)]),extra:o(()=>[s(u,null,{default:o(()=>[s(n,{size:"small",onClick:M},{default:o(()=>[...e[8]||(e[8]=[m("导出 JSON",-1)])]),_:1}),s(n,{size:"small",loading:x.value,onClick:q,disabled:!t.value.id},{default:o(()=>[...e[9]||(e[9]=[m(" 运行 ",-1)])]),_:1},8,["loading","disabled"]),s(n,{size:"small",type:"primary",onClick:A},{default:o(()=>[...e[10]||(e[10]=[m("保存",-1)])]),_:1})]),_:1})]),default:o(()=>[s(H,{layout:"vertical",model:t.value},{default:o(()=>[s(i,{label:"ID (唯一标识)"},{default:o(()=>[s(g,{value:t.value.id,"onUpdate:value":e[1]||(e[1]=a=>t.value.id=a),placeholder:"my-workflow"},null,8,["value"])]),_:1}),s(i,{label:"名称"},{default:o(()=>[s(g,{value:t.value.name,"onUpdate:value":e[2]||(e[2]=a=>t.value.name=a),placeholder:"我的工作流"},null,8,["value"])]),_:1}),s(i,{label:"描述"},{default:o(()=>[s(g,{value:t.value.description,"onUpdate:value":e[3]||(e[3]=a=>t.value.description=a),placeholder:"(可选)"},null,8,["value"])]),_:1}),s(O,null,{default:o(()=>[...e[11]||(e[11]=[m("步骤",-1)])]),_:1}),(c(!0),v(V,null,D(t.value.steps,(a,U)=>(c(),v("div",{key:U,class:"step-card"},[s(u,{style:{width:"100%","margin-bottom":"8px"},direction:"vertical"},{default:o(()=>[s(F,{compact:""},{default:o(()=>[s(g,{value:a.id,"onUpdate:value":k=>a.id=k,placeholder:"step-id",style:{width:"30%"}},null,8,["value","onUpdate:value"]),s(I,{value:a.dependsOn,"onUpdate:value":k=>a.dependsOn=k,mode:"tags",placeholder:"dependsOn",style:{width:"70%"}},null,8,["value","onUpdate:value"])]),_:2},1024),s(G,{value:a.message,"onUpdate:value":k=>a.message=k,rows:2,placeholder:"任务 prompt(支持 \\${step.<id>.summary} 占位)"},null,8,["value","onUpdate:value"]),s(g,{value:a.when,"onUpdate:value":k=>a.when=k,placeholder:"when 条件(可选,如 step.s1.status === 'completed')"},null,8,["value","onUpdate:value"]),s(u,null,{default:o(()=>[s(n,{size:"small",danger:"",onClick:k=>W(U)},{default:o(()=>[...e[12]||(e[12]=[m("删除",-1)])]),_:1},8,["onClick"]),_("span",ie," step "+y(U+1)+" / "+y(t.value.steps.length),1)]),_:2},1024)]),_:2},1024)]))),128)),s(n,{block:"",onClick:J},{default:o(()=>[...e[13]||(e[13]=[m("+ 添加步骤",-1)])]),_:1})]),_:1},8,["model"]),w.value&&!w.value.valid?(c(),v("div",ue,[(c(!0),v(V,null,D(w.value.errors,a=>(c(),v("div",{key:a},"• "+y(a),1))),128))])):N("",!0)]),_:1})):(c(),j(S,{key:1,size:"small"},{default:o(()=>[s(r,{description:"从左侧选择工作流或新建一个"})]),_:1})),h(l).runEvents.length?(c(),j(S,{key:2,size:"small",title:"运行日志",style:{"margin-top":"12px"}},{default:o(()=>[(c(!0),v(V,null,D(h(l).runEvents,(a,U)=>(c(),v("div",{key:U,style:{"font-family":"monospace","font-size":"12px","margin-bottom":"4px"}},[_("span",de,y(a.type),1),a.stepId?(c(),v("span",ce," ["+y(a.stepId)+"]",1)):N("",!0),a.status?(c(),v("span",pe," → "+y(a.status),1)):N("",!0),a.summary?(c(),v("span",fe," — "+y(a.summary),1)):N("",!0)]))),128))]),_:1})):N("",!0)]),_:1})]),_:1})])}}},Oe=ee(ve,[["__scopeId","data-v-0d6dcf38"]]);export{Oe as default};
1
+ import{k as T,r as b,l as K,F as v,D as _,c as s,x as o,q as p,v as c,J as m,u as h,m as j,E as Y,I as y,P as Q,H as V,L as D,G as N,j as X}from"./vendor-xFZ6Jlpw.js";import{u as Z}from"./ws-Dg01CdRG.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{_ as te,s as ae}from"./icons-DuLXY5ve.js";import{a as C}from"./index-DaMGhrmy.js";import"./index-D8XA7siu.js";import"./useConfigInject-D5hyBDTd.js";import"./transition-CzoVM28y.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CARXcQZJ.js";import"./index-U4Zd5IK6.js";const se=T("workflow",()=>{const f=Z(),l=b([]),t=b(null),x=b([]),w=b("idle"),R=b(!1),z=b(null);async function J(){R.value=!0,z.value=null;try{await f.waitConnected();const e=await f.sendRaw({type:"workflow-list"});return l.value=Array.isArray(e.workflows)?e.workflows:[],l.value}catch(e){throw z.value=e.message,e}finally{R.value=!1}}async function W(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-get",id:e});return t.value=n.workflow||null,t.value}async function A(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-save",workflow:e});if(n.saved){const u=l.value.findIndex(r=>r.id===e.id);u>=0?l.value.splice(u,1,e):l.value.push(e)}return n}async function B(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-remove",id:e});return n.removed&&(l.value=l.value.filter(u=>u.id!==e)),n}async function q(e,{onEvent:n}={}){await f.waitConnected(),x.value=[],w.value="running";const u=f.onMessage(r=>{!r||typeof r.type!="string"||r.type.startsWith("workflow:")&&(x.value.push(r),n&&n(r),r.type==="workflow:done"&&(w.value=r.status||"completed"))});try{return await f.sendRaw({type:"workflow-run",id:e},12e4)}catch(r){throw w.value="failed",z.value=r.message,r}finally{u()}}function M(e){const n=[];if(!e||typeof e!="object")return{valid:!1,errors:["workflow must be an object"]};if(e.id||n.push("id required"),e.name||n.push("name required"),!Array.isArray(e.steps)||e.steps.length===0)n.push("steps required");else{let g=function(i){$.set(i,E);for(const O of r.get(i)||[]){if(!r.has(O)){n.push(`unknown dependency: ${O}`);continue}const I=$.get(O);if(I===E){n.push(`cycle via ${i} -> ${O}`);return}I===L&&g(O)}$.set(i,S)};const u=new Set;for(const i of e.steps)i.id||n.push("step.id required"),u.has(i.id)&&n.push(`duplicate step id: ${i.id}`),u.add(i.id);const r=new Map;for(const i of e.steps)r.set(i.id,i.dependsOn||[]);const L=0,E=1,S=2,$=new Map([...r.keys()].map(i=>[i,L]));for(const i of r.keys())$.get(i)===L&&g(i)}return{valid:n.length===0,errors:n}}function d(e){return JSON.stringify(e,null,2)}return{workflows:l,current:t,runEvents:x,runStatus:w,loading:R,error:z,list:J,get:W,save:A,remove:B,run:q,validateLocal:M,exportJson:d}}),ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},oe={style:{flex:"1"}},le={style:{"font-weight":"500"}},re={style:{color:"#888","font-size":"12px"}},ie={style:{color:"#888","font-size":"12px"}},ue={key:0,style:{"margin-top":"12px",color:"#d32f2f"}},de={style:{color:"#1976d2"}},ce={key:0},pe={key:1},fe={key:2,style:{color:"#555"}},ve={__name:"WorkflowEditor",setup(f){const l=se(),t=b(null),x=b(!1),w=X(()=>t.value?l.validateLocal(t.value):null);K(()=>l.list().catch(()=>{}));function R(){t.value={id:"",name:"",description:"",steps:[{id:"step1",message:"",dependsOn:[]}]}}async function z(d){try{const e=await l.get(d);e&&(t.value=JSON.parse(JSON.stringify(e)),t.value.steps||(t.value.steps=[]))}catch(e){C.error(`加载失败: ${e.message}`)}}function J(){t.value.steps||(t.value.steps=[]),t.value.steps.push({id:`step${t.value.steps.length+1}`,message:"",dependsOn:[]})}function W(d){t.value.steps.splice(d,1)}async function A(){const d=l.validateLocal(t.value);if(!d.valid){C.error(d.errors[0]);return}try{await l.save(t.value),C.success("保存成功")}catch(e){C.error(`保存失败: ${e.message}`)}}async function B(d){try{await l.remove(d),t.value?.id===d&&(t.value=null),C.success("已删除")}catch(e){C.error(`删除失败: ${e.message}`)}}async function q(){x.value=!0;try{await l.run(t.value.id),C.success(`运行完成:${l.runStatus}`)}catch(d){C.error(`运行失败: ${d.message}`)}finally{x.value=!1}}function M(){const d=l.exportJson(t.value),e=new Blob([d],{type:"application/json"}),n=URL.createObjectURL(e),u=document.createElement("a");u.href=n,u.download=`${t.value.id||"workflow"}.json`,u.click(),URL.revokeObjectURL(n)}return(d,e)=>{const n=p("a-button"),u=p("a-space"),r=p("a-empty"),L=p("a-list-item"),E=p("a-list"),S=p("a-card"),$=p("a-col"),g=p("a-input"),i=p("a-form-item"),O=p("a-divider"),I=p("a-select"),F=p("a-input-group"),G=p("a-textarea"),H=p("a-form"),P=p("a-row");return c(),v("div",null,[_("div",ne,[e[6]||(e[6]=_("div",null,[_("h2",{class:"page-title"},"工作流编辑器"),_("p",{class:"page-sub"},"创建、编辑、运行 Cowork 工作流(N1 — 初版:表单编辑,画布视图规划中)")],-1)),s(u,null,{default:o(()=>[s(n,{onClick:R,type:"primary"},{icon:o(()=>[s(h(te))]),default:o(()=>[e[4]||(e[4]=m(" 新建 ",-1))]),_:1}),s(n,{ghost:"",loading:h(l).loading,onClick:e[0]||(e[0]=a=>h(l).list())},{icon:o(()=>[s(h(ae))]),default:o(()=>[e[5]||(e[5]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(P,{gutter:16},{default:o(()=>[s($,{span:8},{default:o(()=>[s(S,{title:"工作流列表",size:"small"},{default:o(()=>[h(l).workflows.length?(c(),j(E,{key:1,"data-source":h(l).workflows,size:"small"},{renderItem:o(({item:a})=>[s(L,{class:Y({active:t.value?.id===a.id}),style:{cursor:"pointer"},onClick:U=>z(a.id)},{default:o(()=>[_("div",oe,[_("div",le,y(a.name||a.id),1),_("div",re,y((a.steps||[]).length)+" 步骤 ",1)]),s(n,{size:"small",danger:"",type:"text",onClick:Q(U=>B(a.id),["stop"])},{default:o(()=>[...e[7]||(e[7]=[m("删除",-1)])]),_:1},8,["onClick"])]),_:2},1032,["class","onClick"])]),_:1},8,["data-source"])):(c(),j(r,{key:0,description:"暂无工作流"}))]),_:1})]),_:1}),s($,{span:16},{default:o(()=>[t.value?(c(),j(S,{key:0,size:"small"},{title:o(()=>[m(" 编辑: "+y(t.value.name||t.value.id),1)]),extra:o(()=>[s(u,null,{default:o(()=>[s(n,{size:"small",onClick:M},{default:o(()=>[...e[8]||(e[8]=[m("导出 JSON",-1)])]),_:1}),s(n,{size:"small",loading:x.value,onClick:q,disabled:!t.value.id},{default:o(()=>[...e[9]||(e[9]=[m(" 运行 ",-1)])]),_:1},8,["loading","disabled"]),s(n,{size:"small",type:"primary",onClick:A},{default:o(()=>[...e[10]||(e[10]=[m("保存",-1)])]),_:1})]),_:1})]),default:o(()=>[s(H,{layout:"vertical",model:t.value},{default:o(()=>[s(i,{label:"ID (唯一标识)"},{default:o(()=>[s(g,{value:t.value.id,"onUpdate:value":e[1]||(e[1]=a=>t.value.id=a),placeholder:"my-workflow"},null,8,["value"])]),_:1}),s(i,{label:"名称"},{default:o(()=>[s(g,{value:t.value.name,"onUpdate:value":e[2]||(e[2]=a=>t.value.name=a),placeholder:"我的工作流"},null,8,["value"])]),_:1}),s(i,{label:"描述"},{default:o(()=>[s(g,{value:t.value.description,"onUpdate:value":e[3]||(e[3]=a=>t.value.description=a),placeholder:"(可选)"},null,8,["value"])]),_:1}),s(O,null,{default:o(()=>[...e[11]||(e[11]=[m("步骤",-1)])]),_:1}),(c(!0),v(V,null,D(t.value.steps,(a,U)=>(c(),v("div",{key:U,class:"step-card"},[s(u,{style:{width:"100%","margin-bottom":"8px"},direction:"vertical"},{default:o(()=>[s(F,{compact:""},{default:o(()=>[s(g,{value:a.id,"onUpdate:value":k=>a.id=k,placeholder:"step-id",style:{width:"30%"}},null,8,["value","onUpdate:value"]),s(I,{value:a.dependsOn,"onUpdate:value":k=>a.dependsOn=k,mode:"tags",placeholder:"dependsOn",style:{width:"70%"}},null,8,["value","onUpdate:value"])]),_:2},1024),s(G,{value:a.message,"onUpdate:value":k=>a.message=k,rows:2,placeholder:"任务 prompt(支持 \\${step.<id>.summary} 占位)"},null,8,["value","onUpdate:value"]),s(g,{value:a.when,"onUpdate:value":k=>a.when=k,placeholder:"when 条件(可选,如 step.s1.status === 'completed')"},null,8,["value","onUpdate:value"]),s(u,null,{default:o(()=>[s(n,{size:"small",danger:"",onClick:k=>W(U)},{default:o(()=>[...e[12]||(e[12]=[m("删除",-1)])]),_:1},8,["onClick"]),_("span",ie," step "+y(U+1)+" / "+y(t.value.steps.length),1)]),_:2},1024)]),_:2},1024)]))),128)),s(n,{block:"",onClick:J},{default:o(()=>[...e[13]||(e[13]=[m("+ 添加步骤",-1)])]),_:1})]),_:1},8,["model"]),w.value&&!w.value.valid?(c(),v("div",ue,[(c(!0),v(V,null,D(w.value.errors,a=>(c(),v("div",{key:a},"• "+y(a),1))),128))])):N("",!0)]),_:1})):(c(),j(S,{key:1,size:"small"},{default:o(()=>[s(r,{description:"从左侧选择工作流或新建一个"})]),_:1})),h(l).runEvents.length?(c(),j(S,{key:2,size:"small",title:"运行日志",style:{"margin-top":"12px"}},{default:o(()=>[(c(!0),v(V,null,D(h(l).runEvents,(a,U)=>(c(),v("div",{key:U,style:{"font-family":"monospace","font-size":"12px","margin-bottom":"4px"}},[_("span",de,y(a.type),1),a.stepId?(c(),v("span",ce," ["+y(a.stepId)+"]",1)):N("",!0),a.status?(c(),v("span",pe," → "+y(a.status),1)):N("",!0),a.summary?(c(),v("span",fe," — "+y(a.summary),1)):N("",!0)]))),128))]),_:1})):N("",!0)]),_:1})]),_:1})])}}},Oe=ee(ve,[["__scopeId","data-v-0d6dcf38"]]);export{Oe as default};
@@ -1 +1 @@
1
- import{k as N,r as D,a as y,j as U}from"./vendor-aH7YaPZi.js";import{u as m}from"./ws-BTS8ehTm.js";const T="新对话",q="新 Agent",B={"assistant.delta":"response-token","assistant.final":"response-complete","assistant.message":"response-complete","tool.call.started":"tool-executing","tool.call.completed":"tool-result","tool.call.failed":"tool-result","slot.filling":"question","approval.requested":"question",error:"error"},F=N("chat",()=>{const i=D([]),h=D(null),u=y({}),a=y({}),d=y({}),f=y({});let A=null;const C=new Set;function g(t){return u[t]||(u[t]=[]),u[t]}function E(t){return!!(t&&f[t])}function p(t,e){t&&(f[t]=!!e)}function w(t){if(!t?.id)return;const e=i.value.find(o=>o.id===t.id);if(e){Object.assign(e,t);return}i.value.unshift(t)}function S(t,e=m()){u[t]||(u[t]=[]),a[t]||(a[t]={content:"",active:!1}),f[t]==null&&(f[t]=!1),!C.has(t)&&(C.add(t),e.onSession(t,o=>L(t,o)))}function v(t=m()){A||(A=t.onRuntimeEvent(e=>{const o=e.payload||{},s=o.record||{};if(e.type==="session:start"){const n=o.sessionType||s.type||"chat";p(o.sessionId,!1),w({id:o.sessionId,type:n,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"created",title:n==="chat"?T:q,createdAt:Date.now(),messageCount:s.messageCount??0})}else if(e.type==="session:resume"){const n=o.sessionId;if(!n)return;Array.isArray(o.history)&&(u[n]=o.history.map(l=>({role:l.role,content:l.content,timestamp:l.timestamp||Date.now()}))),a[n]||(a[n]={content:"",active:!1}),f[n]==null&&(f[n]=!1),w({id:n,type:s.type||null,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"resumed",messageCount:s.messageCount??(Array.isArray(o.history)?o.history.length:0)})}else if(e.type==="session:end"){const n=o.sessionId;i.value=i.value.filter(l=>l.id!==n),delete f[n],h.value===n&&(h.value=i.value[0]?.id||null)}}))}async function k(){const t=m();v(t),i.value=await t.listSessions(),i.value.forEach(e=>{S(e.id,t)})}async function _(t="chat",e={}){const o=m();v(o);const s=await o.createSession(t,null,e);return w({id:s,type:t,title:t==="chat"?T:q,createdAt:Date.now(),messageCount:0}),p(s,!1),S(s,o),h.value=s,s}function L(t,e){const o=g(t),s=B[e.type]||e.type,n=e.payload||{};if(s==="response-token"){a[t]||(a[t]={content:"",active:!0});const l=e.token||n.token||n.delta||n.content||"";a[t].content+=l,a[t].active=!0,p(t,!0)}else if(s==="response-complete"){const l=e.content||n.content||a[t]?.content||"";o.push({role:"assistant",content:l,timestamp:Date.now()}),a[t]&&(a[t].content="",a[t].active=!1);const r=i.value.find(c=>c.id===t);if(r&&(r.title===T||r.title===q)){const c=o.find(x=>x.role==="user");c&&(r.title=c.content.slice(0,30))}r&&(r.messageCount=o.filter(c=>c.role!=="tool").length),p(t,!1)}else if(s==="tool-executing")o.push({role:"tool",tool:e.tool||n.tool||n.toolName||"unknown",input:e.input||n.input||n.args||null,status:"running",timestamp:Date.now()}),p(t,!0);else if(s==="tool-result"){const l=e.tool||n.tool||n.toolName||"unknown",r=[...o].reverse().find(c=>c.role==="tool"&&c.tool===l);r&&(r.result=e.result||n.result||n.output||null,r.status="done")}else if(s==="question")d[t]={requestId:e.requestId||n.requestId||e.id,question:e.question||n.question||n.message||"",choices:e.choices||n.choices||n.options||[]},p(t,!1);else if(s==="error"){const l=e.message||n.message||"Unknown error";o.push({role:"assistant",content:`Error: ${l}`,timestamp:Date.now()}),p(t,!1),a[t]&&(a[t].active=!1)}}async function R(t,e){const o=m();v(o),g(t).push({role:"user",content:e,timestamp:Date.now()}),a[t]||(a[t]={content:"",active:!1}),a[t].active=!0,p(t,!0),o.sendSessionMessage(t,e)}function j(t,e){const o=m(),s=d[t];s&&(o.answerQuestion(t,s.requestId,e),delete d[t])}async function M(t){const e=m();if(v(e),h.value=t,S(t,e),!u[t]||u[t].length===0)try{await e.resumeSession(t)}catch{}}const b=U(()=>E(h.value));return{sessions:i,currentSessionId:h,messages:u,streaming:a,pendingQuestion:d,loadingBySession:f,isLoading:b,getIsLoading:E,loadSessions:k,createSession:_,sendMessage:R,answerQuestion:j,switchSession:M,getMessages:g}});export{F as u};
1
+ import{k as N,r as D,a as y,j as U}from"./vendor-xFZ6Jlpw.js";import{u as m}from"./ws-Dg01CdRG.js";const T="新对话",q="新 Agent",B={"assistant.delta":"response-token","assistant.final":"response-complete","assistant.message":"response-complete","tool.call.started":"tool-executing","tool.call.completed":"tool-result","tool.call.failed":"tool-result","slot.filling":"question","approval.requested":"question",error:"error"},F=N("chat",()=>{const i=D([]),h=D(null),u=y({}),a=y({}),d=y({}),f=y({});let A=null;const C=new Set;function g(t){return u[t]||(u[t]=[]),u[t]}function E(t){return!!(t&&f[t])}function p(t,e){t&&(f[t]=!!e)}function w(t){if(!t?.id)return;const e=i.value.find(o=>o.id===t.id);if(e){Object.assign(e,t);return}i.value.unshift(t)}function S(t,e=m()){u[t]||(u[t]=[]),a[t]||(a[t]={content:"",active:!1}),f[t]==null&&(f[t]=!1),!C.has(t)&&(C.add(t),e.onSession(t,o=>L(t,o)))}function v(t=m()){A||(A=t.onRuntimeEvent(e=>{const o=e.payload||{},s=o.record||{};if(e.type==="session:start"){const n=o.sessionType||s.type||"chat";p(o.sessionId,!1),w({id:o.sessionId,type:n,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"created",title:n==="chat"?T:q,createdAt:Date.now(),messageCount:s.messageCount??0})}else if(e.type==="session:resume"){const n=o.sessionId;if(!n)return;Array.isArray(o.history)&&(u[n]=o.history.map(l=>({role:l.role,content:l.content,timestamp:l.timestamp||Date.now()}))),a[n]||(a[n]={content:"",active:!1}),f[n]==null&&(f[n]=!1),w({id:n,type:s.type||null,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"resumed",messageCount:s.messageCount??(Array.isArray(o.history)?o.history.length:0)})}else if(e.type==="session:end"){const n=o.sessionId;i.value=i.value.filter(l=>l.id!==n),delete f[n],h.value===n&&(h.value=i.value[0]?.id||null)}}))}async function k(){const t=m();v(t),i.value=await t.listSessions(),i.value.forEach(e=>{S(e.id,t)})}async function _(t="chat",e={}){const o=m();v(o);const s=await o.createSession(t,null,e);return w({id:s,type:t,title:t==="chat"?T:q,createdAt:Date.now(),messageCount:0}),p(s,!1),S(s,o),h.value=s,s}function L(t,e){const o=g(t),s=B[e.type]||e.type,n=e.payload||{};if(s==="response-token"){a[t]||(a[t]={content:"",active:!0});const l=e.token||n.token||n.delta||n.content||"";a[t].content+=l,a[t].active=!0,p(t,!0)}else if(s==="response-complete"){const l=e.content||n.content||a[t]?.content||"";o.push({role:"assistant",content:l,timestamp:Date.now()}),a[t]&&(a[t].content="",a[t].active=!1);const r=i.value.find(c=>c.id===t);if(r&&(r.title===T||r.title===q)){const c=o.find(x=>x.role==="user");c&&(r.title=c.content.slice(0,30))}r&&(r.messageCount=o.filter(c=>c.role!=="tool").length),p(t,!1)}else if(s==="tool-executing")o.push({role:"tool",tool:e.tool||n.tool||n.toolName||"unknown",input:e.input||n.input||n.args||null,status:"running",timestamp:Date.now()}),p(t,!0);else if(s==="tool-result"){const l=e.tool||n.tool||n.toolName||"unknown",r=[...o].reverse().find(c=>c.role==="tool"&&c.tool===l);r&&(r.result=e.result||n.result||n.output||null,r.status="done")}else if(s==="question")d[t]={requestId:e.requestId||n.requestId||e.id,question:e.question||n.question||n.message||"",choices:e.choices||n.choices||n.options||[]},p(t,!1);else if(s==="error"){const l=e.message||n.message||"Unknown error";o.push({role:"assistant",content:`Error: ${l}`,timestamp:Date.now()}),p(t,!1),a[t]&&(a[t].active=!1)}}async function R(t,e){const o=m();v(o),g(t).push({role:"user",content:e,timestamp:Date.now()}),a[t]||(a[t]={content:"",active:!1}),a[t].active=!0,p(t,!0),o.sendSessionMessage(t,e)}function j(t,e){const o=m(),s=d[t];s&&(o.answerQuestion(t,s.requestId,e),delete d[t])}async function M(t){const e=m();if(v(e),h.value=t,S(t,e),!u[t]||u[t].length===0)try{await e.resumeSession(t)}catch{}}const b=U(()=>E(h.value));return{sessions:i,currentSessionId:h,messages:u,streaming:a,pendingQuestion:d,loadingBySession:f,isLoading:b,getIsLoading:E,loadSessions:k,createSession:_,sendMessage:R,answerQuestion:j,switchSession:M,getMessages:g}});export{F as u};
@@ -1,3 +1,3 @@
1
- import{n}from"./vendor-aH7YaPZi.js";const r=t=>({[t.componentCls]:{[`${t.antCls}-motion-collapse-legacy`]:{overflow:"hidden","&-active":{transition:`height ${t.motionDurationMid} ${t.motionEaseInOut},
1
+ import{n}from"./vendor-xFZ6Jlpw.js";const r=t=>({[t.componentCls]:{[`${t.antCls}-motion-collapse-legacy`]:{overflow:"hidden","&-active":{transition:`height ${t.motionDurationMid} ${t.motionEaseInOut},
2
2
  opacity ${t.motionDurationMid} ${t.motionEaseInOut} !important`}},[`${t.antCls}-motion-collapse`]:{overflow:"hidden",transition:`height ${t.motionDurationMid} ${t.motionEaseInOut},
3
3
  opacity ${t.motionDurationMid} ${t.motionEaseInOut} !important`}}});function e(t,i){return t.classList?t.classList.contains(i):` ${t.className} `.indexOf(` ${i} `)>-1}function a(t,i){t.classList?t.classList.add(i):e(t,i)||(t.className=`${t.className} ${i}`)}function l(t,i){if(t.classList)t.classList.remove(i);else if(e(t,i)){const s=t.className;t.className=` ${s} `.replace(` ${i} `," ")}}const c=function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:t,appear:i,css:!0,onBeforeEnter:s=>{s.style.height="0px",s.style.opacity="0",a(s,t)},onEnter:s=>{n(()=>{s.style.height=`${s.scrollHeight}px`,s.style.opacity="1"})},onAfterEnter:s=>{s&&(l(s,t),s.style.height=null,s.style.opacity=null)},onBeforeLeave:s=>{a(s,t),s.style.height=`${s.offsetHeight}px`,s.style.opacity=null},onLeave:s=>{setTimeout(()=>{s.style.height="0px",s.style.opacity="0"})},onAfterLeave:s=>{s&&(l(s,t),s.style&&(s.style.height=null,s.style.opacity=null))}}};export{a,c,r as g,l as r};
@@ -1 +1 @@
1
- import{_ as t}from"./index-BPzN5a2A.js";const n=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"];function C(e,s){return n.reduce((o,r)=>{const u=e[`${r}-1`],l=e[`${r}-3`],i=e[`${r}-6`],a=e[`${r}-7`];return t(t({},o),s(r,{lightColor:u,lightBorderColor:l,darkColor:i,textColor:a}))},{})}const c=n.map(e=>`${e}-inverse`),g=["success","processing","error","default","warning"];function m(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)?[...c,...n].includes(e):n.includes(e)}function p(e){return g.includes(e)}export{n as P,p as a,C as g,m as i};
1
+ import{_ as t}from"./index-D8XA7siu.js";const n=["blue","purple","cyan","green","magenta","pink","red","orange","yellow","volcano","geekblue","lime","gold"];function C(e,s){return n.reduce((o,r)=>{const u=e[`${r}-1`],l=e[`${r}-3`],i=e[`${r}-6`],a=e[`${r}-7`];return t(t({},o),s(r,{lightColor:u,lightBorderColor:l,darkColor:i,textColor:a}))},{})}const c=n.map(e=>`${e}-inverse`),g=["success","processing","error","default","warning"];function m(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)?[...c,...n].includes(e):n.includes(e)}function p(e){return g.includes(e)}export{n as P,p as a,C as g,m as i};
@@ -0,0 +1,3 @@
1
+ const c=/^\[[A-Z][a-zA-Z0-9_]*\]/,u=/^[✖✗✓✔ℹ⚠]/;function a(t){return t?t.split(`
2
+ `).filter(n=>{const e=n.trim();return!(!e||c.test(e)||u.test(e))}).join(`
3
+ `).trim():""}function r(t){const n=a(t);if(!n)return null;try{return JSON.parse(n)}catch{}const e=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!e)return null;try{return JSON.parse(e[0])}catch{return null}}const o=Object.freeze({contacts:0,friends:0,posts:0,messages:0,pendingRequests:0});function p(t){const n={...o},e=r(t);if(!e||typeof e!="object"||Array.isArray(e))return n;for(const i of Object.keys(o)){const s=e[i];typeof s=="number"&&Number.isFinite(s)&&(n[i]=s)}return typeof e.pending_requests=="number"&&(n.pendingRequests=e.pending_requests),n}function f(t,n){if(!t||typeof t!="object")return null;const e=t.id||t.contactId||t.contact_id||"";return e?{key:e,id:e,name:String(t.name||""),did:t.did||"",email:t.email||"",notes:t.notes||"",createdAt:t.createdAt||t.created_at||"",_idx:n}:null}function y(t){const n=r(t);return Array.isArray(n)?n.map(f).filter(Boolean):[]}function d(t,n){if(!t||typeof t!="object")return null;const e=t.contactId||t.contact_id||t.id||"";return e?{key:t.id||e,id:t.id||e,contactId:e,status:String(t.status||"pending"),createdAt:t.createdAt||t.created_at||"",_idx:n}:null}function m(t){const n=r(t);return Array.isArray(n)?n.map(d).filter(Boolean):[]}function l(t,n){if(!t||typeof t!="object")return null;const e=t.id||"";return e?{key:e,id:e,author:String(t.author||"unknown"),content:String(t.content||""),likes:typeof t.likes=="number"?t.likes:0,createdAt:t.createdAt||t.created_at||"",_idx:n}:null}function A(t){const n=r(t);return Array.isArray(n)?n.map(l).filter(Boolean):[]}export{o as S,y as a,m as b,A as c,p,a as s};
@@ -1 +1 @@
1
- import{_ as r}from"./index-BPzN5a2A.js";function a(o,t,i){const{focusElCls:e,focus:n,borderElCls:s}=i,m=s?"> *":"",d=["hover",n?"focus":null,"active"].filter(Boolean).map(c=>`&:${c} ${m}`).join(",");return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:-o.lineWidth},"&-item":r(r({[d]:{zIndex:2}},e?{[`&${e}`]:{zIndex:2}}:{}),{[`&[disabled] ${m}`]:{zIndex:0}})}}function $(o,t,i){const{borderElCls:e}=i,n=e?`> ${e}`:"";return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${n}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${n}, &${o}-sm ${n}, &${o}-lg ${n}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${n}, &${o}-sm ${n}, &${o}-lg ${n}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function l(o){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{focus:!0};const{componentCls:i}=o,e=`${i}-compact`;return{[e]:r(r({},a(o,e,t)),$(i,e,t))}}export{l as g};
1
+ import{_ as r}from"./index-D8XA7siu.js";function a(o,t,i){const{focusElCls:e,focus:n,borderElCls:s}=i,m=s?"> *":"",d=["hover",n?"focus":null,"active"].filter(Boolean).map(c=>`&:${c} ${m}`).join(",");return{[`&-item:not(${t}-last-item)`]:{marginInlineEnd:-o.lineWidth},"&-item":r(r({[d]:{zIndex:2}},e?{[`&${e}`]:{zIndex:2}}:{}),{[`&[disabled] ${m}`]:{zIndex:0}})}}function $(o,t,i){const{borderElCls:e}=i,n=e?`> ${e}`:"";return{[`&-item:not(${t}-first-item):not(${t}-last-item) ${n}`]:{borderRadius:0},[`&-item:not(${t}-last-item)${t}-first-item`]:{[`& ${n}, &${o}-sm ${n}, &${o}-lg ${n}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`&-item:not(${t}-first-item)${t}-last-item`]:{[`& ${n}, &${o}-sm ${n}, &${o}-lg ${n}`]:{borderStartStartRadius:0,borderEndStartRadius:0}}}}function l(o){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{focus:!0};const{componentCls:i}=o,e=`${i}-compact`;return{[e]:r(r({},a(o,e,t)),$(i,e,t))}}export{l as g};
@@ -1 +1 @@
1
- import{_ as s}from"./index-BPzN5a2A.js";import{i as c,f as a,a as i,p as u}from"./vendor-aH7YaPZi.js";function x(o){const t=Symbol("contextKey");return{useProvide:(r,n)=>{const e=i({});return u(t,e),a(()=>{s(e,r,n||{})}),e},useInject:()=>c(t,o)||{}}}export{x as c};
1
+ import{_ as s}from"./index-D8XA7siu.js";import{i as c,f as a,a as i,p as u}from"./vendor-xFZ6Jlpw.js";function x(o){const t=Symbol("contextKey");return{useProvide:(r,n)=>{const e=i({});return u(t,e),a(()=>{s(e,r,n||{})}),e},useInject:()=>c(t,o)||{}}}export{x as c};
@@ -1 +1 @@
1
- import{e as O,M as y,a as v,i as T}from"./Trigger-CAZQ8LeJ.js";import{a as s,S as f,l as x,d as w,m as C}from"./_getTag-CWA3v-Ds.js";import{i as c}from"./isSymbol-CsP9Ob42.js";function _(n,r){for(var e=-1,i=n==null?0:n.length,t=Array(i);++e<i;)t[e]=r(n[e],e,n);return t}var p=f?f.prototype:void 0,d=p?p.toString:void 0;function S(n){if(typeof n=="string")return n;if(s(n))return _(n,S)+"";if(c(n))return d?d.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function I(n){return n}function E(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var M=800,A=16,N=Date.now;function R(n){var r=0,e=0;return function(){var i=N(),t=A-(i-e);if(e=i,t>0){if(++r>=M)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}function z(n){return function(){return n}}var l=(function(){try{var n=x(Object,"defineProperty");return n({},"",{}),n}catch{}})(),$=l?function(n,r){return l(n,"toString",{configurable:!0,enumerable:!1,value:z(r),writable:!0})}:I,F=R($);function H(n,r,e){r=="__proto__"&&l?l(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var V=Object.prototype,D=V.hasOwnProperty;function un(n,r,e){var i=n[r];(!(D.call(n,r)&&O(i,e))||e===void 0&&!(r in n))&&H(n,r,e)}var g=Math.max;function K(n,r,e){return r=g(r===void 0?n.length-1:r,0),function(){for(var i=arguments,t=-1,a=g(i.length-r,0),u=Array(a);++t<a;)u[t]=i[r+t];t=-1;for(var o=Array(r+1);++t<r;)o[t]=i[t];return o[r]=e(u),E(n,this,o)}}var U=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/;function Z(n,r){if(s(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||c(n)?!0:X.test(n)||!U.test(n)||r!=null&&n in Object(r)}var q="Expected a function";function h(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(q);var e=function(){var i=arguments,t=r?r.apply(this,i):i[0],a=e.cache;if(a.has(t))return a.get(t);var u=n.apply(this,i);return e.cache=a.set(t,u)||a,u};return e.cache=new(h.Cache||y),e}h.Cache=y;var G=500;function L(n){var r=h(n,function(i){return e.size===G&&e.clear(),i}),e=r.cache;return r}var B=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J=/\\(\\)?/g,Q=L(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(B,function(e,i,t,a){r.push(t?a.replace(J,"$1"):i||e)}),r});function W(n){return n==null?"":S(n)}function P(n,r){return s(n)?n:Z(n,r)?[n]:Q(W(n))}function b(n){if(typeof n=="string"||c(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function on(n,r){r=P(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[b(r[e++])];return e&&e==i?n:void 0}var m=f?f.isConcatSpreadable:void 0;function Y(n){return s(n)||w(n)||!!(m&&n&&n[m])}function k(n,r,e,i,t){var a=-1,u=n.length;for(e||(e=Y),t||(t=[]);++a<u;){var o=n[a];e(o)?v(t,o):t[t.length]=o}return t}function j(n){var r=n==null?0:n.length;return r?k(n):[]}function sn(n){return F(K(n,void 0,j),n+"")}function nn(n,r){return n!=null&&r in Object(n)}function rn(n,r,e){r=P(r,n);for(var i=-1,t=r.length,a=!1;++i<t;){var u=b(r[i]);if(!(a=n!=null&&e(n,u)))break;n=n[u]}return a||++i!=t?a:(t=n==null?0:n.length,!!t&&C(t)&&T(u,t)&&(s(n)||w(n)))}function fn(n,r){return n!=null&&rn(n,r,nn)}export{un as a,on as b,P as c,H as d,Z as e,sn as f,_ as g,fn as h,I as i,K as o,F as s,b as t};
1
+ import{e as O,M as y,a as v,i as T}from"./Trigger-CyX3zvNU.js";import{a as s,S as f,l as x,d as w,m as C}from"./_getTag-CWA3v-Ds.js";import{i as c}from"./isSymbol-CsP9Ob42.js";function _(n,r){for(var e=-1,i=n==null?0:n.length,t=Array(i);++e<i;)t[e]=r(n[e],e,n);return t}var p=f?f.prototype:void 0,d=p?p.toString:void 0;function S(n){if(typeof n=="string")return n;if(s(n))return _(n,S)+"";if(c(n))return d?d.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function I(n){return n}function E(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var M=800,A=16,N=Date.now;function R(n){var r=0,e=0;return function(){var i=N(),t=A-(i-e);if(e=i,t>0){if(++r>=M)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}function z(n){return function(){return n}}var l=(function(){try{var n=x(Object,"defineProperty");return n({},"",{}),n}catch{}})(),$=l?function(n,r){return l(n,"toString",{configurable:!0,enumerable:!1,value:z(r),writable:!0})}:I,F=R($);function H(n,r,e){r=="__proto__"&&l?l(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var V=Object.prototype,D=V.hasOwnProperty;function un(n,r,e){var i=n[r];(!(D.call(n,r)&&O(i,e))||e===void 0&&!(r in n))&&H(n,r,e)}var g=Math.max;function K(n,r,e){return r=g(r===void 0?n.length-1:r,0),function(){for(var i=arguments,t=-1,a=g(i.length-r,0),u=Array(a);++t<a;)u[t]=i[r+t];t=-1;for(var o=Array(r+1);++t<r;)o[t]=i[t];return o[r]=e(u),E(n,this,o)}}var U=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/;function Z(n,r){if(s(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||c(n)?!0:X.test(n)||!U.test(n)||r!=null&&n in Object(r)}var q="Expected a function";function h(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(q);var e=function(){var i=arguments,t=r?r.apply(this,i):i[0],a=e.cache;if(a.has(t))return a.get(t);var u=n.apply(this,i);return e.cache=a.set(t,u)||a,u};return e.cache=new(h.Cache||y),e}h.Cache=y;var G=500;function L(n){var r=h(n,function(i){return e.size===G&&e.clear(),i}),e=r.cache;return r}var B=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J=/\\(\\)?/g,Q=L(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(B,function(e,i,t,a){r.push(t?a.replace(J,"$1"):i||e)}),r});function W(n){return n==null?"":S(n)}function P(n,r){return s(n)?n:Z(n,r)?[n]:Q(W(n))}function b(n){if(typeof n=="string"||c(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function on(n,r){r=P(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[b(r[e++])];return e&&e==i?n:void 0}var m=f?f.isConcatSpreadable:void 0;function Y(n){return s(n)||w(n)||!!(m&&n&&n[m])}function k(n,r,e,i,t){var a=-1,u=n.length;for(e||(e=Y),t||(t=[]);++a<u;){var o=n[a];e(o)?v(t,o):t[t.length]=o}return t}function j(n){var r=n==null?0:n.length;return r?k(n):[]}function sn(n){return F(K(n,void 0,j),n+"")}function nn(n,r){return n!=null&&r in Object(n)}function rn(n,r,e){r=P(r,n);for(var i=-1,t=r.length,a=!1;++i<t;){var u=b(r[i]);if(!(a=n!=null&&e(n,u)))break;n=n[u]}return a||++i!=t?a:(t=n==null?0:n.length,!!t&&C(t)&&T(u,t)&&(s(n)||w(n)))}function fn(n,r){return n!=null&&rn(n,r,nn)}export{un as a,on as b,P as c,H as d,Z as e,sn as f,_ as g,fn as h,I as i,K as o,F as s,b as t};