chainlesschain 0.162.122 → 0.162.123

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 (182) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/AIOps-C5CSd8pY.js +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-Bqvaz1Yj.js → ActionButton-BugJtiJc.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-BhCnMbKz.js → Analytics-CzxpcV9E.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-cs0TRZya.js → AppLayout-Cb0eHetM.js} +3 -3
  7. package/src/assets/web-panel/assets/Audit-qjq04wh8.js +1 -0
  8. package/src/assets/web-panel/assets/{Backup-BOglo5g6.js → Backup-C2Y_XNBA.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-4qhQiJfI.js → BaseInput-CZ0c7QHk.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-DUFX3Mv4.js → Chat-CaKDT3wV.js} +6 -6
  11. package/src/assets/web-panel/assets/{ChatBubbleRenderer-LWgyWUF_.js → ChatBubbleRenderer-TeKnMwPj.js} +1 -1
  12. package/src/assets/web-panel/assets/{Checkbox-C4eyD_nB.js → Checkbox-C6-Iu3bG.js} +1 -1
  13. package/src/assets/web-panel/assets/Codegen-TGLFk6P1.js +1 -0
  14. package/src/assets/web-panel/assets/{Col-3eHStfvJ.js → Col-DVBrO7AN.js} +1 -1
  15. package/src/assets/web-panel/assets/{Community-DFbKjEgh.js → Community-tg6-Rik1.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compact-D5str1h-.js → Compact-DM4ZgFSE.js} +1 -1
  17. package/src/assets/web-panel/assets/Compliance-DFeWryxt.js +1 -0
  18. package/src/assets/web-panel/assets/{Cowork-Cdliboj6.js → Cowork-CJwiWkUY.js} +2 -2
  19. package/src/assets/web-panel/assets/{Cron-Bfmwl6iZ.js → Cron-dsdXHvrO.js} +2 -2
  20. package/src/assets/web-panel/assets/Crosschain-p7_5Gq-7.js +1 -0
  21. package/src/assets/web-panel/assets/{DID-xqi72kjo.js → DID-BB_LBLYT.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dashboard-4l68QdSQ.js → Dashboard-Bh_HkNSD.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dropdown-C2wsZOdn.js → Dropdown-dTFtVnKk.js} +1 -1
  24. package/src/assets/web-panel/assets/{EmailListRenderer-CWh_fKmI.js → EmailListRenderer-yqdttzXV.js} +1 -1
  25. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CHK5rapA.js → FamilyGuardDashboard-DfX3YpUU.js} +1 -1
  26. package/src/assets/web-panel/assets/Federation-BJApfPV4.js +1 -0
  27. package/src/assets/web-panel/assets/{FormItemContext-lLOEHvAb.js → FormItemContext-DNMwIh7X.js} +1 -1
  28. package/src/assets/web-panel/assets/{GenericCardRenderer-CaDh2XiY.js → GenericCardRenderer-C-T8UQf0.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-B9SmGPMU.js → Git-SURFhkLi.js} +2 -2
  30. package/src/assets/web-panel/assets/Governance-B4u_KsfE.js +1 -0
  31. package/src/assets/web-panel/assets/Inference-2kr_rKQd.js +1 -0
  32. package/src/assets/web-panel/assets/{KnowledgeGraph-zYwypnwu.js → KnowledgeGraph-h-nL7J6x.js} +1 -1
  33. package/src/assets/web-panel/assets/{Logs-D6owai5o.js → Logs-DjuWREBJ.js} +2 -2
  34. package/src/assets/web-panel/assets/Marketplace-W9Iz8b2m.js +1 -0
  35. package/src/assets/web-panel/assets/{McpTools-Dxlypa0R.js → McpTools-D0waMomb.js} +4 -4
  36. package/src/assets/web-panel/assets/{Memory-BxBHR7eW.js → Memory-Ci768GQ3.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileBridge-Car9kLtE.js → MobileBridge-4jAehfcz.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileProjects-59gyfK6T.js → MobileProjects-RpFuAiNz.js} +1 -1
  39. package/src/assets/web-panel/assets/{Mtc-2YBBawFi.js → Mtc-DJdw8btT.js} +2 -2
  40. package/src/assets/web-panel/assets/{MtcAudit-DczAeHfM.js → MtcAudit-Dc596XgH.js} +2 -2
  41. package/src/assets/web-panel/assets/{Multisig-CPxyt7a-.js → Multisig--Qs7eGsH.js} +3 -3
  42. package/src/assets/web-panel/assets/NLProgramming-D3y71FDX.js +1 -0
  43. package/src/assets/web-panel/assets/{Notes-tHRMLOQ3.js → Notes-uMxjj66_.js} +3 -3
  44. package/src/assets/web-panel/assets/{NotificationSettings-DxIYUWPW.js → NotificationSettings-C4ikBOsm.js} +1 -1
  45. package/src/assets/web-panel/assets/{OrderTableRenderer-BMpVfQkg.js → OrderTableRenderer-BpmdunAz.js} +1 -1
  46. package/src/assets/web-panel/assets/{Organization-BBsie-kN.js → Organization-BBEmFNGM.js} +4 -4
  47. package/src/assets/web-panel/assets/{Overflow-DrdVw_fC.js → Overflow-B-4_IpbB.js} +1 -1
  48. package/src/assets/web-panel/assets/{P2P-CMBYxejX.js → P2P-DdOf9BZs.js} +2 -2
  49. package/src/assets/web-panel/assets/PdhVaultBrowser-DDU2Zc9Q.js +7 -0
  50. package/src/assets/web-panel/assets/{Permissions-W4kD06Cj.js → Permissions-B1ebgevF.js} +4 -4
  51. package/src/assets/web-panel/assets/{PersonalDataHub-nuqNTK2w.js → PersonalDataHub-B3WcvKni.js} +2 -2
  52. package/src/assets/web-panel/assets/Pipeline-DASuPDc3.js +1 -0
  53. package/src/assets/web-panel/assets/Privacy-DnixwmhJ.js +1 -0
  54. package/src/assets/web-panel/assets/{ProjectInit-hCWXNnGJ.js → ProjectInit-BQjMDkML.js} +2 -2
  55. package/src/assets/web-panel/assets/{ProjectSettings--BzvEaxE.js → ProjectSettings-dHyZ3SxW.js} +2 -2
  56. package/src/assets/web-panel/assets/{Projects-C6l6z4Mo.js → Projects-BGWEJIVT.js} +1 -1
  57. package/src/assets/web-panel/assets/{Providers-kEifEWLb.js → Providers-Bl0dw6cI.js} +1 -1
  58. package/src/assets/web-panel/assets/{QuickAsk-B6oLUYKR.js → QuickAsk-BDrk7l3t.js} +1 -1
  59. package/src/assets/web-panel/assets/Recommend-BPKof_CA.js +1 -0
  60. package/src/assets/web-panel/assets/Reputation-6MNJLklK.js +1 -0
  61. package/src/assets/web-panel/assets/{Row-W6LSmdzh.js → Row-DmGJwpfd.js} +1 -1
  62. package/src/assets/web-panel/assets/{RssFeed-DJi97lWh.js → RssFeed-9-Fxh3_w.js} +2 -2
  63. package/src/assets/web-panel/assets/Search-CCHjey_D.js +1 -0
  64. package/src/assets/web-panel/assets/{Security-BtawKhmm.js → Security-D6CySV7r.js} +3 -3
  65. package/src/assets/web-panel/assets/{Services-BdCe11of.js → Services-Co8Mk8qE.js} +2 -2
  66. package/src/assets/web-panel/assets/{Skeleton-C_wcDxpN.js → Skeleton-BdON8M-1.js} +1 -1
  67. package/src/assets/web-panel/assets/{Skills-n2GgEfQ1.js → Skills-CEJE1Go1.js} +1 -1
  68. package/src/assets/web-panel/assets/Sla-BSxFvFX9.js +1 -0
  69. package/src/assets/web-panel/assets/{SpeechSettings-D6qCWpan.js → SpeechSettings-C3rShYlV.js} +1 -1
  70. package/src/assets/web-panel/assets/{SyncSettings-BBbldyeR.js → SyncSettings-52NXsfyj.js} +2 -2
  71. package/src/assets/web-panel/assets/{Tasks-DMkBOCW-.js → Tasks-He7CweW6.js} +1 -1
  72. package/src/assets/web-panel/assets/{Templates-DbLImR1I.js → Templates-UtjBlJIO.js} +1 -1
  73. package/src/assets/web-panel/assets/Tenant-Dd5XNbYF.js +1 -0
  74. package/src/assets/web-panel/assets/{Terminal-BjKUkiR1.js → Terminal-pFyh42cu.js} +2 -2
  75. package/src/assets/web-panel/assets/{TimelineRenderer-Drf_B0al.js → TimelineRenderer-BdfqBQmM.js} +1 -1
  76. package/src/assets/web-panel/assets/Tokens-CsgNsrdQ.js +1 -0
  77. package/src/assets/web-panel/assets/{Trigger-CNUB_qRQ.js → Trigger-Dt_N_rvo.js} +1 -1
  78. package/src/assets/web-panel/assets/Trust-B1lJzsPn.js +1 -0
  79. package/src/assets/web-panel/assets/{UkeySign-7o1O51qV.js → UkeySign-CW8YdFxg.js} +1 -1
  80. package/src/assets/web-panel/assets/{VideoEditing-Ccb1cTxo.js → VideoEditing-CU6o7qvp.js} +1 -1
  81. package/src/assets/web-panel/assets/{Wallet-EMf9MlLK.js → Wallet-DPxjEhbN.js} +4 -4
  82. package/src/assets/web-panel/assets/{WebAuthn-DOYoaCmi.js → WebAuthn-CuJ29YAF.js} +3 -3
  83. package/src/assets/web-panel/assets/{WorkflowEditor-BcFvWc2d.js → WorkflowEditor-BcCA2U8H.js} +1 -1
  84. package/src/assets/web-panel/assets/{chat-CPvCSHY4.js → chat-Cxl5DGsc.js} +1 -1
  85. package/src/assets/web-panel/assets/{colors-Ca7MoLtb.js → colors-FS_7Xggs.js} +1 -1
  86. package/src/assets/web-panel/assets/community-parser-Cuyslaku.js +3 -0
  87. package/src/assets/web-panel/assets/{compact-item-B9AUAVCQ.js → compact-item-BzXjd3wJ.js} +1 -1
  88. package/src/assets/web-panel/assets/{createContext-CnMJHqHw.js → createContext-DhF9bi_u.js} +1 -1
  89. package/src/assets/web-panel/assets/devWarning-B1j78JeH.js +1 -0
  90. package/src/assets/web-panel/assets/{hasIn-Bevd8pXd.js → hasIn-Y1a0aV9N.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-D9VR1tES.js → index--fcP34eT.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-BcRDjaEi.js → index-1iacQgo5.js} +3 -3
  93. package/src/assets/web-panel/assets/{index-BV1U7tR6.js → index-1khPb4ZS.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-BzmhHe0m.js → index-B48PZ-xM.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BUlsrbu2.js → index-BBtULjKY.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CVxhWXMd.js → index-BNmWkPqm.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-PidVLx0u.js → index-BTltEtoG.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BFkrnvs_.js → index-B_Z0PHC0.js} +1 -1
  99. package/src/assets/web-panel/assets/index-BaN6wKWx.js +1 -0
  100. package/src/assets/web-panel/assets/{index-HdGuA1pS.js → index-BepInmSi.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-p1rI3d66.js → index-BllceSdr.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CGEc6vlv.js → index-BnvaUocg.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-aB7GLimB.js → index-Bt_0ygjA.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CQKVKyjf.js → index-BzQkdgQW.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C3biz3RB.js → index-C2S8McM1.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-ienIjr7_.js → index-CELVZPNt.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Dnk8TOm3.js → index-CETvk0NN.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BM1tI3g5.js → index-CRSkKj9M.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-0DtNS6oi.js → index-Cgo1J_Kf.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DW3rTBy_.js → index-Ci7PSoQn.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DPk2HXTA.js → index-Cn9lbqaS.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CtIv89mI.js → index-CuTKOay7.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-C5i4gKvN.js → index-CxYHV8nb.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-B619_m_T.js → index-CzlCP4jP.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-ecThTNhE.js → index-D3IVAG9l.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-kUeSjyHt.js → index-DLyIxnjc.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BwDJvHfR.js → index-DUcVF8e6.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-tUD_CWx-.js → index-DVTex5M8.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CvhLkwFR.js → index-DZJMsVI1.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-gR1xGRvy.js → index-DfaSKEVD.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BGBbFzIJ.js → index-DgHWZVjv.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B3zlqc60.js → index-Dmjxpu0L.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-2KMpdEzs.js → index-DxGVbuqr.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DAjYLhik.js → index-GCd5hs58.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-Ct3wP67S.js → index-JUukFpxi.js} +1 -1
  126. package/src/assets/web-panel/assets/index-N7JKRLCC.js +1 -0
  127. package/src/assets/web-panel/assets/{index-Cd62bwRd.js → index-Na733kBa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DTxmgfz2.js → index-Sl-sLj3T.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CAKYScOz.js → index-uLoKviUT.js} +1 -1
  130. package/src/assets/web-panel/assets/{initDefaultProps-dsKHYCPH.js → initDefaultProps-D6QmlnQ-.js} +1 -1
  131. package/src/assets/web-panel/assets/{motion-DdPCK2zh.js → motion-BHrTGY1_.js} +1 -1
  132. package/src/assets/web-panel/assets/{move-Bi0bmOjg.js → move-Bpph6B_N.js} +1 -1
  133. package/src/assets/web-panel/assets/mtc-parser-CEQffxds.js +1 -0
  134. package/src/assets/web-panel/assets/{omit-DCrBiySU.js → omit-Dx0YMbWn.js} +1 -1
  135. package/src/assets/web-panel/assets/{pickAttrs-CcJuqfya.js → pickAttrs-D-a8Fm6C.js} +1 -1
  136. package/src/assets/web-panel/assets/{placementArrow-DFGuzth-.js → placementArrow-DXFSVgxv.js} +1 -1
  137. package/src/assets/web-panel/assets/{responsiveObserve-B_WDlgvI.js → responsiveObserve-CxhQ1EaK.js} +1 -1
  138. package/src/assets/web-panel/assets/{slide-BSFabVgO.js → slide-IlBI0XU8.js} +1 -1
  139. package/src/assets/web-panel/assets/{statusUtils-CebvsGH8.js → statusUtils-COoXVzje.js} +1 -1
  140. package/src/assets/web-panel/assets/{styleChecker-CMuE7NWy.js → styleChecker-DCuq89M_.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFlexGapSupport-RWGVgZNu.js → useFlexGapSupport-tfNE1ALO.js} +1 -1
  142. package/src/assets/web-panel/assets/{useFs-srxzzfG_.js → useFs-DD4bzBkU.js} +1 -1
  143. package/src/assets/web-panel/assets/{usePersonalDataHub-B5OwxZuK.js → usePersonalDataHub-DVkH1hbT.js} +1 -1
  144. package/src/assets/web-panel/assets/{vnode-CXOEebAH.js → vnode-D1ZmXyxM.js} +1 -1
  145. package/src/assets/web-panel/assets/{zoom-DKNwqG2v.js → zoom-DblBUHfi.js} +1 -1
  146. package/src/assets/web-panel/index.html +1 -1
  147. package/src/harness/mcp-client.js +67 -6
  148. package/src/lib/credential-guard.js +284 -0
  149. package/src/lib/ensure-utf8.js +6 -1
  150. package/src/lib/hook-manager.js +15 -6
  151. package/src/lib/mcp-client.js +1 -0
  152. package/src/lib/mcp-oauth.js +35 -4
  153. package/src/lib/repl-rewind.js +58 -0
  154. package/src/lib/repl-vim.js +13 -1
  155. package/src/lib/settings-hooks.cjs +12 -3
  156. package/src/repl/agent-repl.js +52 -2
  157. package/src/runtime/agent-core.js +76 -0
  158. package/src/assets/web-panel/assets/AIOps-BmS46GrQ.js +0 -1
  159. package/src/assets/web-panel/assets/Audit-AwLNQzvX.js +0 -1
  160. package/src/assets/web-panel/assets/Codegen-B9SRqAqh.js +0 -1
  161. package/src/assets/web-panel/assets/Compliance-DDYPQDiG.js +0 -1
  162. package/src/assets/web-panel/assets/Crosschain-Bfo6RvSg.js +0 -1
  163. package/src/assets/web-panel/assets/Federation-JpiE2iKR.js +0 -1
  164. package/src/assets/web-panel/assets/Governance-B3ODoSO2.js +0 -1
  165. package/src/assets/web-panel/assets/Inference-C_jP_nlz.js +0 -1
  166. package/src/assets/web-panel/assets/Marketplace-umRB80w4.js +0 -1
  167. package/src/assets/web-panel/assets/NLProgramming-DvKJ8imu.js +0 -1
  168. package/src/assets/web-panel/assets/PdhVaultBrowser-BBHzSaeq.js +0 -7
  169. package/src/assets/web-panel/assets/Pipeline-DzCX3yHy.js +0 -1
  170. package/src/assets/web-panel/assets/Privacy-9ENAJQOC.js +0 -1
  171. package/src/assets/web-panel/assets/Recommend-BIEMGN0q.js +0 -1
  172. package/src/assets/web-panel/assets/Reputation-D-9AEaRr.js +0 -1
  173. package/src/assets/web-panel/assets/Search-DOEB2utf.js +0 -1
  174. package/src/assets/web-panel/assets/Sla-D5WfrvLP.js +0 -1
  175. package/src/assets/web-panel/assets/Tenant-B0qM4w6Z.js +0 -1
  176. package/src/assets/web-panel/assets/Tokens-DgCx2Bfa.js +0 -1
  177. package/src/assets/web-panel/assets/Trust-JQUTjXXI.js +0 -1
  178. package/src/assets/web-panel/assets/community-parser-CO25nZFt.js +0 -3
  179. package/src/assets/web-panel/assets/devWarning-vFgm_Ssk.js +0 -1
  180. package/src/assets/web-panel/assets/index-BGUjPh7h.js +0 -1
  181. package/src/assets/web-panel/assets/index-Cx-wP5XE.js +0 -1
  182. package/src/assets/web-panel/assets/mtc-parser-BbAbUB-9.js +0 -1
