chainlesschain 0.162.156 → 0.162.158

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 (195) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-DjBXlypQ.js → AIOps-BwpTJTN_.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-Cv9er9bp.js → ActionButton-BtQOoo3l.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-CLKDjSNs.js → Analytics-Duf_rXZa.js} +3 -3
  7. package/src/assets/web-panel/assets/AppLayout-XQK3wjvB.js +9 -0
  8. package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +1 -0
  9. package/src/assets/web-panel/assets/Artifacts-DQvJoQ6E.js +1 -0
  10. package/src/assets/web-panel/assets/{Audit-CXafD178.js → Audit-DNjOGQLh.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CP5c-GSd.js → BackgroundAgents-FH9RAfB5.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-BbYLQfyt.js → Backup-ZIbrR4-U.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-Bqe0MwZL.js → BaseInput-DSt3NaND.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-jNA_yUPH.js → Chat-CY-wvbjv.js} +6 -6
  15. package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +1 -0
  16. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BOFLF01s.js → ChatBubbleRenderer-BAV9V-t-.js} +1 -1
  17. package/src/assets/web-panel/assets/{Checkbox-Dlzz-zD1.js → Checkbox-8JVadE_B.js} +1 -1
  18. package/src/assets/web-panel/assets/{Codegen-BAsDQjGf.js → Codegen-CN83nPYI.js} +1 -1
  19. package/src/assets/web-panel/assets/{Col-Ju0HrAuS.js → Col-xPSvqdN8.js} +1 -1
  20. package/src/assets/web-panel/assets/{Community-DynJd43Z.js → Community-D78cnIjG.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compact-CabbZVww.js → Compact-CSw6Csbp.js} +1 -1
  22. package/src/assets/web-panel/assets/{Compliance-DW4BmAoh.js → Compliance-E_HhjcYR.js} +1 -1
  23. package/src/assets/web-panel/assets/{Cowork-Bk1S_7X-.js → Cowork-DybeQjmm.js} +3 -3
  24. package/src/assets/web-panel/assets/{Cron-By4sh_NM.js → Cron-DS0BJeLY.js} +2 -2
  25. package/src/assets/web-panel/assets/{Crosschain-DdZdbS1C.js → Crosschain-BOwVgkbs.js} +1 -1
  26. package/src/assets/web-panel/assets/{DID-CkL-sQyS.js → DID-DRUr9YuX.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dashboard-g_mOpumg.js → Dashboard-Cht-yUKW.js} +2 -2
  28. package/src/assets/web-panel/assets/{Dropdown-DtHyE7Ao.js → Dropdown-BLr_EJ9X.js} +1 -1
  29. package/src/assets/web-panel/assets/{EmailListRenderer-Kpvov5Wr.js → EmailListRenderer-Drexuh5W.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-C4kZoePR.js → FamilyGuardDashboard-D9Q2Kq63.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-BAwWoK2N.js → Federation-C-Z1xI-T.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-DeI0i5f8.js → FormItemContext-DLHPMkQF.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-CkcKRtos.js → GenericCardRenderer-DxxEdn2r.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-kX6jjI9y.js → Git-syATcaBt.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-BXJCBm6x.js → Governance-CYe_r8Zf.js} +1 -1
  36. package/src/assets/web-panel/assets/Inference-GWxErB7k.js +1 -0
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-3Dnuf1Wh.js → KnowledgeGraph-qQvVCZoi.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-lVAZCtUB.js → Logs-BenAU2W8.js} +2 -2
  39. package/src/assets/web-panel/assets/MarkdownRenderer-7agE3Or1.js +1 -0
  40. package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +1 -0
  41. package/src/assets/web-panel/assets/Marketplace-D4Jn5fpD.js +1 -0
  42. package/src/assets/web-panel/assets/{McpTools-CqjzefRU.js → McpTools-DtAwoqiQ.js} +4 -4
  43. package/src/assets/web-panel/assets/{Memory-BFiPAxk6.js → Memory-BI_O50I8.js} +2 -2
  44. package/src/assets/web-panel/assets/{MobileBridge-D0O43VwF.js → MobileBridge-CQWE2lqx.js} +1 -1
  45. package/src/assets/web-panel/assets/{MobileProjects-B3now48t.js → MobileProjects-CVtTqgtg.js} +1 -1
  46. package/src/assets/web-panel/assets/{Mtc-DybhtaCS.js → Mtc-Dnr16qsn.js} +2 -2
  47. package/src/assets/web-panel/assets/{MtcAudit-D7MmY4F0.js → MtcAudit-CQ5Xe4-a.js} +5 -5
  48. package/src/assets/web-panel/assets/{Multisig-wZvGJnB8.js → Multisig-Bjr8O-wy.js} +3 -3
  49. package/src/assets/web-panel/assets/{NLProgramming-BNPpgfvn.js → NLProgramming-CEe-KirU.js} +1 -1
  50. package/src/assets/web-panel/assets/{Notes-B6FS3KBj.js → Notes-spKJIKF9.js} +4 -4
  51. package/src/assets/web-panel/assets/{NotificationSettings-CK0yla9U.js → NotificationSettings-DRp83LFG.js} +1 -1
  52. package/src/assets/web-panel/assets/OrderTableRenderer-h1A0XB2a.js +1 -0
  53. package/src/assets/web-panel/assets/{Organization-geqgwN1T.js → Organization-BlgB0IYg.js} +4 -4
  54. package/src/assets/web-panel/assets/{Overflow-BWJYZFbC.js → Overflow-a_35HqZI.js} +1 -1
  55. package/src/assets/web-panel/assets/{P2P-DnU1505F.js → P2P-CSNHCNPC.js} +2 -2
  56. package/src/assets/web-panel/assets/{PdhVaultBrowser-BGY74KnC.js → PdhVaultBrowser-C8M1JH-1.js} +5 -5
  57. package/src/assets/web-panel/assets/{Permissions-CgArrWtQ.js → Permissions-DmjJi9Ms.js} +4 -4
  58. package/src/assets/web-panel/assets/{PersonalDataHub-C2vYE61a.js → PersonalDataHub-DfuwRyf4.js} +2 -2
  59. package/src/assets/web-panel/assets/{Pipeline-CBYLI4yW.js → Pipeline-B2-S4ekE.js} +1 -1
  60. package/src/assets/web-panel/assets/{Privacy-B-PdW9aN.js → Privacy-B1dOiBLC.js} +1 -1
  61. package/src/assets/web-panel/assets/{ProjectInit-CuWQegbV.js → ProjectInit-_pNmc-DX.js} +2 -2
  62. package/src/assets/web-panel/assets/{ProjectSettings-4d32m_cS.js → ProjectSettings-DmwG2Ii1.js} +2 -2
  63. package/src/assets/web-panel/assets/{Projects-VLA7ttwd.js → Projects-COATmHxF.js} +1 -1
  64. package/src/assets/web-panel/assets/{Providers-B_Izb_oa.js → Providers-C6HSjg1d.js} +1 -1
  65. package/src/assets/web-panel/assets/{QrScannerModal-C6B_ndXV.js → QrScannerModal-CrDmS7l1.js} +1 -1
  66. package/src/assets/web-panel/assets/{QuickAsk-C6tavL-y.js → QuickAsk-CfKvWt-x.js} +1 -1
  67. package/src/assets/web-panel/assets/{Recommend-CF-LaZ6x.js → Recommend-DMa6Kuzv.js} +1 -1
  68. package/src/assets/web-panel/assets/RemoteSession-DrktUo5x.js +4 -0
  69. package/src/assets/web-panel/assets/Reputation-BTPQ1vjL.js +1 -0
  70. package/src/assets/web-panel/assets/{Row-DO0fd48A.js → Row-B6Q7QkMG.js} +1 -1
  71. package/src/assets/web-panel/assets/{RssFeed-BV5LDzFR.js → RssFeed-B1IJhAmX.js} +3 -3
  72. package/src/assets/web-panel/assets/Search-xbea1kGD.js +1 -0
  73. package/src/assets/web-panel/assets/{Security-DwSrWRCw.js → Security-7rs0cO3F.js} +4 -4
  74. package/src/assets/web-panel/assets/{Services-BEf1QyM4.js → Services-0fjixK0S.js} +2 -2
  75. package/src/assets/web-panel/assets/{Skeleton-LZXTpovy.js → Skeleton-B_rVq9Cu.js} +1 -1
  76. package/src/assets/web-panel/assets/{Skills-SKgc0Zug.js → Skills-C5uM90b9.js} +1 -1
  77. package/src/assets/web-panel/assets/{Sla-C_QVOtkN.js → Sla-U4pYCIZH.js} +1 -1
  78. package/src/assets/web-panel/assets/{SpeechSettings-v5TW2V-X.js → SpeechSettings-Cdz4yTWx.js} +1 -1
  79. package/src/assets/web-panel/assets/{SyncSettings-CQPjHdqU.js → SyncSettings-Me3aetHv.js} +2 -2
  80. package/src/assets/web-panel/assets/{Tasks-DCd-uYcI.js → Tasks-Cf6aNkL_.js} +1 -1
  81. package/src/assets/web-panel/assets/{Templates-62VDIjtj.js → Templates-CYatk4tU.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tenant-BnFQ0pNy.js → Tenant-DIMKLw7o.js} +1 -1
  83. package/src/assets/web-panel/assets/{Terminal-D3v0MGSj.js → Terminal-C_cp-uSJ.js} +2 -2
  84. package/src/assets/web-panel/assets/{TimelineRenderer-BI1Ka-cu.js → TimelineRenderer-cUPVNADp.js} +1 -1
  85. package/src/assets/web-panel/assets/{Tokens-BwX1jXYP.js → Tokens-CiaEIXVf.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trigger-CSA8TqNx.js → Trigger-DB1WU5lQ.js} +1 -1
  87. package/src/assets/web-panel/assets/{Trust-Bn3IjCx7.js → Trust-Cfht9Ijy.js} +1 -1
  88. package/src/assets/web-panel/assets/{UkeySign-pUbOAqNi.js → UkeySign-K3P4Vt9S.js} +1 -1
  89. package/src/assets/web-panel/assets/{VideoEditing-Db2RercF.js → VideoEditing-DWjhjXRh.js} +1 -1
  90. package/src/assets/web-panel/assets/{Wallet-CpR1BVAl.js → Wallet-D9-Q1Kan.js} +4 -4
  91. package/src/assets/web-panel/assets/{WebAuthn-Yxtkn7Zp.js → WebAuthn-BDszy-oV.js} +5 -5
  92. package/src/assets/web-panel/assets/{WorkflowEditor-CYLe9a2E.js → WorkflowEditor-DIhij4rA.js} +1 -1
  93. package/src/assets/web-panel/assets/{chat-gsOGdak0.js → chat-D7VCiKbh.js} +1 -1
  94. package/src/assets/web-panel/assets/{colors-D9fN299a.js → colors-BvOd9pVn.js} +1 -1
  95. package/src/assets/web-panel/assets/{compact-item-vkd7s-ay.js → compact-item-DoqXBiAO.js} +1 -1
  96. package/src/assets/web-panel/assets/{createContext-C7YkbMyy.js → createContext-CrKRzUtp.js} +1 -1
  97. package/src/assets/web-panel/assets/devWarning-nDB--2xr.js +1 -0
  98. package/src/assets/web-panel/assets/{hasIn-ig7reRSU.js → hasIn-BWAev4WC.js} +1 -1
  99. package/src/assets/web-panel/assets/{icons-DEmcnxBf.js → icons-DG5UD-6K.js} +4 -4
  100. package/src/assets/web-panel/assets/{index-W52sHRdr.js → index-1poMpMU0.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DZAxCnjS.js → index-8g5TJCZ3.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-9TxdMYju.js → index-B0vGEbJT.js} +1 -1
  103. package/src/assets/web-panel/assets/index-B1_pRTtB.js +1 -0
  104. package/src/assets/web-panel/assets/{index-DhdXbsXX.js → index-B30NvR21.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-B7QRpKif.js → index-BCyP071m.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Bt-9ZhIu.js → index-BHOcVYrx.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BYe9HRSt.js → index-BN9m4Ux2.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BkP17Z95.js → index-BWWsaimP.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CDWTycrg.js → index-BXyl8O23.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CspGymmg.js → index-BZGk8AbZ.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DFfxF7Vt.js → index-Bf9YlbDn.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DQ8U7kzC.js → index-Bj7EgmOp.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-D2yhtk6a.js → index-BkgnGX7v.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-FzGr6CVk.js → index-BoYrS_L2.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BMw48d19.js → index-Bq_ctRpz.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CAkz1f1r.js → index-C5kRmj3P.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-SDrcQXO1.js → index-CDGLdn12.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-gj8kxcAi.js → index-CEPHMSih.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-PkH39qsp.js → index-CEXfKSiI.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BHHN_KTS.js → index-CSb-tnIo.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-gpurplyq.js → index-CmJ6xKBO.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BfpVcXKa.js → index-CoD31Ndm.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CGzGe5tv.js → index-Cx7M7PSF.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BhftELHI.js → index-D23L1V76.js} +3 -3
  125. package/src/assets/web-panel/assets/{index-DPguq3X7.js → index-DV-Rfmfx.js} +4 -4
  126. package/src/assets/web-panel/assets/{index-BpGlLbRv.js → index-DlGu7As6.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-C8HZMygt.js → index-DvDOpsJB.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DuwbKHoS.js → index-HwHdTusY.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-C7AY39sg.js → index-ISvPZ05r.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-nX8YE6cj.js → index-JzUmJMvn.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DvCJXmrx.js → index-KR1-Em9C.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Co2NYyew.js → index-PDxGjKRu.js} +1 -1
  133. package/src/assets/web-panel/assets/index-TMM9FuW-.js +1 -0
  134. package/src/assets/web-panel/assets/{index-D6s_kbjt.js → index-YGDy7nNq.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-Dy_TKZ9h.js → index-gmxqu5Kk.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-DFM1oNe1.js → index-oY45XrkG.js} +1 -1
  137. package/src/assets/web-panel/assets/{index-bVbgYBhv.js → index-ww1QtLnX.js} +1 -1
  138. package/src/assets/web-panel/assets/{index-BvDEukXe.js → index-zH-tuuGZ.js} +1 -1
  139. package/src/assets/web-panel/assets/{initDefaultProps-BrgfVRg9.js → initDefaultProps-XW-OR3mL.js} +1 -1
  140. package/src/assets/web-panel/assets/{motion-D_3xmwac.js → motion-CeuEHh20.js} +1 -1
  141. package/src/assets/web-panel/assets/{move-DDDJdlxw.js → move-Dva79Keg.js} +1 -1
  142. package/src/assets/web-panel/assets/{mtc-parser-BK2uEWwn.js → mtc-parser-C0B6bD2j.js} +1 -1
  143. package/src/assets/web-panel/assets/{omit-BPHKbDcf.js → omit-AkZvO-a2.js} +1 -1
  144. package/src/assets/web-panel/assets/{pickAttrs-LNnTscuz.js → pickAttrs-B4r55qGc.js} +1 -1
  145. package/src/assets/web-panel/assets/{placementArrow-CvmTZll5.js → placementArrow-BLH-z7YE.js} +1 -1
  146. package/src/assets/web-panel/assets/{responsiveObserve-eBj7qi2J.js → responsiveObserve-ksEGZ2Wf.js} +1 -1
  147. package/src/assets/web-panel/assets/{slide-D68hHkrM.js → slide-Cth4OD1Z.js} +1 -1
  148. package/src/assets/web-panel/assets/{statusUtils-daTlaeo0.js → statusUtils-9S83ezxw.js} +1 -1
  149. package/src/assets/web-panel/assets/{styleChecker-DtyKMtHB.js → styleChecker-7yQmQGZ4.js} +1 -1
  150. package/src/assets/web-panel/assets/{useFlexGapSupport-ekFwFs9h.js → useFlexGapSupport-DpGnMmPc.js} +1 -1
  151. package/src/assets/web-panel/assets/{useFs-jRaSEoF4.js → useFs-C4zDZIXH.js} +1 -1
  152. package/src/assets/web-panel/assets/{usePersonalDataHub-DD5nGzjA.js → usePersonalDataHub-CoLICdUZ.js} +1 -1
  153. package/src/assets/web-panel/assets/{vnode-KcgLUiom.js → vnode-CKyH-35X.js} +1 -1
  154. package/src/assets/web-panel/assets/{zoom-Cyk2PQ-s.js → zoom-DRDGit17.js} +1 -1
  155. package/src/assets/web-panel/index.html +2 -2
  156. package/src/command-manifest.json +8 -1
  157. package/src/commands/agent.js +49 -5
  158. package/src/commands/artifacts.js +161 -0
  159. package/src/commands/browse.js +204 -2
  160. package/src/data/changelog.json +13 -2
  161. package/src/gateways/ws/artifact-protocol.js +219 -0
  162. package/src/gateways/ws/message-dispatcher.js +6 -0
  163. package/src/gateways/ws/ws-server.js +32 -0
  164. package/src/index.js +6 -0
  165. package/src/lib/accessibility.js +55 -0
  166. package/src/lib/artifact-store.js +236 -0
  167. package/src/lib/chrome-connector.js +349 -0
  168. package/src/lib/hook-runner.cjs +47 -7
  169. package/src/lib/ide-context.js +84 -0
  170. package/src/lib/permission-rules.cjs +26 -3
  171. package/src/lib/plugin-runtime/scopes.js +12 -0
  172. package/src/lib/remote-control.js +35 -0
  173. package/src/lib/safe-mode.js +40 -0
  174. package/src/lib/shell-selector.cjs +203 -0
  175. package/src/lib/skill-loader.js +19 -0
  176. package/src/lib/slash-dispatch.js +34 -0
  177. package/src/lib/web-ui-server.js +120 -7
  178. package/src/repl/agent-repl.js +330 -116
  179. package/src/repl/remote-approval.js +111 -0
  180. package/src/runtime/agent-core.js +129 -8
  181. package/src/runtime/coding-agent-contract-shared.cjs +105 -0
  182. package/src/runtime/coding-agent-policy.cjs +31 -0
  183. package/src/runtime/headless-stream.js +51 -1
  184. package/src/runtime/policies/agent-policy.js +4 -0
  185. package/src/assets/web-panel/assets/AppLayout-CfyZNzmJ.js +0 -9
  186. package/src/assets/web-panel/assets/Chat-DDh58PCf.css +0 -1
  187. package/src/assets/web-panel/assets/Inference-ujD2JSKo.js +0 -1
  188. package/src/assets/web-panel/assets/Marketplace-qnzNPm-A.js +0 -1
  189. package/src/assets/web-panel/assets/OrderTableRenderer-CXfPHIpy.js +0 -1
  190. package/src/assets/web-panel/assets/RemoteSession-DBqTTQ9_.js +0 -4
  191. package/src/assets/web-panel/assets/Reputation-B01FALUi.js +0 -1
  192. package/src/assets/web-panel/assets/Search-CTti4_MP.js +0 -1
  193. package/src/assets/web-panel/assets/devWarning-DEcR2h6k.js +0 -1
  194. package/src/assets/web-panel/assets/index-BEibanjg.js +0 -1
  195. package/src/assets/web-panel/assets/index-z_25tU3p.js +0 -1
