chainlesschain 0.162.181 → 0.162.183

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/package.json +2 -1
  2. package/scripts/build-windows-sandbox-helper.ps1 +163 -0
  3. package/src/assets/web-panel/assets/{AIOps-cq0dwbnf.js → AIOps-BapS7lz4.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-CvcgGl3w.js → ActionButton-CXYdXEUI.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-hM2-jFqg.js → Analytics-CKR5Lexn.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-B9_Gsd_g.js → AppLayout-DATVUOXB.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-B7bu52Og.js → Artifacts-vb_0ZlV1.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DThfDgqB.js → Audit-BI1l9GWt.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-DjlFiD4v.js → BackgroundAgents-BFXbaUEf.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CK9xJKnG.js → Backup-DEYBJJ6H.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DEiSU8K8.js → BaseInput-COdzeO0M.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-CpT96czj.js → Chat-oSN6sfM5.js} +6 -6
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-CI_jT0ru.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-C1GfDnO0.js → Checkbox-BezEa4tm.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-3DAKgiLx.js → Codegen-CNEL0Ife.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-74cOwZU1.js → Col-Bf2Y2Bn1.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-tn9Kkz9j.js → Community-BfUlu4Hc.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BcoXH7m4.js → Compact-BN4xWP9e.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-DIPGUBgi.js → Compliance-Bt6BKmEP.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-doD5_91c.js → Cowork-DKLp8YxO.js} +2 -2
  21. package/src/assets/web-panel/assets/{Cron-C-IDvubz.js → Cron-o7Hhw6ky.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CdcCoBdj.js → Crosschain-DaNXWJIw.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-DdH5aMMA.js → DID-B-Qa2mha.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-DHLA4mm0.js → Dashboard-CMX0Qnxw.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-dEeCt7Md.js → Dropdown-BLuLyRu_.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-BMaecFv9.js → EmailListRenderer-CFBAeMij.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DUaUukTN.js → FamilyGuardDashboard-DWzXQ67V.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-CMBE0_rp.js → Federation-DB1QSLgr.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-PG-JDbXq.js → FormItemContext-C-OKCToP.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-Bcb0p88m.js → GenericCardRenderer-DMJFtFZf.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-Bgv15myB.js → Git-DsGSujOV.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-DB8YTArI.js → Governance-B0iS9NEW.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-BQMwCWaS.js → Inference-CH004H7c.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-B1_ZziiB.js → KnowledgeGraph-Q9MTQ83c.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-DovEEnt_.js → Logs-B_fyjZK9.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-D201OL4T.js → MarkdownRenderer-C0o4FtpD.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-BlCXSpyB.js → Marketplace-BIStF9d1.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-CsCR09Wj.js → McpTools-pGfal768.js} +5 -5
  39. package/src/assets/web-panel/assets/{Memory-CBVRLKno.js → Memory-xbNqpIqB.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-C9OIafgA.js → MobileBridge-B5EQGrIK.js} +1 -1
  41. package/src/assets/web-panel/assets/MobileProjects-VTc3gT1y.js +1 -0
  42. package/src/assets/web-panel/assets/{Mtc-vE-HdvLj.js → Mtc-a_rmfxJH.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-CPLaekCd.js → MtcAudit-BmKuofUr.js} +4 -4
  44. package/src/assets/web-panel/assets/{Multisig-C_UP9C2o.js → Multisig-BQbJ-CAN.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-2nODJcU1.js → NLProgramming-JtPJKX25.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-BhE-SJGu.js → Notes-ZFKznTSG.js} +3 -3
  47. package/src/assets/web-panel/assets/{NotificationSettings-D21q7BNU.js → NotificationSettings-B6aHRBBR.js} +1 -1
  48. package/src/assets/web-panel/assets/{OrderTableRenderer-0b62GYOD.js → OrderTableRenderer-DdcsOqEz.js} +1 -1
  49. package/src/assets/web-panel/assets/{Organization-CEqmw_sb.js → Organization-BFDTAUgS.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-MW-gMDO_.js → Overflow-0FoTfbWH.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-CY0hjI_G.js → P2P-CWd90etw.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser-BbWh7Man.js → PdhVaultBrowser-DtCGC-W-.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-ChqEA_4Q.js → Permissions-CvQ7nr7T.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-B3YrbYfD.js → PersonalDataHub-rdNPcR-Z.js} +5 -5
  55. package/src/assets/web-panel/assets/{Pipeline-B8WBhhlW.js → Pipeline-CmrfiNOs.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-Cmb0PXNx.js → Privacy-D7ep1h_t.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-hF6zW3Nz.js → ProjectInit-C0xKINHS.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-BFSVfpW0.js → ProjectSettings-AOmZFp-F.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-BWHSkXZP.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-B8yux8Dx.js → Providers-Cb7JCTPL.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-N76cQluO.js → QrScannerModal-BDMehcXC.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-ClvZ0KYR.js → QuickAsk-BF6_1nvx.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-B-GfgBpT.js → Recommend-BHfT-A28.js} +1 -1
  64. package/src/assets/web-panel/assets/RemoteSession-B6EEf8hh.js +5 -0
  65. package/src/assets/web-panel/assets/{Reputation-DJIZzQeG.js → Reputation-CsWHLEcj.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-COzxu_bb.js → Row-D6srnWhm.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CoYsJQuE.js → RssFeed-Xhr-KyVd.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-DC77Mq9S.js → Search-vIbIJvwL.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-Loy2EdMO.js → Security-Bzi5Aiko.js} +4 -4
  70. package/src/assets/web-panel/assets/{Services-GUD07Eu0.js → Services-BHtVX52P.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DWzkptYU.js → Skeleton-C0R8B2jf.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-CEDn1r-Z.js → Skills-DtT6rWOX.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-ub_k4pXh.js → Sla-0B37mxVU.js} +1 -1
  74. package/src/assets/web-panel/assets/{SpeechSettings-D7HLX9CA.js → SpeechSettings-0V2jE1Bs.js} +1 -1
  75. package/src/assets/web-panel/assets/{SyncSettings-DbwOvl6m.js → SyncSettings-CYedRzaj.js} +2 -2
  76. package/src/assets/web-panel/assets/Tasks-D-R1x8vm.js +1 -0
  77. package/src/assets/web-panel/assets/{Templates-BNVeIhud.js → Templates-BKoHztGT.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-PS9AzhXU.js → Tenant--17nwVNZ.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-Cgb4eLB_.js → Terminal-Dnkos7vW.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-CrmXMOkg.js → TimelineRenderer-C5jx4AE3.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-DD-VDHw1.js → Tokens-DYJKYa9t.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-BsoN_n-n.js → Trigger-DChpWiQ9.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-n8LmN4ZV.js → Trust-DfWG52EA.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-C9_7MImA.js → UkeySign-CMugYcyA.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-DyBteNgn.js → VideoEditing-BOSmrHAd.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-BS5ixeXI.js → Wallet-D5g3k3Sa.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-spc4UImU.js → WebAuthn-D-7u4Mkc.js} +3 -3
  88. package/src/assets/web-panel/assets/{WorkflowEditor-D7iVvaBO.js → WorkflowEditor-CFzZMSUJ.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-6CmBkHrL.js → chat-VbR6l6mc.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-BGoCLkxI.js → colors-BSZn8EDS.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-fYZBetMO.js → compact-item-y74obMEq.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-BeM-1UVj.js → createContext-C326bjex.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-D3Bho_6u.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-CE7ZuEnV.js → hasIn-D_INJQT_.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-ukg99D1V.js → index-4PIeTM--.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-B2U-ObMq.js → index-4eyH-eC2.js} +1 -1
  97. package/src/assets/web-panel/assets/index-5iAFwYx1.js +1 -0
  98. package/src/assets/web-panel/assets/{index-CRLjEP1H.js → index-9PIVuXqo.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BfPL-m46.js → index-B7SrC-On.js} +1 -1
  100. package/src/assets/web-panel/assets/{index--lap6cf7.js → index-BJi3UqBt.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-B3CDgvNW.js → index-BY8-nCgs.js} +1 -1
  102. package/src/assets/web-panel/assets/index-BfnB7LPx.js +1 -0
  103. package/src/assets/web-panel/assets/{index-De0quFDw.js → index-Bfw2hf2s.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BunaQCa0.js → index-BjcWKg1S.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BsMfoaeo.js → index-BnSfnSMP.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-C0v6YKKO.js → index-Bnua8IX3.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-C4SJVjs4.js → index-C-ZCaUJc.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BNZDILcO.js → index-C2NyllnW.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-YjcumOZ4.js → index-C327pLbw.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CRnUE8Cb.js → index-CMHqs3Jb.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CIpVrf5P.js → index-CfLJ42kv.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BEVm0lCS.js → index-Cr3uuz0C.js} +3 -3
  113. package/src/assets/web-panel/assets/{index-Dw1PyYPm.js → index-CsovTpx9.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-lJBjB1QX.js → index-CzE53HiB.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CpIGIB85.js → index-DBkzrpiL.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DoXk5KJ8.js → index-DNMxIsDg.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DsvfrESp.js → index-DUU2606o.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Cip8emOQ.js → index-DdyjrCAu.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-ATcSr_2O.js → index-DkH1JvEt.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-BV551878.js → index-Dlxh9D8D.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BU_2qiDk.js → index-DuIkfnTF.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-zb7rVOhV.js → index-DwHSZLXg.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-MtOuq2i6.js → index-E_v1ZCTP.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B8BsdNV_.js → index-FQBsuExX.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-WUrJ6S1j.js → index-GA80ir_u.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-RMZ8a7Yt.js → index-IZAWt0H8.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-D1r9tT3J.js → index-Iw0FfqUz.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BowH1eLQ.js → index-KF9Zmqln.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Puq6Luf1.js → index-abmn_8Yz.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-QIpnpZgz.js → index-gINyI1rh.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-C9Y3k0HI.js → index-jYaogFE8.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-B4wiTEOM.js → index-nSn2-C4N.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DT3zPSVX.js → index-qMA4GYdQ.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-CYHMs1ag.js → initDefaultProps-DI0Zaf8-.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-DDB2Ffk5.js → motion-BZDKSy3Z.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-Bg3cD-dX.js → move-DsIW01Vp.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-B5nedjTS.js → mtc-parser-CohkDhsf.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-BHyuUILu.js → omit-DpiN5rzg.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-C9YQnEN9.js → pickAttrs-qbuqni3y.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-DBUFYUe7.js → placementArrow-mBky6714.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-nBs2Obnk.js → responsiveObserve-Bas3eQ2K.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-DkCEaXNU.js → slide-CBx_SKoK.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-aqE1Wi6U.js → statusUtils-BlYguJSV.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-CN5bhfHB.js → styleChecker-BCYQmRGv.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-B_oX_kvJ.js → useFlexGapSupport-Dp5dybLM.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-rCuXHeme.js → useFs-DHAMBgA2.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DZR9Abyd.js → usePersonalDataHub-W6jsSw76.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-ConCYQlX.js → vnode-BkI6aayc.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-CUdDxG5M.js → zoom-C_IMGueq.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/commands/agenda.js +115 -3
  152. package/src/commands/agent.js +15 -0
  153. package/src/commands/background-session.js +49 -0
  154. package/src/commands/plugin.js +235 -23
  155. package/src/commands/session.js +13 -0
  156. package/src/data/changelog.json +26 -0
  157. package/src/gateways/terminal/PtyManager.js +45 -4
  158. package/src/gateways/ws/ws-server.js +10 -1
  159. package/src/harness/background-task-manager.js +70 -2
  160. package/src/harness/jsonl-session-store.js +6 -4
  161. package/src/harness/worktree-isolator.js +14 -3
  162. package/src/lib/agent-core.js +1 -0
  163. package/src/lib/agent-schedule-store.js +45 -22
  164. package/src/lib/agent-team/team-runner.js +19 -1
  165. package/src/lib/background-agent-supervisor.js +49 -0
  166. package/src/lib/hook-runner.js +6 -2
  167. package/src/lib/packer/pkg-config-generator.js +3 -1
  168. package/src/lib/plugin-runtime/bin.js +1148 -70
  169. package/src/lib/plugin-runtime/install.js +226 -7
  170. package/src/lib/plugin-runtime/manifest.js +68 -12
  171. package/src/lib/plugin-runtime/scopes.js +33 -12
  172. package/src/lib/plugin-usage-attribution.js +44 -0
  173. package/src/lib/process-execution-broker/index.js +626 -48
  174. package/src/lib/process-execution-broker/platform-sandbox.js +4971 -266
  175. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  176. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  177. package/src/lib/process-execution-broker/windows-sandbox.cs +3856 -0
  178. package/src/lib/repl-bang-memorize.js +67 -10
  179. package/src/lib/session-usage.js +77 -0
  180. package/src/lib/slash-commands.js +27 -4
  181. package/src/repl/agent-repl.js +10 -9
  182. package/src/runtime/agent-core.js +376 -52
  183. package/src/runtime/agent-runtime.js +13 -1
  184. package/src/runtime/headless-runner.js +13 -4
  185. package/src/runtime/headless-stream.js +20 -1
  186. package/src/runtime/mcp-config.js +15 -5
  187. package/src/assets/web-panel/assets/ChatBubbleRenderer-BKPPNmZI.js +0 -1
  188. package/src/assets/web-panel/assets/MobileProjects-D_zoJ8Xs.js +0 -1
  189. package/src/assets/web-panel/assets/Projects-DAWkVFkc.js +0 -1
  190. package/src/assets/web-panel/assets/RemoteSession-mlglCdQi.js +0 -5
  191. package/src/assets/web-panel/assets/Tasks-CBQzoAu5.js +0 -1
  192. package/src/assets/web-panel/assets/devWarning-BzPwHnw8.js +0 -1
  193. package/src/assets/web-panel/assets/index-DacrAdc-.js +0 -1
  194. package/src/assets/web-panel/assets/index-EHzNJozo.js +0 -1
  195. package/src/lib/process-execution-broker/windows-sandbox.ps1 +0 -999
@@ -1 +1 @@
1
- import{I as _,J as m,U as v,R as l,c as p,K as u,S as w,V as k,r as h,P as i,a1 as P,a2 as Q,Q as b}from"./vendor-Bn1JzzAn.js";import{u as B,_ as D}from"./index-BEVm0lCS.js";import{b as E,f as K,S as N,am as T}from"./icons-DG5UD-6K.js";function U(){const n=[];let a=null,d=!1,e=null;return{push(o){if(n.push(o),a){const t=a;a=null,t()}},finish(o){if(d=!0,e=o||null,a){const t=a;a=null,t()}},async*iterate(){for(;;){for(;n.length>0;)yield n.shift();if(d){if(e)throw e;return}await new Promise(o=>{a=o})}}}}function V(){const n=B();function a(e){if(!e||!Array.isArray(e.messages))throw new Error("messages array is required");const o=U(),t=new AbortController;e.signal&&(e.signal.aborted?t.abort(e.signal.reason):e.signal.addEventListener("abort",()=>t.abort(e.signal.reason),{once:!0}));const s=n.sendStream({type:"llm.chat",messages:e.messages,options:e.options||{}},{onChunk:r=>o.push(r),idleMs:e.idleMs??6e4,signal:t.signal}).then(r=>(o.finish(null),r),r=>{throw o.finish(r),r});function c(){t.signal.aborted||t.abort(new Error("aborted"))}return{stream:o.iterate(),result:s,cancel:c}}async function d(e){const o=typeof e.onDelta=="function"?e.onDelta:()=>{},{stream:t,result:s}=a(e);try{for await(const c of t)o(c)}catch{}return s}return{chat:a,chatTo:d}}const L={__name:"QuickAsk",setup(n,{expose:a}){a();const d=V(),e=h(""),o=h(""),t=h(""),s=h(!1),c=h(""),r=h(null);let f=null;async function C(){if(!(s.value||!e.value.trim())){s.value=!0,t.value="",c.value="",r.value=null;try{const y=[{role:"user",content:e.value}],M={},z=o.value.trim();z&&(M.model=z);const x=d.chat({messages:y,options:M});f=x;try{for await(const S of x.stream)S?.content?t.value=S.content:S?.delta&&(t.value+=S.delta)}catch{}const A=await x.result;r.value={model:A?.model||null,tokens:A?.tokens??null},!t.value&&A?.message?.content&&(t.value=A.message.content)}catch(y){c.value=y?.message||String(y)}finally{s.value=!1,f=null}}}function q(){f?.cancel&&f.cancel()}function g(){t.value="",c.value="",r.value=null}const O={llm:d,prompt:e,model:o,answer:t,running:s,error:c,finalMeta:r,get activeChat(){return f},set activeChat(y){f=y},run:C,cancel:q,reset:g,ref:h,get SendOutlined(){return T},get SyncOutlined(){return N},get CheckCircleOutlined(){return K},get CloseOutlined(){return E},get useLlmChat(){return V}};return Object.defineProperty(O,"__isScriptSetup",{enumerable:!1,value:!0}),O}},j={style:{"margin-bottom":"24px"}},F={class:"page-title"},I={class:"page-sub"},J={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-top":"12px"}},R={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},W={key:0},Y={key:1},G={key:2},H={key:0,style:{color:"#1677ff","font-size":"11px"}},X={key:1,style:{color:"#52c41a","font-size":"11px"}},Z={key:0,style:{margin:"0","white-space":"pre-wrap","font-family":"var(--font-body, system-ui)","font-size":"13px"}},$={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px","margin-top":"8px"}},ee={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}};function ne(n,a,d,e,o,t){const s=_("a-textarea"),c=_("a-input"),r=_("a-button"),f=_("a-space"),C=_("a-card"),q=_("a-empty");return i(),m("div",null,[v("div",j,[v("h2",F,l(n.$t("quickAsk.title")),1),v("p",I,l(n.$t("quickAsk.subtitle")),1)]),p(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:u(()=>[p(s,{value:e.prompt,"onUpdate:value":a[0]||(a[0]=g=>e.prompt=g),rows:4,placeholder:n.$t("quickAsk.promptPlaceholder"),disabled:e.running,onKeydown:[P(Q(e.run,["ctrl","prevent"]),["enter"]),P(Q(e.run,["meta","prevent"]),["enter"])]},null,8,["value","placeholder","disabled","onKeydown"]),v("div",J,[v("div",R,[p(c,{value:e.model,"onUpdate:value":a[1]||(a[1]=g=>e.model=g),placeholder:n.$t("quickAsk.modelPlaceholder"),size:"small",style:{width:"200px"},disabled:e.running,"allow-clear":""},null,8,["value","placeholder","disabled"]),e.answer?(i(),m("span",W,l(e.answer.length)+" "+l(n.$t("quickAsk.charsSuffix")),1)):k("v-if",!0),e.finalMeta?(i(),m("span",Y,"· "+l(e.finalMeta.tokens??0)+" "+l(n.$t("quickAsk.tokensSuffix")),1)):k("v-if",!0),e.finalMeta?.model?(i(),m("span",G,"· "+l(e.finalMeta.model),1)):k("v-if",!0)]),p(f,null,{default:u(()=>[e.answer||e.error?(i(),w(r,{key:0,disabled:e.running,onClick:e.reset},{default:u(()=>[b(l(n.$t("quickAsk.clear")),1)]),_:1},8,["disabled"])):k("v-if",!0),e.running?(i(),w(r,{key:1,danger:"",onClick:e.cancel},{icon:u(()=>[p(e.CloseOutlined)]),default:u(()=>[b(" "+l(n.$t("quickAsk.cancel")),1)]),_:1})):(i(),w(r,{key:2,type:"primary",disabled:!e.prompt.trim(),onClick:e.run},{icon:u(()=>[p(e.SendOutlined)]),default:u(()=>[b(" "+l(n.$t("quickAsk.send")),1)]),_:1},8,["disabled"]))]),_:1})])]),_:1}),e.answer||e.running||e.error?(i(),w(C,{key:0,title:n.$t("quickAsk.answerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:u(()=>[e.running?(i(),m("span",H,[p(e.SyncOutlined,{spin:!0}),b(" "+l(n.$t("quickAsk.streaming")),1)])):e.finalMeta?(i(),m("span",X,[p(e.CheckCircleOutlined),b(" "+l(n.$t("quickAsk.done")),1)])):k("v-if",!0)]),default:u(()=>[e.answer?(i(),m("pre",Z,l(e.answer),1)):e.running?(i(),w(q,{key:1,description:n.$t("quickAsk.waitingFirstToken")},null,8,["description"])):k("v-if",!0),e.error?(i(),m("div",$,[v("pre",ee,l(e.error),1)])):k("v-if",!0)]),_:1},8,["title"])):k("v-if",!0)])}const re=D(L,[["render",ne],["__file","/tmp/cc-web-panel-8U3FtY/repo/packages/web-panel/src/views/QuickAsk.vue"]]);export{re as default};
1
+ import{I as _,J as m,U as v,R as l,c as p,K as u,S as w,V as k,r as h,P as i,a1 as P,a2 as N,Q as b}from"./vendor-Bn1JzzAn.js";import{u as V,_ as B}from"./index-Cr3uuz0C.js";import{b as D,f as E,S as K,am as T}from"./icons-DG5UD-6K.js";function L(){const n=[];let a=null,d=!1,e=null;return{push(o){if(n.push(o),a){const t=a;a=null,t()}},finish(o){if(d=!0,e=o||null,a){const t=a;a=null,t()}},async*iterate(){for(;;){for(;n.length>0;)yield n.shift();if(d){if(e)throw e;return}await new Promise(o=>{a=o})}}}}function Q(){const n=V();function a(e){if(!e||!Array.isArray(e.messages))throw new Error("messages array is required");const o=L(),t=new AbortController;e.signal&&(e.signal.aborted?t.abort(e.signal.reason):e.signal.addEventListener("abort",()=>t.abort(e.signal.reason),{once:!0}));const s=n.sendStream({type:"llm.chat",messages:e.messages,options:e.options||{}},{onChunk:r=>o.push(r),idleMs:e.idleMs??6e4,signal:t.signal}).then(r=>(o.finish(null),r),r=>{throw o.finish(r),r});function c(){t.signal.aborted||t.abort(new Error("aborted"))}return{stream:o.iterate(),result:s,cancel:c}}async function d(e){const o=typeof e.onDelta=="function"?e.onDelta:()=>{},{stream:t,result:s}=a(e);try{for await(const c of t)o(c)}catch{}return s}return{chat:a,chatTo:d}}const U={__name:"QuickAsk",setup(n,{expose:a}){a();const d=Q(),e=h(""),o=h(""),t=h(""),s=h(!1),c=h(""),r=h(null);let f=null;async function C(){if(!(s.value||!e.value.trim())){s.value=!0,t.value="",c.value="",r.value=null;try{const y=[{role:"user",content:e.value}],M={},z=o.value.trim();z&&(M.model=z);const x=d.chat({messages:y,options:M});f=x;try{for await(const S of x.stream)S?.content?t.value=S.content:S?.delta&&(t.value+=S.delta)}catch{}const A=await x.result;r.value={model:A?.model||null,tokens:A?.tokens??null},!t.value&&A?.message?.content&&(t.value=A.message.content)}catch(y){c.value=y?.message||String(y)}finally{s.value=!1,f=null}}}function q(){f?.cancel&&f.cancel()}function g(){t.value="",c.value="",r.value=null}const O={llm:d,prompt:e,model:o,answer:t,running:s,error:c,finalMeta:r,get activeChat(){return f},set activeChat(y){f=y},run:C,cancel:q,reset:g,ref:h,get SendOutlined(){return T},get SyncOutlined(){return K},get CheckCircleOutlined(){return E},get CloseOutlined(){return D},get useLlmChat(){return Q}};return Object.defineProperty(O,"__isScriptSetup",{enumerable:!1,value:!0}),O}},j={style:{"margin-bottom":"24px"}},F={class:"page-title"},I={class:"page-sub"},J={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-top":"12px"}},R={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},W={key:0},G={key:1},H={key:2},X={key:0,style:{color:"#1677ff","font-size":"11px"}},Y={key:1,style:{color:"#52c41a","font-size":"11px"}},Z={key:0,style:{margin:"0","white-space":"pre-wrap","font-family":"var(--font-body, system-ui)","font-size":"13px"}},$={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px","margin-top":"8px"}},ee={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}};function ne(n,a,d,e,o,t){const s=_("a-textarea"),c=_("a-input"),r=_("a-button"),f=_("a-space"),C=_("a-card"),q=_("a-empty");return i(),m("div",null,[v("div",j,[v("h2",F,l(n.$t("quickAsk.title")),1),v("p",I,l(n.$t("quickAsk.subtitle")),1)]),p(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:u(()=>[p(s,{value:e.prompt,"onUpdate:value":a[0]||(a[0]=g=>e.prompt=g),rows:4,placeholder:n.$t("quickAsk.promptPlaceholder"),disabled:e.running,onKeydown:[P(N(e.run,["ctrl","prevent"]),["enter"]),P(N(e.run,["meta","prevent"]),["enter"])]},null,8,["value","placeholder","disabled","onKeydown"]),v("div",J,[v("div",R,[p(c,{value:e.model,"onUpdate:value":a[1]||(a[1]=g=>e.model=g),placeholder:n.$t("quickAsk.modelPlaceholder"),size:"small",style:{width:"200px"},disabled:e.running,"allow-clear":""},null,8,["value","placeholder","disabled"]),e.answer?(i(),m("span",W,l(e.answer.length)+" "+l(n.$t("quickAsk.charsSuffix")),1)):k("v-if",!0),e.finalMeta?(i(),m("span",G,"· "+l(e.finalMeta.tokens??0)+" "+l(n.$t("quickAsk.tokensSuffix")),1)):k("v-if",!0),e.finalMeta?.model?(i(),m("span",H,"· "+l(e.finalMeta.model),1)):k("v-if",!0)]),p(f,null,{default:u(()=>[e.answer||e.error?(i(),w(r,{key:0,disabled:e.running,onClick:e.reset},{default:u(()=>[b(l(n.$t("quickAsk.clear")),1)]),_:1},8,["disabled"])):k("v-if",!0),e.running?(i(),w(r,{key:1,danger:"",onClick:e.cancel},{icon:u(()=>[p(e.CloseOutlined)]),default:u(()=>[b(" "+l(n.$t("quickAsk.cancel")),1)]),_:1})):(i(),w(r,{key:2,type:"primary",disabled:!e.prompt.trim(),onClick:e.run},{icon:u(()=>[p(e.SendOutlined)]),default:u(()=>[b(" "+l(n.$t("quickAsk.send")),1)]),_:1},8,["disabled"]))]),_:1})])]),_:1}),e.answer||e.running||e.error?(i(),w(C,{key:0,title:n.$t("quickAsk.answerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:u(()=>[e.running?(i(),m("span",X,[p(e.SyncOutlined,{spin:!0}),b(" "+l(n.$t("quickAsk.streaming")),1)])):e.finalMeta?(i(),m("span",Y,[p(e.CheckCircleOutlined),b(" "+l(n.$t("quickAsk.done")),1)])):k("v-if",!0)]),default:u(()=>[e.answer?(i(),m("pre",Z,l(e.answer),1)):e.running?(i(),w(q,{key:1,description:n.$t("quickAsk.waitingFirstToken")},null,8,["description"])):k("v-if",!0),e.error?(i(),m("div",$,[v("pre",ee,l(e.error),1)])):k("v-if",!0)]),_:1},8,["title"])):k("v-if",!0)])}const re=B(U,[["render",ne],["__file","/tmp/cc-web-panel-PsNCmy/repo/packages/web-panel/src/views/QuickAsk.vue"]]);export{re as default};
@@ -1 +1 @@
1
- import{I as y,J as _,U as b,R as i,c as n,K as r,V as u,o as ce,a as de,b as K,r as h,P as d,Q as p,S as k,F as A,Z as Q,$ as Pe}from"./vendor-Bn1JzzAn.js";import{t as W,_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-BEVm0lCS.js";import{p as Ue,aW as ze,aB as Re,aU as Ee,aX as Me,l as je,al as Ne,aQ as Je,R as De}from"./icons-DG5UD-6K.js";const Le=Object.freeze(["note","post","article","document"]),Be=Object.freeze(["pending","viewed","dismissed"]);function T(l,a=0){return typeof l=="number"&&Number.isFinite(l)?l:a}function pe(l){if(!l||typeof l!="object"||Array.isArray(l))return{};const a={};for(const[t,e]of Object.entries(l))typeof e=="number"&&Number.isFinite(e)&&(a[t]=e);return a}function We(l,a=0){if(!l||typeof l!="object")return null;const t=l.user_id??l.userId??"";if(!t)return null;const e=l.topics&&typeof l.topics=="object"&&!Array.isArray(l.topics)?pe(l.topics):{},z=l.interaction_weights??l.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(l.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:T(l.decay_factor??l.decayFactor,.9),lastUpdated:l.last_updated??l.lastUpdated??null,updateCount:T(l.update_count??l.updateCount,0),_idx:a}}function ye(l){const a=W(l);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function Ye(l,a=0){if(!l||typeof l!="object")return null;const t=l.id||"";return t?{key:t,id:t,userId:l.user_id??l.userId??"",contentId:l.content_id??l.contentId??"",contentType:String(l.content_type??l.contentType??"note").toLowerCase(),title:String(l.title||""),score:T(l.score,0),reason:String(l.reason||""),source:String(l.source||"heuristic"),status:String(l.status||"pending").toLowerCase(),feedback:l.feedback??null,createdAt:l.created_at??l.createdAt??null,viewedAt:l.viewed_at??l.viewedAt??null,_idx:a}:null}function ge(l){const a=W(l);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(l){const a={...Ge},t=W(l);return!t||typeof t!="object"||Array.isArray(t)||(a.total=T(t.total,0),a.pending=T(t.pending,0),a.viewed=T(t.viewed,0),a.dismissed=T(t.dismissed,0),a.feedbackCount=T(t.feedbackCount,0),a.feedbackRate=T(t.feedbackRate,0),a.avgScore=T(t.avgScore,0)),a}function ve(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:T(t.weight,0)})):[]}function ke(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string"&&typeof t.action=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,action:t.action,amount:T(t.amount,0)})):[]}function E(l){const a=W(l);return!a||typeof a!="object"||Array.isArray(a)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(a.updated||a.deleted||a.marked||a.dismissed||a.recorded||a.applied||a.profileId),reason:a.reason?String(a.reason):"",profileId:a.profileId?String(a.profileId):null,topicCount:typeof a.topicCount=="number"?a.topicCount:null}}function Ve(l){if(l==null||l==="")return"—";const a=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(a.getTime())?String(l):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"Recommend",setup(l,{expose:a}){a();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),j=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),I=h([]),F=h([]),v=h(null),U=h("recs"),N=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),q=h(null),H=K(()=>j.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),X=K(()=>[{title:t("recommend.recColumns.title"),key:"title"},{title:t("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:t("recommend.recColumns.score"),key:"score",width:"180px"},{title:t("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:t("recommend.recColumns.status"),key:"status",width:"100px"},{title:t("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:t("recommend.recColumns.action"),key:"action",width:"210px"}]),G=K(()=>[{title:t("recommend.profileColumns.userId"),key:"userId"},{title:t("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:t("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:t("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:t("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:t("recommend.profileColumns.action"),key:"action",width:"200px"}]),ee=K(()=>{let o=S.value;return N.value&&(o=o.filter(c=>c.status===N.value)),P.value&&(o=o.filter(c=>c.contentType===P.value)),o});function te(o){const c=`recommend.type.${o}`,f=t(c);return f===c?o:f}function oe(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function re(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function V(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function Z(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function ne(o){const c=`recommend.feedbackLabel.${o}`,f=t(c);return f===c?o:f}function $(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function R(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ae(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function s(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function m(){M.value=!0;try{const{output:o}=await e.execute("recommend profiles --json",1e4).catch(()=>({output:""}));j.value=ye(o),v.value&&!j.value.find(c=>c.userId===v.value)&&(v.value=null),v.value&&await C()}catch(o){g.error(t("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{M.value=!1}}async function C(){if(!v.value){S.value=[],O.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},I.value=[];return}w.value=!0;try{const o=L(v.value),[c,f,B]=await Promise.all([e.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),e.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),e.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);S.value=ge(c.output),O.value=_e(f.output),I.value=ve(B.output)}catch(o){g.error(t("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{w.value=!1}}function L(o){return`"${String(o).replace(/"/g,'\\"')}"`}function be(){F.value=[],C()}function xe(o){v.value=o,U.value="recs",C()}async function he(){if(!x.userId.trim()){g.warning(t("recommend.messages.userIdRequired"));return}if(x.topicsJson.trim())try{JSON.parse(x.topicsJson)}catch{g.warning(t("recommend.messages.topicsJsonInvalid"));return}if(x.weightsJson.trim())try{JSON.parse(x.weightsJson)}catch{g.warning(t("recommend.messages.weightsJsonInvalid"));return}Y.value=!0;try{const o=[`recommend create-profile ${L(x.userId.trim())}`];x.topicsJson.trim()&&o.push(`-t ${se(x.topicsJson.trim())}`),x.weightsJson.trim()&&o.push(`-w ${se(x.weightsJson.trim())}`),o.push("--json");const{output:c}=await e.execute(o.join(" "),1e4),f=E(c);if(!f.ok){g.error(t("recommend.messages.createFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.createOk",{id:f.profileId?.slice(0,8)||""})),J.value=!1;const B=x.userId.trim();le(),await m(),v.value=B,await C()}catch(o){g.error(t("recommend.messages.createFailed",{err:o?.message||o}))}finally{Y.value=!1}}function se(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Ce(){if(v.value)try{const{output:o}=await e.execute(`recommend decay ${L(v.value)} --json`,8e3),c=E(o);if(!c.ok){g.error(t("recommend.messages.decayFailed",{err:c.reason||o.slice(0,120)}));return}g.success(c.topicCount!==null?t("recommend.messages.decayOkTopics",{count:c.topicCount}):t("recommend.messages.decayOk")),await m()}catch(o){g.error(t("recommend.messages.decayFailed",{err:o?.message||o}))}}async function we(){if(v.value)try{const{output:o}=await e.execute(`recommend suggest ${L(v.value)} --json`,8e3);F.value=ke(o),U.value="interests",F.value.length?g.success(t("recommend.messages.suggestFound",{count:F.value.length})):g.info(t("recommend.messages.suggestNone"))}catch(o){g.error(t("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Se(o){try{const{output:c}=await e.execute(`recommend delete-profile ${L(o.userId)} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.deleteFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.deleteOk")),v.value===o.userId&&(v.value=null),await m()}catch(c){g.error(t("recommend.messages.deleteFailed",{err:c?.message||c}))}}function Ie(o){q.value=o,D.value=!0}async function Te(o){try{const{output:c}=await e.execute(`recommend view ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.viewFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.viewOk")),await C()}catch(c){g.error(t("recommend.messages.viewFailed",{err:c?.message||c}))}}async function Oe(o,c){try{const{output:f}=await e.execute(`recommend feedback ${o.id} ${c} --json`,8e3),B=E(f);if(!B.ok){g.error(t("recommend.messages.feedbackFailed",{err:B.reason||f.slice(0,120)}));return}g.success(t("recommend.messages.feedbackOk")),await C()}catch(f){g.error(t("recommend.messages.feedbackFailed",{err:f?.message||f}))}}async function Fe(o){try{const{output:c}=await e.execute(`recommend dismiss ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.dismissFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.dismissOk")),await C()}catch(c){g.error(t("recommend.messages.dismissFailed",{err:c?.message||c}))}}function le(){x.userId="",x.topicsJson="",x.weightsJson=""}ce(m);const ie={t,ws:e,EMPTY_IMG:z,loading:M,loadingRecs:w,creating:Y,profiles:j,recs:S,userStats:O,topInterests:I,suggestions:F,selectedUser:v,activeTab:U,statusFilter:N,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:q,userOptions:H,recColumns:X,profileColumns:G,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:V,statusColor:Z,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:s,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Ie,markViewed:Te,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return De},get UserAddOutlined(){return Je},get UserOutlined(){return Ne},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Me},get LikeOutlined(){return Ee},get StarOutlined(){return Re},get FieldTimeOutlined(){return ze},get BulbOutlined(){return Ue},get message(){return g},get Empty(){return fe},get useWsStore(){return ue},get parseProfiles(){return ye},get parseRecommendations(){return ge},get parseUserStats(){return _e},get parseTopInterests(){return ve},get parseSuggestions(){return ke},get parseActionResult(){return E},get formatRecommendTime(){return Ve},get CONTENT_TYPE_IDS(){return Le},get RECOMMENDATION_STATUSES(){return Be}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ze={style:{color:"var(--text-secondary)","font-size":"12px"}},$e={class:"type-name"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},rt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},st={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},lt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:3,style:{color:"var(--text-secondary)"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={key:1},ut={class:"interest-topic"},ft={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},pt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},yt={key:0,style:{"padding-top":"8px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},_t={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},vt={key:1},kt={class:"interest-topic"},bt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},xt={key:3,class:"weights-pre"};function ht(l,a,t,e,z,M){const w=y("a-button"),Y=y("a-space"),j=y("a-select"),S=y("a-card"),O=y("a-statistic"),I=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),N=y("a-radio-group"),P=y("a-empty"),J=y("a-progress"),D=y("a-menu-item"),x=y("a-menu"),q=y("a-dropdown"),H=y("a-popconfirm"),X=y("a-table"),G=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),V=y("a-form-item"),Z=y("a-textarea"),ne=y("a-form"),$=y("a-modal"),R=y("a-descriptions-item"),ae=y("a-descriptions");return d(),_("div",null,[b("div",Qe,[b("div",null,[b("h2",qe,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),n(Y,null,{default:r(()=>[n(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[n(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),n(w,{type:"primary",onClick:a[0]||(a[0]=s=>e.showCreateProfileModal=!0)},{icon:r(()=>[n(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),n(S,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:r(()=>[b("div",Xe,[b("span",Ze,i(e.t("recommend.userBar.currentUser")),1),n(j,{value:e.selectedUser,"onUpdate:value":a[1]||(a[1]=s=>e.selectedUser=s),options:e.userOptions,placeholder:e.t("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:e.onUserChange},null,8,["value","options","placeholder"]),e.selectedUser?(d(),k(w,{key:0,size:"small",onClick:e.applyDecay},{icon:r(()=>[n(e.FieldTimeOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.applyDecay")),1)]),_:1})):u("v-if",!0),e.selectedUser?(d(),k(w,{key:1,size:"small",onClick:e.loadSuggestions},{icon:r(()=>[n(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),n(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[n(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[n(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[n(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[n(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:24,sm:8,lg:4},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.avgScore"),value:e.userStats.avgScore,precision:3,"value-style":{color:e.scoreColor(e.userStats.avgScore),fontSize:"20px"}},{prefix:r(()=>[n(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),n(S,{title:e.t("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[n(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(I,{key:s,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(s)})},[n(v,{color:e.typeColor(s),style:{"font-family":"monospace"}},{default:r(()=>[p(i(s),1)]),_:2},1032,["color"]),b("div",$e,i(e.typeLabel(s)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),n(oe,{activeKey:e.activeTab,"onUpdate:activeKey":a[4]||(a[4]=s=>e.activeTab=s),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),n(G,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",et,[n(N,{value:e.statusFilter,"onUpdate:value":a[2]||(a[2]=s=>e.statusFilter=s),size:"small","button-style":"solid"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,Q(e.RECOMMENDATION_STATUSES,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.statusLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(N,{value:e.typeFilter,"onUpdate:value":a[3]||(a[3]=s=>e.typeFilter=s),size:"small"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.typeLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(X,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.rows",{count:s})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="title"?(d(),_(A,{key:0},[b("span",tt,i(m.title||e.t("recommend.noTitle")),1),b("div",ot,i(m.contentId),1)],64)):u("v-if",!0),s.key==="contentType"?(d(),k(v,{key:1,color:e.typeColor(m.contentType),style:{"font-family":"monospace"}},{default:r(()=>[p(i(m.contentType),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="score"?(d(),k(J,{key:2,percent:Math.round(m.score*100),"stroke-color":e.scoreColor(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):u("v-if",!0),s.key==="reason"?(d(),_("span",rt,i(m.reason),1)):u("v-if",!0),s.key==="status"?(d(),k(v,{key:4,color:e.statusColor(m.status)},{default:r(()=>[p(i(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="feedback"?(d(),_(A,{key:5},[m.feedback?(d(),k(v,{key:0,color:e.feedbackColor(m.feedback)},{default:r(()=>[p(i(e.feedbackLabel(m.feedback)),1)]),_:2},1032,["color"])):(d(),_("span",nt,"—"))],64)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:6},[m.status==="pending"?(d(),k(w,{key:0,size:"small",type:"link",onClick:C=>e.markViewed(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):u("v-if",!0),m.status!=="dismissed"?(d(),k(q,{key:1},{overlay:r(()=>[n(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[n(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),n(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),n(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[n(w,{size:"small",type:"link"},{default:r(()=>[p(i(e.t("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):u("v-if",!0),m.status!=="dismissed"?(d(),k(H,{key:2,title:e.t("recommend.rowActions.dismissConfirmTitle"),"ok-text":e.t("recommend.rowActions.dismissOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.dismissRec(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):u("v-if",!0)],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",at,[n(e.FireOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.statusFilter||e.typeFilter?e.t("recommend.empty.filtered"):e.t("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),u(" ── Profiles tab ───────────────────────────────────────── "),n(G,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[n(X,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.profiles",{count:s})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="userId"?(d(),_("span",st,i(m.userId),1)):u("v-if",!0),s.key==="topicCount"?(d(),k(v,{key:1,color:"blue"},{default:r(()=>[p(i(e.t("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):u("v-if",!0),s.key==="decayFactor"?(d(),_("span",lt,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),s.key==="updateCount"?(d(),_("span",it,i(m.updateCount),1)):u("v-if",!0),s.key==="lastUpdated"?(d(),_("span",ct,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:5},[n(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),n(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),n(H,{title:e.t("recommend.rowActions.deleteConfirmTitle"),"ok-text":e.t("recommend.rowActions.deleteOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.deleteProfile(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",dt,[n(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.t("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),u(" ── Top interests tab ──────────────────────────────────── "),n(G,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[n(I,{xs:24,lg:14},{default:r(()=>[n(S,{title:e.t("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.topInterests.length?(d(),_("div",mt,[(d(!0),_(A,null,Q(e.topInterests,s=>(d(),_("div",{key:s.key,class:"interest-row"},[b("span",ut,i(s.topic),1),n(J,{percent:Math.round(s.weight*100),"stroke-color":e.weightColor(s.weight),format:()=>s.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noInterests"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),n(I,{xs:24,lg:10},{default:r(()=>[n(S,{title:e.t("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.suggestions.length?(d(),k(te,{key:1,size:"small","data-source":e.suggestions},{renderItem:r(({item:s})=>[n(ee,null,{default:r(()=>[n(v,{color:s.action==="boost"?"green":"orange"},{default:r(()=>[p(i(s.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",ft,i(s.topic),1),b("span",pt,"±"+i(s.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(P,{key:0,description:e.t("recommend.empty.noSuggestions"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),u(" ── Create profile modal ───────────────────────────────── "),n($,{open:e.showCreateProfileModal,"onUpdate:open":a[8]||(a[8]=s=>e.showCreateProfileModal=s),title:e.t("recommend.create.title"),"confirm-loading":e.creating,width:560,"ok-text":e.t("recommend.create.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitCreateProfile,onCancel:e.resetCreateForm},{default:r(()=>[n(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[n(V,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[n(re,{value:e.createForm.userId,"onUpdate:value":a[5]||(a[5]=s=>e.createForm.userId=s),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[n(Z,{value:e.createForm.topicsJson,"onUpdate:value":a[6]||(a[6]=s=>e.createForm.topicsJson=s),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[n(Z,{value:e.createForm.weightsJson,"onUpdate:value":a[7]||(a[7]=s=>e.createForm.weightsJson=s),placeholder:e.t("recommend.create.weightsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),u(" ── Profile details modal ──────────────────────────────── "),n($,{open:e.showDetailsModal,"onUpdate:open":a[9]||(a[9]=s=>e.showDetailsModal=s),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",yt,[n(ae,{column:2,size:"small",bordered:""},{default:r(()=>[n(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",gt,i(e.currentProfile.id),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",_t,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",vt,[(d(!0),_(A,null,Q(e.currentProfile.topics,(s,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",kt,i(m),1),n(J,{percent:Math.round(s*100),"stroke-color":e.weightColor(s),format:()=>s.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noTopics"),image:e.EMPTY_IMG},null,8,["description","image"])),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("h4",bt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",xt,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const It=Ae(Ke,[["render",ht],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-8U3FtY/repo/packages/web-panel/src/views/Recommend.vue"]]);export{It as default};
1
+ import{I as y,J as _,U as b,R as i,c as n,K as r,V as u,o as ce,a as de,b as K,r as h,P as d,Q as p,S as k,F as A,Z as Q,$ as Pe}from"./vendor-Bn1JzzAn.js";import{t as W,_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-Cr3uuz0C.js";import{p as Ue,aW as ze,aB as Re,aU as Ee,aX as Me,l as je,al as Ne,aQ as Je,R as De}from"./icons-DG5UD-6K.js";const Le=Object.freeze(["note","post","article","document"]),Be=Object.freeze(["pending","viewed","dismissed"]);function T(l,a=0){return typeof l=="number"&&Number.isFinite(l)?l:a}function pe(l){if(!l||typeof l!="object"||Array.isArray(l))return{};const a={};for(const[t,e]of Object.entries(l))typeof e=="number"&&Number.isFinite(e)&&(a[t]=e);return a}function We(l,a=0){if(!l||typeof l!="object")return null;const t=l.user_id??l.userId??"";if(!t)return null;const e=l.topics&&typeof l.topics=="object"&&!Array.isArray(l.topics)?pe(l.topics):{},z=l.interaction_weights??l.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(l.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:T(l.decay_factor??l.decayFactor,.9),lastUpdated:l.last_updated??l.lastUpdated??null,updateCount:T(l.update_count??l.updateCount,0),_idx:a}}function ye(l){const a=W(l);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function Ye(l,a=0){if(!l||typeof l!="object")return null;const t=l.id||"";return t?{key:t,id:t,userId:l.user_id??l.userId??"",contentId:l.content_id??l.contentId??"",contentType:String(l.content_type??l.contentType??"note").toLowerCase(),title:String(l.title||""),score:T(l.score,0),reason:String(l.reason||""),source:String(l.source||"heuristic"),status:String(l.status||"pending").toLowerCase(),feedback:l.feedback??null,createdAt:l.created_at??l.createdAt??null,viewedAt:l.viewed_at??l.viewedAt??null,_idx:a}:null}function ge(l){const a=W(l);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(l){const a={...Ge},t=W(l);return!t||typeof t!="object"||Array.isArray(t)||(a.total=T(t.total,0),a.pending=T(t.pending,0),a.viewed=T(t.viewed,0),a.dismissed=T(t.dismissed,0),a.feedbackCount=T(t.feedbackCount,0),a.feedbackRate=T(t.feedbackRate,0),a.avgScore=T(t.avgScore,0)),a}function ve(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:T(t.weight,0)})):[]}function ke(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string"&&typeof t.action=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,action:t.action,amount:T(t.amount,0)})):[]}function E(l){const a=W(l);return!a||typeof a!="object"||Array.isArray(a)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(a.updated||a.deleted||a.marked||a.dismissed||a.recorded||a.applied||a.profileId),reason:a.reason?String(a.reason):"",profileId:a.profileId?String(a.profileId):null,topicCount:typeof a.topicCount=="number"?a.topicCount:null}}function Ve(l){if(l==null||l==="")return"—";const a=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(a.getTime())?String(l):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"Recommend",setup(l,{expose:a}){a();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),j=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),I=h([]),F=h([]),v=h(null),U=h("recs"),N=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),q=h(null),H=K(()=>j.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),X=K(()=>[{title:t("recommend.recColumns.title"),key:"title"},{title:t("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:t("recommend.recColumns.score"),key:"score",width:"180px"},{title:t("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:t("recommend.recColumns.status"),key:"status",width:"100px"},{title:t("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:t("recommend.recColumns.action"),key:"action",width:"210px"}]),G=K(()=>[{title:t("recommend.profileColumns.userId"),key:"userId"},{title:t("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:t("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:t("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:t("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:t("recommend.profileColumns.action"),key:"action",width:"200px"}]),ee=K(()=>{let o=S.value;return N.value&&(o=o.filter(c=>c.status===N.value)),P.value&&(o=o.filter(c=>c.contentType===P.value)),o});function te(o){const c=`recommend.type.${o}`,f=t(c);return f===c?o:f}function oe(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function re(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function V(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function Z(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function ne(o){const c=`recommend.feedbackLabel.${o}`,f=t(c);return f===c?o:f}function $(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function R(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ae(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function s(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function m(){M.value=!0;try{const{output:o}=await e.execute("recommend profiles --json",1e4).catch(()=>({output:""}));j.value=ye(o),v.value&&!j.value.find(c=>c.userId===v.value)&&(v.value=null),v.value&&await C()}catch(o){g.error(t("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{M.value=!1}}async function C(){if(!v.value){S.value=[],O.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},I.value=[];return}w.value=!0;try{const o=L(v.value),[c,f,B]=await Promise.all([e.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),e.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),e.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);S.value=ge(c.output),O.value=_e(f.output),I.value=ve(B.output)}catch(o){g.error(t("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{w.value=!1}}function L(o){return`"${String(o).replace(/"/g,'\\"')}"`}function be(){F.value=[],C()}function xe(o){v.value=o,U.value="recs",C()}async function he(){if(!x.userId.trim()){g.warning(t("recommend.messages.userIdRequired"));return}if(x.topicsJson.trim())try{JSON.parse(x.topicsJson)}catch{g.warning(t("recommend.messages.topicsJsonInvalid"));return}if(x.weightsJson.trim())try{JSON.parse(x.weightsJson)}catch{g.warning(t("recommend.messages.weightsJsonInvalid"));return}Y.value=!0;try{const o=[`recommend create-profile ${L(x.userId.trim())}`];x.topicsJson.trim()&&o.push(`-t ${se(x.topicsJson.trim())}`),x.weightsJson.trim()&&o.push(`-w ${se(x.weightsJson.trim())}`),o.push("--json");const{output:c}=await e.execute(o.join(" "),1e4),f=E(c);if(!f.ok){g.error(t("recommend.messages.createFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.createOk",{id:f.profileId?.slice(0,8)||""})),J.value=!1;const B=x.userId.trim();le(),await m(),v.value=B,await C()}catch(o){g.error(t("recommend.messages.createFailed",{err:o?.message||o}))}finally{Y.value=!1}}function se(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Ce(){if(v.value)try{const{output:o}=await e.execute(`recommend decay ${L(v.value)} --json`,8e3),c=E(o);if(!c.ok){g.error(t("recommend.messages.decayFailed",{err:c.reason||o.slice(0,120)}));return}g.success(c.topicCount!==null?t("recommend.messages.decayOkTopics",{count:c.topicCount}):t("recommend.messages.decayOk")),await m()}catch(o){g.error(t("recommend.messages.decayFailed",{err:o?.message||o}))}}async function we(){if(v.value)try{const{output:o}=await e.execute(`recommend suggest ${L(v.value)} --json`,8e3);F.value=ke(o),U.value="interests",F.value.length?g.success(t("recommend.messages.suggestFound",{count:F.value.length})):g.info(t("recommend.messages.suggestNone"))}catch(o){g.error(t("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Se(o){try{const{output:c}=await e.execute(`recommend delete-profile ${L(o.userId)} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.deleteFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.deleteOk")),v.value===o.userId&&(v.value=null),await m()}catch(c){g.error(t("recommend.messages.deleteFailed",{err:c?.message||c}))}}function Ie(o){q.value=o,D.value=!0}async function Te(o){try{const{output:c}=await e.execute(`recommend view ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.viewFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.viewOk")),await C()}catch(c){g.error(t("recommend.messages.viewFailed",{err:c?.message||c}))}}async function Oe(o,c){try{const{output:f}=await e.execute(`recommend feedback ${o.id} ${c} --json`,8e3),B=E(f);if(!B.ok){g.error(t("recommend.messages.feedbackFailed",{err:B.reason||f.slice(0,120)}));return}g.success(t("recommend.messages.feedbackOk")),await C()}catch(f){g.error(t("recommend.messages.feedbackFailed",{err:f?.message||f}))}}async function Fe(o){try{const{output:c}=await e.execute(`recommend dismiss ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.dismissFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.dismissOk")),await C()}catch(c){g.error(t("recommend.messages.dismissFailed",{err:c?.message||c}))}}function le(){x.userId="",x.topicsJson="",x.weightsJson=""}ce(m);const ie={t,ws:e,EMPTY_IMG:z,loading:M,loadingRecs:w,creating:Y,profiles:j,recs:S,userStats:O,topInterests:I,suggestions:F,selectedUser:v,activeTab:U,statusFilter:N,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:q,userOptions:H,recColumns:X,profileColumns:G,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:V,statusColor:Z,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:s,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Ie,markViewed:Te,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return De},get UserAddOutlined(){return Je},get UserOutlined(){return Ne},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Me},get LikeOutlined(){return Ee},get StarOutlined(){return Re},get FieldTimeOutlined(){return ze},get BulbOutlined(){return Ue},get message(){return g},get Empty(){return fe},get useWsStore(){return ue},get parseProfiles(){return ye},get parseRecommendations(){return ge},get parseUserStats(){return _e},get parseTopInterests(){return ve},get parseSuggestions(){return ke},get parseActionResult(){return E},get formatRecommendTime(){return Ve},get CONTENT_TYPE_IDS(){return Le},get RECOMMENDATION_STATUSES(){return Be}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ze={style:{color:"var(--text-secondary)","font-size":"12px"}},$e={class:"type-name"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},rt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},st={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},lt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:3,style:{color:"var(--text-secondary)"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={key:1},ut={class:"interest-topic"},ft={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},pt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},yt={key:0,style:{"padding-top":"8px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},_t={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},vt={key:1},kt={class:"interest-topic"},bt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},xt={key:3,class:"weights-pre"};function ht(l,a,t,e,z,M){const w=y("a-button"),Y=y("a-space"),j=y("a-select"),S=y("a-card"),O=y("a-statistic"),I=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),N=y("a-radio-group"),P=y("a-empty"),J=y("a-progress"),D=y("a-menu-item"),x=y("a-menu"),q=y("a-dropdown"),H=y("a-popconfirm"),X=y("a-table"),G=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),V=y("a-form-item"),Z=y("a-textarea"),ne=y("a-form"),$=y("a-modal"),R=y("a-descriptions-item"),ae=y("a-descriptions");return d(),_("div",null,[b("div",Qe,[b("div",null,[b("h2",qe,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),n(Y,null,{default:r(()=>[n(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[n(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),n(w,{type:"primary",onClick:a[0]||(a[0]=s=>e.showCreateProfileModal=!0)},{icon:r(()=>[n(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),n(S,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:r(()=>[b("div",Xe,[b("span",Ze,i(e.t("recommend.userBar.currentUser")),1),n(j,{value:e.selectedUser,"onUpdate:value":a[1]||(a[1]=s=>e.selectedUser=s),options:e.userOptions,placeholder:e.t("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:e.onUserChange},null,8,["value","options","placeholder"]),e.selectedUser?(d(),k(w,{key:0,size:"small",onClick:e.applyDecay},{icon:r(()=>[n(e.FieldTimeOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.applyDecay")),1)]),_:1})):u("v-if",!0),e.selectedUser?(d(),k(w,{key:1,size:"small",onClick:e.loadSuggestions},{icon:r(()=>[n(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),n(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[n(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[n(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[n(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[n(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:24,sm:8,lg:4},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.avgScore"),value:e.userStats.avgScore,precision:3,"value-style":{color:e.scoreColor(e.userStats.avgScore),fontSize:"20px"}},{prefix:r(()=>[n(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),n(S,{title:e.t("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[n(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(I,{key:s,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(s)})},[n(v,{color:e.typeColor(s),style:{"font-family":"monospace"}},{default:r(()=>[p(i(s),1)]),_:2},1032,["color"]),b("div",$e,i(e.typeLabel(s)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),n(oe,{activeKey:e.activeTab,"onUpdate:activeKey":a[4]||(a[4]=s=>e.activeTab=s),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),n(G,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",et,[n(N,{value:e.statusFilter,"onUpdate:value":a[2]||(a[2]=s=>e.statusFilter=s),size:"small","button-style":"solid"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,Q(e.RECOMMENDATION_STATUSES,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.statusLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(N,{value:e.typeFilter,"onUpdate:value":a[3]||(a[3]=s=>e.typeFilter=s),size:"small"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.typeLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(X,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.rows",{count:s})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="title"?(d(),_(A,{key:0},[b("span",tt,i(m.title||e.t("recommend.noTitle")),1),b("div",ot,i(m.contentId),1)],64)):u("v-if",!0),s.key==="contentType"?(d(),k(v,{key:1,color:e.typeColor(m.contentType),style:{"font-family":"monospace"}},{default:r(()=>[p(i(m.contentType),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="score"?(d(),k(J,{key:2,percent:Math.round(m.score*100),"stroke-color":e.scoreColor(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):u("v-if",!0),s.key==="reason"?(d(),_("span",rt,i(m.reason),1)):u("v-if",!0),s.key==="status"?(d(),k(v,{key:4,color:e.statusColor(m.status)},{default:r(()=>[p(i(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="feedback"?(d(),_(A,{key:5},[m.feedback?(d(),k(v,{key:0,color:e.feedbackColor(m.feedback)},{default:r(()=>[p(i(e.feedbackLabel(m.feedback)),1)]),_:2},1032,["color"])):(d(),_("span",nt,"—"))],64)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:6},[m.status==="pending"?(d(),k(w,{key:0,size:"small",type:"link",onClick:C=>e.markViewed(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):u("v-if",!0),m.status!=="dismissed"?(d(),k(q,{key:1},{overlay:r(()=>[n(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[n(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),n(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),n(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[n(w,{size:"small",type:"link"},{default:r(()=>[p(i(e.t("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):u("v-if",!0),m.status!=="dismissed"?(d(),k(H,{key:2,title:e.t("recommend.rowActions.dismissConfirmTitle"),"ok-text":e.t("recommend.rowActions.dismissOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.dismissRec(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):u("v-if",!0)],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",at,[n(e.FireOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.statusFilter||e.typeFilter?e.t("recommend.empty.filtered"):e.t("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),u(" ── Profiles tab ───────────────────────────────────────── "),n(G,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[n(X,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.profiles",{count:s})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="userId"?(d(),_("span",st,i(m.userId),1)):u("v-if",!0),s.key==="topicCount"?(d(),k(v,{key:1,color:"blue"},{default:r(()=>[p(i(e.t("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):u("v-if",!0),s.key==="decayFactor"?(d(),_("span",lt,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),s.key==="updateCount"?(d(),_("span",it,i(m.updateCount),1)):u("v-if",!0),s.key==="lastUpdated"?(d(),_("span",ct,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:5},[n(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),n(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),n(H,{title:e.t("recommend.rowActions.deleteConfirmTitle"),"ok-text":e.t("recommend.rowActions.deleteOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.deleteProfile(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",dt,[n(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.t("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),u(" ── Top interests tab ──────────────────────────────────── "),n(G,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[n(I,{xs:24,lg:14},{default:r(()=>[n(S,{title:e.t("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.topInterests.length?(d(),_("div",mt,[(d(!0),_(A,null,Q(e.topInterests,s=>(d(),_("div",{key:s.key,class:"interest-row"},[b("span",ut,i(s.topic),1),n(J,{percent:Math.round(s.weight*100),"stroke-color":e.weightColor(s.weight),format:()=>s.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noInterests"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),n(I,{xs:24,lg:10},{default:r(()=>[n(S,{title:e.t("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.suggestions.length?(d(),k(te,{key:1,size:"small","data-source":e.suggestions},{renderItem:r(({item:s})=>[n(ee,null,{default:r(()=>[n(v,{color:s.action==="boost"?"green":"orange"},{default:r(()=>[p(i(s.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",ft,i(s.topic),1),b("span",pt,"±"+i(s.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(P,{key:0,description:e.t("recommend.empty.noSuggestions"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),u(" ── Create profile modal ───────────────────────────────── "),n($,{open:e.showCreateProfileModal,"onUpdate:open":a[8]||(a[8]=s=>e.showCreateProfileModal=s),title:e.t("recommend.create.title"),"confirm-loading":e.creating,width:560,"ok-text":e.t("recommend.create.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitCreateProfile,onCancel:e.resetCreateForm},{default:r(()=>[n(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[n(V,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[n(re,{value:e.createForm.userId,"onUpdate:value":a[5]||(a[5]=s=>e.createForm.userId=s),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[n(Z,{value:e.createForm.topicsJson,"onUpdate:value":a[6]||(a[6]=s=>e.createForm.topicsJson=s),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[n(Z,{value:e.createForm.weightsJson,"onUpdate:value":a[7]||(a[7]=s=>e.createForm.weightsJson=s),placeholder:e.t("recommend.create.weightsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),u(" ── Profile details modal ──────────────────────────────── "),n($,{open:e.showDetailsModal,"onUpdate:open":a[9]||(a[9]=s=>e.showDetailsModal=s),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",yt,[n(ae,{column:2,size:"small",bordered:""},{default:r(()=>[n(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",gt,i(e.currentProfile.id),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",_t,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",vt,[(d(!0),_(A,null,Q(e.currentProfile.topics,(s,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",kt,i(m),1),n(J,{percent:Math.round(s*100),"stroke-color":e.weightColor(s),format:()=>s.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noTopics"),image:e.EMPTY_IMG},null,8,["description","image"])),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("h4",bt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",xt,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const It=Ae(Ke,[["render",ht],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-PsNCmy/repo/packages/web-panel/src/views/Recommend.vue"]]);export{It as default};
@@ -0,0 +1,5 @@
1
+ import{E as Cn,r as ee,I as W,J as ke,U as Te,c as A,K as _,S as ne,V as he,o as kt,a8 as Tt,b as Le,P as j,Q as Y,R as ge,F as Nn,Z as Fn,a5 as Hn}from"./vendor-Bn1JzzAn.js";import{Q as Dn}from"./QrScannerModal-BDMehcXC.js";import{_ as Zn}from"./index-Cr3uuz0C.js";import{ax as $n,aC as Mn}from"./icons-DG5UD-6K.js";import"./markdown-CsiA8-E5.js";function zn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Se(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 ce(t,e,n=""){const r=zn(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",f=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+f;throw r?new RangeError(c):new TypeError(c)}return t}function vt(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Se(t.outputLen),Se(t.blockLen),t.outputLen<1)throw new Error('"outputLen" must be >= 1');if(t.blockLen<1)throw new Error('"blockLen" must be >= 1')}function et(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 on(t,e){ce(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 He(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function it(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function se(t,e){return t<<32-e|t>>>e}const sn=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Pn=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function xt(t){if(ce(t),sn)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Pn[t[n]];return e}const ie={_0:48,_9:57,A:65,F:70,a:97,f:102};function Lt(t){if(t>=ie._0&&t<=ie._9)return t-ie._0;if(t>=ie.A&&t<=ie.F)return t-(ie.A-10);if(t>=ie.a&&t<=ie.f)return t-(ie.a-10)}function St(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(sn)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=Lt(t.charCodeAt(s)),a=Lt(t.charCodeAt(s+1));if(i===void 0||a===void 0){const f=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+f+'" at index '+s)}r[o]=i*16+a}return r}function jn(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 Yn(t=32){Se(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 Vn=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function Xn(t,e,n){return t&e^~t&n}function Kn(t,e,n){return t&e^t&n^e&n}class Gn{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=it(this.buffer)}update(e){et(this),ce(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 f=it(e);for(;o<=s-i;i+=o)this.process(f,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){et(this),on(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,He(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=it(e),f=this.outputLen;if(f%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=f/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<c;u++)a.setUint32(4*u,l[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 ae=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qn=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]),fe=new Uint32Array(64);class Wn extends Gn{constructor(e){super(64,e,8,!1)}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:f}=this;return[e,n,r,o,s,i,a,f]}set(e,n,r,o,s,i,a,f){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=f|0}process(e,n){for(let u=0;u<16;u++,n+=4)fe[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const b=fe[u-15],g=fe[u-2],S=se(b,7)^se(b,18)^b>>>3,v=se(g,17)^se(g,19)^g>>>10;fe[u]=v+fe[u-7]+S+fe[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:f,G:c,H:l}=this;for(let u=0;u<64;u++){const b=se(a,6)^se(a,11)^se(a,25),g=l+b+Xn(a,f,c)+Qn[u]+fe[u]|0,v=(se(r,2)^se(r,13)^se(r,22))+Kn(r,o,s)|0;l=c,c=f,f=a,a=i+g|0,i=s,s=o,o=r,r=g+v|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,f=f+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(r,o,s,i,a,f,c,l)}roundClean(){He(fe)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),He(this.buffer)}}class Jn extends Wn{A=ae[0]|0;B=ae[1]|0;C=ae[2]|0;D=ae[3]|0;E=ae[4]|0;F=ae[5]|0;G=ae[6]|0;H=ae[7]|0;constructor(){super(32)}}const qt=jn(()=>new Jn,Vn(1));const ue=(t,e,n)=>ce(t,e,n),cn=Se,an=xt,er=t=>St(t),tr=t=>Yn(t),tt=BigInt(0),wt=BigInt(1);function fn(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}" `;throw new TypeError(n+"expected boolean, got type="+typeof t)}return t}function nr(t){if(typeof t=="bigint"){if(!Qe(t))throw new RangeError("positive bigint expected, got "+t)}else cn(t);return t}function Ut(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 ln(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?tt:BigInt("0x"+t)}function rr(t){return ln(xt(t))}function De(t){return ln(xt(Ze(ce(t)).reverse()))}function un(t,e){if(Se(e),e===0)throw new RangeError("zero length");t=nr(t);const n=t.toString(16);if(n.length>e*2)throw new RangeError("number too large");return St(n.padStart(e*2,"0"))}function dn(t,e){return un(t,e).reverse()}function or(t,e){if(t=ue(t),e=ue(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 Ze(t){return Uint8Array.from(ue(t))}const Qe=t=>typeof t=="bigint"&&tt<=t;function sr(t,e,n){return Qe(t)&&Qe(e)&&Qe(n)&&e<=t&&t<n}function nt(t,e,n,r){if(!sr(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function ir(t){if(t<tt)throw new Error("expected non-negative bigint, got "+t);let e;for(e=0;t>tt;t>>=wt,e+=1);return e}const cr=t=>(wt<<BigInt(t))-wt;function It(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 f=t[s];if(a&&f===void 0)return;const c=typeof f;if(c!==i||f===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${c}`)}const o=(s,i)=>Object.entries(s).forEach(([a,f])=>r(a,f,i));o(e,!1),o(n,!0)}const Ct=()=>{throw new Error("not implemented")};const V=BigInt(0),z=BigInt(1),me=BigInt(2),pn=BigInt(3),hn=BigInt(4),gn=BigInt(5),ar=BigInt(7),wn=BigInt(8),fr=BigInt(9),yn=BigInt(16);function C(t,e){if(e<=V)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=V?n:e+n}function re(t,e,n){if(e<V)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >V;)r*=r,r%=n;return r}function Nt(t,e){if(t===V)throw new Error("invert: expected non-zero number");if(e<=V)throw new Error("invert: expected positive modulus, got "+e);let n=C(t,e),r=e,o=V,s=z;for(;n!==V;){const a=r/n,f=r-n*a,c=o-s*a;r=n,n=f,o=s,s=c}if(r!==z)throw new Error("invert: does not exist");return C(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 mn(t,e){const n=t,r=(n.ORDER+z)/hn,o=n.pow(e,r);return _t(n,o,e),o}function lr(t,e){const n=t,r=(n.ORDER-gn)/wn,o=n.mul(e,me),s=n.pow(o,r),i=n.mul(e,s),a=n.mul(n.mul(i,me),s),f=n.mul(i,n.sub(a,n.ONE));return _t(n,f,e),f}function ur(t){const e=Bt(t),n=bn(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+ar)/yn;return((a,f)=>{const c=a;let l=c.pow(f,i),u=c.mul(l,r);const b=c.mul(l,o),g=c.mul(l,s),S=c.eql(c.sqr(u),f),v=c.eql(c.sqr(b),f);l=c.cmov(l,u,S),u=c.cmov(g,b,v);const d=c.eql(c.sqr(u),f),y=c.cmov(l,u,d);return _t(c,y,f),y})}function bn(t){if(t<pn)throw new Error("sqrt is not defined for small field");let e=t-z,n=0;for(;e%me===V;)e/=me,n++;let r=me;const o=Bt(t);for(;Ft(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return mn;let s=o.pow(r,e);const i=(e+z)/me;return function(f,c){const l=f;if(l.is0(c))return c;if(Ft(l,c)!==1)throw new Error("Cannot find square root");let u=n,b=l.mul(l.ONE,s),g=l.pow(c,e),S=l.pow(c,i);for(;!l.eql(g,l.ONE);){if(l.is0(g))return l.ZERO;let v=1,d=l.sqr(g);for(;!l.eql(d,l.ONE);)if(v++,d=l.sqr(d),v===u)throw new Error("Cannot find square root");const y=z<<BigInt(u-v-1),h=l.pow(b,y);u=v,b=l.sqr(h),g=l.mul(g,b),S=l.mul(S,h)}return S}}function dr(t){return t%hn===pn?mn:t%wn===gn?lr:t%yn===fr?ur(t):bn(t)}const we=(t,e)=>(C(t,e)&z)===z,pr=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function hr(t){const e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=pr.reduce((r,o)=>(r[o]="function",r),e);if(It(t,n),Ut(t.BYTES,"BYTES"),Ut(t.BITS,"BITS"),t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=z)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function gr(t,e,n){const r=t;if(n<V)throw new Error("invalid exponent, negatives unsupported");if(n===V)return r.ONE;if(n===z)return e;let o=r.ONE,s=e;for(;n>V;)n&z&&(o=r.mul(o,s)),s=r.sqr(s),n>>=z;return o}function En(t,e,n=!1){const r=t,o=new Array(e.length).fill(n?r.ZERO:void 0),s=e.reduce((a,f,c)=>r.is0(f)?a:(o[c]=a,r.mul(a,f)),r.ONE),i=r.inv(s);return e.reduceRight((a,f,c)=>r.is0(f)?a:(o[c]=r.mul(a,o[c]),r.mul(a,f)),i),o}function Ft(t,e){const n=t,r=(n.ORDER-z)/me,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&&cn(e),t<=V)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=ir(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 Ht=new WeakMap;class vn{ORDER;BITS;BYTES;isLE;ZERO=V;ONE=z;_lengths;_mod;constructor(e,n={}){if(e<=z)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 C(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return V<=e&&e<this.ORDER}is0(e){return e===V}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&z)===z}neg(e){return C(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return C(e*e,this.ORDER)}add(e,n){return C(e+n,this.ORDER)}sub(e,n){return C(e-n,this.ORDER)}mul(e,n){return C(e*n,this.ORDER)}pow(e,n){return gr(this,e,n)}div(e,n){return C(e*Nt(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 Nt(e,this.ORDER)}sqrt(e){let n=Ht.get(this);return n||Ht.set(this,n=dr(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?dn(e,this.BYTES):un(e,this.BYTES)}fromBytes(e,n=!1){ue(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 f=s?De(e):rr(e);if(a&&(f=C(f,i)),!n&&!this.isValid(f))throw new Error("invalid field element: outside of range 0..ORDER");return f}invertBatch(e){return En(this,e)}cmov(e,n,r){return fn(r,"condition"),r?n:e}}Object.freeze(vn.prototype);function Bt(t,e={}){return new vn(t,e)}const rt=BigInt(0),yt=BigInt(1);function Dt(t,e){const n=e.negate();return t?n:e}function ct(t,e){const n=En(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function xn(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function at(t,e){xn(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=cr(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function Zt(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),f=t>>i;a>r&&(a-=s,f+=yt);const c=e*r,l=c+Math.abs(a)-1,u=a===0,b=a<0,g=e%2!==0;return{nextN:f,offset:l,isZero:u,isNeg:b,isNegF:g,offsetF:c}}const ft=new WeakMap,Sn=new WeakMap;function lt(t){return Sn.get(t)||1}function $t(t){if(t!==rt)throw new Error("invalid wNAF")}class yr{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>rt;)n&yt&&(r=r.add(o)),o=o.double(),n>>=yt;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=at(n,this.bits),s=[];let i=e,a=i;for(let f=0;f<r;f++){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=at(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:f,offset:c,isZero:l,isNeg:u,isNegF:b,offsetF:g}=Zt(r,a,i);r=f,l?s=s.add(Dt(b,n[g])):o=o.add(Dt(u,n[c]))}return $t(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=at(e,this.bits);for(let i=0;i<s.windows&&r!==rt;i++){const{nextN:a,offset:f,isZero:c,isNeg:l}=Zt(r,i,s);if(r=a,!c){const u=n[f];o=o.add(l?u.negate():u)}}return $t(r),o}getPrecomputes(e,n,r){let o=ft.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),ft.set(n,o))),o}cached(e,n,r){const o=lt(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=lt(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){xn(n,this.bits),Sn.set(e,n),ft.delete(e)}hasCache(e){return lt(e)!==1}}function Mt(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return hr(e),e}else return Bt(t,{isLE:n})}function mr(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 f of["p","n","h"]){const c=e[f];if(!(typeof c=="bigint"&&c>rt))throw new Error(`CURVE.${f} must be positive bigint`)}const o=Mt(e.p,n.Fp,r),s=Mt(e.n,n.Fn,r),a=["Gx","Gy","a","d"];for(const f of a)if(!o.isValid(e[f]))throw new Error(`CURVE.${f} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function br(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}const le=BigInt(0),X=BigInt(1),ut=BigInt(2),Er=BigInt(8);function vr(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 xr(t,e={}){const n=e,r=mr("edwards",t,n,n.FpFnLE),{Fp:o,Fn:s}=r;let i=r.CURVE;const{h:a}=i;It(n,{},{uvRatio:"function"});const f=ut<<BigInt(s.BYTES*8)-X,c=v=>o.create(v),l=n.uvRatio===void 0?(v,d)=>{try{return{isValid:!0,value:o.sqrt(o.div(v,d))}}catch{return{isValid:!1,value:le}}}:n.uvRatio;if(!vr(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function u(v,d,y=!1){const h=y?X:le;return nt("coordinate "+v,d,h,f),d}function b(v){if(!(v instanceof g))throw new Error("EdwardsPoint expected")}class g{static BASE=new g(i.Gx,i.Gy,X,c(i.Gx*i.Gy));static ZERO=new g(le,X,X,le);static Fp=o;static Fn=s;X;Y;Z;T;constructor(d,y,h,m){this.X=u("x",d),this.Y=u("y",y),this.Z=u("z",h,!0),this.T=u("t",m),Object.freeze(this)}static CURVE(){return i}static fromAffine(d){if(d instanceof g)throw new Error("extended point not allowed");const{x:y,y:h}=d||{};return u("x",y),u("y",h),new g(y,h,X,c(y*h))}static fromBytes(d,y=!1){const h=o.BYTES,{a:m,d:I}=i;d=Ze(ue(d,h,"point")),fn(y,"zip215");const R=Ze(d),L=d[h-1];R[h-1]=L&-129;const k=De(R),q=y?f:o.ORDER;nt("point.y",k,le,q);const T=c(k*k),F=c(T-X),H=c(I*T-m);let{isValid:P,value:D}=l(F,H);if(!P)throw new Error("bad point: invalid y coordinate");const B=(D&X)===X,E=(L&128)!==0;if(!y&&D===le&&E)throw new Error("bad point: x=0 and x_0=1");return E!==B&&(D=c(-D)),g.fromAffine({x:D,y:k})}static fromHex(d,y=!1){return g.fromBytes(er(d),y)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(d=8,y=!0){return S.createCache(this,d),y||this.multiply(ut),this}assertValidity(){const d=this,{a:y,d:h}=i;if(d.is0())throw new Error("bad point: ZERO");const{X:m,Y:I,Z:R,T:L}=d,k=c(m*m),q=c(I*I),T=c(R*R),F=c(T*T),H=c(k*y),P=c(T*c(H+q)),D=c(F+c(h*c(k*q)));if(P!==D)throw new Error("bad point: equation left != right (1)");const B=c(m*I),E=c(R*L);if(B!==E)throw new Error("bad point: equation left != right (2)")}equals(d){b(d);const{X:y,Y:h,Z:m}=this,{X:I,Y:R,Z:L}=d,k=c(y*L),q=c(I*m),T=c(h*L),F=c(R*m);return k===q&&T===F}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:d}=i,{X:y,Y:h,Z:m}=this,I=c(y*y),R=c(h*h),L=c(ut*c(m*m)),k=c(d*I),q=y+h,T=c(c(q*q)-I-R),F=k+R,H=F-L,P=k-R,D=c(T*H),B=c(F*P),E=c(T*P),U=c(H*F);return new g(D,B,U,E)}add(d){b(d);const{a:y,d:h}=i,{X:m,Y:I,Z:R,T:L}=this,{X:k,Y:q,Z:T,T:F}=d,H=c(m*k),P=c(I*q),D=c(L*h*F),B=c(R*T),E=c((m+I)*(k+q)-H-P),U=B-D,$=B+D,M=c(P-y*H),Z=c(E*U),G=c($*M),te=c(E*M),Q=c(U*$);return new g(Z,G,Q,te)}subtract(d){return b(d),this.add(d.negate())}multiply(d){if(!s.isValidNot0(d))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:y,f:h}=S.cached(this,d,m=>ct(g,m));return ct(g,[y,h])[0]}multiplyUnsafe(d){if(!s.isValid(d))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return d===le?g.ZERO:this.is0()||d===X?this:S.unsafe(this,d,y=>ct(g,y))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return S.unsafe(this,i.n).is0()}toAffine(d){const y=this;let h=d;const{X:m,Y:I,Z:R}=y,L=y.is0();h==null&&(h=L?Er:o.inv(R));const k=c(m*h),q=c(I*h),T=o.mul(R,h);if(L)return{x:le,y:X};if(T!==X)throw new Error("invZ was invalid");return{x:k,y:q}}clearCofactor(){return a===X?this:this.multiplyUnsafe(a)}toBytes(){const{x:d,y}=this.toAffine(),h=o.toBytes(y);return h[h.length-1]|=d&X?128:0,h}toHex(){return an(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const S=new yr(g,s.BITS);return s.BITS>=8&&g.BASE.precompute(8),Object.freeze(g.prototype),Object.freeze(g),g}class Sr{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){Ct()}static fromHex(e){Ct()}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 an(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 qe=BigInt(0),Ee=BigInt(1),je=BigInt(2);function Ir(t){return It(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...t})}function _r(t){const e=Ir(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 f=i===void 0?tr:i,c=a?255:448,l=a?32:56,u=BigInt(a?9:5),b=BigInt(a?121665:39081),g=a?je**BigInt(254):je**BigInt(447),S=a?BigInt(8)*je**BigInt(251)-Ee:BigInt(4)*je**BigInt(445)-Ee,v=g+S+Ee,d=B=>C(B,n),y=h(u);function h(B){return dn(d(B),l)}function m(B){const E=Ze(ue(B,l,"uCoordinate"));return a&&(E[31]&=127),d(De(E))}function I(B){return De(o(Ze(ue(B,l,"scalar"))))}function R(B,E){const U=F(m(E),I(B));if(U===qe)throw new Error("invalid private or public key received");return h(U)}function L(B){return R(B,y)}const k=L,q=R;function T(B,E,U){const $=d(B*(E-U));return E=d(E-$),U=d(U+$),{x_2:E,x_3:U}}function F(B,E){nt("u",B,qe,n),nt("scalar",E,g,v);const U=E,$=B;let M=Ee,Z=qe,G=B,te=Ee,Q=qe;for(let _e=BigInt(c-1);_e>=qe;_e--){const ze=U>>_e&Ee;Q^=ze,{x_2:M,x_3:G}=T(Q,M,G),{x_2:Z,x_3:te}=T(Q,Z,te),Q=ze;const Be=M+Z,Re=d(Be*Be),Ae=M-Z,Oe=d(Ae*Ae),p=Re-Oe,w=G+te,x=G-te,O=d(x*Be),oe=d(w*Ae),pe=O+oe,Pe=O-oe;G=d(pe*pe),te=d($*d(Pe*Pe)),M=d(Re*Oe),Z=d(p*(Re+d(b*p)))}({x_2:M,x_3:G}=T(Q,M,G)),{x_2:Z,x_3:te}=T(Q,Z,te);const st=s(Z);return d(M*st)}const H={secretKey:l,publicKey:l,seed:l},P=B=>(B=B===void 0?f(l):B,ue(B,H.seed,"seed"),B),D={randomSecretKey:P};return Object.freeze(H),Object.freeze(D),Object.freeze({keygen:br(P,k),getSharedSecret:q,getPublicKey:k,scalarMult:R,scalarMultBase:L,utils:D,GuBytes:y.slice(),lengths:H})}const Br=BigInt(0),Fe=BigInt(1),zt=BigInt(2),Rr=BigInt(3),Ar=BigInt(5),Or=BigInt(8),Ie=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),In={p:Ie,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Or,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function _n(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Ie,a=t*t%s*t%s,f=re(a,zt,s)*a%s,c=re(f,Fe,s)*t%s,l=re(c,Ar,s)*c%s,u=re(l,e,s)*l%s,b=re(u,n,s)*u%s,g=re(b,r,s)*b%s,S=re(g,o,s)*g%s,v=re(S,o,s)*g%s,d=re(v,e,s)*l%s;return{pow_p_5_8:re(d,zt,s)*t%s,b2:a}}function kr(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const mt=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Bn(t,e){const n=Ie,r=C(e*e*e,n),o=C(r*r*e,n),s=_n(t*o).pow_p_5_8;let i=C(t*r*s,n);const a=C(e*i*i,n),f=i,c=C(i*mt,n),l=a===t,u=a===C(-t,n),b=a===C(-t*mt,n);return l&&(i=f),(u||b)&&(i=c),we(i,n)&&(i=C(-i,n)),{isValid:l||u,value:i}}const xe=xr(In,{uvRatio:Bn}),ye=xe.Fp,Tr=xe.Fn,bt=(()=>{const t=Ie;return _r({P:t,type:"x25519",powPminus2:e=>{const{pow_p_5_8:n,b2:r}=_n(e);return C(re(n,Rr,t)*r,t)},adjustScalarBytes:kr})})(),Pt=mt,Lr=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),jt=t=>Bn(Fe,t),qr=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ur=t=>ye.create(De(t)&qr);class J extends Sr{static BASE=new J(xe.BASE);static ZERO=new J(xe.ZERO);static Fp=ye;static Fn=Tr;constructor(e){super(e)}static fromAffine(e){return new J(xe.fromAffine(e))}assertSame(e){if(!(e instanceof J))throw new Error("RistrettoPoint expected")}init(e){return new J(e)}static fromBytes(e){ce(e,32);const{a:n,d:r}=In,o=Ie,s=I=>ye.create(I),i=Ur(e);if(!or(ye.toBytes(i),e)||we(i,o))throw new Error("invalid ristretto255 encoding 1");const a=s(i*i),f=s(Fe+n*a),c=s(Fe-n*a),l=s(f*f),u=s(c*c),b=s(n*r*l-u),{isValid:g,value:S}=jt(s(b*u)),v=s(S*c),d=s(S*v*b);let y=s((i+i)*v);we(y,o)&&(y=s(-y));const h=s(f*d),m=s(y*h);if(!g||we(m,o)||h===Br)throw new Error("invalid ristretto255 encoding 2");return new J(new xe(y,h,Fe,m))}static fromHex(e){return J.fromBytes(St(e))}toBytes(){let{X:e,Y:n,Z:r,T:o}=this.ep;const s=Ie,i=d=>ye.create(d),a=i(i(r+n)*i(r-n)),f=i(e*n),c=i(f*f),{value:l}=jt(i(a*c)),u=i(l*a),b=i(l*f),g=i(u*b*o);let S;if(we(o*g,s)){let d=i(n*Pt),y=i(e*Pt);e=d,n=y,S=i(u*Lr)}else S=b;we(e*g,s)&&(n=i(-n));let v=i((r-n)*S);return we(v,s)&&(v=i(-v)),ye.toBytes(v)}equals(e){this.assertSame(e);const{X:n,Y:r}=this.ep,{X:o,Y:s}=e.ep,i=c=>ye.create(c),a=i(n*s)===i(r*o),f=i(r*s)===i(n*o);return a||f}is0(){return this.equals(J.ZERO)}}Object.freeze(J.BASE);Object.freeze(J.ZERO);Object.freeze(J.prototype);Object.freeze(J);class Yt{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(vt(e),ce(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),He(o)}update(e){return et(this),this.iHash.update(e),this}digestInto(e){et(this),on(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 Rn=(()=>{const t=((e,n,r)=>new Yt(e,n).update(r).digest());return t.create=(e,n)=>new Yt(e,n),t})();function Cr(t,e,n){return vt(t),n===void 0&&(n=new Uint8Array(t.outputLen)),Rn(t,n,e)}const dt=Uint8Array.of(0),Vt=Uint8Array.of();function Nr(t,e,n,r=32){vt(t),Se(r,"length"),ce(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=Vt:ce(n,void 0,"info");const i=new Uint8Array(s*o),a=Rn.create(t,e),f=a._cloneInto(),c=new Uint8Array(a.outputLen);for(let l=0;l<s;l++)dt[0]=l+1,f.update(l===0?Vt:c).update(n).update(dt).digestInto(c),i.set(c,o*l),a._cloneInto(f);return a.destroy(),f.destroy(),He(c,dt),i.slice(0,r)}const Fr=(t,e,n,r,o)=>Nr(t,Cr(t,e,n),r,o);function Hr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Xt(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 K(t,e,n=""){const r=Hr(t),o=t?.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",f=r?`length=${o}`:`type=${typeof t}`,c=i+"expected Uint8Array"+a+", got "+f;throw r?new RangeError(c):new TypeError(c)}return t}function Kt(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 Dr(t,e,n=!1){K(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&&!$e(t))throw new Error("invalid output, must be aligned")}function Zr(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function be(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function de(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ot(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Rt=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,An=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255,N=Rt?t=>t:t=>An(t)>>>0,$r=t=>{for(let e=0;e<t.length;e++)t[e]=An(t[e]);return t},At=Rt?t=>t:$r;function Mr(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 zr(t,e,n){const r=e,o=n||(()=>[]),s=(a,f)=>r(f,...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,...f)=>r(a,...f),s}const Pr=(t,e)=>{function n(r,...o){if(K(r,void 0,"key"),t.nonceLength!==void 0){const l=o[0];K(l,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength;s&&o[1]!==void 0&&K(o[1],void 0,"AAD");const i=e(r,...o),a=(l,u)=>{if(u!==void 0){if(l!==2)throw new Error("cipher output not supported");K(u,void 0,"output")}};let f=!1;return{encrypt(l,u){if(f)throw new Error("cannot encrypt() twice with same key + nonce");return f=!0,K(l),a(i.encrypt.length,u),i.encrypt(l,u)},decrypt(l,u){if(K(l),s&&l.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return a(i.decrypt.length,u),i.decrypt(l,u)}}}return Object.assign(n,t),n};function jr(t,e,n=!0){if(e===void 0)return new Uint8Array(t);if(K(e,void 0,"output"),e.length!==t)throw new Error('"output" expected Uint8Array of length '+t+", got: "+e.length);if(n&&!$e(e))throw new Error("invalid output, must be aligned");return e}function Yr(t,e,n){Xt(t),Xt(e);const r=new Uint8Array(16),o=ot(r);return o.setBigUint64(0,BigInt(e),n),o.setBigUint64(8,BigInt(t),n),r}function $e(t){return t.byteOffset%4===0}function Me(t){return Uint8Array.from(K(t))}const ve=16,On=new Uint8Array(16),Ue=be(On),Vr=225,Xr=(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^Vr<<24&-(o&1)}},Ye=t=>(t>>>0&255)<<24|(t>>>8&255)<<16|(t>>>16&255)<<8|t>>>24&255|0,Kr=t=>t>64*1024?8:t>1024?4:2;class Gr{blockLen=ve;outputLen=ve;s0=0;s1=0;s2=0;s3=0;finished=!1;destroyed=!1;t;W;windowSize;constructor(e,n){K(e,16,"key"),e=Me(e);const r=ot(e);let o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),a=r.getUint32(12,!1);const f=[];for(let S=0;S<128;S++)f.push({s0:Ye(o),s1:Ye(s),s2:Ye(i),s3:Ye(a)}),{s0:o,s1:s,s2:i,s3:a}=Xr(o,s,i,a);const c=Kr(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,b=this.windowSize=2**c,g=[];for(let S=0;S<u;S++)for(let v=0;v<b;v++){let d=0,y=0,h=0,m=0;for(let I=0;I<c;I++){if(!(v>>>c-I-1&1))continue;const{s0:L,s1:k,s2:q,s3:T}=f[c*S+I];d^=L,y^=k,h^=q,m^=T}g.push({s0:d,s1:y,s2:h,s3:m})}this.t=g}_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 f=0,c=0,l=0,u=0;const b=(1<<s)-1;let g=0;for(const S of[e,n,r,o])for(let v=0;v<4;v++){const d=S>>>8*v&255;for(let y=8/s-1;y>=0;y--){const h=d>>>s*y&b,{s0:m,s1:I,s2:R,s3:L}=i[g*a+h];f^=m,c^=I,l^=R,u^=L,g+=1}}this.s0=f,this.s1=c,this.s2=l,this.s3=u}update(e){Kt(this),K(e),e=Me(e);const n=be(e),r=Math.floor(e.length/ve),o=e.length%ve;for(let s=0;s<r;s++)this._updateBlock(N(n[s*4+0]),N(n[s*4+1]),N(n[s*4+2]),N(n[s*4+3]));return o&&(On.set(e.subarray(r*ve)),this._updateBlock(N(Ue[0]),N(Ue[1]),N(Ue[2]),N(Ue[3])),de(Ue)),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){Kt(this),Dr(e,this,!0),this.finished=!0;const{s0:n,s1:r,s2:o,s3:s}=this,i=be(e);i[0]=n,i[1]=r,i[2]=o,i[3]=s,At(i)}digest(){const e=new Uint8Array(ve);return this.digestInto(e),this.destroy(),e}}const Gt=zr(16,(t,e)=>new Gr(t,e),t=>[t.length]),Et=16,Qr=4,Ve=new Uint8Array(Et),Wr=283;function Jr(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 Ot(t){return t<<1^Wr&-(t>>7)}function Qt(t,e){let n=0;for(;e>0;e>>=1)n^=t&-(e&1),t=Ot(t);return n}const eo=(()=>{const t=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Ot(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 de(t),e})(),to=t=>t<<24|t>>>8,pt=t=>t<<8|t>>>24;function no(t,e){if(t.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((c,l)=>e(t[l])),r=n.map(pt),o=r.map(pt),s=o.map(pt),i=new Uint32Array(256*256),a=new Uint32Array(256*256),f=new Uint16Array(256*256);for(let c=0;c<256;c++)for(let l=0;l<256;l++){const u=c*256+l;i[u]=n[c]^r[l],a[u]=o[c]^s[l],f[u]=t[c]<<8|t[l]}return{sbox:t,sbox2:f,T0:n,T1:r,T2:o,T3:s,T01:i,T23:a}}const kn=no(eo,t=>Qt(t,3)<<24|t<<16|t<<8|Qt(t,2)),ro=(()=>{const t=new Uint8Array(16);for(let e=0,n=1;e<16;e++,n=Ot(n))t[e]=n;return t})();function oo(t){K(t);const e=t.length;Jr(t);const{sbox2:n}=kn,r=[];(!Rt||!$e(t))&&r.push(t=Me(t));const o=At(be(t)),s=o.length,i=f=>Ce(n,f,f,f,f),a=new Uint32Array(e+28);a.set(o);for(let f=s;f<a.length;f++){let c=a[f-1];f%s===0?c=i(to(c))^ro[f/s-1]:s>6&&f%s===4&&(c=i(c)),a[f]=a[f-s]^c}return de(...r),a}function Xe(t,e,n,r,o,s){return t[n<<8&65280|r>>>8&255]^e[o>>>8&65280|s>>>24&255]}function Ce(t,e,n,r,o){return t[e&255|n&65280]|t[r>>>16&255|o>>>16&65280]<<16}function Wt(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=kn;let f=0;e^=t[f++],n^=t[f++],r^=t[f++],o^=t[f++];const c=t.length/4-2;for(let S=0;S<c;S++){const v=t[f++]^Xe(i,a,e,n,r,o),d=t[f++]^Xe(i,a,n,r,o,e),y=t[f++]^Xe(i,a,r,o,e,n),h=t[f++]^Xe(i,a,o,e,n,r);e=v,n=d,r=y,o=h}const l=t[f++]^Ce(s,e,n,r,o),u=t[f++]^Ce(s,n,r,o,e),b=t[f++]^Ce(s,r,o,e,n),g=t[f++]^Ce(s,o,e,n,r);return{s0:l,s1:u,s2:b,s3:g}}function Ke(t,e,n,r,o){K(n,Et,"nonce"),K(r),o=jr(r.length,o);const s=n,i=be(s),a=ot(s),f=be(r),c=be(o),l=e?0:12,u=r.length;let b=a.getUint32(l,e),{s0:g,s1:S,s2:v,s3:d}=Wt(t,N(i[0]),N(i[1]),N(i[2]),N(i[3]));for(let h=0;h+4<=f.length;h+=4)c[h+0]=f[h+0]^N(g),c[h+1]=f[h+1]^N(S),c[h+2]=f[h+2]^N(v),c[h+3]=f[h+3]^N(d),b=b+1>>>0,a.setUint32(l,b,e),{s0:g,s1:S,s2:v,s3:d}=Wt(t,N(i[0]),N(i[1]),N(i[2]),N(i[3]));const y=Et*Math.floor(f.length/Qr);if(y<u){const h=new Uint32Array([g,S,v,d]);At(h);const m=Zr(h);for(let I=y,R=0;I<u;I++,R++)o[I]=r[I]^m[R];de(h)}return o}function so(t,e,n,r,o){const s=o?o.length:0,i=t.create(n,r.length+s);o&&i.update(o);const a=Yr(8*r.length,8*s,e);i.update(r),i.update(a);const f=i.digest();return de(a),f}const Jt=Pr({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,f,c){const l=so(Gt,!1,a,c,r);for(let u=0;u<f.length;u++)l[u]^=f[u];return l}function i(){const a=oo(e),f=Ve.slice(),c=Ve.slice();if(Ke(a,!1,c,c,f),n.length===12)c.set(n);else{const u=Ve.slice();ot(u).setBigUint64(8,BigInt(n.length*8),!1);const g=Gt.create(f).update(n).update(u);g.digestInto(c),g.destroy()}const l=Ke(a,!1,c,Ve);return{xk:a,authKey:f,counter:c,tagMask:l}}return{encrypt(a){const{xk:f,authKey:c,counter:l,tagMask:u}=i(),b=new Uint8Array(a.length+o),g=[f,c,l,u];$e(a)||g.push(a=Me(a)),Ke(f,!1,l,a,b.subarray(0,a.length));const S=s(c,u,b.subarray(0,b.length-o));return g.push(S),b.set(S,a.length),de(...g),b},decrypt(a){const{xk:f,authKey:c,counter:l,tagMask:u}=i(),b=[f,c,u,l];$e(a)||b.push(a=Me(a));const g=a.subarray(0,-o),S=a.subarray(-o),v=s(c,u,g);if(b.push(v),!Mr(v,S))throw de(...b),new Error("aes/gcm: invalid ghash tag");const d=Ke(f,!1,l,g);return de(...b),d}}}),Tn="chainlesschain.remote-session.e2ee.v1",en="chainlesschain://remote-session/pair#",ht=32,io=new TextEncoder,Ln=new TextDecoder;function We(t){return io.encode(t)}function Ge(t){let e="";for(const n of t)e+=String.fromCharCode(n);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ne(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 co(t){const e=new Uint8Array(t);return globalThis.crypto.getRandomValues(e),e}function ao(){const t=bt.utils;return t.randomSecretKey?t.randomSecretKey():t.randomPrivateKey()}function tn(t,e,n){return We(`${Tn}
2
+ ${t}
3
+ ${e}
4
+ ${n}`)}function fo(t,e=Date.now()){if(typeof t!="string"||!t.startsWith(en))throw new Error("Invalid Remote Session pairing URI");let n;try{n=JSON.parse(Ln.decode(Ne(t.slice(en.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 lo{constructor(e,n){if(!e||!n)throw new Error("sessionId and localPeerId are required");this.sessionId=e,this.localPeerId=n,this.secretKey=ao(),this.publicKey=bt.getPublicKey(this.secretKey),this.key=null,this.sendSequence=0,this.receivedSequences=new Map}publicKeyBase64(){return Ge(this.publicKey)}pair(e,n){if(!e||!n)throw new Error("Incomplete peer key material");const r=Ne(e),o=r.length===ht?r:r.slice(-ht);if(o.length!==ht)throw new Error("Invalid X25519 host public key");const s=bt.getSharedSecret(this.secretKey,o),i=qt(We(n));this.key=Fr(qt,s,i,We(`${Tn}:${this.sessionId}`),32)}encrypt(e){if(!this.key)throw new Error("Remote Session is not paired");const n=this.sendSequence+=1,r=co(12),o=Jt(this.key,r,tn(this.sessionId,this.localPeerId,n)).encrypt(We(JSON.stringify(e)));return{v:1,sessionId:this.sessionId,senderId:this.localPeerId,sequence:n,nonce:Ge(r),ciphertext:Ge(o.slice(0,o.length-16)),tag:Ge(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([...Ne(e.ciphertext),...Ne(e.tag)]),o=Jt(this.key,Ne(e.nonce),tn(this.sessionId,e.senderId,e.sequence)).decrypt(r);return this.receivedSequences.set(e.senderId,e.sequence),JSON.parse(Ln.decode(o))}}const qn="chainlesschain://remote-control/pair#";function uo(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 Un(t){return typeof t=="string"&&t.startsWith(qn)}function gt(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 po(t){const e=String(t||"").toLowerCase().replace(/^\[|\]$/g,"");if(!e)return!1;if(e==="localhost"||gt(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 gt(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 gt(`${o>>8&255}.${o&255}.${s>>8&255}.${s&255}`)}return!!(/^fe[89ab]/.test(e)||/^f[cd]/.test(e))}function ho(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:"&&!po(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 go(t,e=Date.now()){if(!Un(t))throw new Error("Not a remote-control pairing URI");let n;try{n=JSON.parse(uo(t.slice(qn.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 ho(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}}const wo=1e3,yo=3e4,mo=20,bo=15e3;let nn=0;function Je(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Eo(){return`web-${Je()}`}const rn=Cn("remoteSession",()=>{const t=ee("idle"),e=ee([]),n=ee(""),r=ee(null),o=ee(null),s=ee(null),i=ee([]),a=ee([]);let f=null,c=null,l=null,u=null,b=!1,g=!1,S=0,v=null,d=null,y=0,h=null,m=null,I=new Map,R=0;function L(){v&&(clearTimeout(v),v=null)}function k(p){const w=p?.payload&&typeof p.payload=="object"?p.payload:p;if(p?.type==="permission.request"){const x=p.requestId||p.approvalId||null;x&&!i.value.some(O=>O.requestId===x)&&(i.value=[...i.value,{requestId:x,tool:p.tool||null,action:p.action||null,detail:p.detail||null,askedAt:p.askedAt||Date.now()}])}else if(p?.type==="permission.resolved"){const x=p.requestId||p.approvalId||null;x&&q(x)}else if(["question_request","question.requested","question"].includes(p?.type)){const x=w?.requestId||w?.id||p?.id||null,O=w?.binding&&typeof w.binding=="object"&&!Array.isArray(w.binding)?w.binding:null;x&&O&&!a.value.some(oe=>oe.requestId===x)&&(a.value=[...a.value,{requestId:x,question:w.question||w.prompt||"",options:Array.isArray(w.options)?w.options:[],multiSelect:w.multiSelect===!0,binding:O}])}else if(["question_resolved","question.resolved"].includes(p?.type)){const x=w?.requestId||w?.id||p?.id||null;x&&T(x)}nn+=1,e.value=[...e.value,{...p,_id:nn,_rxAt:Date.now()}].slice(-200)}function q(p){i.value=i.value.filter(w=>w.requestId!==p)}function T(p){a.value=a.value.filter(w=>w.requestId!==p)}function F(p){!p||!p.requestId||e.value.some(x=>x.type==="permission.resolved"&&x.requestId===p.requestId)||i.value.some(x=>x.requestId===p.requestId)||(i.value=[...i.value,p])}function H(){if(!l)return;const p=new WebSocket(l.relayUrl);f=p,p.addEventListener("open",()=>{p===f&&p.send(JSON.stringify({type:"register",peerId:u,deviceType:"web",deviceInfo:{protocol:"remote-session.e2ee.v1"}}))}),p.addEventListener("message",w=>{p===f&&B(w.data)}),p.addEventListener("close",()=>{p===f&&(f=null,g?t.value="disconnected":P())}),p.addEventListener("error",()=>{p===f&&(n.value="Remote Session relay connection error")})}function P(){if(g||v)return;if(S>=mo){t.value="disconnected",n.value="Remote Session 重连已放弃(中继长时间不可达)— 回到本页可自动重试";return}const p=Math.min(wo*2**S,yo);S+=1,t.value="reconnecting",v=setTimeout(()=>{v=null,g||H()},p)}function D(){o.value!=="relay"||!l||g||f||v||(S=0,n.value="",t.value="connecting",H())}function B(p){try{let w=JSON.parse(typeof p=="string"?p:String(p));if(w.type==="offline-message"&&(w=w.originalMessage||{}),w.type==="registered"){b?t.value="connected":(t.value="pairing",U());return}if(w.type!=="message")return;const x=w.payload;if(!x||x.type!=="remote-session.encrypted")return;const O=c.decrypt(x.envelope);O.type==="pair.accepted"?(b=!0,S=0,t.value="connected"):O.type==="session.revoked"?(g=!0,b=!1,L(),f&&f.close(),f=null,t.value="revoked"):k(O)}catch(w){t.value="error",n.value=w?.message||"Remote Session protocol error"}}function E(p,w){return!f||f.readyState!==WebSocket.OPEN||!l?!1:(f.send(JSON.stringify({type:"message",to:l.hostPeerId,payload:{type:p,...w}})),!0)}function U(){const p={type:"pair.join",remoteSessionId:l.remoteSessionId,token:l.pairingToken};d?.token&&(p.pushToken=d.token,p.pushProvider=d.provider||"web"),E("remote-session.pair",{mobilePeerId:u,mobilePublicKey:c.publicKeyBase64(),envelope:c.encrypt(p)})}function $(p){if(!f||f.readyState!==WebSocket.OPEN||!b)return!1;const w={...p,commandId:p.commandId||Je(),seq:p.seq??++y};return E("remote-session.encrypted",{envelope:c.encrypt(w)})}function M(p){for(const[,w]of I)clearTimeout(w.timer),w.reject(new Error(p));I=new Map}function Z(p,w={}){const x=h;if(!x||x.readyState!==WebSocket.OPEN)return Promise.reject(new Error("not connected"));const O=`web-rc-${++R}-${Je()}`;return new Promise((oe,pe)=>{const Pe=setTimeout(()=>{I.delete(O),pe(new Error(`request "${p}" timed out`))},bo);I.set(O,{resolve:oe,reject:pe,timer:Pe}),x.send(JSON.stringify({id:O,type:p,...w}))})}function G(p){let w;try{w=JSON.parse(typeof p=="string"?p:String(p))}catch{return}const x=w.requestId&&I.has(w.requestId)?w.requestId:w.id&&I.has(w.id)?w.id:null;if(x){const O=I.get(x);I.delete(x),clearTimeout(O.timer),w.type==="error"?O.reject(new Error(w.message||w.payload?.message||"server error")):O.resolve(w);return}if(w.type==="remote-session-event"&&w.remoteSessionId===m?.remoteSessionId){k(w.event||{});return}w.type==="remote-session-revoked"&&w.remoteSessionId===m?.remoteSessionId&&(g=!0,h&&h.close(),h=null,t.value="revoked")}function te(p){m=p,r.value=p.remoteSessionId,o.value="direct",s.value=p.scopes,t.value="connecting";const w=new WebSocket(p.wsUrl);h=w,w.addEventListener("open",async()=>{if(w===h)try{if(t.value="pairing",p.serverToken){const O=await Z("auth",{token:p.serverToken});if(!O.success)throw new Error(O.message||"authentication failed")}const x=await Z("remote-session-join",{remoteSessionId:p.remoteSessionId,token:p.pairingToken});if(w!==h)return;s.value=x.member?.scopes||p.scopes,t.value="connected"}catch(x){if(w!==h)return;t.value="error",n.value=x?.message||"Direct pairing failed";try{w.close()}catch{}h=null}}),w.addEventListener("message",x=>{w===h&&G(x.data)}),w.addEventListener("close",()=>{if(w===h){if(h=null,M("connection closed"),g){t.value!=="revoked"&&(t.value="disconnected");return}(t.value==="connected"||t.value==="pairing")&&(t.value="disconnected",n.value="直连会话已断开 — 配对码为一次性,请在主机端重新生成配对链接")}}),w.addEventListener("error",()=>{w===h&&(n.value="Remote control host connection error")})}function Q(p){return Z("remote-session-publish",{remoteSessionId:m.remoteSessionId,commandId:Je(),seq:++y,event:p}).catch(w=>(n.value=w?.message||"Remote control send failed",null))}function st(p,w={}){Oe();try{if(n.value="",e.value=[],i.value=[],g=!1,y=0,Un(p))return te(go(p)),!0;const x=fo(p);return d=w.pushCredentials||null,u=Eo(),c=new lo(x.remoteSessionId,u),c.pair(x.hostPublicKey,x.pairingToken),l=x,r.value=x.remoteSessionId,o.value="relay",s.value=null,b=!1,S=0,t.value="connecting",H(),!0}catch(x){return t.value="error",n.value=x?.message||"Invalid pairing link",!1}}function _e(p){const w=(p||"").trim();if(w){if(o.value==="direct"){h?Q({type:"prompt",content:w}):n.value="Remote Session is not connected";return}$({type:"prompt",content:w})||(n.value="Remote Session is not connected")}}function ze(p,w){if(!p)return;const x=i.value.find(O=>O.requestId===p)||null;if(q(p),o.value==="direct"){if(!h){n.value="Remote Session is not connected",F(x);return}Q({type:"approval.resolve",requestId:p,answer:w,approved:w}).then(O=>{O===null&&F(x)});return}$({type:"approval.resolve",requestId:p,approved:w})||(n.value="Remote Session is not connected",F(x))}function Be(p,w){if(!p)return;const x=a.value.find(oe=>oe.requestId===p)||null;if(!x?.binding)return;T(p);const O={type:"question.answer",requestId:p,answer:w,binding:x.binding};if(o.value==="direct"){if(!h){n.value="Remote Session is not connected",a.value=[...a.value,x];return}Q(O).then(oe=>{oe===null&&!a.value.some(pe=>pe.requestId===p)&&(a.value=[...a.value,x])});return}$(O)||(n.value="Remote Session is not connected",a.value=[...a.value,x])}function Re(){if(o.value==="direct"){h&&Q({type:"interrupt"});return}$({type:"interrupt"})}function Ae(p,w="web"){if(d=p?{token:p,provider:w}:null,!b)return;const x={type:"push.register"};d?.token&&(x.pushToken=d.token,x.pushProvider=d.provider),$(x)}function Oe(){if(g=!0,b=!1,L(),f)try{f.close()}catch{}if(f=null,h)try{h.close()}catch{}h=null,m=null,M("disconnected"),t.value!=="revoked"&&(t.value="disconnected")}return{status:t,events:e,error:n,remoteSessionId:r,transport:o,scopes:s,pendingApprovals:i,pendingQuestions:a,connect:st,sendPrompt:_e,approve:ze,answerQuestion:Be,interrupt:Re,updatePushCredentials:Ae,resumeReconnect:D,disconnect:Oe}}),vo={__name:"RemoteSession",setup(t,{expose:e}){e();const n=rn();kt(()=>n.resumeReconnect());const{status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:f}=Tt(n),c=ee(""),l=ee(""),u=ee(!1),b=Le(()=>["connecting","pairing","connected","reconnecting"].includes(r.value)),g=Le(()=>({idle:"未连接",connecting:"连接中",pairing:"配对中",connected:"已连接",reconnecting:"重连中",disconnected:"已断开",revoked:"已被撤销",error:"错误"})[r.value]||r.value),S=Le(()=>r.value==="connected"?"green":["connecting","pairing","reconnecting"].includes(r.value)?"blue":["revoked","error"].includes(r.value)?"red":"default"),v=Le(()=>[...o.value].reverse());function d(E){return String(E?.type||"").includes("approval")}function y(E){return E?.content||E?.payload?.content||E?.message||""}function h(E){return E?.requestId||E?.approvalId||""}function m(){n.connect(c.value.trim())}function I(E){u.value=!1,E&&(c.value=E,n.connect(E))}function R(E){const U=typeof E=="string"?E:l.value;n.sendPrompt(U),l.value=""}function L(E,U){n.approve(h(E),U)}function k(E,U){n.approve(E.requestId,U)}function q(E){return String(E&&typeof E=="object"?E.label??E.value??"":E??"")}function T(E){return E&&typeof E=="object"&&"value"in E?E.value:q(E)}function F(E,U){let $=U;if($===void 0){const M=E.options.map(q).filter(Boolean),Z=window.prompt(`${E.question||"Input required"}${M.length?`
5
+ Options: ${M.join(", ")}`:""}`);if(Z===null)return;$=E.multiSelect?Z.split(",").map(G=>G.trim()).filter(Boolean):Z}n.answerQuestion(E.requestId,$)}function H(){n.interrupt()}function P(){n.disconnect()}function D(){s.value=""}const B={store:n,status:r,events:o,error:s,transport:i,pendingApprovals:a,pendingQuestions:f,pairingLink:c,promptText:l,scannerOpen:u,isActive:b,statusLabel:g,statusColor:S,orderedEvents:v,isApproval:d,eventBody:y,requestIdOf:h,connect:m,onScanned:I,send:R,respond:L,respondPermission:k,optionLabel:q,optionValue:T,answerQuestion:F,interrupt:H,disconnect:P,clearError:D,computed:Le,onMounted:kt,ref:ee,get storeToRefs(){return Tt},get LinkOutlined(){return Mn},get ScanOutlined(){return $n},QrScannerModal:Dn,get useRemoteSessionStore(){return rn}};return Object.defineProperty(B,"__isScriptSetup",{enumerable:!1,value:!0}),B}},xo={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},So={key:0,class:"page-sub"},Io={key:0,style:{"word-break":"break-all"}},_o={key:1,class:"page-sub"};function Bo(t,e,n,r,o,s){const i=W("a-tag"),a=W("a-space"),f=W("a-alert"),c=W("a-textarea"),l=W("a-button"),u=W("a-card"),b=W("a-input-search"),g=W("a-spin"),S=W("a-list-item-meta"),v=W("a-list-item"),d=W("a-list"),y=W("a-badge"),h=W("a-empty");return j(),ke("div",null,[Te("div",xo,[e[4]||(e[4]=Te("div",null,[Te("h2",{class:"page-title"},"远程会话"),Te("p",{class:"page-sub"}," 扫码或粘贴桌面端的配对链接,接管一个编码会话(观察 / 提示 / 审批 / 中断)——支持中继 E2EE 链接与局域网直连链接 ")],-1)),A(a,null,{default:_(()=>[r.transport?(j(),ne(i,{key:0,color:"purple"},{default:_(()=>[Y(ge(r.transport==="direct"?"直连":"中继"),1)]),_:1})):he("v-if",!0),A(i,{color:r.statusColor},{default:_(()=>[Y(ge(r.statusLabel),1)]),_:1},8,["color"])]),_:1})]),r.error?(j(),ne(f,{key:0,type:"error","show-icon":"",style:{"margin-bottom":"16px"},message:r.error,closable:"",onClose:r.clearError},null,8,["message"])):he("v-if",!0),r.isActive?(j(),ne(u,{key:2,title:"会话控制",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{extra:_(()=>[A(a,null,{default:_(()=>[A(l,{size:"small",onClick:r.interrupt},{default:_(()=>[...e[8]||(e[8]=[Y("中断",-1)])]),_:1}),A(l,{size:"small",danger:"",onClick:r.disconnect},{default:_(()=>[...e[9]||(e[9]=[Y("断开",-1)])]),_:1})]),_:1})]),default:_(()=>[A(a,{direction:"vertical",style:{width:"100%"},size:8},{default:_(()=>[A(b,{value:r.promptText,"onUpdate:value":e[2]||(e[2]=m=>r.promptText=m),placeholder:"发送提示到远程会话…","enter-button":"发送",disabled:r.status!=="connected",onSearch:r.send},null,8,["value","disabled"]),r.status==="reconnecting"?(j(),ne(g,{key:0,size:"small"},{tip:_(()=>[...e[10]||(e[10]=[Y("正在重连…",-1)])]),_:1})):he("v-if",!0)]),_:1})]),_:1})):(j(),ne(u,{key:1,title:"连接远程会话",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:_(()=>[A(a,{direction:"vertical",style:{width:"100%"},size:12},{default:_(()=>[A(c,{value:r.pairingLink,"onUpdate:value":e[0]||(e[0]=m=>r.pairingLink=m),rows:3,placeholder:"chainlesschain://remote-session/pair#…(中继)或 chainlesschain://remote-control/pair#…(局域网直连)","allow-clear":""},null,8,["value"]),A(a,null,{default:_(()=>[A(l,{type:"primary",disabled:!r.pairingLink.trim(),onClick:r.connect},{icon:_(()=>[A(r.LinkOutlined)]),default:_(()=>[e[5]||(e[5]=Y(" 连接 ",-1))]),_:1},8,["disabled"]),A(l,{onClick:e[1]||(e[1]=m=>r.scannerOpen=!0)},{icon:_(()=>[A(r.ScanOutlined)]),default:_(()=>[e[6]||(e[6]=Y(" 扫码 ",-1))]),_:1})]),_:1}),e[7]||(e[7]=Te("p",{class:"page-sub",style:{margin:"0"}}," 链接为一次性配对码,敏感载荷仅在片段(#)中,不会发往服务器。 ",-1))]),_:1})]),_:1})),r.pendingQuestions.length?(j(),ne(u,{key:3,title:"Agent questions",style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{default:_(()=>[A(d,{size:"small","data-source":r.pendingQuestions,"data-testid":"question-cards"},{renderItem:_(({item:m})=>[A(v,null,{actions:_(()=>[(j(!0),ke(Nn,null,Fn(m.multiSelect?[]:m.options,I=>(j(),ne(l,{key:r.optionLabel(I),size:"small",onClick:R=>r.answerQuestion(m,r.optionValue(I))},{default:_(()=>[Y(ge(r.optionLabel(I)),1)]),_:2},1032,["onClick"]))),128)),m.multiSelect||!m.options.length?(j(),ne(l,{key:0,type:"primary",size:"small",onClick:I=>r.answerQuestion(m)},{default:_(()=>[...e[11]||(e[11]=[Y(" Answer ",-1)])]),_:1},8,["onClick"])):he("v-if",!0)]),default:_(()=>[A(S,{description:m.question||"Input required"},null,8,["description"])]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):he("v-if",!0),r.pendingApprovals.length?(j(),ne(u,{key:4,style:{background:"var(--bg-card)","border-color":"var(--warning-color, #faad14)","margin-bottom":"16px"}},{title:_(()=>[e[12]||(e[12]=Y(" 待审批权限请求 ",-1)),A(y,{count:r.pendingApprovals.length,style:{"margin-left":"8px"}},null,8,["count"])]),default:_(()=>[A(d,{size:"small","data-source":r.pendingApprovals,"data-testid":"approval-cards"},{renderItem:_(({item:m})=>[A(v,null,{actions:_(()=>[A(l,{type:"primary",size:"small",onClick:I=>r.respondPermission(m,!0)},{default:_(()=>[...e[13]||(e[13]=[Y("批准",-1)])]),_:1},8,["onClick"]),A(l,{size:"small",danger:"",onClick:I=>r.respondPermission(m,!1)},{default:_(()=>[...e[14]||(e[14]=[Y("拒绝",-1)])]),_:1},8,["onClick"])]),default:_(()=>[A(S,null,{title:_(()=>[A(a,null,{default:_(()=>[A(i,{color:"orange"},{default:_(()=>[Y(ge(m.tool||"tool"),1)]),_:2},1024),m.action?(j(),ke("span",So,ge(m.action),1)):he("v-if",!0)]),_:2},1024)]),description:_(()=>[m.detail?(j(),ke("code",Io,ge(m.detail),1)):(j(),ke("span",_o,"(无详情)"))]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):he("v-if",!0),A(u,{title:"会话事件",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:_(()=>[r.events.length?(j(),ne(d,{key:1,size:"small","data-source":r.orderedEvents},{renderItem:_(({item:m})=>[A(v,null,Hn({default:_(()=>[A(S,{description:r.eventBody(m)},{title:_(()=>[A(i,{color:r.isApproval(m)?"orange":"blue"},{default:_(()=>[Y(ge(m.type||"event"),1)]),_:2},1032,["color"])]),_:2},1032,["description"])]),_:2},[r.isApproval(m)?{name:"actions",fn:_(()=>[A(l,{type:"link",size:"small",onClick:I=>r.respond(m,!0)},{default:_(()=>[...e[15]||(e[15]=[Y("批准",-1)])]),_:1},8,["onClick"]),A(l,{type:"link",size:"small",danger:"",onClick:I=>r.respond(m,!1)},{default:_(()=>[...e[16]||(e[16]=[Y("拒绝",-1)])]),_:1},8,["onClick"])]),key:"0"}:void 0]),1024)]),_:1},8,["data-source"])):(j(),ne(h,{key:0,description:"尚无事件"}))]),_:1}),A(r.QrScannerModal,{open:r.scannerOpen,onScanned:r.onScanned,onCancel:e[3]||(e[3]=m=>r.scannerOpen=!1)},null,8,["open"])])}const Lo=Zn(vo,[["render",Bo],["__file","/tmp/cc-web-panel-PsNCmy/repo/packages/web-panel/src/views/RemoteSession.vue"]]);export{Lo 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-BEVm0lCS.js";import ve from"./index-ATcSr_2O.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-BHyuUILu.js";import"./pickAttrs-C9YQnEN9.js";import"./initDefaultProps-CYHMs1ag.js";import"./motion-DDB2Ffk5.js";import"./raf-Deuc0E8-.js";import"./index-YjcumOZ4.js";import"./index-Dw1PyYPm.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-BzPwHnw8.js";import"./compact-item-fYZBetMO.js";import"./createContext-BeM-1UVj.js";import"./Compact-BcoXH7m4.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-CN5bhfHB.js";import"./zoom-CUdDxG5M.js";import"./ActionButton-CvcgGl3w.js";import"./vnode-ConCYQlX.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-8U3FtY/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-Cr3uuz0C.js";import ve from"./index-DkH1JvEt.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-DpiN5rzg.js";import"./pickAttrs-qbuqni3y.js";import"./initDefaultProps-DI0Zaf8-.js";import"./motion-BZDKSy3Z.js";import"./raf-Deuc0E8-.js";import"./index-C327pLbw.js";import"./index-CsovTpx9.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-D3Bho_6u.js";import"./compact-item-y74obMEq.js";import"./createContext-C326bjex.js";import"./Compact-BN4xWP9e.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-BCYQmRGv.js";import"./zoom-C_IMGueq.js";import"./ActionButton-CXYdXEUI.js";import"./vnode-BkI6aayc.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-PsNCmy/repo/packages/web-panel/src/views/Reputation.vue"]]);export{ro as default};
@@ -1 +1 @@
1
- import{q as z,f as S,h,a6 as f,i as N}from"./index-BEVm0lCS.js";import{d as _,o as E,f as F,b as o,c as I,r as $}from"./vendor-Bn1JzzAn.js";import{u as M,r as u}from"./responsiveObserve-nBs2Obnk.js";import{u as T}from"./useFlexGapSupport-B_oX_kvJ.js";import{b as V,c as q}from"./index-B3CDgvNW.js";const D=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),P=_({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:D(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=z("row",s),[O,C]=V(a);let m;const v=M(),p=$({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=$({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),g=e=>o(()=>{if(typeof s[e]=="string")return s[e];if(typeof s[e]!="object")return"";for(let t=0;t<u.length;t++){const n=u[t];if(!y.value[n])continue;const r=s[e][n];if(r!==void 0)return r}return""}),b=g("align"),x=g("justify"),w=T();E(()=>{m=v.value.subscribe(e=>{y.value=e;const t=s.gutter||0;(!Array.isArray(t)&&typeof t=="object"||Array.isArray(t)&&(typeof t[0]=="object"||typeof t[1]=="object"))&&(p.value=e)})}),F(()=>{v.value.unsubscribe(m)});const A=o(()=>{const e=[void 0,void 0],{gutter:t=0}=s;return(Array.isArray(t)?t:[t,void 0]).forEach((r,j)=>{if(typeof r=="object")for(let i=0;i<u.length;i++){const c=u[i];if(p.value[c]&&r[c]!==void 0){e[j]=r[c];break}}else e[j]=r}),e});q({gutter:A,supportFlexGap:w,wrap:o(()=>s.wrap)});const k=o(()=>N(a.value,{[`${a.value}-no-wrap`]:s.wrap===!1,[`${a.value}-${x.value}`]:x.value,[`${a.value}-${b.value}`]:b.value,[`${a.value}-rtl`]:R.value==="rtl"},l.class,C.value)),B=o(()=>{const e=A.value,t={},n=e[0]!=null&&e[0]>0?`${e[0]/-2}px`:void 0,r=e[1]!=null&&e[1]>0?`${e[1]/-2}px`:void 0;return n&&(t.marginLeft=n,t.marginRight=n),w.value?t.rowGap=`${e[1]}px`:r&&(t.marginTop=r,t.marginBottom=r),t});return()=>{var e;return O(I("div",S(S({},l),{},{class:k.value,style:h(h({},B.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{P as A};
1
+ import{q as z,f as S,h,a6 as f,i as N}from"./index-Cr3uuz0C.js";import{d as _,o as E,f as F,b as o,c as I,r as $}from"./vendor-Bn1JzzAn.js";import{u as M,r as u}from"./responsiveObserve-Bas3eQ2K.js";import{u as T}from"./useFlexGapSupport-Dp5dybLM.js";import{b as V,c as q}from"./index-BY8-nCgs.js";const D=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),P=_({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:D(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=z("row",s),[O,C]=V(a);let m;const v=M(),p=$({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=$({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),g=e=>o(()=>{if(typeof s[e]=="string")return s[e];if(typeof s[e]!="object")return"";for(let t=0;t<u.length;t++){const n=u[t];if(!y.value[n])continue;const r=s[e][n];if(r!==void 0)return r}return""}),b=g("align"),x=g("justify"),w=T();E(()=>{m=v.value.subscribe(e=>{y.value=e;const t=s.gutter||0;(!Array.isArray(t)&&typeof t=="object"||Array.isArray(t)&&(typeof t[0]=="object"||typeof t[1]=="object"))&&(p.value=e)})}),F(()=>{v.value.unsubscribe(m)});const A=o(()=>{const e=[void 0,void 0],{gutter:t=0}=s;return(Array.isArray(t)?t:[t,void 0]).forEach((r,j)=>{if(typeof r=="object")for(let i=0;i<u.length;i++){const c=u[i];if(p.value[c]&&r[c]!==void 0){e[j]=r[c];break}}else e[j]=r}),e});q({gutter:A,supportFlexGap:w,wrap:o(()=>s.wrap)});const k=o(()=>N(a.value,{[`${a.value}-no-wrap`]:s.wrap===!1,[`${a.value}-${x.value}`]:x.value,[`${a.value}-${b.value}`]:b.value,[`${a.value}-rtl`]:R.value==="rtl"},l.class,C.value)),B=o(()=>{const e=A.value,t={},n=e[0]!=null&&e[0]>0?`${e[0]/-2}px`:void 0,r=e[1]!=null&&e[1]>0?`${e[1]/-2}px`:void 0;return n&&(t.marginLeft=n,t.marginRight=n),w.value?t.rowGap=`${e[1]}px`:r&&(t.marginTop=r,t.marginBottom=r),t});return()=>{var e;return O(I("div",S(S({},l),{},{class:k.value,style:h(h({},B.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{P as A};