@@ -1 +0,0 @@
1
- import{I as p,J as f,U as C,R as u,c as o,K as r,V as b,o as ae,a as Y,b as U,r as y,P as c,Q as _,F as x,Z as V,S as T}from"./vendor-BvqAck49.js";import{_ as me,u as le,b as oe,d as h}from"./index-BcRDjaEi.js";import{s as ve}from"./community-parser-CO25nZFt.js";import{a0 as fe,a$ as be,$ as ke,f as _e,a9 as ye,z as ge,R as he}from"./icons-DP3uiYxy.js";function $(t){const l=ve(t);if(!l)return null;try{return JSON.parse(l)}catch{}const i=l.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Se=Object.freeze(["draft","published","deprecated","suspended"]),Ce=Object.freeze(["pending","running","success","failed","timeout"]);function B(t,l=0){return typeof t=="number"&&Number.isFinite(t)?t:l}function xe(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,name:String(t.name||""),version:String(t.version||""),description:String(t.description||""),endpoint:t.endpoint||"",pricing:t.pricing??null,status:String(t.status||"draft").toLowerCase(),owner:t.owner||"",invocationCount:B(t.invocationCount??t.invocation_count,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:l}:null}function re(t){const l=$(t);return Array.isArray(l)?l.map(xe).filter(Boolean):[]}function Fe(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,serviceId:t.serviceId||t.service_id||"",callerId:t.callerId||t.caller_id||"",input:t.input??null,output:t.output??null,status:String(t.status||"success").toLowerCase(),durationMs:t.durationMs??t.duration_ms??null,error:t.error||"",createdAt:t.createdAt??t.created_at??null,_idx:l}:null}function ne(t){const l=$(t);return Array.isArray(l)?l.map(Fe).filter(Boolean):[]}function se(t){const l={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},i=$(t);if(!i||typeof i!="object"||Array.isArray(i))return l;l.total=B(i.total,0),l.successRate=B(i.successRate??i.success_rate,0),l.avgDurationMs=B(i.avgDurationMs??i.avg_duration_ms,0),l.scopedToService=i.scopedToService??i.scoped_to_service??null;const e=i.counts&&typeof i.counts=="object"?i.counts:{};for(const A of Object.keys(l.counts))l.counts[A]=B(e[A],0);return l}function we(t){if(t==null||t==="")return"—";const l=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(l.getTime())?String(t):l.toLocaleString("zh-CN",{hour12:!1})}const Te={__name:"Marketplace",setup(t,{expose:l}){l();const i=le(),{t:e}=oe(),A=y(!1),J=y(!1),O=y(!1),I=y([]),F=y([]),w=y({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),R=y("services"),N=y(""),L=y(""),E=y(null),K=y(!1),M=y(!1),k=Y({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),m=Y({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),P=y(""),W=U(()=>[{title:e("marketplace.serviceCols.name"),key:"name"},{title:e("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:e("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:e("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:e("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:e("marketplace.serviceCols.action"),key:"action",width:"180px"}]),Z=U(()=>[{title:e("marketplace.invocationCols.service"),key:"service"},{title:e("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:e("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:e("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:e("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),j=U(()=>I.value.filter(n=>n.status==="published").length),D=U(()=>w.value.successRate*100),H=U(()=>{let n=I.value;if(N.value&&(n=n.filter(s=>s.status===N.value)),L.value){const s=L.value.toLowerCase();n=n.filter(v=>v.name.toLowerCase().includes(s))}return n}),z=U(()=>E.value?F.value.filter(n=>n.serviceId===E.value):F.value);function g(n){const s=`marketplace.serviceStatusLabels.${n}`,v=e(s);return v===s?n:v}function q(n){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[n]||"default"}function Q(n){const s=`marketplace.invocationStatusLabels.${n}`,v=e(s);return v===s?n:v}function G(n){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[n]||"default"}function X(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function a(n,s){return n?n.length>s?n.slice(0,s)+"...":n:""}function d(n){const s=I.value.find(v=>v.id===n);return s?s.name:e("marketplace.deletedService")}async function S(){A.value=!0;try{const[n,s,v]=await Promise.all([i.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);I.value=re(n.output),F.value=ne(s.output),w.value=se(v.output)}catch(n){h.error(e("marketplace.msg.loadFailed")+": "+(n?.message||n))}finally{A.value=!1}}async function ie(){const n=k.name.trim();if(!n){h.warning(e("marketplace.msg.publishEmpty"));return}J.value=!0;try{const s=[`marketplace publish "${n.replace(/"/g,'\\"')}"`];k.version.trim()&&s.push(`--version "${k.version.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&s.push(`--description "${k.description.trim().replace(/"/g,'\\"')}"`),k.endpoint.trim()&&s.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.owner.trim()&&s.push(`--owner "${k.owner.trim().replace(/"/g,'\\"')}"`),s.push(`--status ${k.status}`),s.push("--json");const{output:v}=await i.execute(s.join(" "),15e3);if(/error|failed|失败/i.test(v)&&!/"id"/.test(v)){h.error(e("marketplace.msg.publishFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.publishSuccess")),K.value=!1,ee(),await S()}catch(s){h.error(e("marketplace.msg.publishFailed")+": "+(s?.message||s))}finally{J.value=!1}}function ce(n){if(n.status!=="published"){h.warning(e("marketplace.msg.recordOnlyPublished"));return}m.serviceId=n.id,m.caller="",m.status="success",m.durationMs=null,m.error="",P.value=n.name,M.value=!0}async function ue(){O.value=!0;try{const n=[`marketplace record ${m.serviceId}`];m.caller.trim()&&n.push(`--caller "${m.caller.trim().replace(/"/g,'\\"')}"`),n.push(`--status ${m.status}`),m.durationMs!=null&&n.push(`--duration-ms ${m.durationMs}`),(m.status==="failed"||m.status==="timeout")&&m.error.trim()&&n.push(`--error "${m.error.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:s}=await i.execute(n.join(" "),15e3);if(/error|failed|失败/i.test(s)&&!/"id"/.test(s)){h.error(e("marketplace.msg.recordFailed")+": "+s.slice(0,120));return}h.success(e("marketplace.msg.recordSuccess")),M.value=!1,R.value="invocations",await S()}catch(n){h.error(e("marketplace.msg.recordFailed")+": "+(n?.message||n))}finally{O.value=!1}}async function de(n,s){if(s!==n.status)try{const{output:v}=await i.execute(`marketplace status ${n.id} ${s} --json`,1e4);if(/error|invalid|失败/i.test(v)&&!/"status"/.test(v)){h.error(e("marketplace.msg.transitionFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.transitionSuccess",{label:g(s)})),await S()}catch(v){h.error(e("marketplace.msg.transitionFailed")+": "+(v?.message||v))}}function ee(){k.name="",k.version="",k.description="",k.endpoint="",k.owner="",k.status="published"}function pe(){m.serviceId="",m.caller="",m.status="success",m.durationMs=null,m.error="",P.value=""}ae(S);const te={ws:i,t:e,loading:A,publishing:J,recording:O,services:I,invocations:F,stats:w,activeTab:R,statusFilter:N,nameFilter:L,invocationServiceFilter:E,showPublishModal:K,showRecordModal:M,publishForm:k,recordForm:m,recordTargetName:P,serviceColumns:W,invocationColumns:Z,publishedCount:j,successRatePct:D,filteredServices:H,filteredInvocations:z,statusLabel:g,serviceStatusColor:q,invocationStatusLabel:Q,invocationStatusColor:G,shortDid:X,truncate:a,serviceName:d,loadAll:S,publishService:ie,openRecord:ce,recordInvocation:ue,transitionStatus:de,resetPublishForm:ee,resetRecordForm:pe,ref:y,computed:U,onMounted:ae,reactive:Y,get ReloadOutlined(){return he},get CloudUploadOutlined(){return ge},get AppstoreOutlined(){return ye},get CheckCircleOutlined(){return _e},get ThunderboltOutlined(){return ke},get RiseOutlined(){return be},get ClockCircleOutlined(){return fe},get message(){return h},get useI18n(){return oe},get useWsStore(){return le},get parseServices(){return re},get parseInvocations(){return ne},get parseStats(){return se},get formatMarketplaceTime(){return we},get SERVICE_STATUSES(){return Se},get INVOCATION_STATUSES(){return Ce}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Oe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Re={class:"page-title"},Ae={class:"page-sub"},Ie={class:"filter-bar"},Me={style:{color:"var(--text-primary)","font-weight":"500"}},ze={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ue={key:2,style:{color:"#722ed1","font-weight":"500"}},Le={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Ne={key:1,style:{color:"var(--text-muted)"}},Ee={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={class:"filter-bar"},De={style:{color:"var(--text-primary)"}},Ve={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Be={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Je={key:1,style:{color:"var(--text-muted)"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},We={key:1,style:{color:"var(--text-muted)"}},Ze={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Qe(t,l,i,e,A,J){const O=p("a-button"),I=p("a-space"),F=p("a-statistic"),w=p("a-card"),R=p("a-col"),N=p("a-row"),L=p("a-radio-button"),E=p("a-radio-group"),K=p("a-input-search"),M=p("a-tag"),k=p("a-menu-item"),m=p("a-menu"),P=p("a-dropdown"),W=p("a-table"),Z=p("a-tab-pane"),j=p("a-select-option"),D=p("a-select"),H=p("a-tabs"),z=p("a-input"),g=p("a-form-item"),q=p("a-textarea"),Q=p("a-form"),G=p("a-modal"),X=p("a-input-number");return c(),f("div",null,[C("div",Oe,[C("div",null,[C("h2",Re,u(t.$t("marketplace.title")),1),C("p",Ae,u(t.$t("marketplace.subtitle")),1)]),o(I,null,{default:r(()=>[o(O,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[o(e.ReloadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),o(O,{type:"primary",onClick:l[0]||(l[0]=a=>e.showPublishModal=!0)},{icon:r(()=>[o(e.CloudUploadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.publish")),1)]),_:1})]),_:1})]),b(" Stats overview "),o(N,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[o(R,{xs:12,sm:8,lg:5},{default:r(()=>[o(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[o(F,{title:t.$t("marketplace.stats.total"),value:e.services.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[o(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:r(()=>[o(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[o(F,{title:t.$t("marketplace.stats.published"),value:e.publishedCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:r(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:r(()=>[o(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[o(F,{title:t.$t("marketplace.stats.invocations"),value:e.stats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[o(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:r(()=>[o(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[o(F,{title:t.$t("marketplace.stats.successRate"),value:e.successRatePct,suffix:"%",precision:1,"value-style":{color:e.stats.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:r(()=>[o(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(R,{xs:24,sm:8,lg:4},{default:r(()=>[o(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[o(F,{title:t.$t("marketplace.stats.avgDuration"),value:e.stats.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[o(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),b(" Tabs "),o(H,{activeKey:e.activeTab,"onUpdate:activeKey":l[4]||(l[4]=a=>e.activeTab=a),class:"market-tabs"},{default:r(()=>[b(" ── Services tab ──────────────────────────────────────────── "),o(Z,{key:"services",tab:t.$t("marketplace.tabs.services")},{default:r(()=>[C("div",Ie,[o(E,{value:e.statusFilter,"onUpdate:value":l[1]||(l[1]=a=>e.statusFilter=a),size:"small","button-style":"solid"},{default:r(()=>[o(L,{value:""},{default:r(()=>[_(u(t.$t("marketplace.filter.all")),1)]),_:1}),(c(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(c(),T(L,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(K,{value:e.nameFilter,"onUpdate:value":l[2]||(l[2]=a=>e.nameFilter=a),placeholder:t.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),o(W,{columns:e.serviceColumns,"data-source":e.filteredServices,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="name"?(c(),f(x,{key:0},[C("span",Me,u(d.name),1),d.version?(c(),T(M,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:r(()=>[_(" v"+u(d.version),1)]),_:2},1024)):b("v-if",!0),d.description?(c(),f("div",ze,u(e.truncate(d.description,80)),1)):b("v-if",!0)],64)):b("v-if",!0),a.key==="status"?(c(),T(M,{key:1,color:e.serviceStatusColor(d.status)},{default:r(()=>[_(u(e.statusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="invocationCount"?(c(),f("span",Ue,u(d.invocationCount),1)):b("v-if",!0),a.key==="owner"?(c(),f(x,{key:3},[d.owner?(c(),f("span",Le,u(e.shortDid(d.owner)),1)):(c(),f("span",Ne,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(c(),f("span",Ee,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0),a.key==="action"?(c(),f(x,{key:5},[o(O,{size:"small",type:"link",onClick:S=>e.openRecord(d)},{default:r(()=>[_(u(t.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),o(P,{trigger:["click"]},{overlay:r(()=>[o(m,{onClick:S=>e.transitionStatus(d,S.key)},{default:r(()=>[(c(!0),f(x,null,V(e.SERVICE_STATUSES,S=>(c(),T(k,{key:S,disabled:S===d.status},{default:r(()=>[_(u(e.statusLabel(S)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:r(()=>[o(O,{size:"small",type:"link"},{default:r(()=>[_(u(t.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("v-if",!0)]),emptyText:r(()=>[C("div",Pe,[o(e.AppstoreOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(e.statusFilter||e.nameFilter?t.$t("marketplace.table.emptyFiltered"):t.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),b(" ── Invocations tab ───────────────────────────────────────── "),o(Z,{key:"invocations",tab:t.$t("marketplace.tabs.invocations")},{default:r(()=>[C("div",je,[o(D,{value:e.invocationServiceFilter,"onUpdate:value":l[3]||(l[3]=a=>e.invocationServiceFilter=a),placeholder:t.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:r(()=>[(c(!0),f(x,null,V(e.services,a=>(c(),T(j,{key:a.id,value:a.id},{default:r(()=>[_(u(a.name)+" ("+u(e.statusLabel(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),o(W,{columns:e.invocationColumns,"data-source":e.filteredInvocations,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="service"?(c(),f(x,{key:0},[C("span",De,u(e.serviceName(d.serviceId)),1),C("div",Ve,u(d.serviceId.slice(0,8)),1)],64)):b("v-if",!0),a.key==="caller"?(c(),f(x,{key:1},[d.callerId?(c(),f("span",Be,u(e.shortDid(d.callerId)),1)):(c(),f("span",Je,"—"))],64)):b("v-if",!0),a.key==="status"?(c(),T(M,{key:2,color:e.invocationStatusColor(d.status)},{default:r(()=>[_(u(e.invocationStatusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="durationMs"?(c(),f(x,{key:3},[d.durationMs!=null?(c(),f("span",Ke,u(d.durationMs)+" ms ",1)):(c(),f("span",We,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(c(),f("span",Ze,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0)]),emptyText:r(()=>[C("div",qe,[o(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(t.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),b(" ── Publish service modal ─────────────────────────────────── "),o(G,{open:e.showPublishModal,"onUpdate:open":l[11]||(l[11]=a=>e.showPublishModal=a),title:t.$t("marketplace.publish_modal.title"),"confirm-loading":e.publishing,width:560,"ok-text":t.$t("marketplace.publish_modal.ok"),"cancel-text":t.$t("marketplace.publish_modal.cancel"),onOk:e.publishService,onCancel:e.resetPublishForm},{default:r(()=>[o(Q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[o(g,{label:t.$t("marketplace.publish_modal.nameLabel"),required:""},{default:r(()=>[o(z,{value:e.publishForm.name,"onUpdate:value":l[5]||(l[5]=a=>e.publishForm.name=a),placeholder:t.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.publish_modal.versionLabel")},{default:r(()=>[o(z,{value:e.publishForm.version,"onUpdate:value":l[6]||(l[6]=a=>e.publishForm.version=a),placeholder:t.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.publish_modal.descLabel")},{default:r(()=>[o(q,{value:e.publishForm.description,"onUpdate:value":l[7]||(l[7]=a=>e.publishForm.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.publish_modal.endpointLabel")},{default:r(()=>[o(z,{value:e.publishForm.endpoint,"onUpdate:value":l[8]||(l[8]=a=>e.publishForm.endpoint=a),placeholder:t.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.publish_modal.ownerLabel")},{default:r(()=>[o(z,{value:e.publishForm.owner,"onUpdate:value":l[9]||(l[9]=a=>e.publishForm.owner=a),placeholder:t.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.publish_modal.statusLabel")},{default:r(()=>[o(D,{value:e.publishForm.status,"onUpdate:value":l[10]||(l[10]=a=>e.publishForm.status=a)},{default:r(()=>[(c(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(c(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),b(" ── Record invocation modal ───────────────────────────────── "),o(G,{open:e.showRecordModal,"onUpdate:open":l[16]||(l[16]=a=>e.showRecordModal=a),title:t.$t("marketplace.record_modal.title",{name:e.recordTargetName}),"confirm-loading":e.recording,width:520,"ok-text":t.$t("marketplace.record_modal.ok"),"cancel-text":t.$t("marketplace.record_modal.cancel"),onOk:e.recordInvocation,onCancel:e.resetRecordForm},{default:r(()=>[o(Q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[o(g,{label:t.$t("marketplace.record_modal.callerLabel")},{default:r(()=>[o(z,{value:e.recordForm.caller,"onUpdate:value":l[12]||(l[12]=a=>e.recordForm.caller=a),placeholder:t.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.record_modal.statusLabel")},{default:r(()=>[o(D,{value:e.recordForm.status,"onUpdate:value":l[13]||(l[13]=a=>e.recordForm.status=a)},{default:r(()=>[(c(!0),f(x,null,V(e.INVOCATION_STATUSES,a=>(c(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.invocationStatusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(g,{label:t.$t("marketplace.record_modal.durationLabel")},{default:r(()=>[o(X,{value:e.recordForm.durationMs,"onUpdate:value":l[14]||(l[14]=a=>e.recordForm.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),e.recordForm.status==="failed"||e.recordForm.status==="timeout"?(c(),T(g,{key:0,label:t.$t("marketplace.record_modal.errorLabel")},{default:r(()=>[o(q,{value:e.recordForm.error,"onUpdate:value":l[15]||(l[15]=a=>e.recordForm.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("v-if",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const $e=me(Te,[["render",Qe],["__scopeId","data-v-892f664d"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Marketplace.vue"]]);export{$e as default};
@@ -1 +0,0 @@
1
- import{I as m,J as y,U as b,R as i,c as a,K as o,V as p,S as k,o as ut,a as ot,b as Y,r as _,P as d,Q as u,F as S,Z as R,$ as It}from"./vendor-BvqAck49.js";import{_ as Dt,u as pt,b as ft,d as v}from"./index-BcRDjaEi.js";import{s as Ut}from"./community-parser-CO25nZFt.js";import{a$ as Pt,f as Mt,ai as Jt,a4 as Bt,o as Vt,Q as qt,as as Gt,R as Kt}from"./icons-DP3uiYxy.js";function q(e){const n=Ut(e);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}const Ct=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),Yt=Object.freeze(["draft","complete","refined"]),Tt=Object.freeze(["naming","architecture","testing","style","imports","components"]);function j(e,n=0){return typeof e=="number"&&Number.isFinite(e)?e:n}function W(e,n){if(e==null)return n;if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function mt(e){const n=q(e);return!n||typeof n!="object"||Array.isArray(n)?null:{intent:String(n.intent||"general"),confidence:j(n.confidence,0)}}function gt(e){const n=q(e);if(!n||typeof n!="object"||Array.isArray(n))return null;const c=Array.isArray(n.entities)?n.entities.map(t=>t&&typeof t=="object"?{type:String(t.type||""),value:String(t.value||"")}:null).filter(Boolean):[];return{entities:c,count:j(n.count,c.length)}}function yt(e){const n=q(e);if(!n||typeof n!="object"||Array.isArray(n))return null;const c=Array.isArray(n.detected)?n.detected.filter(t=>typeof t=="string"):[];return{detected:c,primary:n.primary?String(n.primary):c[0]||null}}function Wt(e,n=0){if(!e||typeof e!="object")return null;const c=e.id||"";return c?{key:c,id:c,inputText:e.inputText??e.input_text??"",intent:String(e.intent||"general"),entities:W(e.entities,[]),techStack:W(e.techStack??e.tech_stack,[]),spec:W(e.spec,null),completenessScore:j(e.completenessScore??e.completeness_score,0),ambiguities:W(e.ambiguities,[]),status:String(e.status||"draft").toLowerCase(),createdAt:e.createdAt??e.created_at??null,updatedAt:e.updatedAt??e.updated_at??null,_idx:n}:null}function vt(e){const n=q(e);return Array.isArray(n)?n.map(Wt).filter(Boolean):[]}function bt(e){const n=q(e);return!n||typeof n!="object"||Array.isArray(n)||n.translationId===void 0?null:{translated:!!n.translated,translationId:n.translationId,intent:String(n.intent||""),completeness:j(n.completeness,0)}}function _t(e){if(!e)return{noDb:!1,error:""};const n=/No ChainlessChain project database/i.test(e)||/Cannot read properties of undefined \(reading ['"]prepare['"]\)/i.test(e)||/TypeError.*prepare/i.test(e),c=e.match(/Error:\s*(No ChainlessChain project database[^\r\n]*)/i);if(c)return{noDb:!0,error:c[1].trim()};const t=e.match(/TypeError:\s*(.+?)(?:\r?\n|$)/i);return{noDb:n,error:t?t[1].trim():""}}function Qt(e,n=0){if(!e||typeof e!="object")return null;const c=e.id||"";return c?{key:c,id:c,category:String(e.category||""),pattern:String(e.pattern||""),examples:W(e.examples,[]),confidence:j(e.confidence,0),sourceFiles:W(e.sourceFiles??e.source_files,[]),createdAt:e.createdAt??e.created_at??null,_idx:n}:null}function kt(e){const n=q(e);return Array.isArray(n)?n.map(Qt).filter(Boolean):[]}const Zt={translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}};function xt(e){const n=JSON.parse(JSON.stringify(Zt));for(const t of Ct)n.translations.byIntent[t]=0;for(const t of Tt)n.conventions.byCategory[t]=0;const c=q(e);if(!c||typeof c!="object"||Array.isArray(c))return n;if(c.translations&&typeof c.translations=="object"){if(n.translations.total=j(c.translations.total,0),n.translations.avgCompleteness=j(c.translations.avgCompleteness??c.translations.avg_completeness,0),c.translations.byIntent&&typeof c.translations.byIntent=="object")for(const[t,z]of Object.entries(c.translations.byIntent))typeof z=="number"&&Number.isFinite(z)&&(n.translations.byIntent[t]=z);if(c.translations.byStatus&&typeof c.translations.byStatus=="object")for(const t of Object.keys(n.translations.byStatus))n.translations.byStatus[t]=j(c.translations.byStatus[t],0)}if(c.conventions&&typeof c.conventions=="object"&&(n.conventions.total=j(c.conventions.total,0),c.conventions.byCategory&&typeof c.conventions.byCategory=="object"))for(const[t,z]of Object.entries(c.conventions.byCategory))typeof z=="number"&&Number.isFinite(z)&&(n.conventions.byCategory[t]=z);return n}function Ht(e){if(e==null||e==="")return"—";const n=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(n.getTime())?String(e):n.toLocaleString("zh-CN",{hour12:!1})}const Xt={__name:"NLProgramming",setup(e,{expose:n}){n();const c=pt(),{t}=ft(),z=_(!1),X=_(!1),F=_(!1),E=_(!1),G=_([]),P=_([]),K=_({translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}}),I=_("translations"),A=_(""),N=_(""),Q=_(""),C=_(!1),O=_(!1),M=_(!1),Z=_(!1),H=ot({text:""}),w=ot({text:"",intent:null}),x=ot({category:"naming",pattern:"",examples:"",confidence:.8}),J=_(null),L=_(null),T=_(null),D=_({noDb:!1,error:""}),B=_(null),$=Y(()=>[{title:t("nlprog.translationCols.inputText"),key:"inputText"},{title:t("nlprog.translationCols.intent"),key:"intent",width:"140px"},{title:t("nlprog.translationCols.completeness"),key:"completeness",width:"160px"},{title:t("nlprog.translationCols.status"),key:"status",width:"100px"},{title:t("nlprog.translationCols.updatedAt"),key:"updatedAt",width:"160px"},{title:t("nlprog.translationCols.action"),key:"action",width:"210px"}]),tt=Y(()=>[{title:t("nlprog.conventionCols.category"),key:"category",width:"120px"},{title:t("nlprog.conventionCols.pattern"),key:"pattern"},{title:t("nlprog.conventionCols.examples"),key:"examples",width:"220px"},{title:t("nlprog.conventionCols.confidence"),key:"confidence",width:"90px"},{title:t("nlprog.conventionCols.createdAt"),key:"createdAt",width:"160px"},{title:t("nlprog.conventionCols.action"),key:"action",width:"90px"}]),at=Y(()=>K.value.translations.avgCompleteness*100),lt=Y(()=>{let r=G.value;return A.value&&(r=r.filter(s=>s.intent===A.value)),N.value&&(r=r.filter(s=>s.status===N.value)),r}),rt=Y(()=>Q.value?P.value.filter(r=>r.category===Q.value):P.value);function U(r){const s=`nlprog.intentLabels.${r}`,g=t(s);return g===s?r:g}function st(r){return{create_component:"blue",add_feature:"green",fix_bug:"red",refactor:"purple",add_api:"cyan",add_test:"orange",update_style:"magenta",configure:"gold",general:"default"}[r]||"default"}function l(r){const s=`nlprog.statusLabels.${r}`,g=t(s);return g===s?r:g}function f(r){return{draft:"default",complete:"green",refined:"cyan"}[r]||"default"}function h(r){const s=`nlprog.categoryLabels.${r}`,g=t(s);return g===s?r:g}function ht(r){return{naming:"blue",architecture:"purple",testing:"cyan",style:"magenta",imports:"orange",components:"green"}[r]||"default"}function St(r){return r>=.7?"#52c41a":r>=.4?"#faad14":"#ff4d4f"}function zt(r,s){return r?r.length>s?r.slice(0,s)+"...":r:""}function At(r){if(r==null)return"—";if(typeof r=="string")return r;try{return JSON.stringify(r,null,2)}catch{return String(r)}}function Ft({key:r}){r==="analyze"?(J.value=null,L.value=null,T.value=null,C.value=!0):r==="translate"?(D.value={noDb:!1,error:""},O.value=!0):r==="convention"&&(M.value=!0)}async function V(){z.value=!0;try{const[r,s,g]=await Promise.all([c.execute("nlprog list --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("nlprog conventions --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("nlprog stats --json",8e3).catch(()=>({output:""}))]);G.value=vt(r.output),P.value=kt(s.output),K.value=xt(g.output)}catch(r){v.error(t("nlprog.msg.loadFailed")+": "+(r?.message||r))}finally{z.value=!1}}async function Ot(){const r=H.text.trim();if(!r){v.warning(t("nlprog.msg.textEmpty"));return}X.value=!0,J.value=null,L.value=null,T.value=null;try{const s=r.replace(/"/g,'\\"'),[g,et,nt]=await Promise.all([c.execute(`nlprog classify "${s}" --json`,8e3).catch(()=>({output:""})),c.execute(`nlprog extract "${s}" --json`,8e3).catch(()=>({output:""})),c.execute(`nlprog detect-stack "${s}" --json`,8e3).catch(()=>({output:""}))]);J.value=mt(g.output),L.value=gt(et.output),T.value=yt(nt.output),!J.value&&!L.value&&!T.value&&v.error(t("nlprog.msg.analyzeFailed"))}catch(s){v.error(t("nlprog.msg.analyzeFailed")+": "+(s?.message||s))}finally{X.value=!1}}async function Rt(){const r=w.text.trim();if(!r){v.warning(t("nlprog.msg.translateTextEmpty"));return}F.value=!0,D.value={noDb:!1,error:""};try{const s=[`nlprog translate "${r.replace(/"/g,'\\"')}"`];w.intent&&s.push(`--intent ${w.intent}`),s.push("--json");const{output:g}=await c.execute(s.join(" "),12e3),et=_t(g);if(et.noDb){D.value=et;return}const nt=bt(g);if(!nt){v.error(t("nlprog.msg.translateFailed")+": "+g.slice(0,120));return}v.success(t("nlprog.msg.translateSuccess",{pct:(nt.completeness*100).toFixed(0)})),O.value=!1,it(),await V()}catch(s){v.error(t("nlprog.msg.translateFailed")+": "+(s?.message||s))}finally{F.value=!1}}async function Nt(r,s){if(s!==r.status)try{const{output:g}=await c.execute(`nlprog status ${r.id} ${s} --json`,8e3);if(/error|invalid/i.test(g)&&!/"updated"/.test(g)){v.error(t("nlprog.msg.transitionFailed")+": "+g.slice(0,120));return}v.success(t("nlprog.msg.transitionSuccess",{label:l(s)})),await V()}catch(g){v.error(t("nlprog.msg.transitionFailed")+": "+(g?.message||g))}}async function wt(r){try{const{output:s}=await c.execute(`nlprog remove ${r.id} --json`,8e3);if(/error/i.test(s)&&!/"removed"/.test(s)){v.error(t("nlprog.msg.deleteFailed")+": "+s.slice(0,120));return}v.success(t("nlprog.msg.deleteSuccess")),await V()}catch(s){v.error(t("nlprog.msg.deleteFailed")+": "+(s?.message||s))}}function Lt(r){B.value=r,Z.value=!0}async function jt(){const r=x.pattern.trim();if(!r){v.warning(t("nlprog.msg.patternEmpty"));return}if(x.examples.trim())try{JSON.parse(x.examples)}catch{v.warning(t("nlprog.msg.examplesBadJson"));return}E.value=!0;try{const s=[`nlprog convention-add --category ${x.category}`];s.push(`--pattern "${r.replace(/"/g,'\\"')}"`),x.examples.trim()&&s.push(`--examples '${x.examples.trim().replace(/'/g,"'\\''")}'`),x.confidence!=null&&s.push(`--confidence ${x.confidence}`),s.push("--json");const{output:g}=await c.execute(s.join(" "),1e4);if(/error|invalid|失败/i.test(g)&&!/"added"/.test(g)){v.error(t("nlprog.msg.addFailed")+": "+g.slice(0,120));return}v.success(t("nlprog.msg.addSuccess")),M.value=!1,ct(),I.value="conventions",await V()}catch(s){v.error(t("nlprog.msg.addFailed")+": "+(s?.message||s))}finally{E.value=!1}}async function Et(r){try{const{output:s}=await c.execute(`nlprog convention-remove ${r.id} --json`,8e3);if(/error/i.test(s)&&!/"removed"/.test(s)){v.error(t("nlprog.msg.deleteFailed")+": "+s.slice(0,120));return}v.success(t("nlprog.msg.deleteSuccess")),await V()}catch(s){v.error(t("nlprog.msg.deleteFailed")+": "+(s?.message||s))}}function it(){w.text="",w.intent=null}function ct(){x.category="naming",x.pattern="",x.examples="",x.confidence=.8}ut(V);const dt={ws:c,t,loading:z,analyzing:X,translating:F,adding:E,translations:G,conventions:P,stats:K,activeTab:I,intentFilter:A,statusFilter:N,categoryFilter:Q,showAnalyzeModal:C,showTranslateModal:O,showConventionModal:M,showDetailsModal:Z,analyzeForm:H,translateForm:w,conventionForm:x,classifyResult:J,extractResult:L,stackResult:T,translateError:D,currentTranslation:B,translationColumns:$,conventionColumns:tt,avgCompletenessPct:at,filteredTranslations:lt,filteredConventions:rt,intentLabel:U,intentColor:st,statusLabel:l,statusColor:f,categoryLabel:h,categoryColor:ht,completenessColor:St,truncate:zt,formatJson:At,handleNewClick:Ft,loadAll:V,runAnalyze:Ot,runTranslate:Rt,transitionStatus:Nt,removeTranslation:wt,showTranslationDetails:Lt,addConvention:jt,removeConvention:Et,resetTranslateForm:it,resetConventionForm:ct,ref:_,computed:Y,onMounted:ut,reactive:ot,get ReloadOutlined(){return Kt},get PlusOutlined(){return Gt},get CodeOutlined(){return qt},get BulbOutlined(){return Vt},get FileTextOutlined(){return Bt},get EditOutlined(){return Jt},get CheckCircleOutlined(){return Mt},get RiseOutlined(){return Pt},get message(){return v},get useI18n(){return ft},get useWsStore(){return pt},get parseClassifyResult(){return mt},get parseExtractResult(){return gt},get parseStackResult(){return yt},get parseTranslations(){return vt},get parseTranslateResult(){return bt},get detectTranslateError(){return _t},get parseConventions(){return kt},get parseStats(){return xt},get formatNlprogTime(){return Ht},get INTENTS(){return Ct},get TRANSLATION_STATUSES(){return Yt},get STYLE_CATEGORIES(){return Tt}};return Object.defineProperty(dt,"__isScriptSetup",{enumerable:!1,value:!0}),dt}},$t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},te={class:"page-title"},ee={class:"page-sub"},ne={class:"filter-bar"},oe={key:0,style:{color:"var(--text-primary)"}},ae={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},le={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},re={class:"filter-bar"},se={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ie={key:0,style:{color:"var(--text-muted)"}},ce={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},de={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ue={key:0,style:{"margin-bottom":"12px"}},pe={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},fe={style:{color:"var(--text-secondary)","font-size":"12px"}},me={key:1,style:{"margin-bottom":"12px"}},ge={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},ye={key:0,style:{color:"var(--text-muted)"}},ve={key:2},be={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},_e={key:0,style:{color:"var(--text-muted)"}},ke={key:0,style:{"padding-top":"8px"}},xe={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},Ce={style:{"margin-top":"16px"}},Te={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},he={class:"json-block"},Se={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},ze={class:"json-block"},Ae={key:0},Fe={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Oe={class:"json-block"};function Re(e,n,c,t,z,X){const F=m("a-button"),E=m("a-menu-item"),G=m("a-menu"),P=m("a-dropdown"),K=m("a-space"),I=m("a-statistic"),A=m("a-card"),N=m("a-col"),Q=m("a-row"),C=m("a-tag"),O=m("a-radio-button"),M=m("a-radio-group"),Z=m("a-progress"),H=m("a-popconfirm"),w=m("a-table"),x=m("a-tab-pane"),J=m("a-tabs"),L=m("a-textarea"),T=m("a-form-item"),D=m("a-form"),B=m("a-modal"),$=m("a-select-option"),tt=m("a-select"),at=m("a-alert"),lt=m("a-input"),rt=m("a-input-number"),U=m("a-descriptions-item"),st=m("a-descriptions");return d(),y("div",null,[b("div",$t,[b("div",null,[b("h2",te,i(e.$t("nlprog.title")),1),b("p",ee,i(e.$t("nlprog.subtitle")),1)]),a(K,null,{default:o(()=>[a(F,{loading:t.loading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[u(" "+i(e.$t("nlprog.refresh")),1)]),_:1},8,["loading"]),a(P,{trigger:["click"]},{overlay:o(()=>[a(G,{onClick:t.handleNewClick},{default:o(()=>[a(E,{key:"analyze"},{default:o(()=>[a(t.BulbOutlined),u(" "+i(e.$t("nlprog.actions.analyze")),1)]),_:1}),a(E,{key:"translate"},{default:o(()=>[a(t.CodeOutlined),u(" "+i(e.$t("nlprog.actions.translate")),1)]),_:1}),a(E,{key:"convention"},{default:o(()=>[a(t.FileTextOutlined),u(" "+i(e.$t("nlprog.actions.convention")),1)]),_:1})]),_:1})]),default:o(()=>[a(F,{type:"primary"},{icon:o(()=>[a(t.PlusOutlined)]),default:o(()=>[u(" "+i(e.$t("nlprog.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),p(" Stat cards "),a(Q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(N,{xs:12,sm:8,lg:5},{default:o(()=>[a(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(I,{title:e.$t("nlprog.stats.translations"),value:t.stats.translations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:o(()=>[a(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(I,{title:e.$t("nlprog.stats.avgCompleteness"),value:t.avgCompletenessPct,precision:1,suffix:"%","value-style":{color:t.stats.translations.avgCompleteness>=.7?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(t.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:o(()=>[a(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(I,{title:e.$t("nlprog.stats.drafts"),value:t.stats.translations.byStatus.draft,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(t.EditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:o(()=>[a(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(I,{title:e.$t("nlprog.stats.completed"),value:t.stats.translations.byStatus.complete,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:24,sm:8,lg:4},{default:o(()=>[a(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(I,{title:e.$t("nlprog.stats.conventions"),value:t.stats.conventions.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Intent breakdown "),t.stats.translations.total>0?(d(),k(A,{key:0,title:e.$t("nlprog.intentCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:o(()=>[a(K,{size:[12,8],wrap:""},{default:o(()=>[(d(!0),y(S,null,R(t.INTENTS,l=>(d(),k(C,{key:l,color:t.intentColor(l)},{default:o(()=>[u(i(t.intentLabel(l))+": "+i(t.stats.translations.byIntent[l]||0),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):p("v-if",!0),p(" Tabs "),a(J,{activeKey:t.activeTab,"onUpdate:activeKey":n[3]||(n[3]=l=>t.activeTab=l),class:"nlprog-tabs"},{default:o(()=>[p(" ── Translations tab ──────────────────────────────────────── "),a(x,{key:"translations",tab:e.$t("nlprog.tabs.translations")},{default:o(()=>[b("div",ne,[a(M,{value:t.intentFilter,"onUpdate:value":n[0]||(n[0]=l=>t.intentFilter=l),size:"small"},{default:o(()=>[a(O,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allIntents")),1)]),_:1}),(d(!0),y(S,null,R(t.INTENTS,l=>(d(),k(O,{key:l,value:l},{default:o(()=>[u(i(t.intentLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(M,{value:t.statusFilter,"onUpdate:value":n[1]||(n[1]=l=>t.statusFilter=l),size:"small","button-style":"solid"},{default:o(()=>[a(O,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allStatuses")),1)]),_:1}),(d(!0),y(S,null,R(t.TRANSLATION_STATUSES,l=>(d(),k(O,{key:l,value:l},{default:o(()=>[u(i(t.statusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(w,{columns:t.translationColumns,"data-source":t.filteredTranslations,pagination:{pageSize:20,showTotal:l=>e.$t("nlprog.table.totalSuffix",{n:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:l,record:f})=>[l.key==="inputText"?(d(),y("span",oe,i(t.truncate(f.inputText,80)),1)):p("v-if",!0),l.key==="intent"?(d(),k(C,{key:1,color:t.intentColor(f.intent),style:{"font-size":"11px"}},{default:o(()=>[u(i(t.intentLabel(f.intent)),1)]),_:2},1032,["color"])):p("v-if",!0),l.key==="completeness"?(d(),k(Z,{key:2,percent:Math.round(f.completenessScore*100),size:"small","stroke-color":t.completenessColor(f.completenessScore),format:()=>(f.completenessScore*100).toFixed(0)+"%"},null,8,["percent","stroke-color","format"])):p("v-if",!0),l.key==="status"?(d(),k(C,{key:3,color:t.statusColor(f.status)},{default:o(()=>[u(i(t.statusLabel(f.status)),1)]),_:2},1032,["color"])):p("v-if",!0),l.key==="updatedAt"?(d(),y("span",ae,i(t.formatNlprogTime(f.updatedAt)),1)):p("v-if",!0),l.key==="action"?(d(),y(S,{key:5},[a(F,{size:"small",type:"link",onClick:h=>t.showTranslationDetails(f)},{default:o(()=>[u(i(e.$t("nlprog.table.actionDetails")),1)]),_:1},8,["onClick"]),a(P,{trigger:["click"]},{overlay:o(()=>[a(G,{onClick:h=>t.transitionStatus(f,h.key)},{default:o(()=>[(d(!0),y(S,null,R(t.TRANSLATION_STATUSES,h=>(d(),k(E,{key:h,disabled:h===f.status},{default:o(()=>[u(i(t.statusLabel(h)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:o(()=>[a(F,{size:"small",type:"link"},{default:o(()=>[u(i(e.$t("nlprog.table.actionStatusDropdown")),1)]),_:1})]),_:2},1024),a(H,{title:e.$t("nlprog.deleteTranslationConfirm.title"),"ok-text":e.$t("nlprog.deleteTranslationConfirm.ok"),"cancel-text":e.$t("nlprog.deleteTranslationConfirm.cancel"),onConfirm:h=>t.removeTranslation(f)},{default:o(()=>[a(F,{size:"small",type:"link",danger:""},{default:o(()=>[u(i(e.$t("nlprog.deleteTranslationConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):p("v-if",!0)]),emptyText:o(()=>[b("div",le,[a(t.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+i(t.intentFilter||t.statusFilter?e.$t("nlprog.table.emptyTranslationsFiltered"):e.$t("nlprog.table.emptyTranslations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Conventions tab ──────────────────────────────────────── "),a(x,{key:"conventions",tab:e.$t("nlprog.tabs.conventions")},{default:o(()=>[b("div",re,[a(M,{value:t.categoryFilter,"onUpdate:value":n[2]||(n[2]=l=>t.categoryFilter=l),size:"small","button-style":"solid"},{default:o(()=>[a(O,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allCategories")),1)]),_:1}),(d(!0),y(S,null,R(t.STYLE_CATEGORIES,l=>(d(),k(O,{key:l,value:l},{default:o(()=>[u(i(t.categoryLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(w,{columns:t.conventionColumns,"data-source":t.filteredConventions,pagination:{pageSize:20,showTotal:l=>e.$t("nlprog.table.totalSuffix",{n:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:l,record:f})=>[l.key==="category"?(d(),k(C,{key:0,color:t.categoryColor(f.category)},{default:o(()=>[u(i(t.categoryLabel(f.category)),1)]),_:2},1032,["color"])):p("v-if",!0),l.key==="pattern"?(d(),y("span",se,i(f.pattern),1)):p("v-if",!0),l.key==="examples"?(d(),y(S,{key:2},[(d(!0),y(S,null,R(Array.isArray(f.examples)?f.examples.slice(0,3):[],h=>(d(),k(C,{key:h,color:"default",style:{"font-size":"10px","font-family":"monospace",margin:"1px"}},{default:o(()=>[u(i(h),1)]),_:2},1024))),128)),!Array.isArray(f.examples)||f.examples.length===0?(d(),y("span",ie,"—")):p("v-if",!0)],64)):p("v-if",!0),l.key==="confidence"?(d(),y("span",{key:3,style:It({color:t.completenessColor(f.confidence),fontWeight:500})},i((f.confidence*100).toFixed(0))+"% ",5)):p("v-if",!0),l.key==="createdAt"?(d(),y("span",ce,i(t.formatNlprogTime(f.createdAt)),1)):p("v-if",!0),l.key==="action"?(d(),k(H,{key:5,title:e.$t("nlprog.deleteConventionConfirm.title"),"ok-text":e.$t("nlprog.deleteConventionConfirm.ok"),"cancel-text":e.$t("nlprog.deleteConventionConfirm.cancel"),onConfirm:h=>t.removeConvention(f)},{default:o(()=>[a(F,{size:"small",type:"link",danger:""},{default:o(()=>[u(i(e.$t("nlprog.deleteConventionConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):p("v-if",!0)]),emptyText:o(()=>[b("div",de,[a(t.FileTextOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+i(e.$t("nlprog.table.emptyConventions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Analyze modal ────────────────────────────────────────── "),a(B,{open:t.showAnalyzeModal,"onUpdate:open":n[5]||(n[5]=l=>t.showAnalyzeModal=l),title:e.$t("nlprog.analyze_modal.title"),"confirm-loading":t.analyzing,width:600,"ok-text":e.$t("nlprog.analyze_modal.ok"),"cancel-text":e.$t("nlprog.analyze_modal.cancel"),onOk:t.runAnalyze},{default:o(()=>[a(D,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(T,{label:e.$t("nlprog.analyze_modal.textLabel"),required:""},{default:o(()=>[a(L,{value:t.analyzeForm.text,"onUpdate:value":n[4]||(n[4]=l=>t.analyzeForm.text=l),placeholder:e.$t("nlprog.analyze_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),t.classifyResult||t.extractResult||t.stackResult?(d(),k(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:o(()=>[t.classifyResult?(d(),y("div",ue,[b("div",pe,i(e.$t("nlprog.analyze_modal.intent")),1),a(C,{color:t.intentColor(t.classifyResult.intent),style:{"margin-right":"6px"}},{default:o(()=>[u(i(t.intentLabel(t.classifyResult.intent)),1)]),_:1},8,["color"]),b("span",fe,i(e.$t("nlprog.analyze_modal.confidenceLine",{pct:(t.classifyResult.confidence*100).toFixed(0)})),1)])):p("v-if",!0),t.extractResult?(d(),y("div",me,[b("div",ge,i(e.$t("nlprog.analyze_modal.entities",{n:t.extractResult.count})),1),t.extractResult.entities.length?p("v-if",!0):(d(),y("span",ye,i(e.$t("nlprog.analyze_modal.notDetected")),1)),(d(!0),y(S,null,R(t.extractResult.entities,(l,f)=>(d(),k(C,{key:f,color:"purple",style:{"font-family":"monospace","font-size":"11px",margin:"1px"}},{default:o(()=>[u(" ["+i(l.type)+"] "+i(l.value),1)]),_:2},1024))),128))])):p("v-if",!0),t.stackResult?(d(),y("div",ve,[b("div",be,i(e.$t("nlprog.analyze_modal.stack")),1),t.stackResult.detected.length?(d(),y(S,{key:1},[a(C,{color:"cyan",style:{"font-family":"monospace"}},{default:o(()=>[u(i(e.$t("nlprog.analyze_modal.stackPrimary",{name:t.stackResult.primary})),1)]),_:1}),(d(!0),y(S,null,R(t.stackResult.detected.filter(l=>l!==t.stackResult.primary),l=>(d(),k(C,{key:l,color:"default",style:{"font-family":"monospace","font-size":"11px"}},{default:o(()=>[u(i(l),1)]),_:2},1024))),128))],64)):(d(),y("span",_e,i(e.$t("nlprog.analyze_modal.notDetected")),1))])):p("v-if",!0)]),_:1})):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Translate modal ──────────────────────────────────────── "),a(B,{open:t.showTranslateModal,"onUpdate:open":n[8]||(n[8]=l=>t.showTranslateModal=l),title:e.$t("nlprog.translate_modal.title"),"confirm-loading":t.translating,width:540,"ok-text":e.$t("nlprog.translate_modal.ok"),"cancel-text":e.$t("nlprog.translate_modal.cancel"),onOk:t.runTranslate,onCancel:t.resetTranslateForm},{default:o(()=>[a(D,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(T,{label:e.$t("nlprog.translate_modal.textLabel"),required:""},{default:o(()=>[a(L,{value:t.translateForm.text,"onUpdate:value":n[6]||(n[6]=l=>t.translateForm.text=l),placeholder:e.$t("nlprog.translate_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(T,{label:e.$t("nlprog.translate_modal.intentLabel")},{default:o(()=>[a(tt,{value:t.translateForm.intent,"onUpdate:value":n[7]||(n[7]=l=>t.translateForm.intent=l),"allow-clear":"",placeholder:e.$t("nlprog.translate_modal.intentPlaceholder")},{default:o(()=>[(d(!0),y(S,null,R(t.INTENTS,l=>(d(),k($,{key:l,value:l},{default:o(()=>[u(i(t.intentLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),t.translateError.noDb?(d(),k(at,{key:0,type:"warning","show-icon":"",message:e.$t("nlprog.translate_modal.noDbMessage"),description:e.$t("nlprog.translate_modal.noDbDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Add convention modal ─────────────────────────────────── "),a(B,{open:t.showConventionModal,"onUpdate:open":n[13]||(n[13]=l=>t.showConventionModal=l),title:e.$t("nlprog.convention_modal.title"),"confirm-loading":t.adding,width:540,"ok-text":e.$t("nlprog.convention_modal.ok"),"cancel-text":e.$t("nlprog.convention_modal.cancel"),onOk:t.addConvention,onCancel:t.resetConventionForm},{default:o(()=>[a(D,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(T,{label:e.$t("nlprog.convention_modal.categoryLabel"),required:""},{default:o(()=>[a(tt,{value:t.conventionForm.category,"onUpdate:value":n[9]||(n[9]=l=>t.conventionForm.category=l)},{default:o(()=>[(d(!0),y(S,null,R(t.STYLE_CATEGORIES,l=>(d(),k($,{key:l,value:l},{default:o(()=>[u(i(t.categoryLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(T,{label:e.$t("nlprog.convention_modal.patternLabel"),required:""},{default:o(()=>[a(lt,{value:t.conventionForm.pattern,"onUpdate:value":n[10]||(n[10]=l=>t.conventionForm.pattern=l),placeholder:e.$t("nlprog.convention_modal.patternPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(T,{label:e.$t("nlprog.convention_modal.examplesLabel")},{default:o(()=>[a(L,{value:t.conventionForm.examples,"onUpdate:value":n[11]||(n[11]=l=>t.conventionForm.examples=l),placeholder:e.$t("nlprog.convention_modal.examplesPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(T,{label:e.$t("nlprog.convention_modal.confidenceLabel")},{default:o(()=>[a(rt,{value:t.conventionForm.confidence,"onUpdate:value":n[12]||(n[12]=l=>t.conventionForm.confidence=l),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Translation details modal ────────────────────────────── "),a(B,{open:t.showDetailsModal,"onUpdate:open":n[14]||(n[14]=l=>t.showDetailsModal=l),title:e.$t("nlprog.details.title",{id:t.currentTranslation?.id?.slice(0,8)||""}),width:720,footer:null},{default:o(()=>[t.currentTranslation?(d(),y("div",ke,[a(st,{column:2,size:"small",bordered:""},{default:o(()=>[a(U,{label:e.$t("nlprog.details.intent")},{default:o(()=>[a(C,{color:t.intentColor(t.currentTranslation.intent)},{default:o(()=>[u(i(t.intentLabel(t.currentTranslation.intent)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.details.status")},{default:o(()=>[a(C,{color:t.statusColor(t.currentTranslation.status)},{default:o(()=>[u(i(t.statusLabel(t.currentTranslation.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.details.completeness"),span:2},{default:o(()=>[a(Z,{percent:Math.round(t.currentTranslation.completenessScore*100),"stroke-color":t.completenessColor(t.currentTranslation.completenessScore),size:"small"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.details.createdAt")},{default:o(()=>[u(i(t.formatNlprogTime(t.currentTranslation.createdAt)),1)]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.details.updatedAt")},{default:o(()=>[u(i(t.formatNlprogTime(t.currentTranslation.updatedAt)),1)]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.details.inputText"),span:2},{default:o(()=>[b("span",xe,i(t.currentTranslation.inputText),1)]),_:1},8,["label"])]),_:1}),b("div",Ce,[b("h4",Te,i(e.$t("nlprog.details.entities")),1),b("pre",he,i(t.formatJson(t.currentTranslation.entities)),1)]),b("div",null,[b("h4",Se,i(e.$t("nlprog.details.techStack")),1),b("pre",ze,i(t.formatJson(t.currentTranslation.techStack)),1)]),t.currentTranslation.spec?(d(),y("div",Ae,[b("h4",Fe,i(e.$t("nlprog.details.spec")),1),b("pre",Oe,i(t.formatJson(t.currentTranslation.spec)),1)])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"])])}const Ee=Dt(Xt,[["render",Re],["__scopeId","data-v-4c4216b9"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/NLProgramming.vue"]]);export{Ee as default};
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-LWgyWUF_.js","./vendor-BvqAck49.js","./index-BcRDjaEi.js","./icons-DP3uiYxy.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-BMpVfQkg.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-Drf_B0al.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-CWh_fKmI.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-CaDh2XiY.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
- import{E as ue,r as E,b as w,I as y,P as u,J as O,U as v,c,S as C,V as x,_ as M,F as V,Z as se,a0 as le,R,K as m,Q as b,W as L,o as J}from"./vendor-BvqAck49.js";import{u as U}from"./usePersonalDataHub-B5OwxZuK.js";import{_ as D,e as F,d as P}from"./index-BcRDjaEi.js";import{a9 as q,af as z,M as Q,aH as G,u as Z,aG as H,ap as K,ab as W,e as de,d as fe,k as pe,ah as me,az as _e,R as ge}from"./icons-DP3uiYxy.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Y=300,X=ue("pdhBrowser",()=>{const r=E({...I}),t=E([]),n=E(null),e=E(!1),o=E(!1),l=E(null),a=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const j=w(()=>t.value.length>0),A=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function g(){const S=++d;e.value=!0,l.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,a.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;l.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,l.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,a.value=p.mode||a.value}catch(p){l.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function ae(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,g()},Y)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),g()}function ce(){r.value={...I},t.value=[],n.value=null,l.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:l,mode:a,shortQuery:s,facets:i,hasResults:j,canLoadMore:A,search:g,loadMore:k,setFilter:ae,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Y}}),ye=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["vscode","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["local-files","system"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:W,social:K,email:H,shopping:Z,travel:G,system:Q,"ai-chat":z,other:q};function l(i){return o[i]||q}function a(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:l,badgeStyle:a,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return Z},get CarOutlined(){return G},get MobileOutlined(){return Q},get RobotOutlined(){return z},get CATEGORIES(){return ye},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,l){const a=y("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(a,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(le(e.iconFor(s)),{class:"icon"})),v("span",we,R(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(a,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),xe={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,l=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=w(()=>Object.entries(e.facets.byAdapter||{}).sort((g,k)=>k[1]-g[1]).map(([g,k])=>({value:g,label:`${g} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function j(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[g,k]=h;o("set-filter","since",g?+g:null),o("set-filter","until",k?+k:null)}const A={props:e,emit:o,placeholderText:l,adapterOptions:a,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:j,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},je={key:2,class:"hint"};function Ae(r,t,n,e,o,l){const a=y("a-input-search"),s=y("a-select"),i=y("a-range-picker"),d=y("a-button");return u(),O("div",Ee,[c(a,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):x("v-if",!0),n.shortQuery?(u(),O("span",Re,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",je,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):x("v-if",!0)])}const Le=D(xe,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>F(()=>import("./ChatBubbleRenderer-LWgyWUF_.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-BMpVfQkg.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-Drf_B0al.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),l=L(()=>F(()=>import("./EmailListRenderer-CWh_fKmI.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=L(()=>F(()=>import("./GenericCardRenderer-CaDh2XiY.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return l;default:return a}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:l,GenericCardRenderer:a,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,l){return u(),C(le(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
3
- `)+`
4
- `}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const l=Number.isFinite(o.occurredAt)?o.occurredAt:null,a=l?new Date(l).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",l!=null?String(l):"",a,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
5
- `)+`
6
- `}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
7
- `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),l=document.createElement("a");return l.href=o,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0"),a=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${l}${s}.${a}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function l(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function a({key:i}){try{const d=l(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:l,onClick:a,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,l){const a=y("a-button"),s=y("a-menu-item"),i=y("a-menu"),d=y("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(a,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+R(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function l(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const a={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:l,onMounted:J,computed:w,get ReloadOutlined(){return ge},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},ze={key:0},Qe={key:0},Ge={key:1},Ze={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(r,t,n,e,o,l){const a=y("a-tag"),s=y("a-button"),i=y("a-space"),d=y("a-col"),_=y("a-spin"),j=y("a-alert"),A=y("a-empty"),h=y("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(a,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(a,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):x("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=g=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=g=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",ze,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,R(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",Qe,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,R(e.categoryLabel(e.store.filters.category)),1),v("strong",null,R(e.store.facets.byCategory[e.store.filters.category]||0),1)])):x("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,R(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):x("v-if",!0),v("span",Ze," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),C(j,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):x("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):x("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(g,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${g.id}`,event:g},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",Ke,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=g=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):x("v-if",!0)])]),_:1})]),_:1})])}const tt=D(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{tt as default};
@@ -1 +0,0 @@
1
- import{I as m,J as b,U as v,R as p,c as i,K as n,V as d,S as g,o as pe,a as ce,b as W,r as A,P as s,Q as f,F as h,Z as F,_ as Oe}from"./vendor-BvqAck49.js";import{_ as Le,u as ue,b as de,d as x}from"./index-BcRDjaEi.js";import{s as be}from"./community-parser-CO25nZFt.js";import{a0 as ze,d as Be,L as Ee,f as Fe,Y as De,aU as Re,z as Ne,a4 as Me,G as je,ap as we,_ as Ie,as as Ue,R as Ge}from"./icons-DP3uiYxy.js";function Y(t){const o=be(t);if(!o)return null;try{return JSON.parse(o)}catch{}const r=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const _e=Object.freeze(["pending","running","paused","completed","failed","cancelled"]),Je=Object.freeze(["pending","running","gate-waiting","completed","failed","skipped"]),qe=Object.freeze(["requirement","architecture","code-generation","testing","code-review","deploy","monitoring"]),ve=Object.freeze(["feature","bugfix","refactor","security-audit"]),Ve=Object.freeze(["git-pr","docker","npm-publish","local","staging","custom"]),Ke=Object.freeze(["code-review","deploy"]);function N(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function ie(t){if(!t)return{noDb:!1,error:""};const o=be(t),r=/No database/i.test(o);return{noDb:r,error:r?"No database":""}}function We(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),stageIndex:N(t.stageIndex,o),name:String(t.name||""),status:String(t.status||"pending").toLowerCase(),gateRequired:!!t.gateRequired,gateApproved:!!t.gateApproved,gateRejectReason:t.gateRejectReason||"",input:t.input??null,output:t.output??null,errorMessage:t.errorMessage||"",startedAt:t.startedAt??null,completedAt:t.completedAt??null,_idx:o}:null}function Ye(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";if(!r)return null;const e=Array.isArray(t.stages)?t.stages.map(We).filter(Boolean):[];return{key:r,id:r,name:t.name||"",template:String(t.template||""),config:t.config??null,status:String(t.status||"pending").toLowerCase(),currentStage:N(t.currentStage,0),result:t.result??null,errorMessage:t.errorMessage||"",createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,startedAt:t.startedAt??null,completedAt:t.completedAt??null,stages:e,_idx:o}}function fe(t){const o=Y(t);return Array.isArray(o)?o.map(Ye).filter(Boolean):[]}function Ze(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),strategy:String(t.strategy||"").toLowerCase(),config:t.config??null,status:String(t.status||"pending").toLowerCase(),result:t.result??null,errorMessage:t.errorMessage||"",rolledBackAt:t.rolledBackAt??null,rollbackReason:t.rollbackReason||"",createdAt:t.createdAt??null,completedAt:t.completedAt??null,_idx:o}:null}function ge(t){const o=Y(t);return Array.isArray(o)?o.map(Ze).filter(Boolean):[]}function He(t,o=0){if(!t||typeof t!="object")return null;const r=t.name||"";return r?{key:r,name:r,description:String(t.description||""),stages:Array.isArray(t.stages)?t.stages.filter(e=>typeof e=="string"):[],gateStages:Array.isArray(t.gateStages)?t.gateStages.filter(e=>typeof e=="string"):[],_idx:o}:null}function me(t){const o=Y(t);return Array.isArray(o)?o.map(He).filter(Boolean):[]}const Qe={totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}};function ye(t){const o=JSON.parse(JSON.stringify(Qe));for(const e of ve)o.pipelinesByTemplate[e]=0;for(const e of _e)o.pipelinesByStatus[e]=0;for(const e of Je)o.stagesByStatus[e]=0;for(const e of Ve)o.deploysByStrategy[e]=0;const r=Y(t);if(!r||typeof r!="object"||Array.isArray(r))return o;if(o.totalPipelines=N(r.totalPipelines,0),o.totalStages=N(r.totalStages,0),o.totalArtifacts=N(r.totalArtifacts,0),o.totalDeploys=N(r.totalDeploys,0),r.pipelinesByTemplate&&typeof r.pipelinesByTemplate=="object")for(const[e,_]of Object.entries(r.pipelinesByTemplate))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByTemplate[e]=_);if(r.pipelinesByStatus&&typeof r.pipelinesByStatus=="object")for(const[e,_]of Object.entries(r.pipelinesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByStatus[e]=_);if(r.stagesByStatus&&typeof r.stagesByStatus=="object")for(const[e,_]of Object.entries(r.stagesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.stagesByStatus[e]=_);if(r.deploysByStrategy&&typeof r.deploysByStrategy=="object")for(const[e,_]of Object.entries(r.deploysByStrategy))typeof _=="number"&&Number.isFinite(_)&&(o.deploysByStrategy[e]=_);return o}function Xe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const $e={__name:"Pipeline",setup(t,{expose:o}){o();const r=ue(),{t:e}=de(),_=A(!1),I=A(!1),C=A([]),U=A([]),G=A([]),L=A({totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}}),P=A({noDb:!1,error:""}),z=A("pipelines"),D=A(""),B=A(""),M=A(!1),k=A(!1),S=ce({template:"feature",name:"",configJson:""}),J=A(null),q=W(()=>[{title:e("pipeline.cols.name"),key:"name"},{title:e("pipeline.cols.template"),key:"template",width:"110px"},{title:e("pipeline.cols.progress"),key:"progress",width:"160px"},{title:e("pipeline.cols.currentStage"),key:"currentStage",width:"140px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("pipeline.cols.action"),key:"action",width:"260px"}]),j=W(()=>[{title:e("pipeline.cols.pipeline"),key:"pipeline",width:"180px"},{title:e("pipeline.cols.strategy"),key:"strategy",width:"120px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt"}]),Z=W(()=>{let a=C.value;return D.value&&(a=a.filter(u=>u.template===D.value)),B.value&&(a=a.filter(u=>u.status===B.value)),a});function H(a){const u=`pipeline.templateLabels.${a}`,y=e(u);return y===u?a:y}function Q(a){return{feature:"green",bugfix:"red",refactor:"purple","security-audit":"volcano"}[a]||"default"}function w(a){const u=`pipeline.stageLabels.${a}`,y=e(u);return y===u?a:y}function X(a){const u=`pipeline.pipelineStatusLabels.${a}`,y=e(u);return y===u?a:y}function $(a){return{pending:"default",running:"processing",paused:"orange",completed:"green",failed:"red",cancelled:"default"}[a]||"default"}function ee(a){const u=`pipeline.stageStatusLabels.${a}`,y=e(u);return y===u?a:y}function V(a){return{pending:"default",running:"processing","gate-waiting":"gold",completed:"green",failed:"red",skipped:"default"}[a]||"default"}function E(a){const u=`pipeline.deployStatusLabels.${a}`,y=e(u);return y===u?a:y}function te(a){return{pending:"default",running:"processing",succeeded:"green",failed:"red","rolled-back":"orange"}[a]||"default"}function le(a){return{"git-pr":"blue",docker:"cyan","npm-publish":"magenta",local:"default",staging:"orange",custom:"purple"}[a]||"default"}function ae(a){return{pending:"gray",running:"blue","gate-waiting":"gold",completed:"green",failed:"red",skipped:"gray"}[a]||"gray"}function l(a){if(!a.stages.length)return 0;const u=a.stages.filter(y=>y.status==="completed").length;return Math.round(100*u/a.stages.length)}function c(a){if(!a.stages.length)return null;const u=Math.min(a.currentStage,a.stages.length-1);return a.stages[u]||null}function T(a){if(a.status!=="running")return!1;const u=c(a);return u&&u.status==="gate-waiting"&&u.gateRequired&&!u.gateApproved}function Se(a){return a.status==="pending"||a.status==="running"||a.status==="paused"}async function K(){_.value=!0,P.value={noDb:!1,error:""};try{const[a,u,y,O]=await Promise.all([r.execute("pipeline list",1e4).catch(()=>({output:""})),r.execute("pipeline deploys",1e4).catch(()=>({output:""})),r.execute("pipeline templates",8e3).catch(()=>({output:""})),r.execute("pipeline stats",8e3).catch(()=>({output:""}))]),se=[a,u,O].map(ne=>ie(ne.output)).find(ne=>ne.noDb);se&&(P.value=se),C.value=fe(a.output),U.value=ge(u.output),G.value=me(y.output),L.value=ye(O.output)}catch(a){x.error(e("pipeline.msg.loadFailed")+": "+(a?.message||a))}finally{_.value=!1}}async function ke(){if(!S.template){x.warning(e("pipeline.msg.selectTemplate"));return}if(S.configJson.trim())try{JSON.parse(S.configJson)}catch{x.warning(e("pipeline.msg.badConfigJson"));return}I.value=!0;try{const a=[`pipeline create --template ${S.template}`];S.name.trim()&&a.push(`--name "${S.name.trim().replace(/"/g,'\\"')}"`),S.configJson.trim()&&a.push(`--config '${S.configJson.trim().replace(/'/g,"'\\''")}'`);const{output:u}=await r.execute(a.join(" "),1e4);if(ie(u).noDb){x.error(e("pipeline.msg.needCcInit"));return}if(/error|Error|失败/i.test(u)&&!/"id"/.test(u)){x.error(e("pipeline.msg.createFailed")+": "+u.slice(0,120));return}x.success(e("pipeline.msg.createSuccess")),M.value=!1,oe(),await K()}catch(a){x.error(e("pipeline.msg.createFailed")+": "+(a?.message||a))}finally{I.value=!1}}async function Ae(a){await R(a,`pipeline start ${a.id}`,e("pipeline.msg.started"))}async function Ce(a){await R(a,`pipeline pause ${a.id}`,e("pipeline.msg.paused"))}async function Pe(a){await R(a,`pipeline resume ${a.id}`,e("pipeline.msg.resumed"))}async function he(a){await R(a,`pipeline approve ${a.id}`,e("pipeline.msg.gateApproved"))}async function xe(a){await R(a,`pipeline cancel ${a.id}`,e("pipeline.msg.cancelled"))}async function R(a,u,y){try{const{output:O}=await r.execute(u,8e3);if(/error|Error|失败/i.test(O)&&!/"id"/.test(O)){x.error(e("pipeline.msg.actionFailed")+": "+O.slice(0,120));return}x.success(y),await K()}catch(O){x.error(e("pipeline.msg.actionFailed")+": "+(O?.message||O))}}function Te(a){J.value=a,k.value=!0}function oe(){S.template="feature",S.name="",S.configJson=""}pe(K);const re={ws:r,t:e,loading:_,creating:I,pipelines:C,deploys:U,templates:G,stats:L,errorState:P,activeTab:z,templateFilter:D,statusFilter:B,showCreateModal:M,showDetailsModal:k,createForm:S,currentPipeline:J,pipelineColumns:q,deployColumns:j,filteredPipelines:Z,templateLabel:H,templateColor:Q,stageLabel:w,pipelineStatusLabel:X,pipelineStatusColor:$,stageStatusLabel:ee,stageStatusColor:V,deployStatusLabel:E,deployStatusColor:te,strategyColor:le,timelineColor:ae,pipelineProgress:l,currentStageRecord:c,needsApproval:T,canCancel:Se,loadAll:K,createPipeline:ke,startPipeline:Ae,pausePipeline:Ce,resumePipeline:Pe,approveGate:he,cancelPipeline:xe,runPipelineAction:R,viewPipelineDetails:Te,resetCreateForm:oe,ref:A,computed:W,onMounted:pe,reactive:ce,get ReloadOutlined(){return Ge},get PlusOutlined(){return Ue},get ApartmentOutlined(){return Ie},get PlayCircleOutlined(){return we},get BlockOutlined(){return je},get FileTextOutlined(){return Me},get CloudUploadOutlined(){return Ne},get ArrowRightOutlined(){return Re},get LockOutlined(){return De},get CheckCircleOutlined(){return Fe},get LoadingOutlined(){return Ee},get CloseCircleOutlined(){return Be},get ClockCircleOutlined(){return ze},get message(){return x},get useI18n(){return de},get useWsStore(){return ue},get parsePipelines(){return fe},get parseDeploys(){return ge},get parseTemplates(){return me},get parseStats(){return ye},get detectPipelineError(){return ie},get formatPipelineTime(){return Xe},get PIPELINE_STATUSES(){return _e},get STAGE_NAMES(){return qe},get TEMPLATES(){return ve},get GATE_STAGES(){return Ke}};return Object.defineProperty(re,"__isScriptSetup",{enumerable:!1,value:!0}),re}},et={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},tt={class:"page-title"},lt={class:"page-sub"},at={class:"stage-flow"},nt={class:"stage-idx"},it={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},rt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},st={key:1,style:{color:"var(--text-muted)"}},pt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},gt={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0 0 10px"}},mt={class:"tpl-stages"},yt={key:0,style:{"padding-top":"8px"}},bt={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},_t={style:{display:"flex","align-items":"center",gap:"8px","flex-wrap":"wrap"}},vt={style:{color:"var(--text-primary)","font-weight":"500"}},St={key:0,style:{color:"#52c41a","margin-left":"4px"}},kt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},At={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ct={key:0};function Pt(t,o,r,e,_,I){const C=m("a-button"),U=m("a-space"),G=m("a-alert"),L=m("a-statistic"),P=m("a-card"),z=m("a-col"),D=m("a-row"),B=m("a-radio-button"),M=m("a-radio-group"),k=m("a-tag"),S=m("a-progress"),J=m("a-popconfirm"),q=m("a-table"),j=m("a-tab-pane"),Z=m("a-tabs"),H=m("a-select-option"),Q=m("a-select"),w=m("a-form-item"),X=m("a-input"),$=m("a-textarea"),ee=m("a-form"),V=m("a-modal"),E=m("a-descriptions-item"),te=m("a-descriptions"),le=m("a-timeline-item"),ae=m("a-timeline");return s(),b("div",null,[v("div",et,[v("div",null,[v("h2",tt,p(t.$t("pipeline.title")),1),v("p",lt,p(t.$t("pipeline.subtitle")),1)]),i(U,null,{default:n(()=>[i(C,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[i(e.ReloadOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.refresh")),1)]),_:1},8,["loading"]),i(C,{type:"primary",onClick:o[0]||(o[0]=l=>e.showCreateModal=!0)},{icon:n(()=>[i(e.PlusOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.create")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(s(),g(G,{key:0,type:"info","show-icon":"",message:t.$t("pipeline.noDb.message"),description:t.$t("pipeline.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),i(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalPipelines"),value:e.stats.totalPipelines,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[i(e.ApartmentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.running"),value:e.stats.pipelinesByStatus.running||0,"value-style":{color:(e.stats.pipelinesByStatus.running||0)>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:n(()=>[i(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalStages"),value:e.stats.totalStages,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[i(e.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalArtifacts"),value:e.stats.totalArtifacts,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[i(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:24,sm:8,lg:4},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalDeploys"),value:e.stats.totalDeploys,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[i(e.CloudUploadOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Stages catalogue "),i(P,{title:t.$t("pipeline.stagesCardTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[v("div",at,[(s(!0),b(h,null,F(e.STAGE_NAMES,(l,c)=>(s(),b(h,{key:l},[v("span",{class:Oe(["stage-pill",{"is-gate":e.GATE_STAGES.includes(l)}])},[v("span",nt,p(c+1),1),f(" "+p(e.stageLabel(l))+" ",1),e.GATE_STAGES.includes(l)?(s(),g(e.LockOutlined,{key:0,class:"gate-icon"})):d("v-if",!0)],2),c<e.STAGE_NAMES.length-1?(s(),g(e.ArrowRightOutlined,{key:0,class:"stage-arrow"})):d("v-if",!0)],64))),128))])]),_:1},8,["title"]),d(" Tabs "),i(Z,{activeKey:e.activeTab,"onUpdate:activeKey":o[3]||(o[3]=l=>e.activeTab=l),class:"pipeline-tabs"},{default:n(()=>[d(" ── Pipelines tab ─────────────────────────────────────────── "),i(j,{key:"pipelines",tab:t.$t("pipeline.tabs.pipelines")},{default:n(()=>[v("div",it,[i(M,{value:e.templateFilter,"onUpdate:value":o[1]||(o[1]=l=>e.templateFilter=l),size:"small","button-style":"solid"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allTemplates")),1)]),_:1}),(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),i(M,{value:e.statusFilter,"onUpdate:value":o[2]||(o[2]=l=>e.statusFilter=l),size:"small"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allStatuses")),1)]),_:1}),(s(!0),b(h,null,F(e.PIPELINE_STATUSES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.pipelineStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),i(q,{columns:e.pipelineColumns,"data-source":e.filteredPipelines,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="name"?(s(),b(h,{key:0},[v("span",ot,p(c.name||t.$t("pipeline.table.unnamed")),1),v("div",rt,p(c.id.slice(0,16)),1)],64)):d("v-if",!0),l.key==="template"?(s(),g(k,{key:1,color:e.templateColor(c.template)},{default:n(()=>[f(p(e.templateLabel(c.template)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="progress"?(s(),g(S,{key:2,percent:e.pipelineProgress(c),size:"small",status:c.status==="failed"?"exception":c.status==="completed"?"success":"active",format:()=>`${c.currentStage}/${c.stages.length}`},null,8,["percent","status","format"])):d("v-if",!0),l.key==="currentStage"?(s(),b(h,{key:3},[e.currentStageRecord(c)?(s(),g(k,{key:0,color:e.stageStatusColor(e.currentStageRecord(c).status)},{default:n(()=>[f(p(e.stageLabel(e.currentStageRecord(c).name)),1)]),_:2},1032,["color"])):(s(),b("span",st,"—"))],64)):d("v-if",!0),l.key==="status"?(s(),g(k,{key:4,color:e.pipelineStatusColor(c.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",pt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0),l.key==="action"?(s(),b(h,{key:6},[i(C,{size:"small",type:"link",onClick:T=>e.viewPipelineDetails(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.details")),1)]),_:1},8,["onClick"]),c.status==="pending"?(s(),g(C,{key:0,size:"small",type:"link",onClick:T=>e.startPipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.start")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="running"?(s(),g(C,{key:1,size:"small",type:"link",onClick:T=>e.pausePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.pause")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="paused"?(s(),g(C,{key:2,size:"small",type:"link",onClick:T=>e.resumePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.resume")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.needsApproval(c)?(s(),g(C,{key:3,size:"small",type:"link",style:{color:"#52c41a"},onClick:T=>e.approveGate(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.approveGate")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.canCancel(c)?(s(),g(J,{key:4,title:t.$t("pipeline.table.cancelConfirm"),"ok-text":t.$t("pipeline.table.cancelOk"),"cancel-text":t.$t("pipeline.table.cancelBack"),onConfirm:T=>e.cancelPipeline(c)},{default:n(()=>[i(C,{size:"small",type:"link",danger:""},{default:n(()=>[f(p(t.$t("pipeline.table.actions.cancel")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",ct,[i(e.ApartmentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(e.templateFilter||e.statusFilter?t.$t("pipeline.table.emptyFiltered"):t.$t("pipeline.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Deploys tab ───────────────────────────────────────────── "),i(j,{key:"deploys",tab:t.$t("pipeline.tabs.deploys")},{default:n(()=>[i(q,{columns:e.deployColumns,"data-source":e.deploys,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="pipeline"?(s(),b("span",ut,p(c.pipelineId.slice(0,12)),1)):d("v-if",!0),l.key==="strategy"?(s(),g(k,{key:1,color:e.strategyColor(c.strategy),style:{"font-family":"monospace"}},{default:n(()=>[f(p(c.strategy),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="status"?(s(),g(k,{key:2,color:e.deployStatusColor(c.status)},{default:n(()=>[f(p(e.deployStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",dt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",ft,[i(e.CloudUploadOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(t.$t("pipeline.table.emptyDeploys")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Templates tab ─────────────────────────────────────────── "),i(j,{key:"templates",tab:t.$t("pipeline.tabs.templates")},{default:n(()=>[i(D,{gutter:[16,16]},{default:n(()=>[(s(!0),b(h,null,F(e.templates,l=>(s(),g(z,{key:l.name,xs:24,sm:12,lg:12},{default:n(()=>[i(P,{title:e.templateLabel(l.name),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[i(k,{color:e.templateColor(l.name)},{default:n(()=>[f(p(l.name),1)]),_:2},1032,["color"])]),default:n(()=>[v("p",gt,p(l.description),1),v("div",mt,[(s(!0),b(h,null,F(l.stages,(c,T)=>(s(),g(k,{key:c,color:l.gateStages.includes(c)?"gold":"blue",style:{"font-size":"11px"}},{default:n(()=>[f(p(T+1)+". "+p(e.stageLabel(c))+" ",1),l.gateStages.includes(c)?(s(),g(e.LockOutlined,{key:0,style:{"font-size":"10px","margin-left":"2px"}})):d("v-if",!0)]),_:2},1032,["color"]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Create pipeline modal ────────────────────────────────── "),i(V,{open:e.showCreateModal,"onUpdate:open":o[7]||(o[7]=l=>e.showCreateModal=l),title:t.$t("pipeline.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("pipeline.create_modal.ok"),"cancel-text":t.$t("pipeline.create_modal.cancel"),onOk:e.createPipeline,onCancel:e.resetCreateForm},{default:n(()=>[i(ee,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[i(w,{label:t.$t("pipeline.create_modal.templateLabel"),required:""},{default:n(()=>[i(Q,{value:e.createForm.template,"onUpdate:value":o[4]||(o[4]=l=>e.createForm.template=l)},{default:n(()=>[(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(H,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.nameLabel")},{default:n(()=>[i(X,{value:e.createForm.name,"onUpdate:value":o[5]||(o[5]=l=>e.createForm.name=l),placeholder:t.$t("pipeline.create_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.configLabel")},{default:n(()=>[i($,{value:e.createForm.configJson,"onUpdate:value":o[6]||(o[6]=l=>e.createForm.configJson=l),placeholder:t.$t("pipeline.create_modal.configPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Pipeline details modal ───────────────────────────────── "),i(V,{open:e.showDetailsModal,"onUpdate:open":o[8]||(o[8]=l=>e.showDetailsModal=l),title:t.$t("pipeline.details.title",{label:e.currentPipeline?.name||e.currentPipeline?.id?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentPipeline?(s(),b("div",yt,[i(te,{column:2,size:"small",bordered:""},{default:n(()=>[i(E,{label:t.$t("pipeline.details.template")},{default:n(()=>[i(k,{color:e.templateColor(e.currentPipeline.template)},{default:n(()=>[f(p(e.templateLabel(e.currentPipeline.template)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.status")},{default:n(()=>[i(k,{color:e.pipelineStatusColor(e.currentPipeline.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(e.currentPipeline.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.progress"),span:2},{default:n(()=>[i(S,{percent:e.pipelineProgress(e.currentPipeline),status:e.currentPipeline.status==="failed"?"exception":e.currentPipeline.status==="completed"?"success":"active",size:"small"},null,8,["percent","status"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.createdAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.createdAt)),1)]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.startedAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.startedAt)),1)]),_:1},8,["label"])]),_:1}),v("h4",bt,p(t.$t("pipeline.details.stagesHeader")),1),i(ae,{mode:"left"},{default:n(()=>[(s(!0),b(h,null,F(e.currentPipeline.stages,l=>(s(),g(le,{key:l.id,color:e.timelineColor(l.status)},{dot:n(()=>[l.status==="completed"?(s(),g(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):l.status==="running"?(s(),g(e.LoadingOutlined,{key:1,style:{color:"#1677ff"}})):l.status==="failed"?(s(),g(e.CloseCircleOutlined,{key:2,style:{color:"#ff4d4f"}})):l.status==="gate-waiting"?(s(),g(e.LockOutlined,{key:3,style:{color:"#faad14"}})):(s(),g(e.ClockCircleOutlined,{key:4,style:{color:"var(--text-muted)"}}))]),default:n(()=>[v("div",_t,[v("span",vt,p(l.stageIndex+1)+". "+p(e.stageLabel(l.name)),1),i(k,{color:e.stageStatusColor(l.status),style:{"font-size":"11px"}},{default:n(()=>[f(p(e.stageStatusLabel(l.status)),1)]),_:2},1032,["color"]),l.gateRequired?(s(),g(k,{key:0,color:"gold",style:{"font-size":"10px"}},{default:n(()=>[i(e.LockOutlined),f(" "+p(t.$t("pipeline.details.needsApproval"))+" ",1),l.gateApproved?(s(),b("span",St,p(t.$t("pipeline.details.approved")),1)):d("v-if",!0)]),_:2},1024)):d("v-if",!0)]),l.errorMessage?(s(),b("div",kt,p(t.$t("pipeline.details.errorPrefix"))+" "+p(l.errorMessage),1)):d("v-if",!0),l.startedAt?(s(),b("div",At,[f(p(e.formatPipelineTime(l.startedAt))+" ",1),l.completedAt?(s(),b("span",Ct," → "+p(e.formatPipelineTime(l.completedAt)),1)):d("v-if",!0)])):d("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})])):d("v-if",!0)]),_:1},8,["open","title"])])}const Lt=Le($e,[["render",Pt],["__scopeId","data-v-ee23c547"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Pipeline.vue"]]);export{Lt as default};
@@ -1 +0,0 @@
1
- import{I as b,J as y,U as g,R as r,c as o,K as i,V as m,o as ne,a as G,b as N,r as k,P as c,Q as v,F,Z as z,S as C,$ as ze}from"./vendor-BvqAck49.js";import{_ as Ee,u as re,b as se,d as f}from"./index-BcRDjaEi.js";import{s as je}from"./community-parser-CO25nZFt.js";import{a$ as we,r as Ue,Y as Be,_ as Ne,q as He,as as Ie,R as qe}from"./icons-DP3uiYxy.js";function W(t){const a=je(t);if(!a)return null;try{return JSON.parse(a)}catch{}const s=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const De=Object.freeze(["initializing","training","aggregating","completed","failed"]),Je=Object.freeze(["pending","computing","completed"]),Ve=Object.freeze(["shamir","beaver","gmw"]),Ke=Object.freeze(["laplace","gaussian","exponential"]),We=Object.freeze(["paillier","bfv","ckks"]),Ze=Object.freeze(["sum","product","mean","count"]);function h(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function Qe(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,name:String(t.name||s),description:String(t.description||""),_idx:a}:null}function ae(t){const a=W(t);return Array.isArray(a)?a.map(Qe).filter(Boolean):[]}function Ye(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,name:String(t.name||""),modelType:t.modelType??t.model_type??"neural_network",architecture:String(t.architecture||""),status:String(t.status||"initializing").toLowerCase(),currentRound:h(t.currentRound??t.current_round,0),totalRounds:h(t.totalRounds??t.total_rounds,0),participantCount:h(t.participantCount??t.participant_count,0),accuracy:h(t.accuracy,0),loss:t.loss==null?null:h(t.loss,null),learningRate:h(t.learningRate??t.learning_rate,0),aggregationStrategy:t.aggregationStrategy??t.aggregation_strategy??"",privacyBudgetSpent:h(t.privacyBudgetSpent??t.privacy_budget_spent,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:a}:null}function ue(t){const a=W(t);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}function Ge(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;let e=t.participantIds??t.participant_ids??[];if(typeof e=="string")try{e=JSON.parse(e)}catch{e=[]}return Array.isArray(e)||(e=[]),{key:s,id:s,computationType:t.computationType??t.computation_type??"",protocol:String(t.protocol||"shamir").toLowerCase(),participantCount:h(t.participantCount??t.participant_count,0),participantIds:e,resultHash:t.resultHash??t.result_hash??null,status:String(t.status||"pending").toLowerCase(),sharesReceived:h(t.sharesReceived??t.shares_received,0),sharesRequired:h(t.sharesRequired??t.shares_required,0),computationTimeMs:t.computationTimeMs??t.computation_time_ms??null,errorMessage:t.errorMessage??t.error_message??"",createdAt:t.createdAt??t.created_at??null,completedAt:t.completedAt??t.completed_at??null,_idx:a}}function ce(t){const a=W(t);return Array.isArray(a)?a.map(Ge).filter(Boolean):[]}function de(t){const a=W(t);return!a||typeof a!="object"||Array.isArray(a)?null:{published:!!a.published,reason:a.reason||null,data:a.data??null,epsilon:h(a.epsilon,0),delta:h(a.delta,0),mechanism:String(a.mechanism||""),budgetSpent:h(a.budgetSpent??a.budget_spent,0),budgetRemaining:h(a.budgetRemaining??a.budget_remaining,0)}}function pe(t){const a=W(t);return!a||typeof a!="object"||Array.isArray(a)?null:{result:a.result??null,operation:String(a.operation||""),scheme:String(a.scheme||""),inputCount:h(a.inputCount??a.input_count,0),encrypted:a.encrypted!==!1}}const Xe={privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}};function me(t){const a=JSON.parse(JSON.stringify(Xe)),s=W(t);if(!s||typeof s!="object"||Array.isArray(s))return a;if(s.privacyBudget&&typeof s.privacyBudget=="object"&&(a.privacyBudget.spent=h(s.privacyBudget.spent,0),a.privacyBudget.limit=h(s.privacyBudget.limit,0),a.privacyBudget.remaining=h(s.privacyBudget.remaining,0),a.privacyBudget.exhausted=!!s.privacyBudget.exhausted),s.federatedLearning&&typeof s.federatedLearning=="object"&&(a.federatedLearning.totalModels=h(s.federatedLearning.totalModels,0),a.federatedLearning.completed=h(s.federatedLearning.completed,0),a.federatedLearning.training=h(s.federatedLearning.training,0),a.federatedLearning.avgAccuracy=h(s.federatedLearning.avgAccuracy,0)),s.mpc&&typeof s.mpc=="object"&&(a.mpc.totalComputations=h(s.mpc.totalComputations,0),a.mpc.completed=h(s.mpc.completed,0),a.mpc.pending=h(s.mpc.pending,0),s.mpc.byProtocol&&typeof s.mpc.byProtocol=="object"))for(const[e,j]of Object.entries(s.mpc.byProtocol))typeof j=="number"&&Number.isFinite(j)&&(a.mpc.byProtocol[e]=j);return a}function $e(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Privacy",setup(t,{expose:a}){a();const s=re(),{t:e}=se(),j=k(!1),H=k(!1),E=k(!1),w=k(!1),Z=k(""),Q=k(""),X=k([]),P=k([]),O=k([]),L=k([]),I=k([]),R=k({privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}}),M=k("models"),T=k(""),q=k(""),Y=k(""),D=k(!1),J=k(!1),$=k(!1),U=k(!1),p=G({name:"",modelType:"",architecture:"",rounds:10,lr:.01,participants:0}),S=G({type:"",protocol:"shamir",participants:"",threshold:null}),x=G({data:"",mechanism:"laplace",epsilon:.1,delta:1e-5,sensitivity:1}),A=G({data:"",operation:"sum",scheme:"paillier"}),V=k(null),K=k(null),ee=N(()=>[{title:e("privacy.modelCols.name"),key:"name"},{title:e("privacy.modelCols.status"),key:"status",width:"120px"},{title:e("privacy.modelCols.progress"),key:"progress",width:"160px"},{title:e("privacy.modelCols.accuracy"),key:"accuracy",width:"110px"},{title:e("privacy.modelCols.participants"),key:"participants",width:"90px"},{title:e("privacy.modelCols.budget"),key:"budget",width:"100px"},{title:e("privacy.modelCols.updatedAt"),key:"updatedAt",width:"160px"},{title:e("privacy.modelCols.action"),key:"action",width:"180px"}]),l=N(()=>[{title:e("privacy.computationCols.type"),key:"type",width:"160px"},{title:e("privacy.computationCols.protocol"),key:"protocol",width:"100px"},{title:e("privacy.computationCols.progress"),key:"progress"},{title:e("privacy.computationCols.status"),key:"status",width:"110px"},{title:e("privacy.computationCols.time"),key:"time",width:"110px"},{title:e("privacy.computationCols.createdAt"),key:"createdAt",width:"160px"},{title:e("privacy.computationCols.action"),key:"action",width:"160px"}]),d=N(()=>R.value.federatedLearning.avgAccuracy*100),te=N(()=>{const n=R.value.privacyBudget.remaining,u=R.value.privacyBudget.limit;if(u===0)return"#888";const _=n/u;return _<.2?"#ff4d4f":_<.5?"#faad14":"#52c41a"}),ye=N(()=>T.value?L.value.filter(n=>n.status===T.value):L.value),ve=N(()=>{let n=I.value;return q.value&&(n=n.filter(u=>u.protocol===q.value)),Y.value&&(n=n.filter(u=>u.status===Y.value)),n});function fe(n){const u=`privacy.flStatusLabels.${n}`,_=e(u);return _===u?n:_}function ge(n){return{initializing:"default",training:"processing",aggregating:"cyan",completed:"green",failed:"red"}[n]||"default"}function be(n){const u=`privacy.mpcStatusLabels.${n}`,_=e(u);return _===u?n:_}function he(n){return{pending:"default",computing:"processing",completed:"green"}[n]||"default"}function _e(n){return n>=.85?"#52c41a":n>=.6?"#faad14":"#ff4d4f"}function ke(n){return n.status==="initializing"||n.status==="training"||n.status==="aggregating"}function Se({key:n}){n==="model"?D.value=!0:n==="computation"?J.value=!0:n==="dp"?(V.value=null,$.value=!0):n==="he"&&(K.value=null,U.value=!0)}async function B(){j.value=!0;try{const[n,u,_,Pe,Ae,Te]=await Promise.all([s.execute("privacy protocols --json",8e3).catch(()=>({output:""})),s.execute("privacy dp-mechanisms --json",8e3).catch(()=>({output:""})),s.execute("privacy he-schemes --json",8e3).catch(()=>({output:""})),s.execute("privacy models --limit 100 --json",1e4).catch(()=>({output:""})),s.execute("privacy computations --limit 100 --json",1e4).catch(()=>({output:""})),s.execute("privacy report --json",8e3).catch(()=>({output:""}))]);X.value=ae(n.output),P.value=ae(u.output),O.value=ae(_.output),L.value=ue(Pe.output),I.value=ce(Ae.output),R.value=me(Te.output)}catch(n){f.error(e("privacy.msg.loadFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function Ce(){if(!p.name.trim()){f.warning(e("privacy.msg.modelNameEmpty"));return}H.value=!0;try{const n=[`privacy create-model "${p.name.trim().replace(/"/g,'\\"')}"`];p.modelType.trim()&&n.push(`--type "${p.modelType.trim().replace(/"/g,'\\"')}"`),p.architecture.trim()&&n.push(`--arch "${p.architecture.trim().replace(/"/g,'\\"')}"`),p.rounds!=null&&n.push(`--rounds ${p.rounds}`),p.lr!=null&&n.push(`--lr ${p.lr}`),p.participants!=null&&n.push(`--participants ${p.participants}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),12e3);if(/error|失败/i.test(u)&&!/"modelId"/.test(u)){f.error(e("privacy.msg.modelCreateFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.modelCreateSuccess")),D.value=!1,le(),await B()}catch(n){f.error(e("privacy.msg.modelCreateFailed")+": "+(n?.message||n))}finally{H.value=!1}}async function Fe(){if(!S.type.trim()){f.warning(e("privacy.msg.computationTypeEmpty"));return}H.value=!0;try{const n=[`privacy create-computation "${S.type.trim().replace(/"/g,'\\"')}"`];if(n.push(`--protocol ${S.protocol}`),S.participants.trim()){const _=S.participants.split(/[,\s]+/).filter(Boolean).join(",");_&&n.push(`--participants "${_}"`)}S.threshold!=null&&n.push(`--threshold ${S.threshold}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4);if(/error|失败|invalid/i.test(u)&&!/"computationId"/.test(u)){f.error(e("privacy.msg.computationCreateFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.computationCreateSuccess")),J.value=!1,oe(),M.value="computations",await B()}catch(n){f.error(e("privacy.msg.computationCreateFailed")+": "+(n?.message||n))}finally{H.value=!1}}async function xe(n){Z.value=n.id;try{const{output:u}=await s.execute(`privacy train ${n.id} --json`,12e3);if(/error|失败/i.test(u)&&!/"trained"/.test(u)){f.error(e("privacy.msg.trainFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.trainSuccess")),await B()}catch(u){f.error(e("privacy.msg.trainFailed")+": "+(u?.message||u))}finally{Z.value=""}}async function Re(n){try{const{output:u}=await s.execute(`privacy fail-model ${n.id} --json`,8e3);if(/error/i.test(u)&&!/"failed"/.test(u)){f.error(e("privacy.msg.failMarkFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.failMarkSuccess")),await B()}catch(u){f.error(e("privacy.msg.failMarkFailed")+": "+(u?.message||u))}}async function Oe(n){Q.value=n.id;try{const{output:u}=await s.execute(`privacy submit-share ${n.id} --json`,1e4);if(/error|失败/i.test(u)&&!/"submitted"/.test(u)){f.error(e("privacy.msg.submitFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.submitSuccess")),await B()}catch(u){f.error(e("privacy.msg.submitFailed")+": "+(u?.message||u))}finally{Q.value=""}}async function Le(){if(!x.data.trim()){f.warning(e("privacy.msg.dataEmpty"));return}E.value=!0,V.value=null;try{const n=["privacy dp-publish"];n.push(`--data ${JSON.stringify(x.data.trim())}`),n.push(`--mechanism ${x.mechanism}`),x.epsilon!=null&&n.push(`--epsilon ${x.epsilon}`),x.delta!=null&&n.push(`--delta ${x.delta}`),x.sensitivity!=null&&n.push(`--sensitivity ${x.sensitivity}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4),_=de(u);if(!_){f.error(e("privacy.msg.dpFailed")+": "+u.slice(0,120));return}V.value=_,_.published?(f.success(e("privacy.msg.dpSuccess")),await B()):f.warning(e("privacy.msg.dpRejected",{reason:_.reason||"unknown"}))}catch(n){f.error(e("privacy.msg.dpFailed")+": "+(n?.message||n))}finally{E.value=!1}}async function Me(){if(!A.data.trim()){f.warning(e("privacy.msg.dataEmpty"));return}try{JSON.parse(A.data)}catch{f.warning(e("privacy.msg.dataInvalidJson"));return}w.value=!0,K.value=null;try{const n=["privacy he-query"];n.push(`--data ${JSON.stringify(A.data.trim())}`),n.push(`--operation ${A.operation}`),n.push(`--scheme ${A.scheme}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4),_=pe(u);if(!_){f.error(e("privacy.msg.heFailed")+": "+u.slice(0,120));return}K.value=_,f.success(e("privacy.msg.heSuccess",{scheme:_.scheme,op:_.operation}))}catch(n){f.error(e("privacy.msg.heFailed")+": "+(n?.message||n))}finally{w.value=!1}}function le(){p.name="",p.modelType="",p.architecture="",p.rounds=10,p.lr=.01,p.participants=0}function oe(){S.type="",S.protocol="shamir",S.participants="",S.threshold=null}ne(B);const ie={ws:s,t:e,loading:j,creating:H,publishing:E,querying:w,trainingId:Z,submittingShareId:Q,protocols:X,dpMechanisms:P,heSchemes:O,models:L,computations:I,report:R,activeTab:M,modelStatusFilter:T,mpcProtocolFilter:q,mpcStatusFilter:Y,showModelModal:D,showComputationModal:J,showDPModal:$,showHEModal:U,modelForm:p,computationForm:S,dpForm:x,heForm:A,dpResult:V,heResult:K,modelColumns:ee,computationColumns:l,avgAccuracyPct:d,budgetColor:te,filteredModels:ye,filteredComputations:ve,flStatusLabel:fe,flStatusColor:ge,mpcStatusLabel:be,mpcStatusColor:he,accuracyColor:_e,canTrain:ke,handleNewClick:Se,loadAll:B,createModel:Ce,createComputation:Fe,trainOne:xe,failModel:Re,submitShare:Oe,publishDP:Le,queryHE:Me,resetModelForm:le,resetComputationForm:oe,ref:k,computed:N,onMounted:ne,reactive:G,get ReloadOutlined(){return qe},get PlusOutlined(){return Ie},get ExperimentOutlined(){return He},get ApartmentOutlined(){return Ne},get LockOutlined(){return Be},get SafetyOutlined(){return Ue},get RiseOutlined(){return we},get message(){return f},get useI18n(){return se},get useWsStore(){return re},get parseCatalog(){return ae},get parseModels(){return ue},get parseComputations(){return ce},get parseDPResult(){return de},get parseHEResult(){return pe},get parseReport(){return me},get formatPrivacyTime(){return $e},get FL_STATUSES(){return De},get MPC_STATUSES(){return Je},get MPC_PROTOCOLS(){return Ve},get DP_MECHANISMS(){return Ke},get HE_SCHEMES(){return We},get HE_OPERATIONS(){return Ze}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},at={class:"page-title"},lt={class:"page-sub"},ot={style:{"font-size":"11px",color:"var(--text-secondary)"}},it={class:"catalog-name"},nt={class:"catalog-desc"},rt={class:"catalog-name"},st={class:"catalog-desc"},ut={class:"catalog-name"},ct={class:"catalog-desc"},dt={class:"filter-bar"},pt={style:{color:"var(--text-primary)","font-weight":"500"}},mt={style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},yt={style:{"font-size":"11px",color:"var(--text-secondary)"}},vt={key:0,style:{"font-size":"11px",color:"var(--text-secondary)"}},ft={key:5,style:{"font-family":"monospace",color:"var(--text-secondary)"}},gt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},bt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ht={class:"filter-bar"},_t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},kt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)"}},Ct={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Ft={key:1,style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},xt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Rt={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Ot={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}};function Lt(t,a,s,e,j,H){const E=b("a-button"),w=b("a-menu-item"),Z=b("a-menu"),Q=b("a-dropdown"),X=b("a-space"),P=b("a-statistic"),O=b("a-card"),L=b("a-col"),I=b("a-row"),R=b("a-tag"),M=b("a-radio-button"),T=b("a-radio-group"),q=b("a-progress"),Y=b("a-popconfirm"),D=b("a-table"),J=b("a-tab-pane"),$=b("a-tabs"),U=b("a-input"),p=b("a-form-item"),S=b("a-input-number"),x=b("a-form"),A=b("a-modal"),V=b("a-select-option"),K=b("a-select"),ee=b("a-textarea");return c(),y("div",null,[g("div",tt,[g("div",null,[g("h2",at,r(t.$t("privacy.title")),1),g("p",lt,r(t.$t("privacy.subtitle")),1)]),o(X,null,{default:i(()=>[o(E,{loading:e.loading,onClick:e.loadAll},{icon:i(()=>[o(e.ReloadOutlined)]),default:i(()=>[v(" "+r(t.$t("privacy.refresh")),1)]),_:1},8,["loading"]),o(Q,{trigger:["click"]},{overlay:i(()=>[o(Z,{onClick:e.handleNewClick},{default:i(()=>[o(w,{key:"model"},{default:i(()=>[o(e.ExperimentOutlined),v(" "+r(t.$t("privacy.actions.model")),1)]),_:1}),o(w,{key:"computation"},{default:i(()=>[o(e.ApartmentOutlined),v(" "+r(t.$t("privacy.actions.computation")),1)]),_:1}),o(w,{key:"dp"},{default:i(()=>[o(e.LockOutlined),v(" "+r(t.$t("privacy.actions.dp")),1)]),_:1}),o(w,{key:"he"},{default:i(()=>[o(e.SafetyOutlined),v(" "+r(t.$t("privacy.actions.he")),1)]),_:1})]),_:1})]),default:i(()=>[o(E,{type:"primary"},{icon:i(()=>[o(e.PlusOutlined)]),default:i(()=>[v(" "+r(t.$t("privacy.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),m(" Stat cards "),o(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:i(()=>[o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.models"),value:e.report.federatedLearning.totalModels,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:i(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.avgAccuracy"),value:e.avgAccuracyPct,precision:1,suffix:"%","value-style":{color:e.report.federatedLearning.avgAccuracy>=.8?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:i(()=>[o(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.computations"),value:e.report.mpc.totalComputations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:i(()=>[o(e.ApartmentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.budget"),value:e.report.privacyBudget.remaining,precision:2,"value-style":{color:e.budgetColor,fontSize:"20px"}},{prefix:i(()=>[o(e.LockOutlined)]),suffix:i(()=>[g("span",ot,"/ "+r(e.report.privacyBudget.limit),1)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8,lg:4},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.budgetState"),value:e.report.privacyBudget.exhausted?t.$t("privacy.stats.exhausted"):t.$t("privacy.stats.ample"),"value-style":{color:e.report.privacyBudget.exhausted?"#ff4d4f":"#52c41a",fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),m(" Catalogue cards "),o(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:i(()=>[o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.protocols"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.protocols,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"purple",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",it,r(l.name),1),g("span",nt,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1}),o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.dp"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.dpMechanisms,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"orange",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",rt,r(l.name),1),g("span",st,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1}),o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.he"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.heSchemes,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"cyan",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",ut,r(l.name),1),g("span",ct,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1})]),_:1}),m(" Tabs "),o($,{activeKey:e.activeTab,"onUpdate:activeKey":a[3]||(a[3]=l=>e.activeTab=l),class:"privacy-tabs"},{default:i(()=>[m(" ── FL models tab ─────────────────────────────────────────── "),o(J,{key:"models",tab:t.$t("privacy.tabs.models")},{default:i(()=>[g("div",dt,[o(T,{value:e.modelStatusFilter,"onUpdate:value":a[0]||(a[0]=l=>e.modelStatusFilter=l),size:"small","button-style":"solid"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.all")),1)]),_:1}),(c(!0),y(F,null,z(e.FL_STATUSES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(e.flStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(D,{columns:e.modelColumns,"data-source":e.filteredModels,pagination:{pageSize:20,showTotal:l=>t.$t("privacy.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:i(({column:l,record:d})=>[l.key==="name"?(c(),y(F,{key:0},[g("span",pt,r(d.name),1),g("div",mt,r(d.modelType)+" / "+r(d.architecture),1)],64)):m("v-if",!0),l.key==="status"?(c(),C(R,{key:1,color:e.flStatusColor(d.status)},{default:i(()=>[v(r(e.flStatusLabel(d.status)),1)]),_:2},1032,["color"])):m("v-if",!0),l.key==="progress"?(c(),y(F,{key:2},[o(q,{percent:d.totalRounds?Math.round(100*d.currentRound/d.totalRounds):0,size:"small",status:d.status==="failed"?"exception":d.status==="completed"?"success":"active"},null,8,["percent","status"]),g("div",yt,r(t.$t("privacy.table.rounds",{cur:d.currentRound,total:d.totalRounds})),1)],64)):m("v-if",!0),l.key==="accuracy"?(c(),y(F,{key:3},[g("span",{style:ze({color:e.accuracyColor(d.accuracy),fontFamily:"monospace"})},r((d.accuracy*100).toFixed(1))+"% ",5),d.loss!=null?(c(),y("div",vt," loss "+r(d.loss.toFixed(3)),1)):m("v-if",!0)],64)):m("v-if",!0),l.key==="participants"?(c(),C(R,{key:4,color:"blue",style:{"font-size":"11px"}},{default:i(()=>[v(r(d.participantCount),1)]),_:2},1024)):m("v-if",!0),l.key==="budget"?(c(),y("span",ft,r(d.privacyBudgetSpent.toFixed(3)),1)):m("v-if",!0),l.key==="updatedAt"?(c(),y("span",gt,r(e.formatPrivacyTime(d.updatedAt)),1)):m("v-if",!0),l.key==="action"?(c(),y(F,{key:7},[e.canTrain(d)?(c(),C(E,{key:0,size:"small",type:"link",loading:e.trainingId===d.id,onClick:te=>e.trainOne(d)},{default:i(()=>[v(r(t.$t("privacy.table.trainOne")),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),d.status!=="failed"&&d.status!=="completed"?(c(),C(Y,{key:1,title:t.$t("privacy.table.failConfirm"),"ok-text":t.$t("privacy.table.failOk"),"cancel-text":t.$t("privacy.table.failCancel"),onConfirm:te=>e.failModel(d)},{default:i(()=>[o(E,{size:"small",type:"link",danger:""},{default:i(()=>[v(r(t.$t("privacy.table.failMark")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:i(()=>[g("div",bt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),v(" "+r(e.modelStatusFilter?t.$t("privacy.table.emptyModelsFiltered"):t.$t("privacy.table.emptyModels")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── MPC computations tab ──────────────────────────────────── "),o(J,{key:"computations",tab:t.$t("privacy.tabs.computations")},{default:i(()=>[g("div",ht,[o(T,{value:e.mpcProtocolFilter,"onUpdate:value":a[1]||(a[1]=l=>e.mpcProtocolFilter=l),size:"small"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.allProtocols")),1)]),_:1}),(c(!0),y(F,null,z(e.MPC_PROTOCOLS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(T,{value:e.mpcStatusFilter,"onUpdate:value":a[2]||(a[2]=l=>e.mpcStatusFilter=l),size:"small"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.allStatuses")),1)]),_:1}),(c(!0),y(F,null,z(e.MPC_STATUSES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(e.mpcStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(D,{columns:e.computationColumns,"data-source":e.filteredComputations,pagination:{pageSize:20,showTotal:l=>t.$t("privacy.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:i(({column:l,record:d})=>[l.key==="type"?(c(),y("span",_t,r(d.computationType),1)):m("v-if",!0),l.key==="protocol"?(c(),C(R,{key:1,color:"purple",style:{"font-family":"monospace"}},{default:i(()=>[v(r(d.protocol),1)]),_:2},1024)):m("v-if",!0),l.key==="progress"?(c(),C(q,{key:2,percent:d.sharesRequired?Math.round(100*d.sharesReceived/d.sharesRequired):0,size:"small",status:d.status==="completed"?"success":"active",format:()=>`${d.sharesReceived}/${d.sharesRequired}`},null,8,["percent","status","format"])):m("v-if",!0),l.key==="status"?(c(),C(R,{key:3,color:e.mpcStatusColor(d.status)},{default:i(()=>[v(r(e.mpcStatusLabel(d.status)),1)]),_:2},1032,["color"])):m("v-if",!0),l.key==="time"?(c(),y(F,{key:4},[d.computationTimeMs!=null?(c(),y("span",kt,r(d.computationTimeMs)+" ms ",1)):(c(),y("span",St,"—"))],64)):m("v-if",!0),l.key==="createdAt"?(c(),y("span",Ct,r(e.formatPrivacyTime(d.createdAt)),1)):m("v-if",!0),l.key==="action"?(c(),y(F,{key:6},[d.status!=="completed"?(c(),C(E,{key:0,size:"small",type:"link",loading:e.submittingShareId===d.id,onClick:te=>e.submitShare(d)},{default:i(()=>[v(r(t.$t("privacy.table.submitShare")),1)]),_:1},8,["loading","onClick"])):(c(),y("span",Ft," hash "+r(d.resultHash?.slice(0,8)||"—"),1))],64)):m("v-if",!0)]),emptyText:i(()=>[g("div",xt,[o(e.ApartmentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),v(" "+r(t.$t("privacy.table.emptyComputations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create FL model modal ─────────────────────────────────── "),o(A,{open:e.showModelModal,"onUpdate:open":a[10]||(a[10]=l=>e.showModelModal=l),title:t.$t("privacy.model_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("privacy.model_modal.ok"),"cancel-text":t.$t("privacy.model_modal.cancel"),onOk:e.createModel,onCancel:e.resetModelForm},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.model_modal.nameLabel"),required:""},{default:i(()=>[o(U,{value:e.modelForm.name,"onUpdate:value":a[4]||(a[4]=l=>e.modelForm.name=l),placeholder:t.$t("privacy.model_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.typeLabel")},{default:i(()=>[o(U,{value:e.modelForm.modelType,"onUpdate:value":a[5]||(a[5]=l=>e.modelForm.modelType=l),placeholder:t.$t("privacy.model_modal.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.archLabel")},{default:i(()=>[o(U,{value:e.modelForm.architecture,"onUpdate:value":a[6]||(a[6]=l=>e.modelForm.architecture=l),placeholder:t.$t("privacy.model_modal.archPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.roundsLabel")},{default:i(()=>[o(S,{value:e.modelForm.rounds,"onUpdate:value":a[7]||(a[7]=l=>e.modelForm.rounds=l),min:1,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.lrLabel")},{default:i(()=>[o(S,{value:e.modelForm.lr,"onUpdate:value":a[8]||(a[8]=l=>e.modelForm.lr=l),min:0,max:1,step:.001,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.participantsLabel")},{default:i(()=>[o(S,{value:e.modelForm.participants,"onUpdate:value":a[9]||(a[9]=l=>e.modelForm.participants=l),min:0,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Create MPC computation modal ─────────────────────────── "),o(A,{open:e.showComputationModal,"onUpdate:open":a[15]||(a[15]=l=>e.showComputationModal=l),title:t.$t("privacy.computation_modal.title"),"confirm-loading":e.creating,width:520,"ok-text":t.$t("privacy.computation_modal.ok"),"cancel-text":t.$t("privacy.computation_modal.cancel"),onOk:e.createComputation,onCancel:e.resetComputationForm},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.computation_modal.typeLabel"),required:""},{default:i(()=>[o(U,{value:e.computationForm.type,"onUpdate:value":a[11]||(a[11]=l=>e.computationForm.type=l),placeholder:t.$t("privacy.computation_modal.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.protocolLabel")},{default:i(()=>[o(K,{value:e.computationForm.protocol,"onUpdate:value":a[12]||(a[12]=l=>e.computationForm.protocol=l)},{default:i(()=>[(c(!0),y(F,null,z(e.MPC_PROTOCOLS,l=>(c(),C(V,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.participantsLabel")},{default:i(()=>[o(ee,{value:e.computationForm.participants,"onUpdate:value":a[13]||(a[13]=l=>e.computationForm.participants=l),placeholder:t.$t("privacy.computation_modal.participantsPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.thresholdLabel")},{default:i(()=>[o(S,{value:e.computationForm.threshold,"onUpdate:value":a[14]||(a[14]=l=>e.computationForm.threshold=l),min:2,max:100,placeholder:t.$t("privacy.computation_modal.thresholdPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── DP publish modal ─────────────────────────────────────── "),o(A,{open:e.showDPModal,"onUpdate:open":a[21]||(a[21]=l=>e.showDPModal=l),title:t.$t("privacy.dp_modal.title"),"confirm-loading":e.publishing,width:520,"ok-text":t.$t("privacy.dp_modal.ok"),"cancel-text":t.$t("privacy.dp_modal.cancel"),onOk:e.publishDP},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.dp_modal.dataLabel"),required:""},{default:i(()=>[o(U,{value:e.dpForm.data,"onUpdate:value":a[16]||(a[16]=l=>e.dpForm.data=l),placeholder:t.$t("privacy.dp_modal.dataPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.mechanismLabel")},{default:i(()=>[o(T,{value:e.dpForm.mechanism,"onUpdate:value":a[17]||(a[17]=l=>e.dpForm.mechanism=l)},{default:i(()=>[(c(!0),y(F,null,z(e.DP_MECHANISMS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.epsilonLabel")},{default:i(()=>[o(S,{value:e.dpForm.epsilon,"onUpdate:value":a[18]||(a[18]=l=>e.dpForm.epsilon=l),min:0,step:.01,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.deltaLabel")},{default:i(()=>[o(S,{value:e.dpForm.delta,"onUpdate:value":a[19]||(a[19]=l=>e.dpForm.delta=l),min:0,step:1e-6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.sensitivityLabel")},{default:i(()=>[o(S,{value:e.dpForm.sensitivity,"onUpdate:value":a[20]||(a[20]=l=>e.dpForm.sensitivity=l),min:0,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),e.dpResult?(c(),C(O,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:i(()=>[e.dpResult.published?(c(),y(F,{key:0},[o(P,{title:t.$t("privacy.dp_modal.noisedTitle"),value:e.dpResult.data,precision:3,"value-style":{color:"#52c41a"}},null,8,["title","value"]),g("div",Rt,[g("div",null,r(t.$t("privacy.dp_modal.spentLine",{n:e.dpResult.budgetSpent.toFixed(3)})),1),g("div",null,r(t.$t("privacy.dp_modal.remainingLine",{n:e.dpResult.budgetRemaining.toFixed(3)})),1),g("div",null,r(t.$t("privacy.dp_modal.mechanismLine",{name:e.dpResult.mechanism,epsilon:e.dpResult.epsilon})),1)])],64)):(c(),C(P,{key:1,title:t.$t("privacy.dp_modal.failedTitle"),value:e.dpResult.reason||"unknown","value-style":{color:"#ff4d4f"}},null,8,["title","value"]))]),_:1})):m("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── HE query modal ───────────────────────────────────────── "),o(A,{open:e.showHEModal,"onUpdate:open":a[25]||(a[25]=l=>e.showHEModal=l),title:t.$t("privacy.he_modal.title"),"confirm-loading":e.querying,width:500,"ok-text":t.$t("privacy.he_modal.ok"),"cancel-text":t.$t("privacy.he_modal.cancel"),onOk:e.queryHE},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.he_modal.dataLabel"),required:""},{default:i(()=>[o(ee,{value:e.heForm.data,"onUpdate:value":a[22]||(a[22]=l=>e.heForm.data=l),placeholder:t.$t("privacy.he_modal.dataPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.he_modal.operationLabel")},{default:i(()=>[o(T,{value:e.heForm.operation,"onUpdate:value":a[23]||(a[23]=l=>e.heForm.operation=l)},{default:i(()=>[(c(!0),y(F,null,z(e.HE_OPERATIONS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.he_modal.schemeLabel")},{default:i(()=>[o(T,{value:e.heForm.scheme,"onUpdate:value":a[24]||(a[24]=l=>e.heForm.scheme=l)},{default:i(()=>[(c(!0),y(F,null,z(e.HE_SCHEMES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),e.heResult?(c(),C(O,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:i(()=>[o(P,{title:t.$t("privacy.he_modal.resultTitle"),value:e.heResult.result,"value-style":{color:"#1677ff"}},null,8,["title","value"]),g("div",Ot,[g("div",null,r(t.$t("privacy.he_modal.schemeLine",{name:e.heResult.scheme})),1),g("div",null,r(t.$t("privacy.he_modal.operationLine",{name:e.heResult.operation})),1),g("div",null,r(t.$t("privacy.he_modal.inputCountLine",{n:e.heResult.inputCount})),1),e.heResult.encrypted?(c(),C(R,{key:0,color:"green",style:{"margin-top":"4px","font-size":"10px"}},{default:i(()=>[v(r(t.$t("privacy.he_modal.encrypted")),1)]),_:1})):m("v-if",!0)])]),_:1})):m("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const zt=Ee(et,[["render",Lt],["__scopeId","data-v-f7af818f"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Privacy.vue"]]);export{zt as default};
@@ -1 +0,0 @@
1
- import{I as y,J as _,U as b,R as i,c as a,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-BvqAck49.js";import{_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-BcRDjaEi.js";import{s as Ue}from"./community-parser-CO25nZFt.js";import{o as ze,aV as Re,aA as Ee,aT as Me,aW as Ne,F as je,ak as Je,aP as De,R as Le}from"./icons-DP3uiYxy.js";function W(s){const n=Ue(s);if(!n)return null;try{return JSON.parse(n)}catch{}const t=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!t)return null;try{return JSON.parse(t[0])}catch{return null}}const Be=Object.freeze(["note","post","article","document"]),We=Object.freeze(["pending","viewed","dismissed"]);function I(s,n=0){return typeof s=="number"&&Number.isFinite(s)?s:n}function pe(s){if(!s||typeof s!="object"||Array.isArray(s))return{};const n={};for(const[t,e]of Object.entries(s))typeof e=="number"&&Number.isFinite(e)&&(n[t]=e);return n}function Ye(s,n=0){if(!s||typeof s!="object")return null;const t=s.user_id??s.userId??"";if(!t)return null;const e=s.topics&&typeof s.topics=="object"&&!Array.isArray(s.topics)?pe(s.topics):{},z=s.interaction_weights??s.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(s.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:I(s.decay_factor??s.decayFactor,.9),lastUpdated:s.last_updated??s.lastUpdated??null,updateCount:I(s.update_count??s.updateCount,0),_idx:n}}function ye(s){const n=W(s);return Array.isArray(n)?n.map(Ye).filter(Boolean):[]}function Ve(s,n=0){if(!s||typeof s!="object")return null;const t=s.id||"";return t?{key:t,id:t,userId:s.user_id??s.userId??"",contentId:s.content_id??s.contentId??"",contentType:String(s.content_type??s.contentType??"note").toLowerCase(),title:String(s.title||""),score:I(s.score,0),reason:String(s.reason||""),source:String(s.source||"heuristic"),status:String(s.status||"pending").toLowerCase(),feedback:s.feedback??null,createdAt:s.created_at??s.createdAt??null,viewedAt:s.viewed_at??s.viewedAt??null,_idx:n}:null}function ge(s){const n=W(s);return Array.isArray(n)?n.map(Ve).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(s){const n={...Ge},t=W(s);return!t||typeof t!="object"||Array.isArray(t)||(n.total=I(t.total,0),n.pending=I(t.pending,0),n.viewed=I(t.viewed,0),n.dismissed=I(t.dismissed,0),n.feedbackCount=I(t.feedbackCount,0),n.feedbackRate=I(t.feedbackRate,0),n.avgScore=I(t.avgScore,0)),n}function ve(s){const n=W(s);return Array.isArray(n)?n.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:I(t.weight,0)})):[]}function ke(s){const n=W(s);return Array.isArray(n)?n.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:I(t.amount,0)})):[]}function E(s){const n=W(s);return!n||typeof n!="object"||Array.isArray(n)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(n.updated||n.deleted||n.marked||n.dismissed||n.recorded||n.applied||n.profileId),reason:n.reason?String(n.reason):"",profileId:n.profileId?String(n.profileId):null,topicCount:typeof n.topicCount=="number"?n.topicCount:null}}function Ke(s){if(s==null||s==="")return"—";const n=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(n.getTime())?String(s):n.toLocaleString("zh-CN",{hour12:!1})}const qe={__name:"Recommend",setup(s,{expose:n}){n();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),N=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),T=h([]),F=h([]),v=h(null),U=h("recs"),j=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),Q=h(null),Z=K(()=>N.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),H=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"}]),V=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 j.value&&(o=o.filter(c=>c.status===j.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 G(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function X(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 l(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:""}));N.value=ye(o),v.value&&!N.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},T.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),T.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 Te(o){Q.value=o,D.value=!0}async function Ie(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:N,recs:S,userStats:O,topInterests:T,suggestions:F,selectedUser:v,activeTab:U,statusFilter:j,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:Q,userOptions:Z,recColumns:H,profileColumns:V,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:G,statusColor:X,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:l,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Te,markViewed:Ie,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return Le},get UserAddOutlined(){return De},get UserOutlined(){return Je},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Ne},get LikeOutlined(){return Me},get StarOutlined(){return Ee},get FieldTimeOutlined(){return Re},get BulbOutlined(){return ze},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 Ke},get CONTENT_TYPE_IDS(){return Be},get RECOMMENDATION_STATUSES(){return We}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},$e={style:{color:"var(--text-secondary)","font-size":"12px"}},et={class:"type-name"},tt={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},rt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},nt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},st={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},lt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},it={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ct={key:3,style:{color:"var(--text-secondary)"}},dt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},mt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={key:1},ft={class:"interest-topic"},pt={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},yt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},gt={key:0,style:{"padding-top":"8px"}},_t={style:{"font-family":"monospace","font-size":"12px"}},vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},kt={key:1},bt={class:"interest-topic"},xt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ht={key:3,class:"weights-pre"};function Ct(s,n,t,e,z,M){const w=y("a-button"),Y=y("a-space"),N=y("a-select"),S=y("a-card"),O=y("a-statistic"),T=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),j=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"),Z=y("a-popconfirm"),H=y("a-table"),V=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),G=y("a-form-item"),X=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",Ze,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),a(Y,null,{default:r(()=>[a(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[a(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),a(w,{type:"primary",onClick:n[0]||(n[0]=l=>e.showCreateProfileModal=!0)},{icon:r(()=>[a(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),a(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",$e,i(e.t("recommend.userBar.currentUser")),1),a(N,{value:e.selectedUser,"onUpdate:value":n[1]||(n[1]=l=>e.selectedUser=l),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(()=>[a(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(()=>[a(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),a(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[a(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[a(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[a(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[a(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:24,sm:8,lg:4},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(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(()=>[a(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),a(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(()=>[a(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,q(e.CONTENT_TYPE_IDS,l=>(d(),k(T,{key:l,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(l)})},[a(v,{color:e.typeColor(l),style:{"font-family":"monospace"}},{default:r(()=>[p(i(l),1)]),_:2},1032,["color"]),b("div",et,i(e.typeLabel(l)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),a(oe,{activeKey:e.activeTab,"onUpdate:activeKey":n[4]||(n[4]=l=>e.activeTab=l),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),a(V,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",tt,[a(j,{value:e.statusFilter,"onUpdate:value":n[2]||(n[2]=l=>e.statusFilter=l),size:"small","button-style":"solid"},{default:r(()=>[a(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,q(e.RECOMMENDATION_STATUSES,l=>(d(),k(U,{key:l,value:l},{default:r(()=>[p(i(e.statusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(j,{value:e.typeFilter,"onUpdate:value":n[3]||(n[3]=l=>e.typeFilter=l),size:"small"},{default:r(()=>[a(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,q(e.CONTENT_TYPE_IDS,l=>(d(),k(U,{key:l,value:l},{default:r(()=>[p(i(e.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(H,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:l=>e.t("recommend.totals.rows",{count:l})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:l,record:m})=>[l.key==="title"?(d(),_(A,{key:0},[b("span",ot,i(m.title||e.t("recommend.noTitle")),1),b("div",rt,i(m.contentId),1)],64)):u("v-if",!0),l.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),l.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),l.key==="reason"?(d(),_("span",nt,i(m.reason),1)):u("v-if",!0),l.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),l.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",at,"—"))],64)):u("v-if",!0),l.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(()=>[a(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[a(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),a(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),a(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[a(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(Z,{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(()=>[a(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",st,[a(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 ───────────────────────────────────────── "),a(V,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[a(H,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:l=>e.t("recommend.totals.profiles",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:l,record:m})=>[l.key==="userId"?(d(),_("span",lt,i(m.userId),1)):u("v-if",!0),l.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),l.key==="decayFactor"?(d(),_("span",it,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),l.key==="updateCount"?(d(),_("span",ct,i(m.updateCount),1)):u("v-if",!0),l.key==="lastUpdated"?(d(),_("span",dt,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),l.key==="action"?(d(),_(A,{key:5},[a(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),a(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),a(Z,{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(()=>[a(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",mt,[a(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 ──────────────────────────────────── "),a(V,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[a(T,{xs:24,lg:14},{default:r(()=>[a(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",ut,[(d(!0),_(A,null,q(e.topInterests,l=>(d(),_("div",{key:l.key,class:"interest-row"},[b("span",ft,i(l.topic),1),a(J,{percent:Math.round(l.weight*100),"stroke-color":e.weightColor(l.weight),format:()=>l.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}),a(T,{xs:24,lg:10},{default:r(()=>[a(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:l})=>[a(ee,null,{default:r(()=>[a(v,{color:l.action==="boost"?"green":"orange"},{default:r(()=>[p(i(l.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",pt,i(l.topic),1),b("span",yt,"±"+i(l.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 ───────────────────────────────── "),a($,{open:e.showCreateProfileModal,"onUpdate:open":n[8]||(n[8]=l=>e.showCreateProfileModal=l),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(()=>[a(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[a(G,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[a(re,{value:e.createForm.userId,"onUpdate:value":n[5]||(n[5]=l=>e.createForm.userId=l),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[a(X,{value:e.createForm.topicsJson,"onUpdate:value":n[6]||(n[6]=l=>e.createForm.topicsJson=l),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[a(X,{value:e.createForm.weightsJson,"onUpdate:value":n[7]||(n[7]=l=>e.createForm.weightsJson=l),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 ──────────────────────────────── "),a($,{open:e.showDetailsModal,"onUpdate:open":n[9]||(n[9]=l=>e.showDetailsModal=l),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",gt,[a(ae,{column:2,size:"small",bordered:""},{default:r(()=>[a(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",_t,i(e.currentProfile.id),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",vt,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",kt,[(d(!0),_(A,null,q(e.currentProfile.topics,(l,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",bt,i(m),1),a(J,{percent:Math.round(l*100),"stroke-color":e.weightColor(l),format:()=>l.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",xt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",ht,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const Ot=Ae(qe,[["render",Ct],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Recommend.vue"]]);export{Ot as default};