@@ -1,9 +0,0 @@
1
- import{b as v,r as P,I as k,P as p,J as L,c as e,K as t,U as d,Q as l,R as a,S as B,F as I,Z as se,_ as W,V as m,o as z,x as $,$ as fe,N as J,f as ee,M as te,w as ne,a0 as me}from"./vendor-Bn1JzzAn.js";import{u as H,_ as Z,E as ke,a as oe,b as ie,c as ae,T as ge,d as V}from"./index-DPguq3X7.js";import{u as N}from"./useShellMode-CgR0wCYM.js";import{R as _e,B as de,M as ue,U as Oe,D as he,S as be,h as we,i as ve,j as Le,N as Se,k as Ce,F as Ee,l as Te,m as Ae,A as Be,P as Me,n as Re,o as Pe,p as je,q as De,r as Ue,s as Ne,t as Ie,u as Ke,v as Fe,w as Ve,x as We,V as ze,K as Ge,y as He,z as qe,G as Je,H as Ye,J as Ze,W as Qe,O as Xe,Q as xe,X as $e,Y as et,Z as tt,_ as nt,$ as ot,a0 as it,a1 as at,a2 as lt,a3 as rt,a4 as st,a5 as dt,e as ut,a6 as ct,a7 as yt,a8 as pt,a9 as ft,aa as mt,ab as kt,ac as gt}from"./icons-DEmcnxBf.js";import le from"./index-PkH39qsp.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BPHKbDcf.js";import"./pickAttrs-LNnTscuz.js";import"./initDefaultProps-BrgfVRg9.js";import"./motion-D_3xmwac.js";import"./raf-Deuc0E8-.js";import"./index-BpGlLbRv.js";import"./index-D2yhtk6a.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DEcR2h6k.js";import"./compact-item-vkd7s-ay.js";import"./createContext-C7YkbMyy.js";import"./Compact-CabbZVww.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DtyKMtHB.js";import"./zoom-Cyk2PQ-s.js";import"./ActionButton-Cv9er9bp.js";import"./vnode-KcgLUiom.js";const _t=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,T={notifications:P([]),unreadCount:P(0)};function G(i){if(i&&i.ok===!1)throw new Error(i.error||"notification handler failed");return i?.result??i}function re(){const i=H();async function c({limit:o=50,offset:s=0,isRead:f}={}){if(!N().isEmbedded)return T.notifications.value=[],T.unreadCount.value=0,T.notifications.value;const _=await i.sendRaw({type:"notification.list",limit:o,offset:s,isRead:f},15e3),O=G(_);if(O?.success===!1)throw new Error(O.error||"notification.list failed");return T.notifications.value=Array.isArray(O?.notifications)?O.notifications:[],await S(),T.notifications.value}async function S(){if(!N().isEmbedded)return T.unreadCount.value=0,0;const o=await i.sendRaw({type:"notification.unread-count"},1e4),s=G(o);return T.unreadCount.value=Number(s?.count)||0,T.unreadCount.value}async function n(o){if(o==null||o==="")throw new Error("id is required");if(!N().isEmbedded)return;const s=await i.sendRaw({type:"notification.mark-read",id:o},1e4),f=G(s);if(f?.success===!1)throw new Error(f.error||"notification.mark-read failed");const _=T.notifications.value.find(O=>O.id===o);_&&(_.is_read=1),await S()}async function g(){if(!N().isEmbedded)return;const o=await i.sendRaw({type:"notification.mark-all-read"},1e4),s=G(o);if(s?.success===!1)throw new Error(s.error||"notification.mark-all-read failed");for(const f of T.notifications.value)f.is_read=1;T.unreadCount.value=0}async function h(o,s=""){if(!N().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const f=await i.sendRaw({type:"notification.send-desktop",title:o,body:s},1e4),_=G(f);if(_?.success===!1)throw new Error(_.error||"notification.send-desktop failed")}return{notifications:v(()=>T.notifications.value),unreadCount:v(()=>T.unreadCount.value),refresh:c,refreshUnreadCount:S,markRead:n,markAllRead:g,sendDesktop:h}}const Ot={__name:"NotificationBell",setup(i,{expose:c}){c();const S=P(!1),n=P("all"),g=P(!1),{notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:_}=re();function O(){j()}z(()=>{window.addEventListener("cc:open-notification-drawer",O)}),$(()=>{window.removeEventListener("cc:open-notification-drawer",O)});const M=v(()=>n.value==="unread"?h.value.filter(u=>!u.is_read):h.value);async function C(){if(N().isEmbedded){g.value=!0;try{await s({limit:100})}catch{}finally{g.value=!1}}}async function j(){S.value=!0,await C()}async function D(u){if(!u.is_read)try{await f(u.id)}catch{}}async function r(){try{await _()}catch(u){console.warn("[NotificationBell] markAllRead failed:",u?.message||u)}}function w(u){if(!u)return"";const b=typeof u=="string"?Date.parse(u):Number(u);if(!Number.isFinite(b))return String(u);const R=Date.now()-b,U=6e4,K=60*U,F=24*K;return R<U?"刚刚":R<K?`${Math.floor(R/U)} 分钟前`:R<F?`${Math.floor(R/K)} 小时前`:new Date(b).toLocaleDateString()}const A={visible:S,filter:n,loading:g,notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:_,_onOpenEvent:O,filtered:M,refreshList:C,onOpen:j,onItemClick:D,onMarkAllRead:r,formatTime:w,ref:P,computed:v,onMounted:z,onUnmounted:$,get Empty(){return ke},get BellOutlined(){return de},get ReloadOutlined(){return _e},get useNotifications(){return re},get useShellMode(){return N}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},ht={class:"notif-toolbar"},bt={class:"notif-body"},wt={key:2,class:"notif-list"},vt=["onClick"],Lt={class:"notif-row"},St={class:"notif-title"},Ct={class:"notif-time"},Et={key:0,class:"notif-message"};function Tt(i,c,S,n,g,h){const o=k("a-badge"),s=k("a-tooltip"),f=k("a-radio-button"),_=k("a-radio-group"),O=k("a-space"),M=k("a-button"),C=k("a-empty"),j=k("a-spin"),D=k("a-drawer");return p(),L(I,null,[e(s,{title:"通知"},{default:t(()=>[e(o,{count:n.unreadCount,"overflow-count":99,offset:[-4,4]},{default:t(()=>[d("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:n.onOpen},[e(n.BellOutlined)])]),_:1},8,["count"])]),_:1}),e(D,{open:n.visible,"onUpdate:open":c[1]||(c[1]=r=>n.visible=r),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[d("div",ht,[e(O,null,{default:t(()=>[e(_,{value:n.filter,"onUpdate:value":c[0]||(c[0]=r=>n.filter=r),size:"small","button-style":"solid"},{default:t(()=>[e(f,{value:"all"},{default:t(()=>[l("全部 ("+a(n.notifications.length)+")",1)]),_:1}),e(f,{value:"unread"},{default:t(()=>[l("未读 ("+a(n.unreadCount)+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(O,null,{default:t(()=>[e(M,{size:"small",loading:n.loading,onClick:n.refreshList},{icon:t(()=>[e(n.ReloadOutlined)]),_:1},8,["loading"]),e(M,{size:"small",disabled:n.unreadCount===0,onClick:n.onMarkAllRead},{default:t(()=>[...c[2]||(c[2]=[l(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),d("div",bt,[!n.loading&&n.filtered.length===0?(p(),B(C,{key:0,description:"暂无通知",image:n.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):n.loading?(p(),B(j,{key:1,style:{display:"block",padding:"60px"}})):(p(),L("ul",wt,[(p(!0),L(I,null,se(n.filtered,r=>(p(),L("li",{key:r.id,class:W(["notif-item",{unread:!r.is_read}]),onClick:w=>n.onItemClick(r)},[d("div",Lt,[d("div",St,a(r.title||r.message||"(无标题)"),1),d("span",Ct,a(n.formatTime(r.created_at)),1)]),r.message&&r.title?(p(),L("div",Et,a(r.message),1)):m("v-if",!0)],10,vt))),128))]))])]),_:1},8,["open"])],64)}const At=Z(Ot,[["render",Tt],["__scopeId","data-v-8c1554dd"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/NotificationBell.vue"]]),Bt={__name:"MobileBridgeHeaderStatus",setup(i,{expose:c}){c();function S(r){if(!r)return[];try{return JSON.parse(r)}catch{}const w=String(r).split(`
2
- `),A=w.findIndex(u=>{const b=u.trim();if(!b)return!1;const R=b[0];if(R!=="["&&R!=="{")return!1;if(b.length===1)return!0;const U=b[1];return!(U>="A"&&U<="Z"||U>="a"&&U<="z")});if(A<0)return[];for(let u=w.length-1;u>=A;u--){const b=w[u].trim();if(/^[\]\}]/.test(b)&&!/^[\]\}][A-Za-z]/.test(b))try{return JSON.parse(w.slice(A,u+1).join(`
3
- `))}catch{return[]}}return[]}const n=J(),g=H(),h=P([]);let o=null;const s=v(()=>h.value.length),f=v(()=>h.value.filter(r=>M(r)).length),_=v(()=>s.value===0?"var(--text-muted, #999)":"#52c41a"),O=v(()=>s.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${s.value} 台手机 — 点击进入管理`);function M(r){if(!r)return!1;if(typeof r.online=="boolean")return r.online;const w=(r.status||"").toLowerCase();return w==="online"||w==="connected"||w==="active"||w==="paired"}async function C(){if(g.status==="connected")try{const{output:r}=await g.execute("p2p devices --type mobile --json",1e4);h.value=S(r)||[]}catch{}}function j(){n.push("/mobile-bridge")}z(()=>{C(),o=setInterval(C,5e3)}),ee(()=>{o&&(clearInterval(o),o=null)});const D={parseJsonOutput:S,router:n,ws:g,devices:h,get pollTimer(){return o},set pollTimer(r){o=r},totalCount:s,onlineCount:f,iconColor:_,tooltip:O,isOnline:M,refresh:C,onClick:j,ref:P,computed:v,onMounted:z,onBeforeUnmount:ee,get useRouter(){return J},get MobileOutlined(){return ue},get useWsStore(){return H}};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}},Mt={key:0,class:"mbh-count"};function Rt(i,c,S,n,g,h){const o=k("a-badge"),s=k("a-tooltip");return p(),B(s,{title:n.tooltip},{default:t(()=>[e(o,{count:n.totalCount,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[d("button",{type:"button",class:W(["mbh-btn",{"mbh-btn--active":n.totalCount>0}]),onClick:n.onClick},[e(n.MobileOutlined,{style:fe({color:n.iconColor,fontSize:"14px"})},null,8,["style"]),n.totalCount>0?(p(),L("span",Mt,a(n.totalCount),1)):m("v-if",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}const Pt=Z(Bt,[["render",Rt],["__scopeId","data-v-e8ef01d6"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/MobileBridgeHeaderStatus.vue"]]),Y="cc.web-panel.sidebar.openKeys",jt={__name:"AppLayout",setup(i,{expose:c}){c();const S=J(),n=te(),g=H(),h=oe(),{t:o}=ie(),s=N(),f=P(!1),_=window.__CC_CONFIG__||{},O=v(()=>_.mode==="project"),M="v5.0.3.134",C=v(()=>h.current),j=v(()=>h.config.vars["--menu-mode"]),D=v(()=>{const y=n.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[y]||y]}),r=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function w(){try{const y=localStorage.getItem(Y);if(y){const E=JSON.parse(y);if(Array.isArray(E))return E.filter(q=>r.includes(q))}}catch{}return[...r]}const A=P(w());ne(A,y=>{try{localStorage.setItem(Y,JSON.stringify(y))}catch{}},{deep:!0});const u=v(()=>g.status),b=v(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[g.status]||"default"),R=v(()=>{const y=`appLayout.footerStatus.${g.status}`,E=o(y);return E===y?o("appLayout.footerStatus.unknown"):E});function U(y){h.setTheme(y)}const{current:K,supported:F,setLocale:Q}=ae();function ce(){const y=F[(F.indexOf(K.value)+1)%F.length];Q(y)}async function X(y){try{const E=await g.sendRaw({type:"window.open",role:y},1e4);if(E?.ok===!1){V.error(`打开失败:${E.error||"未知"}`);return}const q=E?.result??E;q?.reason==="role_reserved"?V.warning("该窗口角色被保留"):q?.reason}catch(E){V.error(`打开桌面窗口失败:${E.message||E}`)}}async function ye(){le.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const y=await g.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(y?.ok===!1)throw new Error(y.error||"shell.switch returned failure");V.loading({content:"正在重启…",duration:0})}catch(y){const E=y instanceof Error?y.message:String(y);V.error("切换失败:"+E)}}})}function pe({key:y}){if(typeof y=="string"&&y.startsWith("desktop:")){X(y);return}S.push({mcp:"/mcp"}[y]||`/${y}`)}z(()=>g.connect());const x={router:S,route:n,ws:g,themeStore:h,t:o,shellMode:s,collapsed:f,cfg:_,isProject:O,PRODUCT_VERSION:M,currentTheme:C,menuTheme:j,selectedKeys:D,ALL_GROUP_KEYS:r,OPEN_KEYS_LS:Y,loadOpenKeys:w,openKeys:A,wsStatus:u,statusBadge:b,statusText:R,setTheme:U,locale:K,SUPPORTED_LOCALES:F,setLocale:Q,toggleLocale:ce,openDesktopWindow:X,switchToDesktopShell:ye,onMenuClick:pe,ref:P,computed:v,onMounted:z,watch:ne,get useRouter(){return J},get useRoute(){return te},get DashboardOutlined(){return gt},get MessageOutlined(){return kt},get RocketOutlined(){return mt},get AppstoreOutlined(){return ft},get ApiOutlined(){return pt},get FolderOutlined(){return yt},get GlobalOutlined(){return ct},get InfoCircleOutlined(){return ut},get ControlOutlined(){return dt},get FileTextOutlined(){return st},get CloudServerOutlined(){return rt},get BookOutlined(){return lt},get BranchesOutlined(){return at},get ClockCircleOutlined(){return it},get ThunderboltOutlined(){return ot},get ApartmentOutlined(){return nt},get SafetyCertificateOutlined(){return tt},get LockOutlined(){return et},get WifiOutlined(){return $e},get CodeOutlined(){return xe},get ProjectOutlined(){return Xe},get WalletOutlined(){return Qe},get TeamOutlined(){return Ze},get BarChartOutlined(){return Ye},get BlockOutlined(){return Je},get CloudUploadOutlined(){return qe},get ReadOutlined(){return He},get KeyOutlined(){return Ge},get VideoCameraOutlined(){return ze},get ShareAltOutlined(){return We},get IdcardOutlined(){return Ve},get UsergroupAddOutlined(){return Fe},get ShoppingOutlined(){return Ke},get SwapOutlined(){return Ie},get AlertOutlined(){return Ne},get SafetyOutlined(){return Ue},get ExperimentOutlined(){return De},get DeploymentUnitOutlined(){return je},get BulbOutlined(){return Pe},get BankOutlined(){return Re},get PartitionOutlined(){return Me},get AuditOutlined(){return Be},get FileSearchOutlined(){return Ae},get TrophyOutlined(){return Te},get FireOutlined(){return Ee},get SearchOutlined(){return Ce},get NumberOutlined(){return Se},get ClusterOutlined(){return Le},get SoundOutlined(){return ve},get DesktopOutlined(){return we},get BellOutlined(){return de},get SyncOutlined(){return be},get MobileOutlined(){return ue},get DatabaseOutlined(){return he},get UnorderedListOutlined(){return Oe},get message(){return V},get Modal(){return le},get useWsStore(){return H},get useThemeStore(){return oe},get THEMES(){return ge},get logoSrc(){return _t},get useShellMode(){return N},get useI18n(){return ie},get useLocale(){return ae},NotificationBell:At,MobileBridgeHeaderStatus:Pt};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},Dt=["src"],Ut={key:0,class:"logo-text"},Nt={key:0,class:"mode-banner project"},It={class:"banner-info"},Kt={class:"banner-name"},Ft={class:"banner-sub"},Vt={key:1,class:"mode-banner global"},Wt={class:"banner-name"},zt=["title"],Gt={class:"group-label"},Ht={class:"group-label"},qt={class:"group-label"},Jt={class:"group-label"},Yt={class:"group-label"},Zt={class:"group-label"},Qt={class:"group-label"},Xt={class:"group-label"},xt={class:"group-label"},$t={key:0,class:"footer-text"},en={class:"header-left"},tn={class:"header-right"},nn={class:"theme-switcher"},on=["data-theme-key","onClick"],an=["data-locale"],ln={class:"lang-switch-label"},rn={class:"version-tag"};function sn(i,c,S,n,g,h){const o=k("a-menu-item"),s=k("a-sub-menu"),f=k("a-menu-divider"),_=k("a-menu"),O=k("a-badge"),M=k("a-layout-sider"),C=k("a-tooltip"),j=k("a-tag"),D=k("a-layout-header"),r=k("router-view"),w=k("a-layout-content"),A=k("a-layout");return p(),B(A,{class:"app-root"},{default:t(()=>[m(" ── Sidebar ─────────────────────────────────────────────────── "),e(M,{collapsed:n.collapsed,"onUpdate:collapsed":c[2]||(c[2]=u=>n.collapsed=u),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[m(" Logo "),d("div",{class:W(["logo",{collapsed:n.collapsed}])},[d("img",{src:n.logoSrc,alt:"ChainlessChain",class:"logo-icon"},null,8,Dt),n.collapsed?m("v-if",!0):(p(),L("span",Ut,"ChainlessChain"))],2),m(" Mode banner "),n.collapsed?(p(),L("div",{key:1,class:"mode-icon-sm",title:n.isProject?n.cfg.projectName:i.$t("appLayout.scope.global")},[n.isProject?(p(),B(n.FolderOutlined,{key:0,style:{color:"#1677ff"}})):(p(),B(n.GlobalOutlined,{key:1,style:{color:"#722ed1"}}))],8,zt)):(p(),L(I,{key:0},[n.isProject?(p(),L("div",Nt,[e(n.FolderOutlined,{class:"banner-icon"}),d("div",It,[d("div",Kt,a(n.cfg.projectName||i.$t("appLayout.scope.fallbackProject")),1),d("div",Ft,a(i.$t("appLayout.scope.projectPanel")),1)])])):(p(),L("div",Vt,[e(n.GlobalOutlined,{class:"banner-icon"}),d("span",Wt,a(i.$t("appLayout.scope.global")),1)]))],64)),m(" Navigation "),e(_,{selectedKeys:n.selectedKeys,"onUpdate:selectedKeys":c[0]||(c[0]=u=>n.selectedKeys=u),openKeys:n.openKeys,"onUpdate:openKeys":c[1]||(c[1]=u=>n.openKeys=u),theme:n.menuTheme,mode:"inline","inline-collapsed":n.collapsed,class:"side-menu",onClick:n.onMenuClick},{default:t(()=>[n.collapsed?(p(),L(I,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(n.RocketOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),n.shellMode.isEmbedded?(p(),L(I,{key:0},[e(f,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),_:1})],64)):m("v-if",!0)],64)):(p(),L(I,{key:0},[e(s,{key:"g-overview"},{title:t(()=>[d("span",Gt,a(i.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(s,{key:"g-config"},{title:t(()=>[d("span",Ht,a(i.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(s,{key:"g-data"},{title:t(()=>[d("span",qt,a(i.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),default:t(()=>[c[3]||(c[3]=l("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),default:t(()=>[c[4]||(c[4]=l("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[c[5]||(c[5]=l("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(n.RocketOutlined)]),default:t(()=>[c[6]||(c[6]=l("后台 Agent",-1))]),_:1})]),_:1}),e(s,{key:"g-advanced"},{title:t(()=>[d("span",Jt,a(i.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(n.DesktopOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(s,{key:"g-enterprise"},{title:t(()=>[d("span",Yt,a(i.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(s,{key:"g-social"},{title:t(()=>[d("span",Zt,a(i.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(s,{key:"g-media"},{title:t(()=>[d("span",Qt,a(i.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(n.VideoCameraOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(s,{key:"g-extension"},{title:t(()=>[d("span",Xt,a(i.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),m(` Desktop-only group — only shown in the embedded web-shell. Each
4
- click opens a new BrowserWindow loading the V5/V6 desktop
5
- renderer (full electronAPI / UKey / FS / settings live there). `),n.shellMode.isEmbedded?(p(),B(s,{key:"g-desktop"},{title:t(()=>[d("span",xt,a(i.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):m("v-if",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),m(" Connection status "),d("div",{class:W(["sidebar-footer",{collapsed:n.collapsed}])},[e(O,{status:n.statusBadge},null,8,["status"]),n.collapsed?m("v-if",!0):(p(),L("span",$t,a(n.statusText),1))],2)]),_:1},8,["collapsed"]),m(" ── Main area ───────────────────────────────────────────────── "),e(A,{class:"main-area"},{default:t(()=>[m(" Header "),e(D,{class:"app-header"},{default:t(()=>[d("div",en,[d("div",{class:W(["scope-tag",n.isProject?"project":"global"])},[(p(),B(me(n.isProject?n.FolderOutlined:n.GlobalOutlined))),d("span",null,a(n.isProject?n.cfg.projectName||i.$t("appLayout.scope.fallbackProject"):i.$t("appLayout.scope.global")),1),n.isProject&&n.cfg.projectRoot?(p(),B(C,{key:0,title:n.cfg.projectRoot},{default:t(()=>[e(n.InfoCircleOutlined,{class:"info-icon"})]),_:1},8,["title"])):m("v-if",!0)],2)]),d("div",tn,[m(" Theme switcher "),d("div",nn,[(p(!0),L(I,null,se(n.THEMES,(u,b)=>(p(),B(C,{key:b,title:u.label},{default:t(()=>[d("button",{class:W(["theme-btn",{active:n.currentTheme===b}]),"data-theme-key":b,onClick:R=>n.setTheme(b)},a(u.icon),11,on)]),_:2},1032,["title"]))),128))]),m(` Language switcher (incremental i18n; only owns its own
6
- labels + ErrorBoundary + common.* today). `),e(C,{title:i.$t("language.label")},{default:t(()=>[d("button",{class:"lang-switch-btn","data-locale":n.locale,onClick:n.toggleLocale},[e(n.GlobalOutlined,{class:"lang-switch-icon"}),d("span",ln,a(i.$t("language.switch")),1)],8,an)]),_:1},8,["title"]),m(" Mobile bridge status — pill showing online/total paired phones.\n Click to /mobile-bridge. Polls every 5s via `p2p devices` CLI. "),e(n.MobileBridgeHeaderStatus),m(` Notification bell — only meaningful in the embedded web-shell
7
- where notification.* WS topics are registered. In pure-browser
8
- mode the composable returns empty / no-op shapes, so the badge
9
- just shows 0 and the drawer is empty. `),n.shellMode.isEmbedded?(p(),B(n.NotificationBell,{key:0})):m("v-if",!0),d("span",rn,a(n.PRODUCT_VERSION),1),m(" Phase 1.6 symmetric switch: only inside the embedded\n desktop shell does this make sense (no-op in `cc serve`\n browser mode where there's no V5/V6 to fall back to). "),n.shellMode.isEmbedded?(p(),B(C,{key:1,title:i.$t("appLayout.shellSwitch")},{default:t(()=>[d("button",{type:"button",class:"shell-switch-btn",onClick:n.switchToDesktopShell},[e(n.DesktopOutlined)])]),_:1},8,["title"])):m("v-if",!0),e(j,{color:n.wsStatus==="connected"?"green":n.wsStatus==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[l(a(n.wsStatus==="connected"?i.$t("appLayout.wsStatus.connected"):n.wsStatus==="connecting"?i.$t("appLayout.wsStatus.connecting"):i.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),m(" Content "),e(w,{class:"page-content"},{default:t(()=>[e(r)]),_:1})]),_:1})]),_:1})}const Pn=Z(jt,[["render",sn],["__scopeId","data-v-6f6437fc"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/AppLayout.vue"]]);export{Pn as default};
@@ -1 +0,0 @@
1
- .cb-action[data-v-318f1edb]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:var(--bg-card-hover);border:1px solid var(--border-color);color:var(--text-secondary);-webkit-user-select:none;user-select:none}.cb-action--expandable[data-v-318f1edb]{cursor:pointer;transition:border-color .15s ease}.cb-action--expandable[data-v-318f1edb]:hover{border-color:#1677ff40}.cb-action--open[data-v-318f1edb]{border-color:#1677ff60}.cb-action__icon[data-v-318f1edb]{display:inline-flex;align-items:center;justify-content:center;color:#52c41a;font-size:14px}.cb-action--running .cb-action__icon[data-v-318f1edb]{color:#1677ff}.cb-action--pending .cb-action__icon[data-v-318f1edb]{color:var(--text-muted)}.cb-action__label[data-v-318f1edb]{font-weight:600;color:var(--text-primary);font-size:13px}.cb-action__detail[data-v-318f1edb]{margin-left:auto;font-size:12px;color:var(--text-secondary);max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cb-action__caret[data-v-318f1edb]{margin-left:6px;color:var(--text-muted);font-size:10px}.cb-action--open .cb-action__caret[data-v-318f1edb]{color:#1677ff}.markdown-content[data-v-0b0b9f63] pre{background:var(--bg-base);border-radius:6px;padding:12px;overflow-x:auto;font-size:12px}.markdown-content[data-v-0b0b9f63] code:not(pre code){background:var(--bg-card-hover);padding:1px 5px;border-radius:3px;font-size:12px;color:#f0a500}.markdown-content[data-v-0b0b9f63] p{margin:0 0 8px}.markdown-content[data-v-0b0b9f63] p:last-child{margin:0}.markdown-content[data-v-0b0b9f63] table{border-collapse:collapse;width:100%;font-size:13px}.markdown-content[data-v-0b0b9f63] th,.markdown-content[data-v-0b0b9f63] td{border:1px solid #333;padding:6px 12px}.markdown-content[data-v-0b0b9f63] th{background:var(--bg-card-hover)}.virtual-message-list[data-v-ff0bed80]{height:100%;overflow-y:auto;overflow-x:hidden}.fallback-list[data-v-ff0bed80]{width:100%}.virtual-message-list[data-v-ff0bed80]::-webkit-scrollbar{width:6px}.virtual-message-list[data-v-ff0bed80]::-webkit-scrollbar-track{background:transparent}.virtual-message-list[data-v-ff0bed80]::-webkit-scrollbar-thumb{background:var(--border-color, #c1c1c1);border-radius:3px}.virtual-message-list[data-v-ff0bed80]::-webkit-scrollbar-thumb:hover{background:var(--text-muted, #a8a8a8)}.intent-confirmation-message[data-v-62ebcfe5]{padding:16px;margin:12px 0;background:linear-gradient(135deg,#1890ff14,#1890ff05);border-left:4px solid #1890ff;border-radius:8px}.confirmation-header[data-v-62ebcfe5]{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(24,144,255,.2)}.header-icon[data-v-62ebcfe5]{font-size:20px}.header-text[data-v-62ebcfe5]{font-size:15px;font-weight:600;color:#1890ff}.understanding-content[data-v-62ebcfe5]{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.original-input[data-v-62ebcfe5],.corrected-input[data-v-62ebcfe5],.intent-section[data-v-62ebcfe5],.key-points-section[data-v-62ebcfe5],.correction-section[data-v-62ebcfe5]{display:flex;flex-direction:column;gap:6px}.label[data-v-62ebcfe5]{font-size:13px;font-weight:600;color:var(--text-secondary, #aaa)}.value[data-v-62ebcfe5]{font-size:14px;color:var(--text-primary, #ddd);line-height:1.6}.original-text[data-v-62ebcfe5]{padding:8px 12px;background:#ffffff0a;border-radius:6px;border:1px dashed var(--border-color, #555);text-decoration:line-through;color:var(--text-muted, #888)}.corrected-text[data-v-62ebcfe5]{padding:8px 12px;background:#52c41a14;border-radius:6px;border:1px solid #52c41a;font-weight:500}.correction-text[data-v-62ebcfe5]{padding:8px 12px;background:#faad1414;border-radius:6px;border:1px solid #faad14;font-weight:500}.key-points-list[data-v-62ebcfe5]{margin:0;padding-left:20px;list-style:disc}.key-points-list li[data-v-62ebcfe5]{margin:4px 0;font-size:14px;line-height:1.6}.action-buttons[data-v-62ebcfe5]{display:flex;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid rgba(24,144,255,.2)}.streaming-indicator[data-v-62ebcfe5]{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid rgba(24,144,255,.2);font-size:13px;color:var(--text-secondary, #aaa)}.streaming-tokens[data-v-62ebcfe5]{font-size:11px;color:var(--text-muted, #888)}.correction-input-section[data-v-62ebcfe5]{margin-top:16px;padding-top:16px;border-top:1px solid rgba(24,144,255,.2)}.correction-actions[data-v-62ebcfe5]{display:flex;gap:8px;margin-top:12px}.session-item[data-v-ef077a5e]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:background .15s;margin-bottom:4px}.session-item[data-v-ef077a5e]:hover{background:var(--bg-card-hover)}.session-item.active[data-v-ef077a5e]{background:#1677ff20;border:1px solid #1677ff40}.session-icon[data-v-ef077a5e]{font-size:16px}.session-info[data-v-ef077a5e]{flex:1;min-width:0}.session-title[data-v-ef077a5e]{color:#ccc;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-meta[data-v-ef077a5e]{color:var(--text-muted);font-size:11px;margin-top:2px}.chat-header[data-v-ef077a5e]{display:flex;align-items:center;justify-content:flex-start;gap:16px;padding:10px 16px;border-bottom:1px solid var(--border-color);flex-shrink:0}.chat-intent-toggle[data-v-ef077a5e]{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.chat-intent-toggle-label[data-v-ef077a5e]{font-size:12px;color:var(--text-muted)}.chat-area-body[data-v-ef077a5e]{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:16px 20px 0}.empty-hint[data-v-ef077a5e]{font-size:12px;color:var(--text-muted);margin-top:-4px}.chat-virtual-list[data-v-ef077a5e]{flex:1}.chat-empty-prompts[data-v-ef077a5e]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);gap:12px}.empty-icon[data-v-ef077a5e]{font-size:40px}.empty-title[data-v-ef077a5e]{font-size:14px;color:var(--text-secondary, #aaa)}.quick-prompts[data-v-ef077a5e]{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:480px;margin-top:8px}.quick-prompt-btn[data-v-ef077a5e]{font-size:12px}.message-row[data-v-ef077a5e]{margin-bottom:16px;padding:0 4px}.msg-with-avatar[data-v-ef077a5e]{display:flex;gap:10px;align-items:flex-start}.msg-with-avatar.user[data-v-ef077a5e]{flex-direction:row-reverse}.msg-with-avatar.user .msg-meta-row[data-v-ef077a5e]{justify-content:flex-end}.msg-with-avatar.user .msg-body[data-v-ef077a5e]{display:flex;flex-direction:column;align-items:flex-end}.msg-body[data-v-ef077a5e]{flex:1;min-width:0;max-width:calc(100% - 50px)}.msg-meta-row[data-v-ef077a5e]{display:flex;gap:6px;align-items:baseline;font-size:11px;color:var(--text-muted);margin-bottom:4px}.msg-role[data-v-ef077a5e]{color:var(--text-secondary, #aaa);font-weight:500}.msg-time[data-v-ef077a5e],.msg-tokens[data-v-ef077a5e]{font-size:10px}.bubble[data-v-ef077a5e]{padding:10px 14px;border-radius:12px;max-width:100%;line-height:1.6;font-size:14px;word-wrap:break-word}.bubble.user[data-v-ef077a5e]{background:#1677ff;color:var(--text-primary);border-bottom-right-radius:4px}.bubble.assistant[data-v-ef077a5e]{background:var(--bg-card-hover);color:var(--text-primary);border-bottom-left-radius:4px}.bubble.streaming[data-v-ef077a5e]:after{content:"▋";animation:blink-ef077a5e .7s step-start infinite;color:#1677ff}@keyframes blink-ef077a5e{50%{opacity:0}}.system-banner[data-v-ef077a5e]{margin:8px 0;padding:10px 14px;background:var(--bg-card-hover);border-left:3px solid #722ed1;border-radius:6px;font-size:13px;color:var(--text-secondary, #aaa);white-space:pre-wrap}.tool-msg[data-v-ef077a5e]{margin:8px 0}.tool-detail[data-v-ef077a5e]{margin-top:6px;padding:10px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-base)}.tool-detail__result[data-v-ef077a5e]{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.tool-detail__pre[data-v-ef077a5e]{margin:0;font-size:11px;white-space:pre-wrap;word-break:break-all}.tool-detail__pre--input[data-v-ef077a5e]{color:#aaa}.tool-detail__pre--result[data-v-ef077a5e]{color:#52c41a}.question-card[data-v-ef077a5e]{background:var(--bg-card-hover);border:1px solid #1677ff40;border-radius:10px;padding:14px 16px;margin-top:8px}.question-text[data-v-ef077a5e]{color:#aaa;font-size:13px}[data-v-ef077a5e] .bubble.assistant pre{background:var(--bg-base);border-radius:6px;padding:12px;overflow-x:auto;font-size:12px}[data-v-ef077a5e] .bubble.assistant code:not(pre code){background:var(--bg-card-hover);padding:1px 5px;border-radius:3px;font-size:12px;color:#f0a500}[data-v-ef077a5e] .bubble.assistant p{margin:0 0 8px}[data-v-ef077a5e] .bubble.assistant p:last-child{margin:0}
@@ -1 +0,0 @@
1
- import{I as b,J as g,U as O,R as d,c as n,K as t,V as f,S,o as ae,a as Z,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-Bn1JzzAn.js";import{t as X,_ as he,b as oe,u as ie,d as p}from"./index-DPguq3X7.js";import{a0 as Ce,f as Fe,$ as Te,a3 as we,as as Oe,R as Ae}from"./icons-DEmcnxBf.js";const Me=Object.freeze(["online","offline","busy","degraded"]),Ne=Object.freeze(["queued","dispatched","running","complete","failed"]),ze=Object.freeze(["standard","encrypted","federated"]);function F(s,l=0){return typeof s=="number"&&Number.isFinite(s)?s:l}function Ie(s){if(Array.isArray(s))return s.filter(l=>typeof l=="string");if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l))return l.filter(a=>typeof a=="string")}catch{}return[]}function Le(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Ie(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:l}:null}function re(s){const l=X(s);return Array.isArray(l)?l.map(Le).filter(Boolean):[]}function je(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:l}:null}function le(s){const l=X(s);return Array.isArray(l)?l.map(je).filter(Boolean):[]}const Ue={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const l=JSON.parse(JSON.stringify(Ue)),a=X(s);return!a||typeof a!="object"||Array.isArray(a)||(a.nodes&&typeof a.nodes=="object"&&(l.nodes.total=F(a.nodes.total,0),l.nodes.online=F(a.nodes.online,0),l.nodes.offline=F(a.nodes.offline,0),l.nodes.busy=F(a.nodes.busy,0)),a.tasks&&typeof a.tasks=="object"&&(l.tasks.total=F(a.tasks.total,0),l.tasks.queued=F(a.tasks.queued,0),l.tasks.completed=F(a.tasks.completed,0),l.tasks.failed=F(a.tasks.failed,0),l.tasks.avgDurationMs=F(a.tasks.avgDurationMs??a.tasks.avg_duration_ms,0))),l}function Re(s){if(s==null||s==="")return"—";const l=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(l.getTime())?String(s):l.toLocaleString("zh-CN",{hour12:!1})}const De={__name:"Inference",setup(s,{expose:l}){l();const{t:a}=oe(),e=ie(),H=_(!1),K=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),w=_(!1),j=_(!1),k=Z({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Z({model:"",input:"",priority:5,mode:"standard"}),J=V(()=>[{title:a("inference.nodeColumns.nodeId"),key:"nodeId"},{title:a("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:a("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:a("inference.nodeColumns.status"),key:"status",width:"100px"},{title:a("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:a("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:a("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:a("inference.taskColumns.model"),key:"model"},{title:a("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:a("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:a("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:a("inference.taskColumns.status"),key:"status",width:"110px"},{title:a("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:a("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:a("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(i=>i.status===q.value)),C.value&&(o=o.filter(i=>i.privacyMode===C.value)),o});function B(o){const i=`inference.nodeStatus.${o}`,y=a(i);return y===i?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const i=`inference.taskStatus.${o}`,y=a(i);return y===i?o:y}function Q(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function r(o){const i=`inference.privacy.${o}`,y=a(i);return y===i?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const i=I.value.find(y=>y.id===o);return i?i.nodeId:o.slice(0,8)}function ce(o,i){return o?o.length>i?o.slice(0,i)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?w.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,i,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=re(o.output),D.value=le(i.output),L.value=se(y.output)}catch(o){p.error(a("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(a("inference.messages.nodeIdRequired"));return}K.value=!0;try{const i=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&i.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&i.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&i.push(`--gpu ${k.gpuMemory}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(a("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.registerOk")),w.value=!1,$(),await z()}catch(i){p.error(a("inference.messages.registerFailed",{err:i?.message||i}))}finally{K.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(a("inference.messages.modelRequired"));return}T.value=!0;try{const i=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&i.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&i.push(`--priority ${v.priority}`),i.push(`--mode ${v.mode}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(a("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(i){p.error(a("inference.messages.submitFailed",{err:i?.message||i}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:i}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"updated"/.test(i)){p.error(a("inference.messages.heartbeatFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.heartbeatOk")),await z()}catch(i){p.error(a("inference.messages.heartbeatFailed",{err:i?.message||i}))}finally{U.value=""}}async function ke(o,i){if(i!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${i} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(a("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.statusOk",{status:B(i)})),await z()}catch(y){p.error(a("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:i}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"removed"/.test(i)){p.error(a("inference.messages.unregisterFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.unregisterOk")),await z()}catch(i){p.error(a("inference.messages.unregisterFailed",{err:i?.message||i}))}}async function ve(o){R.value=o.id;try{const{output:i}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(i)&&!/"completed"/.test(i)){p.error(a("inference.messages.completeFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.completeOk")),await z()}catch(i){p.error(a("inference.messages.completeFailed",{err:i?.message||i}))}finally{R.value=""}}async function xe(o){try{const{output:i}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"failed"/.test(i)){p.error(a("inference.messages.failFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.failOk")),await z()}catch(i){p.error(a("inference.messages.failFailed",{err:i?.message||i}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:a,ws:e,loading:H,registering:K,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:w,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:J,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Q,privacyLabel:r,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Z,get useI18n(){return oe},get ReloadOutlined(){return Ae},get PlusOutlined(){return Oe},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Te},get CheckCircleOutlined(){return Fe},get ClockCircleOutlined(){return Ce},get message(){return p},get useWsStore(){return ie},get parseNodes(){return re},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return Re},get NODE_STATUSES(){return Me},get TASK_STATUSES(){return Ne},get PRIVACY_MODES(){return ze}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},qe={class:"page-sub"},Be={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},Ve={class:"filter-bar"},He={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Je={key:1,style:{color:"var(--text-muted)"}},Ye={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ge={key:1,style:{color:"var(--text-muted)"}},We={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ze={class:"filter-bar"},Xe={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},$e={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},tt={key:1,style:{color:"var(--text-muted)"}},nt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},ot={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function rt(s,l,a,e,H,K){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),w=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),J=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Q=b("a-textarea");return c(),g("div",null,[O("div",Pe,[O("div",null,[O("h2",Ee,d(e.t("inference.title")),1),O("p",qe,d(e.t("inference.subtitle")),1)]),n(D,null,{default:t(()=>[n(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[n(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:e.handleNewClick},{default:t(()=>[n(U,{key:"register"},{default:t(()=>[n(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),n(U,{key:"submit"},{default:t(()=>[n(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[n(T,{type:"primary"},{icon:t(()=>[n(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),n(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[n(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[n(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[n(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[n(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:24,sm:8,lg:4},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[n(D,{size:[12,8],wrap:""},{default:t(()=>[n(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),n(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),n(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),O("span",Be,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),n(W,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=r=>e.activeTab=r),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),n(J,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[O("div",Ve,[n(j,{value:e.nodeStatusFilter,"onUpdate:value":l[0]||(l[0]=r=>e.nodeStatusFilter=r),size:"small","button-style":"solid"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.nodeStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="nodeId"?(c(),g(h,{key:0},[O("span",He,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Je,"—"))],64)):f("v-if",!0),r.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ye,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",Ge,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),r.key==="lastHeartbeat"?(c(),g("span",We,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:6},[n(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[n(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),n(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",Qe,[n(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),n(J,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[O("div",Ze,[n(j,{value:e.taskStatusFilter,"onUpdate:value":l[1]||(l[1]=r=>e.taskStatusFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.taskStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(j,{value:e.taskPrivacyFilter,"onUpdate:value":l[2]||(l[2]=r=>e.taskPrivacyFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="model"?(c(),g(h,{key:0},[O("span",Xe,d(u.model),1),u.input?(c(),g("div",$e,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),r.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",et,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",tt,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",nt,d(u.durationMs)+" ms ",1)):(c(),g("span",at,"—"))],64)):f("v-if",!0),r.key==="createdAt"?(c(),g("span",ot,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",it,[n(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),n(G,{open:e.showRegisterModal,"onUpdate:open":l[8]||(l[8]=r=>e.showRegisterModal=r),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[n(P,{value:e.registerForm.nodeId,"onUpdate:value":l[4]||(l[4]=r=>e.registerForm.nodeId=r),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[n(P,{value:e.registerForm.endpoint,"onUpdate:value":l[5]||(l[5]=r=>e.registerForm.endpoint=r),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[n(P,{value:e.registerForm.capabilities,"onUpdate:value":l[6]||(l[6]=r=>e.registerForm.capabilities=r),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[n(B,{value:e.registerForm.gpuMemory,"onUpdate:value":l[7]||(l[7]=r=>e.registerForm.gpuMemory=r),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),n(G,{open:e.showSubmitModal,"onUpdate:open":l[13]||(l[13]=r=>e.showSubmitModal=r),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[n(P,{value:e.submitForm.model,"onUpdate:value":l[9]||(l[9]=r=>e.submitForm.model=r),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[n(Q,{value:e.submitForm.input,"onUpdate:value":l[10]||(l[10]=r=>e.submitForm.input=r),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[n(B,{value:e.submitForm.priority,"onUpdate:value":l[11]||(l[11]=r=>e.submitForm.priority=r),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[n(j,{value:e.submitForm.mode,"onUpdate:value":l[12]||(l[12]=r=>e.submitForm.mode=r)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ct=he(De,[["render",rt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Inference.vue"]]);export{ct as default};
@@ -1 +0,0 @@
1
- import{I as p,J as f,U as C,R as u,c as l,K as r,V as b,o as ae,a as Y,b as U,r as y,P as i,Q as _,F as x,Z as V,S as T}from"./vendor-Bn1JzzAn.js";import{t as $,_ as me,u as le,b as oe,d as h}from"./index-DPguq3X7.js";import{a0 as ve,a$ as fe,$ as be,f as ke,a9 as _e,z as ye,R as ge}from"./icons-DEmcnxBf.js";const he=Object.freeze(["draft","published","deprecated","suspended"]),Se=Object.freeze(["pending","running","success","failed","timeout"]);function B(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function Ce(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),version:String(t.version||""),description:String(t.description||""),endpoint:t.endpoint||"",pricing:t.pricing??null,status:String(t.status||"draft").toLowerCase(),owner:t.owner||"",invocationCount:B(t.invocationCount??t.invocation_count,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function re(t){const o=$(t);return Array.isArray(o)?o.map(Ce).filter(Boolean):[]}function xe(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,serviceId:t.serviceId||t.service_id||"",callerId:t.callerId||t.caller_id||"",input:t.input??null,output:t.output??null,status:String(t.status||"success").toLowerCase(),durationMs:t.durationMs??t.duration_ms??null,error:t.error||"",createdAt:t.createdAt??t.created_at??null,_idx:o}:null}function ne(t){const o=$(t);return Array.isArray(o)?o.map(xe).filter(Boolean):[]}function se(t){const o={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},c=$(t);if(!c||typeof c!="object"||Array.isArray(c))return o;o.total=B(c.total,0),o.successRate=B(c.successRate??c.success_rate,0),o.avgDurationMs=B(c.avgDurationMs??c.avg_duration_ms,0),o.scopedToService=c.scopedToService??c.scoped_to_service??null;const e=c.counts&&typeof c.counts=="object"?c.counts:{};for(const I of Object.keys(o.counts))o.counts[I]=B(e[I],0);return o}function Fe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const we={__name:"Marketplace",setup(t,{expose:o}){o();const c=le(),{t:e}=oe(),I=y(!1),K=y(!1),R=y(!1),O=y([]),F=y([]),w=y({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),A=y("services"),E=y(""),L=y(""),P=y(null),J=y(!1),M=y(!1),k=Y({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),m=Y({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),N=y(""),W=U(()=>[{title:e("marketplace.serviceCols.name"),key:"name"},{title:e("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:e("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:e("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:e("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:e("marketplace.serviceCols.action"),key:"action",width:"180px"}]),q=U(()=>[{title:e("marketplace.invocationCols.service"),key:"service"},{title:e("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:e("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:e("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:e("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),j=U(()=>O.value.filter(n=>n.status==="published").length),D=U(()=>w.value.successRate*100),H=U(()=>{let n=O.value;if(E.value&&(n=n.filter(s=>s.status===E.value)),L.value){const s=L.value.toLowerCase();n=n.filter(v=>v.name.toLowerCase().includes(s))}return n}),z=U(()=>P.value?F.value.filter(n=>n.serviceId===P.value):F.value);function g(n){const s=`marketplace.serviceStatusLabels.${n}`,v=e(s);return v===s?n:v}function Q(n){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[n]||"default"}function Z(n){const s=`marketplace.invocationStatusLabels.${n}`,v=e(s);return v===s?n:v}function G(n){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[n]||"default"}function X(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function a(n,s){return n?n.length>s?n.slice(0,s)+"...":n:""}function d(n){const s=O.value.find(v=>v.id===n);return s?s.name:e("marketplace.deletedService")}async function S(){I.value=!0;try{const[n,s,v]=await Promise.all([c.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);O.value=re(n.output),F.value=ne(s.output),w.value=se(v.output)}catch(n){h.error(e("marketplace.msg.loadFailed")+": "+(n?.message||n))}finally{I.value=!1}}async function ie(){const n=k.name.trim();if(!n){h.warning(e("marketplace.msg.publishEmpty"));return}K.value=!0;try{const s=[`marketplace publish "${n.replace(/"/g,'\\"')}"`];k.version.trim()&&s.push(`--version "${k.version.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&s.push(`--description "${k.description.trim().replace(/"/g,'\\"')}"`),k.endpoint.trim()&&s.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.owner.trim()&&s.push(`--owner "${k.owner.trim().replace(/"/g,'\\"')}"`),s.push(`--status ${k.status}`),s.push("--json");const{output:v}=await c.execute(s.join(" "),15e3);if(/error|failed|失败/i.test(v)&&!/"id"/.test(v)){h.error(e("marketplace.msg.publishFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.publishSuccess")),J.value=!1,ee(),await S()}catch(s){h.error(e("marketplace.msg.publishFailed")+": "+(s?.message||s))}finally{K.value=!1}}function ce(n){if(n.status!=="published"){h.warning(e("marketplace.msg.recordOnlyPublished"));return}m.serviceId=n.id,m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=n.name,M.value=!0}async function ue(){R.value=!0;try{const n=[`marketplace record ${m.serviceId}`];m.caller.trim()&&n.push(`--caller "${m.caller.trim().replace(/"/g,'\\"')}"`),n.push(`--status ${m.status}`),m.durationMs!=null&&n.push(`--duration-ms ${m.durationMs}`),(m.status==="failed"||m.status==="timeout")&&m.error.trim()&&n.push(`--error "${m.error.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:s}=await c.execute(n.join(" "),15e3);if(/error|failed|失败/i.test(s)&&!/"id"/.test(s)){h.error(e("marketplace.msg.recordFailed")+": "+s.slice(0,120));return}h.success(e("marketplace.msg.recordSuccess")),M.value=!1,A.value="invocations",await S()}catch(n){h.error(e("marketplace.msg.recordFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function de(n,s){if(s!==n.status)try{const{output:v}=await c.execute(`marketplace status ${n.id} ${s} --json`,1e4);if(/error|invalid|失败/i.test(v)&&!/"status"/.test(v)){h.error(e("marketplace.msg.transitionFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.transitionSuccess",{label:g(s)})),await S()}catch(v){h.error(e("marketplace.msg.transitionFailed")+": "+(v?.message||v))}}function ee(){k.name="",k.version="",k.description="",k.endpoint="",k.owner="",k.status="published"}function pe(){m.serviceId="",m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=""}ae(S);const te={ws:c,t:e,loading:I,publishing:K,recording:R,services:O,invocations:F,stats:w,activeTab:A,statusFilter:E,nameFilter:L,invocationServiceFilter:P,showPublishModal:J,showRecordModal:M,publishForm:k,recordForm:m,recordTargetName:N,serviceColumns:W,invocationColumns:q,publishedCount:j,successRatePct:D,filteredServices:H,filteredInvocations:z,statusLabel:g,serviceStatusColor:Q,invocationStatusLabel:Z,invocationStatusColor:G,shortDid:X,truncate:a,serviceName:d,loadAll:S,publishService:ie,openRecord:ce,recordInvocation:ue,transitionStatus:de,resetPublishForm:ee,resetRecordForm:pe,ref:y,computed:U,onMounted:ae,reactive:Y,get ReloadOutlined(){return ge},get CloudUploadOutlined(){return ye},get AppstoreOutlined(){return _e},get CheckCircleOutlined(){return ke},get ThunderboltOutlined(){return be},get RiseOutlined(){return fe},get ClockCircleOutlined(){return ve},get message(){return h},get useI18n(){return oe},get useWsStore(){return le},get parseServices(){return re},get parseInvocations(){return ne},get parseStats(){return se},get formatMarketplaceTime(){return Fe},get SERVICE_STATUSES(){return he},get INVOCATION_STATUSES(){return Se}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Re={class:"page-title"},Ae={class:"page-sub"},Ie={class:"filter-bar"},Oe={style:{color:"var(--text-primary)","font-weight":"500"}},Me={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},ze={key:2,style:{color:"#722ed1","font-weight":"500"}},Ue={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Le={key:1,style:{color:"var(--text-muted)"}},Ee={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ne={class:"filter-bar"},je={style:{color:"var(--text-primary)"}},De={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ve={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Be={key:1,style:{color:"var(--text-muted)"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:1,style:{color:"var(--text-muted)"}},We={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Qe(t,o,c,e,I,K){const R=p("a-button"),O=p("a-space"),F=p("a-statistic"),w=p("a-card"),A=p("a-col"),E=p("a-row"),L=p("a-radio-button"),P=p("a-radio-group"),J=p("a-input-search"),M=p("a-tag"),k=p("a-menu-item"),m=p("a-menu"),N=p("a-dropdown"),W=p("a-table"),q=p("a-tab-pane"),j=p("a-select-option"),D=p("a-select"),H=p("a-tabs"),z=p("a-input"),g=p("a-form-item"),Q=p("a-textarea"),Z=p("a-form"),G=p("a-modal"),X=p("a-input-number");return i(),f("div",null,[C("div",Te,[C("div",null,[C("h2",Re,u(t.$t("marketplace.title")),1),C("p",Ae,u(t.$t("marketplace.subtitle")),1)]),l(O,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),l(R,{type:"primary",onClick:o[0]||(o[0]=a=>e.showPublishModal=!0)},{icon:r(()=>[l(e.CloudUploadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.publish")),1)]),_:1})]),_:1})]),b(" Stats overview "),l(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.total"),value:e.services.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.published"),value:e.publishedCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.invocations"),value:e.stats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[l(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.successRate"),value:e.successRatePct,suffix:"%",precision:1,"value-style":{color:e.stats.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.avgDuration"),value:e.stats.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),b(" Tabs "),l(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[4]||(o[4]=a=>e.activeTab=a),class:"market-tabs"},{default:r(()=>[b(" ── Services tab ──────────────────────────────────────────── "),l(q,{key:"services",tab:t.$t("marketplace.tabs.services")},{default:r(()=>[C("div",Ie,[l(P,{value:e.statusFilter,"onUpdate:value":o[1]||(o[1]=a=>e.statusFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(L,{value:""},{default:r(()=>[_(u(t.$t("marketplace.filter.all")),1)]),_:1}),(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(L,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(J,{value:e.nameFilter,"onUpdate:value":o[2]||(o[2]=a=>e.nameFilter=a),placeholder:t.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),l(W,{columns:e.serviceColumns,"data-source":e.filteredServices,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="name"?(i(),f(x,{key:0},[C("span",Oe,u(d.name),1),d.version?(i(),T(M,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:r(()=>[_(" v"+u(d.version),1)]),_:2},1024)):b("v-if",!0),d.description?(i(),f("div",Me,u(e.truncate(d.description,80)),1)):b("v-if",!0)],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:1,color:e.serviceStatusColor(d.status)},{default:r(()=>[_(u(e.statusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="invocationCount"?(i(),f("span",ze,u(d.invocationCount),1)):b("v-if",!0),a.key==="owner"?(i(),f(x,{key:3},[d.owner?(i(),f("span",Ue,u(e.shortDid(d.owner)),1)):(i(),f("span",Le,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",Ee,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0),a.key==="action"?(i(),f(x,{key:5},[l(R,{size:"small",type:"link",onClick:S=>e.openRecord(d)},{default:r(()=>[_(u(t.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),l(N,{trigger:["click"]},{overlay:r(()=>[l(m,{onClick:S=>e.transitionStatus(d,S.key)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,S=>(i(),T(k,{key:S,disabled:S===d.status},{default:r(()=>[_(u(e.statusLabel(S)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:r(()=>[l(R,{size:"small",type:"link"},{default:r(()=>[_(u(t.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("v-if",!0)]),emptyText:r(()=>[C("div",Pe,[l(e.AppstoreOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(e.statusFilter||e.nameFilter?t.$t("marketplace.table.emptyFiltered"):t.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),b(" ── Invocations tab ───────────────────────────────────────── "),l(q,{key:"invocations",tab:t.$t("marketplace.tabs.invocations")},{default:r(()=>[C("div",Ne,[l(D,{value:e.invocationServiceFilter,"onUpdate:value":o[3]||(o[3]=a=>e.invocationServiceFilter=a),placeholder:t.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:r(()=>[(i(!0),f(x,null,V(e.services,a=>(i(),T(j,{key:a.id,value:a.id},{default:r(()=>[_(u(a.name)+" ("+u(e.statusLabel(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),l(W,{columns:e.invocationColumns,"data-source":e.filteredInvocations,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="service"?(i(),f(x,{key:0},[C("span",je,u(e.serviceName(d.serviceId)),1),C("div",De,u(d.serviceId.slice(0,8)),1)],64)):b("v-if",!0),a.key==="caller"?(i(),f(x,{key:1},[d.callerId?(i(),f("span",Ve,u(e.shortDid(d.callerId)),1)):(i(),f("span",Be,"—"))],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:2,color:e.invocationStatusColor(d.status)},{default:r(()=>[_(u(e.invocationStatusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="durationMs"?(i(),f(x,{key:3},[d.durationMs!=null?(i(),f("span",Ke,u(d.durationMs)+" ms ",1)):(i(),f("span",Je,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",We,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0)]),emptyText:r(()=>[C("div",qe,[l(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(t.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),b(" ── Publish service modal ─────────────────────────────────── "),l(G,{open:e.showPublishModal,"onUpdate:open":o[11]||(o[11]=a=>e.showPublishModal=a),title:t.$t("marketplace.publish_modal.title"),"confirm-loading":e.publishing,width:560,"ok-text":t.$t("marketplace.publish_modal.ok"),"cancel-text":t.$t("marketplace.publish_modal.cancel"),onOk:e.publishService,onCancel:e.resetPublishForm},{default:r(()=>[l(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.publish_modal.nameLabel"),required:""},{default:r(()=>[l(z,{value:e.publishForm.name,"onUpdate:value":o[5]||(o[5]=a=>e.publishForm.name=a),placeholder:t.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.versionLabel")},{default:r(()=>[l(z,{value:e.publishForm.version,"onUpdate:value":o[6]||(o[6]=a=>e.publishForm.version=a),placeholder:t.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.descLabel")},{default:r(()=>[l(Q,{value:e.publishForm.description,"onUpdate:value":o[7]||(o[7]=a=>e.publishForm.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.endpointLabel")},{default:r(()=>[l(z,{value:e.publishForm.endpoint,"onUpdate:value":o[8]||(o[8]=a=>e.publishForm.endpoint=a),placeholder:t.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.ownerLabel")},{default:r(()=>[l(z,{value:e.publishForm.owner,"onUpdate:value":o[9]||(o[9]=a=>e.publishForm.owner=a),placeholder:t.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.statusLabel")},{default:r(()=>[l(D,{value:e.publishForm.status,"onUpdate:value":o[10]||(o[10]=a=>e.publishForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),b(" ── Record invocation modal ───────────────────────────────── "),l(G,{open:e.showRecordModal,"onUpdate:open":o[16]||(o[16]=a=>e.showRecordModal=a),title:t.$t("marketplace.record_modal.title",{name:e.recordTargetName}),"confirm-loading":e.recording,width:520,"ok-text":t.$t("marketplace.record_modal.ok"),"cancel-text":t.$t("marketplace.record_modal.cancel"),onOk:e.recordInvocation,onCancel:e.resetRecordForm},{default:r(()=>[l(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.record_modal.callerLabel")},{default:r(()=>[l(z,{value:e.recordForm.caller,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.caller=a),placeholder:t.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.statusLabel")},{default:r(()=>[l(D,{value:e.recordForm.status,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.INVOCATION_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.invocationStatusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.durationLabel")},{default:r(()=>[l(X,{value:e.recordForm.durationMs,"onUpdate:value":o[14]||(o[14]=a=>e.recordForm.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),e.recordForm.status==="failed"||e.recordForm.status==="timeout"?(i(),T(g,{key:0,label:t.$t("marketplace.record_modal.errorLabel")},{default:r(()=>[l(Q,{value:e.recordForm.error,"onUpdate:value":o[15]||(o[15]=a=>e.recordForm.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("v-if",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Xe=me(we,[["render",Qe],["__scopeId","data-v-892f664d"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Marketplace.vue"]]);export{Xe as default};
@@ -1 +0,0 @@
1
- import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as o}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-DPguq3X7.js";import"./icons-DEmcnxBf.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const a=p,e=o(()=>a.event.content||{}),d=o(()=>a.event.extra||{}),m=o(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=o(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=o(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=o(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=o(()=>e.value.status||e.value.state),b=o(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=o(()=>{if(!a.event.occurredAt)return"";const t=new Date(a.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:a,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:o};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},R={class:"val"},B={class:"row"},D={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},K={key:1,class:"row"};function M(p,r,a,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(a.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(a.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",R,n(e.merchantText),1)]),s("div",B,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",D,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",K,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const J=S(k,[["render",M],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{J as default};
@@ -1,4 +0,0 @@
1
- import{E as Ln,r as nt,I as z,J as Tn,U as yt,c as U,K as L,S as lt,V as ve,a8 as Be,b as mt,P as it,Q as P,R as Se,a5 as kn}from"./vendor-Bn1JzzAn.js";import{Q as Un}from"./QrScannerModal-C6B_ndXV.js";import{_ as Nn}from"./index-DPguq3X7.js";import{aw as qn,aB as Cn}from"./icons-DEmcnxBf.js";import"./markdown-CsiA8-E5.js";function Fn(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in e&&e.BYTES_PER_ELEMENT===1}function gt(e,t=""){if(typeof e!="number"){const n=t&&`"${t}" `;throw new TypeError(`${n}expected number, got ${typeof e}`)}if(!Number.isSafeInteger(e)||e<0){const n=t&&`"${t}" `;throw new RangeError(`${n}expected integer >= 0, got ${e}`)}}function W(e,t,n=""){const r=Fn(e),o=e?.length,s=t!==void 0;if(!r||s&&o!==t){const i=n&&`"${n}" `,f=s?` of length ${t}`:"",a=r?`length=${o}`:`type=${typeof e}`,c=i+"expected Uint8Array"+f+", got "+a;throw r?new RangeError(c):new TypeError(c)}return e}function ie(e){if(typeof e!="function"||typeof e.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(gt(e.outputLen),gt(e.blockLen),e.outputLen<1)throw new Error('"outputLen" must be >= 1');if(e.blockLen<1)throw new Error('"blockLen" must be >= 1')}function Ft(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function We(e,t){W(e,void 0,"digestInto() output");const n=t.outputLen;if(e.length<n)throw new RangeError('"digestInto() output" expected to be of length >='+n)}function St(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Vt(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function V(e,t){return e<<32-t|e>>>t}const Qe=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Hn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function ce(e){if(W(e),Qe)return e.toHex();let t="";for(let n=0;n<e.length;n++)t+=Hn[e[n]];return t}const G={_0:48,_9:57,A:65,F:70,a:97,f:102};function _e(e){if(e>=G._0&&e<=G._9)return e-G._0;if(e>=G.A&&e<=G.F)return e-(G.A-10);if(e>=G.a&&e<=G.f)return e-(G.a-10)}function fe(e){if(typeof e!="string")throw new TypeError("hex string expected, got "+typeof e);if(Qe)try{return Uint8Array.fromHex(e)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const t=e.length,n=t/2;if(t%2)throw new RangeError("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=_e(e.charCodeAt(s)),f=_e(e.charCodeAt(s+1));if(i===void 0||f===void 0){const a=e[s]+e[s+1];throw new RangeError('hex string expected, got non-hex character "'+a+'" at index '+s)}r[o]=i*16+f}return r}function Zn(e,t={}){const n=(o,s)=>e(s).update(o).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>e(o),Object.assign(n,t),Object.freeze(n)}function Dn(e=32){gt(e,"bytesLength");const t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(e>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}const $n=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});function zn(e,t,n){return e&t^~e&n}function Yn(e,t,n){return e&t^e&n^t&n}class Mn{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,n,r,o){this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(t),this.view=Vt(this.buffer)}update(t){Ft(this),W(t);const{view:n,buffer:r,blockLen:o}=this,s=t.length;for(let i=0;i<s;){const f=Math.min(o-this.pos,s-i);if(f===o){const a=Vt(t);for(;o<=s-i;i+=o)this.process(a,i);continue}r.set(t.subarray(i,i+f),this.pos),this.pos+=f,i+=f,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Ft(this),We(t,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,St(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let l=i;l<o;l++)n[l]=0;r.setBigUint64(o-8,BigInt(this.length*8),s),this.process(r,0);const f=Vt(t),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=a/4,u=this.get();if(c>u.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<c;l++)f.setUint32(4*l,u[l],s)}digest(){const{buffer:t,outputLen:n}=this;this.digestInto(t);const r=t.slice(0,n);return this.destroy(),r}_cloneInto(t){t||=new this.constructor,t.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:f}=this;return t.destroyed=i,t.finished=s,t.length=o,t.pos=f,o%n&&t.buffer.set(r),t}clone(){return this._cloneInto()}}const J=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jn=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),tt=new Uint32Array(64);class Vn extends Mn{constructor(t){super(64,t,8,!1)}get(){const{A:t,B:n,C:r,D:o,E:s,F:i,G:f,H:a}=this;return[t,n,r,o,s,i,f,a]}set(t,n,r,o,s,i,f,a){this.A=t|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=f|0,this.H=a|0}process(t,n){for(let l=0;l<16;l++,n+=4)tt[l]=t.getUint32(n,!1);for(let l=16;l<64;l++){const w=tt[l-15],p=tt[l-2],m=V(w,7)^V(w,18)^w>>>3,y=V(p,17)^V(p,19)^p>>>10;tt[l]=y+tt[l-7]+m+tt[l-16]|0}let{A:r,B:o,C:s,D:i,E:f,F:a,G:c,H:u}=this;for(let l=0;l<64;l++){const w=V(f,6)^V(f,11)^V(f,25),p=u+w+zn(f,a,c)+jn[l]+tt[l]|0,y=(V(r,2)^V(r,13)^V(r,22))+Yn(r,o,s)|0;u=c,c=a,a=f,f=i+p|0,i=s,s=o,o=r,r=p+y|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,f=f+this.E|0,a=a+this.F|0,c=c+this.G|0,u=u+this.H|0,this.set(r,o,s,i,f,a,c,u)}roundClean(){St(tt)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),St(this.buffer)}}class Xn extends Vn{A=J[0]|0;B=J[1]|0;C=J[2]|0;D=J[3]|0;E=J[4]|0;F=J[5]|0;G=J[6]|0;H=J[7]|0;constructor(){super(32)}}const Ie=Zn(()=>new Xn,$n(1));const rt=(e,t,n)=>W(e,t,n),Je=gt,tn=ce,Kn=e=>fe(e),Pn=e=>Dn(e),Ht=BigInt(0),ee=BigInt(1);function en(e,t=""){if(typeof e!="boolean"){const n=t&&`"${t}" `;throw new TypeError(n+"expected boolean, got type="+typeof e)}return e}function Gn(e){if(typeof e=="bigint"){if(!qt(e))throw new RangeError("positive bigint expected, got "+e)}else Je(e);return e}function Re(e,t=""){if(typeof e!="number"){const n=t&&`"${t}" `;throw new TypeError(n+"expected number, got type="+typeof e)}if(!Number.isSafeInteger(e)){const n=t&&`"${t}" `;throw new RangeError(n+"expected safe integer, got "+e)}}function nn(e){if(typeof e!="string")throw new TypeError("hex string expected, got "+typeof e);return e===""?Ht:BigInt("0x"+e)}function Wn(e){return nn(ce(e))}function _t(e){return nn(ce(It(W(e)).reverse()))}function rn(e,t){if(gt(t),t===0)throw new RangeError("zero length");e=Gn(e);const n=e.toString(16);if(n.length>t*2)throw new RangeError("number too large");return fe(n.padStart(t*2,"0"))}function on(e,t){return rn(e,t).reverse()}function Qn(e,t){if(e=rt(e),t=rt(t),e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}function It(e){return Uint8Array.from(rt(e))}const qt=e=>typeof e=="bigint"&&Ht<=e;function Jn(e,t,n){return qt(e)&&qt(t)&&qt(n)&&t<=e&&e<n}function Zt(e,t,n,r){if(!Jn(t,n,r))throw new RangeError("expected valid "+e+": "+n+" <= n < "+r+", got "+t)}function tr(e){if(e<Ht)throw new Error("expected non-negative bigint, got "+e);let t;for(t=0;e>Ht;e>>=ee,t+=1);return t}const er=e=>(ee<<BigInt(e))-ee;function ae(e,t={},n={}){if(Object.prototype.toString.call(e)!=="[object Object]")throw new TypeError("expected valid options object");function r(s,i,f){if(!f&&i!=="function"&&!Object.hasOwn(e,s))throw new TypeError(`param "${s}" is invalid: expected own property`);const a=e[s];if(f&&a===void 0)return;const c=typeof a;if(c!==i||a===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${c}`)}const o=(s,i)=>Object.entries(s).forEach(([f,a])=>r(f,a,i));o(t,!1),o(n,!0)}const Oe=()=>{throw new Error("not implemented")};const F=BigInt(0),q=BigInt(1),at=BigInt(2),sn=BigInt(3),cn=BigInt(4),fn=BigInt(5),nr=BigInt(7),an=BigInt(8),rr=BigInt(9),un=BigInt(16);function k(e,t){if(t<=F)throw new Error("mod: expected positive modulus, got "+t);const n=e%t;return n>=F?n:t+n}function M(e,t,n){if(t<F)throw new Error("pow2: expected non-negative exponent, got "+t);let r=e;for(;t-- >F;)r*=r,r%=n;return r}function Ae(e,t){if(e===F)throw new Error("invert: expected non-zero number");if(t<=F)throw new Error("invert: expected positive modulus, got "+t);let n=k(e,t),r=t,o=F,s=q;for(;n!==F;){const f=r/n,a=r-n*f,c=o-s*f;r=n,n=a,o=s,s=c}if(r!==q)throw new Error("invert: does not exist");return k(o,t)}function ue(e,t,n){const r=e;if(!r.eql(r.sqr(t),n))throw new Error("Cannot find square root")}function ln(e,t){const n=e,r=(n.ORDER+q)/cn,o=n.pow(t,r);return ue(n,o,t),o}function or(e,t){const n=e,r=(n.ORDER-fn)/an,o=n.mul(t,at),s=n.pow(o,r),i=n.mul(t,s),f=n.mul(n.mul(i,at),s),a=n.mul(i,n.sub(f,n.ONE));return ue(n,a,t),a}function sr(e){const t=le(e),n=dn(e),r=n(t,t.neg(t.ONE)),o=n(t,r),s=n(t,t.neg(r)),i=(e+nr)/un;return((f,a)=>{const c=f;let u=c.pow(a,i),l=c.mul(u,r);const w=c.mul(u,o),p=c.mul(u,s),m=c.eql(c.sqr(l),a),y=c.eql(c.sqr(w),a);u=c.cmov(u,l,m),l=c.cmov(p,w,y);const d=c.eql(c.sqr(l),a),g=c.cmov(u,l,d);return ue(c,g,a),g})}function dn(e){if(e<sn)throw new Error("sqrt is not defined for small field");let t=e-q,n=0;for(;t%at===F;)t/=at,n++;let r=at;const o=le(e);for(;Le(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return ln;let s=o.pow(r,t);const i=(t+q)/at;return function(a,c){const u=a;if(u.is0(c))return c;if(Le(u,c)!==1)throw new Error("Cannot find square root");let l=n,w=u.mul(u.ONE,s),p=u.pow(c,t),m=u.pow(c,i);for(;!u.eql(p,u.ONE);){if(u.is0(p))return u.ZERO;let y=1,d=u.sqr(p);for(;!u.eql(d,u.ONE);)if(y++,d=u.sqr(d),y===l)throw new Error("Cannot find square root");const g=q<<BigInt(l-y-1),h=u.pow(w,g);l=y,w=u.sqr(h),p=u.mul(p,w),m=u.mul(m,h)}return m}}function ir(e){return e%cn===sn?ln:e%an===fn?or:e%un===rr?sr(e):dn(e)}const ct=(e,t)=>(k(e,t)&q)===q,cr=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function fr(e){const t={ORDER:"bigint",BYTES:"number",BITS:"number"},n=cr.reduce((r,o)=>(r[o]="function",r),t);if(ae(e,n),Re(e.BYTES,"BYTES"),Re(e.BITS,"BITS"),e.BYTES<1||e.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(e.ORDER<=q)throw new Error("invalid field: expected ORDER > 1, got "+e.ORDER);return e}function ar(e,t,n){const r=e;if(n<F)throw new Error("invalid exponent, negatives unsupported");if(n===F)return r.ONE;if(n===q)return t;let o=r.ONE,s=t;for(;n>F;)n&q&&(o=r.mul(o,s)),s=r.sqr(s),n>>=q;return o}function hn(e,t,n=!1){const r=e,o=new Array(t.length).fill(n?r.ZERO:void 0),s=t.reduce((f,a,c)=>r.is0(a)?f:(o[c]=f,r.mul(f,a)),r.ONE),i=r.inv(s);return t.reduceRight((f,a,c)=>r.is0(a)?f:(o[c]=r.mul(f,o[c]),r.mul(f,a)),i),o}function Le(e,t){const n=e,r=(n.ORDER-q)/at,o=n.pow(t,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),f=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!f)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function ur(e,t){if(t!==void 0&&Je(t),e<=F)throw new Error("invalid n length: expected positive n, got "+e);if(t!==void 0&&t<1)throw new Error("invalid n length: expected positive bit length, got "+t);const n=tr(e);if(t!==void 0&&t<n)throw new Error(`invalid n length: expected bit length (${n}) >= n.length (${t})`);const r=t!==void 0?t:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const Te=new WeakMap;class pn{ORDER;BITS;BYTES;isLE;ZERO=F;ONE=q;_lengths;_mod;constructor(t,n={}){if(t<=q)throw new Error("invalid field: expected ORDER > 1, got "+t);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=ur(t,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(t){return k(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof t);return F<=t&&t<this.ORDER}is0(t){return t===F}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&q)===q}neg(t){return k(-t,this.ORDER)}eql(t,n){return t===n}sqr(t){return k(t*t,this.ORDER)}add(t,n){return k(t+n,this.ORDER)}sub(t,n){return k(t-n,this.ORDER)}mul(t,n){return k(t*n,this.ORDER)}pow(t,n){return ar(this,t,n)}div(t,n){return k(t*Ae(n,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,n){return t+n}subN(t,n){return t-n}mulN(t,n){return t*n}inv(t){return Ae(t,this.ORDER)}sqrt(t){let n=Te.get(this);return n||Te.set(this,n=ir(this.ORDER)),n(this,t)}toBytes(t){return this.isLE?on(t,this.BYTES):rn(t,this.BYTES)}fromBytes(t,n=!1){rt(t);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:f}=this;if(r){if(t.length<1||!r.includes(t.length)||t.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);const c=new Uint8Array(o);c.set(t,s?0:c.length-t.length),t=c}if(t.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+t.length);let a=s?_t(t):Wn(t);if(f&&(a=k(a,i)),!n&&!this.isValid(a))throw new Error("invalid field element: outside of range 0..ORDER");return a}invertBatch(t){return hn(this,t)}cmov(t,n,r){return en(r,"condition"),r?n:t}}Object.freeze(pn.prototype);function le(e,t={}){return new pn(e,t)}const Dt=BigInt(0),ne=BigInt(1);function ke(e,t){const n=t.negate();return e?n:t}function Xt(e,t){const n=hn(e.Fp,t.map(r=>r.Z));return t.map((r,o)=>e.fromAffine(r.toAffine(n[o])))}function gn(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function Kt(e,t){gn(e,t);const n=Math.ceil(t/e)+1,r=2**(e-1),o=2**e,s=er(e),i=BigInt(e);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function Ue(e,t,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let f=Number(e&o),a=e>>i;f>r&&(f-=s,a+=ne);const c=t*r,u=c+Math.abs(f)-1,l=f===0,w=f<0,p=t%2!==0;return{nextN:a,offset:u,isZero:l,isNeg:w,isNegF:p,offsetF:c}}const Pt=new WeakMap,wn=new WeakMap;function Gt(e){return wn.get(e)||1}function Ne(e){if(e!==Dt)throw new Error("invalid wNAF")}class lr{BASE;ZERO;Fn;bits;constructor(t,n){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=n}_unsafeLadder(t,n,r=this.ZERO){let o=t;for(;n>Dt;)n&ne&&(r=r.add(o)),o=o.double(),n>>=ne;return r}precomputeWindow(t,n){const{windows:r,windowSize:o}=Kt(n,this.bits),s=[];let i=t,f=i;for(let a=0;a<r;a++){f=i,s.push(f);for(let c=1;c<o;c++)f=f.add(i),s.push(f);i=f.double()}return s}wNAF(t,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=Kt(t,this.bits);for(let f=0;f<i.windows;f++){const{nextN:a,offset:c,isZero:u,isNeg:l,isNegF:w,offsetF:p}=Ue(r,f,i);r=a,u?s=s.add(ke(w,n[p])):o=o.add(ke(l,n[c]))}return Ne(r),{p:o,f:s}}wNAFUnsafe(t,n,r,o=this.ZERO){const s=Kt(t,this.bits);for(let i=0;i<s.windows&&r!==Dt;i++){const{nextN:f,offset:a,isZero:c,isNeg:u}=Ue(r,i,s);if(r=f,!c){const l=n[a];o=o.add(u?l.negate():l)}}return Ne(r),o}getPrecomputes(t,n,r){let o=Pt.get(n);return o||(o=this.precomputeWindow(n,t),t!==1&&(typeof r=="function"&&(o=r(o)),Pt.set(n,o))),o}cached(t,n,r){const o=Gt(t);return this.wNAF(o,this.getPrecomputes(o,t,r),n)}unsafe(t,n,r,o){const s=Gt(t);return s===1?this._unsafeLadder(t,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,t,r),n,o)}createCache(t,n){gn(n,this.bits),wn.set(t,n),Pt.delete(t)}hasCache(t){return Gt(t)!==1}}function qe(e,t,n){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return fr(t),t}else return le(e,{isLE:n})}function dr(e,t,n={},r){if(r===void 0&&(r=e==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${e} CURVE object`);for(const a of["p","n","h"]){const c=t[a];if(!(typeof c=="bigint"&&c>Dt))throw new Error(`CURVE.${a} must be positive bigint`)}const o=qe(t.p,n.Fp,r),s=qe(t.n,n.Fn,r),f=["Gx","Gy","a","d"];for(const a of f)if(!o.isValid(t[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:o,Fn:s}}function hr(e,t){return function(r){const o=e(r);return{secretKey:o,publicKey:t(o)}}}const et=BigInt(0),Z=BigInt(1),Wt=BigInt(2),pr=BigInt(8);function gr(e,t,n,r){const o=e.sqr(n),s=e.sqr(r),i=e.add(e.mul(t.a,o),s),f=e.add(e.ONE,e.mul(t.d,e.mul(o,s)));return e.eql(i,f)}function wr(e,t={}){const n=t,r=dr("edwards",e,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:f}=i;ae(n,{},{uvRatio:"function"});const a=Wt<<BigInt(s.BYTES*8)-Z,c=y=>o.create(y),u=n.uvRatio===void 0?(y,d)=>{try{return{isValid:!0,value:o.sqrt(o.div(y,d))}}catch{return{isValid:!1,value:et}}}:n.uvRatio;if(!gr(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function l(y,d,g=!1){const h=g?Z:et;return Zt("coordinate "+y,d,h,a),d}function w(y){if(!(y instanceof p))throw new Error("EdwardsPoint expected")}class p{static BASE=new p(i.Gx,i.Gy,Z,c(i.Gx*i.Gy));static ZERO=new p(et,Z,Z,et);static Fp=o;static Fn=s;X;Y;Z;T;constructor(d,g,h,x){this.X=l("x",d),this.Y=l("y",g),this.Z=l("z",h,!0),this.T=l("t",x),Object.freeze(this)}static CURVE(){return i}static fromAffine(d){if(d instanceof p)throw new Error("extended point not allowed");const{x:g,y:h}=d||{};return l("x",g),l("y",h),new p(g,h,Z,c(g*h))}static fromBytes(d,g=!1){const h=o.BYTES,{a:x,d:v}=i;d=It(rt(d,h,"point")),en(g,"zip215");const _=It(d),A=d[h-1];_[h-1]=A&-129;const O=_t(_),E=g?a:o.ORDER;Zt("point.y",O,et,E);const R=c(O*O),C=c(R-Z),b=c(v*R-x);let{isValid:B,value:I}=u(C,b);if(!B)throw new Error("bad point: invalid y coordinate");const S=(I&Z)===Z,T=(A&128)!==0;if(!g&&I===et&&T)throw new Error("bad point: x=0 and x_0=1");return T!==S&&(I=c(-I)),p.fromAffine({x:I,y:O})}static fromHex(d,g=!1){return p.fromBytes(Kn(d),g)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(d=8,g=!0){return m.createCache(this,d),g||this.multiply(Wt),this}assertValidity(){const d=this,{a:g,d:h}=i;if(d.is0())throw new Error("bad point: ZERO");const{X:x,Y:v,Z:_,T:A}=d,O=c(x*x),E=c(v*v),R=c(_*_),C=c(R*R),b=c(O*g),B=c(R*c(b+E)),I=c(C+c(h*c(O*E)));if(B!==I)throw new Error("bad point: equation left != right (1)");const S=c(x*v),T=c(_*A);if(S!==T)throw new Error("bad point: equation left != right (2)")}equals(d){w(d);const{X:g,Y:h,Z:x}=this,{X:v,Y:_,Z:A}=d,O=c(g*A),E=c(v*x),R=c(h*A),C=c(_*x);return O===E&&R===C}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:d}=i,{X:g,Y:h,Z:x}=this,v=c(g*g),_=c(h*h),A=c(Wt*c(x*x)),O=c(d*v),E=g+h,R=c(c(E*E)-v-_),C=O+_,b=C-A,B=O-_,I=c(R*b),S=c(C*B),T=c(R*B),H=c(b*C);return new p(I,S,H,T)}add(d){w(d);const{a:g,d:h}=i,{X:x,Y:v,Z:_,T:A}=this,{X:O,Y:E,Z:R,T:C}=d,b=c(x*O),B=c(v*E),I=c(A*h*C),S=c(_*R),T=c((x+v)*(O+E)-b-B),H=S-I,st=S+I,Y=c(B-g*b),j=c(T*H),X=c(st*Y),K=c(T*Y),Q=c(H*st);return new p(j,X,Q,K)}subtract(d){return w(d),this.add(d.negate())}multiply(d){if(!s.isValidNot0(d))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:g,f:h}=m.cached(this,d,x=>Xt(p,x));return Xt(p,[g,h])[0]}multiplyUnsafe(d){if(!s.isValid(d))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return d===et?p.ZERO:this.is0()||d===Z?this:m.unsafe(this,d,g=>Xt(p,g))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return m.unsafe(this,i.n).is0()}toAffine(d){const g=this;let h=d;const{X:x,Y:v,Z:_}=g,A=g.is0();h==null&&(h=A?pr:o.inv(_));const O=c(x*h),E=c(v*h),R=o.mul(_,h);if(A)return{x:et,y:Z};if(R!==Z)throw new Error("invZ was invalid");return{x:O,y:E}}clearCofactor(){return f===Z?this:this.multiplyUnsafe(f)}toBytes(){const{x:d,y:g}=this.toAffine(),h=o.toBytes(g);return h[h.length-1]|=d&Z?128:0,h}toHex(){return tn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const m=new lr(p,s.BITS);return s.BITS>=8&&p.BASE.precompute(8),Object.freeze(p.prototype),Object.freeze(p),p}class yr{static BASE;static ZERO;static Fp;static Fn;ep;constructor(t){this.ep=t}static fromBytes(t){Oe()}static fromHex(t){Oe()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return tn(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,n){return this.ep.precompute(t,n),this}}const bt=BigInt(0),dt=BigInt(1),At=BigInt(2);function mr(e){return ae(e,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...e})}function br(e){const t=mr(e),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=t,f=r==="x25519";if(!f&&r!=="x448")throw new Error("invalid type");const a=i===void 0?Pn:i,c=f?255:448,u=f?32:56,l=BigInt(f?9:5),w=BigInt(f?121665:39081),p=f?At**BigInt(254):At**BigInt(447),m=f?BigInt(8)*At**BigInt(251)-dt:BigInt(4)*At**BigInt(445)-dt,y=p+m+dt,d=S=>k(S,n),g=h(l);function h(S){return on(d(S),u)}function x(S){const T=It(rt(S,u,"uCoordinate"));return f&&(T[31]&=127),d(_t(T))}function v(S){return _t(o(It(rt(S,u,"scalar"))))}function _(S,T){const H=C(x(T),v(S));if(H===bt)throw new Error("invalid private or public key received");return h(H)}function A(S){return _(S,g)}const O=A,E=_;function R(S,T,H){const st=d(S*(T-H));return T=d(T-st),H=d(H+st),{x_2:T,x_3:H}}function C(S,T){Zt("u",S,bt,n),Zt("scalar",T,p,y);const H=T,st=S;let Y=dt,j=bt,X=S,K=dt,Q=bt;for(let zt=BigInt(c-1);zt>=bt;zt--){const ge=H>>zt&dt;Q^=ge,{x_2:Y,x_3:X}=R(Q,Y,X),{x_2:j,x_3:K}=R(Q,j,K),Q=ge;const Yt=Y+j,Mt=d(Yt*Yt),jt=Y-j,we=d(jt*jt),ye=Mt-we,On=X+K,An=X-K,me=d(An*Yt),be=d(On*jt),Ee=me+be,xe=me-be;X=d(Ee*Ee),K=d(st*d(xe*xe)),Y=d(Mt*we),j=d(ye*(Mt+d(w*ye)))}({x_2:Y,x_3:X}=R(Q,Y,X)),{x_2:j,x_3:K}=R(Q,j,K);const Rn=s(j);return d(Y*Rn)}const b={secretKey:u,publicKey:u,seed:u},B=S=>(S=S===void 0?a(u):S,rt(S,b.seed,"seed"),S),I={randomSecretKey:B};return Object.freeze(b),Object.freeze(I),Object.freeze({keygen:hr(B,O),getSharedSecret:E,getPublicKey:O,scalarMult:_,scalarMultBase:A,utils:I,GuBytes:g.slice(),lengths:b})}const Er=BigInt(0),Bt=BigInt(1),Ce=BigInt(2),xr=BigInt(3),vr=BigInt(5),Br=BigInt(8),wt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),yn={p:wt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Br,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function mn(e){const t=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=wt,f=e*e%s*e%s,a=M(f,Ce,s)*f%s,c=M(a,Bt,s)*e%s,u=M(c,vr,s)*c%s,l=M(u,t,s)*u%s,w=M(l,n,s)*l%s,p=M(w,r,s)*w%s,m=M(p,o,s)*p%s,y=M(m,o,s)*p%s,d=M(y,t,s)*u%s;return{pow_p_5_8:M(d,Ce,s)*e%s,b2:f}}function Sr(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}const re=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function bn(e,t){const n=wt,r=k(t*t*t,n),o=k(r*r*t,n),s=mn(e*o).pow_p_5_8;let i=k(e*r*s,n);const f=k(t*i*i,n),a=i,c=k(i*re,n),u=f===e,l=f===k(-e,n),w=f===k(-e*re,n);return u&&(i=a),(l||w)&&(i=c),ct(i,n)&&(i=k(-i,n)),{isValid:u||l,value:i}}const pt=wr(yn,{uvRatio:bn}),ft=pt.Fp,_r=pt.Fn,oe=(()=>{const e=wt;return br({P:e,type:"x25519",powPminus2:t=>{const{pow_p_5_8:n,b2:r}=mn(t);return k(M(n,xr,e)*r,e)},adjustScalarBytes:Sr})})(),Fe=re,Ir=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),He=e=>bn(Bt,e),Rr=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Or=e=>ft.create(_t(e)&Rr);class $ extends yr{static BASE=new $(pt.BASE);static ZERO=new $(pt.ZERO);static Fp=ft;static Fn=_r;constructor(t){super(t)}static fromAffine(t){return new $(pt.fromAffine(t))}assertSame(t){if(!(t instanceof $))throw new Error("RistrettoPoint expected")}init(t){return new $(t)}static fromBytes(t){W(t,32);const{a:n,d:r}=yn,o=wt,s=v=>ft.create(v),i=Or(t);if(!Qn(ft.toBytes(i),t)||ct(i,o))throw new Error("invalid ristretto255 encoding 1");const f=s(i*i),a=s(Bt+n*f),c=s(Bt-n*f),u=s(a*a),l=s(c*c),w=s(n*r*u-l),{isValid:p,value:m}=He(s(w*l)),y=s(m*c),d=s(m*y*w);let g=s((i+i)*y);ct(g,o)&&(g=s(-g));const h=s(a*d),x=s(g*h);if(!p||ct(x,o)||h===Er)throw new Error("invalid ristretto255 encoding 2");return new $(new pt(g,h,Bt,x))}static fromHex(t){return $.fromBytes(fe(t))}toBytes(){let{X:t,Y:n,Z:r,T:o}=this.ep;const s=wt,i=d=>ft.create(d),f=i(i(r+n)*i(r-n)),a=i(t*n),c=i(a*a),{value:u}=He(i(f*c)),l=i(u*f),w=i(u*a),p=i(l*w*o);let m;if(ct(o*p,s)){let d=i(n*Fe),g=i(t*Fe);t=d,n=g,m=i(l*Ir)}else m=w;ct(t*p,s)&&(n=i(-n));let y=i((r-n)*m);return ct(y,s)&&(y=i(-y)),ft.toBytes(y)}equals(t){this.assertSame(t);const{X:n,Y:r}=this.ep,{X:o,Y:s}=t.ep,i=c=>ft.create(c),f=i(n*s)===i(r*o),a=i(r*s)===i(n*o);return f||a}is0(){return this.equals($.ZERO)}}Object.freeze($.BASE);Object.freeze($.ZERO);Object.freeze($.prototype);Object.freeze($);class Ze{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(t,n){if(ie(t),W(n,void 0,"key"),this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,o=new Uint8Array(r);o.set(n.length>r?t.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=t.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),St(o)}update(t){return Ft(this),this.iHash.update(t),this}digestInto(t){Ft(this),We(t,this),this.finished=!0;const n=t.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:f}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=f,t.oHash=n._cloneInto(t.oHash),t.iHash=r._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const En=(()=>{const e=((t,n,r)=>new Ze(t,n).update(r).digest());return e.create=(t,n)=>new Ze(t,n),e})();function Ar(e,t,n){return ie(e),n===void 0&&(n=new Uint8Array(e.outputLen)),En(e,n,t)}const Qt=Uint8Array.of(0),De=Uint8Array.of();function Lr(e,t,n,r=32){ie(e),gt(r,"length"),W(t,void 0,"prk");const o=e.outputLen;if(t.length<o)throw new Error('"prk" must be at least HashLen octets');if(r>255*o)throw new Error("Length must be <= 255*HashLen");const s=Math.ceil(r/o);n===void 0?n=De:W(n,void 0,"info");const i=new Uint8Array(s*o),f=En.create(e,t),a=f._cloneInto(),c=new Uint8Array(f.outputLen);for(let u=0;u<s;u++)Qt[0]=u+1,a.update(u===0?De:c).update(n).update(Qt).digestInto(c),i.set(c,o*u),f._cloneInto(a);return f.destroy(),a.destroy(),St(c,Qt),i.slice(0,r)}const Tr=(e,t,n,r,o)=>Lr(e,Ar(e,t,n),r,o);function kr(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in e&&e.BYTES_PER_ELEMENT===1}function $e(e){if(typeof e!="number")throw new TypeError("number expected, got "+typeof e);if(!Number.isSafeInteger(e)||e<0)throw new RangeError("positive integer expected, got "+e)}function D(e,t,n=""){const r=kr(e),o=e?.length,s=t!==void 0;if(!r||s&&o!==t){const i=n&&`"${n}" `,f=s?` of length ${t}`:"",a=r?`length=${o}`:`type=${typeof e}`,c=i+"expected Uint8Array"+f+", got "+a;throw r?new RangeError(c):new TypeError(c)}return e}function ze(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Ur(e,t,n=!1){D(e,void 0,"output");const r=t.outputLen;if(e.length<r)throw new RangeError("digestInto() expects output buffer of length at least "+r);if(n&&!Rt(e))throw new Error("invalid output, must be aligned")}function Nr(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function ut(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function ot(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function $t(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}const de=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,xn=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,N=de?e=>e:e=>xn(e)>>>0,qr=e=>{for(let t=0;t<e.length;t++)e[t]=xn(e[t]);return e},he=de?e=>e:qr;function Cr(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}function Fr(e,t,n){const r=t,o=n||(()=>[]),s=(f,a)=>r(a,...o(f)).update(f).digest(),i=r(new Uint8Array(e),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(f,...a)=>r(f,...a),s}const Hr=(e,t)=>{function n(r,...o){if(D(r,void 0,"key"),e.nonceLength!==void 0){const u=o[0];D(u,e.varSizeNonce?void 0:e.nonceLength,"nonce")}const s=e.tagLength;s&&o[1]!==void 0&&D(o[1],void 0,"AAD");const i=t(r,...o),f=(u,l)=>{if(l!==void 0){if(u!==2)throw new Error("cipher output not supported");D(l,void 0,"output")}};let a=!1;return{encrypt(u,l){if(a)throw new Error("cannot encrypt() twice with same key + nonce");return a=!0,D(u),f(i.encrypt.length,l),i.encrypt(u,l)},decrypt(u,l){if(D(u),s&&u.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return f(i.decrypt.length,l),i.decrypt(u,l)}}}return Object.assign(n,e),n};function Zr(e,t,n=!0){if(t===void 0)return new Uint8Array(e);if(D(t,void 0,"output"),t.length!==e)throw new Error('"output" expected Uint8Array of length '+e+", got: "+t.length);if(n&&!Rt(t))throw new Error("invalid output, must be aligned");return t}function Dr(e,t,n){$e(e),$e(t);const r=new Uint8Array(16),o=$t(r);return o.setBigUint64(0,BigInt(t),n),o.setBigUint64(8,BigInt(e),n),r}function Rt(e){return e.byteOffset%4===0}function Ot(e){return Uint8Array.from(D(e))}const ht=16,vn=new Uint8Array(16),Et=ut(vn),$r=225,zr=(e,t,n,r)=>{const o=r&1;return{s3:n<<31|r>>>1,s2:t<<31|n>>>1,s1:e<<31|t>>>1,s0:e>>>1^$r<<24&-(o&1)}},Lt=e=>(e>>>0&255)<<24|(e>>>8&255)<<16|(e>>>16&255)<<8|e>>>24&255|0,Yr=e=>e>64*1024?8:e>1024?4:2;class Mr{blockLen=ht;outputLen=ht;s0=0;s1=0;s2=0;s3=0;finished=!1;destroyed=!1;t;W;windowSize;constructor(t,n){D(t,16,"key"),t=Ot(t);const r=$t(t);let o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),f=r.getUint32(12,!1);const a=[];for(let m=0;m<128;m++)a.push({s0:Lt(o),s1:Lt(s),s2:Lt(i),s3:Lt(f)}),{s0:o,s1:s,s2:i,s3:f}=zr(o,s,i,f);const c=Yr(n||1024);if(![1,2,4,8].includes(c))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=c;const l=128/c,w=this.windowSize=2**c,p=[];for(let m=0;m<l;m++)for(let y=0;y<w;y++){let d=0,g=0,h=0,x=0;for(let v=0;v<c;v++){if(!(y>>>c-v-1&1))continue;const{s0:A,s1:O,s2:E,s3:R}=a[c*m+v];d^=A,g^=O,h^=E,x^=R}p.push({s0:d,s1:g,s2:h,s3:x})}this.t=p}_updateBlock(t,n,r,o){t^=this.s0,n^=this.s1,r^=this.s2,o^=this.s3;const{W:s,t:i,windowSize:f}=this;let a=0,c=0,u=0,l=0;const w=(1<<s)-1;let p=0;for(const m of[t,n,r,o])for(let y=0;y<4;y++){const d=m>>>8*y&255;for(let g=8/s-1;g>=0;g--){const h=d>>>s*g&w,{s0:x,s1:v,s2:_,s3:A}=i[p*f+h];a^=x,c^=v,u^=_,l^=A,p+=1}}this.s0=a,this.s1=c,this.s2=u,this.s3=l}update(t){ze(this),D(t),t=Ot(t);const n=ut(t),r=Math.floor(t.length/ht),o=t.length%ht;for(let s=0;s<r;s++)this._updateBlock(N(n[s*4+0]),N(n[s*4+1]),N(n[s*4+2]),N(n[s*4+3]));return o&&(vn.set(t.subarray(r*ht)),this._updateBlock(N(Et[0]),N(Et[1]),N(Et[2]),N(Et[3])),ot(Et)),this}destroy(){this.destroyed=!0;const{t}=this;for(const n of t)n.s0=0,n.s1=0,n.s2=0,n.s3=0}digestInto(t){ze(this),Ur(t,this,!0),this.finished=!0;const{s0:n,s1:r,s2:o,s3:s}=this,i=ut(t);i[0]=n,i[1]=r,i[2]=o,i[3]=s,he(i)}digest(){const t=new Uint8Array(ht);return this.digestInto(t),this.destroy(),t}}const Ye=Fr(16,(e,t)=>new Mr(e,t),e=>[e.length]),se=16,jr=4,Tt=new Uint8Array(se),Vr=283;function Xr(e){if(![16,24,32].includes(e.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+e.length)}function pe(e){return e<<1^Vr&-(e>>7)}function Me(e,t){let n=0;for(;t>0;t>>=1)n^=e&-(t&1),e=pe(e);return n}const Kr=(()=>{const e=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=pe(r))e[n]=r;const t=new Uint8Array(256);t[0]=99;for(let n=0;n<255;n++){let r=e[255-n];r|=r<<8,t[e[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return ot(e),t})(),Pr=e=>e<<24|e>>>8,Jt=e=>e<<8|e>>>24;function Gr(e,t){if(e.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((c,u)=>t(e[u])),r=n.map(Jt),o=r.map(Jt),s=o.map(Jt),i=new Uint32Array(256*256),f=new Uint32Array(256*256),a=new Uint16Array(256*256);for(let c=0;c<256;c++)for(let u=0;u<256;u++){const l=c*256+u;i[l]=n[c]^r[u],f[l]=o[c]^s[u],a[l]=e[c]<<8|e[u]}return{sbox:e,sbox2:a,T0:n,T1:r,T2:o,T3:s,T01:i,T23:f}}const Bn=Gr(Kr,e=>Me(e,3)<<24|e<<16|e<<8|Me(e,2)),Wr=(()=>{const e=new Uint8Array(16);for(let t=0,n=1;t<16;t++,n=pe(n))e[t]=n;return e})();function Qr(e){D(e);const t=e.length;Xr(e);const{sbox2:n}=Bn,r=[];(!de||!Rt(e))&&r.push(e=Ot(e));const o=he(ut(e)),s=o.length,i=a=>xt(n,a,a,a,a),f=new Uint32Array(t+28);f.set(o);for(let a=s;a<f.length;a++){let c=f[a-1];a%s===0?c=i(Pr(c))^Wr[a/s-1]:s>6&&a%s===4&&(c=i(c)),f[a]=f[a-s]^c}return ot(...r),f}function kt(e,t,n,r,o,s){return e[n<<8&65280|r>>>8&255]^t[o>>>8&65280|s>>>24&255]}function xt(e,t,n,r,o){return e[t&255|n&65280]|e[r>>>16&255|o>>>16&65280]<<16}function je(e,t,n,r,o){const{sbox2:s,T01:i,T23:f}=Bn;let a=0;t^=e[a++],n^=e[a++],r^=e[a++],o^=e[a++];const c=e.length/4-2;for(let m=0;m<c;m++){const y=e[a++]^kt(i,f,t,n,r,o),d=e[a++]^kt(i,f,n,r,o,t),g=e[a++]^kt(i,f,r,o,t,n),h=e[a++]^kt(i,f,o,t,n,r);t=y,n=d,r=g,o=h}const u=e[a++]^xt(s,t,n,r,o),l=e[a++]^xt(s,n,r,o,t),w=e[a++]^xt(s,r,o,t,n),p=e[a++]^xt(s,o,t,n,r);return{s0:u,s1:l,s2:w,s3:p}}function Ut(e,t,n,r,o){D(n,se,"nonce"),D(r),o=Zr(r.length,o);const s=n,i=ut(s),f=$t(s),a=ut(r),c=ut(o),u=t?0:12,l=r.length;let w=f.getUint32(u,t),{s0:p,s1:m,s2:y,s3:d}=je(e,N(i[0]),N(i[1]),N(i[2]),N(i[3]));for(let h=0;h+4<=a.length;h+=4)c[h+0]=a[h+0]^N(p),c[h+1]=a[h+1]^N(m),c[h+2]=a[h+2]^N(y),c[h+3]=a[h+3]^N(d),w=w+1>>>0,f.setUint32(u,w,t),{s0:p,s1:m,s2:y,s3:d}=je(e,N(i[0]),N(i[1]),N(i[2]),N(i[3]));const g=se*Math.floor(a.length/jr);if(g<l){const h=new Uint32Array([p,m,y,d]);he(h);const x=Nr(h);for(let v=g,_=0;v<l;v++,_++)o[v]=r[v]^x[_];ot(h)}return o}function Jr(e,t,n,r,o){const s=o?o.length:0,i=e.create(n,r.length+s);o&&i.update(o);const f=Dr(8*r.length,8*s,t);i.update(r),i.update(f);const a=i.digest();return ot(f),a}const Ve=Hr({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(t,n,r){if(n.length<8)throw new Error("aes/gcm: invalid nonce length");const o=16;function s(f,a,c){const u=Jr(Ye,!1,f,c,r);for(let l=0;l<a.length;l++)u[l]^=a[l];return u}function i(){const f=Qr(t),a=Tt.slice(),c=Tt.slice();if(Ut(f,!1,c,c,a),n.length===12)c.set(n);else{const l=Tt.slice();$t(l).setBigUint64(8,BigInt(n.length*8),!1);const p=Ye.create(a).update(n).update(l);p.digestInto(c),p.destroy()}const u=Ut(f,!1,c,Tt);return{xk:f,authKey:a,counter:c,tagMask:u}}return{encrypt(f){const{xk:a,authKey:c,counter:u,tagMask:l}=i(),w=new Uint8Array(f.length+o),p=[a,c,u,l];Rt(f)||p.push(f=Ot(f)),Ut(a,!1,u,f,w.subarray(0,f.length));const m=s(c,l,w.subarray(0,w.length-o));return p.push(m),w.set(m,f.length),ot(...p),w},decrypt(f){const{xk:a,authKey:c,counter:u,tagMask:l}=i(),w=[a,c,l,u];Rt(f)||w.push(f=Ot(f));const p=f.subarray(0,-o),m=f.subarray(-o),y=s(c,l,p);if(w.push(y),!Cr(y,m))throw ot(...w),new Error("aes/gcm: invalid ghash tag");const d=Ut(a,!1,u,p);return ot(...w),d}}}),Sn="chainlesschain.remote-session.e2ee.v1",Xe="chainlesschain://remote-session/pair#",te=32,to=new TextEncoder,_n=new TextDecoder;function Ct(e){return to.encode(e)}function Nt(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function vt(e){const t=String(e).replace(/-/g,"+").replace(/_/g,"/"),n=atob(t),r=new Uint8Array(n.length);for(let o=0;o<n.length;o+=1)r[o]=n.charCodeAt(o);return r}function eo(e){const t=new Uint8Array(e);return globalThis.crypto.getRandomValues(t),t}function no(){const e=oe.utils;return e.randomSecretKey?e.randomSecretKey():e.randomPrivateKey()}function Ke(e,t,n){return Ct(`${Sn}
2
- ${e}
3
- ${t}
4
- ${n}`)}function ro(e,t=Date.now()){if(typeof e!="string"||!e.startsWith(Xe))throw new Error("Invalid Remote Session pairing URI");let n;try{n=JSON.parse(_n.decode(vt(e.slice(Xe.length))))}catch{throw new Error("Malformed Remote Session pairing payload")}if(n.v!==1||!n.relayUrl||!n.remoteSessionId||!n.hostPeerId||!n.hostPublicKey||!n.pairingToken)throw new Error("Incomplete Remote Session pairing payload");if(n.expiresAt&&n.expiresAt<=t)throw new Error("Remote Session pairing payload expired");let r;try{r=new URL(n.relayUrl).protocol}catch{r=null}if(r!=="ws:"&&r!=="wss:")throw new Error("Remote Session relay must use ws or wss");return n}class oo{constructor(t,n){if(!t||!n)throw new Error("sessionId and localPeerId are required");this.sessionId=t,this.localPeerId=n,this.secretKey=no(),this.publicKey=oe.getPublicKey(this.secretKey),this.key=null,this.sendSequence=0,this.receivedSequences=new Map}publicKeyBase64(){return Nt(this.publicKey)}pair(t,n){if(!t||!n)throw new Error("Incomplete peer key material");const r=vt(t),o=r.length===te?r:r.slice(-te);if(o.length!==te)throw new Error("Invalid X25519 host public key");const s=oe.getSharedSecret(this.secretKey,o),i=Ie(Ct(n));this.key=Tr(Ie,s,i,Ct(`${Sn}:${this.sessionId}`),32)}encrypt(t){if(!this.key)throw new Error("Remote Session is not paired");const n=this.sendSequence+=1,r=eo(12),o=Ve(this.key,r,Ke(this.sessionId,this.localPeerId,n)).encrypt(Ct(JSON.stringify(t)));return{v:1,sessionId:this.sessionId,senderId:this.localPeerId,sequence:n,nonce:Nt(r),ciphertext:Nt(o.slice(0,o.length-16)),tag:Nt(o.slice(o.length-16))}}decrypt(t){if(t?.v!==1||t.sessionId!==this.sessionId)throw new Error("Invalid encrypted Remote Session envelope");if(!this.key)throw new Error("Remote Session is not paired");const n=this.receivedSequences.get(t.senderId)||0;if(!Number.isSafeInteger(t.sequence)||t.sequence<=n)throw new Error("Remote Session replay or out-of-order envelope rejected");const r=new Uint8Array([...vt(t.ciphertext),...vt(t.tag)]),o=Ve(this.key,vt(t.nonce),Ke(this.sessionId,t.senderId,t.sequence)).decrypt(r);return this.receivedSequences.set(t.senderId,t.sequence),JSON.parse(_n.decode(o))}}const so=1e3,io=3e4;let Pe=0;function In(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function co(){return`web-${In()}`}const Ge=Ln("remoteSession",()=>{const e=nt("idle"),t=nt([]),n=nt(""),r=nt(null);let o=null,s=null,i=null,f=null,a=!1,c=!1,u=0,l=null,w=null,p=0;function m(){l&&(clearTimeout(l),l=null)}function y(){if(!i)return;const b=new WebSocket(i.relayUrl);o=b,b.addEventListener("open",()=>{b===o&&b.send(JSON.stringify({type:"register",peerId:f,deviceType:"web",deviceInfo:{protocol:"remote-session.e2ee.v1"}}))}),b.addEventListener("message",B=>{b===o&&g(B.data)}),b.addEventListener("close",()=>{b===o&&(o=null,c?e.value="disconnected":d())}),b.addEventListener("error",()=>{b===o&&(n.value="Remote Session relay connection error")})}function d(){if(c||l)return;const b=Math.min(so*2**u,io);u+=1,e.value="reconnecting",l=setTimeout(()=>{l=null,c||y()},b)}function g(b){try{let B=JSON.parse(typeof b=="string"?b:String(b));if(B.type==="offline-message"&&(B=B.originalMessage||{}),B.type==="registered"){a?e.value="connected":(e.value="pairing",x());return}if(B.type!=="message")return;const I=B.payload;if(!I||I.type!=="remote-session.encrypted")return;const S=s.decrypt(I.envelope);S.type==="pair.accepted"?(a=!0,u=0,e.value="connected"):S.type==="session.revoked"?(c=!0,a=!1,m(),o&&o.close(),o=null,e.value="revoked"):(Pe+=1,t.value=[...t.value,{...S,_id:Pe,_rxAt:Date.now()}].slice(-200))}catch(B){e.value="error",n.value=B?.message||"Remote Session protocol error"}}function h(b,B){return!o||o.readyState!==WebSocket.OPEN||!i?!1:(o.send(JSON.stringify({type:"message",to:i.hostPeerId,payload:{type:b,...B}})),!0)}function x(){const b={type:"pair.join",remoteSessionId:i.remoteSessionId,token:i.pairingToken};w?.token&&(b.pushToken=w.token,b.pushProvider=w.provider||"web"),h("remote-session.pair",{mobilePeerId:f,mobilePublicKey:s.publicKeyBase64(),envelope:s.encrypt(b)})}function v(b){if(!o||o.readyState!==WebSocket.OPEN||!a)return!1;const B={...b,commandId:b.commandId||In(),seq:b.seq??++p};return h("remote-session.encrypted",{envelope:s.encrypt(B)})}function _(b,B={}){C();try{const I=ro(b);return w=B.pushCredentials||null,f=co(),s=new oo(I.remoteSessionId,f),s.pair(I.hostPublicKey,I.pairingToken),i=I,r.value=I.remoteSessionId,a=!1,c=!1,u=0,p=0,n.value="",t.value=[],e.value="connecting",y(),!0}catch(I){return e.value="error",n.value=I?.message||"Invalid pairing link",!1}}function A(b){const B=(b||"").trim();B&&(v({type:"prompt",content:B})||(n.value="Remote Session is not connected"))}function O(b,B){v({type:"approval.resolve",requestId:b,approved:B})}function E(){v({type:"interrupt"})}function R(b,B="web"){if(w=b?{token:b,provider:B}:null,!a)return;const I={type:"push.register"};w?.token&&(I.pushToken=w.token,I.pushProvider=w.provider),v(I)}function C(){if(c=!0,a=!1,m(),o)try{o.close()}catch{}o=null,e.value!=="revoked"&&(e.value="disconnected")}return{status:e,events:t,error:n,remoteSessionId:r,connect:_,sendPrompt:A,approve:O,interrupt:E,updatePushCredentials:R,disconnect:C}}),fo={__name:"RemoteSession",setup(e,{expose:t}){t();const n=Ge(),{status:r,events:o,error:s}=Be(n),i=nt(""),f=nt(""),a=nt(!1),c=mt(()=>["connecting","pairing","connected","reconnecting"].includes(r.value)),u=mt(()=>({idle:"未连接",connecting:"连接中",pairing:"配对中",connected:"已连接",reconnecting:"重连中",disconnected:"已断开",revoked:"已被撤销",error:"错误"})[r.value]||r.value),l=mt(()=>r.value==="connected"?"green":["connecting","pairing","reconnecting"].includes(r.value)?"blue":["revoked","error"].includes(r.value)?"red":"default"),w=mt(()=>[...o.value].reverse());function p(E){return String(E?.type||"").includes("approval")}function m(E){return E?.content||E?.payload?.content||E?.message||""}function y(E){return E?.requestId||E?.approvalId||""}function d(){n.connect(i.value.trim())}function g(E){a.value=!1,E&&(i.value=E,n.connect(E))}function h(E){const R=typeof E=="string"?E:f.value;n.sendPrompt(R),f.value=""}function x(E,R){n.approve(y(E),R)}function v(){n.interrupt()}function _(){n.disconnect()}function A(){s.value=""}const O={store:n,status:r,events:o,error:s,pairingLink:i,promptText:f,scannerOpen:a,isActive:c,statusLabel:u,statusColor:l,orderedEvents:w,isApproval:p,eventBody:m,requestIdOf:y,connect:d,onScanned:g,send:h,respond:x,interrupt:v,disconnect:_,clearError:A,computed:mt,ref:nt,get storeToRefs(){return Be},get LinkOutlined(){return Cn},get ScanOutlined(){return qn},QrScannerModal:Un,get useRemoteSessionStore(){return Ge}};return Object.defineProperty(O,"__isScriptSetup",{enumerable:!1,value:!0}),O}},ao={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}};function uo(e,t,n,r,o,s){const i=z("a-tag"),f=z("a-alert"),a=z("a-textarea"),c=z("a-button"),u=z("a-space"),l=z("a-card"),w=z("a-input-search"),p=z("a-spin"),m=z("a-empty"),y=z("a-list-item-meta"),d=z("a-list-item"),g=z("a-list");return it(),Tn("div",null,[yt("div",ao,[t[4]||(t[4]=yt("div",null,[yt("h2",{class:"page-title"},"远程会话"),yt("p",{class:"page-sub"},"扫码或粘贴桌面端的配对链接,端到端加密接管一个编码会话(观察 / 提示 / 审批 / 中断)")],-1)),U(i,{color:r.statusColor},{default:L(()=>[P(Se(r.statusLabel),1)]),_:1},8,["color"])]),r.error?(it(),lt(f,{key:0,type:"error","show-icon":"",style:{"margin-bottom":"16px"},message:r.error,closable:"",onClose:r.clearError},null,8,["message"])):ve("v-if",!0),r.isActive?(it(),lt(l,{key:2,title:"会话控制",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{extra:L(()=>[U(u,null,{default:L(()=>[U(c,{size:"small",onClick:r.interrupt},{default:L(()=>[...t[8]||(t[8]=[P("中断",-1)])]),_:1}),U(c,{size:"small",danger:"",onClick:r.disconnect},{default:L(()=>[...t[9]||(t[9]=[P("断开",-1)])]),_:1})]),_:1})]),default:L(()=>[U(u,{direction:"vertical",style:{width:"100%"},size:8},{default:L(()=>[U(w,{value:r.promptText,"onUpdate:value":t[2]||(t[2]=h=>r.promptText=h),placeholder:"发送提示到远程会话…","enter-button":"发送",disabled:r.status!=="connected",onSearch:r.send},null,8,["value","disabled"]),r.status==="reconnecting"?(it(),lt(p,{key:0,size:"small"},{tip:L(()=>[...t[10]||(t[10]=[P("正在重连…",-1)])]),_:1})):ve("v-if",!0)]),_:1})]),_:1})):(it(),lt(l,{key:1,title:"连接远程会话",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:L(()=>[U(u,{direction:"vertical",style:{width:"100%"},size:12},{default:L(()=>[U(a,{value:r.pairingLink,"onUpdate:value":t[0]||(t[0]=h=>r.pairingLink=h),rows:3,placeholder:"chainlesschain://remote-session/pair#...","allow-clear":""},null,8,["value"]),U(u,null,{default:L(()=>[U(c,{type:"primary",disabled:!r.pairingLink.trim(),onClick:r.connect},{icon:L(()=>[U(r.LinkOutlined)]),default:L(()=>[t[5]||(t[5]=P(" 连接 ",-1))]),_:1},8,["disabled"]),U(c,{onClick:t[1]||(t[1]=h=>r.scannerOpen=!0)},{icon:L(()=>[U(r.ScanOutlined)]),default:L(()=>[t[6]||(t[6]=P(" 扫码 ",-1))]),_:1})]),_:1}),t[7]||(t[7]=yt("p",{class:"page-sub",style:{margin:"0"}}," 链接为一次性配对码,敏感载荷仅在片段(#)中,不会发往服务器。 ",-1))]),_:1})]),_:1})),U(l,{title:"会话事件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:L(()=>[r.events.length?(it(),lt(g,{key:1,size:"small","data-source":r.orderedEvents},{renderItem:L(({item:h})=>[U(d,null,kn({default:L(()=>[U(y,{description:r.eventBody(h)},{title:L(()=>[U(i,{color:r.isApproval(h)?"orange":"blue"},{default:L(()=>[P(Se(h.type||"event"),1)]),_:2},1032,["color"])]),_:2},1032,["description"])]),_:2},[r.isApproval(h)?{name:"actions",fn:L(()=>[U(c,{type:"link",size:"small",onClick:x=>r.respond(h,!0)},{default:L(()=>[...t[11]||(t[11]=[P("批准",-1)])]),_:1},8,["onClick"]),U(c,{type:"link",size:"small",danger:"",onClick:x=>r.respond(h,!1)},{default:L(()=>[...t[12]||(t[12]=[P("拒绝",-1)])]),_:1},8,["onClick"])]),key:"0"}:void 0]),1024)]),_:1},8,["data-source"])):(it(),lt(m,{key:0,description:"尚无事件"}))]),_:1}),U(r.QrScannerModal,{open:r.scannerOpen,onScanned:r.onScanned,onCancel:t[3]||(t[3]=h=>r.scannerOpen=!1)},null,8,["open"])])}const yo=Nn(fo,[["render",uo],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/RemoteSession.vue"]]);export{yo as default};
@@ -1 +0,0 @@
1
- import{I as m,J as p,U as v,R as s,c as o,K as n,V as d,S as x,o as me,b as se,a as te,r as _,P as u,Q as f,F,Z as L,_ as Ue,$ as pe}from"./vendor-Bn1JzzAn.js";import{Y as Pe,t as W,_ as Be,b as fe,u as ye,E as be,d as g}from"./index-DPguq3X7.js";import ve from"./index-PkH39qsp.js";import{aU as Ve,l as Ye,L as Je,q as Ke,at as We,ak as qe,$ as Ze,am as He,as as Ge,R as Qe}from"./icons-DEmcnxBf.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BPHKbDcf.js";import"./pickAttrs-LNnTscuz.js";import"./initDefaultProps-BrgfVRg9.js";import"./motion-D_3xmwac.js";import"./raf-Deuc0E8-.js";import"./index-BpGlLbRv.js";import"./index-D2yhtk6a.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DEcR2h6k.js";import"./compact-item-vkd7s-ay.js";import"./createContext-C7YkbMyy.js";import"./Compact-CabbZVww.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DtyKMtHB.js";import"./zoom-Cyk2PQ-s.js";import"./ActionButton-Cv9er9bp.js";import"./vnode-KcgLUiom.js";const Se=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Xe=Object.freeze(["none","exponential","linear","step"]),$e=Object.freeze(["z_score","iqr"]),Oe=Object.freeze(["running","complete","applied","failed","cancelled"]),et=Object.freeze(["generic","task","review","vote"]);function k(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function N(l){if(!l)return{noDb:!1,error:""};const t=Pe(l),r=/Database not available/i.test(t);return{noDb:r,error:r?"Database not available":""}}function tt(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:r,did:r,score:k(l.score,0),observations:k(l.observations,0),decay:String(l.decay||"none"),weightTotal:k(l.weightTotal,0),_idx:t}:null}function ce(l){const t=W(l);return Array.isArray(t)?t.map(tt).filter(Boolean):[]}function ze(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:`${r}-${t}`,did:r,score:k(l.score,0),reason:String(l.reason||""),zScore:typeof l.zScore=="number"?l.zScore:null,lower:typeof l.lower=="number"?l.lower:null,upper:typeof l.upper=="number"?l.upper:null}:null}function _e(l){const t=W(l);if(!t||typeof t!="object"||Array.isArray(t))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const r=Array.isArray(t.anomalies)?t.anomalies.map(ze).filter(Boolean):[];return{method:String(t.method||""),threshold:k(t.threshold,0),totalSamples:k(t.totalSamples,0),anomalies:r,summary:t.summary?String(t.summary):"",message:t.message?String(t.message):""}}function Ae(l,t=0){if(!l||typeof l!="object")return null;const r=l.runId||"";return r?{key:r,runId:r,objective:String(l.objective||""),iterations:k(l.iterations,0),paramSpace:l.paramSpace??null,bestParams:l.bestParams??null,bestScore:k(l.bestScore,0),status:String(l.status||"complete").toLowerCase(),createdAt:l.createdAt??null,completedAt:l.completedAt??null,analytics:l.analytics??null,errorMessage:l.errorMessage??"",_idx:t}:null}function ge(l){const t=W(l);return Array.isArray(t)?t.map(Ae).filter(Boolean):[]}function xe(l){const t=W(l);return!t||typeof t!="object"||Array.isArray(t)?null:Ae(t,0)}function ke(l){const t=W(l);if(!t||typeof t!="object"||Array.isArray(t))return null;const r=t.reputationDistribution||{};return{analyticsId:String(t.analyticsId||""),runId:String(t.runId||""),reputationDistribution:{buckets:Array.isArray(r.buckets)?r.buckets.filter(e=>e&&typeof e=="object").map(e=>({label:String(e.label||""),count:k(e.count,0),min:typeof e.min=="number"?e.min:null,max:typeof e.max=="number"?e.max:null})):[],mean:typeof r.mean=="number"?r.mean:null,stdDev:typeof r.stdDev=="number"?r.stdDev:null},anomalies:t.anomalies&&typeof t.anomalies=="object"?{method:String(t.anomalies.method||""),totalSamples:k(t.anomalies.totalSamples,0),anomalies:Array.isArray(t.anomalies.anomalies)?t.anomalies.anomalies.map(ze).filter(Boolean):[],summary:t.anomalies.summary?String(t.anomalies.summary):"",message:t.anomalies.message?String(t.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(t.recommendations)?t.recommendations.filter(e=>typeof e=="string"):[]}}const ot={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function he(l){const t=JSON.parse(JSON.stringify(ot));for(const e of Oe)t.byStatus[e]=0;for(const e of Se)t.byObjective[e]=0;const r=W(l);if(!r||typeof r!="object"||Array.isArray(r))return t;if(t.totalRuns=k(r.totalRuns,0),t.activeRuns=k(r.activeRuns,0),t.maxConcurrentOptimizations=k(r.maxConcurrentOptimizations,0),t.bestScoreEver=k(r.bestScoreEver,0),r.byStatus&&typeof r.byStatus=="object")for(const[e,w]of Object.entries(r.byStatus))typeof w=="number"&&Number.isFinite(w)&&(t.byStatus[e]=w);if(r.byObjective&&typeof r.byObjective=="object")for(const[e,w]of Object.entries(r.byObjective))typeof w=="number"&&Number.isFinite(w)&&(t.byObjective[e]=w);return r.observations&&typeof r.observations=="object"&&(t.observations.totalObservations=k(r.observations.totalObservations,0),t.observations.totalDids=k(r.observations.totalDids,0)),t}function at(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const nt={__name:"Reputation",setup(l,{expose:t}){t();const{t:r}=fe(),e=ye(),w=be.PRESENTED_IMAGE_SIMPLE,Q=_(!1),R=_(!1),q=_(!1),U=_(!1),A=_(!1),O=_([]),z=_([]),V=_({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),P=_({noDb:!1,error:""}),X=_("scores"),E=_("none"),Z=_(!1),Y=_(!1),j=_(!1),H=_(!1),h=te({did:"",score:.8,kind:"generic",weight:1}),S=te({objective:"accuracy",iterations:50}),T=te({method:"z_score",threshold:2.5,decay:"none"}),D=_(null),I=_(null),B=_(null),J=se(()=>[{title:r("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:r("reputation.scoreColumns.did"),key:"did"},{title:r("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:r("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:r("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),oe=se(()=>[{title:r("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:r("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:r("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:r("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:r("reputation.runColumns.status"),key:"status",width:"100px"},{title:r("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("reputation.runColumns.action"),key:"action",width:"160px"}]);function ae(i){const c=`reputation.decay.${i}`,y=r(c);return y===c?i:y}function $(i){const c=`reputation.kind.${i}`,y=r(c);return y===c?i:y}function ee(i){const c=`reputation.objective.${i}`,y=r(c);return y===c?i:y}function C(i){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[i]||"default"}function ne(i){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[i]||"#888"}function re(i){const c=`reputation.objectiveDesc.${i}`,y=r(c);return y===c?"":y}function a(i){const c=`reputation.status.${i}`,y=r(c);return y===c?i:y}function b(i){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[i]||"default"}function K(i){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[i]||"#888"}function Re(i){return i===0?"gold":i===1?"silver":i===2?"bronze":""}function we(i){return i>=.8?"#52c41a":i>=.5?"#1677ff":i>=.3?"#faad14":"#ff4d4f"}function je(i,c){return c?Math.round(i/c*100):0}function Ce(i){const c=I.value?.reputationDistribution.buckets.reduce((y,M)=>y+M.count,0)||0;return c?Math.round(i.count/c*100):0}function Te(i){if(typeof i=="string")return i;try{return JSON.stringify(i,null,2)}catch{return String(i)}}async function G(){Q.value=!0,P.value={noDb:!1,error:""};try{const[i,c,y]=await Promise.all([e.execute(`reputation list --decay ${E.value} --json`,1e4).catch(()=>({output:""})),e.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),e.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),M=[i,c,y].map(le=>N(le.output)).find(le=>le.noDb);M&&(P.value=M),O.value=ce(i.output),z.value=ge(c.output),V.value=he(y.output)}catch(i){g.error(r("reputation.messages.loadFailed",{err:i?.message||i}))}finally{Q.value=!1}}async function De(){try{const{output:i}=await e.execute(`reputation list --decay ${E.value} --json`,1e4),c=N(i);if(c.noDb){P.value=c;return}O.value=ce(i)}catch(i){g.error(r("reputation.messages.loadScoresFailed",{err:i?.message||i}))}}async function Fe(){if(!h.did.trim()){g.warning(r("reputation.messages.didRequired"));return}if(h.score<0||h.score>1){g.warning(r("reputation.messages.scoreRange"));return}R.value=!0;try{const i=[`reputation observe "${h.did.trim().replace(/"/g,'\\"')}"`,String(h.score),`-k ${h.kind}`,`-w ${h.weight}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(!/"did"/.test(c)){g.error(r("reputation.messages.observeFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.observeOk")),Z.value=!1,ue(),await G()}catch(i){g.error(r("reputation.messages.observeFailed",{err:i?.message||i}))}finally{R.value=!1}}async function Ee(){q.value=!0;try{const i=["reputation optimize",`-o ${S.objective}`,`-i ${S.iterations}`,"--json"],{output:c}=await e.execute(i.join(" "),6e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}const M=xe(c);if(!M){g.error(r("reputation.messages.optimizeFailed",{err:c.slice(0,120)}));return}Y.value=!1,g.success(r("reputation.messages.optimizeOk",{score:M.bestScore.toFixed(4)})),await G(),D.value=M,H.value=!0,await ie()}catch(i){g.error(r("reputation.messages.optimizeFailed",{err:i?.message||i}))}finally{q.value=!1}}async function Ie(i){ve.confirm({title:r("reputation.applyConfirm.title"),content:r("reputation.applyConfirm.content",{runId:i.runId.slice(0,12)}),okText:r("reputation.applyConfirm.ok"),cancelText:r("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:c}=await e.execute(`reputation apply ${i.runId}`,8e3);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(/Failed|Error/i.test(c)&&!/Applied/i.test(c)){g.error(r("reputation.messages.applyFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.applyOk")),await G()}catch(c){g.error(r("reputation.messages.applyFailed",{err:c?.message||c}))}}})}async function Me(i){D.value=i,I.value=null,H.value=!0,await ie()}async function ie(){if(D.value){A.value=!0;try{const{output:i}=await e.execute(`reputation analytics ${D.value.runId} --json`,8e3);if(N(i).noDb)return;I.value=ke(i)}catch{}finally{A.value=!1}}}function Le(){B.value=null,j.value=!0}async function Ne(){U.value=!0;try{const i=["reputation anomalies",`-m ${T.method}`,`-t ${T.threshold}`,`-d ${T.decay}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}B.value=_e(c)}catch(i){g.error(r("reputation.messages.detectFailed",{err:i?.message||i}))}finally{U.value=!1}}function ue(){h.did="",h.score=.8,h.kind="generic",h.weight=1}me(G);const de={t:r,ws:e,EMPTY_IMG:w,loading:Q,observing:R,optimizing:q,detectingAnomalies:U,loadingAnalytics:A,scores:O,runs:z,stats:V,errorState:P,activeTab:X,decayFilter:E,showObserveModal:Z,showOptimizeModal:Y,showAnomaliesModal:j,showAnalyticsModal:H,observeForm:h,optimizeForm:S,anomalyForm:T,currentRun:D,currentAnalytics:I,anomalyResult:B,scoreColumns:J,runColumns:oe,decayLabel:ae,kindLabel:$,objectiveLabel:ee,objectiveColor:C,objectiveBarColor:ne,objectiveDesc:re,statusLabel:a,statusColor:b,statusBarColor:K,rankClass:Re,scoreColor:we,pctOfTotal:je,bucketPct:Ce,formatParams:Te,loadAll:G,loadScores:De,submitObservation:Fe,submitOptimization:Ee,applyRun:Ie,viewRunAnalytics:Me,loadAnalyticsForCurrentRun:ie,openAnomaliesModal:Le,runAnomalyDetection:Ne,resetObserveForm:ue,ref:_,onMounted:me,reactive:te,computed:se,get useI18n(){return fe},get ReloadOutlined(){return Qe},get PlusOutlined(){return Ge},get WarningOutlined(){return He},get ThunderboltOutlined(){return Ze},get UserOutlined(){return qe},get EyeOutlined(){return We},get ExperimentOutlined(){return Ke},get LoadingOutlined(){return Je},get TrophyOutlined(){return Ye},get ArrowRightOutlined(){return Ve},get message(){return g},get Modal(){return ve},get Empty(){return be},get useWsStore(){return ye},get parseScores(){return ce},get parseAnomalies(){return _e},get parseRun(){return xe},get parseRuns(){return ge},get parseAnalytics(){return ke},get parseStatsV2(){return he},get detectReputationError(){return N},get formatReputationTime(){return at},get OPTIMIZATION_OBJECTIVES(){return Se},get DECAY_MODELS(){return Xe},get ANOMALY_METHODS(){return $e},get RUN_STATUSES(){return Oe},get OBSERVATION_KINDS(){return et}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},it={class:"page-title"},lt={class:"page-sub"},st={class:"filter-bar"},ct={style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)"}},mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},yt={key:2,style:{color:"var(--text-secondary)"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},vt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},_t={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},gt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},xt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},kt={style:{"padding-top":"8px"}},ht={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},St={key:1},Ot={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},At={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Rt={key:0,style:{"padding-top":"8px"}},wt={class:"params-pre"},jt={style:{color:"#ff4d4f"}},Ct={key:0,style:{"margin-top":"16px"}},Tt={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},Dt={class:"bucket-label"},Ft={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"margin-left":"12px"}};function It(l,t,r,e,w,Q){const R=m("a-button"),q=m("a-space"),U=m("a-alert"),A=m("a-statistic"),O=m("a-card"),z=m("a-col"),V=m("a-row"),P=m("a-radio-button"),X=m("a-radio-group"),E=m("a-progress"),Z=m("a-table"),Y=m("a-tab-pane"),j=m("a-tag"),H=m("a-tabs"),h=m("a-input"),S=m("a-form-item"),T=m("a-input-number"),D=m("a-select-option"),I=m("a-select"),B=m("a-form"),J=m("a-modal"),oe=m("a-divider"),ae=m("a-empty"),$=m("a-list-item"),ee=m("a-list"),C=m("a-descriptions-item"),ne=m("a-descriptions"),re=m("a-spin");return u(),p("div",null,[v("div",rt,[v("div",null,[v("h2",it,s(e.t("reputation.title")),1),v("p",lt,s(e.t("reputation.subtitle")),1)]),o(q,null,{default:n(()=>[o(R,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[o(e.ReloadOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.refresh")),1)]),_:1},8,["loading"]),o(R,{onClick:e.openAnomaliesModal},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.anomalies")),1)]),_:1}),o(R,{type:"primary",onClick:t[0]||(t[0]=a=>e.showOptimizeModal=!0)},{icon:n(()=>[o(e.ThunderboltOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.optimize")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(u(),x(U,{key:0,type:"info","show-icon":"",message:e.t("reputation.noDb.message"),description:e.t("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.trackedDids"),value:e.stats.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.totalObservations"),value:e.stats.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(e.EyeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.optimizationRuns"),value:e.stats.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.active"),value:e.stats.activeRuns,"value-style":{color:e.stats.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${e.stats.maxConcurrentOptimizations}`},{prefix:n(()=>[o(e.LoadingOutlined)]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),o(z,{xs:24,sm:8,lg:4},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.bestEver"),value:e.stats.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(e.TrophyOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Tabs "),o(H,{activeKey:e.activeTab,"onUpdate:activeKey":t[3]||(t[3]=a=>e.activeTab=a),class:"reputation-tabs"},{default:n(()=>[d(" ── Scores tab ──────────────────────────────────────────── "),o(Y,{key:"scores",tab:e.t("reputation.tabs.scores")},{default:n(()=>[v("div",st,[v("span",ct,s(e.t("reputation.filter.decayLabel")),1),o(X,{value:e.decayFilter,"onUpdate:value":t[1]||(t[1]=a=>e.decayFilter=a),size:"small","button-style":"solid",onChange:e.loadScores},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(R,{size:"small",onClick:t[2]||(t[2]=a=>e.showObserveModal=!0)},{icon:n(()=>[o(e.PlusOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.filter.addObservation")),1)]),_:1})]),o(Z,{columns:e.scoreColumns,"data-source":e.scores,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.dids",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b,index:K})=>[a.key==="rank"?(u(),p("span",{key:0,class:Ue(["rank-pill",e.rankClass(K)])},s(K+1),3)):d("v-if",!0),a.key==="did"?(u(),p("span",ut,s(b.did),1)):d("v-if",!0),a.key==="score"?(u(),x(E,{key:2,percent:Math.round(b.score*100),"stroke-color":e.scoreColor(b.score),size:"small",format:()=>b.score.toFixed(4)},null,8,["percent","stroke-color","format"])):d("v-if",!0),a.key==="observations"?(u(),p("span",dt,s(b.observations),1)):d("v-if",!0),a.key==="weightTotal"?(u(),p("span",mt,s(b.weightTotal.toFixed(2)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",pt,[o(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Runs tab ────────────────────────────────────────────── "),o(Y,{key:"runs",tab:e.t("reputation.tabs.runs")},{default:n(()=>[o(Z,{columns:e.runColumns,"data-source":e.runs,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.rows",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b})=>[a.key==="runId"?(u(),p("span",ft,s(b.runId.slice(0,12)),1)):d("v-if",!0),a.key==="objective"?(u(),x(j,{key:1,color:e.objectiveColor(b.objective),style:{"font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(b.objective)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="iterations"?(u(),p("span",yt,s(b.iterations),1)):d("v-if",!0),a.key==="bestScore"?(u(),p("span",{key:3,style:pe({color:e.scoreColor(b.bestScore),fontWeight:500,fontFamily:"monospace"})},s(b.bestScore.toFixed(4)),5)):d("v-if",!0),a.key==="status"?(u(),x(j,{key:4,color:e.statusColor(b.status)},{default:n(()=>[f(s(e.statusLabel(b.status)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="createdAt"?(u(),p("span",bt,s(e.formatReputationTime(b.createdAt)),1)):d("v-if",!0),a.key==="action"?(u(),p(F,{key:6},[o(R,{size:"small",type:"link",onClick:K=>e.viewRunAnalytics(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),b.status==="complete"?(u(),x(R,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:K=>e.applyRun(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",vt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Breakdown tab ───────────────────────────────────────── "),o(Y,{key:"breakdown",tab:e.t("reputation.tabs.breakdown")},{default:n(()=>[o(V,{gutter:[16,16]},{default:n(()=>[o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.RUN_STATUSES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[f(s(e.statusLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalRuns),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.objectiveColor(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byObjective[a]||0,e.stats.totalRuns),"stroke-color":e.objectiveBarColor(a),format:()=>`${e.stats.byObjective[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Add observation modal ──────────────────────────────── "),o(J,{open:e.showObserveModal,"onUpdate:open":t[8]||(t[8]=a=>e.showObserveModal=a),title:e.t("reputation.observe.title"),"confirm-loading":e.observing,width:540,"ok-text":e.t("reputation.observe.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitObservation,onCancel:e.resetObserveForm},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.observe.didLabel"),required:""},{default:n(()=>[o(h,{value:e.observeForm.did,"onUpdate:value":t[4]||(t[4]=a=>e.observeForm.did=a),placeholder:e.t("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.scoreLabel"),required:""},{default:n(()=>[o(T,{value:e.observeForm.score,"onUpdate:value":t[5]||(t[5]=a=>e.observeForm.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),v("span",_t,s(e.t("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.kindLabel")},{default:n(()=>[o(I,{value:e.observeForm.kind,"onUpdate:value":t[6]||(t[6]=a=>e.observeForm.kind=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OBSERVATION_KINDS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.kindLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.weightLabel")},{default:n(()=>[o(T,{value:e.observeForm.weight,"onUpdate:value":t[7]||(t[7]=a=>e.observeForm.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Optimize modal ─────────────────────────────────────── "),o(J,{open:e.showOptimizeModal,"onUpdate:open":t[11]||(t[11]=a=>e.showOptimizeModal=a),title:e.t("reputation.optimize.title"),"confirm-loading":e.optimizing,width:540,"ok-text":e.t("reputation.optimize.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitOptimization},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.optimize.objectiveLabel"),required:""},{default:n(()=>[o(I,{value:e.optimizeForm.objective,"onUpdate:value":t[9]||(t[9]=a=>e.optimizeForm.objective=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),v("div",gt,s(e.objectiveDesc(e.optimizeForm.objective)),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.optimize.iterationsLabel")},{default:n(()=>[o(T,{value:e.optimizeForm.iterations,"onUpdate:value":t[10]||(t[10]=a=>e.optimizeForm.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),v("span",xt,s(e.t("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),o(U,{type:"info","show-icon":"",message:e.t("reputation.optimize.syncMessage"),description:e.t("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Anomaly detection modal ────────────────────────────── "),o(J,{open:e.showAnomaliesModal,"onUpdate:open":t[15]||(t[15]=a=>e.showAnomaliesModal=a),title:e.t("reputation.anomaly.title"),width:640,footer:null},{default:n(()=>[v("div",kt,[o(B,{"label-col":{span:5},"wrapper-col":{span:19}},{default:n(()=>[o(S,{label:e.t("reputation.anomaly.methodLabel")},{default:n(()=>[o(X,{value:e.anomalyForm.method,"onUpdate:value":t[12]||(t[12]=a=>e.anomalyForm.method=a),"button-style":"solid"},{default:n(()=>[(u(!0),p(F,null,L(e.ANOMALY_METHODS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(a==="z_score"?e.t("reputation.anomaly.zScoreLabel"):e.t("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.thresholdLabel")},{default:n(()=>[o(T,{value:e.anomalyForm.threshold,"onUpdate:value":t[13]||(t[13]=a=>e.anomalyForm.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),v("span",ht,s(e.t("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.decayLabel")},{default:n(()=>[o(I,{value:e.anomalyForm.decay,"onUpdate:value":t[14]||(t[14]=a=>e.anomalyForm.decay=a),style:{width:"200px"}},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{"wrapper-col":{offset:5,span:19}},{default:n(()=>[o(R,{type:"primary",loading:e.detectingAnomalies,onClick:e.runAnomalyDetection},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(oe),e.anomalyResult?(u(),p("div",St,[o(V,{gutter:12,style:{"margin-bottom":"12px"}},{default:n(()=>[o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.totalSamples"),value:e.anomalyResult.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.threshold"),value:e.anomalyResult.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.anomalies"),value:e.anomalyResult.anomalies.length,"value-style":{color:e.anomalyResult.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),e.anomalyResult.message?(u(),x(U,{key:0,message:e.anomalyResult.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),e.anomalyResult.anomalies.length?(u(),x(ee,{key:1,size:"small","data-source":e.anomalyResult.anomalies},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[v("span",Ot,s(a.did),1),o(j,{color:"red",style:{"margin-left":"8px"}},{default:n(()=>[f(s(e.t("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),v("span",zt,s(a.reason),1),a.zScore!==null?(u(),p("span",At,s(e.t("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):d("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0)])):(u(),x(ae,{key:0,description:e.t("reputation.anomaly.notDetected"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),d(" ── Run analytics / details modal ──────────────────────── "),o(J,{open:e.showAnalyticsModal,"onUpdate:open":t[16]||(t[16]=a=>e.showAnalyticsModal=a),title:e.t("reputation.analytics.title",{runId:e.currentRun?.runId?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentRun?(u(),p("div",Rt,[o(ne,{column:2,size:"small",bordered:""},{default:n(()=>[o(C,{label:e.t("reputation.analytics.objective")},{default:n(()=>[o(j,{color:e.objectiveColor(e.currentRun.objective)},{default:n(()=>[f(s(e.objectiveLabel(e.currentRun.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.status")},{default:n(()=>[o(j,{color:e.statusColor(e.currentRun.status)},{default:n(()=>[f(s(e.statusLabel(e.currentRun.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.iterations")},{default:n(()=>[f(s(e.currentRun.iterations),1)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.bestScore")},{default:n(()=>[v("span",{style:pe({color:e.scoreColor(e.currentRun.bestScore),fontWeight:500,fontFamily:"monospace"})},s(e.currentRun.bestScore.toFixed(4)),5)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.createdAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.createdAt)),1)]),_:1},8,["label"]),e.currentRun.completedAt?(u(),x(C,{key:0,label:e.t("reputation.analytics.completedAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.completedAt)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.bestParams?(u(),x(C,{key:1,label:e.t("reputation.analytics.bestParams"),span:2},{default:n(()=>[v("pre",wt,s(e.formatParams(e.currentRun.bestParams)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.errorMessage?(u(),x(C,{key:2,label:e.t("reputation.analytics.errorMessage"),span:2},{default:n(()=>[v("span",jt,s(e.currentRun.errorMessage),1)]),_:1},8,["label"])):d("v-if",!0)]),_:1}),o(re,{spinning:e.loadingAnalytics},{default:n(()=>[e.currentAnalytics?(u(),p("div",Ct,[v("h4",Tt,s(e.t("reputation.analytics.distributionTitle")),1),o(O,{size:"small",style:{"margin-bottom":"12px"}},{default:n(()=>[(u(!0),p(F,null,L(e.currentAnalytics.reputationDistribution.buckets,a=>(u(),p("div",{key:a.label,class:"bucket-row"},[v("span",Dt,s(a.label),1),o(E,{percent:e.bucketPct(a),"stroke-color":a.count>0?"#1677ff":"#d9d9d9",format:()=>`${a.count}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentAnalytics.reputationDistribution.mean!==null?(u(),p("div",Ft,[f(s(e.t("reputation.analytics.mean",{value:e.currentAnalytics.reputationDistribution.mean.toFixed(4)}))+" ",1),e.currentAnalytics.reputationDistribution.stdDev!==null?(u(),p("span",Et,s(e.t("reputation.analytics.stdDev",{value:e.currentAnalytics.reputationDistribution.stdDev.toFixed(4)})),1)):d("v-if",!0)])):d("v-if",!0)]),_:1}),e.currentAnalytics.recommendations.length?(u(),x(O,{key:0,title:e.t("reputation.analytics.recommendations"),size:"small"},{default:n(()=>[o(ee,{size:"small","data-source":e.currentAnalytics.recommendations},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),f(" "+s(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1},8,["open","title"])])}const ro=Be(nt,[["render",It],["__scopeId","data-v-c4829a4e"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Reputation.vue"]]);export{ro as default};
@@ -1 +0,0 @@
1
- import{I as u,J as g,U as m,R as i,c as r,K as t,V as f,S as k,r as v,o as se,a as ie,b as j,P as d,Q as _,a2 as xe,F as O,Z as L}from"./vendor-Bn1JzzAn.js";import{Y as ke,t as ae,_ as Se,b as ce,u as de,E as ue,d as F}from"./index-DPguq3X7.js";import{at as Ce,l as Te,a4 as Ne,a_ as Ae,a9 as Oe,a2 as ze,$ as we,k as Ee,R as Me}from"./icons-DEmcnxBf.js";const Ie=Object.freeze(["bm25","vector","hybrid"]);function Fe(n,l=0){return typeof n=="number"&&Number.isFinite(n)?n:l}function Re(n){if(Array.isArray(n))return n.filter(l=>typeof l=="string");if(typeof n!="string")return[];try{const l=JSON.parse(n);if(Array.isArray(l))return l.filter(c=>typeof c=="string")}catch{}return[]}function G(n){if(!n)return{noDb:!1,error:""};const l=ke(n),c=/Database not available/i.test(l);return{noDb:c,error:c?"Database not available":""}}function De(n,l=0){if(!n||typeof n!="object")return null;const c=n.id||"";return c?{key:c,id:c,score:Fe(n.score,0),title:String(n.title||""),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",snippet:String(n.snippet||""),_idx:l}:null}function fe(n){const l=ae(n);return Array.isArray(l)?l.map(De).filter(Boolean):[]}function ye(n,l=0){if(!n||typeof n!="object")return null;const c=n.id||"";return c?{key:c,id:c,title:String(n.title||""),content:n.content??"",tags:Re(n.tags),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",updatedAt:n.updated_at??n.updatedAt??"",_idx:l}:null}function ge(n){const l=ae(n);return Array.isArray(l)?l.map(ye).filter(Boolean):[]}function me(n){const l=ae(n);return!l||typeof l!="object"||Array.isArray(l)?null:ye(l,0)}function _e(n){if(!Array.isArray(n)||n.length===0)return{total:0,categories:[],tags:[]};const l=new Map,c=new Map;for(const e of n){l.set(e.category,(l.get(e.category)||0)+1);for(const x of e.tags)c.set(x,(c.get(x)||0)+1)}return{total:n.length,categories:[...l.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count),tags:[...c.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count)}}function Le(n){if(n==null||n==="")return"—";const l=String(n),c=l.includes(" ")&&!l.includes("T")?l.replace(" ","T")+"Z":l,e=new Date(c);return isNaN(e.getTime())?l:e.toLocaleString("zh-CN",{hour12:!1})}const J="cc.web-panel.search.recent",re=8,Pe={__name:"Search",setup(n,{expose:l}){l();const{t:c}=ce(),e=de(),x=ue.PRESENTED_IMAGE_SIMPLE,q=v(!1),C=v(!1),P=v(!1),B=v(!1),z=v([]),h=v([]),A=v({noDb:!1,error:""}),T=ie({query:"",mode:"hybrid",topK:10}),Q=v(""),w=v(U()),K=v("results"),S=v(""),N=v(""),E=v(!1),M=v(null),V=j(()=>_e(z.value)),Y=j(()=>h.value.length?Math.max(...h.value.map(o=>o.score)):0),W=j(()=>[{title:c("search.noteColumns.title"),key:"title"},{title:c("search.noteColumns.category"),key:"category",width:"120px"},{title:c("search.noteColumns.tags"),key:"tags",width:"240px"},{title:c("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:c("search.noteColumns.action"),key:"action",width:"180px"}]),Z=j(()=>{let o=z.value;if(S.value&&(o=o.filter(s=>s.category===S.value)),N.value.trim()){const s=N.value.trim().toLowerCase();o=o.filter(y=>y.tags.some(b=>b.toLowerCase().includes(s)))}return o});function H(o){const s=`search.mode.${o}`,y=c(s);return y===s?o:y}function X(o){const s=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let y=0;for(let b=0;b<(o||"").length;b++)y=y*31+o.charCodeAt(b)>>>0;return s[y%s.length]}function $(o){return o>=.7?"#52c41a":o>=.5?"#1677ff":o>=.3?"#faad14":"#ff4d4f"}function R(o){return String(o).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function I(o,s){if(!s||!o)return R(o);const y=s.split(/\s+/).filter(Boolean);let b=R(o);for(const ve of y){const be=new RegExp(`(${ve.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");b=b.replace(be,"<mark>$1</mark>")}return b}function ee(o,s){return s?I(o,s):R(o)}function U(){try{const o=localStorage.getItem(J);if(o){const s=JSON.parse(o);if(Array.isArray(s))return s.filter(y=>typeof y=="string").slice(0,re)}}catch{}return[]}function a(o){const s=o.trim();if(!s)return;const y=[s,...w.value.filter(b=>b!==s)];w.value=y.slice(0,re);try{localStorage.setItem(J,JSON.stringify(w.value))}catch{}}function p(){w.value=[];try{localStorage.removeItem(J)}catch{}}function D(o){T.query=o,te()}async function oe(){q.value=!0,A.value={noDb:!1,error:""};try{const{output:o}=await e.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),s=G(o);if(s.noDb){A.value=s,z.value=[];return}z.value=ge(o)}catch(o){F.error(c("search.messages.loadIndexFailed",{err:o?.message||o}))}finally{q.value=!1}}async function te(){const o=T.query.trim();if(!o){F.warning(c("search.messages.queryRequired"));return}P.value=!0,A.value={noDb:!1,error:""};try{const s=[`search ${ne(o)}`,`--mode ${T.mode}`,`--top-k ${T.topK||10}`,"--json"],{output:y}=await e.execute(s.join(" "),15e3),b=G(y);if(b.noDb){A.value=b,h.value=[],B.value=!0,Q.value=o;return}h.value=fe(y),Q.value=o,B.value=!0,a(o),K.value="results"}catch(s){F.error(c("search.messages.searchFailed",{err:s?.message||s}))}finally{P.value=!1}}function ne(o){return`"${String(o).replace(/"/g,'\\"')}"`}function he(o){T.query=o.title,T.mode="vector",te()}async function pe(o){E.value=!0,C.value=!0,M.value=null;try{const{output:s}=await e.execute(`note show ${o} --json`,8e3);if(G(s).noDb){F.error(c("search.messages.needInit"));return}M.value=me(s),M.value||F.error(c("search.messages.noteLoadFailed"))}catch(s){F.error(c("search.messages.loadFailed",{err:s?.message||s}))}finally{C.value=!1}}se(oe);const le={t:c,ws:e,EMPTY_IMG:x,RECENT_LS:J,RECENT_MAX:re,loadingIndex:q,loadingNote:C,searching:P,searched:B,notes:z,results:h,errorState:A,form:T,currentQuery:Q,recentQueries:w,activeTab:K,indexCategoryFilter:S,indexTagFilter:N,showNoteModal:E,currentNote:M,indexSummary:V,topScore:Y,noteColumns:W,filteredNotes:Z,modeLabel:H,categoryColor:X,scoreColor:$,escapeHtml:R,highlightSnippet:I,highlightContent:ee,loadRecent:U,pushRecent:a,clearRecent:p,rerunQuery:D,loadIndex:oe,runSearch:te,shellQuote:ne,searchSimilar:he,viewNote:pe,ref:v,computed:j,onMounted:se,reactive:ie,get useI18n(){return ce},get ReloadOutlined(){return Me},get SearchOutlined(){return Ee},get ThunderboltOutlined(){return we},get BookOutlined(){return ze},get AppstoreOutlined(){return Oe},get TagsOutlined(){return Ae},get FileTextOutlined(){return Ne},get TrophyOutlined(){return Te},get EyeOutlined(){return Ce},get message(){return F},get Empty(){return ue},get useWsStore(){return de},get parseSearchResults(){return fe},get parseNotes(){return ge},get parseNote(){return me},get buildIndexSummary(){return _e},get detectSearchError(){return G},get formatSearchTime(){return Le},get SEARCH_MODES(){return Ie}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Qe={class:"page-title"},je={class:"page-sub"},qe={key:0,class:"recent-row"},Ke={class:"recent-label"},He={class:"score-block"},Ue={class:"result-title"},Ge={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Je={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},Ve={key:0,class:"result-snippet"},Ye=["innerHTML"],We={class:"filter-bar"},Ze={key:0,class:"tag-row"},Xe={class:"tag-row-label"},$e={class:"tag-count"},et={style:{color:"var(--text-primary)","font-weight":"500"}},tt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},at={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{padding:"40px","text-align":"center"}},lt={key:1,style:{"padding-top":"8px"}},st={style:{"font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"var(--text-muted)"}},ct={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},dt={key:0,class:"note-content"},ut=["innerHTML"];function ft(n,l,c,e,x,q){const C=u("a-button"),P=u("a-space"),B=u("a-alert"),z=u("a-input"),h=u("a-col"),A=u("a-radio-button"),T=u("a-radio-group"),Q=u("a-input-number"),w=u("a-row"),K=u("a-form"),S=u("a-tag"),N=u("a-card"),E=u("a-statistic"),M=u("a-empty"),V=u("a-progress"),Y=u("a-list-item-meta"),W=u("a-list-item"),Z=u("a-list"),H=u("a-tab-pane"),X=u("a-table"),$=u("a-tabs"),R=u("a-spin"),I=u("a-descriptions-item"),ee=u("a-descriptions"),U=u("a-modal");return d(),g("div",null,[m("div",Be,[m("div",null,[m("h2",Qe,i(e.t("search.title")),1),m("p",je,i(e.t("search.subtitle")),1)]),r(P,null,{default:t(()=>[r(C,{loading:e.loadingIndex,onClick:e.loadIndex},{icon:t(()=>[r(e.ReloadOutlined)]),default:t(()=>[_(" "+i(e.t("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),f(" noDb banner "),e.errorState.noDb?(d(),k(B,{key:0,type:"info","show-icon":"",message:e.t("search.noDb.message"),description:e.t("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):f("v-if",!0),f(" Search bar "),r(N,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[r(K,{layout:"vertical",model:e.form,onSubmit:xe(e.runSearch,["prevent"])},{default:t(()=>[r(w,{gutter:12},{default:t(()=>[r(h,{span:14},{default:t(()=>[r(z,{value:e.form.query,"onUpdate:value":l[0]||(l[0]=a=>e.form.query=a),size:"large",placeholder:e.t("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:e.runSearch},{prefix:t(()=>[r(e.SearchOutlined)]),_:1},8,["value","placeholder"])]),_:1}),r(h,{span:4},{default:t(()=>[r(T,{value:e.form.mode,"onUpdate:value":l[1]||(l[1]=a=>e.form.mode=a),size:"large","button-style":"solid"},{default:t(()=>[(d(!0),g(O,null,L(e.SEARCH_MODES,a=>(d(),k(A,{key:a,value:a},{default:t(()=>[_(i(e.modeLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),r(h,{span:3},{default:t(()=>[r(Q,{value:e.form.topK,"onUpdate:value":l[2]||(l[2]=a=>e.form.topK=a),min:1,max:50,placeholder:e.t("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),r(h,{span:3},{default:t(()=>[r(C,{type:"primary",size:"large",loading:e.searching,block:"",onClick:e.runSearch},{icon:t(()=>[r(e.ThunderboltOutlined)]),default:t(()=>[_(" "+i(e.t("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),f(" Recent queries chips "),e.recentQueries.length?(d(),g("div",qe,[m("span",Ke,i(e.t("search.recent.label")),1),(d(!0),g(O,null,L(e.recentQueries,a=>(d(),k(S,{key:a,color:"blue",class:"recent-chip",onClick:p=>e.rerunQuery(a)},{default:t(()=>[_(i(a),1)]),_:2},1032,["onClick"]))),128)),r(C,{size:"small",type:"link",danger:"",onClick:e.clearRecent},{default:t(()=>[_(i(e.t("search.recent.clear")),1)]),_:1})])):f("v-if",!0)]),_:1}),f(" Stat cards "),r(w,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.indexedNotes"),value:e.indexSummary.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[r(e.BookOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.categories"),value:e.indexSummary.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[r(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.tags"),value:e.indexSummary.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[r(e.TagsOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.results"),value:e.results.length,"value-style":{color:e.results.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[r(e.FileTextOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),r(h,{xs:24,sm:8,lg:4},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.topScore"),value:e.topScore,precision:3,"value-style":{color:e.scoreColor(e.topScore),fontSize:"20px"}},{prefix:t(()=>[r(e.TrophyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),f(" Tabs "),r($,{activeKey:e.activeTab,"onUpdate:activeKey":l[5]||(l[5]=a=>e.activeTab=a),class:"search-tabs"},{default:t(()=>[f(" ── Results tab ───────────────────────────────────────── "),r(H,{key:"results",tab:e.t("search.tabs.results")},{default:t(()=>[e.searched?e.results.length?(d(),k(Z,{key:2,"data-source":e.results,"item-layout":"vertical",size:"large"},{renderItem:t(({item:a})=>[r(W,{class:"result-row"},{actions:t(()=>[r(C,{type:"link",size:"small",onClick:p=>e.viewNote(a.id)},{icon:t(()=>[r(e.EyeOutlined)]),default:t(()=>[_(" "+i(e.t("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[m("div",He,[r(V,{type:"circle",percent:Math.round(Math.min(1,a.score)*100),"stroke-color":e.scoreColor(a.score),format:()=>a.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[r(Y,null,{title:t(()=>[m("span",Ue,i(a.title||e.t("search.results.noTitle")),1),r(S,{color:e.categoryColor(a.category),style:{"margin-left":"8px"}},{default:t(()=>[_(i(a.category),1)]),_:2},1032,["color"])]),description:t(()=>[m("span",Ge,i(a.id.slice(0,16)),1),m("span",Je,i(e.formatSearchTime(a.createdAt)),1)]),_:2},1024),a.snippet?(d(),g("div",Ve,[m("span",{innerHTML:e.highlightSnippet(a.snippet,e.currentQuery)},null,8,Ye)])):f("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(M,{key:1,description:e.t("search.results.noMatch",{query:e.currentQuery}),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"])):(d(),k(M,{key:0,description:e.t("search.results.promptEmpty"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),f(" ── Index browser tab ────────────────────────────────── "),r(H,{key:"index",tab:e.t("search.tabs.index")},{default:t(()=>[m("div",We,[r(T,{value:e.indexCategoryFilter,"onUpdate:value":l[3]||(l[3]=a=>e.indexCategoryFilter=a),size:"small","button-style":"solid"},{default:t(()=>[r(A,{value:""},{default:t(()=>[_(i(e.t("search.index.allCategories")),1)]),_:1}),(d(!0),g(O,null,L(e.indexSummary.categories.slice(0,6),a=>(d(),k(A,{key:a.name,value:a.name},{default:t(()=>[_(i(a.name)+" ("+i(a.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),r(z,{value:e.indexTagFilter,"onUpdate:value":l[4]||(l[4]=a=>e.indexTagFilter=a),placeholder:e.t("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),f(" Top tags chips "),e.indexSummary.tags.length?(d(),g("div",Ze,[m("span",Xe,i(e.t("search.index.topTagsLabel")),1),(d(!0),g(O,null,L(e.indexSummary.tags.slice(0,12),a=>(d(),k(S,{key:a.name,color:e.indexTagFilter===a.name?"blue":"default",class:"tag-chip",onClick:p=>e.indexTagFilter=e.indexTagFilter===a.name?"":a.name},{default:t(()=>[_(i(a.name)+" ",1),m("span",$e,i(a.count),1)]),_:2},1032,["color","onClick"]))),128))])):f("v-if",!0),r(X,{columns:e.noteColumns,"data-source":e.filteredNotes,pagination:{pageSize:20,showTotal:a=>e.t("search.totals.rows",{count:a})},size:"small",loading:e.loadingIndex,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:p})=>[a.key==="title"?(d(),g(O,{key:0},[m("span",et,i(p.title||e.t("search.results.noTitle")),1),m("div",tt,i(p.id.slice(0,16)),1)],64)):f("v-if",!0),a.key==="category"?(d(),k(S,{key:1,color:e.categoryColor(p.category)},{default:t(()=>[_(i(p.category),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="tags"?(d(),g(O,{key:2},[(d(!0),g(O,null,L(p.tags.slice(0,4),D=>(d(),k(S,{key:D,color:"default",style:{"font-size":"11px"}},{default:t(()=>[_(i(D),1)]),_:2},1024))),128)),p.tags.length>4?(d(),g("span",rt,"+"+i(p.tags.length-4),1)):f("v-if",!0)],64)):f("v-if",!0),a.key==="createdAt"?(d(),g("span",at,i(e.formatSearchTime(p.createdAt)),1)):f("v-if",!0),a.key==="action"?(d(),g(O,{key:4},[r(C,{size:"small",type:"link",onClick:D=>e.viewNote(p.id)},{default:t(()=>[_(i(e.t("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),r(C,{size:"small",type:"link",onClick:D=>e.searchSimilar(p)},{default:t(()=>[_(i(e.t("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):f("v-if",!0)]),emptyText:t(()=>[m("div",ot,[r(e.BookOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+i(e.indexCategoryFilter||e.indexTagFilter?e.t("search.empty.filtered"):e.t("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Note detail modal ─────────────────────────────────── "),r(U,{open:e.showNoteModal,"onUpdate:open":l[6]||(l[6]=a=>e.showNoteModal=a),title:e.t("search.note.title",{title:e.currentNote?.title||""}),width:780,footer:null},{default:t(()=>[e.loadingNote?(d(),g("div",nt,[r(R)])):e.currentNote?(d(),g("div",lt,[r(ee,{column:2,size:"small",bordered:""},{default:t(()=>[r(I,{label:e.t("search.note.id"),span:2},{default:t(()=>[m("span",st,i(e.currentNote.id),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.category")},{default:t(()=>[r(S,{color:e.categoryColor(e.currentNote.category)},{default:t(()=>[_(i(e.currentNote.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),r(I,{label:e.t("search.note.tags")},{default:t(()=>[(d(!0),g(O,null,L(e.currentNote.tags,a=>(d(),k(S,{key:a,color:"default"},{default:t(()=>[_(i(a),1)]),_:2},1024))),128)),e.currentNote.tags.length?f("v-if",!0):(d(),g("span",it,"—"))]),_:1},8,["label"]),r(I,{label:e.t("search.note.createdAt")},{default:t(()=>[_(i(e.formatSearchTime(e.currentNote.createdAt)),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.updatedAt")},{default:t(()=>[_(i(e.formatSearchTime(e.currentNote.updatedAt)),1)]),_:1},8,["label"])]),_:1}),m("h4",ct,i(e.t("search.note.content")),1),e.currentNote.content?(d(),g("div",dt,[m("span",{innerHTML:e.highlightContent(e.currentNote.content,e.currentQuery)},null,8,ut)])):(d(),k(M,{key:1,description:e.t("search.note.emptyContent"),image:e.EMPTY_IMG},null,8,["description","image"]))])):f("v-if",!0)]),_:1},8,["open","title"])])}const yt=Se(Pe,[["render",ft],["__scopeId","data-v-d2b94ce3"],["__file","/tmp/cc-web-panel-1Koio1/repo/packages/web-panel/src/views/Search.vue"]]);export{yt as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-DPguq3X7.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-DO0fd48A.js";import{a0 as t}from"./index-DPguq3X7.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-eBj7qi2J.js";import"./useFlexGapSupport-ekFwFs9h.js";import"./styleChecker-DtyKMtHB.js";import"./index-SDrcQXO1.js";import"./icons-DEmcnxBf.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-Ju0HrAuS.js";import{a0 as t}from"./index-DPguq3X7.js";import"./vendor-Bn1JzzAn.js";import"./index-SDrcQXO1.js";import"./icons-DEmcnxBf.js";const s=t(o);export{s as default};