chainlesschain 0.166.127 → 0.166.129

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 (183) hide show
  1. package/README.md +25 -1
  2. package/package.json +1 -1
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-DkSOwKNn.js → AIOps-CjPaaF2r.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-CaYSnkeR.js → ActionButton-_zlP_Z6z.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-D8kEgXLP.js → Analytics-C7X31L8l.js} +2 -2
  8. package/src/assets/web-panel/assets/{AppLayout-D43FaO4a.js → AppLayout-BmYa34Se.js} +3 -3
  9. package/src/assets/web-panel/assets/{Artifacts-DfxY2Gqs.js → Artifacts-B_YKNjlp.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-0ogv1Zu5.js → Audit-5JsI67XQ.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-BhLnn-Gw.js → BackgroundAgents-BL3QbzvS.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-D4591rlk.js → Backup-BRmg-gTa.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-gK1PjPDZ.js → BaseInput-DNE7mT3K.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-CCDmOYwg.js → Chat-OYwAopdM.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-Dtxw3Wgt.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-DG4PRH9M.js → Checkbox-nMgYkH8H.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-DtJxGiSg.js → Codegen-B9G2ngLI.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-4wGBC25p.js → Col-i0owJaGP.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-dOCSc8t-.js → Community-B3Ta0mI_.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-Du4kXsyN.js → Compact-DDXrvvm-.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-BbI5XMcz.js → Compliance-Bn4Uq6U1.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-CbQRpyiK.js → Cowork-CO5NKD6r.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-CtWy2bMC.js → Cron-ByjNese0.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-CzdM5hF6.js → Crosschain-BN1FUYyi.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-CcBboBJN.js → DID-CUFX5RL3.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-I7m0oCeC.js → Dashboard-D_2FDPBP.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CKIy2Ikn.js → Dropdown-lGOMtIzb.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-BNuxCq89.js → EmailListRenderer-DA3Qf1S2.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-BeBovLZs.js → EvolutionSettings-DLcnicCr.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-QThmET-n.js → FamilyGuardDashboard-BPOSaIN1.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-Bqf7YYlV.js → Federation-DzJUCQq8.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-DZAM28ve.js → FormItemContext-DVx1XNKx.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-DunXFYML.js → GenericCardRenderer-BkqzO_lh.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-BgwOjaMf.js → Git-Dr_rdT_j.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-B1za4wCP.js → Governance-DyVkZddw.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-DMPqX1oN.js → Inference-IN2YDd4v.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-ChDn3okr.js → KnowledgeGraph-Ceiy4n6N.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-BQoPB6-O.js → Logs-d7pIEAX2.js} +2 -2
  39. package/src/assets/web-panel/assets/MarkdownRenderer-DmSl0MNI.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-DZXEaPpe.js → Marketplace-uVE7U14g.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-CZbVOFaG.js → McpTools-DUfBM--y.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-Cl3T8asu.js → Memory-6gkcR02J.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DK_ayU9I.js → MobileBridge-Cl6ys2O9.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-DEWAA2gT.js → MobileProjects-5P8jN4gf.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-z-XAWzMh.js → Mtc-DtiT1Kol.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-CX7qJvQS.js → MtcAudit-DZz8iiTE.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-DiQlKgxx.js → Multisig-DFH3-fBJ.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-Ciuxcu00.js → NLProgramming-BYNuDOt-.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BAvqNw_6.js → Notes-BCY4jgYy.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DkHDTslA.js → NotificationSettings-Bk2ltghU.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer--WZdD2oV.js → OrderTableRenderer-OdeXEGAn.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-Bv6bMLCe.js → Organization-CY4_mSiV.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-Bwoz_oq1.js → Overflow-CaRUAOY_.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-De7T0ZeB.js → P2P-Bd96rBWQ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-Dblr2x25.js → PdhVaultBrowser-JjnExxan.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-C-jAt-cg.js → Permissions-CW1PUJB0.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-yXeXDMgf.js → PersonalDataHub-BNn9alTk.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline-C8CYoLOa.js → Pipeline-01_PBiUu.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-B-gwnOGT.js → Privacy-BP4DlVGb.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-CbNjHiBV.js → ProjectInit-CAMnQj4n.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-BMUY0GCP.js → ProjectSettings-DKxV5On_.js} +2 -2
  62. package/src/assets/web-panel/assets/Projects-B_4kRnM8.js +1 -0
  63. package/src/assets/web-panel/assets/{Providers-K_tlWkON.js → Providers-DeqqZyUv.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-2RSZDzJI.js → QrScannerModal-fFkycCT4.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-mhbcQRMI.js → QuickAsk-Ln6qQidy.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-BXm0uG0q.js → Recommend-DeENA-y0.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-xhOpmNZG.js → RemoteSession-CRxSYxo4.js} +3 -3
  68. package/src/assets/web-panel/assets/{Reputation-CwbCWB-3.js → Reputation-B2kU2F0l.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-BdAjmDBO.js → Row-lV_nLlFq.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-Cq4LZ9WU.js → RssFeed-Df21mCdF.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-C_I6B-4l.js → Search-8_Dz4qU9.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-CdH6mzL-.js → Security-Cl5-PEcp.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-CWu1wqtS.js → Services-C5qgCqA7.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-daw9DiVM.js → Skeleton-ASRgSh_Y.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-CmurIxkM.js → Skills-DWx01ZJ7.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-cETA5aPO.js → Sla-I2gbgtW8.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-B1llZgu3.js → SpeechSettings-BqTikzfe.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-DufZ-B2q.js → SyncSettings-D3zCpBFV.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-PfRLKTFY.js → Tasks-DjMWII45.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-DGtz-vT8.js → Templates-Cq7qDnHX.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-JeKYLN0b.js → Tenant-DEasKDpQ.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-BiMsF2Y0.js → Terminal-J6fLkTzi.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-DhcBAGPg.js → TimelineRenderer-CNvWrWN-.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-DpIg-0ju.js → Tokens-BSgHJCKH.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-DreKHxyb.js → Trigger-DgGU_D0o.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-D7ByQvBQ.js → Trust-BANlv-uB.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-OudyQByy.js → UkeySign-qh8GPRsU.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-BhU6nzCF.js → VideoEditing-DBiGTB4H.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-BCEpB6E0.js → Wallet-DMUFR7cL.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DwjAM5Mr.js → WebAuthn-DP9nQQzW.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor-ChQqlAmY.js → WorkflowEditor-DT_6jDkL.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CzUKWqTy.js → chat-C_kELmV6.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-D3Y_Pvu4.js → colors-DE-ZxAv_.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-ByyPRfkA.js → compact-item-BowulLDi.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-Dt5PF6VI.js → createContext-DCh8oMBQ.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-BVvJAp91.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-BuIaEKuC.js → hasIn-Be7mK-iw.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BO29sPX8.js → index-3Ql7xQLn.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CFXZ9lbO.js → index-4KkYmFy5.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DHzVIQLX.js → index-6OluUVJJ.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DxVLI-Iu.js → index-Ao-LXr-d.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-COsjgjvP.js → index-B-3EDOlf.js} +1 -1
  103. package/src/assets/web-panel/assets/index-B7IhCfsh.js +1 -0
  104. package/src/assets/web-panel/assets/{index-CCBm8_o4.js → index-BDIIR8g6.js} +1 -1
  105. package/src/assets/web-panel/assets/index-BMrbe_Ey.js +1 -0
  106. package/src/assets/web-panel/assets/{index-BFQGN97S.js → index-BdzVLz-c.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CmrfHS36.js → index-BlzMqaWB.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-GyTOYTFg.js → index-BwY31W-u.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CAfX0VyL.js → index-C2pCquZC.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BdvZNMNm.js → index-CKmC6ugN.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CgPKUSe4.js → index-CL2hAUWh.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BmVY2f7I.js → index-CUXfwAhF.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Di78LDr8.js → index-CXvy8HrM.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DpAqy6Co.js → index-C_VnSUjh.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DSXjiZAV.js → index-CecGCLWI.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-D51wU4q-.js → index-Ck6MYKVN.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-gg5zO3aD.js → index-Cvy4vdVW.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-1YgdY0Vq.js → index-CwJfLNqv.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-NFqKQquS.js → index-D3lOYd9_.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CDTS4qJm.js → index-DEDVYN7D.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-BwlY7Yap.js → index-DLCzaLH4.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BcqZAAr5.js → index-DMDaGPxG.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DWW5svXU.js → index-DMKo49Um.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CByWkXdO.js → index-DN1AT3FH.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-EtrWRKu2.js → index-DOebEvgn.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-D7QSTEjb.js → index-DPX3N4T8.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-F-T8AHeo.js → index-DSRKtgJg.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-B600riYP.js → index-DSqZBvQM.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BSWTyRhI.js → index-DbrQO1p9.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-huWw0XBb.js → index-DjC2TJeH.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-Dlec7Sr4.js → index-LVrxqU88.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-CZX4_hGp.js → index-OH54KMLN.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DSgroT-P.js → index-Qx8cTReg.js} +3 -3
  134. package/src/assets/web-panel/assets/{index-BztqxXMP.js → index-_cYsz4df.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-Cb7MzML-.js → index-lN916819.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-_oJnnOnZ.js → index-nLHTuHoT.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-Bny6G13G.js → initDefaultProps-BNhziAal.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-DRhRj_uM.js → motion-fUkbJz38.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-D0wKnhYr.js → move-rFx211Cl.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-BXXSTJBk.js → mtc-parser-CEP1wN3R.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-d8t9Yze4.js → omit-DacHd_Zm.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-nyB6BMe6.js → pickAttrs-Dqp58Ep2.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-CSFyBNA2.js → placementArrow-Cv6Rm0pV.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-DYmiKhJa.js → responsiveObserve-rNE0p9ZW.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-D4KZSRmt.js → slide-C97JxD4S.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-BcrcPeFm.js → statusUtils-Cxk1gV9M.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-BFgOb1vz.js → styleChecker-CbtKKsPo.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-DQ5qSQlN.js → useFlexGapSupport-CQATs2JQ.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-Cafq069l.js → useFs-6c7qrpE_.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-DTma9Ary.js → usePersonalDataHub-OjxtBGe7.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-HvC2-bE9.js → vnode-CSlXfUSh.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-AZxADWXu.js → zoom-Cc1qKiSZ.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/command-help-index.json +1 -1
  155. package/src/commands/agent.js +29 -0
  156. package/src/commands/setup.js +35 -10
  157. package/src/constants.js +15 -89
  158. package/src/data/changelog.json +27 -1
  159. package/src/lib/bm25-search.js +6 -3
  160. package/src/lib/codex-app-server-adapter.js +36 -22
  161. package/src/lib/codex-app-server-support.js +91 -0
  162. package/src/lib/coding-change-review-context.js +258 -0
  163. package/src/lib/coding-task-guidance.js +9 -1
  164. package/src/lib/context-memory-kernel/memory-query-index.js +35 -17
  165. package/src/lib/context-memory-kernel/provider-context.js +22 -12
  166. package/src/lib/goal-check-evidence.js +159 -0
  167. package/src/lib/goal-condition-engine.js +24 -2
  168. package/src/lib/llm-connection-probe.js +48 -4
  169. package/src/lib/llm-onboarding-catalog.json +131 -0
  170. package/src/lib/skill-retrieval-router.js +2 -1
  171. package/src/lib/skill-search-tokenizer.js +143 -0
  172. package/src/repl/agent-repl.js +8 -4
  173. package/src/runtime/agent-core.js +207 -42
  174. package/src/runtime/headless-runner.js +138 -66
  175. package/src/runtime/headless-stream.js +1 -0
  176. package/src/runtime/mcp-tool-search-ranking.js +142 -0
  177. package/src/runtime/mcp-tool-search.js +198 -60
  178. package/src/assets/web-panel/assets/ChatBubbleRenderer-CnpWe3dp.js +0 -1
  179. package/src/assets/web-panel/assets/MarkdownRenderer-uS1yHX12.js +0 -1
  180. package/src/assets/web-panel/assets/Projects-DpCaWXv6.js +0 -1
  181. package/src/assets/web-panel/assets/devWarning-BgSxkkQ3.js +0 -1
  182. package/src/assets/web-panel/assets/index-D5v6roiB.js +0 -1
  183. package/src/assets/web-panel/assets/index-DgXZCvH5.js +0 -1
@@ -1 +1 @@
1
- import{I as w,J as p,U as b,R as l,c as k,K as d,S,V as h,f as B,r as v,P as s,a1 as Q,a2 as T,Q as A}from"./vendor-Bn1JzzAn.js";import{u as K,_ as L,b as V}from"./index-DSgroT-P.js";import{b as N,f as U,S as I,am as j}from"./icons-DG5UD-6K.js";function F(){const n=[];let t=null,f=!1,e=null;return{push(o){if(n.push(o),t){const a=t;t=null,a()}},finish(o){if(f=!0,e=o||null,t){const a=t;t=null,a()}},async*iterate(){for(;;){for(;n.length>0;)yield n.shift();if(f){if(e)throw e;return}await new Promise(o=>{t=o})}}}}function D(){const n=K();function t(e){if(!e||!Array.isArray(e.messages))throw new Error("messages array is required");const o=F(),a=new AbortController;e.signal&&(e.signal.aborted?a.abort(e.signal.reason):e.signal.addEventListener("abort",()=>a.abort(e.signal.reason),{once:!0}));const i=n.sendStream({type:"llm.chat",messages:e.messages,options:e.options||{}},{onChunk:r=>o.push(r),onStatus:e.onStatus,idleMs:e.idleMs??21e4,followServerTimeout:e.idleMs==null,signal:a.signal}).then(r=>(o.finish(null),r),r=>{throw o.finish(r),r});function c(){a.signal.aborted||a.abort(new Error("aborted"))}return{stream:o.iterate(),result:i,cancel:c}}async function f(e){const o=typeof e.onDelta=="function"?e.onDelta:()=>{},{stream:a,result:i}=t(e);try{for await(const c of a)o(c)}catch{}return i}return{chat:t,chatTo:f}}const H={__name:"QuickAsk",setup(n,{expose:t}){t();const f=D(),{t:e}=V(),o=v(""),a=v(""),i=v(""),c=v(!1),r=v(""),y=v(null),_=v("");let m=null;async function C(){if(!(c.value||!o.value.trim())){c.value=!0,i.value="",r.value="",y.value=null,_.value="";try{const g=[{role:"user",content:o.value}],z={},P=a.value.trim();P&&(z.model=P);const x=f.chat({messages:g,options:z,onStatus:u=>{u?.stage==="waiting"&&(_.value=e("quickAsk.waitingForProvider",{provider:u.provider||"",model:u.model||"",seconds:Math.ceil((u.timeoutMs||18e4)/1e3)}))}});m=x;try{for await(const u of x.stream)u?.content?i.value=u.content:u?.delta&&(i.value+=u.delta)}catch{}const q=await x.result;y.value={model:q?.model||null,tokens:q?.tokens??null},!i.value&&q?.message?.content&&(i.value=q.message.content)}catch(g){r.value=g?.message||String(g)}finally{c.value=!1,m=null}}}function O(){m?.cancel&&m.cancel()}function E(){i.value="",r.value="",y.value=null}B(O);const M={llm:f,t:e,prompt:o,model:a,answer:i,running:c,error:r,finalMeta:y,waitingStatus:_,get activeChat(){return m},set activeChat(g){m=g},run:C,cancel:O,reset:E,ref:v,onBeforeUnmount:B,get useI18n(){return V},get SendOutlined(){return j},get SyncOutlined(){return I},get CheckCircleOutlined(){return U},get CloseOutlined(){return N},get useLlmChat(){return D}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},J={style:{"margin-bottom":"24px"}},R={class:"page-title"},W={class:"page-sub"},G={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-top":"12px"}},X={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},Y={key:0},Z={key:1},$={key:2},ee={key:0,style:{color:"#1677ff","font-size":"11px"}},ne={key:1,style:{color:"#52c41a","font-size":"11px"}},te={key:0,style:{margin:"0","white-space":"pre-wrap","font-family":"var(--font-body, system-ui)","font-size":"13px"}},oe={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px","margin-top":"8px"}},ae={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}};function re(n,t,f,e,o,a){const i=w("a-textarea"),c=w("a-input"),r=w("a-button"),y=w("a-space"),_=w("a-card"),m=w("a-empty");return s(),p("div",null,[b("div",J,[b("h2",R,l(n.$t("quickAsk.title")),1),b("p",W,l(n.$t("quickAsk.subtitle")),1)]),k(_,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:d(()=>[k(i,{value:e.prompt,"onUpdate:value":t[0]||(t[0]=C=>e.prompt=C),rows:4,placeholder:n.$t("quickAsk.promptPlaceholder"),disabled:e.running,onKeydown:[Q(T(e.run,["ctrl","prevent"]),["enter"]),Q(T(e.run,["meta","prevent"]),["enter"])]},null,8,["value","placeholder","disabled","onKeydown"]),b("div",G,[b("div",X,[k(c,{value:e.model,"onUpdate:value":t[1]||(t[1]=C=>e.model=C),placeholder:n.$t("quickAsk.modelPlaceholder"),size:"small",style:{width:"200px"},disabled:e.running,"allow-clear":""},null,8,["value","placeholder","disabled"]),e.answer?(s(),p("span",Y,l(e.answer.length)+" "+l(n.$t("quickAsk.charsSuffix")),1)):h("v-if",!0),e.finalMeta?(s(),p("span",Z,"· "+l(e.finalMeta.tokens??0)+" "+l(n.$t("quickAsk.tokensSuffix")),1)):h("v-if",!0),e.finalMeta?.model?(s(),p("span",$,"· "+l(e.finalMeta.model),1)):h("v-if",!0)]),k(y,null,{default:d(()=>[e.answer||e.error?(s(),S(r,{key:0,disabled:e.running,onClick:e.reset},{default:d(()=>[A(l(n.$t("quickAsk.clear")),1)]),_:1},8,["disabled"])):h("v-if",!0),e.running?(s(),S(r,{key:1,danger:"",onClick:e.cancel},{icon:d(()=>[k(e.CloseOutlined)]),default:d(()=>[A(" "+l(n.$t("quickAsk.cancel")),1)]),_:1})):(s(),S(r,{key:2,type:"primary",disabled:!e.prompt.trim(),onClick:e.run},{icon:d(()=>[k(e.SendOutlined)]),default:d(()=>[A(" "+l(n.$t("quickAsk.send")),1)]),_:1},8,["disabled"]))]),_:1})])]),_:1}),e.answer||e.running||e.error?(s(),S(_,{key:0,title:n.$t("quickAsk.answerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:d(()=>[e.running?(s(),p("span",ee,[k(e.SyncOutlined,{spin:!0}),A(" "+l(n.$t("quickAsk.streaming")),1)])):e.finalMeta?(s(),p("span",ne,[k(e.CheckCircleOutlined),A(" "+l(n.$t("quickAsk.done")),1)])):h("v-if",!0)]),default:d(()=>[e.answer?(s(),p("pre",te,l(e.answer),1)):e.running?(s(),S(m,{key:1,description:e.waitingStatus||n.$t("quickAsk.waitingFirstToken")},null,8,["description"])):h("v-if",!0),e.error?(s(),p("div",oe,[b("pre",ae,l(e.error),1)])):h("v-if",!0)]),_:1},8,["title"])):h("v-if",!0)])}const ce=L(H,[["render",re],["__file","/tmp/cc-web-panel-d0LHhd/repo/packages/web-panel/src/views/QuickAsk.vue"]]);export{ce as default};
1
+ import{I as w,J as p,U as b,R as l,c as k,K as d,S,V as v,f as B,r as h,P as s,a1 as Q,a2 as T,Q as A}from"./vendor-Bn1JzzAn.js";import{u as K,_ as N,b as V}from"./index-Qx8cTReg.js";import{b as U,f as I,S as L,am as j}from"./icons-DG5UD-6K.js";function F(){const n=[];let t=null,f=!1,e=null;return{push(o){if(n.push(o),t){const a=t;t=null,a()}},finish(o){if(f=!0,e=o||null,t){const a=t;t=null,a()}},async*iterate(){for(;;){for(;n.length>0;)yield n.shift();if(f){if(e)throw e;return}await new Promise(o=>{t=o})}}}}function D(){const n=K();function t(e){if(!e||!Array.isArray(e.messages))throw new Error("messages array is required");const o=F(),a=new AbortController;e.signal&&(e.signal.aborted?a.abort(e.signal.reason):e.signal.addEventListener("abort",()=>a.abort(e.signal.reason),{once:!0}));const i=n.sendStream({type:"llm.chat",messages:e.messages,options:e.options||{}},{onChunk:r=>o.push(r),onStatus:e.onStatus,idleMs:e.idleMs??21e4,followServerTimeout:e.idleMs==null,signal:a.signal}).then(r=>(o.finish(null),r),r=>{throw o.finish(r),r});function c(){a.signal.aborted||a.abort(new Error("aborted"))}return{stream:o.iterate(),result:i,cancel:c}}async function f(e){const o=typeof e.onDelta=="function"?e.onDelta:()=>{},{stream:a,result:i}=t(e);try{for await(const c of a)o(c)}catch{}return i}return{chat:t,chatTo:f}}const J={__name:"QuickAsk",setup(n,{expose:t}){t();const f=D(),{t:e}=V(),o=h(""),a=h(""),i=h(""),c=h(!1),r=h(""),y=h(null),_=h("");let m=null;async function C(){if(!(c.value||!o.value.trim())){c.value=!0,i.value="",r.value="",y.value=null,_.value="";try{const g=[{role:"user",content:o.value}],z={},P=a.value.trim();P&&(z.model=P);const x=f.chat({messages:g,options:z,onStatus:u=>{u?.stage==="waiting"&&(_.value=e("quickAsk.waitingForProvider",{provider:u.provider||"",model:u.model||"",seconds:Math.ceil((u.timeoutMs||18e4)/1e3)}))}});m=x;try{for await(const u of x.stream)u?.content?i.value=u.content:u?.delta&&(i.value+=u.delta)}catch{}const q=await x.result;y.value={model:q?.model||null,tokens:q?.tokens??null},!i.value&&q?.message?.content&&(i.value=q.message.content)}catch(g){r.value=g?.message||String(g)}finally{c.value=!1,m=null}}}function O(){m?.cancel&&m.cancel()}function E(){i.value="",r.value="",y.value=null}B(O);const M={llm:f,t:e,prompt:o,model:a,answer:i,running:c,error:r,finalMeta:y,waitingStatus:_,get activeChat(){return m},set activeChat(g){m=g},run:C,cancel:O,reset:E,ref:h,onBeforeUnmount:B,get useI18n(){return V},get SendOutlined(){return j},get SyncOutlined(){return L},get CheckCircleOutlined(){return I},get CloseOutlined(){return U},get useLlmChat(){return D}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},R={style:{"margin-bottom":"24px"}},W={class:"page-title"},G={class:"page-sub"},H={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-top":"12px"}},X={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},Y={key:0},Z={key:1},$={key:2},ee={key:0,style:{color:"#1677ff","font-size":"11px"}},ne={key:1,style:{color:"#52c41a","font-size":"11px"}},te={key:0,style:{margin:"0","white-space":"pre-wrap","font-family":"var(--font-body, system-ui)","font-size":"13px"}},oe={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px","margin-top":"8px"}},ae={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}};function re(n,t,f,e,o,a){const i=w("a-textarea"),c=w("a-input"),r=w("a-button"),y=w("a-space"),_=w("a-card"),m=w("a-empty");return s(),p("div",null,[b("div",R,[b("h2",W,l(n.$t("quickAsk.title")),1),b("p",G,l(n.$t("quickAsk.subtitle")),1)]),k(_,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:d(()=>[k(i,{value:e.prompt,"onUpdate:value":t[0]||(t[0]=C=>e.prompt=C),rows:4,placeholder:n.$t("quickAsk.promptPlaceholder"),disabled:e.running,onKeydown:[Q(T(e.run,["ctrl","prevent"]),["enter"]),Q(T(e.run,["meta","prevent"]),["enter"])]},null,8,["value","placeholder","disabled","onKeydown"]),b("div",H,[b("div",X,[k(c,{value:e.model,"onUpdate:value":t[1]||(t[1]=C=>e.model=C),placeholder:n.$t("quickAsk.modelPlaceholder"),size:"small",style:{width:"200px"},disabled:e.running,"allow-clear":""},null,8,["value","placeholder","disabled"]),e.answer?(s(),p("span",Y,l(e.answer.length)+" "+l(n.$t("quickAsk.charsSuffix")),1)):v("v-if",!0),e.finalMeta?(s(),p("span",Z,"· "+l(e.finalMeta.tokens??0)+" "+l(n.$t("quickAsk.tokensSuffix")),1)):v("v-if",!0),e.finalMeta?.model?(s(),p("span",$,"· "+l(e.finalMeta.model),1)):v("v-if",!0)]),k(y,null,{default:d(()=>[e.answer||e.error?(s(),S(r,{key:0,disabled:e.running,onClick:e.reset},{default:d(()=>[A(l(n.$t("quickAsk.clear")),1)]),_:1},8,["disabled"])):v("v-if",!0),e.running?(s(),S(r,{key:1,danger:"",onClick:e.cancel},{icon:d(()=>[k(e.CloseOutlined)]),default:d(()=>[A(" "+l(n.$t("quickAsk.cancel")),1)]),_:1})):(s(),S(r,{key:2,type:"primary",disabled:!e.prompt.trim(),onClick:e.run},{icon:d(()=>[k(e.SendOutlined)]),default:d(()=>[A(" "+l(n.$t("quickAsk.send")),1)]),_:1},8,["disabled"]))]),_:1})])]),_:1}),e.answer||e.running||e.error?(s(),S(_,{key:0,title:n.$t("quickAsk.answerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:d(()=>[e.running?(s(),p("span",ee,[k(e.SyncOutlined,{spin:!0}),A(" "+l(n.$t("quickAsk.streaming")),1)])):e.finalMeta?(s(),p("span",ne,[k(e.CheckCircleOutlined),A(" "+l(n.$t("quickAsk.done")),1)])):v("v-if",!0)]),default:d(()=>[e.answer?(s(),p("pre",te,l(e.answer),1)):e.running?(s(),S(m,{key:1,description:e.waitingStatus||n.$t("quickAsk.waitingFirstToken")},null,8,["description"])):v("v-if",!0),e.error?(s(),p("div",oe,[b("pre",ae,l(e.error),1)])):v("v-if",!0)]),_:1},8,["title"])):v("v-if",!0)])}const ce=N(J,[["render",re],["__file","/tmp/cc-web-panel-nob91t/repo/packages/web-panel/src/views/QuickAsk.vue"]]);export{ce as default};
@@ -1 +1 @@
1
- import{I as y,J as _,U as b,R as i,c as n,K as r,V as u,o as ce,a as de,b as K,r as h,P as d,Q as p,S as k,F as A,Z as Q,$ as Pe}from"./vendor-Bn1JzzAn.js";import{t as W,_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-DSgroT-P.js";import{p as Ue,aW as ze,aB as Re,aU as Ee,aX as Me,l as je,al as Ne,aQ as Je,R as De}from"./icons-DG5UD-6K.js";const Le=Object.freeze(["note","post","article","document"]),Be=Object.freeze(["pending","viewed","dismissed"]);function T(l,a=0){return typeof l=="number"&&Number.isFinite(l)?l:a}function pe(l){if(!l||typeof l!="object"||Array.isArray(l))return{};const a={};for(const[t,e]of Object.entries(l))typeof e=="number"&&Number.isFinite(e)&&(a[t]=e);return a}function We(l,a=0){if(!l||typeof l!="object")return null;const t=l.user_id??l.userId??"";if(!t)return null;const e=l.topics&&typeof l.topics=="object"&&!Array.isArray(l.topics)?pe(l.topics):{},z=l.interaction_weights??l.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(l.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:T(l.decay_factor??l.decayFactor,.9),lastUpdated:l.last_updated??l.lastUpdated??null,updateCount:T(l.update_count??l.updateCount,0),_idx:a}}function ye(l){const a=W(l);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function Ye(l,a=0){if(!l||typeof l!="object")return null;const t=l.id||"";return t?{key:t,id:t,userId:l.user_id??l.userId??"",contentId:l.content_id??l.contentId??"",contentType:String(l.content_type??l.contentType??"note").toLowerCase(),title:String(l.title||""),score:T(l.score,0),reason:String(l.reason||""),source:String(l.source||"heuristic"),status:String(l.status||"pending").toLowerCase(),feedback:l.feedback??null,createdAt:l.created_at??l.createdAt??null,viewedAt:l.viewed_at??l.viewedAt??null,_idx:a}:null}function ge(l){const a=W(l);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(l){const a={...Ge},t=W(l);return!t||typeof t!="object"||Array.isArray(t)||(a.total=T(t.total,0),a.pending=T(t.pending,0),a.viewed=T(t.viewed,0),a.dismissed=T(t.dismissed,0),a.feedbackCount=T(t.feedbackCount,0),a.feedbackRate=T(t.feedbackRate,0),a.avgScore=T(t.avgScore,0)),a}function ve(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:T(t.weight,0)})):[]}function ke(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string"&&typeof t.action=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,action:t.action,amount:T(t.amount,0)})):[]}function E(l){const a=W(l);return!a||typeof a!="object"||Array.isArray(a)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(a.updated||a.deleted||a.marked||a.dismissed||a.recorded||a.applied||a.profileId),reason:a.reason?String(a.reason):"",profileId:a.profileId?String(a.profileId):null,topicCount:typeof a.topicCount=="number"?a.topicCount:null}}function Ve(l){if(l==null||l==="")return"—";const a=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(a.getTime())?String(l):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"Recommend",setup(l,{expose:a}){a();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),j=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),I=h([]),F=h([]),v=h(null),U=h("recs"),N=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),q=h(null),H=K(()=>j.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),X=K(()=>[{title:t("recommend.recColumns.title"),key:"title"},{title:t("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:t("recommend.recColumns.score"),key:"score",width:"180px"},{title:t("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:t("recommend.recColumns.status"),key:"status",width:"100px"},{title:t("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:t("recommend.recColumns.action"),key:"action",width:"210px"}]),G=K(()=>[{title:t("recommend.profileColumns.userId"),key:"userId"},{title:t("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:t("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:t("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:t("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:t("recommend.profileColumns.action"),key:"action",width:"200px"}]),ee=K(()=>{let o=S.value;return N.value&&(o=o.filter(c=>c.status===N.value)),P.value&&(o=o.filter(c=>c.contentType===P.value)),o});function te(o){const c=`recommend.type.${o}`,f=t(c);return f===c?o:f}function oe(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function re(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function V(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function Z(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function ne(o){const c=`recommend.feedbackLabel.${o}`,f=t(c);return f===c?o:f}function $(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function R(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ae(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function s(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function m(){M.value=!0;try{const{output:o}=await e.execute("recommend profiles --json",1e4).catch(()=>({output:""}));j.value=ye(o),v.value&&!j.value.find(c=>c.userId===v.value)&&(v.value=null),v.value&&await C()}catch(o){g.error(t("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{M.value=!1}}async function C(){if(!v.value){S.value=[],O.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},I.value=[];return}w.value=!0;try{const o=L(v.value),[c,f,B]=await Promise.all([e.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),e.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),e.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);S.value=ge(c.output),O.value=_e(f.output),I.value=ve(B.output)}catch(o){g.error(t("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{w.value=!1}}function L(o){return`"${String(o).replace(/"/g,'\\"')}"`}function be(){F.value=[],C()}function xe(o){v.value=o,U.value="recs",C()}async function he(){if(!x.userId.trim()){g.warning(t("recommend.messages.userIdRequired"));return}if(x.topicsJson.trim())try{JSON.parse(x.topicsJson)}catch{g.warning(t("recommend.messages.topicsJsonInvalid"));return}if(x.weightsJson.trim())try{JSON.parse(x.weightsJson)}catch{g.warning(t("recommend.messages.weightsJsonInvalid"));return}Y.value=!0;try{const o=[`recommend create-profile ${L(x.userId.trim())}`];x.topicsJson.trim()&&o.push(`-t ${se(x.topicsJson.trim())}`),x.weightsJson.trim()&&o.push(`-w ${se(x.weightsJson.trim())}`),o.push("--json");const{output:c}=await e.execute(o.join(" "),1e4),f=E(c);if(!f.ok){g.error(t("recommend.messages.createFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.createOk",{id:f.profileId?.slice(0,8)||""})),J.value=!1;const B=x.userId.trim();le(),await m(),v.value=B,await C()}catch(o){g.error(t("recommend.messages.createFailed",{err:o?.message||o}))}finally{Y.value=!1}}function se(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Ce(){if(v.value)try{const{output:o}=await e.execute(`recommend decay ${L(v.value)} --json`,8e3),c=E(o);if(!c.ok){g.error(t("recommend.messages.decayFailed",{err:c.reason||o.slice(0,120)}));return}g.success(c.topicCount!==null?t("recommend.messages.decayOkTopics",{count:c.topicCount}):t("recommend.messages.decayOk")),await m()}catch(o){g.error(t("recommend.messages.decayFailed",{err:o?.message||o}))}}async function we(){if(v.value)try{const{output:o}=await e.execute(`recommend suggest ${L(v.value)} --json`,8e3);F.value=ke(o),U.value="interests",F.value.length?g.success(t("recommend.messages.suggestFound",{count:F.value.length})):g.info(t("recommend.messages.suggestNone"))}catch(o){g.error(t("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Se(o){try{const{output:c}=await e.execute(`recommend delete-profile ${L(o.userId)} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.deleteFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.deleteOk")),v.value===o.userId&&(v.value=null),await m()}catch(c){g.error(t("recommend.messages.deleteFailed",{err:c?.message||c}))}}function Ie(o){q.value=o,D.value=!0}async function Te(o){try{const{output:c}=await e.execute(`recommend view ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.viewFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.viewOk")),await C()}catch(c){g.error(t("recommend.messages.viewFailed",{err:c?.message||c}))}}async function Oe(o,c){try{const{output:f}=await e.execute(`recommend feedback ${o.id} ${c} --json`,8e3),B=E(f);if(!B.ok){g.error(t("recommend.messages.feedbackFailed",{err:B.reason||f.slice(0,120)}));return}g.success(t("recommend.messages.feedbackOk")),await C()}catch(f){g.error(t("recommend.messages.feedbackFailed",{err:f?.message||f}))}}async function Fe(o){try{const{output:c}=await e.execute(`recommend dismiss ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.dismissFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.dismissOk")),await C()}catch(c){g.error(t("recommend.messages.dismissFailed",{err:c?.message||c}))}}function le(){x.userId="",x.topicsJson="",x.weightsJson=""}ce(m);const ie={t,ws:e,EMPTY_IMG:z,loading:M,loadingRecs:w,creating:Y,profiles:j,recs:S,userStats:O,topInterests:I,suggestions:F,selectedUser:v,activeTab:U,statusFilter:N,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:q,userOptions:H,recColumns:X,profileColumns:G,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:V,statusColor:Z,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:s,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Ie,markViewed:Te,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return De},get UserAddOutlined(){return Je},get UserOutlined(){return Ne},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Me},get LikeOutlined(){return Ee},get StarOutlined(){return Re},get FieldTimeOutlined(){return ze},get BulbOutlined(){return Ue},get message(){return g},get Empty(){return fe},get useWsStore(){return ue},get parseProfiles(){return ye},get parseRecommendations(){return ge},get parseUserStats(){return _e},get parseTopInterests(){return ve},get parseSuggestions(){return ke},get parseActionResult(){return E},get formatRecommendTime(){return Ve},get CONTENT_TYPE_IDS(){return Le},get RECOMMENDATION_STATUSES(){return Be}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ze={style:{color:"var(--text-secondary)","font-size":"12px"}},$e={class:"type-name"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},rt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},st={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},lt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:3,style:{color:"var(--text-secondary)"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={key:1},ut={class:"interest-topic"},ft={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},pt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},yt={key:0,style:{"padding-top":"8px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},_t={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},vt={key:1},kt={class:"interest-topic"},bt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},xt={key:3,class:"weights-pre"};function ht(l,a,t,e,z,M){const w=y("a-button"),Y=y("a-space"),j=y("a-select"),S=y("a-card"),O=y("a-statistic"),I=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),N=y("a-radio-group"),P=y("a-empty"),J=y("a-progress"),D=y("a-menu-item"),x=y("a-menu"),q=y("a-dropdown"),H=y("a-popconfirm"),X=y("a-table"),G=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),V=y("a-form-item"),Z=y("a-textarea"),ne=y("a-form"),$=y("a-modal"),R=y("a-descriptions-item"),ae=y("a-descriptions");return d(),_("div",null,[b("div",Qe,[b("div",null,[b("h2",qe,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),n(Y,null,{default:r(()=>[n(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[n(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),n(w,{type:"primary",onClick:a[0]||(a[0]=s=>e.showCreateProfileModal=!0)},{icon:r(()=>[n(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),n(S,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:r(()=>[b("div",Xe,[b("span",Ze,i(e.t("recommend.userBar.currentUser")),1),n(j,{value:e.selectedUser,"onUpdate:value":a[1]||(a[1]=s=>e.selectedUser=s),options:e.userOptions,placeholder:e.t("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:e.onUserChange},null,8,["value","options","placeholder"]),e.selectedUser?(d(),k(w,{key:0,size:"small",onClick:e.applyDecay},{icon:r(()=>[n(e.FieldTimeOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.applyDecay")),1)]),_:1})):u("v-if",!0),e.selectedUser?(d(),k(w,{key:1,size:"small",onClick:e.loadSuggestions},{icon:r(()=>[n(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),n(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[n(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[n(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[n(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[n(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:24,sm:8,lg:4},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.avgScore"),value:e.userStats.avgScore,precision:3,"value-style":{color:e.scoreColor(e.userStats.avgScore),fontSize:"20px"}},{prefix:r(()=>[n(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),n(S,{title:e.t("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[n(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(I,{key:s,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(s)})},[n(v,{color:e.typeColor(s),style:{"font-family":"monospace"}},{default:r(()=>[p(i(s),1)]),_:2},1032,["color"]),b("div",$e,i(e.typeLabel(s)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),n(oe,{activeKey:e.activeTab,"onUpdate:activeKey":a[4]||(a[4]=s=>e.activeTab=s),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),n(G,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",et,[n(N,{value:e.statusFilter,"onUpdate:value":a[2]||(a[2]=s=>e.statusFilter=s),size:"small","button-style":"solid"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,Q(e.RECOMMENDATION_STATUSES,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.statusLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(N,{value:e.typeFilter,"onUpdate:value":a[3]||(a[3]=s=>e.typeFilter=s),size:"small"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.typeLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(X,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.rows",{count:s})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="title"?(d(),_(A,{key:0},[b("span",tt,i(m.title||e.t("recommend.noTitle")),1),b("div",ot,i(m.contentId),1)],64)):u("v-if",!0),s.key==="contentType"?(d(),k(v,{key:1,color:e.typeColor(m.contentType),style:{"font-family":"monospace"}},{default:r(()=>[p(i(m.contentType),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="score"?(d(),k(J,{key:2,percent:Math.round(m.score*100),"stroke-color":e.scoreColor(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):u("v-if",!0),s.key==="reason"?(d(),_("span",rt,i(m.reason),1)):u("v-if",!0),s.key==="status"?(d(),k(v,{key:4,color:e.statusColor(m.status)},{default:r(()=>[p(i(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="feedback"?(d(),_(A,{key:5},[m.feedback?(d(),k(v,{key:0,color:e.feedbackColor(m.feedback)},{default:r(()=>[p(i(e.feedbackLabel(m.feedback)),1)]),_:2},1032,["color"])):(d(),_("span",nt,"—"))],64)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:6},[m.status==="pending"?(d(),k(w,{key:0,size:"small",type:"link",onClick:C=>e.markViewed(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):u("v-if",!0),m.status!=="dismissed"?(d(),k(q,{key:1},{overlay:r(()=>[n(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[n(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),n(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),n(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[n(w,{size:"small",type:"link"},{default:r(()=>[p(i(e.t("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):u("v-if",!0),m.status!=="dismissed"?(d(),k(H,{key:2,title:e.t("recommend.rowActions.dismissConfirmTitle"),"ok-text":e.t("recommend.rowActions.dismissOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.dismissRec(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):u("v-if",!0)],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",at,[n(e.FireOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.statusFilter||e.typeFilter?e.t("recommend.empty.filtered"):e.t("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),u(" ── Profiles tab ───────────────────────────────────────── "),n(G,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[n(X,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.profiles",{count:s})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="userId"?(d(),_("span",st,i(m.userId),1)):u("v-if",!0),s.key==="topicCount"?(d(),k(v,{key:1,color:"blue"},{default:r(()=>[p(i(e.t("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):u("v-if",!0),s.key==="decayFactor"?(d(),_("span",lt,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),s.key==="updateCount"?(d(),_("span",it,i(m.updateCount),1)):u("v-if",!0),s.key==="lastUpdated"?(d(),_("span",ct,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:5},[n(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),n(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),n(H,{title:e.t("recommend.rowActions.deleteConfirmTitle"),"ok-text":e.t("recommend.rowActions.deleteOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.deleteProfile(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",dt,[n(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.t("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),u(" ── Top interests tab ──────────────────────────────────── "),n(G,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[n(I,{xs:24,lg:14},{default:r(()=>[n(S,{title:e.t("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.topInterests.length?(d(),_("div",mt,[(d(!0),_(A,null,Q(e.topInterests,s=>(d(),_("div",{key:s.key,class:"interest-row"},[b("span",ut,i(s.topic),1),n(J,{percent:Math.round(s.weight*100),"stroke-color":e.weightColor(s.weight),format:()=>s.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noInterests"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),n(I,{xs:24,lg:10},{default:r(()=>[n(S,{title:e.t("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.suggestions.length?(d(),k(te,{key:1,size:"small","data-source":e.suggestions},{renderItem:r(({item:s})=>[n(ee,null,{default:r(()=>[n(v,{color:s.action==="boost"?"green":"orange"},{default:r(()=>[p(i(s.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",ft,i(s.topic),1),b("span",pt,"±"+i(s.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(P,{key:0,description:e.t("recommend.empty.noSuggestions"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),u(" ── Create profile modal ───────────────────────────────── "),n($,{open:e.showCreateProfileModal,"onUpdate:open":a[8]||(a[8]=s=>e.showCreateProfileModal=s),title:e.t("recommend.create.title"),"confirm-loading":e.creating,width:560,"ok-text":e.t("recommend.create.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitCreateProfile,onCancel:e.resetCreateForm},{default:r(()=>[n(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[n(V,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[n(re,{value:e.createForm.userId,"onUpdate:value":a[5]||(a[5]=s=>e.createForm.userId=s),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[n(Z,{value:e.createForm.topicsJson,"onUpdate:value":a[6]||(a[6]=s=>e.createForm.topicsJson=s),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[n(Z,{value:e.createForm.weightsJson,"onUpdate:value":a[7]||(a[7]=s=>e.createForm.weightsJson=s),placeholder:e.t("recommend.create.weightsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),u(" ── Profile details modal ──────────────────────────────── "),n($,{open:e.showDetailsModal,"onUpdate:open":a[9]||(a[9]=s=>e.showDetailsModal=s),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",yt,[n(ae,{column:2,size:"small",bordered:""},{default:r(()=>[n(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",gt,i(e.currentProfile.id),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",_t,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",vt,[(d(!0),_(A,null,Q(e.currentProfile.topics,(s,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",kt,i(m),1),n(J,{percent:Math.round(s*100),"stroke-color":e.weightColor(s),format:()=>s.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noTopics"),image:e.EMPTY_IMG},null,8,["description","image"])),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("h4",bt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",xt,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const It=Ae(Ke,[["render",ht],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-d0LHhd/repo/packages/web-panel/src/views/Recommend.vue"]]);export{It as default};
1
+ import{I as y,J as _,U as b,R as i,c as n,K as r,V as u,o as ce,a as de,b as K,r as h,P as d,Q as p,S as k,F as A,Z as Q,$ as Pe}from"./vendor-Bn1JzzAn.js";import{t as W,_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-Qx8cTReg.js";import{p as Ue,aW as ze,aB as Re,aU as Ee,aX as Me,l as je,al as Ne,aQ as Je,R as De}from"./icons-DG5UD-6K.js";const Le=Object.freeze(["note","post","article","document"]),Be=Object.freeze(["pending","viewed","dismissed"]);function T(l,a=0){return typeof l=="number"&&Number.isFinite(l)?l:a}function pe(l){if(!l||typeof l!="object"||Array.isArray(l))return{};const a={};for(const[t,e]of Object.entries(l))typeof e=="number"&&Number.isFinite(e)&&(a[t]=e);return a}function We(l,a=0){if(!l||typeof l!="object")return null;const t=l.user_id??l.userId??"";if(!t)return null;const e=l.topics&&typeof l.topics=="object"&&!Array.isArray(l.topics)?pe(l.topics):{},z=l.interaction_weights??l.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(l.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:T(l.decay_factor??l.decayFactor,.9),lastUpdated:l.last_updated??l.lastUpdated??null,updateCount:T(l.update_count??l.updateCount,0),_idx:a}}function ye(l){const a=W(l);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function Ye(l,a=0){if(!l||typeof l!="object")return null;const t=l.id||"";return t?{key:t,id:t,userId:l.user_id??l.userId??"",contentId:l.content_id??l.contentId??"",contentType:String(l.content_type??l.contentType??"note").toLowerCase(),title:String(l.title||""),score:T(l.score,0),reason:String(l.reason||""),source:String(l.source||"heuristic"),status:String(l.status||"pending").toLowerCase(),feedback:l.feedback??null,createdAt:l.created_at??l.createdAt??null,viewedAt:l.viewed_at??l.viewedAt??null,_idx:a}:null}function ge(l){const a=W(l);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(l){const a={...Ge},t=W(l);return!t||typeof t!="object"||Array.isArray(t)||(a.total=T(t.total,0),a.pending=T(t.pending,0),a.viewed=T(t.viewed,0),a.dismissed=T(t.dismissed,0),a.feedbackCount=T(t.feedbackCount,0),a.feedbackRate=T(t.feedbackRate,0),a.avgScore=T(t.avgScore,0)),a}function ve(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:T(t.weight,0)})):[]}function ke(l){const a=W(l);return Array.isArray(a)?a.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string"&&typeof t.action=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,action:t.action,amount:T(t.amount,0)})):[]}function E(l){const a=W(l);return!a||typeof a!="object"||Array.isArray(a)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(a.updated||a.deleted||a.marked||a.dismissed||a.recorded||a.applied||a.profileId),reason:a.reason?String(a.reason):"",profileId:a.profileId?String(a.profileId):null,topicCount:typeof a.topicCount=="number"?a.topicCount:null}}function Ve(l){if(l==null||l==="")return"—";const a=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(a.getTime())?String(l):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"Recommend",setup(l,{expose:a}){a();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),j=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),I=h([]),F=h([]),v=h(null),U=h("recs"),N=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),q=h(null),H=K(()=>j.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),X=K(()=>[{title:t("recommend.recColumns.title"),key:"title"},{title:t("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:t("recommend.recColumns.score"),key:"score",width:"180px"},{title:t("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:t("recommend.recColumns.status"),key:"status",width:"100px"},{title:t("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:t("recommend.recColumns.action"),key:"action",width:"210px"}]),G=K(()=>[{title:t("recommend.profileColumns.userId"),key:"userId"},{title:t("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:t("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:t("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:t("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:t("recommend.profileColumns.action"),key:"action",width:"200px"}]),ee=K(()=>{let o=S.value;return N.value&&(o=o.filter(c=>c.status===N.value)),P.value&&(o=o.filter(c=>c.contentType===P.value)),o});function te(o){const c=`recommend.type.${o}`,f=t(c);return f===c?o:f}function oe(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function re(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function V(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function Z(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function ne(o){const c=`recommend.feedbackLabel.${o}`,f=t(c);return f===c?o:f}function $(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function R(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ae(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function s(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function m(){M.value=!0;try{const{output:o}=await e.execute("recommend profiles --json",1e4).catch(()=>({output:""}));j.value=ye(o),v.value&&!j.value.find(c=>c.userId===v.value)&&(v.value=null),v.value&&await C()}catch(o){g.error(t("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{M.value=!1}}async function C(){if(!v.value){S.value=[],O.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},I.value=[];return}w.value=!0;try{const o=L(v.value),[c,f,B]=await Promise.all([e.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),e.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),e.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);S.value=ge(c.output),O.value=_e(f.output),I.value=ve(B.output)}catch(o){g.error(t("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{w.value=!1}}function L(o){return`"${String(o).replace(/"/g,'\\"')}"`}function be(){F.value=[],C()}function xe(o){v.value=o,U.value="recs",C()}async function he(){if(!x.userId.trim()){g.warning(t("recommend.messages.userIdRequired"));return}if(x.topicsJson.trim())try{JSON.parse(x.topicsJson)}catch{g.warning(t("recommend.messages.topicsJsonInvalid"));return}if(x.weightsJson.trim())try{JSON.parse(x.weightsJson)}catch{g.warning(t("recommend.messages.weightsJsonInvalid"));return}Y.value=!0;try{const o=[`recommend create-profile ${L(x.userId.trim())}`];x.topicsJson.trim()&&o.push(`-t ${se(x.topicsJson.trim())}`),x.weightsJson.trim()&&o.push(`-w ${se(x.weightsJson.trim())}`),o.push("--json");const{output:c}=await e.execute(o.join(" "),1e4),f=E(c);if(!f.ok){g.error(t("recommend.messages.createFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.createOk",{id:f.profileId?.slice(0,8)||""})),J.value=!1;const B=x.userId.trim();le(),await m(),v.value=B,await C()}catch(o){g.error(t("recommend.messages.createFailed",{err:o?.message||o}))}finally{Y.value=!1}}function se(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Ce(){if(v.value)try{const{output:o}=await e.execute(`recommend decay ${L(v.value)} --json`,8e3),c=E(o);if(!c.ok){g.error(t("recommend.messages.decayFailed",{err:c.reason||o.slice(0,120)}));return}g.success(c.topicCount!==null?t("recommend.messages.decayOkTopics",{count:c.topicCount}):t("recommend.messages.decayOk")),await m()}catch(o){g.error(t("recommend.messages.decayFailed",{err:o?.message||o}))}}async function we(){if(v.value)try{const{output:o}=await e.execute(`recommend suggest ${L(v.value)} --json`,8e3);F.value=ke(o),U.value="interests",F.value.length?g.success(t("recommend.messages.suggestFound",{count:F.value.length})):g.info(t("recommend.messages.suggestNone"))}catch(o){g.error(t("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Se(o){try{const{output:c}=await e.execute(`recommend delete-profile ${L(o.userId)} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.deleteFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.deleteOk")),v.value===o.userId&&(v.value=null),await m()}catch(c){g.error(t("recommend.messages.deleteFailed",{err:c?.message||c}))}}function Ie(o){q.value=o,D.value=!0}async function Te(o){try{const{output:c}=await e.execute(`recommend view ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.viewFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.viewOk")),await C()}catch(c){g.error(t("recommend.messages.viewFailed",{err:c?.message||c}))}}async function Oe(o,c){try{const{output:f}=await e.execute(`recommend feedback ${o.id} ${c} --json`,8e3),B=E(f);if(!B.ok){g.error(t("recommend.messages.feedbackFailed",{err:B.reason||f.slice(0,120)}));return}g.success(t("recommend.messages.feedbackOk")),await C()}catch(f){g.error(t("recommend.messages.feedbackFailed",{err:f?.message||f}))}}async function Fe(o){try{const{output:c}=await e.execute(`recommend dismiss ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.dismissFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.dismissOk")),await C()}catch(c){g.error(t("recommend.messages.dismissFailed",{err:c?.message||c}))}}function le(){x.userId="",x.topicsJson="",x.weightsJson=""}ce(m);const ie={t,ws:e,EMPTY_IMG:z,loading:M,loadingRecs:w,creating:Y,profiles:j,recs:S,userStats:O,topInterests:I,suggestions:F,selectedUser:v,activeTab:U,statusFilter:N,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:q,userOptions:H,recColumns:X,profileColumns:G,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:V,statusColor:Z,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:s,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Ie,markViewed:Te,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return De},get UserAddOutlined(){return Je},get UserOutlined(){return Ne},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Me},get LikeOutlined(){return Ee},get StarOutlined(){return Re},get FieldTimeOutlined(){return ze},get BulbOutlined(){return Ue},get message(){return g},get Empty(){return fe},get useWsStore(){return ue},get parseProfiles(){return ye},get parseRecommendations(){return ge},get parseUserStats(){return _e},get parseTopInterests(){return ve},get parseSuggestions(){return ke},get parseActionResult(){return E},get formatRecommendTime(){return Ve},get CONTENT_TYPE_IDS(){return Le},get RECOMMENDATION_STATUSES(){return Be}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ze={style:{color:"var(--text-secondary)","font-size":"12px"}},$e={class:"type-name"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},rt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},st={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},lt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:3,style:{color:"var(--text-secondary)"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={key:1},ut={class:"interest-topic"},ft={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},pt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},yt={key:0,style:{"padding-top":"8px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},_t={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},vt={key:1},kt={class:"interest-topic"},bt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},xt={key:3,class:"weights-pre"};function ht(l,a,t,e,z,M){const w=y("a-button"),Y=y("a-space"),j=y("a-select"),S=y("a-card"),O=y("a-statistic"),I=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),N=y("a-radio-group"),P=y("a-empty"),J=y("a-progress"),D=y("a-menu-item"),x=y("a-menu"),q=y("a-dropdown"),H=y("a-popconfirm"),X=y("a-table"),G=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),V=y("a-form-item"),Z=y("a-textarea"),ne=y("a-form"),$=y("a-modal"),R=y("a-descriptions-item"),ae=y("a-descriptions");return d(),_("div",null,[b("div",Qe,[b("div",null,[b("h2",qe,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),n(Y,null,{default:r(()=>[n(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[n(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),n(w,{type:"primary",onClick:a[0]||(a[0]=s=>e.showCreateProfileModal=!0)},{icon:r(()=>[n(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),n(S,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:r(()=>[b("div",Xe,[b("span",Ze,i(e.t("recommend.userBar.currentUser")),1),n(j,{value:e.selectedUser,"onUpdate:value":a[1]||(a[1]=s=>e.selectedUser=s),options:e.userOptions,placeholder:e.t("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:e.onUserChange},null,8,["value","options","placeholder"]),e.selectedUser?(d(),k(w,{key:0,size:"small",onClick:e.applyDecay},{icon:r(()=>[n(e.FieldTimeOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.applyDecay")),1)]),_:1})):u("v-if",!0),e.selectedUser?(d(),k(w,{key:1,size:"small",onClick:e.loadSuggestions},{icon:r(()=>[n(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),n(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[n(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[n(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[n(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(I,{xs:12,sm:8,lg:5},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[n(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(I,{xs:24,sm:8,lg:4},{default:r(()=>[n(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[n(O,{title:e.t("recommend.stats.avgScore"),value:e.userStats.avgScore,precision:3,"value-style":{color:e.scoreColor(e.userStats.avgScore),fontSize:"20px"}},{prefix:r(()=>[n(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),n(S,{title:e.t("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[n(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(I,{key:s,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(s)})},[n(v,{color:e.typeColor(s),style:{"font-family":"monospace"}},{default:r(()=>[p(i(s),1)]),_:2},1032,["color"]),b("div",$e,i(e.typeLabel(s)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),n(oe,{activeKey:e.activeTab,"onUpdate:activeKey":a[4]||(a[4]=s=>e.activeTab=s),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),n(G,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",et,[n(N,{value:e.statusFilter,"onUpdate:value":a[2]||(a[2]=s=>e.statusFilter=s),size:"small","button-style":"solid"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,Q(e.RECOMMENDATION_STATUSES,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.statusLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(N,{value:e.typeFilter,"onUpdate:value":a[3]||(a[3]=s=>e.typeFilter=s),size:"small"},{default:r(()=>[n(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,Q(e.CONTENT_TYPE_IDS,s=>(d(),k(U,{key:s,value:s},{default:r(()=>[p(i(e.typeLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(X,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.rows",{count:s})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="title"?(d(),_(A,{key:0},[b("span",tt,i(m.title||e.t("recommend.noTitle")),1),b("div",ot,i(m.contentId),1)],64)):u("v-if",!0),s.key==="contentType"?(d(),k(v,{key:1,color:e.typeColor(m.contentType),style:{"font-family":"monospace"}},{default:r(()=>[p(i(m.contentType),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="score"?(d(),k(J,{key:2,percent:Math.round(m.score*100),"stroke-color":e.scoreColor(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):u("v-if",!0),s.key==="reason"?(d(),_("span",rt,i(m.reason),1)):u("v-if",!0),s.key==="status"?(d(),k(v,{key:4,color:e.statusColor(m.status)},{default:r(()=>[p(i(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):u("v-if",!0),s.key==="feedback"?(d(),_(A,{key:5},[m.feedback?(d(),k(v,{key:0,color:e.feedbackColor(m.feedback)},{default:r(()=>[p(i(e.feedbackLabel(m.feedback)),1)]),_:2},1032,["color"])):(d(),_("span",nt,"—"))],64)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:6},[m.status==="pending"?(d(),k(w,{key:0,size:"small",type:"link",onClick:C=>e.markViewed(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):u("v-if",!0),m.status!=="dismissed"?(d(),k(q,{key:1},{overlay:r(()=>[n(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[n(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),n(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),n(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[n(w,{size:"small",type:"link"},{default:r(()=>[p(i(e.t("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):u("v-if",!0),m.status!=="dismissed"?(d(),k(H,{key:2,title:e.t("recommend.rowActions.dismissConfirmTitle"),"ok-text":e.t("recommend.rowActions.dismissOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.dismissRec(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):u("v-if",!0)],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",at,[n(e.FireOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.statusFilter||e.typeFilter?e.t("recommend.empty.filtered"):e.t("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),u(" ── Profiles tab ───────────────────────────────────────── "),n(G,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[n(X,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:s=>e.t("recommend.totals.profiles",{count:s})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:s,record:m})=>[s.key==="userId"?(d(),_("span",st,i(m.userId),1)):u("v-if",!0),s.key==="topicCount"?(d(),k(v,{key:1,color:"blue"},{default:r(()=>[p(i(e.t("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):u("v-if",!0),s.key==="decayFactor"?(d(),_("span",lt,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),s.key==="updateCount"?(d(),_("span",it,i(m.updateCount),1)):u("v-if",!0),s.key==="lastUpdated"?(d(),_("span",ct,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),s.key==="action"?(d(),_(A,{key:5},[n(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),n(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),n(H,{title:e.t("recommend.rowActions.deleteConfirmTitle"),"ok-text":e.t("recommend.rowActions.deleteOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.deleteProfile(m)},{default:r(()=>[n(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",dt,[n(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.t("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),u(" ── Top interests tab ──────────────────────────────────── "),n(G,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[n(I,{xs:24,lg:14},{default:r(()=>[n(S,{title:e.t("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.topInterests.length?(d(),_("div",mt,[(d(!0),_(A,null,Q(e.topInterests,s=>(d(),_("div",{key:s.key,class:"interest-row"},[b("span",ut,i(s.topic),1),n(J,{percent:Math.round(s.weight*100),"stroke-color":e.weightColor(s.weight),format:()=>s.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noInterests"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),n(I,{xs:24,lg:10},{default:r(()=>[n(S,{title:e.t("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.suggestions.length?(d(),k(te,{key:1,size:"small","data-source":e.suggestions},{renderItem:r(({item:s})=>[n(ee,null,{default:r(()=>[n(v,{color:s.action==="boost"?"green":"orange"},{default:r(()=>[p(i(s.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",ft,i(s.topic),1),b("span",pt,"±"+i(s.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(P,{key:0,description:e.t("recommend.empty.noSuggestions"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),u(" ── Create profile modal ───────────────────────────────── "),n($,{open:e.showCreateProfileModal,"onUpdate:open":a[8]||(a[8]=s=>e.showCreateProfileModal=s),title:e.t("recommend.create.title"),"confirm-loading":e.creating,width:560,"ok-text":e.t("recommend.create.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitCreateProfile,onCancel:e.resetCreateForm},{default:r(()=>[n(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[n(V,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[n(re,{value:e.createForm.userId,"onUpdate:value":a[5]||(a[5]=s=>e.createForm.userId=s),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[n(Z,{value:e.createForm.topicsJson,"onUpdate:value":a[6]||(a[6]=s=>e.createForm.topicsJson=s),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),n(V,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[n(Z,{value:e.createForm.weightsJson,"onUpdate:value":a[7]||(a[7]=s=>e.createForm.weightsJson=s),placeholder:e.t("recommend.create.weightsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),u(" ── Profile details modal ──────────────────────────────── "),n($,{open:e.showDetailsModal,"onUpdate:open":a[9]||(a[9]=s=>e.showDetailsModal=s),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",yt,[n(ae,{column:2,size:"small",bordered:""},{default:r(()=>[n(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",gt,i(e.currentProfile.id),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),n(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",_t,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",vt,[(d(!0),_(A,null,Q(e.currentProfile.topics,(s,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",kt,i(m),1),n(J,{percent:Math.round(s*100),"stroke-color":e.weightColor(s),format:()=>s.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noTopics"),image:e.EMPTY_IMG},null,8,["description","image"])),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("h4",bt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",xt,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const It=Ae(Ke,[["render",ht],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-nob91t/repo/packages/web-panel/src/views/Recommend.vue"]]);export{It as default};