chainlesschain 0.166.39 → 0.166.41

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 (163) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-qWUdiFr5.js → AIOps-CK9AMSXc.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-B_f7go3E.js → ActionButton-B_PARoec.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-hSGFlSkB.js → Analytics-kB2GmWlI.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-CCYGgj71.js → AppLayout-SnniLCL6.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-BdS1H9gq.js → Artifacts-C30LufT9.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-Cck9IebC.js → Audit-Dx477PoD.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-DZzoM_QS.js → BackgroundAgents-ClvsCYCT.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-D8H_QtGu.js → Backup-Bx9uCsgt.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-CTsNF_pu.js → BaseInput-Br_ecv7G.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-CcEiTYY8.js → Chat-Dzr-d6NV.js} +6 -6
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-9BY1DPuc.js → ChatBubbleRenderer-BQ7pUK2c.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-BPB9NNJx.js → Checkbox-C9O-E90A.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-CKKMf7jD.js → Codegen-CTRBkb29.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-DpSSB4Uu.js → Col--50unLLP.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-CfR6ikoH.js → Community-CFtrKGE_.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-CqnkGGjK.js → Compact-DFoxxofh.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-9IzhdVQb.js → Compliance-CTpxqxpc.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-eXsgH33N.js → Cowork-Dr-56gcV.js} +3 -3
  20. package/src/assets/web-panel/assets/{Cron-DvkzHFRi.js → Cron-B4xZgO5G.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain--az9d9f7.js → Crosschain-Da7BQ7f3.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-_Eb4kpnJ.js → DID-DRsk74D5.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-aDVisdXj.js → Dashboard-DqtAeCxK.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-oQ54XzS9.js → Dropdown-CvWZp7Kk.js} +1 -1
  25. package/src/assets/web-panel/assets/EmailListRenderer-D2gWVD3O.js +1 -0
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DtQTOCQI.js → FamilyGuardDashboard-BFrROP-5.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-Cpnb3Moe.js → Federation-CNMTv4_n.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-DmsrJkeU.js → FormItemContext-Ct_saU8n.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-CpFDYnh3.js → GenericCardRenderer-CrBn2s3P.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-HFG17p7Q.js → Git-CufnJCrr.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-D5Z5c7N8.js → Governance-DKS1J5P5.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-DH159h74.js → Inference-CxB7n-T4.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-DuL1pcJD.js → KnowledgeGraph-uaO_yOid.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-Gqn8hFsM.js → Logs-DnR-CXn3.js} +2 -2
  35. package/src/assets/web-panel/assets/{MarkdownRenderer-NHJaejHI.js → MarkdownRenderer-DdkDiGUd.js} +1 -1
  36. package/src/assets/web-panel/assets/{Marketplace-BArcWifg.js → Marketplace-ePcCe7m1.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-Q1BfBSnd.js → McpTools-CAR6PCH2.js} +2 -2
  38. package/src/assets/web-panel/assets/{Memory-Cz8nRL7N.js → Memory-Bl_H1aqs.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-CRuxLRJw.js → MobileBridge-BjMD_o0K.js} +1 -1
  40. package/src/assets/web-panel/assets/MobileProjects--CKxaWJC.js +1 -0
  41. package/src/assets/web-panel/assets/{Mtc-CFhXZbPk.js → Mtc-DxN4oBCy.js} +6 -6
  42. package/src/assets/web-panel/assets/{MtcAudit-C69LqcZ5.js → MtcAudit-CZg_CONT.js} +4 -4
  43. package/src/assets/web-panel/assets/{Multisig-y7yZeTTG.js → Multisig-D3nrsJvN.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-DgjhoWea.js → NLProgramming-DfffM-fH.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-DRc2WTDh.js → Notes-QE3VQe9j.js} +4 -4
  46. package/src/assets/web-panel/assets/{NotificationSettings-CLPx24yn.js → NotificationSettings-CYGciq5y.js} +1 -1
  47. package/src/assets/web-panel/assets/{OrderTableRenderer-CMSNA4CO.js → OrderTableRenderer-Cx5IwZLp.js} +1 -1
  48. package/src/assets/web-panel/assets/{Organization-Dm6LIyhZ.js → Organization-C8RQZUBu.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-DP4DOYd-.js → Overflow-Dg6cVFza.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-HFwvtFI1.js → P2P-DjRkujm6.js} +2 -2
  51. package/src/assets/web-panel/assets/PdhVaultBrowser-CMpEtOjE.js +7 -0
  52. package/src/assets/web-panel/assets/{Permissions-Bdtxniwh.js → Permissions-jOoYkoQU.js} +4 -4
  53. package/src/assets/web-panel/assets/{PersonalDataHub-Dgl2AbES.js → PersonalDataHub-CfArs3Fo.js} +4 -4
  54. package/src/assets/web-panel/assets/{Pipeline-DpZrzYwK.js → Pipeline-DBaHyX1b.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-EQ551c0t.js → Privacy-Wv2VD4nl.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-xUSeczsM.js → ProjectInit-CiJPc1_A.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-B66Sr_t8.js → ProjectSettings-Dw1cWjEG.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-B4zikj95.js → Projects-CWtB5sqm.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-DjLbqQPh.js → Providers-DSn6SDyz.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-KVsAQCd_.js → QrScannerModal-ft3b2Qpr.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-C4noJXu8.js → QuickAsk-GE6AQSq7.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-Cn15clqY.js → Recommend-DMSEq8uY.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-DdonMFwH.js → RemoteSession-Uu-HSEai.js} +3 -3
  64. package/src/assets/web-panel/assets/{Reputation-Bqe3NwWN.js → Reputation-CIcpi3_V.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-CnxBgjkD.js → Row-UVMeD3Wm.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-CSRrgZyK.js → RssFeed-CD4MNI1l.js} +3 -3
  67. package/src/assets/web-panel/assets/{Search-DTUYUfFx.js → Search-AlxcFL5q.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-BHExHVIm.js → Security-Du5J0dDR.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-B_IWqPes.js → Services-CGDVJAoN.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-C_oAtzmX.js → Skeleton-CCQDNIXk.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-maJNokSL.js → Skills-4BRwqGQe.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-CMM_ZsLH.js → Sla-CgG0JuJh.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-D7w_oNwK.js → SpeechSettings-qgkTz2pO.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-D0Zl3NIr.js → SyncSettings-DRTuKcuZ.js} +2 -2
  75. package/src/assets/web-panel/assets/Tasks-BfOq9EqX.js +1 -0
  76. package/src/assets/web-panel/assets/{Templates-C6T6oCpR.js → Templates-d78d-BZI.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-ByL-kAYO.js → Tenant-XwKmfX8F.js} +1 -1
  78. package/src/assets/web-panel/assets/{Terminal-6JXNhc3b.js → Terminal-Wqr2Kcev.js} +2 -2
  79. package/src/assets/web-panel/assets/TimelineRenderer-BjzPNKDr.js +1 -0
  80. package/src/assets/web-panel/assets/{Tokens-C0TWTIER.js → Tokens-DWRgtMpW.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-DpC5aaJu.js → Trigger-BCDWY1I7.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-lqqflCwv.js → Trust-CI47nsTZ.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-BYSlVfBc.js → UkeySign-BxxUVNJf.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-DX08oo_R.js → VideoEditing-K6atXnE3.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-CcIFPvzL.js → Wallet-DALnM69L.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-D8DfxfVT.js → WebAuthn-DiDAUHrG.js} +5 -5
  87. package/src/assets/web-panel/assets/{WorkflowEditor-Csadpaln.js → WorkflowEditor-CCYTnfUH.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-CewHWc_T.js → chat-0oQNEtRw.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-B8at89r3.js → colors-C1A1ekPG.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-v_gxtF5-.js → compact-item-Bm5w8Q--.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-BOwFpJqA.js → createContext-VzW0CVyb.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-BuusI785.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-DjHUzt7E.js → hasIn-B8u-fCyP.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-Bz8C8VXx.js → index-5dKHibv1.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-Cb1uNDOv.js → index-BEQNF8dD.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-Ca8YZU2B.js → index-BIYC0OR5.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DiKaYIdo.js → index-BVcRk2yF.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BPJ7uL2Q.js → index-BbFi-5C6.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-1Tfwr_GA.js → index-BdhglNFh.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DUMvVGyf.js → index-BfKBL8PY.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Ddw05Myq.js → index-Bg-LBQME.js} +1 -1
  102. package/src/assets/web-panel/assets/index-BiH_a1Cv.js +1 -0
  103. package/src/assets/web-panel/assets/{index-hyeBuocp.js → index-BicVNOi5.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CwHoF-TP.js → index-C0m5PpMV.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-CXIPAeAB.js → index-C4_ABRMS.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BVPsegMN.js → index-C5LAh2pw.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Caf9UjhG.js → index-CX4GAKgB.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-5qmLo1us.js → index-CXEOVGeZ.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CquUCUzS.js → index-CflXFLrN.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DdHdbXpy.js → index-CicT_guC.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Cxk0mCoQ.js → index-CpZdwtCH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DmZLZsyC.js → index-CtMiuJK-.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Dfrb3Prv.js → index-CzTQseVr.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D3o-pacB.js → index-D6ou7QIj.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Khw7wzVk.js → index-D7q2TsaJ.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-FgUrhq_H.js → index-DBE3blUA.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-coOi37of.js → index-DOrjt98B.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BGrmPk8T.js → index-DV_Pfu-b.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BRNyE3Kb.js → index-DW-aGHSh.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DA3n0Y28.js → index-DcLZlcMA.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CV1SgaBd.js → index-DcmUqRug.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C7MHbmwn.js → index-Dj0yOalO.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BC20EQ7h.js → index-DjMG0Vw9.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BdZLA7k9.js → index-Dxx4WU96.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-CFL1Hewx.js → index-Dy85cPQr.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-B_egGFcR.js → index-KCmGGWAT.js} +3 -3
  127. package/src/assets/web-panel/assets/{index-Bk_Te9OR.js → index-NzJz9-49.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-San3zacc.js → index-SmhdgbaR.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DRRK_8Eg.js → index-jMjP2tFO.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-uk59xr0W.js → index-k5exH2qO.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-wjvn8-9F.js → index-lE4Q1Goz.js} +1 -1
  132. package/src/assets/web-panel/assets/index-t3MTPSt6.js +1 -0
  133. package/src/assets/web-panel/assets/{initDefaultProps-Id2dFdjh.js → initDefaultProps-DbZ3dIR7.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-DRxtwxng.js → motion-ATVJwqzT.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-BDYvdTb6.js → move-Bxj0ZywY.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-cz8LGI8Z.js → mtc-parser-0j7iOj1h.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-DHJeh6tH.js → omit-DsAzx9jL.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-XJEQIp7e.js → pickAttrs-CIyAoQIB.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-AFcf8lEn.js → placementArrow-KU51oLwW.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-CDEeBxs1.js → responsiveObserve-CCmx1m3K.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-CvbVfi6T.js → slide-CoxSb_UP.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-DtCyuEnq.js → statusUtils-B-3-3uWm.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker--UgmTsGY.js → styleChecker-BT1IFFpw.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-D9i1as-Y.js → useFlexGapSupport-CEKYnxGt.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-CJx3zw01.js → useFs-B_UyzZK-.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-ZsIKYdZv.js → usePersonalDataHub-B7fGu-O1.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-B2RGEQG4.js → vnode-BLOmOgkK.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-ob-0px2z.js → zoom-8yzckhp-.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/data/changelog.json +26 -0
  151. package/src/lib/pr-close-intent.js +64 -0
  152. package/src/lib/remote-read-loop-guard.js +206 -38
  153. package/src/lib/task-progress-tracker.js +7 -4
  154. package/src/runtime/agent-core.js +109 -10
  155. package/src/runtime/coding-agent-shell-policy.cjs +10 -17
  156. package/src/assets/web-panel/assets/EmailListRenderer-BUPdMau1.js +0 -1
  157. package/src/assets/web-panel/assets/MobileProjects-B1CQIAGp.js +0 -1
  158. package/src/assets/web-panel/assets/PdhVaultBrowser-D9gPfKRM.js +0 -7
  159. package/src/assets/web-panel/assets/Tasks-Bs0H0ctR.js +0 -1
  160. package/src/assets/web-panel/assets/TimelineRenderer-KiuUtCsl.js +0 -1
  161. package/src/assets/web-panel/assets/devWarning-DenB_kSS.js +0 -1
  162. package/src/assets/web-panel/assets/index-B8bNwM9U.js +0 -1
  163. package/src/assets/web-panel/assets/index-DC0cpgIP.js +0 -1
@@ -1,5 +1,5 @@
1
- import{E as br,r as se,I as ne,J as de,U as Te,c as L,K as A,S as re,V as ie,o as Qt,a8 as Wt,b as He,P as D,Q as Z,R as ae,F as Jt,Z as en,a5 as Er}from"./vendor-Bn1JzzAn.js";import{Q as vr}from"./QrScannerModal-KVsAQCd_.js";import{_ as xr}from"./index-B_egGFcR.js";import{ax as Sr,aC as Ir}from"./icons-DG5UD-6K.js";import"./markdown-CsiA8-E5.js";function _r(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Ue(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(`${n}expected number, got ${typeof t}`)}if(!Number.isSafeInteger(t)||t<0){const n=e&&`"${e}" `;throw new RangeError(`${n}expected integer >= 0, got ${t}`)}}function he(t,e,n=""){const r=_r(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",l=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+l;throw r?new RangeError(c):new TypeError(c)}return t}function Dt(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Ue(t.outputLen),Ue(t.blockLen),t.outputLen<1)throw new Error('"outputLen" must be >= 1');if(t.blockLen<1)throw new Error('"blockLen" must be >= 1')}function ht(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function qn(t,e){he(t,void 0,"digestInto() output");const n=e.outputLen;if(t.length<n)throw new RangeError('"digestInto() output" expected to be of length >='+n)}function Ve(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Et(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function le(t,e){return t<<32-e|t>>>e}const Cn=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Rr=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Ft(t){if(he(t),Cn)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Rr[t[n]];return e}const pe={_0:48,_9:57,A:65,F:70,a:97,f:102};function tn(t){if(t>=pe._0&&t<=pe._9)return t-pe._0;if(t>=pe.A&&t<=pe.F)return t-(pe.A-10);if(t>=pe.a&&t<=pe.f)return t-(pe.a-10)}function jt(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Cn)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=tn(t.charCodeAt(s)),a=tn(t.charCodeAt(s+1));if(i===void 0||a===void 0){const l=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+l+'" at index '+s)}r[o]=i*16+a}return r}function Ar(t,e={}){const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Br(t=32){Ue(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Or=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function kr(t,e,n){return t&e^~t&n}function Tr(t,e,n){return t&e^t&n^e&n}class Lr{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Et(this.buffer)}update(e){ht(this),he(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const l=Et(e);for(;o<=s-i;i+=o)this.process(l,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ht(this),qn(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,Ve(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;r.setBigUint64(o-8,BigInt(this.length*8),s),this.process(r,0);const a=Et(e),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=l/4,d=this.get();if(c>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<c;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||=new this.constructor,e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const me=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),qr=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]),we=new Uint32Array(64);class Cr extends Lr{constructor(e){super(64,e,8,!1)}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:l}=this;return[e,n,r,o,s,i,a,l]}set(e,n,r,o,s,i,a,l){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=l|0}process(e,n){for(let u=0;u<16;u++,n+=4)we[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=we[u-15],h=we[u-2],v=le(m,7)^le(m,18)^m>>>3,x=le(h,17)^le(h,19)^h>>>10;we[u]=x+we[u-7]+v+we[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:l,G:c,H:d}=this;for(let u=0;u<64;u++){const m=le(a,6)^le(a,11)^le(a,25),h=d+m+kr(a,l,c)+qr[u]+we[u]|0,x=(le(r,2)^le(r,13)^le(r,22))+Tr(r,o,s)|0;d=c,c=l,l=a,a=i+h|0,i=s,s=o,o=r,r=h+x|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,l=l+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,l,c,d)}roundClean(){Ve(we)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),Ve(this.buffer)}}class Ur extends Cr{A=me[0]|0;B=me[1]|0;C=me[2]|0;D=me[3]|0;E=me[4]|0;F=me[5]|0;G=me[6]|0;H=me[7]|0;constructor(){super(32)}}const nn=Ar(()=>new Ur,Or(1));const be=(t,e,n)=>he(t,e,n),Un=Ue,Nn=Ft,Nr=t=>jt(t),Pr=t=>Br(t),gt=BigInt(0),Lt=BigInt(1);function Pn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}" `;throw new TypeError(n+"expected boolean, got type="+typeof t)}return t}function Mr(t){if(typeof t=="bigint"){if(!ft(t))throw new RangeError("positive bigint expected, got "+t)}else Un(t);return t}function rn(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function Mn(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?gt:BigInt("0x"+t)}function Dr(t){return Mn(Ft(t))}function Xe(t){return Mn(Ft(Ge(he(t)).reverse()))}function Dn(t,e){if(Ue(e),e===0)throw new RangeError("zero length");t=Mr(t);const n=t.toString(16);if(n.length>e*2)throw new RangeError("number too large");return jt(n.padStart(e*2,"0"))}function Fn(t,e){return Dn(t,e).reverse()}function Fr(t,e){if(t=be(t),e=be(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function Ge(t){return Uint8Array.from(be(t))}const ft=t=>typeof t=="bigint"&&gt<=t;function jr(t,e,n){return ft(t)&&ft(e)&&ft(n)&&e<=t&&t<n}function mt(t,e,n,r){if(!jr(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function Hr(t){if(t<gt)throw new Error("expected non-negative bigint, got "+t);let e;for(e=0;t>gt;t>>=Lt,e+=1);return e}const $r=t=>(Lt<<BigInt(t))-Lt;function Ht(t,e={},n={}){if(Object.prototype.toString.call(t)!=="[object Object]")throw new TypeError("expected valid options object");function r(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(t,s))throw new TypeError(`param "${s}" is invalid: expected own property`);const l=t[s];if(a&&l===void 0)return;const c=typeof l;if(c!==i||l===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${c}`)}const o=(s,i)=>Object.entries(s).forEach(([a,l])=>r(a,l,i));o(e,!1),o(n,!0)}const on=()=>{throw new Error("not implemented")};const Q=BigInt(0),Y=BigInt(1),_e=BigInt(2),jn=BigInt(3),Hn=BigInt(4),$n=BigInt(5),zr=BigInt(7),zn=BigInt(8),Zr=BigInt(9),Zn=BigInt(16);function j(t,e){if(e<=Q)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=Q?n:e+n}function ce(t,e,n){if(e<Q)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >Q;)r*=r,r%=n;return r}function sn(t,e){if(t===Q)throw new Error("invert: expected non-zero number");if(e<=Q)throw new Error("invert: expected positive modulus, got "+e);let n=j(t,e),r=e,o=Q,s=Y;for(;n!==Q;){const a=r/n,l=r-n*a,c=o-s*a;r=n,n=l,o=s,s=c}if(r!==Y)throw new Error("invert: does not exist");return j(o,e)}function $t(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function Kn(t,e){const n=t,r=(n.ORDER+Y)/Hn,o=n.pow(e,r);return $t(n,o,e),o}function Kr(t,e){const n=t,r=(n.ORDER-$n)/zn,o=n.mul(e,_e),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,_e),s),l=n.mul(i,n.sub(a,n.ONE));return $t(n,l,e),l}function Yr(t){const e=zt(t),n=Yn(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+zr)/Zn;return((a,l)=>{const c=a;let d=c.pow(l,i),u=c.mul(d,r);const m=c.mul(d,o),h=c.mul(d,s),v=c.eql(c.sqr(u),l),x=c.eql(c.sqr(m),l);d=c.cmov(d,u,v),u=c.cmov(h,m,x);const p=c.eql(c.sqr(u),l),y=c.cmov(d,u,p);return $t(c,y,l),y})}function Yn(t){if(t<jn)throw new Error("sqrt is not defined for small field");let e=t-Y,n=0;for(;e%_e===Q;)e/=_e,n++;let r=_e;const o=zt(t);for(;cn(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Kn;let s=o.pow(r,e);const i=(e+Y)/_e;return function(l,c){const d=l;if(d.is0(c))return c;if(cn(d,c)!==1)throw new Error("Cannot find square root");let u=n,m=d.mul(d.ONE,s),h=d.pow(c,e),v=d.pow(c,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))return d.ZERO;let x=1,p=d.sqr(h);for(;!d.eql(p,d.ONE);)if(x++,p=d.sqr(p),x===u)throw new Error("Cannot find square root");const y=Y<<BigInt(u-x-1),b=d.pow(m,y);u=x,m=d.sqr(b),h=d.mul(h,m),v=d.mul(v,b)}return v}}function Vr(t){return t%Hn===jn?Kn:t%zn===$n?Kr:t%Zn===Zr?Yr(t):Yn(t)}const Se=(t,e)=>(j(t,e)&Y)===Y,Xr=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Gr(t){const e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=Xr.reduce((r,o)=>(r[o]="function",r),e);if(Ht(t,n),rn(t.BYTES,"BYTES"),rn(t.BITS,"BITS"),t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=Y)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function Qr(t,e,n){const r=t;if(n<Q)throw new Error("invalid exponent, negatives unsupported");if(n===Q)return r.ONE;if(n===Y)return e;let o=r.ONE,s=e;for(;n>Q;)n&Y&&(o=r.mul(o,s)),s=r.sqr(s),n>>=Y;return o}function Vn(t,e,n=!1){const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,l,c)=>r.is0(l)?a:(o[c]=a,r.mul(a,l)),r.ONE),i=r.inv(s);return e.reduceRight((a,l,c)=>r.is0(l)?a:(o[c]=r.mul(a,o[c]),r.mul(a,l)),i),o}function cn(t,e){const n=t,r=(n.ORDER-Y)/_e,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function Wr(t,e){if(e!==void 0&&Un(e),t<=Q)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=Hr(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected bit length (${n}) >= n.length (${e})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const an=new WeakMap;class Xn{ORDER;BITS;BYTES;isLE;ZERO=Q;ONE=Y;_lengths;_mod;constructor(e,n={}){if(e<=Y)throw new Error("invalid field: expected ORDER > 1, got "+e);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}=Wr(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return j(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return Q<=e&&e<this.ORDER}is0(e){return e===Q}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&Y)===Y}neg(e){return j(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return j(e*e,this.ORDER)}add(e,n){return j(e+n,this.ORDER)}sub(e,n){return j(e-n,this.ORDER)}mul(e,n){return j(e*n,this.ORDER)}pow(e,n){return Qr(this,e,n)}div(e,n){return j(e*sn(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return sn(e,this.ORDER)}sqrt(e){let n=an.get(this);return n||an.set(this,n=Vr(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?Fn(e,this.BYTES):Dn(e,this.BYTES)}fromBytes(e,n=!1){be(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const c=new Uint8Array(o);c.set(e,s?0:c.length-e.length),e=c}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let l=s?Xe(e):Dr(e);if(a&&(l=j(l,i)),!n&&!this.isValid(l))throw new Error("invalid field element: outside of range 0..ORDER");return l}invertBatch(e){return Vn(this,e)}cmov(e,n,r){return Pn(r,"condition"),r?n:e}}Object.freeze(Xn.prototype);function zt(t,e={}){return new Xn(t,e)}const wt=BigInt(0),qt=BigInt(1);function ln(t,e){const n=e.negate();return t?n:e}function vt(t,e){const n=Vn(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function Gn(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function xt(t,e){Gn(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=$r(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function un(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),l=t>>i;a>r&&(a-=s,l+=qt);const c=e*r,d=c+Math.abs(a)-1,u=a===0,m=a<0,h=e%2!==0;return{nextN:l,offset:d,isZero:u,isNeg:m,isNegF:h,offsetF:c}}const St=new WeakMap,Qn=new WeakMap;function It(t){return Qn.get(t)||1}function fn(t){if(t!==wt)throw new Error("invalid wNAF")}class Jr{BASE;ZERO;Fn;bits;constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>wt;)n&qt&&(r=r.add(o)),o=o.double(),n>>=qt;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=xt(n,this.bits),s=[];let i=e,a=i;for(let l=0;l<r;l++){a=i,s.push(a);for(let c=1;c<o;c++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=xt(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:l,offset:c,isZero:d,isNeg:u,isNegF:m,offsetF:h}=un(r,a,i);r=l,d?s=s.add(ln(m,n[h])):o=o.add(ln(u,n[c]))}return fn(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=xt(e,this.bits);for(let i=0;i<s.windows&&r!==wt;i++){const{nextN:a,offset:l,isZero:c,isNeg:d}=un(r,i,s);if(r=a,!c){const u=n[l];o=o.add(d?u.negate():u)}}return fn(r),o}getPrecomputes(e,n,r){let o=St.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),St.set(n,o))),o}cached(e,n,r){const o=It(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=It(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){Gn(n,this.bits),Qn.set(e,n),St.delete(e)}hasCache(e){return It(e)!==1}}function dn(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Gr(e),e}else return zt(t,{isLE:n})}function eo(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const l of["p","n","h"]){const c=e[l];if(!(typeof c=="bigint"&&c>wt))throw new Error(`CURVE.${l} must be positive bigint`)}const o=dn(e.p,n.Fp,r),s=dn(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const l of a)if(!o.isValid(e[l]))throw new Error(`CURVE.${l} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function to(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const ye=BigInt(0),J=BigInt(1),_t=BigInt(2),no=BigInt(8);function ro(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function oo(t,e={}){const n=e,r=eo("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;Ht(n,{},{uvRatio:"function"});const l=_t<<BigInt(s.BYTES*8)-J,c=x=>o.create(x),d=n.uvRatio===void 0?(x,p)=>{try{return{isValid:!0,value:o.sqrt(o.div(x,p))}}catch{return{isValid:!1,value:ye}}}:n.uvRatio;if(!ro(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function u(x,p,y=!1){const b=y?J:ye;return mt("coordinate "+x,p,b,l),p}function m(x){if(!(x instanceof h))throw new Error("EdwardsPoint expected")}class h{static BASE=new h(i.Gx,i.Gy,J,c(i.Gx*i.Gy));static ZERO=new h(ye,J,J,ye);static Fp=o;static Fn=s;X;Y;Z;T;constructor(p,y,b,E){this.X=u("x",p),this.Y=u("y",y),this.Z=u("z",b,!0),this.T=u("t",E),Object.freeze(this)}static CURVE(){return i}static fromAffine(p){if(p instanceof h)throw new Error("extended point not allowed");const{x:y,y:b}=p||{};return u("x",y),u("y",b),new h(y,b,J,c(y*b))}static fromBytes(p,y=!1){const b=o.BYTES,{a:E,d:I}=i;p=Ge(be(p,b,"point")),Pn(y,"zip215");const k=Ge(p),P=p[b-1];k[b-1]=P&-129;const R=Xe(k),T=y?l:o.ORDER;mt("point.y",R,ye,T);const B=c(R*R),C=c(B-J),M=c(I*B-E);let{isValid:V,value:H}=d(C,M);if(!V)throw new Error("bad point: invalid y coordinate");const O=(H&J)===J,N=(P&128)!==0;if(!y&&H===ye&&N)throw new Error("bad point: x=0 and x_0=1");return N!==O&&(H=c(-H)),h.fromAffine({x:H,y:R})}static fromHex(p,y=!1){return h.fromBytes(Nr(p),y)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(p=8,y=!0){return v.createCache(this,p),y||this.multiply(_t),this}assertValidity(){const p=this,{a:y,d:b}=i;if(p.is0())throw new Error("bad point: ZERO");const{X:E,Y:I,Z:k,T:P}=p,R=c(E*E),T=c(I*I),B=c(k*k),C=c(B*B),M=c(R*y),V=c(B*c(M+T)),H=c(C+c(b*c(R*T)));if(V!==H)throw new Error("bad point: equation left != right (1)");const O=c(E*I),N=c(k*P);if(O!==N)throw new Error("bad point: equation left != right (2)")}equals(p){m(p);const{X:y,Y:b,Z:E}=this,{X:I,Y:k,Z:P}=p,R=c(y*P),T=c(I*E),B=c(b*P),C=c(k*E);return R===T&&B===C}is0(){return this.equals(h.ZERO)}negate(){return new h(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:p}=i,{X:y,Y:b,Z:E}=this,I=c(y*y),k=c(b*b),P=c(_t*c(E*E)),R=c(p*I),T=y+b,B=c(c(T*T)-I-k),C=R+k,M=C-P,V=R-k,H=c(B*M),O=c(C*V),N=c(B*V),S=c(M*C);return new h(H,O,S,N)}add(p){m(p);const{a:y,d:b}=i,{X:E,Y:I,Z:k,T:P}=this,{X:R,Y:T,Z:B,T:C}=p,M=c(E*R),V=c(I*T),H=c(P*b*C),O=c(k*B),N=c((E+I)*(R+T)-M-V),S=O-H,F=O+H,$=c(V-y*M),K=c(N*S),X=c(F*$),W=c(N*$),te=c(S*F);return new h(K,X,te,W)}subtract(p){return m(p),this.add(p.negate())}multiply(p){if(!s.isValidNot0(p))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:y,f:b}=v.cached(this,p,E=>vt(h,E));return vt(h,[y,b])[0]}multiplyUnsafe(p){if(!s.isValid(p))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return p===ye?h.ZERO:this.is0()||p===J?this:v.unsafe(this,p,y=>vt(h,y))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return v.unsafe(this,i.n).is0()}toAffine(p){const y=this;let b=p;const{X:E,Y:I,Z:k}=y,P=y.is0();b==null&&(b=P?no:o.inv(k));const R=c(E*b),T=c(I*b),B=o.mul(k,b);if(P)return{x:ye,y:J};if(B!==J)throw new Error("invZ was invalid");return{x:R,y:T}}clearCofactor(){return a===J?this:this.multiplyUnsafe(a)}toBytes(){const{x:p,y}=this.toAffine(),b=o.toBytes(y);return b[b.length-1]|=p&J?128:0,b}toHex(){return Nn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const v=new Jr(h,s.BITS);return s.BITS>=8&&h.BASE.precompute(8),Object.freeze(h.prototype),Object.freeze(h),h}class so{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){on()}static fromHex(e){on()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Nn(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,n){return this.ep.precompute(e,n),this}}const $e=BigInt(0),Le=BigInt(1),nt=BigInt(2);function io(t){return Ht(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...t})}function co(t){const e=io(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=r==="x25519";if(!a&&r!=="x448")throw new Error("invalid type");const l=i===void 0?Pr:i,c=a?255:448,d=a?32:56,u=BigInt(a?9:5),m=BigInt(a?121665:39081),h=a?nt**BigInt(254):nt**BigInt(447),v=a?BigInt(8)*nt**BigInt(251)-Le:BigInt(4)*nt**BigInt(445)-Le,x=h+v+Le,p=O=>j(O,n),y=b(u);function b(O){return Fn(p(O),d)}function E(O){const N=Ge(be(O,d,"uCoordinate"));return a&&(N[31]&=127),p(Xe(N))}function I(O){return Xe(o(Ge(be(O,d,"scalar"))))}function k(O,N){const S=C(E(N),I(O));if(S===$e)throw new Error("invalid private or public key received");return b(S)}function P(O){return k(O,y)}const R=P,T=k;function B(O,N,S){const F=p(O*(N-S));return N=p(N-F),S=p(S+F),{x_2:N,x_3:S}}function C(O,N){mt("u",O,$e,n),mt("scalar",N,h,x);const S=N,F=O;let $=Le,K=$e,X=O,W=Le,te=$e;for(let Me=BigInt(c-1);Me>=$e;Me--){const Je=S>>Me&Le;te^=Je,{x_2:$,x_3:X}=B(te,$,X),{x_2:K,x_3:W}=B(te,K,W),te=Je;const De=$+K,Ae=p(De*De),Be=$-K,ge=p(Be*Be),Oe=Ae-ge,ue=X+W,bt=X-W,Fe=p(bt*De),ke=p(ue*Be),ve=Fe+ke,et=Fe-ke;X=p(ve*ve),W=p(F*p(et*et)),$=p(Ae*ge),K=p(Oe*(Ae+p(m*Oe)))}({x_2:$,x_3:X}=B(te,$,X)),{x_2:K,x_3:W}=B(te,K,W);const Pe=s(K);return p($*Pe)}const M={secretKey:d,publicKey:d,seed:d},V=O=>(O=O===void 0?l(d):O,be(O,M.seed,"seed"),O),H={randomSecretKey:V};return Object.freeze(M),Object.freeze(H),Object.freeze({keygen:to(V,R),getSharedSecret:T,getPublicKey:R,scalarMult:k,scalarMultBase:P,utils:H,GuBytes:y.slice(),lengths:M})}const ao=BigInt(0),Ye=BigInt(1),pn=BigInt(2),lo=BigInt(3),uo=BigInt(5),fo=BigInt(8),Ne=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Wn={p:Ne,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:fo,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Jn(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Ne,a=t*t%s*t%s,l=ce(a,pn,s)*a%s,c=ce(l,Ye,s)*t%s,d=ce(c,uo,s)*c%s,u=ce(d,e,s)*d%s,m=ce(u,n,s)*u%s,h=ce(m,r,s)*m%s,v=ce(h,o,s)*h%s,x=ce(v,o,s)*h%s,p=ce(x,e,s)*d%s;return{pow_p_5_8:ce(p,pn,s)*t%s,b2:a}}function po(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Ct=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function er(t,e){const n=Ne,r=j(e*e*e,n),o=j(r*r*e,n),s=Jn(t*o).pow_p_5_8;let i=j(t*r*s,n);const a=j(e*i*i,n),l=i,c=j(i*Ct,n),d=a===t,u=a===j(-t,n),m=a===j(-t*Ct,n);return d&&(i=l),(u||m)&&(i=c),Se(i,n)&&(i=j(-i,n)),{isValid:d||u,value:i}}const Ce=oo(Wn,{uvRatio:er}),Ie=Ce.Fp,ho=Ce.Fn,Ut=(()=>{const t=Ne;return co({P:t,type:"x25519",powPminus2:e=>{const{pow_p_5_8:n,b2:r}=Jn(e);return j(ce(n,lo,t)*r,t)},adjustScalarBytes:po})})(),hn=Ct,go=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),gn=t=>er(Ye,t),mo=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),wo=t=>Ie.create(Xe(t)&mo);class oe extends so{static BASE=new oe(Ce.BASE);static ZERO=new oe(Ce.ZERO);static Fp=Ie;static Fn=ho;constructor(e){super(e)}static fromAffine(e){return new oe(Ce.fromAffine(e))}assertSame(e){if(!(e instanceof oe))throw new Error("RistrettoPoint expected")}init(e){return new oe(e)}static fromBytes(e){he(e,32);const{a:n,d:r}=Wn,o=Ne,s=I=>Ie.create(I),i=wo(e);if(!Fr(Ie.toBytes(i),e)||Se(i,o))throw new Error("invalid ristretto255 encoding 1");const a=s(i*i),l=s(Ye+n*a),c=s(Ye-n*a),d=s(l*l),u=s(c*c),m=s(n*r*d-u),{isValid:h,value:v}=gn(s(m*u)),x=s(v*c),p=s(v*x*m);let y=s((i+i)*x);Se(y,o)&&(y=s(-y));const b=s(l*p),E=s(y*b);if(!h||Se(E,o)||b===ao)throw new Error("invalid ristretto255 encoding 2");return new oe(new Ce(y,b,Ye,E))}static fromHex(e){return oe.fromBytes(jt(e))}toBytes(){let{X:e,Y:n,Z:r,T:o}=this.ep;const s=Ne,i=p=>Ie.create(p),a=i(i(r+n)*i(r-n)),l=i(e*n),c=i(l*l),{value:d}=gn(i(a*c)),u=i(d*a),m=i(d*l),h=i(u*m*o);let v;if(Se(o*h,s)){let p=i(n*hn),y=i(e*hn);e=p,n=y,v=i(u*go)}else v=m;Se(e*h,s)&&(n=i(-n));let x=i((r-n)*v);return Se(x,s)&&(x=i(-x)),Ie.toBytes(x)}equals(e){this.assertSame(e);const{X:n,Y:r}=this.ep,{X:o,Y:s}=e.ep,i=c=>Ie.create(c),a=i(n*s)===i(r*o),l=i(r*s)===i(n*o);return a||l}is0(){return this.equals(oe.ZERO)}}Object.freeze(oe.BASE);Object.freeze(oe.ZERO);Object.freeze(oe.prototype);Object.freeze(oe);class mn{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(Dt(e),he(n,void 0,"key"),this.iHash=e.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?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Ve(o)}update(e){return ht(this),this.iHash.update(e),this}digestInto(e){ht(this),qn(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const tr=(()=>{const t=((e,n,r)=>new mn(e,n).update(r).digest());return t.create=(e,n)=>new mn(e,n),t})();function yo(t,e,n){return Dt(t),n===void 0&&(n=new Uint8Array(t.outputLen)),tr(t,n,e)}const Rt=Uint8Array.of(0),wn=Uint8Array.of();function bo(t,e,n,r=32){Dt(t),Ue(r,"length"),he(e,void 0,"prk");const o=t.outputLen;if(e.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=wn:he(n,void 0,"info");const i=new Uint8Array(s*o),a=tr.create(t,e),l=a._cloneInto(),c=new Uint8Array(a.outputLen);for(let d=0;d<s;d++)Rt[0]=d+1,l.update(d===0?wn:c).update(n).update(Rt).digestInto(c),i.set(c,o*d),a._cloneInto(l);return a.destroy(),l.destroy(),Ve(c,Rt),i.slice(0,r)}const Eo=(t,e,n,r,o)=>bo(t,yo(t,e,n),r,o);function vo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function yn(t){if(typeof t!="number")throw new TypeError("number expected, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError("positive integer expected, got "+t)}function ee(t,e,n=""){const r=vo(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",l=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+l;throw r?new RangeError(c):new TypeError(c)}return t}function bn(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function xo(t,e,n=!1){ee(t,void 0,"output");const r=e.outputLen;if(t.length<r)throw new RangeError("digestInto() expects output buffer of length at least "+r);if(n&&!Qe(t))throw new Error("invalid output, must be aligned")}function So(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function Re(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Ee(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function yt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Zt=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,nr=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255,z=Zt?t=>t:t=>nr(t)>>>0,Io=t=>{for(let e=0;e<t.length;e++)t[e]=nr(t[e]);return t},Kt=Zt?t=>t:Io;function _o(t,e){if(t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function Ro(t,e,n){const r=e,o=n||(()=>[]),s=(a,l)=>r(l,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...l)=>r(a,...l),s}const Ao=(t,e)=>{function n(r,...o){if(ee(r,void 0,"key"),t.nonceLength!==void 0){const d=o[0];ee(d,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength;s&&o[1]!==void 0&&ee(o[1],void 0,"AAD");const i=e(r,...o),a=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");ee(u,void 0,"output")}};let l=!1;return{encrypt(d,u){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,ee(d),a(i.encrypt.length,u),i.encrypt(d,u)},decrypt(d,u){if(ee(d),s&&d.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return a(i.decrypt.length,u),i.decrypt(d,u)}}}return Object.assign(n,t),n};function Bo(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(ee(e,void 0,"output"),e.length!==t)throw new Error('"output" expected Uint8Array of length '+t+", got: "+e.length);if(n&&!Qe(e))throw new Error("invalid output, must be aligned");return e}function Oo(t,e,n){yn(t),yn(e);const r=new Uint8Array(16),o=yt(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function Qe(t){return t.byteOffset%4===0}function We(t){return Uint8Array.from(ee(t))}const qe=16,rr=new Uint8Array(16),ze=Re(rr),ko=225,To=(t,e,n,r)=>{const o=r&1;return{s3:n<<31|r>>>1,s2:e<<31|n>>>1,s1:t<<31|e>>>1,s0:t>>>1^ko<<24&-(o&1)}},rt=t=>(t>>>0&255)<<24|(t>>>8&255)<<16|(t>>>16&255)<<8|t>>>24&255|0,Lo=t=>t>64*1024?8:t>1024?4:2;class qo{blockLen=qe;outputLen=qe;s0=0;s1=0;s2=0;s3=0;finished=!1;destroyed=!1;t;W;windowSize;constructor(e,n){ee(e,16,"key"),e=We(e);const r=yt(e);let o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),a=r.getUint32(12,!1);const l=[];for(let v=0;v<128;v++)l.push({s0:rt(o),s1:rt(s),s2:rt(i),s3:rt(a)}),{s0:o,s1:s,s2:i,s3:a}=To(o,s,i,a);const c=Lo(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 u=128/c,m=this.windowSize=2**c,h=[];for(let v=0;v<u;v++)for(let x=0;x<m;x++){let p=0,y=0,b=0,E=0;for(let I=0;I<c;I++){if(!(x>>>c-I-1&1))continue;const{s0:P,s1:R,s2:T,s3:B}=l[c*v+I];p^=P,y^=R,b^=T,E^=B}h.push({s0:p,s1:y,s2:b,s3:E})}this.t=h}_updateBlock(e,n,r,o){e^=this.s0,n^=this.s1,r^=this.s2,o^=this.s3;const{W:s,t:i,windowSize:a}=this;let l=0,c=0,d=0,u=0;const m=(1<<s)-1;let h=0;for(const v of[e,n,r,o])for(let x=0;x<4;x++){const p=v>>>8*x&255;for(let y=8/s-1;y>=0;y--){const b=p>>>s*y&m,{s0:E,s1:I,s2:k,s3:P}=i[h*a+b];l^=E,c^=I,d^=k,u^=P,h+=1}}this.s0=l,this.s1=c,this.s2=d,this.s3=u}update(e){bn(this),ee(e),e=We(e);const n=Re(e),r=Math.floor(e.length/qe),o=e.length%qe;for(let s=0;s<r;s++)this._updateBlock(z(n[s*4+0]),z(n[s*4+1]),z(n[s*4+2]),z(n[s*4+3]));return o&&(rr.set(e.subarray(r*qe)),this._updateBlock(z(ze[0]),z(ze[1]),z(ze[2]),z(ze[3])),Ee(ze)),this}destroy(){this.destroyed=!0;const{t:e}=this;for(const n of e)n.s0=0,n.s1=0,n.s2=0,n.s3=0}digestInto(e){bn(this),xo(e,this,!0),this.finished=!0;const{s0:n,s1:r,s2:o,s3:s}=this,i=Re(e);i[0]=n,i[1]=r,i[2]=o,i[3]=s,Kt(i)}digest(){const e=new Uint8Array(qe);return this.digestInto(e),this.destroy(),e}}const En=Ro(16,(t,e)=>new qo(t,e),t=>[t.length]),Nt=16,Co=4,ot=new Uint8Array(Nt),Uo=283;function No(t){if(![16,24,32].includes(t.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+t.length)}function Yt(t){return t<<1^Uo&-(t>>7)}function vn(t,e){let n=0;for(;e>0;e>>=1)n^=t&-(e&1),t=Yt(t);return n}const Po=(()=>{const t=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Yt(r))t[n]=r;const e=new Uint8Array(256);e[0]=99;for(let n=0;n<255;n++){let r=t[255-n];r|=r<<8,e[t[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return Ee(t),e})(),Mo=t=>t<<24|t>>>8,At=t=>t<<8|t>>>24;function Do(t,e){if(t.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((c,d)=>e(t[d])),r=n.map(At),o=r.map(At),s=o.map(At),i=new Uint32Array(256*256),a=new Uint32Array(256*256),l=new Uint16Array(256*256);for(let c=0;c<256;c++)for(let d=0;d<256;d++){const u=c*256+d;i[u]=n[c]^r[d],a[u]=o[c]^s[d],l[u]=t[c]<<8|t[d]}return{sbox:t,sbox2:l,T0:n,T1:r,T2:o,T3:s,T01:i,T23:a}}const or=Do(Po,t=>vn(t,3)<<24|t<<16|t<<8|vn(t,2)),Fo=(()=>{const t=new Uint8Array(16);for(let e=0,n=1;e<16;e++,n=Yt(n))t[e]=n;return t})();function jo(t){ee(t);const e=t.length;No(t);const{sbox2:n}=or,r=[];(!Zt||!Qe(t))&&r.push(t=We(t));const o=Kt(Re(t)),s=o.length,i=l=>Ze(n,l,l,l,l),a=new Uint32Array(e+28);a.set(o);for(let l=s;l<a.length;l++){let c=a[l-1];l%s===0?c=i(Mo(c))^Fo[l/s-1]:s>6&&l%s===4&&(c=i(c)),a[l]=a[l-s]^c}return Ee(...r),a}function st(t,e,n,r,o,s){return t[n<<8&65280|r>>>8&255]^e[o>>>8&65280|s>>>24&255]}function Ze(t,e,n,r,o){return t[e&255|n&65280]|t[r>>>16&255|o>>>16&65280]<<16}function xn(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=or;let l=0;e^=t[l++],n^=t[l++],r^=t[l++],o^=t[l++];const c=t.length/4-2;for(let v=0;v<c;v++){const x=t[l++]^st(i,a,e,n,r,o),p=t[l++]^st(i,a,n,r,o,e),y=t[l++]^st(i,a,r,o,e,n),b=t[l++]^st(i,a,o,e,n,r);e=x,n=p,r=y,o=b}const d=t[l++]^Ze(s,e,n,r,o),u=t[l++]^Ze(s,n,r,o,e),m=t[l++]^Ze(s,r,o,e,n),h=t[l++]^Ze(s,o,e,n,r);return{s0:d,s1:u,s2:m,s3:h}}function it(t,e,n,r,o){ee(n,Nt,"nonce"),ee(r),o=Bo(r.length,o);const s=n,i=Re(s),a=yt(s),l=Re(r),c=Re(o),d=e?0:12,u=r.length;let m=a.getUint32(d,e),{s0:h,s1:v,s2:x,s3:p}=xn(t,z(i[0]),z(i[1]),z(i[2]),z(i[3]));for(let b=0;b+4<=l.length;b+=4)c[b+0]=l[b+0]^z(h),c[b+1]=l[b+1]^z(v),c[b+2]=l[b+2]^z(x),c[b+3]=l[b+3]^z(p),m=m+1>>>0,a.setUint32(d,m,e),{s0:h,s1:v,s2:x,s3:p}=xn(t,z(i[0]),z(i[1]),z(i[2]),z(i[3]));const y=Nt*Math.floor(l.length/Co);if(y<u){const b=new Uint32Array([h,v,x,p]);Kt(b);const E=So(b);for(let I=y,k=0;I<u;I++,k++)o[I]=r[I]^E[k];Ee(b)}return o}function Ho(t,e,n,r,o){const s=o?o.length:0,i=t.create(n,r.length+s);o&&i.update(o);const a=Oo(8*r.length,8*s,e);i.update(r),i.update(a);const l=i.digest();return Ee(a),l}const Sn=Ao({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,n,r){if(n.length<8)throw new Error("aes/gcm: invalid nonce length");const o=16;function s(a,l,c){const d=Ho(En,!1,a,c,r);for(let u=0;u<l.length;u++)d[u]^=l[u];return d}function i(){const a=jo(e),l=ot.slice(),c=ot.slice();if(it(a,!1,c,c,l),n.length===12)c.set(n);else{const u=ot.slice();yt(u).setBigUint64(8,BigInt(n.length*8),!1);const h=En.create(l).update(n).update(u);h.digestInto(c),h.destroy()}const d=it(a,!1,c,ot);return{xk:a,authKey:l,counter:c,tagMask:d}}return{encrypt(a){const{xk:l,authKey:c,counter:d,tagMask:u}=i(),m=new Uint8Array(a.length+o),h=[l,c,d,u];Qe(a)||h.push(a=We(a)),it(l,!1,d,a,m.subarray(0,a.length));const v=s(c,u,m.subarray(0,m.length-o));return h.push(v),m.set(v,a.length),Ee(...h),m},decrypt(a){const{xk:l,authKey:c,counter:d,tagMask:u}=i(),m=[l,c,u,d];Qe(a)||m.push(a=We(a));const h=a.subarray(0,-o),v=a.subarray(-o),x=s(c,u,h);if(m.push(x),!_o(x,v))throw Ee(...m),new Error("aes/gcm: invalid ghash tag");const p=it(l,!1,d,h);return Ee(...m),p}}}),sr="chainlesschain.remote-session.e2ee.v1",In="chainlesschain://remote-session/pair#",Bt=32,$o=new TextEncoder,ir=new TextDecoder;function dt(t){return $o.encode(t)}function ct(t){let e="";for(const n of t)e+=String.fromCharCode(n);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ke(t){const e=String(t).replace(/-/g,"+").replace(/_/g,"/"),n=atob(e),r=new Uint8Array(n.length);for(let o=0;o<n.length;o+=1)r[o]=n.charCodeAt(o);return r}function zo(t){const e=new Uint8Array(t);return globalThis.crypto.getRandomValues(e),e}function Zo(){const t=Ut.utils;return t.randomSecretKey?t.randomSecretKey():t.randomPrivateKey()}function _n(t,e,n){return dt(`${sr}
1
+ import{E as br,r as se,I as ne,J as de,U as Te,c as q,K as A,S as re,V as ie,o as Wt,a8 as Qt,b as He,P as D,Q as Z,R as ae,F as Jt,Z as en,a5 as Er}from"./vendor-Bn1JzzAn.js";import{Q as vr}from"./QrScannerModal-ft3b2Qpr.js";import{_ as xr}from"./index-KCmGGWAT.js";import{ax as Sr,aC as Ir}from"./icons-DG5UD-6K.js";import"./markdown-CsiA8-E5.js";function _r(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Ue(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(`${n}expected number, got ${typeof t}`)}if(!Number.isSafeInteger(t)||t<0){const n=e&&`"${e}" `;throw new RangeError(`${n}expected integer >= 0, got ${t}`)}}function he(t,e,n=""){const r=_r(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",l=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+l;throw r?new RangeError(c):new TypeError(c)}return t}function Dt(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Ue(t.outputLen),Ue(t.blockLen),t.outputLen<1)throw new Error('"outputLen" must be >= 1');if(t.blockLen<1)throw new Error('"blockLen" must be >= 1')}function ht(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Ln(t,e){he(t,void 0,"digestInto() output");const n=e.outputLen;if(t.length<n)throw new RangeError('"digestInto() output" expected to be of length >='+n)}function Ve(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Et(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function le(t,e){return t<<32-e|t>>>e}const Cn=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Rr=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Ft(t){if(he(t),Cn)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Rr[t[n]];return e}const pe={_0:48,_9:57,A:65,F:70,a:97,f:102};function tn(t){if(t>=pe._0&&t<=pe._9)return t-pe._0;if(t>=pe.A&&t<=pe.F)return t-(pe.A-10);if(t>=pe.a&&t<=pe.f)return t-(pe.a-10)}function jt(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Cn)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=tn(t.charCodeAt(s)),a=tn(t.charCodeAt(s+1));if(i===void 0||a===void 0){const l=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+l+'" at index '+s)}r[o]=i*16+a}return r}function Ar(t,e={}){const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Br(t=32){Ue(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const Or=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function kr(t,e,n){return t&e^~t&n}function Tr(t,e,n){return t&e^t&n^e&n}class qr{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,o){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Et(this.buffer)}update(e){ht(this),he(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const l=Et(e);for(;o<=s-i;i+=o)this.process(l,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ht(this),Ln(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,Ve(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;r.setBigUint64(o-8,BigInt(this.length*8),s),this.process(r,0);const a=Et(e),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=l/4,d=this.get();if(c>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<c;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||=new this.constructor,e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const me=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Lr=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]),we=new Uint32Array(64);class Cr extends qr{constructor(e){super(64,e,8,!1)}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:l}=this;return[e,n,r,o,s,i,a,l]}set(e,n,r,o,s,i,a,l){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=l|0}process(e,n){for(let u=0;u<16;u++,n+=4)we[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=we[u-15],h=we[u-2],v=le(m,7)^le(m,18)^m>>>3,x=le(h,17)^le(h,19)^h>>>10;we[u]=x+we[u-7]+v+we[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:l,G:c,H:d}=this;for(let u=0;u<64;u++){const m=le(a,6)^le(a,11)^le(a,25),h=d+m+kr(a,l,c)+Lr[u]+we[u]|0,x=(le(r,2)^le(r,13)^le(r,22))+Tr(r,o,s)|0;d=c,c=l,l=a,a=i+h|0,i=s,s=o,o=r,r=h+x|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,l=l+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,l,c,d)}roundClean(){Ve(we)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),Ve(this.buffer)}}class Ur extends Cr{A=me[0]|0;B=me[1]|0;C=me[2]|0;D=me[3]|0;E=me[4]|0;F=me[5]|0;G=me[6]|0;H=me[7]|0;constructor(){super(32)}}const nn=Ar(()=>new Ur,Or(1));const be=(t,e,n)=>he(t,e,n),Un=Ue,Nn=Ft,Nr=t=>jt(t),Pr=t=>Br(t),gt=BigInt(0),qt=BigInt(1);function Pn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}" `;throw new TypeError(n+"expected boolean, got type="+typeof t)}return t}function Mr(t){if(typeof t=="bigint"){if(!ft(t))throw new RangeError("positive bigint expected, got "+t)}else Un(t);return t}function rn(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function Mn(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?gt:BigInt("0x"+t)}function Dr(t){return Mn(Ft(t))}function Xe(t){return Mn(Ft(Ge(he(t)).reverse()))}function Dn(t,e){if(Ue(e),e===0)throw new RangeError("zero length");t=Mr(t);const n=t.toString(16);if(n.length>e*2)throw new RangeError("number too large");return jt(n.padStart(e*2,"0"))}function Fn(t,e){return Dn(t,e).reverse()}function Fr(t,e){if(t=be(t),e=be(e),t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function Ge(t){return Uint8Array.from(be(t))}const ft=t=>typeof t=="bigint"&&gt<=t;function jr(t,e,n){return ft(t)&&ft(e)&&ft(n)&&e<=t&&t<n}function mt(t,e,n,r){if(!jr(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function Hr(t){if(t<gt)throw new Error("expected non-negative bigint, got "+t);let e;for(e=0;t>gt;t>>=qt,e+=1);return e}const $r=t=>(qt<<BigInt(t))-qt;function Ht(t,e={},n={}){if(Object.prototype.toString.call(t)!=="[object Object]")throw new TypeError("expected valid options object");function r(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(t,s))throw new TypeError(`param "${s}" is invalid: expected own property`);const l=t[s];if(a&&l===void 0)return;const c=typeof l;if(c!==i||l===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${c}`)}const o=(s,i)=>Object.entries(s).forEach(([a,l])=>r(a,l,i));o(e,!1),o(n,!0)}const on=()=>{throw new Error("not implemented")};const W=BigInt(0),Y=BigInt(1),_e=BigInt(2),jn=BigInt(3),Hn=BigInt(4),$n=BigInt(5),zr=BigInt(7),zn=BigInt(8),Zr=BigInt(9),Zn=BigInt(16);function j(t,e){if(e<=W)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=W?n:e+n}function ce(t,e,n){if(e<W)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >W;)r*=r,r%=n;return r}function sn(t,e){if(t===W)throw new Error("invert: expected non-zero number");if(e<=W)throw new Error("invert: expected positive modulus, got "+e);let n=j(t,e),r=e,o=W,s=Y;for(;n!==W;){const a=r/n,l=r-n*a,c=o-s*a;r=n,n=l,o=s,s=c}if(r!==Y)throw new Error("invert: does not exist");return j(o,e)}function $t(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function Kn(t,e){const n=t,r=(n.ORDER+Y)/Hn,o=n.pow(e,r);return $t(n,o,e),o}function Kr(t,e){const n=t,r=(n.ORDER-$n)/zn,o=n.mul(e,_e),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,_e),s),l=n.mul(i,n.sub(a,n.ONE));return $t(n,l,e),l}function Yr(t){const e=zt(t),n=Yn(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+zr)/Zn;return((a,l)=>{const c=a;let d=c.pow(l,i),u=c.mul(d,r);const m=c.mul(d,o),h=c.mul(d,s),v=c.eql(c.sqr(u),l),x=c.eql(c.sqr(m),l);d=c.cmov(d,u,v),u=c.cmov(h,m,x);const p=c.eql(c.sqr(u),l),y=c.cmov(d,u,p);return $t(c,y,l),y})}function Yn(t){if(t<jn)throw new Error("sqrt is not defined for small field");let e=t-Y,n=0;for(;e%_e===W;)e/=_e,n++;let r=_e;const o=zt(t);for(;cn(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Kn;let s=o.pow(r,e);const i=(e+Y)/_e;return function(l,c){const d=l;if(d.is0(c))return c;if(cn(d,c)!==1)throw new Error("Cannot find square root");let u=n,m=d.mul(d.ONE,s),h=d.pow(c,e),v=d.pow(c,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))return d.ZERO;let x=1,p=d.sqr(h);for(;!d.eql(p,d.ONE);)if(x++,p=d.sqr(p),x===u)throw new Error("Cannot find square root");const y=Y<<BigInt(u-x-1),b=d.pow(m,y);u=x,m=d.sqr(b),h=d.mul(h,m),v=d.mul(v,b)}return v}}function Vr(t){return t%Hn===jn?Kn:t%zn===$n?Kr:t%Zn===Zr?Yr(t):Yn(t)}const Se=(t,e)=>(j(t,e)&Y)===Y,Xr=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Gr(t){const e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=Xr.reduce((r,o)=>(r[o]="function",r),e);if(Ht(t,n),rn(t.BYTES,"BYTES"),rn(t.BITS,"BITS"),t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=Y)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function Wr(t,e,n){const r=t;if(n<W)throw new Error("invalid exponent, negatives unsupported");if(n===W)return r.ONE;if(n===Y)return e;let o=r.ONE,s=e;for(;n>W;)n&Y&&(o=r.mul(o,s)),s=r.sqr(s),n>>=Y;return o}function Vn(t,e,n=!1){const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,l,c)=>r.is0(l)?a:(o[c]=a,r.mul(a,l)),r.ONE),i=r.inv(s);return e.reduceRight((a,l,c)=>r.is0(l)?a:(o[c]=r.mul(a,o[c]),r.mul(a,l)),i),o}function cn(t,e){const n=t,r=(n.ORDER-Y)/_e,o=n.pow(e,r),s=n.eql(o,n.ONE),i=n.eql(o,n.ZERO),a=n.eql(o,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function Qr(t,e){if(e!==void 0&&Un(e),t<=W)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=Hr(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected bit length (${n}) >= n.length (${e})`);const r=e!==void 0?e:n,o=Math.ceil(r/8);return{nBitLength:r,nByteLength:o}}const an=new WeakMap;class Xn{ORDER;BITS;BYTES;isLE;ZERO=W;ONE=Y;_lengths;_mod;constructor(e,n={}){if(e<=Y)throw new Error("invalid field: expected ORDER > 1, got "+e);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}=Qr(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return j(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return W<=e&&e<this.ORDER}is0(e){return e===W}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&Y)===Y}neg(e){return j(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return j(e*e,this.ORDER)}add(e,n){return j(e+n,this.ORDER)}sub(e,n){return j(e-n,this.ORDER)}mul(e,n){return j(e*n,this.ORDER)}pow(e,n){return Wr(this,e,n)}div(e,n){return j(e*sn(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return sn(e,this.ORDER)}sqrt(e){let n=an.get(this);return n||an.set(this,n=Vr(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?Fn(e,this.BYTES):Dn(e,this.BYTES)}fromBytes(e,n=!1){be(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const c=new Uint8Array(o);c.set(e,s?0:c.length-e.length),e=c}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let l=s?Xe(e):Dr(e);if(a&&(l=j(l,i)),!n&&!this.isValid(l))throw new Error("invalid field element: outside of range 0..ORDER");return l}invertBatch(e){return Vn(this,e)}cmov(e,n,r){return Pn(r,"condition"),r?n:e}}Object.freeze(Xn.prototype);function zt(t,e={}){return new Xn(t,e)}const wt=BigInt(0),Lt=BigInt(1);function ln(t,e){const n=e.negate();return t?n:e}function vt(t,e){const n=Vn(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function Gn(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function xt(t,e){Gn(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=$r(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function un(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),l=t>>i;a>r&&(a-=s,l+=Lt);const c=e*r,d=c+Math.abs(a)-1,u=a===0,m=a<0,h=e%2!==0;return{nextN:l,offset:d,isZero:u,isNeg:m,isNegF:h,offsetF:c}}const St=new WeakMap,Wn=new WeakMap;function It(t){return Wn.get(t)||1}function fn(t){if(t!==wt)throw new Error("invalid wNAF")}class Jr{BASE;ZERO;Fn;bits;constructor(e,n){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>wt;)n&Lt&&(r=r.add(o)),o=o.double(),n>>=Lt;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=xt(n,this.bits),s=[];let i=e,a=i;for(let l=0;l<r;l++){a=i,s.push(a);for(let c=1;c<o;c++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=xt(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:l,offset:c,isZero:d,isNeg:u,isNegF:m,offsetF:h}=un(r,a,i);r=l,d?s=s.add(ln(m,n[h])):o=o.add(ln(u,n[c]))}return fn(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=xt(e,this.bits);for(let i=0;i<s.windows&&r!==wt;i++){const{nextN:a,offset:l,isZero:c,isNeg:d}=un(r,i,s);if(r=a,!c){const u=n[l];o=o.add(d?u.negate():u)}}return fn(r),o}getPrecomputes(e,n,r){let o=St.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),St.set(n,o))),o}cached(e,n,r){const o=It(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=It(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){Gn(n,this.bits),Wn.set(e,n),St.delete(e)}hasCache(e){return It(e)!==1}}function dn(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Gr(e),e}else return zt(t,{isLE:n})}function eo(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const l of["p","n","h"]){const c=e[l];if(!(typeof c=="bigint"&&c>wt))throw new Error(`CURVE.${l} must be positive bigint`)}const o=dn(e.p,n.Fp,r),s=dn(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const l of a)if(!o.isValid(e[l]))throw new Error(`CURVE.${l} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function to(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const ye=BigInt(0),J=BigInt(1),_t=BigInt(2),no=BigInt(8);function ro(t,e,n,r){const o=t.sqr(n),s=t.sqr(r),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function oo(t,e={}){const n=e,r=eo("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;Ht(n,{},{uvRatio:"function"});const l=_t<<BigInt(s.BYTES*8)-J,c=x=>o.create(x),d=n.uvRatio===void 0?(x,p)=>{try{return{isValid:!0,value:o.sqrt(o.div(x,p))}}catch{return{isValid:!1,value:ye}}}:n.uvRatio;if(!ro(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function u(x,p,y=!1){const b=y?J:ye;return mt("coordinate "+x,p,b,l),p}function m(x){if(!(x instanceof h))throw new Error("EdwardsPoint expected")}class h{static BASE=new h(i.Gx,i.Gy,J,c(i.Gx*i.Gy));static ZERO=new h(ye,J,J,ye);static Fp=o;static Fn=s;X;Y;Z;T;constructor(p,y,b,E){this.X=u("x",p),this.Y=u("y",y),this.Z=u("z",b,!0),this.T=u("t",E),Object.freeze(this)}static CURVE(){return i}static fromAffine(p){if(p instanceof h)throw new Error("extended point not allowed");const{x:y,y:b}=p||{};return u("x",y),u("y",b),new h(y,b,J,c(y*b))}static fromBytes(p,y=!1){const b=o.BYTES,{a:E,d:I}=i;p=Ge(be(p,b,"point")),Pn(y,"zip215");const k=Ge(p),P=p[b-1];k[b-1]=P&-129;const R=Xe(k),T=y?l:o.ORDER;mt("point.y",R,ye,T);const B=c(R*R),C=c(B-J),M=c(I*B-E);let{isValid:V,value:H}=d(C,M);if(!V)throw new Error("bad point: invalid y coordinate");const O=(H&J)===J,N=(P&128)!==0;if(!y&&H===ye&&N)throw new Error("bad point: x=0 and x_0=1");return N!==O&&(H=c(-H)),h.fromAffine({x:H,y:R})}static fromHex(p,y=!1){return h.fromBytes(Nr(p),y)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(p=8,y=!0){return v.createCache(this,p),y||this.multiply(_t),this}assertValidity(){const p=this,{a:y,d:b}=i;if(p.is0())throw new Error("bad point: ZERO");const{X:E,Y:I,Z:k,T:P}=p,R=c(E*E),T=c(I*I),B=c(k*k),C=c(B*B),M=c(R*y),V=c(B*c(M+T)),H=c(C+c(b*c(R*T)));if(V!==H)throw new Error("bad point: equation left != right (1)");const O=c(E*I),N=c(k*P);if(O!==N)throw new Error("bad point: equation left != right (2)")}equals(p){m(p);const{X:y,Y:b,Z:E}=this,{X:I,Y:k,Z:P}=p,R=c(y*P),T=c(I*E),B=c(b*P),C=c(k*E);return R===T&&B===C}is0(){return this.equals(h.ZERO)}negate(){return new h(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:p}=i,{X:y,Y:b,Z:E}=this,I=c(y*y),k=c(b*b),P=c(_t*c(E*E)),R=c(p*I),T=y+b,B=c(c(T*T)-I-k),C=R+k,M=C-P,V=R-k,H=c(B*M),O=c(C*V),N=c(B*V),S=c(M*C);return new h(H,O,S,N)}add(p){m(p);const{a:y,d:b}=i,{X:E,Y:I,Z:k,T:P}=this,{X:R,Y:T,Z:B,T:C}=p,M=c(E*R),V=c(I*T),H=c(P*b*C),O=c(k*B),N=c((E+I)*(R+T)-M-V),S=O-H,F=O+H,$=c(V-y*M),K=c(N*S),X=c(F*$),Q=c(N*$),te=c(S*F);return new h(K,X,te,Q)}subtract(p){return m(p),this.add(p.negate())}multiply(p){if(!s.isValidNot0(p))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:y,f:b}=v.cached(this,p,E=>vt(h,E));return vt(h,[y,b])[0]}multiplyUnsafe(p){if(!s.isValid(p))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return p===ye?h.ZERO:this.is0()||p===J?this:v.unsafe(this,p,y=>vt(h,y))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return v.unsafe(this,i.n).is0()}toAffine(p){const y=this;let b=p;const{X:E,Y:I,Z:k}=y,P=y.is0();b==null&&(b=P?no:o.inv(k));const R=c(E*b),T=c(I*b),B=o.mul(k,b);if(P)return{x:ye,y:J};if(B!==J)throw new Error("invZ was invalid");return{x:R,y:T}}clearCofactor(){return a===J?this:this.multiplyUnsafe(a)}toBytes(){const{x:p,y}=this.toAffine(),b=o.toBytes(y);return b[b.length-1]|=p&J?128:0,b}toHex(){return Nn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const v=new Jr(h,s.BITS);return s.BITS>=8&&h.BASE.precompute(8),Object.freeze(h.prototype),Object.freeze(h),h}class so{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){on()}static fromHex(e){on()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Nn(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,n){return this.ep.precompute(e,n),this}}const $e=BigInt(0),qe=BigInt(1),nt=BigInt(2);function io(t){return Ht(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...t})}function co(t){const e=io(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=r==="x25519";if(!a&&r!=="x448")throw new Error("invalid type");const l=i===void 0?Pr:i,c=a?255:448,d=a?32:56,u=BigInt(a?9:5),m=BigInt(a?121665:39081),h=a?nt**BigInt(254):nt**BigInt(447),v=a?BigInt(8)*nt**BigInt(251)-qe:BigInt(4)*nt**BigInt(445)-qe,x=h+v+qe,p=O=>j(O,n),y=b(u);function b(O){return Fn(p(O),d)}function E(O){const N=Ge(be(O,d,"uCoordinate"));return a&&(N[31]&=127),p(Xe(N))}function I(O){return Xe(o(Ge(be(O,d,"scalar"))))}function k(O,N){const S=C(E(N),I(O));if(S===$e)throw new Error("invalid private or public key received");return b(S)}function P(O){return k(O,y)}const R=P,T=k;function B(O,N,S){const F=p(O*(N-S));return N=p(N-F),S=p(S+F),{x_2:N,x_3:S}}function C(O,N){mt("u",O,$e,n),mt("scalar",N,h,x);const S=N,F=O;let $=qe,K=$e,X=O,Q=qe,te=$e;for(let Me=BigInt(c-1);Me>=$e;Me--){const Je=S>>Me&qe;te^=Je,{x_2:$,x_3:X}=B(te,$,X),{x_2:K,x_3:Q}=B(te,K,Q),te=Je;const De=$+K,Ae=p(De*De),Be=$-K,ge=p(Be*Be),Oe=Ae-ge,ue=X+Q,bt=X-Q,Fe=p(bt*De),ke=p(ue*Be),ve=Fe+ke,et=Fe-ke;X=p(ve*ve),Q=p(F*p(et*et)),$=p(Ae*ge),K=p(Oe*(Ae+p(m*Oe)))}({x_2:$,x_3:X}=B(te,$,X)),{x_2:K,x_3:Q}=B(te,K,Q);const Pe=s(K);return p($*Pe)}const M={secretKey:d,publicKey:d,seed:d},V=O=>(O=O===void 0?l(d):O,be(O,M.seed,"seed"),O),H={randomSecretKey:V};return Object.freeze(M),Object.freeze(H),Object.freeze({keygen:to(V,R),getSharedSecret:T,getPublicKey:R,scalarMult:k,scalarMultBase:P,utils:H,GuBytes:y.slice(),lengths:M})}const ao=BigInt(0),Ye=BigInt(1),pn=BigInt(2),lo=BigInt(3),uo=BigInt(5),fo=BigInt(8),Ne=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Qn={p:Ne,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:fo,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Jn(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Ne,a=t*t%s*t%s,l=ce(a,pn,s)*a%s,c=ce(l,Ye,s)*t%s,d=ce(c,uo,s)*c%s,u=ce(d,e,s)*d%s,m=ce(u,n,s)*u%s,h=ce(m,r,s)*m%s,v=ce(h,o,s)*h%s,x=ce(v,o,s)*h%s,p=ce(x,e,s)*d%s;return{pow_p_5_8:ce(p,pn,s)*t%s,b2:a}}function po(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Ct=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function er(t,e){const n=Ne,r=j(e*e*e,n),o=j(r*r*e,n),s=Jn(t*o).pow_p_5_8;let i=j(t*r*s,n);const a=j(e*i*i,n),l=i,c=j(i*Ct,n),d=a===t,u=a===j(-t,n),m=a===j(-t*Ct,n);return d&&(i=l),(u||m)&&(i=c),Se(i,n)&&(i=j(-i,n)),{isValid:d||u,value:i}}const Ce=oo(Qn,{uvRatio:er}),Ie=Ce.Fp,ho=Ce.Fn,Ut=(()=>{const t=Ne;return co({P:t,type:"x25519",powPminus2:e=>{const{pow_p_5_8:n,b2:r}=Jn(e);return j(ce(n,lo,t)*r,t)},adjustScalarBytes:po})})(),hn=Ct,go=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),gn=t=>er(Ye,t),mo=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),wo=t=>Ie.create(Xe(t)&mo);class oe extends so{static BASE=new oe(Ce.BASE);static ZERO=new oe(Ce.ZERO);static Fp=Ie;static Fn=ho;constructor(e){super(e)}static fromAffine(e){return new oe(Ce.fromAffine(e))}assertSame(e){if(!(e instanceof oe))throw new Error("RistrettoPoint expected")}init(e){return new oe(e)}static fromBytes(e){he(e,32);const{a:n,d:r}=Qn,o=Ne,s=I=>Ie.create(I),i=wo(e);if(!Fr(Ie.toBytes(i),e)||Se(i,o))throw new Error("invalid ristretto255 encoding 1");const a=s(i*i),l=s(Ye+n*a),c=s(Ye-n*a),d=s(l*l),u=s(c*c),m=s(n*r*d-u),{isValid:h,value:v}=gn(s(m*u)),x=s(v*c),p=s(v*x*m);let y=s((i+i)*x);Se(y,o)&&(y=s(-y));const b=s(l*p),E=s(y*b);if(!h||Se(E,o)||b===ao)throw new Error("invalid ristretto255 encoding 2");return new oe(new Ce(y,b,Ye,E))}static fromHex(e){return oe.fromBytes(jt(e))}toBytes(){let{X:e,Y:n,Z:r,T:o}=this.ep;const s=Ne,i=p=>Ie.create(p),a=i(i(r+n)*i(r-n)),l=i(e*n),c=i(l*l),{value:d}=gn(i(a*c)),u=i(d*a),m=i(d*l),h=i(u*m*o);let v;if(Se(o*h,s)){let p=i(n*hn),y=i(e*hn);e=p,n=y,v=i(u*go)}else v=m;Se(e*h,s)&&(n=i(-n));let x=i((r-n)*v);return Se(x,s)&&(x=i(-x)),Ie.toBytes(x)}equals(e){this.assertSame(e);const{X:n,Y:r}=this.ep,{X:o,Y:s}=e.ep,i=c=>Ie.create(c),a=i(n*s)===i(r*o),l=i(r*s)===i(n*o);return a||l}is0(){return this.equals(oe.ZERO)}}Object.freeze(oe.BASE);Object.freeze(oe.ZERO);Object.freeze(oe.prototype);Object.freeze(oe);class mn{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(Dt(e),he(n,void 0,"key"),this.iHash=e.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?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Ve(o)}update(e){return ht(this),this.iHash.update(e),this}digestInto(e){ht(this),Ln(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const tr=(()=>{const t=((e,n,r)=>new mn(e,n).update(r).digest());return t.create=(e,n)=>new mn(e,n),t})();function yo(t,e,n){return Dt(t),n===void 0&&(n=new Uint8Array(t.outputLen)),tr(t,n,e)}const Rt=Uint8Array.of(0),wn=Uint8Array.of();function bo(t,e,n,r=32){Dt(t),Ue(r,"length"),he(e,void 0,"prk");const o=t.outputLen;if(e.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=wn:he(n,void 0,"info");const i=new Uint8Array(s*o),a=tr.create(t,e),l=a._cloneInto(),c=new Uint8Array(a.outputLen);for(let d=0;d<s;d++)Rt[0]=d+1,l.update(d===0?wn:c).update(n).update(Rt).digestInto(c),i.set(c,o*d),a._cloneInto(l);return a.destroy(),l.destroy(),Ve(c,Rt),i.slice(0,r)}const Eo=(t,e,n,r,o)=>bo(t,yo(t,e,n),r,o);function vo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function yn(t){if(typeof t!="number")throw new TypeError("number expected, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError("positive integer expected, got "+t)}function ee(t,e,n=""){const r=vo(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",l=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+l;throw r?new RangeError(c):new TypeError(c)}return t}function bn(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function xo(t,e,n=!1){ee(t,void 0,"output");const r=e.outputLen;if(t.length<r)throw new RangeError("digestInto() expects output buffer of length at least "+r);if(n&&!We(t))throw new Error("invalid output, must be aligned")}function So(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function Re(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Ee(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function yt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Zt=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,nr=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255,z=Zt?t=>t:t=>nr(t)>>>0,Io=t=>{for(let e=0;e<t.length;e++)t[e]=nr(t[e]);return t},Kt=Zt?t=>t:Io;function _o(t,e){if(t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}function Ro(t,e,n){const r=e,o=n||(()=>[]),s=(a,l)=>r(l,...o(a)).update(a).digest(),i=r(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...l)=>r(a,...l),s}const Ao=(t,e)=>{function n(r,...o){if(ee(r,void 0,"key"),t.nonceLength!==void 0){const d=o[0];ee(d,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength;s&&o[1]!==void 0&&ee(o[1],void 0,"AAD");const i=e(r,...o),a=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");ee(u,void 0,"output")}};let l=!1;return{encrypt(d,u){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,ee(d),a(i.encrypt.length,u),i.encrypt(d,u)},decrypt(d,u){if(ee(d),s&&d.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return a(i.decrypt.length,u),i.decrypt(d,u)}}}return Object.assign(n,t),n};function Bo(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(ee(e,void 0,"output"),e.length!==t)throw new Error('"output" expected Uint8Array of length '+t+", got: "+e.length);if(n&&!We(e))throw new Error("invalid output, must be aligned");return e}function Oo(t,e,n){yn(t),yn(e);const r=new Uint8Array(16),o=yt(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function We(t){return t.byteOffset%4===0}function Qe(t){return Uint8Array.from(ee(t))}const Le=16,rr=new Uint8Array(16),ze=Re(rr),ko=225,To=(t,e,n,r)=>{const o=r&1;return{s3:n<<31|r>>>1,s2:e<<31|n>>>1,s1:t<<31|e>>>1,s0:t>>>1^ko<<24&-(o&1)}},rt=t=>(t>>>0&255)<<24|(t>>>8&255)<<16|(t>>>16&255)<<8|t>>>24&255|0,qo=t=>t>64*1024?8:t>1024?4:2;class Lo{blockLen=Le;outputLen=Le;s0=0;s1=0;s2=0;s3=0;finished=!1;destroyed=!1;t;W;windowSize;constructor(e,n){ee(e,16,"key"),e=Qe(e);const r=yt(e);let o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),a=r.getUint32(12,!1);const l=[];for(let v=0;v<128;v++)l.push({s0:rt(o),s1:rt(s),s2:rt(i),s3:rt(a)}),{s0:o,s1:s,s2:i,s3:a}=To(o,s,i,a);const c=qo(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 u=128/c,m=this.windowSize=2**c,h=[];for(let v=0;v<u;v++)for(let x=0;x<m;x++){let p=0,y=0,b=0,E=0;for(let I=0;I<c;I++){if(!(x>>>c-I-1&1))continue;const{s0:P,s1:R,s2:T,s3:B}=l[c*v+I];p^=P,y^=R,b^=T,E^=B}h.push({s0:p,s1:y,s2:b,s3:E})}this.t=h}_updateBlock(e,n,r,o){e^=this.s0,n^=this.s1,r^=this.s2,o^=this.s3;const{W:s,t:i,windowSize:a}=this;let l=0,c=0,d=0,u=0;const m=(1<<s)-1;let h=0;for(const v of[e,n,r,o])for(let x=0;x<4;x++){const p=v>>>8*x&255;for(let y=8/s-1;y>=0;y--){const b=p>>>s*y&m,{s0:E,s1:I,s2:k,s3:P}=i[h*a+b];l^=E,c^=I,d^=k,u^=P,h+=1}}this.s0=l,this.s1=c,this.s2=d,this.s3=u}update(e){bn(this),ee(e),e=Qe(e);const n=Re(e),r=Math.floor(e.length/Le),o=e.length%Le;for(let s=0;s<r;s++)this._updateBlock(z(n[s*4+0]),z(n[s*4+1]),z(n[s*4+2]),z(n[s*4+3]));return o&&(rr.set(e.subarray(r*Le)),this._updateBlock(z(ze[0]),z(ze[1]),z(ze[2]),z(ze[3])),Ee(ze)),this}destroy(){this.destroyed=!0;const{t:e}=this;for(const n of e)n.s0=0,n.s1=0,n.s2=0,n.s3=0}digestInto(e){bn(this),xo(e,this,!0),this.finished=!0;const{s0:n,s1:r,s2:o,s3:s}=this,i=Re(e);i[0]=n,i[1]=r,i[2]=o,i[3]=s,Kt(i)}digest(){const e=new Uint8Array(Le);return this.digestInto(e),this.destroy(),e}}const En=Ro(16,(t,e)=>new Lo(t,e),t=>[t.length]),Nt=16,Co=4,ot=new Uint8Array(Nt),Uo=283;function No(t){if(![16,24,32].includes(t.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+t.length)}function Yt(t){return t<<1^Uo&-(t>>7)}function vn(t,e){let n=0;for(;e>0;e>>=1)n^=t&-(e&1),t=Yt(t);return n}const Po=(()=>{const t=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Yt(r))t[n]=r;const e=new Uint8Array(256);e[0]=99;for(let n=0;n<255;n++){let r=t[255-n];r|=r<<8,e[t[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return Ee(t),e})(),Mo=t=>t<<24|t>>>8,At=t=>t<<8|t>>>24;function Do(t,e){if(t.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((c,d)=>e(t[d])),r=n.map(At),o=r.map(At),s=o.map(At),i=new Uint32Array(256*256),a=new Uint32Array(256*256),l=new Uint16Array(256*256);for(let c=0;c<256;c++)for(let d=0;d<256;d++){const u=c*256+d;i[u]=n[c]^r[d],a[u]=o[c]^s[d],l[u]=t[c]<<8|t[d]}return{sbox:t,sbox2:l,T0:n,T1:r,T2:o,T3:s,T01:i,T23:a}}const or=Do(Po,t=>vn(t,3)<<24|t<<16|t<<8|vn(t,2)),Fo=(()=>{const t=new Uint8Array(16);for(let e=0,n=1;e<16;e++,n=Yt(n))t[e]=n;return t})();function jo(t){ee(t);const e=t.length;No(t);const{sbox2:n}=or,r=[];(!Zt||!We(t))&&r.push(t=Qe(t));const o=Kt(Re(t)),s=o.length,i=l=>Ze(n,l,l,l,l),a=new Uint32Array(e+28);a.set(o);for(let l=s;l<a.length;l++){let c=a[l-1];l%s===0?c=i(Mo(c))^Fo[l/s-1]:s>6&&l%s===4&&(c=i(c)),a[l]=a[l-s]^c}return Ee(...r),a}function st(t,e,n,r,o,s){return t[n<<8&65280|r>>>8&255]^e[o>>>8&65280|s>>>24&255]}function Ze(t,e,n,r,o){return t[e&255|n&65280]|t[r>>>16&255|o>>>16&65280]<<16}function xn(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=or;let l=0;e^=t[l++],n^=t[l++],r^=t[l++],o^=t[l++];const c=t.length/4-2;for(let v=0;v<c;v++){const x=t[l++]^st(i,a,e,n,r,o),p=t[l++]^st(i,a,n,r,o,e),y=t[l++]^st(i,a,r,o,e,n),b=t[l++]^st(i,a,o,e,n,r);e=x,n=p,r=y,o=b}const d=t[l++]^Ze(s,e,n,r,o),u=t[l++]^Ze(s,n,r,o,e),m=t[l++]^Ze(s,r,o,e,n),h=t[l++]^Ze(s,o,e,n,r);return{s0:d,s1:u,s2:m,s3:h}}function it(t,e,n,r,o){ee(n,Nt,"nonce"),ee(r),o=Bo(r.length,o);const s=n,i=Re(s),a=yt(s),l=Re(r),c=Re(o),d=e?0:12,u=r.length;let m=a.getUint32(d,e),{s0:h,s1:v,s2:x,s3:p}=xn(t,z(i[0]),z(i[1]),z(i[2]),z(i[3]));for(let b=0;b+4<=l.length;b+=4)c[b+0]=l[b+0]^z(h),c[b+1]=l[b+1]^z(v),c[b+2]=l[b+2]^z(x),c[b+3]=l[b+3]^z(p),m=m+1>>>0,a.setUint32(d,m,e),{s0:h,s1:v,s2:x,s3:p}=xn(t,z(i[0]),z(i[1]),z(i[2]),z(i[3]));const y=Nt*Math.floor(l.length/Co);if(y<u){const b=new Uint32Array([h,v,x,p]);Kt(b);const E=So(b);for(let I=y,k=0;I<u;I++,k++)o[I]=r[I]^E[k];Ee(b)}return o}function Ho(t,e,n,r,o){const s=o?o.length:0,i=t.create(n,r.length+s);o&&i.update(o);const a=Oo(8*r.length,8*s,e);i.update(r),i.update(a);const l=i.digest();return Ee(a),l}const Sn=Ao({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,n,r){if(n.length<8)throw new Error("aes/gcm: invalid nonce length");const o=16;function s(a,l,c){const d=Ho(En,!1,a,c,r);for(let u=0;u<l.length;u++)d[u]^=l[u];return d}function i(){const a=jo(e),l=ot.slice(),c=ot.slice();if(it(a,!1,c,c,l),n.length===12)c.set(n);else{const u=ot.slice();yt(u).setBigUint64(8,BigInt(n.length*8),!1);const h=En.create(l).update(n).update(u);h.digestInto(c),h.destroy()}const d=it(a,!1,c,ot);return{xk:a,authKey:l,counter:c,tagMask:d}}return{encrypt(a){const{xk:l,authKey:c,counter:d,tagMask:u}=i(),m=new Uint8Array(a.length+o),h=[l,c,d,u];We(a)||h.push(a=Qe(a)),it(l,!1,d,a,m.subarray(0,a.length));const v=s(c,u,m.subarray(0,m.length-o));return h.push(v),m.set(v,a.length),Ee(...h),m},decrypt(a){const{xk:l,authKey:c,counter:d,tagMask:u}=i(),m=[l,c,u,d];We(a)||m.push(a=Qe(a));const h=a.subarray(0,-o),v=a.subarray(-o),x=s(c,u,h);if(m.push(x),!_o(x,v))throw Ee(...m),new Error("aes/gcm: invalid ghash tag");const p=it(l,!1,d,h);return Ee(...m),p}}}),sr="chainlesschain.remote-session.e2ee.v1",In="chainlesschain://remote-session/pair#",Bt=32,$o=new TextEncoder,ir=new TextDecoder;function dt(t){return $o.encode(t)}function ct(t){let e="";for(const n of t)e+=String.fromCharCode(n);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ke(t){const e=String(t).replace(/-/g,"+").replace(/_/g,"/"),n=atob(e),r=new Uint8Array(n.length);for(let o=0;o<n.length;o+=1)r[o]=n.charCodeAt(o);return r}function zo(t){const e=new Uint8Array(t);return globalThis.crypto.getRandomValues(e),e}function Zo(){const t=Ut.utils;return t.randomSecretKey?t.randomSecretKey():t.randomPrivateKey()}function _n(t,e,n){return dt(`${sr}
2
2
  ${t}
3
3
  ${e}
4
- ${n}`)}function Ko(t,e=Date.now()){if(typeof t!="string"||!t.startsWith(In))throw new Error("Invalid Remote Session pairing URI");let n;try{n=JSON.parse(ir.decode(Ke(t.slice(In.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<=e)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 Yo{constructor(e,n){if(!e||!n)throw new Error("sessionId and localPeerId are required");this.sessionId=e,this.localPeerId=n,this.secretKey=Zo(),this.publicKey=Ut.getPublicKey(this.secretKey),this.key=null,this.sendSequence=0,this.receivedSequences=new Map}publicKeyBase64(){return ct(this.publicKey)}pair(e,n){if(!e||!n)throw new Error("Incomplete peer key material");const r=Ke(e),o=r.length===Bt?r:r.slice(-Bt);if(o.length!==Bt)throw new Error("Invalid X25519 host public key");const s=Ut.getSharedSecret(this.secretKey,o),i=nn(dt(n));this.key=Eo(nn,s,i,dt(`${sr}:${this.sessionId}`),32)}encrypt(e){if(!this.key)throw new Error("Remote Session is not paired");const n=this.sendSequence+=1,r=zo(12),o=Sn(this.key,r,_n(this.sessionId,this.localPeerId,n)).encrypt(dt(JSON.stringify(e)));return{v:1,sessionId:this.sessionId,senderId:this.localPeerId,sequence:n,nonce:ct(r),ciphertext:ct(o.slice(0,o.length-16)),tag:ct(o.slice(o.length-16))}}decrypt(e){if(e?.v!==1||e.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(e.senderId)||0;if(!Number.isSafeInteger(e.sequence)||e.sequence<=n)throw new Error("Remote Session replay or out-of-order envelope rejected");const r=new Uint8Array([...Ke(e.ciphertext),...Ke(e.tag)]),o=Sn(this.key,Ke(e.nonce),_n(this.sessionId,e.senderId,e.sequence)).decrypt(r);return this.receivedSequences.set(e.senderId,e.sequence),JSON.parse(ir.decode(o))}}const cr="chainlesschain://remote-control/pair#";function Vo(t){const e=String(t).replace(/-/g,"+").replace(/_/g,"/"),n=e.padEnd(e.length+(4-e.length%4)%4,"="),r=atob(n),o=new Uint8Array(r.length);for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return new TextDecoder().decode(o)}function ar(t){return typeof t=="string"&&t.startsWith(cr)}function Ot(t){const e=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(t);if(!e)return!1;const[n,r]=[Number(e[1]),Number(e[2])];return[e[1],e[2],e[3],e[4]].some(o=>Number(o)>255)?!1:n===127||n===10||n===172&&r>=16&&r<=31||n===192&&r===168||n===169&&r===254}function Xo(t){const e=String(t||"").toLowerCase().replace(/^\[|\]$/g,"");if(!e)return!1;if(e==="localhost"||Ot(e)||e==="::1")return!0;const n=/^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.exec(e);if(n)return Ot(n[1]);const r=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(e);if(r){const o=parseInt(r[1],16),s=parseInt(r[2],16);return Ot(`${o>>8&255}.${o&255}.${s>>8&255}.${s&255}`)}return!!(/^fe[89ab]/.test(e)||/^f[cd]/.test(e))}function Go(t){let e;try{e=new URL(String(t))}catch{throw new Error(`Invalid direct pairing endpoint: ${t}`)}if(e.protocol!=="ws:"&&e.protocol!=="wss:")throw new Error(`Direct pairing endpoint must be ws:// or wss:// (got ${e.protocol})`);if(e.protocol==="ws:"&&!Xo(e.hostname))throw new Error(`Refusing plaintext ws:// to non-private host "${e.hostname}" — direct pairing is LAN/loopback only; use wss:// for anything else`);return e}function Qo(t,e=Date.now()){if(!ar(t))throw new Error("Not a remote-control pairing URI");let n;try{n=JSON.parse(Vo(t.slice(cr.length)))}catch{throw new Error("Malformed remote-control pairing payload")}if(n.v!==1||n.transport!=="direct")throw new Error(`Unsupported remote-control pairing payload (v=${n.v}, transport=${n.transport})`);if(!n.wsUrl||!n.remoteSessionId||!n.pairingToken)throw new Error("Pairing payload is missing wsUrl/session/token");if(n.expiresAt!=null&&n.expiresAt<=e)throw new Error("Pairing link has expired — generate a new one");return Go(n.wsUrl),{wsUrl:n.wsUrl,serverToken:n.serverToken||null,remoteSessionId:n.remoteSessionId,agentSessionId:n.agentSessionId||null,pairingToken:n.pairingToken,scopes:Array.isArray(n.scopes)?n.scopes:null,expiresAt:n.expiresAt??null,durableMembership:n.durableMembership===!0}}const Wo="chainlesschain.remote-membership-authentication-challenge.v1\0",lr="cc-remote-membership-credential/v1",Jo="cc-remote-membership",es=1,at="credentials",ts="cc.remote-membership.ed25519.v1:",lt=Object.freeze({storageUnavailable:!0});function ur(t){let e="";for(const n of new Uint8Array(t))e+=String.fromCharCode(n);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ns(t){return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("")}function Pt(t){if(t===null||typeof t=="boolean"||typeof t=="string")return JSON.stringify(t);if(typeof t=="number"){if(!Number.isSafeInteger(t)||Object.is(t,-0))throw new Error("Remote membership challenge contains a non-canonical number");return JSON.stringify(t)}if(Array.isArray(t))return`[${t.map(e=>Pt(e)).join(",")}]`;if(!t||typeof t!="object")throw new Error("Remote membership challenge is not canonical JSON");return`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${Pt(t[e])}`).join(",")}}`}function kt(t){const e=typeof t=="string"?t.trim():"";if(!e||e.length>256||/[\u0000-\u001f\u007f]/.test(e))throw new Error("Remote membership session id is invalid");return e}function fr(t,{optional:e=!1}={}){if(e&&t==null)return null;const n=typeof t=="string"?t.trim():"";if(!n||n.length>256||/[\u0000-\u001f\u007f]/.test(n))throw new Error("Remote membership principal id is invalid");return n}function Rn(t,e){try{e?.removeItem(`${ts}${t}`)}catch{}}function rs(t=globalThis.indexedDB){if(!t||typeof t.open!="function")return null;let e=null;function n(){return e||(e=new Promise((o,s)=>{const i=t.open(Jo,es);i.onupgradeneeded=()=>{const a=i.result;a.objectStoreNames.contains(at)||a.createObjectStore(at,{keyPath:"sessionId"})},i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error||new Error("Remote membership database failed")),i.onblocked=()=>s(new Error("Remote membership database upgrade is blocked"))}).catch(o=>{throw e=null,o}),e)}async function r(o,s){const i=await n();return new Promise((a,l)=>{const c=i.transaction(at,o),d=c.objectStore(at);let u,m=!1;const h=s(d);h.onsuccess=()=>{u=h.result},h.onerror=v=>{if(h.error?.name==="ConstraintError"){m=!0,v.preventDefault(),v.stopPropagation();return}},c.oncomplete=()=>a(m?{duplicate:!0}:{result:u}),c.onerror=()=>l(c.error||h.error||new Error("Credential transaction failed")),c.onabort=()=>l(c.error||h.error||new Error("Credential transaction aborted"))})}return Object.freeze({async get(o){return(await r("readonly",s=>s.get(o))).result},async add(o){return(await r("readwrite",i=>i.add(o))).duplicate!==!0},async put(o){await r("readwrite",s=>s.put(o))},async delete(o){await r("readwrite",s=>s.delete(o))}})}function Mt(t,{type:e,usage:n,extractable:r}){if(!t||t.type!==e||t.algorithm?.name!=="Ed25519"||t.extractable!==r||!Array.isArray(t.usages)||t.usages.length!==1||t.usages[0]!==n)throw new Error("Remote membership credential record is invalid")}function ut(t,e){if(!t||typeof t!="object"||Array.isArray(t)||t.schema!==lr||t.sessionId!==e)throw new Error("Remote membership credential record is invalid");return Mt(t.publicKey,{type:"public",usage:"verify",extractable:!0}),Mt(t.privateKey,{type:"private",usage:"sign",extractable:!1}),fr(t.principalId,{optional:!0}),t}function os({subtle:t=globalThis.crypto?.subtle,credentialStore:e=rs(),legacyStorage:n=(()=>{try{return globalThis.localStorage||null}catch{return null}})()}={}){if(!t)throw new Error("WebCrypto is required for durable pairing");const r=new Map,o=new Map;function s(u,m){const v=(o.get(u)||Promise.resolve()).then(m,m);return o.set(u,v),v.finally(()=>{o.get(u)===v&&o.delete(u)})}async function i(u){r.delete(u);try{await e?.delete(u)}catch{}}async function a(u){const m=r.get(u);if(m)try{return{record:ut(m,u),persistence:"memory"}}catch{r.delete(u)}if(!e)return null;let h;try{h=await e.get(u)}catch{return lt}if(!h)return null;try{return{record:ut(h,u),persistence:"indexeddb"}}catch{return await i(u),null}}async function l(u,m){const h=await t.exportKey("spki",u.publicKey),v=ur(h),x=`ed25519:${ns(await t.digest("SHA-256",h))}`;if(u.principalId&&u.principalId!==x)throw new Error("Remote membership principal binding changed");return Object.freeze({publicKey:v,privateKey:u.privateKey,principalId:u.principalId||null,credentialPrincipalId:x,persistence:m})}async function c(u,{memoryOnly:m=!1}={}){const h=await t.generateKey({name:"Ed25519"},!1,["sign","verify"]),v=ut({schema:lr,sessionId:u,publicKey:h.publicKey,privateKey:h.privateKey,principalId:null},u);if(e&&!m){let x;try{x=await e.add(v)}catch{return r.set(u,v),{record:v,persistence:"memory"}}if(x)return{record:v,persistence:"indexeddb"};const p=await a(u);if(p&&p!==lt)return p;throw new Error("Concurrent credential creation did not persist a key")}return r.set(u,v),{record:v,persistence:"memory"}}async function d(u){Rn(u,n);const m=await a(u),h=m===lt?await c(u,{memoryOnly:!0}):m||await c(u);return l(h.record,h.persistence)}return Object.freeze({getOrCreate(u){const m=kt(u);return s(m,()=>d(m))},rememberPrincipal(u,m){const h=kt(u),v=fr(m);return s(h,async()=>{const x=await a(h);if(x===lt)throw new Error("Remote membership principal persistence is unavailable");const p=x||await c(h),y=await l(p.record,p.persistence);if(v!==y.credentialPrincipalId)throw new Error("Remote membership principal binding changed");if(p.record.principalId&&p.record.principalId!==v)throw new Error("Remote membership principal binding changed");if(p.record.principalId===v&&p.persistence==="indexeddb")return y;if(p.persistence!=="indexeddb"||!e)throw new Error("Remote membership principal could not be persisted before join");const b=ut({...p.record,principalId:v},h);try{await e.put(b)}catch(E){throw new Error("Remote membership principal could not be persisted before join",{cause:E})}return l(b,"indexeddb")})},forget(u){const m=kt(u);return s(m,async()=>{Rn(m,n),r.delete(m);try{await e?.delete(m)}catch{}})}})}let Tt=null;function Vt(){return Tt||(Tt=os()),Tt}function ss(t){return Vt().getOrCreate(t)}function is(t,e){return Vt().rememberPrincipal(t,e)}function cs(t){return Vt().forget(t)}async function An(t,e){const n=globalThis.crypto?.subtle;if(!n||!e)throw new Error("Remote membership signing credential is unavailable");Mt(e,{type:"private",usage:"sign",extractable:!1});const r=new TextEncoder,o=r.encode(Wo),s=r.encode(Pt(t)),i=new Uint8Array(o.length+s.length);return i.set(o,0),i.set(s,o.length),ur(await n.sign({name:"Ed25519"},e,i))}const Bn=1e3,On=3e4,kn=20,as=15e3,ls=5e3,us=2;let Tn=0;function pt(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function fs(){return`web-${pt()}`}const Ln=br("remoteSession",()=>{const t=se("idle"),e=se([]),n=se(""),r=se(null),o=se(null),s=se(null),i=se([]),a=se([]),l=new Map,c=new Set,d=[];let u=null,m=null,h=null,v=null,x=!1,p=!1,y=0,b=null,E=null,I=0,k=null,P=0,R=null,T=null,B=null,C=null,M=new Map,V=0;function H(){b&&(clearTimeout(b),b=null)}function O(){E&&(clearTimeout(E),E=null)}function N(f){const g=f?.payload&&typeof f.payload=="object"?f.payload:f;if(["permission.request","approval.requested","approval_request"].includes(f?.type)){const w=F(f);w&&!l.has(w)&&!c.has(w)&&!i.value.some(_=>_.requestId===w)&&(l.set(w,"pending"),i.value=[...i.value,{requestId:w,tool:f.tool||null,action:f.action||null,detail:f.detail||null,askedAt:f.askedAt||Date.now(),fingerprint:f.fingerprint||null,binding:f.binding||null,revision:f.revision??null,requestedPermissions:$(f)}])}else if(["permission.resolved","approval.resolved","approval_resolved"].includes(f?.type)){const w=F(f);w&&(l.delete(w),K(w),S(w))}else if(["question_request","question.requested","question"].includes(f?.type)){const w=g?.requestId||g?.id||f?.id||null,_=g?.binding&&typeof g.binding=="object"&&!Array.isArray(g.binding)?g.binding:null;w&&_&&!a.value.some(q=>q.requestId===w)&&(a.value=[...a.value,{requestId:w,question:g.question||g.prompt||"",options:Array.isArray(g.options)?g.options:[],multiSelect:g.multiSelect===!0,binding:_}])}else if(["question_resolved","question.resolved"].includes(f?.type)){const w=g?.requestId||g?.id||f?.id||null;w&&W(w)}Tn+=1,e.value=[...e.value,{...f,_id:Tn,_rxAt:Date.now()}].slice(-200)}function S(f){i.value=i.value.filter(g=>g.requestId!==f)}function F(f){return f?.requestId||f?.approvalId||f?.id||null}function $(f){const g=f?.requested_permissions??f?.requestedPermissions;if(!Array.isArray(g)||g.length===0||g.length>64)return null;const w=[];for(const _ of g){if(!_||typeof _!="object"||Array.isArray(_))return null;const q=_.capability,G=_.scope,fe=_.expiresAt??_.expires_at??null;if(typeof q!="string"||q.length<1||q.length>128||typeof G!="string"||G.length<1||G.length>1024||fe!==null&&typeof fe!="string")return null;w.push({capability:q,scope:G,...fe===null?{}:{expiresAt:fe}})}return w}function K(f){for(c.has(f)||(c.add(f),d.push(f));d.length>1024;)c.delete(d.shift())}function X(){l.clear(),c.clear(),d.splice(0),i.value=[]}function W(f){a.value=a.value.filter(g=>g.requestId!==f)}function te(f){!f||!f.requestId||e.value.some(w=>["permission.resolved","approval.resolved","approval_resolved"].includes(w.type)&&F(w)===f.requestId)||c.has(f.requestId)||(l.set(f.requestId,"pending"),i.value.some(w=>w.requestId===f.requestId)||(i.value=[...i.value,f]))}function Pe(){if(!h)return;x||(I=0);const f=new WebSocket(h.relayUrl);u=f,f.addEventListener("open",()=>{f===u&&f.send(JSON.stringify({type:"register",peerId:v,deviceType:"web",deviceInfo:{protocol:"remote-session.e2ee.v1"}}))}),f.addEventListener("message",g=>{f===u&&De(g.data)}),f.addEventListener("close",()=>{f===u&&(O(),u=null,p?t.value="disconnected":Me())}),f.addEventListener("error",()=>{f===u&&(n.value="Remote Session relay connection error")})}function Me(){if(p||b)return;if(y>=kn){t.value="disconnected",n.value="Remote Session 重连已放弃(中继长时间不可达)— 回到本页可自动重试";return}const f=Math.min(Bn*2**y,On);y+=1,t.value="reconnecting",b=setTimeout(()=>{b=null,p||Pe()},f)}function Je(){if(!(p||b)){if(o.value==="direct"){if(!T?.durableMembership||!C||R)return;y=0,n.value="",ke(T,{resumeOnly:!0});return}o.value!=="relay"||!h||u||(y=0,n.value="",t.value="connecting",Pe())}}function De(f){try{let g=JSON.parse(typeof f=="string"?f:String(f));if(g.type==="offline-message"&&(g=g.originalMessage||{}),g.type==="registered"){x?t.value="connected":(t.value="pairing",Be());return}if(g.type!=="message")return;const w=g.payload;if(!w||w.type!=="remote-session.encrypted")return;const _=m.decrypt(w.envelope);_.type==="pair.accepted"?(O(),x=!0,I=0,y=0,t.value="connected"):_.type==="session.revoked"?(p=!0,x=!1,H(),O(),u&&u.close(),u=null,t.value="revoked"):N(_)}catch(g){t.value="error",n.value=g?.message||"Remote Session protocol error"}}function Ae(f,g){return!u||u.readyState!==WebSocket.OPEN||!h?!1:(u.send(JSON.stringify({type:"message",to:h.hostPeerId,payload:{type:f,...g}})),!0)}function Be(){const f={type:"pair.join",remoteSessionId:h.remoteSessionId,token:h.pairingToken,capabilities:["approval-binding-v1","approval-decision-v1"]};k?.token&&(f.pushToken=k.token,f.pushProvider=k.provider||"web");const g=Ae("remote-session.pair",{mobilePeerId:v,mobilePublicKey:m.publicKeyBase64(),envelope:m.encrypt(f)});return O(),g?(E=setTimeout(()=>{if(E=null,!(x||p)){if(I>=us){try{u?.close()}catch{}return}I+=1,Be()}},ls),!0):!1}function ge(f){if(!u||u.readyState!==WebSocket.OPEN||!x)return!1;const g={...f,commandId:f.commandId||pt(),seq:f.seq??++P};return Ae("remote-session.encrypted",{envelope:m.encrypt(g)})}function Oe(f){for(const[,g]of M)clearTimeout(g.timer),g.reject(new Error(f));M=new Map}function ue(f,g={}){const w=R;if(!w||w.readyState!==WebSocket.OPEN)return Promise.reject(new Error("not connected"));const _=`web-rc-${++V}-${pt()}`;return new Promise((q,G)=>{const fe=setTimeout(()=>{M.delete(_),G(new Error(`request "${f}" timed out`))},as);M.set(_,{resolve:q,reject:G,timer:fe}),w.send(JSON.stringify({id:_,type:f,...g}))})}function bt(f){let g;try{g=JSON.parse(typeof f=="string"?f:String(f))}catch{return}const w=g.requestId&&M.has(g.requestId)?g.requestId:g.id&&M.has(g.id)?g.id:null;if(w){const _=M.get(w);if(M.delete(w),clearTimeout(_.timer),g.type==="error"){const q=new Error(g.message||g.payload?.message||"server error");typeof g.code=="string"&&g.code&&(q.code=g.code),q.remoteResponse=!0,_.reject(q)}else _.resolve(g);return}if(g.type==="remote-session-event"&&g.remoteSessionId===T?.remoteSessionId){N(g.event||{});return}if(g.type==="remote-session-revoked"&&g.remoteSessionId===T?.remoteSessionId){p=!0;const _=T.remoteSessionId;C=null,B=null,cs(_),R&&R.close(),R=null,t.value="revoked"}}function Fe(){if(p||b||!T?.durableMembership||!C)return;if(y>=kn){t.value="disconnected",n.value="Durable Remote Session reconnect attempts were exhausted; retry from this page.";return}const f=Math.min(Bn*2**y,On);y+=1,t.value="reconnecting",b=setTimeout(()=>{b=null,!p&&T&&ke(T,{resumeOnly:!0})},f)}function ke(f,{resumeOnly:g=!1}={}){T=f,r.value=f.remoteSessionId,o.value="direct",s.value=f.scopes,t.value=g?"reconnecting":"connecting";const w=new WebSocket(f.wsUrl);R=w,w.addEventListener("open",async()=>{if(w===R)try{if(t.value=g?"reconnecting":"pairing",f.serverToken){const q=await ue("auth",{token:f.serverToken});if(!q.success)throw new Error(q.message||"authentication failed")}let _;if(f.durableMembership){B=B||await ss(f.remoteSessionId),C=C||B.principalId||null;const q=U=>typeof U=="string"&&/^[1-9]\d*$/.test(U),G=(U,je,xe)=>{const tt=U.session?.sessionId||null,yr=U.member?.principalId||U.member?.clientId||null;if(tt!==f.remoteSessionId||yr!==B.credentialPrincipalId||!q(xe?.sessionEpoch)||!q(xe?.membershipEpoch)||U.session?.sessionEpoch!==xe.sessionEpoch||U.member?.membershipEpoch!==xe.membershipEpoch)throw new Error(`Durable Remote Session ${je} binding changed`);return U},fe=async()=>{if(!C)throw new Error("Durable Remote Session principal binding is unavailable");const U=await ue("remote-session-resume-challenge",{remoteSessionId:f.remoteSessionId,principalId:C});if(U.challenge?.sessionId!==f.remoteSessionId||U.challenge?.principalId!==C||!q(U.challenge?.sessionEpoch)||!q(U.challenge?.membershipEpoch))throw new Error("Durable Remote Session resume challenge binding changed");const je=await An(U.challenge,B.privateKey);return G(await ue("remote-session-resume",{remoteSessionId:f.remoteSessionId,challengeId:U.challenge.challengeId,signature:je}),"resume",U.challenge)},Gt=async()=>{const U=await ue("remote-session-join-challenge",{remoteSessionId:f.remoteSessionId,token:f.pairingToken,credentialPublicKey:B.publicKey,capabilities:["approval-binding-v1","approval-decision-v1"]});if(U.challenge?.sessionId!==f.remoteSessionId||U.challenge?.principalId!==B.credentialPrincipalId||U.challenge?.credentialPublicKey!==B.publicKey||!q(U.challenge?.sessionEpoch)||!q(U.challenge?.membershipEpoch))throw new Error("Durable Remote Session join challenge binding changed");B=await is(f.remoteSessionId,B.credentialPrincipalId),C=B.principalId;const je=await An(U.challenge,B.privateKey);try{return G(await ue("remote-session-join",{remoteSessionId:f.remoteSessionId,challengeId:U.challenge.challengeId,signature:je}),"join",U.challenge)}catch(xe){if(xe?.remoteResponse)throw xe;try{return await fe()}catch(tt){throw tt.joinOutcomeUnknown=!0,tt}}};if(C)try{_=await fe()}catch(U){if(g||U?.code!=="REMOTE_SESSION_MEMBERSHIP_NOT_ACTIVE")throw U;_=await Gt()}else{if(g)throw new Error("Durable Remote Session principal binding is unavailable");_=await Gt()}}else _=await ue("remote-session-join",{remoteSessionId:f.remoteSessionId,token:f.pairingToken});if(w!==R)return;s.value=_.member?.scopes||f.scopes,y=0,n.value="",t.value="connected"}catch(_){if(w!==R)return;n.value=_?.message||"Direct pairing failed",Oe(n.value),R=null;try{w.close()}catch{}!p&&(g||_?.joinOutcomeUnknown===!0)?Fe():t.value="error"}}),w.addEventListener("message",_=>{w===R&&bt(_.data)}),w.addEventListener("close",()=>{if(w===R){if(R=null,Oe("connection closed"),p){t.value!=="revoked"&&(t.value="disconnected");return}if(f.durableMembership&&C){Fe();return}["connected","connecting","pairing","reconnecting"].includes(t.value)&&(t.value="disconnected",n.value="直连会话已断开 — 配对码为一次性,请在主机端重新生成配对链接")}}),w.addEventListener("error",()=>{w===R&&(n.value="Remote control host connection error")})}function ve(f){return ue("remote-session-publish",{remoteSessionId:T.remoteSessionId,commandId:pt(),seq:++P,event:f}).catch(g=>(n.value=g?.message||"Remote control send failed",null))}function et(f,g={}){Xt();try{if(n.value="",e.value=[],X(),p=!1,P=0,ar(f))return B=null,C=null,y=0,ke(Qo(f)),!0;const w=Ko(f);return k=g.pushCredentials||null,v=fs(),m=new Yo(w.remoteSessionId,v),m.pair(w.hostPublicKey,w.pairingToken),h=w,r.value=w.remoteSessionId,o.value="relay",s.value=null,x=!1,I=0,y=0,t.value="connecting",Pe(),!0}catch(w){return t.value="error",n.value=w?.message||"Invalid pairing link",!1}}function dr(f){const g=(f||"").trim();if(g){if(o.value==="direct"){R?ve({type:"prompt",content:g}):n.value="Remote Session is not connected";return}ge({type:"prompt",content:g})||(n.value="Remote Session is not connected")}}function pr(f,g){if(!f)return!1;const w=i.value.find(G=>G.requestId===f)||null;if(!w||l.get(f)!=="pending")return!1;const _=hr(w,g);if(!_)return n.value="This approval does not contain a reviewable persistent grant",!1;const q=_.kind.startsWith("accept");return l.set(f,"responding"),S(f),o.value==="direct"?R?(ve({type:"approval.resolve",requestId:f,decision:_,answer:q,approved:q,fingerprint:w?.fingerprint||null,binding:w?.binding||null,revision:w?.revision??null}).then(G=>{G===null&&te(w)}),!0):(n.value="Remote Session is not connected",te(w),!1):ge({type:"approval.resolve",requestId:f,decision:_,approved:q,fingerprint:w?.fingerprint||null,binding:w?.binding||null,revision:w?.revision??null})?!0:(n.value="Remote Session is not connected",te(w),!1)}function hr(f,g){return g===!0||g==="once"||g==="acceptOnce"?{kind:"acceptOnce"}:g===!1||g==="decline"?{kind:"decline"}:g==="turn"||g==="acceptForTurn"?f.requestedPermissions?.length?{kind:"acceptForTurn",permissions:f.requestedPermissions}:null:(g==="session"||g==="acceptForSession")&&f.requestedPermissions?.length?{kind:"acceptForSession",permissions:f.requestedPermissions}:null}function gr(f,g){if(!f)return;const w=a.value.find(q=>q.requestId===f)||null;if(!w?.binding)return;W(f);const _={type:"question.answer",requestId:f,answer:g,binding:w.binding};if(o.value==="direct"){if(!R){n.value="Remote Session is not connected",a.value=[...a.value,w];return}ve(_).then(q=>{q===null&&!a.value.some(G=>G.requestId===f)&&(a.value=[...a.value,w])});return}ge(_)||(n.value="Remote Session is not connected",a.value=[...a.value,w])}function mr(){const f=i.value.filter(w=>l.get(w.requestId)==="pending");for(const w of f)l.set(w.requestId,"interrupting"),S(w.requestId);const g=w=>{for(const _ of f)l.get(_.requestId)==="interrupting"&&(w?(l.delete(_.requestId),K(_.requestId)):te(_));return w};return o.value==="direct"?R?(ve({type:"interrupt"}).then(w=>g(w!==null)),!0):g(!1):g(ge({type:"interrupt"}))}function wr(f,g="web"){if(k=f?{token:f,provider:g}:null,!x)return;const w={type:"push.register"};k?.token&&(w.pushToken=k.token,w.pushProvider=k.provider),ge(w)}function Xt(){if(p=!0,x=!1,H(),O(),u)try{u.close()}catch{}if(u=null,R)try{R.close()}catch{}R=null,T=null,B=null,C=null,Oe("disconnected"),X(),t.value!=="revoked"&&(t.value="disconnected")}return{status:t,events:e,error:n,remoteSessionId:r,transport:o,scopes:s,pendingApprovals:i,pendingQuestions:a,connect:et,sendPrompt:dr,approve:pr,answerQuestion:gr,interrupt:mr,updatePushCredentials:wr,resumeReconnect:Je,disconnect:Xt}}),ds={__name:"RemoteSession",setup(t,{expose:e}){e();const n=Ln();Qt(()=>n.resumeReconnect());const{status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:l}=Wt(n),c=se(""),d=se(""),u=se(!1),m=He(()=>["connecting","pairing","connected","reconnecting"].includes(r.value)),h=He(()=>({idle:"未连接",connecting:"连接中",pairing:"配对中",connected:"已连接",reconnecting:"重连中",disconnected:"已断开",revoked:"已被撤销",error:"错误"})[r.value]||r.value),v=He(()=>r.value==="connected"?"green":["connecting","pairing","reconnecting"].includes(r.value)?"blue":["revoked","error"].includes(r.value)?"red":"default"),x=He(()=>[...o.value].reverse());function p(S){return String(S?.type||"").includes("approval")}function y(S){const F=String(S?.type||""),$=E(S);return["permission.request","approval.requested","approval_request"].includes(F)&&$!==""&&a.value.some(K=>K.requestId===$)}function b(S){return S?.content||S?.payload?.content||S?.message||""}function E(S){return S?.requestId||S?.approvalId||S?.id||""}function I(){n.connect(c.value.trim())}function k(S){u.value=!1,S&&(c.value=S,n.connect(S))}function P(S){const F=typeof S=="string"?S:d.value;n.sendPrompt(F),d.value=""}function R(S,F){n.approve(E(S),F)}function T(S,F){n.approve(S.requestId,F)}function B(S){return String(S&&typeof S=="object"?S.label??S.value??"":S??"")}function C(S){return S&&typeof S=="object"&&"value"in S?S.value:B(S)}function M(S,F){let $=F;if($===void 0){const K=S.options.map(B).filter(Boolean),X=window.prompt(`${S.question||"Input required"}${K.length?`
5
- Options: ${K.join(", ")}`:""}`);if(X===null)return;$=S.multiSelect?X.split(",").map(W=>W.trim()).filter(Boolean):X}n.answerQuestion(S.requestId,$)}function V(){n.interrupt()}function H(){n.disconnect()}function O(){s.value=""}const N={store:n,status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:l,pairingLink:c,promptText:d,scannerOpen:u,isActive:m,statusLabel:h,statusColor:v,orderedEvents:x,isApproval:p,isPendingApproval:y,eventBody:b,requestIdOf:E,connect:I,onScanned:k,send:P,respond:R,respondPermission:T,optionLabel:B,optionValue:C,answerQuestion:M,interrupt:V,disconnect:H,clearError:O,computed:He,onMounted:Qt,ref:se,get storeToRefs(){return Wt},get LinkOutlined(){return Ir},get ScanOutlined(){return Sr},QrScannerModal:vr,get useRemoteSessionStore(){return Ln}};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}},ps={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},hs={key:0,class:"page-sub"},gs={key:0,style:{"word-break":"break-all"}},ms={key:1,class:"page-sub"},ws={key:2,style:{"margin-top":"8px"},"data-testid":"approval-grants"},ys={key:0};function bs(t,e,n,r,o,s){const i=ne("a-tag"),a=ne("a-space"),l=ne("a-alert"),c=ne("a-textarea"),d=ne("a-button"),u=ne("a-card"),m=ne("a-input-search"),h=ne("a-spin"),v=ne("a-list-item-meta"),x=ne("a-list-item"),p=ne("a-list"),y=ne("a-badge"),b=ne("a-empty");return D(),de("div",null,[Te("div",ps,[e[4]||(e[4]=Te("div",null,[Te("h2",{class:"page-title"},"远程会话"),Te("p",{class:"page-sub"}," 扫码或粘贴桌面端的配对链接,接管一个编码会话(观察 / 提示 / 审批 / 中断)——支持中继 E2EE 链接与局域网直连链接 ")],-1)),L(a,null,{default:A(()=>[r.transport?(D(),re(i,{key:0,color:"purple"},{default:A(()=>[Z(ae(r.transport==="direct"?"直连":"中继"),1)]),_:1})):ie("v-if",!0),L(i,{color:r.statusColor},{default:A(()=>[Z(ae(r.statusLabel),1)]),_:1},8,["color"])]),_:1})]),r.error?(D(),re(l,{key:0,type:"error","show-icon":"",style:{"margin-bottom":"16px"},message:r.error,closable:"",onClose:r.clearError},null,8,["message"])):ie("v-if",!0),r.isActive?(D(),re(u,{key:2,title:"会话控制",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{extra:A(()=>[L(a,null,{default:A(()=>[L(d,{size:"small",onClick:r.interrupt},{default:A(()=>[...e[8]||(e[8]=[Z("中断",-1)])]),_:1}),L(d,{size:"small",danger:"",onClick:r.disconnect},{default:A(()=>[...e[9]||(e[9]=[Z("断开",-1)])]),_:1})]),_:1})]),default:A(()=>[L(a,{direction:"vertical",style:{width:"100%"},size:8},{default:A(()=>[L(m,{value:r.promptText,"onUpdate:value":e[2]||(e[2]=E=>r.promptText=E),placeholder:"发送提示到远程会话…","enter-button":"发送",disabled:r.status!=="connected",onSearch:r.send},null,8,["value","disabled"]),r.status==="reconnecting"?(D(),re(h,{key:0,size:"small"},{tip:A(()=>[...e[10]||(e[10]=[Z("正在重连…",-1)])]),_:1})):ie("v-if",!0)]),_:1})]),_:1})):(D(),re(u,{key:1,title:"连接远程会话",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:A(()=>[L(a,{direction:"vertical",style:{width:"100%"},size:12},{default:A(()=>[L(c,{value:r.pairingLink,"onUpdate:value":e[0]||(e[0]=E=>r.pairingLink=E),rows:3,placeholder:"chainlesschain://remote-session/pair#…(中继)或 chainlesschain://remote-control/pair#…(局域网直连)","allow-clear":""},null,8,["value"]),L(a,null,{default:A(()=>[L(d,{type:"primary",disabled:!r.pairingLink.trim(),onClick:r.connect},{icon:A(()=>[L(r.LinkOutlined)]),default:A(()=>[e[5]||(e[5]=Z(" 连接 ",-1))]),_:1},8,["disabled"]),L(d,{onClick:e[1]||(e[1]=E=>r.scannerOpen=!0)},{icon:A(()=>[L(r.ScanOutlined)]),default:A(()=>[e[6]||(e[6]=Z(" 扫码 ",-1))]),_:1})]),_:1}),e[7]||(e[7]=Te("p",{class:"page-sub",style:{margin:"0"}}," 链接为一次性配对码,敏感载荷仅在片段(#)中,不会发往服务器。 ",-1))]),_:1})]),_:1})),r.pendingQuestions.length?(D(),re(u,{key:3,title:"Agent questions",style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{default:A(()=>[L(p,{size:"small","data-source":r.pendingQuestions,"data-testid":"question-cards"},{renderItem:A(({item:E})=>[L(x,null,{actions:A(()=>[(D(!0),de(Jt,null,en(E.multiSelect?[]:E.options,I=>(D(),re(d,{key:r.optionLabel(I),size:"small",onClick:k=>r.answerQuestion(E,r.optionValue(I))},{default:A(()=>[Z(ae(r.optionLabel(I)),1)]),_:2},1032,["onClick"]))),128)),E.multiSelect||!E.options.length?(D(),re(d,{key:0,type:"primary",size:"small",onClick:I=>r.answerQuestion(E)},{default:A(()=>[...e[11]||(e[11]=[Z(" Answer ",-1)])]),_:1},8,["onClick"])):ie("v-if",!0)]),default:A(()=>[L(v,{description:E.question||"Input required"},null,8,["description"])]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):ie("v-if",!0),r.pendingApprovals.length?(D(),re(u,{key:4,style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{title:A(()=>[e[12]||(e[12]=Z(" 待审批权限请求 ",-1)),L(y,{count:r.pendingApprovals.length,style:{"margin-left":"8px"}},null,8,["count"])]),default:A(()=>[L(p,{size:"small","data-source":r.pendingApprovals,"data-testid":"approval-cards"},{renderItem:A(({item:E})=>[L(x,null,{actions:A(()=>[L(d,{type:"primary",size:"small",onClick:I=>r.respondPermission(E,"once")},{default:A(()=>[...e[14]||(e[14]=[Z("Allow once",-1)])]),_:1},8,["onClick"]),E.requestedPermissions?.length?(D(),re(d,{key:0,size:"small",onClick:I=>r.respondPermission(E,"turn")},{default:A(()=>[...e[15]||(e[15]=[Z("Allow for turn",-1)])]),_:1},8,["onClick"])):ie("v-if",!0),E.requestedPermissions?.length?(D(),re(d,{key:1,size:"small",onClick:I=>r.respondPermission(E,"session")},{default:A(()=>[...e[16]||(e[16]=[Z("Allow for session",-1)])]),_:1},8,["onClick"])):ie("v-if",!0),L(d,{size:"small",danger:"",onClick:I=>r.respondPermission(E,"decline")},{default:A(()=>[...e[17]||(e[17]=[Z("Decline",-1)])]),_:1},8,["onClick"])]),default:A(()=>[L(v,null,{title:A(()=>[L(a,null,{default:A(()=>[L(i,{color:"orange"},{default:A(()=>[Z(ae(E.tool||"tool"),1)]),_:2},1024),E.action?(D(),de("span",hs,ae(E.action),1)):ie("v-if",!0)]),_:2},1024)]),description:A(()=>[E.detail?(D(),de("code",gs,ae(E.detail),1)):(D(),de("span",ms,"(无详情)")),E.requestedPermissions?.length?(D(),de("div",ws,[e[13]||(e[13]=Te("div",{class:"page-sub"},"Review requested grants:",-1)),(D(!0),de(Jt,null,en(E.requestedPermissions,I=>(D(),de("code",{key:`${I.capability}:${I.scope}`,style:{display:"block","word-break":"break-all"}},[Z(ae(I.capability)+" — "+ae(I.scope)+" ",1),I.expiresAt?(D(),de("span",ys," (until "+ae(I.expiresAt)+")",1)):ie("v-if",!0)]))),128))])):ie("v-if",!0)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):ie("v-if",!0),L(u,{title:"会话事件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:A(()=>[r.events.length?(D(),re(p,{key:1,size:"small","data-source":r.orderedEvents},{renderItem:A(({item:E})=>[L(x,null,Er({default:A(()=>[L(v,{description:r.eventBody(E)},{title:A(()=>[L(i,{color:r.isApproval(E)?"orange":"blue"},{default:A(()=>[Z(ae(E.type||"event"),1)]),_:2},1032,["color"])]),_:2},1032,["description"])]),_:2},[r.isPendingApproval(E)?{name:"actions",fn:A(()=>[L(d,{type:"link",size:"small",onClick:I=>r.respond(E,!0)},{default:A(()=>[...e[18]||(e[18]=[Z("批准",-1)])]),_:1},8,["onClick"]),L(d,{type:"link",size:"small",danger:"",onClick:I=>r.respond(E,!1)},{default:A(()=>[...e[19]||(e[19]=[Z("拒绝",-1)])]),_:1},8,["onClick"])]),key:"0"}:void 0]),1024)]),_:1},8,["data-source"])):(D(),re(b,{key:0,description:"尚无事件"}))]),_:1}),L(r.QrScannerModal,{open:r.scannerOpen,onScanned:r.onScanned,onCancel:e[3]||(e[3]=E=>r.scannerOpen=!1)},null,8,["open"])])}const _s=xr(ds,[["render",bs],["__file","/tmp/cc-web-panel-2xi3QL/repo/packages/web-panel/src/views/RemoteSession.vue"]]);export{_s as default};
4
+ ${n}`)}function Ko(t,e=Date.now()){if(typeof t!="string"||!t.startsWith(In))throw new Error("Invalid Remote Session pairing URI");let n;try{n=JSON.parse(ir.decode(Ke(t.slice(In.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<=e)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 Yo{constructor(e,n){if(!e||!n)throw new Error("sessionId and localPeerId are required");this.sessionId=e,this.localPeerId=n,this.secretKey=Zo(),this.publicKey=Ut.getPublicKey(this.secretKey),this.key=null,this.sendSequence=0,this.receivedSequences=new Map}publicKeyBase64(){return ct(this.publicKey)}pair(e,n){if(!e||!n)throw new Error("Incomplete peer key material");const r=Ke(e),o=r.length===Bt?r:r.slice(-Bt);if(o.length!==Bt)throw new Error("Invalid X25519 host public key");const s=Ut.getSharedSecret(this.secretKey,o),i=nn(dt(n));this.key=Eo(nn,s,i,dt(`${sr}:${this.sessionId}`),32)}encrypt(e){if(!this.key)throw new Error("Remote Session is not paired");const n=this.sendSequence+=1,r=zo(12),o=Sn(this.key,r,_n(this.sessionId,this.localPeerId,n)).encrypt(dt(JSON.stringify(e)));return{v:1,sessionId:this.sessionId,senderId:this.localPeerId,sequence:n,nonce:ct(r),ciphertext:ct(o.slice(0,o.length-16)),tag:ct(o.slice(o.length-16))}}decrypt(e){if(e?.v!==1||e.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(e.senderId)||0;if(!Number.isSafeInteger(e.sequence)||e.sequence<=n)throw new Error("Remote Session replay or out-of-order envelope rejected");const r=new Uint8Array([...Ke(e.ciphertext),...Ke(e.tag)]),o=Sn(this.key,Ke(e.nonce),_n(this.sessionId,e.senderId,e.sequence)).decrypt(r);return this.receivedSequences.set(e.senderId,e.sequence),JSON.parse(ir.decode(o))}}const cr="chainlesschain://remote-control/pair#";function Vo(t){const e=String(t).replace(/-/g,"+").replace(/_/g,"/"),n=e.padEnd(e.length+(4-e.length%4)%4,"="),r=atob(n),o=new Uint8Array(r.length);for(let s=0;s<r.length;s+=1)o[s]=r.charCodeAt(s);return new TextDecoder().decode(o)}function ar(t){return typeof t=="string"&&t.startsWith(cr)}function Ot(t){const e=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(t);if(!e)return!1;const[n,r]=[Number(e[1]),Number(e[2])];return[e[1],e[2],e[3],e[4]].some(o=>Number(o)>255)?!1:n===127||n===10||n===172&&r>=16&&r<=31||n===192&&r===168||n===169&&r===254}function Xo(t){const e=String(t||"").toLowerCase().replace(/^\[|\]$/g,"");if(!e)return!1;if(e==="localhost"||Ot(e)||e==="::1")return!0;const n=/^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.exec(e);if(n)return Ot(n[1]);const r=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(e);if(r){const o=parseInt(r[1],16),s=parseInt(r[2],16);return Ot(`${o>>8&255}.${o&255}.${s>>8&255}.${s&255}`)}return!!(/^fe[89ab]/.test(e)||/^f[cd]/.test(e))}function Go(t){let e;try{e=new URL(String(t))}catch{throw new Error(`Invalid direct pairing endpoint: ${t}`)}if(e.protocol!=="ws:"&&e.protocol!=="wss:")throw new Error(`Direct pairing endpoint must be ws:// or wss:// (got ${e.protocol})`);if(e.protocol==="ws:"&&!Xo(e.hostname))throw new Error(`Refusing plaintext ws:// to non-private host "${e.hostname}" — direct pairing is LAN/loopback only; use wss:// for anything else`);return e}function Wo(t,e=Date.now()){if(!ar(t))throw new Error("Not a remote-control pairing URI");let n;try{n=JSON.parse(Vo(t.slice(cr.length)))}catch{throw new Error("Malformed remote-control pairing payload")}if(n.v!==1||n.transport!=="direct")throw new Error(`Unsupported remote-control pairing payload (v=${n.v}, transport=${n.transport})`);if(!n.wsUrl||!n.remoteSessionId||!n.pairingToken)throw new Error("Pairing payload is missing wsUrl/session/token");if(n.expiresAt!=null&&n.expiresAt<=e)throw new Error("Pairing link has expired — generate a new one");return Go(n.wsUrl),{wsUrl:n.wsUrl,serverToken:n.serverToken||null,remoteSessionId:n.remoteSessionId,agentSessionId:n.agentSessionId||null,pairingToken:n.pairingToken,scopes:Array.isArray(n.scopes)?n.scopes:null,expiresAt:n.expiresAt??null,durableMembership:n.durableMembership===!0}}const Qo="chainlesschain.remote-membership-authentication-challenge.v1\0",lr="cc-remote-membership-credential/v1",Jo="cc-remote-membership",es=1,at="credentials",ts="cc.remote-membership.ed25519.v1:",lt=Object.freeze({storageUnavailable:!0});function ur(t){let e="";for(const n of new Uint8Array(t))e+=String.fromCharCode(n);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function ns(t){return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("")}function Pt(t){if(t===null||typeof t=="boolean"||typeof t=="string")return JSON.stringify(t);if(typeof t=="number"){if(!Number.isSafeInteger(t)||Object.is(t,-0))throw new Error("Remote membership challenge contains a non-canonical number");return JSON.stringify(t)}if(Array.isArray(t))return`[${t.map(e=>Pt(e)).join(",")}]`;if(!t||typeof t!="object")throw new Error("Remote membership challenge is not canonical JSON");return`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${Pt(t[e])}`).join(",")}}`}function kt(t){const e=typeof t=="string"?t.trim():"";if(!e||e.length>256||/[\u0000-\u001f\u007f]/.test(e))throw new Error("Remote membership session id is invalid");return e}function fr(t,{optional:e=!1}={}){if(e&&t==null)return null;const n=typeof t=="string"?t.trim():"";if(!n||n.length>256||/[\u0000-\u001f\u007f]/.test(n))throw new Error("Remote membership principal id is invalid");return n}function Rn(t,e){try{e?.removeItem(`${ts}${t}`)}catch{}}function rs(t=globalThis.indexedDB){if(!t||typeof t.open!="function")return null;let e=null;function n(){return e||(e=new Promise((o,s)=>{const i=t.open(Jo,es);i.onupgradeneeded=()=>{const a=i.result;a.objectStoreNames.contains(at)||a.createObjectStore(at,{keyPath:"sessionId"})},i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error||new Error("Remote membership database failed")),i.onblocked=()=>s(new Error("Remote membership database upgrade is blocked"))}).catch(o=>{throw e=null,o}),e)}async function r(o,s){const i=await n();return new Promise((a,l)=>{const c=i.transaction(at,o),d=c.objectStore(at);let u,m=!1;const h=s(d);h.onsuccess=()=>{u=h.result},h.onerror=v=>{if(h.error?.name==="ConstraintError"){m=!0,v.preventDefault(),v.stopPropagation();return}},c.oncomplete=()=>a(m?{duplicate:!0}:{result:u}),c.onerror=()=>l(c.error||h.error||new Error("Credential transaction failed")),c.onabort=()=>l(c.error||h.error||new Error("Credential transaction aborted"))})}return Object.freeze({async get(o){return(await r("readonly",s=>s.get(o))).result},async add(o){return(await r("readwrite",i=>i.add(o))).duplicate!==!0},async put(o){await r("readwrite",s=>s.put(o))},async delete(o){await r("readwrite",s=>s.delete(o))}})}function Mt(t,{type:e,usage:n,extractable:r}){if(!t||t.type!==e||t.algorithm?.name!=="Ed25519"||t.extractable!==r||!Array.isArray(t.usages)||t.usages.length!==1||t.usages[0]!==n)throw new Error("Remote membership credential record is invalid")}function ut(t,e){if(!t||typeof t!="object"||Array.isArray(t)||t.schema!==lr||t.sessionId!==e)throw new Error("Remote membership credential record is invalid");return Mt(t.publicKey,{type:"public",usage:"verify",extractable:!0}),Mt(t.privateKey,{type:"private",usage:"sign",extractable:!1}),fr(t.principalId,{optional:!0}),t}function os({subtle:t=globalThis.crypto?.subtle,credentialStore:e=rs(),legacyStorage:n=(()=>{try{return globalThis.localStorage||null}catch{return null}})()}={}){if(!t)throw new Error("WebCrypto is required for durable pairing");const r=new Map,o=new Map;function s(u,m){const v=(o.get(u)||Promise.resolve()).then(m,m);return o.set(u,v),v.finally(()=>{o.get(u)===v&&o.delete(u)})}async function i(u){r.delete(u);try{await e?.delete(u)}catch{}}async function a(u){const m=r.get(u);if(m)try{return{record:ut(m,u),persistence:"memory"}}catch{r.delete(u)}if(!e)return null;let h;try{h=await e.get(u)}catch{return lt}if(!h)return null;try{return{record:ut(h,u),persistence:"indexeddb"}}catch{return await i(u),null}}async function l(u,m){const h=await t.exportKey("spki",u.publicKey),v=ur(h),x=`ed25519:${ns(await t.digest("SHA-256",h))}`;if(u.principalId&&u.principalId!==x)throw new Error("Remote membership principal binding changed");return Object.freeze({publicKey:v,privateKey:u.privateKey,principalId:u.principalId||null,credentialPrincipalId:x,persistence:m})}async function c(u,{memoryOnly:m=!1}={}){const h=await t.generateKey({name:"Ed25519"},!1,["sign","verify"]),v=ut({schema:lr,sessionId:u,publicKey:h.publicKey,privateKey:h.privateKey,principalId:null},u);if(e&&!m){let x;try{x=await e.add(v)}catch{return r.set(u,v),{record:v,persistence:"memory"}}if(x)return{record:v,persistence:"indexeddb"};const p=await a(u);if(p&&p!==lt)return p;throw new Error("Concurrent credential creation did not persist a key")}return r.set(u,v),{record:v,persistence:"memory"}}async function d(u){Rn(u,n);const m=await a(u),h=m===lt?await c(u,{memoryOnly:!0}):m||await c(u);return l(h.record,h.persistence)}return Object.freeze({getOrCreate(u){const m=kt(u);return s(m,()=>d(m))},rememberPrincipal(u,m){const h=kt(u),v=fr(m);return s(h,async()=>{const x=await a(h);if(x===lt)throw new Error("Remote membership principal persistence is unavailable");const p=x||await c(h),y=await l(p.record,p.persistence);if(v!==y.credentialPrincipalId)throw new Error("Remote membership principal binding changed");if(p.record.principalId&&p.record.principalId!==v)throw new Error("Remote membership principal binding changed");if(p.record.principalId===v&&p.persistence==="indexeddb")return y;if(p.persistence!=="indexeddb"||!e)throw new Error("Remote membership principal could not be persisted before join");const b=ut({...p.record,principalId:v},h);try{await e.put(b)}catch(E){throw new Error("Remote membership principal could not be persisted before join",{cause:E})}return l(b,"indexeddb")})},forget(u){const m=kt(u);return s(m,async()=>{Rn(m,n),r.delete(m);try{await e?.delete(m)}catch{}})}})}let Tt=null;function Vt(){return Tt||(Tt=os()),Tt}function ss(t){return Vt().getOrCreate(t)}function is(t,e){return Vt().rememberPrincipal(t,e)}function cs(t){return Vt().forget(t)}async function An(t,e){const n=globalThis.crypto?.subtle;if(!n||!e)throw new Error("Remote membership signing credential is unavailable");Mt(e,{type:"private",usage:"sign",extractable:!1});const r=new TextEncoder,o=r.encode(Qo),s=r.encode(Pt(t)),i=new Uint8Array(o.length+s.length);return i.set(o,0),i.set(s,o.length),ur(await n.sign({name:"Ed25519"},e,i))}const Bn=1e3,On=3e4,kn=20,as=15e3,ls=5e3,us=2;let Tn=0;function pt(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function fs(){return`web-${pt()}`}const qn=br("remoteSession",()=>{const t=se("idle"),e=se([]),n=se(""),r=se(null),o=se(null),s=se(null),i=se([]),a=se([]),l=new Map,c=new Set,d=[];let u=null,m=null,h=null,v=null,x=!1,p=!1,y=0,b=null,E=null,I=0,k=null,P=0,R=null,T=null,B=null,C=null,M=new Map,V=0;function H(){b&&(clearTimeout(b),b=null)}function O(){E&&(clearTimeout(E),E=null)}function N(f){const g=f?.payload&&typeof f.payload=="object"?f.payload:f;if(["permission.request","approval.requested","approval_request"].includes(f?.type)){const w=F(f);w&&!l.has(w)&&!c.has(w)&&!i.value.some(_=>_.requestId===w)&&(l.set(w,"pending"),i.value=[...i.value,{requestId:w,tool:f.tool||null,action:f.action||null,detail:f.detail||null,askedAt:f.askedAt||Date.now(),fingerprint:f.fingerprint||null,binding:f.binding||null,revision:f.revision??null,requestedPermissions:$(f)}])}else if(["permission.resolved","approval.resolved","approval_resolved"].includes(f?.type)){const w=F(f);w&&(l.delete(w),K(w),S(w))}else if(["question_request","question.requested","question"].includes(f?.type)){const w=g?.requestId||g?.id||f?.id||null,_=g?.binding&&typeof g.binding=="object"&&!Array.isArray(g.binding)?g.binding:null;w&&_&&!a.value.some(L=>L.requestId===w)&&(a.value=[...a.value,{requestId:w,question:g.question||g.prompt||"",options:Array.isArray(g.options)?g.options:[],multiSelect:g.multiSelect===!0,binding:_}])}else if(["question_resolved","question.resolved"].includes(f?.type)){const w=g?.requestId||g?.id||f?.id||null;w&&Q(w)}Tn+=1,e.value=[...e.value,{...f,_id:Tn,_rxAt:Date.now()}].slice(-200)}function S(f){i.value=i.value.filter(g=>g.requestId!==f)}function F(f){return f?.requestId||f?.approvalId||f?.id||null}function $(f){const g=f?.requested_permissions??f?.requestedPermissions;if(!Array.isArray(g)||g.length===0||g.length>64)return null;const w=[];for(const _ of g){if(!_||typeof _!="object"||Array.isArray(_))return null;const L=_.capability,G=_.scope,fe=_.expiresAt??_.expires_at??null;if(typeof L!="string"||L.length<1||L.length>128||typeof G!="string"||G.length<1||G.length>1024||fe!==null&&typeof fe!="string")return null;w.push({capability:L,scope:G,...fe===null?{}:{expiresAt:fe}})}return w}function K(f){for(c.has(f)||(c.add(f),d.push(f));d.length>1024;)c.delete(d.shift())}function X(){l.clear(),c.clear(),d.splice(0),i.value=[]}function Q(f){a.value=a.value.filter(g=>g.requestId!==f)}function te(f){!f||!f.requestId||e.value.some(w=>["permission.resolved","approval.resolved","approval_resolved"].includes(w.type)&&F(w)===f.requestId)||c.has(f.requestId)||(l.set(f.requestId,"pending"),i.value.some(w=>w.requestId===f.requestId)||(i.value=[...i.value,f]))}function Pe(){if(!h)return;x||(I=0);const f=new WebSocket(h.relayUrl);u=f,f.addEventListener("open",()=>{f===u&&f.send(JSON.stringify({type:"register",peerId:v,deviceType:"web",deviceInfo:{protocol:"remote-session.e2ee.v1"}}))}),f.addEventListener("message",g=>{f===u&&De(g.data)}),f.addEventListener("close",()=>{f===u&&(O(),u=null,p?t.value="disconnected":Me())}),f.addEventListener("error",()=>{f===u&&(n.value="Remote Session relay connection error")})}function Me(){if(p||b)return;if(y>=kn){t.value="disconnected",n.value="Remote Session 重连已放弃(中继长时间不可达)— 回到本页可自动重试";return}const f=Math.min(Bn*2**y,On);y+=1,t.value="reconnecting",b=setTimeout(()=>{b=null,p||Pe()},f)}function Je(){if(!(p||b)){if(o.value==="direct"){if(!T?.durableMembership||!C||R)return;y=0,n.value="",ke(T,{resumeOnly:!0});return}o.value!=="relay"||!h||u||(y=0,n.value="",t.value="connecting",Pe())}}function De(f){try{let g=JSON.parse(typeof f=="string"?f:String(f));if(g.type==="offline-message"&&(g=g.originalMessage||{}),g.type==="registered"){x?t.value="connected":(t.value="pairing",Be());return}if(g.type!=="message")return;const w=g.payload;if(!w||w.type!=="remote-session.encrypted")return;const _=m.decrypt(w.envelope);_.type==="pair.accepted"?(O(),x=!0,I=0,y=0,t.value="connected"):_.type==="session.revoked"?(p=!0,x=!1,H(),O(),u&&u.close(),u=null,t.value="revoked"):N(_)}catch(g){t.value="error",n.value=g?.message||"Remote Session protocol error"}}function Ae(f,g){return!u||u.readyState!==WebSocket.OPEN||!h?!1:(u.send(JSON.stringify({type:"message",to:h.hostPeerId,payload:{type:f,...g}})),!0)}function Be(){const f={type:"pair.join",remoteSessionId:h.remoteSessionId,token:h.pairingToken,capabilities:["approval-binding-v1","approval-decision-v1"]};k?.token&&(f.pushToken=k.token,f.pushProvider=k.provider||"web");const g=Ae("remote-session.pair",{mobilePeerId:v,mobilePublicKey:m.publicKeyBase64(),envelope:m.encrypt(f)});return O(),g?(E=setTimeout(()=>{if(E=null,!(x||p)){if(I>=us){try{u?.close()}catch{}return}I+=1,Be()}},ls),!0):!1}function ge(f){if(!u||u.readyState!==WebSocket.OPEN||!x)return!1;const g={...f,commandId:f.commandId||pt(),seq:f.seq??++P};return Ae("remote-session.encrypted",{envelope:m.encrypt(g)})}function Oe(f){for(const[,g]of M)clearTimeout(g.timer),g.reject(new Error(f));M=new Map}function ue(f,g={}){const w=R;if(!w||w.readyState!==WebSocket.OPEN)return Promise.reject(new Error("not connected"));const _=`web-rc-${++V}-${pt()}`;return new Promise((L,G)=>{const fe=setTimeout(()=>{M.delete(_),G(new Error(`request "${f}" timed out`))},as);M.set(_,{resolve:L,reject:G,timer:fe}),w.send(JSON.stringify({id:_,type:f,...g}))})}function bt(f){let g;try{g=JSON.parse(typeof f=="string"?f:String(f))}catch{return}const w=g.requestId&&M.has(g.requestId)?g.requestId:g.id&&M.has(g.id)?g.id:null;if(w){const _=M.get(w);if(M.delete(w),clearTimeout(_.timer),g.type==="error"){const L=new Error(g.message||g.payload?.message||"server error");typeof g.code=="string"&&g.code&&(L.code=g.code),L.remoteResponse=!0,_.reject(L)}else _.resolve(g);return}if(g.type==="remote-session-event"&&g.remoteSessionId===T?.remoteSessionId){N(g.event||{});return}if(g.type==="remote-session-revoked"&&g.remoteSessionId===T?.remoteSessionId){p=!0;const _=T.remoteSessionId;C=null,B=null,cs(_),R&&R.close(),R=null,t.value="revoked"}}function Fe(){if(p||b||!T?.durableMembership||!C)return;if(y>=kn){t.value="disconnected",n.value="Durable Remote Session reconnect attempts were exhausted; retry from this page.";return}const f=Math.min(Bn*2**y,On);y+=1,t.value="reconnecting",b=setTimeout(()=>{b=null,!p&&T&&ke(T,{resumeOnly:!0})},f)}function ke(f,{resumeOnly:g=!1}={}){T=f,r.value=f.remoteSessionId,o.value="direct",s.value=f.scopes,t.value=g?"reconnecting":"connecting";const w=new WebSocket(f.wsUrl);R=w,w.addEventListener("open",async()=>{if(w===R)try{if(t.value=g?"reconnecting":"pairing",f.serverToken){const L=await ue("auth",{token:f.serverToken});if(!L.success)throw new Error(L.message||"authentication failed")}let _;if(f.durableMembership){B=B||await ss(f.remoteSessionId),C=C||B.principalId||null;const L=U=>typeof U=="string"&&/^[1-9]\d*$/.test(U),G=(U,je,xe)=>{const tt=U.session?.sessionId||null,yr=U.member?.principalId||U.member?.clientId||null;if(tt!==f.remoteSessionId||yr!==B.credentialPrincipalId||!L(xe?.sessionEpoch)||!L(xe?.membershipEpoch)||U.session?.sessionEpoch!==xe.sessionEpoch||U.member?.membershipEpoch!==xe.membershipEpoch)throw new Error(`Durable Remote Session ${je} binding changed`);return U},fe=async()=>{if(!C)throw new Error("Durable Remote Session principal binding is unavailable");const U=await ue("remote-session-resume-challenge",{remoteSessionId:f.remoteSessionId,principalId:C});if(U.challenge?.sessionId!==f.remoteSessionId||U.challenge?.principalId!==C||!L(U.challenge?.sessionEpoch)||!L(U.challenge?.membershipEpoch))throw new Error("Durable Remote Session resume challenge binding changed");const je=await An(U.challenge,B.privateKey);return G(await ue("remote-session-resume",{remoteSessionId:f.remoteSessionId,challengeId:U.challenge.challengeId,signature:je}),"resume",U.challenge)},Gt=async()=>{const U=await ue("remote-session-join-challenge",{remoteSessionId:f.remoteSessionId,token:f.pairingToken,credentialPublicKey:B.publicKey,capabilities:["approval-binding-v1","approval-decision-v1"]});if(U.challenge?.sessionId!==f.remoteSessionId||U.challenge?.principalId!==B.credentialPrincipalId||U.challenge?.credentialPublicKey!==B.publicKey||!L(U.challenge?.sessionEpoch)||!L(U.challenge?.membershipEpoch))throw new Error("Durable Remote Session join challenge binding changed");B=await is(f.remoteSessionId,B.credentialPrincipalId),C=B.principalId;const je=await An(U.challenge,B.privateKey);try{return G(await ue("remote-session-join",{remoteSessionId:f.remoteSessionId,challengeId:U.challenge.challengeId,signature:je}),"join",U.challenge)}catch(xe){if(xe?.remoteResponse)throw xe;try{return await fe()}catch(tt){throw tt.joinOutcomeUnknown=!0,tt}}};if(C)try{_=await fe()}catch(U){if(g||U?.code!=="REMOTE_SESSION_MEMBERSHIP_NOT_ACTIVE")throw U;_=await Gt()}else{if(g)throw new Error("Durable Remote Session principal binding is unavailable");_=await Gt()}}else _=await ue("remote-session-join",{remoteSessionId:f.remoteSessionId,token:f.pairingToken});if(w!==R)return;s.value=_.member?.scopes||f.scopes,y=0,n.value="",t.value="connected"}catch(_){if(w!==R)return;n.value=_?.message||"Direct pairing failed",Oe(n.value),R=null;try{w.close()}catch{}!p&&(g||_?.joinOutcomeUnknown===!0)?Fe():t.value="error"}}),w.addEventListener("message",_=>{w===R&&bt(_.data)}),w.addEventListener("close",()=>{if(w===R){if(R=null,Oe("connection closed"),p){t.value!=="revoked"&&(t.value="disconnected");return}if(f.durableMembership&&C){Fe();return}["connected","connecting","pairing","reconnecting"].includes(t.value)&&(t.value="disconnected",n.value="直连会话已断开 — 配对码为一次性,请在主机端重新生成配对链接")}}),w.addEventListener("error",()=>{w===R&&(n.value="Remote control host connection error")})}function ve(f){return ue("remote-session-publish",{remoteSessionId:T.remoteSessionId,commandId:pt(),seq:++P,event:f}).catch(g=>(n.value=g?.message||"Remote control send failed",null))}function et(f,g={}){Xt();try{if(n.value="",e.value=[],X(),p=!1,P=0,ar(f))return B=null,C=null,y=0,ke(Wo(f)),!0;const w=Ko(f);return k=g.pushCredentials||null,v=fs(),m=new Yo(w.remoteSessionId,v),m.pair(w.hostPublicKey,w.pairingToken),h=w,r.value=w.remoteSessionId,o.value="relay",s.value=null,x=!1,I=0,y=0,t.value="connecting",Pe(),!0}catch(w){return t.value="error",n.value=w?.message||"Invalid pairing link",!1}}function dr(f){const g=(f||"").trim();if(g){if(o.value==="direct"){R?ve({type:"prompt",content:g}):n.value="Remote Session is not connected";return}ge({type:"prompt",content:g})||(n.value="Remote Session is not connected")}}function pr(f,g){if(!f)return!1;const w=i.value.find(G=>G.requestId===f)||null;if(!w||l.get(f)!=="pending")return!1;const _=hr(w,g);if(!_)return n.value="This approval does not contain a reviewable persistent grant",!1;const L=_.kind.startsWith("accept");return l.set(f,"responding"),S(f),o.value==="direct"?R?(ve({type:"approval.resolve",requestId:f,decision:_,answer:L,approved:L,fingerprint:w?.fingerprint||null,binding:w?.binding||null,revision:w?.revision??null}).then(G=>{G===null&&te(w)}),!0):(n.value="Remote Session is not connected",te(w),!1):ge({type:"approval.resolve",requestId:f,decision:_,approved:L,fingerprint:w?.fingerprint||null,binding:w?.binding||null,revision:w?.revision??null})?!0:(n.value="Remote Session is not connected",te(w),!1)}function hr(f,g){return g===!0||g==="once"||g==="acceptOnce"?{kind:"acceptOnce"}:g===!1||g==="decline"?{kind:"decline"}:g==="turn"||g==="acceptForTurn"?f.requestedPermissions?.length?{kind:"acceptForTurn",permissions:f.requestedPermissions}:null:(g==="session"||g==="acceptForSession")&&f.requestedPermissions?.length?{kind:"acceptForSession",permissions:f.requestedPermissions}:null}function gr(f,g){if(!f)return;const w=a.value.find(L=>L.requestId===f)||null;if(!w?.binding)return;Q(f);const _={type:"question.answer",requestId:f,answer:g,binding:w.binding};if(o.value==="direct"){if(!R){n.value="Remote Session is not connected",a.value=[...a.value,w];return}ve(_).then(L=>{L===null&&!a.value.some(G=>G.requestId===f)&&(a.value=[...a.value,w])});return}ge(_)||(n.value="Remote Session is not connected",a.value=[...a.value,w])}function mr(){const f=i.value.filter(w=>l.get(w.requestId)==="pending");for(const w of f)l.set(w.requestId,"interrupting"),S(w.requestId);const g=w=>{for(const _ of f)l.get(_.requestId)==="interrupting"&&(w?(l.delete(_.requestId),K(_.requestId)):te(_));return w};return o.value==="direct"?R?(ve({type:"interrupt"}).then(w=>g(w!==null)),!0):g(!1):g(ge({type:"interrupt"}))}function wr(f,g="web"){if(k=f?{token:f,provider:g}:null,!x)return;const w={type:"push.register"};k?.token&&(w.pushToken=k.token,w.pushProvider=k.provider),ge(w)}function Xt(){if(p=!0,x=!1,H(),O(),u)try{u.close()}catch{}if(u=null,R)try{R.close()}catch{}R=null,T=null,B=null,C=null,Oe("disconnected"),X(),t.value!=="revoked"&&(t.value="disconnected")}return{status:t,events:e,error:n,remoteSessionId:r,transport:o,scopes:s,pendingApprovals:i,pendingQuestions:a,connect:et,sendPrompt:dr,approve:pr,answerQuestion:gr,interrupt:mr,updatePushCredentials:wr,resumeReconnect:Je,disconnect:Xt}}),ds={__name:"RemoteSession",setup(t,{expose:e}){e();const n=qn();Wt(()=>n.resumeReconnect());const{status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:l}=Qt(n),c=se(""),d=se(""),u=se(!1),m=He(()=>["connecting","pairing","connected","reconnecting"].includes(r.value)),h=He(()=>({idle:"未连接",connecting:"连接中",pairing:"配对中",connected:"已连接",reconnecting:"重连中",disconnected:"已断开",revoked:"已被撤销",error:"错误"})[r.value]||r.value),v=He(()=>r.value==="connected"?"green":["connecting","pairing","reconnecting"].includes(r.value)?"blue":["revoked","error"].includes(r.value)?"red":"default"),x=He(()=>[...o.value].reverse());function p(S){return String(S?.type||"").includes("approval")}function y(S){const F=String(S?.type||""),$=E(S);return["permission.request","approval.requested","approval_request"].includes(F)&&$!==""&&a.value.some(K=>K.requestId===$)}function b(S){return S?.content||S?.payload?.content||S?.message||""}function E(S){return S?.requestId||S?.approvalId||S?.id||""}function I(){n.connect(c.value.trim())}function k(S){u.value=!1,S&&(c.value=S,n.connect(S))}function P(S){const F=typeof S=="string"?S:d.value;n.sendPrompt(F),d.value=""}function R(S,F){n.approve(E(S),F)}function T(S,F){n.approve(S.requestId,F)}function B(S){return String(S&&typeof S=="object"?S.label??S.value??"":S??"")}function C(S){return S&&typeof S=="object"&&"value"in S?S.value:B(S)}function M(S,F){let $=F;if($===void 0){const K=S.options.map(B).filter(Boolean),X=window.prompt(`${S.question||"Input required"}${K.length?`
5
+ Options: ${K.join(", ")}`:""}`);if(X===null)return;$=S.multiSelect?X.split(",").map(Q=>Q.trim()).filter(Boolean):X}n.answerQuestion(S.requestId,$)}function V(){n.interrupt()}function H(){n.disconnect()}function O(){s.value=""}const N={store:n,status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:l,pairingLink:c,promptText:d,scannerOpen:u,isActive:m,statusLabel:h,statusColor:v,orderedEvents:x,isApproval:p,isPendingApproval:y,eventBody:b,requestIdOf:E,connect:I,onScanned:k,send:P,respond:R,respondPermission:T,optionLabel:B,optionValue:C,answerQuestion:M,interrupt:V,disconnect:H,clearError:O,computed:He,onMounted:Wt,ref:se,get storeToRefs(){return Qt},get LinkOutlined(){return Ir},get ScanOutlined(){return Sr},QrScannerModal:vr,get useRemoteSessionStore(){return qn}};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}},ps={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},hs={key:0,class:"page-sub"},gs={key:0,style:{"word-break":"break-all"}},ms={key:1,class:"page-sub"},ws={key:2,style:{"margin-top":"8px"},"data-testid":"approval-grants"},ys={key:0};function bs(t,e,n,r,o,s){const i=ne("a-tag"),a=ne("a-space"),l=ne("a-alert"),c=ne("a-textarea"),d=ne("a-button"),u=ne("a-card"),m=ne("a-input-search"),h=ne("a-spin"),v=ne("a-list-item-meta"),x=ne("a-list-item"),p=ne("a-list"),y=ne("a-badge"),b=ne("a-empty");return D(),de("div",null,[Te("div",ps,[e[4]||(e[4]=Te("div",null,[Te("h2",{class:"page-title"},"远程会话"),Te("p",{class:"page-sub"}," 扫码或粘贴桌面端的配对链接,接管一个编码会话(观察 / 提示 / 审批 / 中断)——支持中继 E2EE 链接与局域网直连链接 ")],-1)),q(a,null,{default:A(()=>[r.transport?(D(),re(i,{key:0,color:"purple"},{default:A(()=>[Z(ae(r.transport==="direct"?"直连":"中继"),1)]),_:1})):ie("v-if",!0),q(i,{color:r.statusColor},{default:A(()=>[Z(ae(r.statusLabel),1)]),_:1},8,["color"])]),_:1})]),r.error?(D(),re(l,{key:0,type:"error","show-icon":"",style:{"margin-bottom":"16px"},message:r.error,closable:"",onClose:r.clearError},null,8,["message"])):ie("v-if",!0),r.isActive?(D(),re(u,{key:2,title:"会话控制",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{extra:A(()=>[q(a,null,{default:A(()=>[q(d,{size:"small",onClick:r.interrupt},{default:A(()=>[...e[8]||(e[8]=[Z("中断",-1)])]),_:1}),q(d,{size:"small",danger:"",onClick:r.disconnect},{default:A(()=>[...e[9]||(e[9]=[Z("断开",-1)])]),_:1})]),_:1})]),default:A(()=>[q(a,{direction:"vertical",style:{width:"100%"},size:8},{default:A(()=>[q(m,{value:r.promptText,"onUpdate:value":e[2]||(e[2]=E=>r.promptText=E),placeholder:"发送提示到远程会话…","enter-button":"发送",disabled:r.status!=="connected",onSearch:r.send},null,8,["value","disabled"]),r.status==="reconnecting"?(D(),re(h,{key:0,size:"small"},{tip:A(()=>[...e[10]||(e[10]=[Z("正在重连…",-1)])]),_:1})):ie("v-if",!0)]),_:1})]),_:1})):(D(),re(u,{key:1,title:"连接远程会话",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:A(()=>[q(a,{direction:"vertical",style:{width:"100%"},size:12},{default:A(()=>[q(c,{value:r.pairingLink,"onUpdate:value":e[0]||(e[0]=E=>r.pairingLink=E),rows:3,placeholder:"chainlesschain://remote-session/pair#…(中继)或 chainlesschain://remote-control/pair#…(局域网直连)","allow-clear":""},null,8,["value"]),q(a,null,{default:A(()=>[q(d,{type:"primary",disabled:!r.pairingLink.trim(),onClick:r.connect},{icon:A(()=>[q(r.LinkOutlined)]),default:A(()=>[e[5]||(e[5]=Z(" 连接 ",-1))]),_:1},8,["disabled"]),q(d,{onClick:e[1]||(e[1]=E=>r.scannerOpen=!0)},{icon:A(()=>[q(r.ScanOutlined)]),default:A(()=>[e[6]||(e[6]=Z(" 扫码 ",-1))]),_:1})]),_:1}),e[7]||(e[7]=Te("p",{class:"page-sub",style:{margin:"0"}}," 链接为一次性配对码,敏感载荷仅在片段(#)中,不会发往服务器。 ",-1))]),_:1})]),_:1})),r.pendingQuestions.length?(D(),re(u,{key:3,title:"Agent questions",style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{default:A(()=>[q(p,{size:"small","data-source":r.pendingQuestions,"data-testid":"question-cards"},{renderItem:A(({item:E})=>[q(x,null,{actions:A(()=>[(D(!0),de(Jt,null,en(E.multiSelect?[]:E.options,I=>(D(),re(d,{key:r.optionLabel(I),size:"small",onClick:k=>r.answerQuestion(E,r.optionValue(I))},{default:A(()=>[Z(ae(r.optionLabel(I)),1)]),_:2},1032,["onClick"]))),128)),E.multiSelect||!E.options.length?(D(),re(d,{key:0,type:"primary",size:"small",onClick:I=>r.answerQuestion(E)},{default:A(()=>[...e[11]||(e[11]=[Z(" Answer ",-1)])]),_:1},8,["onClick"])):ie("v-if",!0)]),default:A(()=>[q(v,{description:E.question||"Input required"},null,8,["description"])]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):ie("v-if",!0),r.pendingApprovals.length?(D(),re(u,{key:4,style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{title:A(()=>[e[12]||(e[12]=Z(" 待审批权限请求 ",-1)),q(y,{count:r.pendingApprovals.length,style:{"margin-left":"8px"}},null,8,["count"])]),default:A(()=>[q(p,{size:"small","data-source":r.pendingApprovals,"data-testid":"approval-cards"},{renderItem:A(({item:E})=>[q(x,null,{actions:A(()=>[q(d,{type:"primary",size:"small",onClick:I=>r.respondPermission(E,"once")},{default:A(()=>[...e[14]||(e[14]=[Z("Allow once",-1)])]),_:1},8,["onClick"]),E.requestedPermissions?.length?(D(),re(d,{key:0,size:"small",onClick:I=>r.respondPermission(E,"turn")},{default:A(()=>[...e[15]||(e[15]=[Z("Allow for turn",-1)])]),_:1},8,["onClick"])):ie("v-if",!0),E.requestedPermissions?.length?(D(),re(d,{key:1,size:"small",onClick:I=>r.respondPermission(E,"session")},{default:A(()=>[...e[16]||(e[16]=[Z("Allow for session",-1)])]),_:1},8,["onClick"])):ie("v-if",!0),q(d,{size:"small",danger:"",onClick:I=>r.respondPermission(E,"decline")},{default:A(()=>[...e[17]||(e[17]=[Z("Decline",-1)])]),_:1},8,["onClick"])]),default:A(()=>[q(v,null,{title:A(()=>[q(a,null,{default:A(()=>[q(i,{color:"orange"},{default:A(()=>[Z(ae(E.tool||"tool"),1)]),_:2},1024),E.action?(D(),de("span",hs,ae(E.action),1)):ie("v-if",!0)]),_:2},1024)]),description:A(()=>[E.detail?(D(),de("code",gs,ae(E.detail),1)):(D(),de("span",ms,"(无详情)")),E.requestedPermissions?.length?(D(),de("div",ws,[e[13]||(e[13]=Te("div",{class:"page-sub"},"Review requested grants:",-1)),(D(!0),de(Jt,null,en(E.requestedPermissions,I=>(D(),de("code",{key:`${I.capability}:${I.scope}`,style:{display:"block","word-break":"break-all"}},[Z(ae(I.capability)+" — "+ae(I.scope)+" ",1),I.expiresAt?(D(),de("span",ys," (until "+ae(I.expiresAt)+")",1)):ie("v-if",!0)]))),128))])):ie("v-if",!0)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):ie("v-if",!0),q(u,{title:"会话事件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:A(()=>[r.events.length?(D(),re(p,{key:1,size:"small","data-source":r.orderedEvents},{renderItem:A(({item:E})=>[q(x,null,Er({default:A(()=>[q(v,{description:r.eventBody(E)},{title:A(()=>[q(i,{color:r.isApproval(E)?"orange":"blue"},{default:A(()=>[Z(ae(E.type||"event"),1)]),_:2},1032,["color"])]),_:2},1032,["description"])]),_:2},[r.isPendingApproval(E)?{name:"actions",fn:A(()=>[q(d,{type:"link",size:"small",onClick:I=>r.respond(E,!0)},{default:A(()=>[...e[18]||(e[18]=[Z("批准",-1)])]),_:1},8,["onClick"]),q(d,{type:"link",size:"small",danger:"",onClick:I=>r.respond(E,!1)},{default:A(()=>[...e[19]||(e[19]=[Z("拒绝",-1)])]),_:1},8,["onClick"])]),key:"0"}:void 0]),1024)]),_:1},8,["data-source"])):(D(),re(b,{key:0,description:"尚无事件"}))]),_:1}),q(r.QrScannerModal,{open:r.scannerOpen,onScanned:r.onScanned,onCancel:e[3]||(e[3]=E=>r.scannerOpen=!1)},null,8,["open"])])}const _s=xr(ds,[["render",bs],["__file","/tmp/cc-web-panel-BPNCIX/repo/packages/web-panel/src/views/RemoteSession.vue"]]);export{_s as default};
@@ -1 +1 @@
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 K,_ as Be,b as fe,u as ye,E as be,d as g}from"./index-B_egGFcR.js";import ve from"./index-coOi37of.js";import{aV as Ve,m as Ye,L as Je,r as We,au as Ke,al as qe,a0 as Ze,an as He,at as Ge,R as Qe}from"./icons-DG5UD-6K.js";import"./KeyCode-D63Tfrq7.js";import"./omit-DHJeh6tH.js";import"./pickAttrs-XJEQIp7e.js";import"./initDefaultProps-Id2dFdjh.js";import"./motion-DRxtwxng.js";import"./raf-Deuc0E8-.js";import"./index-hyeBuocp.js";import"./index-uk59xr0W.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-DenB_kSS.js";import"./compact-item-v_gxtF5-.js";import"./createContext-BOwFpJqA.js";import"./Compact-CqnkGGjK.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker--UgmTsGY.js";import"./zoom-ob-0px2z.js";import"./ActionButton-B_f7go3E.js";import"./vnode-B2RGEQG4.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=K(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=K(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=K(l);return Array.isArray(t)?t.map(Ae).filter(Boolean):[]}function xe(l){const t=K(l);return!t||typeof t!="object"||Array.isArray(t)?null:Ae(t,0)}function ke(l){const t=K(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=K(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 W(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:W,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 Ke},get ExperimentOutlined(){return We},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:W})=>[a.key==="rank"?(u(),p("span",{key:0,class:Ue(["rank-pill",e.rankClass(W)])},s(W+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:W=>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:W=>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-2xi3QL/repo/packages/web-panel/src/views/Reputation.vue"]]);export{ro as default};
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 K,_ as Be,b as fe,u as ye,E as be,d as g}from"./index-KCmGGWAT.js";import ve from"./index-DOrjt98B.js";import{aV as Ve,m as Ye,L as Je,r as We,au as Ke,al as qe,a0 as Ze,an as He,at as Ge,R as Qe}from"./icons-DG5UD-6K.js";import"./KeyCode-D63Tfrq7.js";import"./omit-DsAzx9jL.js";import"./pickAttrs-CIyAoQIB.js";import"./initDefaultProps-DbZ3dIR7.js";import"./motion-ATVJwqzT.js";import"./raf-Deuc0E8-.js";import"./index-BicVNOi5.js";import"./index-k5exH2qO.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-BuusI785.js";import"./compact-item-Bm5w8Q--.js";import"./createContext-VzW0CVyb.js";import"./Compact-DFoxxofh.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-BT1IFFpw.js";import"./zoom-8yzckhp-.js";import"./ActionButton-B_PARoec.js";import"./vnode-BLOmOgkK.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=K(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=K(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=K(l);return Array.isArray(t)?t.map(Ae).filter(Boolean):[]}function xe(l){const t=K(l);return!t||typeof t!="object"||Array.isArray(t)?null:Ae(t,0)}function ke(l){const t=K(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=K(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 W(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:W,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 Ke},get ExperimentOutlined(){return We},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:W})=>[a.key==="rank"?(u(),p("span",{key:0,class:Ue(["rank-pill",e.rankClass(W)])},s(W+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:W=>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:W=>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-BPNCIX/repo/packages/web-panel/src/views/Reputation.vue"]]);export{ro as default};