chainlesschain 0.166.130 → 0.166.131

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 (466) hide show
  1. package/README.md +20 -4
  2. package/package.json +2 -2
  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/.build-hash +1 -1
  6. package/src/assets/web-panel/assets/AIOps-CHItp4vg.js +1 -0
  7. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +1 -0
  8. package/src/assets/web-panel/assets/{ActionButton-Dzv1ReHF.js → ActionButton-nhMNWW_d.js} +1 -1
  9. package/src/assets/web-panel/assets/Analytics-DRc81BBI.js +3 -0
  10. package/src/assets/web-panel/assets/Analytics-Dr-1kvaM.css +1 -0
  11. package/src/assets/web-panel/assets/AppLayout-BTBIIl1e.css +1 -0
  12. package/src/assets/web-panel/assets/AppLayout-CVt7HMkp.js +3 -0
  13. package/src/assets/web-panel/assets/Artifacts-BuJgG5jf.js +1 -0
  14. package/src/assets/web-panel/assets/Artifacts-Dohtjyfl.css +1 -0
  15. package/src/assets/web-panel/assets/Audit-DDnViLtj.css +1 -0
  16. package/src/assets/web-panel/assets/Audit-msNg0aH-.js +1 -0
  17. package/src/assets/web-panel/assets/BackgroundAgents-BpcV8yWC.js +1 -0
  18. package/src/assets/web-panel/assets/BackgroundAgents-CH3Uc9sF.css +1 -0
  19. package/src/assets/web-panel/assets/Backup-CYh10zO3.css +1 -0
  20. package/src/assets/web-panel/assets/Backup-P53DADwG.js +1 -0
  21. package/src/assets/web-panel/assets/BaseInput-DFxT2yWN.js +1 -0
  22. package/src/assets/web-panel/assets/Chat-B5JvvQJb.css +1 -0
  23. package/src/assets/web-panel/assets/Chat-BXoHisHW.js +7 -0
  24. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
  25. package/src/assets/web-panel/assets/ChatBubbleRenderer-DMGtSdDx.js +1 -0
  26. package/src/assets/web-panel/assets/{Checkbox-B5uzaLLP.js → Checkbox-B4g_ckJq.js} +1 -1
  27. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +1 -0
  28. package/src/assets/web-panel/assets/Codegen-C6SSSOfp.js +1 -0
  29. package/src/assets/web-panel/assets/{Col-D3I2kUGu.js → Col-IO1NEUYL.js} +1 -1
  30. package/src/assets/web-panel/assets/Community-C2RejeOY.css +1 -0
  31. package/src/assets/web-panel/assets/Community-CdEBl93F.js +1 -0
  32. package/src/assets/web-panel/assets/{Compact-5GigOmb8.js → Compact-DYs0a9k7.js} +1 -1
  33. package/src/assets/web-panel/assets/Compliance-BPnk7948.js +1 -0
  34. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +1 -0
  35. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +1 -0
  36. package/src/assets/web-panel/assets/Cowork-VLOTGbza.js +6 -0
  37. package/src/assets/web-panel/assets/Cron-_9GgQLJo.js +2 -0
  38. package/src/assets/web-panel/assets/Crosschain-B21yn0qy.js +1 -0
  39. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +1 -0
  40. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +1 -0
  41. package/src/assets/web-panel/assets/DID-mBeDgRZ7.js +2 -0
  42. package/src/assets/web-panel/assets/Dashboard-BckYYzhP.js +3 -0
  43. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +1 -0
  44. package/src/assets/web-panel/assets/Dropdown-DEedqFiE.js +1 -0
  45. package/src/assets/web-panel/assets/EmailListRenderer-CMs0k9TB.js +1 -0
  46. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
  47. package/src/assets/web-panel/assets/EvolutionSettings-B00Qd0fN.js +1 -0
  48. package/src/assets/web-panel/assets/EvolutionSettings-BnQ91YHJ.css +1 -0
  49. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +1 -0
  50. package/src/assets/web-panel/assets/FamilyGuardDashboard-DxMTAMa8.js +1 -0
  51. package/src/assets/web-panel/assets/Federation-B-UZw0LO.js +1 -0
  52. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +1 -0
  53. package/src/assets/web-panel/assets/FormItemContext-CkafazEw.js +1 -0
  54. package/src/assets/web-panel/assets/GenericCardRenderer-DEUG25ZJ.js +1 -0
  55. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
  56. package/src/assets/web-panel/assets/Git-D7dr9oz9.js +2 -0
  57. package/src/assets/web-panel/assets/{Git-BdHhxBWR.css → Git-DPuaGtg7.css} +1 -1
  58. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +1 -0
  59. package/src/assets/web-panel/assets/Governance-DKlUJ1wg.js +1 -0
  60. package/src/assets/web-panel/assets/Inference-BJKqplap.js +1 -0
  61. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +1 -0
  62. package/src/assets/web-panel/assets/KnowledgeGraph-B78fB-bz.js +1 -0
  63. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +1 -0
  64. package/src/assets/web-panel/assets/Logs-DJGcHYH_.js +2 -0
  65. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +1 -0
  66. package/src/assets/web-panel/assets/MarkdownRenderer-BAxj61I3.css +1 -0
  67. package/src/assets/web-panel/assets/MarkdownRenderer-DkcG_MxW.js +1 -0
  68. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +1 -0
  69. package/src/assets/web-panel/assets/Marketplace-ucTbwByD.js +1 -0
  70. package/src/assets/web-panel/assets/McpTools-Cu1xZYYk.js +2 -0
  71. package/src/assets/web-panel/assets/McpTools-DSGHWYS_.css +1 -0
  72. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +1 -0
  73. package/src/assets/web-panel/assets/Memory-DCGpXmi-.js +2 -0
  74. package/src/assets/web-panel/assets/MobileBridge-BQ-Uwwg7.css +1 -0
  75. package/src/assets/web-panel/assets/MobileBridge-BnKr0aAS.js +1 -0
  76. package/src/assets/web-panel/assets/MobileProjects-C5UvYJTP.js +1 -0
  77. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
  78. package/src/assets/web-panel/assets/Mtc-D1UUl4WH.js +6 -0
  79. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
  80. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
  81. package/src/assets/web-panel/assets/MtcAudit-D3aa8XP4.js +19 -0
  82. package/src/assets/web-panel/assets/Multisig-DiXdfJjO.js +7 -0
  83. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +1 -0
  84. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +1 -0
  85. package/src/assets/web-panel/assets/NLProgramming-DbWABgSE.js +1 -0
  86. package/src/assets/web-panel/assets/Notes-BP1DPl-R.js +7 -0
  87. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
  88. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
  89. package/src/assets/web-panel/assets/NotificationSettings-xaB6ONe7.js +1 -0
  90. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
  91. package/src/assets/web-panel/assets/OrderTableRenderer-D1uNcz3b.js +1 -0
  92. package/src/assets/web-panel/assets/Organization-BM3Lh8Q8.css +1 -0
  93. package/src/assets/web-panel/assets/Organization-DMLDGaf1.js +4 -0
  94. package/src/assets/web-panel/assets/{Overflow-ky9UfGv4.js → Overflow-DH4QPEoI.js} +1 -1
  95. package/src/assets/web-panel/assets/{OverrideContext-C0w0P4A3.js → OverrideContext-DLR1AtLy.js} +1 -1
  96. package/src/assets/web-panel/assets/P2P-Bl4OS10o.js +2 -0
  97. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +1 -0
  98. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
  99. package/src/assets/web-panel/assets/PdhVaultBrowser-D9XSE2YI.js +7 -0
  100. package/src/assets/web-panel/assets/Permissions-CUaPlr6d.js +4 -0
  101. package/src/assets/web-panel/assets/Permissions-Diejgkbs.css +1 -0
  102. package/src/assets/web-panel/assets/PersonalDataHub-Ba92dZk-.js +3 -0
  103. package/src/assets/web-panel/assets/PersonalDataHub-C_xhspRy.css +1 -0
  104. package/src/assets/web-panel/assets/Pipeline-Bh2okm-8.js +1 -0
  105. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +1 -0
  106. package/src/assets/web-panel/assets/Privacy-Bmq3p4gC.js +1 -0
  107. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +1 -0
  108. package/src/assets/web-panel/assets/ProjectInit-BPu2fdKR.js +2 -0
  109. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
  110. package/src/assets/web-panel/assets/ProjectSettings-D6ABLpmt.js +2 -0
  111. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
  112. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
  113. package/src/assets/web-panel/assets/Projects-qWHEve0z.js +1 -0
  114. package/src/assets/web-panel/assets/Providers-CpAXh_6c.css +1 -0
  115. package/src/assets/web-panel/assets/Providers-D9DI-2hc.js +1 -0
  116. package/src/assets/web-panel/assets/{QrScannerModal-er_HkLCI.js → QrScannerModal-CxifoeD5.js} +1 -1
  117. package/src/assets/web-panel/assets/QrScannerModal-DFrn7rxS.css +1 -0
  118. package/src/assets/web-panel/assets/QuickAsk-DC1BvwR7.js +1 -0
  119. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +1 -0
  120. package/src/assets/web-panel/assets/Recommend-CKqbMB5o.js +1 -0
  121. package/src/assets/web-panel/assets/RemoteSession-BGGzPdS5.js +5 -0
  122. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +1 -0
  123. package/src/assets/web-panel/assets/Reputation-DH90O9-5.js +1 -0
  124. package/src/assets/web-panel/assets/Row-h7ovueJc.js +1 -0
  125. package/src/assets/web-panel/assets/RssFeed-Cze7YLaG.css +1 -0
  126. package/src/assets/web-panel/assets/RssFeed-DaHxXTZg.js +3 -0
  127. package/src/assets/web-panel/assets/Search-B6RalzTB.css +1 -0
  128. package/src/assets/web-panel/assets/Search-Bn6Nqpn4.js +1 -0
  129. package/src/assets/web-panel/assets/Security-13K57V_v.css +1 -0
  130. package/src/assets/web-panel/assets/Security-ClbBmPJi.js +4 -0
  131. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +1 -0
  132. package/src/assets/web-panel/assets/Services-ChHLQwRn.js +2 -0
  133. package/src/assets/web-panel/assets/{Skeleton-CrFs6rUL.js → Skeleton-DfN6BFzt.js} +1 -1
  134. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +1 -0
  135. package/src/assets/web-panel/assets/Skills-C926wDev.js +1 -0
  136. package/src/assets/web-panel/assets/Sla-DJzi1l1M.js +1 -0
  137. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +1 -0
  138. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +1 -0
  139. package/src/assets/web-panel/assets/SpeechSettings-_GSyVjm_.js +1 -0
  140. package/src/assets/web-panel/assets/SyncSettings-B67xnERe.js +1 -0
  141. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
  142. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +1 -0
  143. package/src/assets/web-panel/assets/Tasks-BaYZadcG.js +1 -0
  144. package/src/assets/web-panel/assets/Templates-BsMmCdZI.css +1 -0
  145. package/src/assets/web-panel/assets/Templates-Bu8kN1Xt.js +1 -0
  146. package/src/assets/web-panel/assets/Tenant-BM9qufw1.js +1 -0
  147. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +1 -0
  148. package/src/assets/web-panel/assets/Terminal-MEdd5DjB.js +3 -0
  149. package/src/assets/web-panel/assets/Terminal-qPp9MaPu.css +1 -0
  150. package/src/assets/web-panel/assets/TimelineRenderer-C27kL2oU.js +1 -0
  151. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
  152. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +1 -0
  153. package/src/assets/web-panel/assets/Tokens-Cvjd98VC.js +1 -0
  154. package/src/assets/web-panel/assets/{Trigger-CXrW4Nry.js → Trigger-CLym84HI.js} +1 -1
  155. package/src/assets/web-panel/assets/Trust-Bv2JTaNN.js +1 -0
  156. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +1 -0
  157. package/src/assets/web-panel/assets/UkeySign-CSCkNbtm.js +1 -0
  158. package/src/assets/web-panel/assets/VideoEditing-BFDXB4xh.js +1 -0
  159. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +1 -0
  160. package/src/assets/web-panel/assets/Wallet-CMEFrG_b.js +4 -0
  161. package/src/assets/web-panel/assets/Wallet-Dw8uV4Ug.css +1 -0
  162. package/src/assets/web-panel/assets/WebAuthn-DKx6xPPl.css +1 -0
  163. package/src/assets/web-panel/assets/WebAuthn-x4eO_Q4y.js +5 -0
  164. package/src/assets/web-panel/assets/WorkflowEditor-ClWEPgV1.js +1 -0
  165. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +1 -0
  166. package/src/assets/web-panel/assets/{_getTag-DnrRH4E6.js → _getTag-BVc6NQ_K.js} +1 -1
  167. package/src/assets/web-panel/assets/{chat-BpJsXlTK.js → chat-BdYOI4gM.js} +1 -1
  168. package/src/assets/web-panel/assets/{collapseMotion-CqM1QOwM.js → collapseMotion-B4IZiILV.js} +1 -1
  169. package/src/assets/web-panel/assets/{colors-CUNg0-fh.js → colors-DcTBrGvS.js} +1 -1
  170. package/src/assets/web-panel/assets/{compact-item-C3tFHnhu.js → compact-item-Dn2ktVuj.js} +1 -1
  171. package/src/assets/web-panel/assets/createContext-XTreuyqp.js +1 -0
  172. package/src/assets/web-panel/assets/{debounce-CFGTTtN3.js → debounce-D9xTw4Sx.js} +1 -1
  173. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +1 -0
  174. package/src/assets/web-panel/assets/echarts-CDp6K7pj.js +19 -0
  175. package/src/assets/web-panel/assets/{hasIn-CU6RIciB.js → hasIn-CFRNsYQd.js} +1 -1
  176. package/src/assets/web-panel/assets/{icons-DG5UD-6K.js → icons-DlxlFL4g.js} +4 -4
  177. package/src/assets/web-panel/assets/index-3RqDry-K.js +71 -0
  178. package/src/assets/web-panel/assets/{index-BPWJw4Ji.js → index-8METW_Wr.js} +1 -1
  179. package/src/assets/web-panel/assets/index-BBd64wj8.js +31 -0
  180. package/src/assets/web-panel/assets/index-BEyVNbNE.js +3 -0
  181. package/src/assets/web-panel/assets/index-BMLpP8QQ.js +1 -0
  182. package/src/assets/web-panel/assets/{index-BzhobTgZ.js → index-BSqydcDa.js} +1 -1
  183. package/src/assets/web-panel/assets/index-BV6LojRv.js +21 -0
  184. package/src/assets/web-panel/assets/index-BbMWvjLZ.js +1 -0
  185. package/src/assets/web-panel/assets/{index-KgR1f2Gq.js → index-Brc0BF-k.js} +2 -2
  186. package/src/assets/web-panel/assets/{index-D4njcYFw.js → index-CG9YLDmI.js} +1 -1
  187. package/src/assets/web-panel/assets/{index-6EwPIfXu.js → index-CNHWMMDX.js} +1 -1
  188. package/src/assets/web-panel/assets/{index-CEIoRm_c.js → index-COuEJdmr.js} +3 -3
  189. package/src/assets/web-panel/assets/{index-BG4zuFf0.js → index-CRW3AWdS.js} +1 -1
  190. package/src/assets/web-panel/assets/{index-BOlAutGy.js → index-CUT4h5JB.js} +2 -2
  191. package/src/assets/web-panel/assets/index-CXMa7Z-S.js +1 -0
  192. package/src/assets/web-panel/assets/index-CbaPXyNc.js +19 -0
  193. package/src/assets/web-panel/assets/{index-Cq93VfoF.css → index-CfX1DEtk.css} +1 -1
  194. package/src/assets/web-panel/assets/{index-X6e0cGRU.js → index-CjHA_Q7s.js} +1 -1
  195. package/src/assets/web-panel/assets/index-CsnYp4qF.js +1 -0
  196. package/src/assets/web-panel/assets/index-D45vulkq.js +12 -0
  197. package/src/assets/web-panel/assets/index-D9kPBEqD.js +55 -0
  198. package/src/assets/web-panel/assets/index-DDTSgpXz.js +1 -0
  199. package/src/assets/web-panel/assets/index-DFl_a0n5.js +1 -0
  200. package/src/assets/web-panel/assets/index-DNdiAymC.js +1 -0
  201. package/src/assets/web-panel/assets/{index-BJjEAoDb.js → index-DQEu7uW0.js} +1 -1
  202. package/src/assets/web-panel/assets/index-DW9XncMy.js +21 -0
  203. package/src/assets/web-panel/assets/index-Daa1yCt_.js +1 -0
  204. package/src/assets/web-panel/assets/index-DdVpoNEQ.js +12 -0
  205. package/src/assets/web-panel/assets/index-Dhi4Oybt.js +1 -0
  206. package/src/assets/web-panel/assets/index-DoVoNjtJ.js +1 -0
  207. package/src/assets/web-panel/assets/{index-111hR8WZ.js → index-Vo7A4aiN.js} +4 -4
  208. package/src/assets/web-panel/assets/{index-lo9rgpyj.js → index-XdlYkgCa.js} +1 -1
  209. package/src/assets/web-panel/assets/{index-1L0tt7G2.js → index-ir2ZwWz5.js} +2 -2
  210. package/src/assets/web-panel/assets/index-kzyCd8a0.js +3 -0
  211. package/src/assets/web-panel/assets/{index-CyyhilXV.js → index-lnTt0Jps.js} +2 -2
  212. package/src/assets/web-panel/assets/{index-CLQjdKmE.js → index-ma-rJkfE.js} +1 -1
  213. package/src/assets/web-panel/assets/index-oE4jTpHK.js +13 -0
  214. package/src/assets/web-panel/assets/{index-K2Uqqkr1.js → index-r5sNECM5.js} +1 -1
  215. package/src/assets/web-panel/assets/index-uT4fRDzU.js +1 -0
  216. package/src/assets/web-panel/assets/index-xlS8pDS2.js +1 -0
  217. package/src/assets/web-panel/assets/{initDefaultProps-FI8D7E2x.js → initDefaultProps-mdL0oeZa.js} +1 -1
  218. package/src/assets/web-panel/assets/{isPlainObject-BWRMT62c.js → isPlainObject-_gz-soRW.js} +1 -1
  219. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
  220. package/src/assets/web-panel/assets/motion-ZgVCKcEX.js +11 -0
  221. package/src/assets/web-panel/assets/{move-Vl1vUReW.js → move-A_28O5T2.js} +1 -1
  222. package/src/assets/web-panel/assets/{mtc-parser-6Cu2aFME.js → mtc-parser-0zlMjabo.js} +1 -1
  223. package/src/assets/web-panel/assets/{omit-VRKL8iSO.js → omit-DF7mU3yG.js} +1 -1
  224. package/src/assets/web-panel/assets/{pickAttrs-DZfWsOe0.js → pickAttrs-Cmt8liJP.js} +1 -1
  225. package/src/assets/web-panel/assets/{placementArrow-qmcOUc4W.js → placementArrow-DaMDC57b.js} +1 -1
  226. package/src/assets/web-panel/assets/{responsiveObserve-BLB6SsSw.js → responsiveObserve-CHw_f2d3.js} +1 -1
  227. package/src/assets/web-panel/assets/{slide-41jdYeSH.js → slide-DJS9fFQq.js} +1 -1
  228. package/src/assets/web-panel/assets/{statusUtils-Yn8OQ5ey.js → statusUtils-Bk3XdZwh.js} +1 -1
  229. package/src/assets/web-panel/assets/{styleChecker-4CEwz9Zd.js → styleChecker-DMybAFsA.js} +1 -1
  230. package/src/assets/web-panel/assets/useFlexGapSupport-_tbIIFMu.js +1 -0
  231. package/src/assets/web-panel/assets/{useFs-Bugo8HuF.js → useFs-KPklVptS.js} +1 -1
  232. package/src/assets/web-panel/assets/{useMergedState-DXbJa_zE.js → useMergedState-d-EXs3xd.js} +1 -1
  233. package/src/assets/web-panel/assets/{usePersonalDataHub-B-q2ElB0.js → usePersonalDataHub-C7FrKDhD.js} +1 -1
  234. package/src/assets/web-panel/assets/{useRefs-BrCfMLMc.js → useRefs-DHeCQehi.js} +1 -1
  235. package/src/assets/web-panel/assets/{useState-CnxtbLoC.js → useState-Dlgl7fUg.js} +1 -1
  236. package/src/assets/web-panel/assets/vendor-BXcBOG8b.js +1 -0
  237. package/src/assets/web-panel/assets/vnode-DB3JBusp.js +1 -0
  238. package/src/assets/web-panel/assets/warning-Pq00owYb.js +1 -0
  239. package/src/assets/web-panel/assets/{zoom-DM1y_KKP.js → zoom-C8rAdf81.js} +1 -1
  240. package/src/assets/web-panel/index.html +4 -4
  241. package/src/command-help-index.json +1 -1
  242. package/src/commands/agent.js +1 -1
  243. package/src/commands/governed-skill-marketplace.js +24 -10
  244. package/src/commands/llm.js +4 -3
  245. package/src/data/changelog.json +14 -1
  246. package/src/harness/worktree-isolator.js +4 -1
  247. package/src/lib/compaction-host-provenance.js +24 -0
  248. package/src/lib/context-memory-kernel/durable-memory-port.js +46 -34
  249. package/src/lib/context-memory-kernel/live-compaction.js +12 -3
  250. package/src/lib/context-memory-kernel/memory-query-bundle.js +375 -0
  251. package/src/lib/context-memory-kernel/memory-query-control.js +28 -0
  252. package/src/lib/context-memory-kernel/memory-service.js +30 -16
  253. package/src/lib/context-memory-kernel/memory-shard-snapshots.js +63 -0
  254. package/src/lib/context-memory-kernel/provider-context.js +55 -24
  255. package/src/lib/context-memory-kernel/segmented-memory-port.js +347 -138
  256. package/src/lib/cost-budget.js +2 -0
  257. package/src/lib/ephemeral-worktree-scope.js +24 -0
  258. package/src/lib/evolution/evolution-deployment-loader.js +6 -4
  259. package/src/lib/evolution/governed-skill-marketplace-abort.js +14 -0
  260. package/src/lib/evolution/governed-skill-marketplace-candidate.js +10 -2
  261. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +47 -20
  262. package/src/lib/evolution/governed-skill-marketplace.js +47 -24
  263. package/src/lib/goal-condition-engine.js +20 -3
  264. package/src/lib/goal-verification-command.js +221 -0
  265. package/src/lib/goal-verification-plan.js +372 -0
  266. package/src/lib/llm-connection-probe.js +12 -5
  267. package/src/lib/llm-onboarding-catalog.json +1 -1
  268. package/src/lib/llm-pricing.js +34 -8
  269. package/src/lib/mcp-tool-catalog-authority.js +244 -0
  270. package/src/lib/model-capabilities.js +6 -0
  271. package/src/lib/model-catalog-review.js +3 -0
  272. package/src/lib/model-context-catalog.js +44 -2
  273. package/src/lib/openai-responses.js +35 -6
  274. package/src/lib/sub-agent-context.js +12 -4
  275. package/src/lib/subagent-inheritance.js +162 -2
  276. package/src/lib/usage-pricing-context.js +34 -17
  277. package/src/repl/agent-repl.js +34 -2
  278. package/src/runtime/agent-core.js +199 -9
  279. package/src/runtime/compaction-host-context.js +72 -0
  280. package/src/runtime/headless-runner.js +133 -37
  281. package/src/runtime/headless-stream.js +38 -21
  282. package/src/runtime/mcp-agent-catalog.js +257 -0
  283. package/src/runtime/mcp-config.js +18 -69
  284. package/src/runtime/mcp-tool-search.js +16 -1
  285. package/src/runtime/system-prompt.js +9 -0
  286. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +0 -1
  287. package/src/assets/web-panel/assets/AIOps-o-rFKEYL.js +0 -1
  288. package/src/assets/web-panel/assets/Analytics-Bt7H_jrh.js +0 -3
  289. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +0 -1
  290. package/src/assets/web-panel/assets/AppLayout-CgynsRFP.js +0 -9
  291. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +0 -1
  292. package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +0 -1
  293. package/src/assets/web-panel/assets/Artifacts-gghOGDyE.js +0 -1
  294. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +0 -1
  295. package/src/assets/web-panel/assets/Audit-DBXn-AZ6.js +0 -1
  296. package/src/assets/web-panel/assets/BackgroundAgents--dxPftKa.js +0 -1
  297. package/src/assets/web-panel/assets/BackgroundAgents-Dq2340Kl.css +0 -1
  298. package/src/assets/web-panel/assets/Backup-D9Zf_2tH.js +0 -1
  299. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +0 -1
  300. package/src/assets/web-panel/assets/BaseInput-DDTOjovq.js +0 -1
  301. package/src/assets/web-panel/assets/Chat-2ETqdBLn.js +0 -8
  302. package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +0 -1
  303. package/src/assets/web-panel/assets/ChatBubbleRenderer-DSg2Xs8G.js +0 -1
  304. package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +0 -1
  305. package/src/assets/web-panel/assets/Codegen-4ieEEIwt.js +0 -1
  306. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +0 -1
  307. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +0 -1
  308. package/src/assets/web-panel/assets/Community-DeYxFMJb.js +0 -1
  309. package/src/assets/web-panel/assets/Compliance-DLVjbVUh.js +0 -1
  310. package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +0 -1
  311. package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +0 -1
  312. package/src/assets/web-panel/assets/Cowork-DfUKa0T5.js +0 -6
  313. package/src/assets/web-panel/assets/Cron-_RpktpO5.js +0 -2
  314. package/src/assets/web-panel/assets/Crosschain-7x6xdbwH.js +0 -1
  315. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +0 -1
  316. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +0 -1
  317. package/src/assets/web-panel/assets/DID-ccVhToC1.js +0 -2
  318. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +0 -1
  319. package/src/assets/web-panel/assets/Dashboard-DhygcaoK.js +0 -3
  320. package/src/assets/web-panel/assets/Dropdown-DFplwXK7.js +0 -1
  321. package/src/assets/web-panel/assets/EmailListRenderer-Bm01soCN.js +0 -1
  322. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +0 -1
  323. package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +0 -1
  324. package/src/assets/web-panel/assets/EvolutionSettings-C4v--DkD.js +0 -1
  325. package/src/assets/web-panel/assets/FamilyGuardDashboard-ChQXDBA3.js +0 -1
  326. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +0 -1
  327. package/src/assets/web-panel/assets/Federation-C0yomE-M.js +0 -1
  328. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +0 -1
  329. package/src/assets/web-panel/assets/FormItemContext-DtT3ZEZK.js +0 -2
  330. package/src/assets/web-panel/assets/GenericCardRenderer-DgITtFRv.js +0 -1
  331. package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +0 -1
  332. package/src/assets/web-panel/assets/Git-CCY42R8S.js +0 -2
  333. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +0 -1
  334. package/src/assets/web-panel/assets/Governance-N66Bwvqg.js +0 -1
  335. package/src/assets/web-panel/assets/Inference-BkbPuR_2.js +0 -1
  336. package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +0 -1
  337. package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +0 -1
  338. package/src/assets/web-panel/assets/KnowledgeGraph-B3PibXdA.js +0 -1
  339. package/src/assets/web-panel/assets/Logs-CUtNB_N6.js +0 -2
  340. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +0 -1
  341. package/src/assets/web-panel/assets/MarkdownRenderer-D-V4dOe3.js +0 -1
  342. package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +0 -1
  343. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +0 -1
  344. package/src/assets/web-panel/assets/Marketplace-DLNJb6Nr.js +0 -1
  345. package/src/assets/web-panel/assets/McpTools-2zGjJb5K.js +0 -4
  346. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +0 -1
  347. package/src/assets/web-panel/assets/Memory-9rNZ1EvR.js +0 -2
  348. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +0 -1
  349. package/src/assets/web-panel/assets/MobileBridge-Cw7sAAgn.js +0 -1
  350. package/src/assets/web-panel/assets/MobileBridge-D3Arxfeg.css +0 -1
  351. package/src/assets/web-panel/assets/MobileProjects-8XACrqqy.js +0 -1
  352. package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +0 -1
  353. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +0 -1
  354. package/src/assets/web-panel/assets/Mtc-mg02JNy-.js +0 -6
  355. package/src/assets/web-panel/assets/MtcAudit-B1Vkhj2l.js +0 -19
  356. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +0 -1
  357. package/src/assets/web-panel/assets/Multisig-BQEeA7GG.js +0 -13
  358. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +0 -1
  359. package/src/assets/web-panel/assets/NLProgramming-BIbkjZV3.js +0 -1
  360. package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +0 -1
  361. package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +0 -1
  362. package/src/assets/web-panel/assets/Notes-DIwhkZNY.js +0 -7
  363. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +0 -1
  364. package/src/assets/web-panel/assets/NotificationSettings-Cj9175ce.js +0 -1
  365. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +0 -1
  366. package/src/assets/web-panel/assets/OrderTableRenderer-IfNpXT2R.js +0 -1
  367. package/src/assets/web-panel/assets/Organization-DPFp6G9o.js +0 -4
  368. package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +0 -1
  369. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +0 -1
  370. package/src/assets/web-panel/assets/P2P-tXck8GLq.js +0 -2
  371. package/src/assets/web-panel/assets/PdhVaultBrowser-DSvpQl9k.js +0 -7
  372. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +0 -1
  373. package/src/assets/web-panel/assets/Permissions-CKPkdLj-.js +0 -4
  374. package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +0 -1
  375. package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +0 -1
  376. package/src/assets/web-panel/assets/PersonalDataHub-DnqXc12l.js +0 -9
  377. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +0 -1
  378. package/src/assets/web-panel/assets/Pipeline-BKjFU_kd.js +0 -1
  379. package/src/assets/web-panel/assets/Privacy-ChC-J5Tn.js +0 -1
  380. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +0 -1
  381. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +0 -1
  382. package/src/assets/web-panel/assets/ProjectInit-ByFZG9sY.js +0 -2
  383. package/src/assets/web-panel/assets/ProjectSettings-Bbv1Kiw-.js +0 -2
  384. package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +0 -1
  385. package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +0 -1
  386. package/src/assets/web-panel/assets/Projects-QYyGW31-.js +0 -1
  387. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +0 -1
  388. package/src/assets/web-panel/assets/Providers-CJLnWw0r.js +0 -1
  389. package/src/assets/web-panel/assets/QrScannerModal-NwAHNfiJ.css +0 -1
  390. package/src/assets/web-panel/assets/QuickAsk-DoXU0np9.js +0 -1
  391. package/src/assets/web-panel/assets/Recommend-DCo_vuaf.js +0 -1
  392. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +0 -1
  393. package/src/assets/web-panel/assets/RemoteSession-CLuL925Z.js +0 -5
  394. package/src/assets/web-panel/assets/Reputation-CNNCA_-M.js +0 -1
  395. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +0 -1
  396. package/src/assets/web-panel/assets/Row-Vu4j631i.js +0 -1
  397. package/src/assets/web-panel/assets/RssFeed-C18B4xiy.js +0 -3
  398. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +0 -1
  399. package/src/assets/web-panel/assets/Search-DxiqccE2.js +0 -1
  400. package/src/assets/web-panel/assets/Search-Klk29S7C.css +0 -1
  401. package/src/assets/web-panel/assets/Security-BmrukMHn.css +0 -1
  402. package/src/assets/web-panel/assets/Security-Droe_hHI.js +0 -4
  403. package/src/assets/web-panel/assets/Services-CwmmyXzq.js +0 -2
  404. package/src/assets/web-panel/assets/Services-DAnVNhUG.css +0 -1
  405. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +0 -1
  406. package/src/assets/web-panel/assets/Skills-Dp-d2miK.js +0 -1
  407. package/src/assets/web-panel/assets/Sla-2DFXVbK4.js +0 -1
  408. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +0 -1
  409. package/src/assets/web-panel/assets/SpeechSettings-Cdd9lCoy.js +0 -1
  410. package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +0 -1
  411. package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +0 -1
  412. package/src/assets/web-panel/assets/SyncSettings-CxQhcYSk.js +0 -2
  413. package/src/assets/web-panel/assets/Tasks-BHWVRfXx.js +0 -1
  414. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +0 -1
  415. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +0 -1
  416. package/src/assets/web-panel/assets/Templates-DNFk3a5_.js +0 -1
  417. package/src/assets/web-panel/assets/Tenant-B6X6dPo8.js +0 -1
  418. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +0 -1
  419. package/src/assets/web-panel/assets/Terminal-BuUNoLGM.js +0 -3
  420. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +0 -1
  421. package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +0 -1
  422. package/src/assets/web-panel/assets/TimelineRenderer-DThrBYj8.js +0 -1
  423. package/src/assets/web-panel/assets/Tokens-CA_u4Blu.js +0 -1
  424. package/src/assets/web-panel/assets/Tokens-CynVae-o.css +0 -1
  425. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +0 -1
  426. package/src/assets/web-panel/assets/Trust-DHcLpNy3.js +0 -1
  427. package/src/assets/web-panel/assets/UkeySign-B_fni4C2.js +0 -1
  428. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +0 -1
  429. package/src/assets/web-panel/assets/VideoEditing-g9nf2EhS.js +0 -1
  430. package/src/assets/web-panel/assets/Wallet-C8pOjIve.js +0 -4
  431. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +0 -1
  432. package/src/assets/web-panel/assets/WebAuthn-BaKNjxZt.js +0 -5
  433. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +0 -1
  434. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +0 -1
  435. package/src/assets/web-panel/assets/WorkflowEditor-CX030Wb1.js +0 -1
  436. package/src/assets/web-panel/assets/createContext-B8rTvO61.js +0 -1
  437. package/src/assets/web-panel/assets/devWarning-B4_IVU_n.js +0 -1
  438. package/src/assets/web-panel/assets/echarts-C61Vn3mP.js +0 -25
  439. package/src/assets/web-panel/assets/index--6BUI55w.js +0 -1
  440. package/src/assets/web-panel/assets/index-5Q1bepcM.js +0 -1
  441. package/src/assets/web-panel/assets/index-B10Ia2KL.js +0 -21
  442. package/src/assets/web-panel/assets/index-B1SLBLli.js +0 -3
  443. package/src/assets/web-panel/assets/index-B8_VQAav.js +0 -1
  444. package/src/assets/web-panel/assets/index-BMuPJra-.js +0 -1
  445. package/src/assets/web-panel/assets/index-BOCjph-k.js +0 -12
  446. package/src/assets/web-panel/assets/index-BpBaOWmV.js +0 -1
  447. package/src/assets/web-panel/assets/index-CDlHvQtw.js +0 -1
  448. package/src/assets/web-panel/assets/index-CPF7Vqri.js +0 -55
  449. package/src/assets/web-panel/assets/index-CPmgKQcl.js +0 -1
  450. package/src/assets/web-panel/assets/index-CcpMHPWd.js +0 -21
  451. package/src/assets/web-panel/assets/index-Cyksnofp.js +0 -1
  452. package/src/assets/web-panel/assets/index-Dc9pcin6.js +0 -1
  453. package/src/assets/web-panel/assets/index-DfAC55QA.js +0 -19
  454. package/src/assets/web-panel/assets/index-DgNCfwvg.js +0 -1
  455. package/src/assets/web-panel/assets/index-DvfhIBNZ.js +0 -1
  456. package/src/assets/web-panel/assets/index-Hbzd9WeI.js +0 -1
  457. package/src/assets/web-panel/assets/index-IiS7WoUl.js +0 -13
  458. package/src/assets/web-panel/assets/index-Xa6TlaD7.js +0 -31
  459. package/src/assets/web-panel/assets/index-YczWc2_0.js +0 -12
  460. package/src/assets/web-panel/assets/index-h_ANnbR8.js +0 -3
  461. package/src/assets/web-panel/assets/index-k7QsBwyo.js +0 -75
  462. package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +0 -1
  463. package/src/assets/web-panel/assets/motion-B1hpJYSD.js +0 -11
  464. package/src/assets/web-panel/assets/useFlexGapSupport-BClv53kR.js +0 -1
  465. package/src/assets/web-panel/assets/vendor-Bn1JzzAn.js +0 -42
  466. package/src/assets/web-panel/assets/vnode-ejVeFJ0x.js +0 -1
@@ -1,6 +0,0 @@
1
- import{I as y,J as T,U as x,R as n,c as t,K as a,r as _,o as _e,x as pe,b as $,P as i,Q as s,V as c,S as g,a0 as Ae,a5 as Ue,F as he,a2 as J,$ as Be,Z as He}from"./vendor-Bn1JzzAn.js";import{_ as Ne,b as ke,u as xe,d as p}from"./index-k7QsBwyo.js";import{u as le}from"./useShellMode-CgR0wCYM.js";import{a as oe,b as ue,f as Ve,c as qe,d as Ge,p as Se}from"./mtc-parser-6Cu2aFME.js";import{s as Je,ar as Ze,N as We,D as Ke,b6 as Qe,e as Xe,f as Ye,a1 as $e,R as et}from"./icons-DG5UD-6K.js";const tt={__name:"Mtc",setup(we,{expose:o}){o();const{t:L}=ke(),e=xe(),fe=_("status"),ee=_(!1),C=_(oe("")),V=_(""),h=_(!1),m=_(ue("")),k=_(""),z=_(""),D=_(!1),S=_(null),q=$(()=>[{title:L("mtc.historyColumns.seq"),key:"seq",dataIndex:"seq",width:"90px"},{title:L("mtc.historyColumns.namespace"),key:"namespace",dataIndex:"namespace"},{title:L("mtc.historyColumns.treeSize"),key:"treeSize",dataIndex:"treeSize",width:"100px"},{title:L("mtc.historyColumns.treeHeadId"),key:"treeHeadId",dataIndex:"treeHeadId",width:"180px"},{title:L("mtc.historyColumns.publishedAt"),key:"publishedAt",dataIndex:"publishedAt",width:"140px"}]);function j(l,u){return l?l.length<=u?l:l.slice(0,u)+"…":""}async function O(){ee.value=!0;try{if(le().isEmbedded){const l=await e.sendRaw({type:"mtc.audit-status"},3e4),u=l?.result;if(!l?.ok||!u?.success)throw new Error(u?.error||l?.error||"mtc.audit-status failed");C.value=oe(u.status)}else{const{output:l}=await e.execute("audit mtc status --json",3e4);C.value=oe(l)}}catch(l){p.error(L("mtc.messages.loadStatusFailed",{err:l?.message||l}))}finally{ee.value=!1}}async function F(){if(!V.value.trim()){p.warning(L("mtc.messages.stateFileRequired"));return}h.value=!0;try{const l=V.value.trim().replace(/"/g,'\\"'),{output:u}=await e.execute(`mtc publish-status "${l}" --json`,8e3);m.value=ue(u)}catch(l){p.error(L("mtc.messages.loadPublishFailed",{err:l?.message||l}))}finally{h.value=!1}}async function v(){if(!k.value.trim()||!z.value.trim()){p.warning(L("mtc.messages.verifyPathsRequired"));return}D.value=!0,S.value=null;try{const l=k.value.trim().replace(/"/g,'\\"'),u=z.value.trim().replace(/"/g,'\\"'),{output:d}=await e.execute(`mtc verify "${l}" --landmark "${u}" --json`,12e3);S.value=Se(d),S.value.raw||p.error(L("mtc.messages.verifyNoJson"))}catch(l){p.error(L("mtc.messages.verifyFailed",{err:l?.message||l}))}finally{D.value=!1}}const R=_({config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:""},trust_anchors:{chain_count:0,total:0,by_chain:{}},staging:{pending:0},batches:{total:0,latest:null}}),Z=$(()=>{switch(R.value.config.mode){case"federated":return"Federated";case"light-client":return"Light Client";default:return"Independent"}}),re=[{title:"chain",key:"chain",dataIndex:"chain",width:"120px"},{title:"锚数",key:"count",dataIndex:"count",width:"80px"}],ne=$(()=>{const l=R.value.trust_anchors.by_chain||{};return Object.entries(l).map(([u,d])=>({key:u,chain:u,count:d}))});function U(l){return{config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:"",...l?.config||{}},trust_anchors:{chain_count:0,total:0,by_chain:{},...l?.trust_anchors||{}},staging:{pending:0,...l?.staging||{}},batches:{total:0,latest:null,...l?.batches||{}}}}const G=_({});let A=null;function ie(l){return l==="ok"?"#52c41a":l==="degraded"?"#faad14":l==="down"?"#ff4d4f":"#888"}async function W(){try{if(le().isEmbedded){const d=await e.sendRaw({type:"mtc.bridge-sla"},3e4),b=d?.result;d?.ok&&b?.success&&b.metrics&&typeof b.metrics.sla_status=="string"&&(G.value=b.metrics);return}const{output:l}=await e.execute("crosschain mtc-sla --json",3e4),u=l.split(/\r?\n/);for(let d=0;d<u.length;d++)if(u[d].trimStart().startsWith("{"))for(let b=u.length;b>d;b--)try{const f=JSON.parse(u.slice(d,b).join(`
2
- `));if(f&&typeof f.sla_status=="string"){G.value=f;return}}catch{}}catch{}}async function K(){try{if(le().isEmbedded){const d=await e.sendRaw({type:"mtc.bridge-status"},3e4),b=d?.result;if(!d?.ok||!b?.success||!b.status)throw new Error(b?.error||d?.error||"mtc.bridge-status failed");const f=b.status;R.value=U({config:{enabled:f.enabled,mode:f.mode,alg:f.alg,batch_interval_seconds:f.batch_interval_seconds,issuer:f.issuer},trust_anchors:f.trust_anchors,staging:f.staging,batches:f.batches});return}const{output:l}=await e.execute("crosschain mtc-status --json",3e4),u=l.split(/\r?\n/);for(let d=0;d<u.length;d++)if(u[d].trimStart().startsWith("{"))for(let b=u.length;b>d;b--)try{const f=JSON.parse(u.slice(d,b).join(`
3
- `));if(f&&f.config){R.value=U(f);return}}catch{}}catch(l){p.error("加载桥 MTC 状态失败: "+(l?.message||l))}}const B=_(""),Q=_(!1),X=_(null),H=_(null),r=_("随 governance-log 加载刷新"),N=$(()=>{const l=X.value?.state;return l?Array.isArray(l.pending_thresholds)&&l.pending_thresholds.length>0?l.pending_thresholds:l.pending_threshold&&Number.isInteger(l.pending_threshold.target)?[l.pending_threshold]:[]:[]}),Ce=[{title:"member_id",key:"member_id",dataIndex:"member_id"},{title:"status",key:"status",dataIndex:"status",width:"110px"},{title:"weight",key:"weight",dataIndex:"weight",width:"80px"},{title:"alg",key:"alg",dataIndex:"alg",width:"120px"}];function ze(l){switch(l){case"create":return"cyan";case"invite":case"vote":return"blue";case"leave":case"rotate-key":return"default";case"propose-revoke":case"propose-threshold":return"orange";case"confirm-revoke":case"confirm-threshold":return"gold";case"fork":case"merge":return"purple";case"dispute":case"wind-down":return"red";default:return"default"}}const se=_(!1),te=_(null),ve=_({actor:"",candidate:"",pubkeyId:""}),me=_({actor:"",candidate:"",decision:"approve"}),ae=_({actor:"",newM:2}),de=_({actor:"",target:"",reason:"inactive"}),E=_({dropZone:"",verify:!1});function w(l){return String(l||"").replace(/"/g,"").replace(/[`$]/g,"")}async function M(l,u=!0){if(!B.value.trim()){p.warning("请先输入联邦 ID");return}se.value=!0,te.value=null;try{const d=w(B.value.trim()),b=`mtc federation ${l.replace("<FED>",`"${d}"`)} --json`,{output:f}=await e.execute(b,12e3),P=f.split(/\r?\n/);let I=null;for(let Y=0;Y<P.length;Y++)if(P[Y].trimStart().startsWith("{")){for(let ce=P.length;ce>Y;ce--)try{I=JSON.parse(P.slice(Y,ce).join(`
4
- `));break}catch{}if(I)break}te.value=I||{raw:f},p.success("命令执行完成"),u&&await ge()}catch(d){p.error("CLI 执行失败: "+(d?.message||d)),te.value={error:d?.message||String(d)}}finally{se.value=!1}}function Fe(){const l=ve.value;if(!l.actor||!l.candidate||!l.pubkeyId){p.warning("actor / candidate / pubkey-id 都必填");return}return M(`invite <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --candidate-pubkey-id "${w(l.pubkeyId)}"`)}function Ie(){const l=me.value;if(!l.actor||!l.candidate){p.warning("actor / candidate 必填");return}return M(`vote <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --decision ${l.decision}`)}function Re(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`propose-threshold <FED> ${parseInt(l.newM)} --actor "${w(l.actor)}"`)}function Le(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`confirm-threshold <FED> --actor "${w(l.actor)}"`)}function Oe(l){const u=(ae.value.actor||"").trim();if(!u){p.warning('请先在"改 threshold"子 tab 填 actor');return}if(!l){p.warning("proposal event_id 缺失");return}return M(`confirm-threshold <FED> --actor "${w(u)}" --proposal-event-id "${w(l)}"`)}function Pe(l){return l?l.length<=16?l:`${l.slice(0,8)}…${l.slice(-4)}`:"—"}function Te(){const l=de.value;if(!l.actor||!l.target){p.warning("actor / target 必填");return}return M(`propose-revoke <FED> "${w(l.target)}" --actor "${w(l.actor)}" --reason "${w(l.reason)}"`)}function Me(){const l=de.value;if(!l.actor||!l.target){p.warning("actor / target 必填");return}return M(`confirm-revoke <FED> "${w(l.target)}" --actor "${w(l.actor)}"`)}function De(){if(!E.value.dropZone){p.warning("drop-zone 必填");return}return M(`governance-publish <FED> --drop-zone "${w(E.value.dropZone)}"`,!1)}function je(){if(!E.value.dropZone){p.warning("drop-zone 必填");return}const l=E.value.verify?" --verify":"";return M(`governance-pull <FED> --drop-zone "${w(E.value.dropZone)}"${l}`)}function Ee(){if(!E.value.dropZone){p.warning("drop-zone 必填");return}const l=E.value.verify?" --verify":"";return M(`governance-sync-serve <FED> --drop-zone "${w(E.value.dropZone)}" --once${l}`)}async function ge(){if(!B.value.trim()){p.warning("请输入联邦 ID");return}Q.value=!0;try{const l=B.value.trim().replace(/"/g,""),{output:u}=await e.execute(`mtc federation governance-log "${l}" --json`,8e3),d=u.split(/\r?\n/);let b=!1;for(let f=0;f<d.length;f++)if(d[f].trimStart().startsWith("{")){for(let P=d.length;P>f;P--)try{const I=JSON.parse(d.slice(f,P).join(`
5
- `));if(I&&I.state){X.value=I,b=!0;break}}catch{}if(b)break}if(!b){p.error("未能解析 governance-log 输出");return}await be(l)}catch(l){p.error("加载 governance.log 失败: "+(l?.message||l))}finally{Q.value=!1}}async function be(l){if(H.value=null,r.value="随 governance-log 加载刷新",!!l)try{const u=String(l).replace(/"/g,""),{output:d}=await e.execute(`mtc federation governance-sync-stats "${u}" --json`,8e3),b=d.split(/\r?\n/);for(let f=0;f<b.length;f++)if(b[f].trimStart().startsWith("{"))for(let P=b.length;P>f;P--)try{const I=JSON.parse(b.slice(f,P).join(`
6
- `));if(I&&(I.available!==void 0||I.mode!==void 0)){H.value=I.available===!1?null:I;return}}catch{}}catch{H.value=null}}_e(()=>{O(),K(),W(),A=setInterval(W,3e4)}),pe(()=>{A&&clearInterval(A)});const ye={t:L,ws:e,activeTab:fe,loading:ee,status:C,publishStateFile:V,publishLoading:h,publish:m,verifyEnvelopePath:k,verifyLandmarkPath:z,verifyLoading:D,verifyResult:S,historyColumns:q,truncate:j,loadStatus:O,loadPublishState:F,runVerify:v,bridgeStatus:R,bridgeModeLabel:Z,bridgeAnchorColumns:re,bridgeAnchorsTable:ne,mergeBridgeStatus:U,bridgeSla:G,get slaPollHandle(){return A},set slaPollHandle(l){A=l},slaStatusColor:ie,loadBridgeSla:W,loadBridgeStatus:K,govFederationId:B,govLoading:Q,govResult:X,govSyncStats:H,govSyncRefreshHint:r,pendingThresholdsList:N,memberColumns:Ce,eventTypeColor:ze,actionLoading:se,lastActionResult:te,inviteForm:ve,voteForm:me,thresholdForm:ae,revokeForm:de,syncForm:E,shellSafe:w,runGovAction:M,runInvite:Fe,runVote:Ie,runProposeThreshold:Re,runConfirmThreshold:Le,runConfirmThresholdById:Oe,truncateEventId:Pe,runProposeRevoke:Te,runConfirmRevoke:Me,runGovPublish:De,runGovPull:je,runGovSyncOnce:Ee,loadGovernanceLog:ge,loadGovSyncStats:be,ref:_,computed:$,onMounted:_e,get useI18n(){return ke},get ReloadOutlined(){return et},get ClockCircleOutlined(){return $e},get CheckCircleOutlined(){return Ye},get InfoCircleOutlined(){return Xe},get InboxOutlined(){return Qe},get DatabaseOutlined(){return Ke},get NumberOutlined(){return We},get HistoryOutlined(){return Ze},get SafetyOutlined(){return Je},get message(){return p},get useWsStore(){return xe},get useShellMode(){return le},get parseAuditMtcStatus(){return oe},get parsePublishStatus(){return ue},get parseVerifyResult(){return Se},get formatBatchInterval(){return Ge},get formatTimestamp(){return qe},get formatRelative(){return Ve},onUnmounted:pe};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},at={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},lt={class:"page-title"},ot={class:"page-sub"},rt={style:{"font-family":"monospace"}},nt={style:{"font-family":"monospace"}},it={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},st={key:1,style:{color:"var(--text-muted)"}},dt={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},ct={key:1,style:{color:"var(--text-muted)"}},ut={key:1,style:{"font-family":"monospace","font-size":"11px"}},ft=["title"],vt={style:{"font-family":"monospace"}},mt={style:{"font-family":"monospace","font-size":"12px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},bt={class:"raw-pre"},yt={style:{"font-family":"monospace"}},_t={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},pt={key:0},ht={style:{"font-family":"monospace"}},kt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},xt={style:{"font-family":"monospace"}},St={style:{"font-family":"monospace"}},wt={style:{"font-family":"monospace","font-size":"11px"}},Ct={key:0,style:{color:"#cf1322","margin-left":"8px"}},zt={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Ft={class:"raw-pre",style:{margin:"0"}};function It(we,o,L,e,fe,ee){const C=y("a-button"),V=y("a-space"),h=y("a-statistic"),m=y("a-card"),k=y("a-col"),z=y("a-tag"),D=y("a-row"),S=y("a-descriptions-item"),q=y("a-descriptions"),j=y("a-alert"),O=y("a-tab-pane"),F=y("a-input"),v=y("a-form-item"),R=y("a-form"),Z=y("a-table"),re=y("a-collapse-panel"),ne=y("a-collapse"),U=y("a-empty"),G=y("a-list-item"),A=y("a-list"),ie=y("a-timeline-item"),W=y("a-timeline"),K=y("a-select-option"),B=y("a-select"),Q=y("a-input-number"),X=y("a-checkbox"),H=y("a-tabs");return i(),T("div",null,[x("div",at,[x("div",null,[x("h2",lt,n(e.t("mtc.title")),1),x("p",ot,n(e.t("mtc.subtitle")),1)]),t(V,null,{default:a(()=>[t(C,{loading:e.loading,onClick:e.loadStatus},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[17]||(o[17]=r=>e.activeTab=r),class:"mtc-tabs"},{default:a(()=>[c(" ── Tab 1: Audit MTC status ────────────────────────────── "),t(O,{key:"status",tab:e.t("mtc.tabs.status")},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.enabledLabel"),value:e.status.config.enabled?e.t("mtc.status.enabled"):e.t("mtc.status.disabled"),"value-style":{color:e.status.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:a(()=>[(i(),g(Ae(e.status.config.enabled?e.CheckCircleOutlined:e.InfoCircleOutlined)))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.intervalLabel"),value:e.formatBatchInterval(e.status.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.stagingLabel"),value:e.status.staging.count,"value-style":{color:e.status.staging.count>0?"#faad14":"#888",fontSize:"20px"}},Ue({prefix:a(()=>[t(e.InboxOutlined)]),_:2},[e.status.staging.malformed>0?{name:"suffix",fn:a(()=>[t(z,{color:"red",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.status.stagingMalformed",{count:e.status.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.totalBatches"),value:e.status.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(m,{title:e.t("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(q,{column:{xs:1,sm:2},size:"small"},{default:a(()=>[t(S,{label:"namespace"},{default:a(()=>[x("span",rt,n(e.status.config.namespace_prefix||"—"),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",nt,n(e.status.config.issuer||"—"),1)]),_:1}),t(S,{label:"oldest queued"},{default:a(()=>[s(n(e.formatTimestamp(e.status.staging.oldest_queued_at)),1)]),_:1}),t(S,{label:"last batch"},{default:a(()=>[e.status.batches.last_batch_id?(i(),T(he,{key:0},[t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(e.status.batches.last_batch_id),1)]),_:1}),x("span",it,n(e.t("mtc.status.lastBatchSize",{size:e.status.batches.last_tree_size,time:e.formatRelative(e.status.batches.last_closed_at)})),1)],64)):(i(),T("span",st,n(e.t("mtc.status.noBatches")),1))]),_:1}),t(S,{label:"last tree_head_id",span:2},{default:a(()=>[e.status.batches.last_tree_head_id?(i(),T("span",dt,n(e.status.batches.last_tree_head_id),1)):(i(),T("span",ct,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!e.status.ok&&!e.loading?(i(),g(j,{key:0,type:"info","show-icon":"",message:e.t("mtc.status.loadFailMessage"),description:e.t("mtc.status.loadFailDescription")},null,8,["message","description"])):e.status.config.enabled?c("v-if",!0):(i(),g(j,{key:1,type:"info","show-icon":"",message:e.t("mtc.status.notEnabledMessage"),description:e.t("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),c(" ── Tab 2: Marketplace publisher history ───────────────── "),t(O,{key:"publisher",tab:e.t("mtc.tabs.publisher")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(R,{layout:"inline",onSubmit:J(e.loadPublishState,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.publisher.stateFileLabel")},{default:a(()=>[t(F,{value:e.publishStateFile,"onUpdate:value":o[0]||(o[0]=r=>e.publishStateFile=r),placeholder:e.t("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.publishLoading,type:"primary","html-type":"submit"},{default:a(()=>[s(n(e.t("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e.publish.ok&&!e.publish.exists?(i(),g(j,{key:0,type:"info","show-icon":"",message:e.t("mtc.publisher.missingMessage"),description:e.t("mtc.publisher.missingDescription",{path:e.publish.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):c("v-if",!0),e.publish.exists?(i(),g(D,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastSeq"),value:e.publish.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.NumberOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.historyEntries"),value:e.publish.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.HistoryOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastPublished"),value:e.formatRelative(e.publish.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):c("v-if",!0),e.publish.exists&&e.publish.history.length>0?(i(),g(Z,{key:2,"data-source":e.publish.history,columns:e.historyColumns,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:a(({column:r,record:N})=>[r.key==="seq"?(i(),g(z,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(N.seq),1)]),_:2},1024)):r.key==="treeHeadId"?(i(),T("span",ut,n(e.truncate(N.treeHeadId,22)),1)):r.key==="publishedAt"?(i(),T("span",{key:2,title:N.publishedAt},n(e.formatRelative(N.publishedAt)),9,ft)):c("v-if",!0)]),_:1},8,["data-source","columns"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 3: Verify tool ─────────────────────────────────── "),t(O,{key:"verify",tab:e.t("mtc.tabs.verify")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(j,{type:"info","show-icon":"",message:e.t("mtc.verify.infoMessage"),description:e.t("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),t(R,{layout:"vertical",onSubmit:J(e.runVerify,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.verify.envelopeLabel")},{default:a(()=>[t(F,{value:e.verifyEnvelopePath,"onUpdate:value":o[1]||(o[1]=r=>e.verifyEnvelopePath=r),placeholder:e.t("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,{label:e.t("mtc.verify.landmarkLabel")},{default:a(()=>[t(F,{value:e.verifyLandmarkPath,"onUpdate:value":o[2]||(o[2]=r=>e.verifyLandmarkPath=r),placeholder:e.t("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.verifyLoading,type:"primary",disabled:!e.verifyEnvelopePath||!e.verifyLandmarkPath,onClick:e.runVerify},{icon:a(()=>[t(e.SafetyOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.verifyResult?(i(),g(m,{key:0,title:e.verifyResult.ok?e.t("mtc.verify.passTitle"):e.t("mtc.verify.failTitle"),size:"small",style:Be({background:"var(--bg-card)",borderColor:e.verifyResult.ok?"#52c41a":"#ff4d4f"})},{default:a(()=>[t(q,{column:1,size:"small",bordered:""},{default:a(()=>[t(S,{label:e.t("mtc.verify.resultLabel")},{default:a(()=>[t(z,{color:e.verifyResult.ok?"green":"red"},{default:a(()=>[s(n(e.verifyResult.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),e.verifyResult.ok?c("v-if",!0):(i(),g(S,{key:0,label:e.t("mtc.verify.errorCodeLabel")},{default:a(()=>[x("span",vt,n(e.verifyResult.code||e.t("mtc.verify.errorCodeNone")),1),e.verifyResult.recoverable?(i(),g(z,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.verify.recoverable")),1)]),_:1})):c("v-if",!0)]),_:1},8,["label"])),e.verifyResult.leaf?(i(),g(S,{key:1,label:e.t("mtc.verify.subjectLabel")},{default:a(()=>[x("span",mt,n(e.verifyResult.leaf.subject||"—"),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.leaf?(i(),g(S,{key:2,label:e.t("mtc.verify.kindLabel")},{default:a(()=>[t(z,null,{default:a(()=>[s(n(e.verifyResult.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:3,label:e.t("mtc.verify.treeSizeLabel")},{default:a(()=>[s(n(e.verifyResult.treeHead.tree_size),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:4,label:e.t("mtc.verify.issuerLabel")},{default:a(()=>[x("span",gt,n(e.verifyResult.treeHead.issuer||"—"),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1}),e.verifyResult.raw?(i(),g(ne,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:a(()=>[t(re,{key:"raw",header:e.t("mtc.verify.rawHeader")},{default:a(()=>[x("pre",bt,n(JSON.stringify(e.verifyResult.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):c("v-if",!0)]),_:1},8,["title","style"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 4: Cross-chain bridge MTC (v0.6) ────────── "),t(O,{key:"bridge",tab:"跨链桥 MTC"},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"桥 MTC 集成",value:e.bridgeStatus.config.enabled?"已启用":"未启用","value-style":{color:e.bridgeStatus.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"互信模式",value:e.bridgeModeLabel,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"待批次关闭",value:e.bridgeStatus.staging.pending,"value-style":{color:e.bridgeStatus.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),t(m,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(q,{column:{xs:1,sm:2},size:"small",bordered:""},{default:a(()=>[t(S,{label:"算法"},{default:a(()=>[t(z,{color:e.bridgeStatus.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:a(()=>[s(n(e.bridgeStatus.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),t(S,{label:"batch interval"},{default:a(()=>[s(n(e.formatBatchInterval(e.bridgeStatus.config.batch_interval_seconds)),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",yt,n(e.bridgeStatus.config.issuer||"—"),1)]),_:1}),t(S,{label:"batches 总数"},{default:a(()=>[s(n(e.bridgeStatus.batches.total)+" ",1),e.bridgeStatus.batches.latest?(i(),T("span",_t," latest: "+n(e.bridgeStatus.batches.latest),1)):c("v-if",!0)]),_:1})]),_:1})]),_:1}),t(m,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.bridgeStatus.trust_anchors.total===0?(i(),g(U,{key:0,description:"未配置信任锚"})):(i(),g(Z,{key:1,"data-source":e.bridgeAnchorsTable,columns:e.bridgeAnchorColumns,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),o[18]||(o[18]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 添加:"),x("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),c(" v0.2: SLA / monitoring metrics from cc crosschain mtc-sla "),t(m,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"SLA Status",value:e.bridgeSla.sla_status||"—","value-style":{color:e.slaStatusColor(e.bridgeSla.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Staged pending",value:e.bridgeSla.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Batches / hour",value:e.bridgeSla.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Last batch",value:e.bridgeSla.seconds_since_last_batch!==null&&e.bridgeSla.seconds_since_last_batch!==void 0?`${e.bridgeSla.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),o[19]||(o[19]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 通过 "),x("code",null,"cc crosschain mtc-sla --json"),s(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),t(j,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),c(" ── Tab 5: Federation governance (v0.7+v0.8) ───── "),t(O,{key:"governance",tab:"联邦治理"},{default:a(()=>[t(R,{layout:"inline",style:{"margin-bottom":"16px"}},{default:a(()=>[t(v,{label:"联邦 ID"},{default:a(()=>[t(F,{value:e.govFederationId,"onUpdate:value":o[3]||(o[3]=r=>e.govFederationId=r),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.govLoading,onClick:e.loadGovernanceLog},{default:a(()=>[...o[20]||(o[20]=[s(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),e.govResult?(i(),T("div",pt,[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"状态",value:e.govResult.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"Threshold",value:e.govResult.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"事件总数",value:(e.govResult.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),t(m,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(Z,{"data-source":e.govResult.state.members||[],columns:e.memberColumns,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(e.govResult.state.pending_invites||[]).length?(i(),g(m,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(A,{"data-source":e.govResult.state.pending_invites,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{default:a(()=>[x("span",ht,n(r.member_id),1),t(z,{color:"blue"},{default:a(()=>[s("approve "+n(r.votes.approve.length)+"/"+n(r.required),1)]),_:2},1024),r.votes.reject.length?(i(),g(z,{key:0,color:"red"},{default:a(()=>[s("reject "+n(r.votes.reject.length),1)]),_:2},1024)):c("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),t(m,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(W,null,{default:a(()=>[(i(!0),T(he,null,He(e.govResult.events||[],r=>(i(),g(ie,{key:r.event_id},{default:a(()=>[x("span",kt,n(r.issued_at),1),t(z,{color:e.eventTypeColor(r.event_type),style:{"margin-left":"8px"}},{default:a(()=>[s(n(r.event_type),1)]),_:2},1032,["color"]),o[21]||(o[21]=s(" actor: ",-1)),x("span",xt,n(r.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),c(" ── v0.10: Pending threshold proposals (multi-proposal CRDT) ─── "),e.pendingThresholdsList.length>0?(i(),g(m,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.pendingThresholdsList.length>1?(i(),g(j,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):c("v-if",!0),t(A,{"data-source":e.pendingThresholdsList,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{actions:a(()=>[t(C,{size:"small",type:"primary",loading:e.actionLoading,onClick:N=>e.runConfirmThresholdById(r.event_id)},{default:a(()=>[...o[24]||(o[24]=[s(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:a(()=>[t(V,{wrap:""},{default:a(()=>[t(z,{color:"orange"},{default:a(()=>[s("target M = "+n(r.target),1)]),_:2},1024),o[22]||(o[22]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),x("span",St,n(r.proposer||"—"),1),o[23]||(o[23]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),x("span",wt,n(e.formatTimestamp(r.proposed_at)),1),t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s(n(e.truncateEventId(r.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),c(" ── v0.10: Live sync stats (governance-sync daemon counters) ─── "),e.govSyncStats?(i(),g(m,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"模式",value:e.govSyncStats.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"最近 tick",value:e.formatRelative(e.govSyncStats.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"下次轮询",value:e.govSyncRefreshHint,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),e.govSyncStats.publish||e.govSyncStats.pull||e.govSyncStats.libp2p?(i(),g(q,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:a(()=>[e.govSyncStats.publish?(i(),g(S,{key:0,label:"Publish"},{default:a(()=>[s(" last "+n(e.govSyncStats.publish.last_published||0)+" / total "+n(e.govSyncStats.publish.total_published||0),1)]),_:1})):c("v-if",!0),e.govSyncStats.pull?(i(),g(S,{key:1,label:"Pull"},{default:a(()=>[s(" last "+n(e.govSyncStats.pull.last_appended||0)+" / total "+n(e.govSyncStats.pull.total_appended||0)+" ",1),e.govSyncStats.pull.last_invalid||e.govSyncStats.pull.last_unknown?(i(),T("span",Ct," · invalid "+n(e.govSyncStats.pull.last_invalid||0)+" / unknown "+n(e.govSyncStats.pull.last_unknown||0),1)):c("v-if",!0)]),_:1})):c("v-if",!0),e.govSyncStats.libp2p?(i(),g(S,{key:2,label:"libp2p wire",span:2},{default:a(()=>[s(" recv "+n(e.govSyncStats.libp2p.wire_received||0)+" · appended "+n(e.govSyncStats.libp2p.wire_appended||0)+" ",1),e.govSyncStats.libp2p.topic?(i(),T("span",zt," ("+n(e.govSyncStats.libp2p.topic)+") ",1)):c("v-if",!0)]),_:1})):c("v-if",!0)]),_:1})):(i(),g(U,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):c("v-if",!0),c(" ── Operational governance actions (v0.9) ─────── "),t(m,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(j,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),t(H,{size:"small"},{default:a(()=>[t(O,{key:"invite",tab:"邀请"},{default:a(()=>[t(R,{layout:"inline",onSubmit:J(e.runInvite,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.inviteForm.actor,"onUpdate:value":o[4]||(o[4]=r=>e.inviteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.inviteForm.candidate,"onUpdate:value":o[5]||(o[5]=r=>e.inviteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"pubkey-id"},{default:a(()=>[t(F,{value:e.inviteForm.pubkeyId,"onUpdate:value":o[6]||(o[6]=r=>e.inviteForm.pubkeyId=r),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runInvite},{default:a(()=>[...o[25]||(o[25]=[s("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"vote",tab:"投票"},{default:a(()=>[t(R,{layout:"inline",onSubmit:J(e.runVote,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.voteForm.actor,"onUpdate:value":o[7]||(o[7]=r=>e.voteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.voteForm.candidate,"onUpdate:value":o[8]||(o[8]=r=>e.voteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"decision"},{default:a(()=>[t(B,{value:e.voteForm.decision,"onUpdate:value":o[9]||(o[9]=r=>e.voteForm.decision=r),style:{width:"110px"}},{default:a(()=>[t(K,{value:"approve"},{default:a(()=>[...o[26]||(o[26]=[s("approve",-1)])]),_:1}),t(K,{value:"reject"},{default:a(()=>[...o[27]||(o[27]=[s("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runVote},{default:a(()=>[...o[28]||(o[28]=[s("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"threshold",tab:"改 threshold"},{default:a(()=>[t(R,{layout:"inline",onSubmit:J(e.runProposeThreshold,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.thresholdForm.actor,"onUpdate:value":o[10]||(o[10]=r=>e.thresholdForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"新 M"},{default:a(()=>[t(Q,{value:e.thresholdForm.newM,"onUpdate:value":o[11]||(o[11]=r=>e.thresholdForm.newM=r),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeThreshold},{default:a(()=>[...o[29]||(o[29]=[s("propose",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmThreshold},{default:a(()=>[...o[30]||(o[30]=[s("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"revoke",tab:"撤销"},{default:a(()=>[t(R,{layout:"inline",onSubmit:J(e.runProposeRevoke,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.revokeForm.actor,"onUpdate:value":o[12]||(o[12]=r=>e.revokeForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"target"},{default:a(()=>[t(F,{value:e.revokeForm.target,"onUpdate:value":o[13]||(o[13]=r=>e.revokeForm.target=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"reason"},{default:a(()=>[t(F,{value:e.revokeForm.reason,"onUpdate:value":o[14]||(o[14]=r=>e.revokeForm.reason=r),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeRevoke},{default:a(()=>[...o[31]||(o[31]=[s("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmRevoke},{default:a(()=>[...o[32]||(o[32]=[s("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"sync",tab:"跨成员同步"},{default:a(()=>[t(R,{layout:"inline"},{default:a(()=>[t(v,{label:"drop-zone"},{default:a(()=>[t(F,{value:e.syncForm.dropZone,"onUpdate:value":o[15]||(o[15]=r=>e.syncForm.dropZone=r),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(X,{checked:e.syncForm.verify,"onUpdate:checked":o[16]||(o[16]=r=>e.syncForm.verify=r)},{default:a(()=>[...o[33]||(o[33]=[s("--verify",-1)])]),_:1},8,["checked"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovPublish},{default:a(()=>[...o[34]||(o[34]=[s("publish",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runGovPull},{default:a(()=>[...o[35]||(o[35]=[s("pull",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovSyncOnce},{default:a(()=>[...o[36]||(o[36]=[s("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),e.lastActionResult?(i(),g(m,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:a(()=>[x("pre",Ft,n(JSON.stringify(e.lastActionResult,null,2)),1)]),_:1})):c("v-if",!0)]),_:1})])):(i(),g(U,{key:1,description:"输入联邦 ID 加载 governance.log"})),t(j,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}const Dt=Ne(tt,[["render",It],["__scopeId","data-v-c2eadccb"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/Mtc.vue"]]);export{Dt as default};
@@ -1,19 +0,0 @@
1
- import{d as Ae,o as se,c as o,s as vt,t as pt,a as Y,w as ze,r as R,X as yt,b as ie,f as gt,n as Ke,e as bt,F as re,z as ht,J as Z,K as a,S as A,V as F,P as k,Q as b,U as K,a2 as wt,R as E}from"./vendor-Bn1JzzAn.js";import{h as C,f as $,l as St,i as Ye,q as $e,w as fe,O as Re,Z as It,$ as Ct,u as ve,_ as xt,d as H}from"./index-k7QsBwyo.js";import{u as pe}from"./useShellMode-CgR0wCYM.js";import kt from"./index-DvfhIBNZ.js";import je from"./index-111hR8WZ.js";import{K as me}from"./KeyCode-D63Tfrq7.js";import{w as Be}from"./raf-Deuc0E8-.js";import{i as et}from"./styleChecker-4CEwz9Zd.js";import Tt,{Textarea as tt}from"./index-BOCjph-k.js";import{b7 as Et,b8 as Ft,aj as At,ak as Dt,aS as Ot}from"./icons-DG5UD-6K.js";import{i as Rt}from"./index-K2Uqqkr1.js";import{o as rt}from"./operationUnit-vCu2co3e.js";import{s as Bt}from"./BaseInput-DDTOjovq.js";import{R as _t}from"./index-BJjEAoDb.js";import{T as _e}from"./index-B8_VQAav.js";import{o as de}from"./omit-VRKL8iSO.js";import{u as Mt}from"./useMergedState-DXbJa_zE.js";import Nt from"./index-BzhobTgZ.js";import Pt,{ListItem as zt}from"./index-CPmgKQcl.js";import Ut,{DescriptionsItem as Lt}from"./index-Hbzd9WeI.js";import Kt from"./index-KgR1f2Gq.js";import jt from"./index-BMuPJra-.js";import Ht from"./index-1L0tt7G2.js";import{B as Wt}from"./index-CLQjdKmE.js";import Vt from"./index-IiS7WoUl.js";import Jt,{FormItem as Xt}from"./index-DfAC55QA.js";import qt,{TabPane as Qt}from"./index-h_ANnbR8.js";import"./index-CDlHvQtw.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./FormItemContext-DtT3ZEZK.js";import"./devWarning-B4_IVU_n.js";import"./createContext-B8rTvO61.js";import"./pickAttrs-DZfWsOe0.js";import"./initDefaultProps-FI8D7E2x.js";import"./motion-B1hpJYSD.js";import"./zoom-DM1y_KKP.js";import"./ActionButton-Dzv1ReHF.js";import"./vnode-ejVeFJ0x.js";import"./compact-item-C3tFHnhu.js";import"./Compact-5GigOmb8.js";import"./_getTag-DnrRH4E6.js";import"./statusUtils-Yn8OQ5ey.js";import"./isPlainObject-BWRMT62c.js";import"./ResizeObserver.es-D6qJbdzf.js";import"./Trigger-CXrW4Nry.js";import"./placementArrow-qmcOUc4W.js";import"./firstNotUndefined-CLFzEa0p.js";import"./colors-CUNg0-fh.js";import"./useFlexGapSupport-BClv53kR.js";import"./index-lo9rgpyj.js";import"./index-CcpMHPWd.js";import"./index-B10Ia2KL.js";import"./Overflow-ky9UfGv4.js";import"./isMobile--2fOlCHx.js";import"./move-Vl1vUReW.js";import"./slide-41jdYeSH.js";import"./responsiveObserve-BLB6SsSw.js";import"./Row-Vu4j631i.js";import"./index-X6e0cGRU.js";import"./Col-D3I2kUGu.js";import"./Skeleton-CrFs6rUL.js";import"./hasIn-CU6RIciB.js";import"./isSymbol-S5WZT7lS.js";import"./_arrayIncludes-B8uzE354.js";import"./debounce-CFGTTtN3.js";import"./collapseMotion-CqM1QOwM.js";import"./index-BG4zuFf0.js";import"./injectionKey-BXVc-oGP.js";import"./OverrideContext-C0w0P4A3.js";import"./Dropdown-DFplwXK7.js";import"./useRefs-BrCfMLMc.js";var Gt=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Zt={border:0,background:"transparent",padding:0,lineHeight:"inherit",display:"inline-block"},He=Ae({compatConfig:{MODE:3},name:"TransButton",inheritAttrs:!1,props:{noStyle:{type:Boolean,default:void 0},onClick:Function,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0}},setup(t,r){let{slots:i,emit:e,attrs:l,expose:d}=r;const n=vt(),s=u=>{const{keyCode:c}=u;c===me.ENTER&&u.preventDefault()},g=u=>{const{keyCode:c}=u;c===me.ENTER&&e("click",u)},D=u=>{e("click",u)},y=()=>{n.value&&n.value.focus()},w=()=>{n.value&&n.value.blur()};return se(()=>{t.autofocus&&y()}),d({focus:y,blur:w}),()=>{var u;const{noStyle:c,disabled:S}=t,v=Gt(t,["noStyle","disabled"]);let p={};return c||(p=C({},Zt)),S&&(p.pointerEvents="none"),o("div",$($($({role:"button",tabindex:0,ref:n},v),l),{},{onClick:D,onKeydown:s,onKeyup:g,style:C(C({},p),l.style||{})}),[(u=i.default)===null||u===void 0?void 0:u.call(i)])}}}),Yt=(t,r,i,e)=>{const{sizeMarginHeadingVerticalEnd:l,fontWeightStrong:d}=e;return{marginBottom:l,color:i,fontWeight:d,fontSize:t,lineHeight:r}},$t=t=>{const r=[1,2,3,4,5],i={};return r.forEach(e=>{i[`
2
- h${e}&,
3
- div&-h${e},
4
- div&-h${e} > textarea,
5
- h${e}
6
- `]=Yt(t[`fontSizeHeading${e}`],t[`lineHeightHeading${e}`],t.colorTextHeading,t)}),i},er=t=>{const{componentCls:r}=t;return{"a&, a":C(C({},rt(t)),{textDecoration:t.linkDecoration,"&:active, &:hover":{textDecoration:t.linkHoverDecoration},[`&[disabled], &${r}-disabled`]:{color:t.colorTextDisabled,cursor:"not-allowed","&:active, &:hover":{color:t.colorTextDisabled},"&:active":{pointerEvents:"none"}}})}},tr=()=>({code:{margin:"0 0.2em",paddingInline:"0.4em",paddingBlock:"0.2em 0.1em",fontSize:"85%",background:"rgba(150, 150, 150, 0.1)",border:"1px solid rgba(100, 100, 100, 0.2)",borderRadius:3},kbd:{margin:"0 0.2em",paddingInline:"0.4em",paddingBlock:"0.15em 0.1em",fontSize:"90%",background:"rgba(150, 150, 150, 0.06)",border:"1px solid rgba(100, 100, 100, 0.2)",borderBottomWidth:2,borderRadius:3},mark:{padding:0,backgroundColor:Et[2]},"u, ins":{textDecoration:"underline",textDecorationSkipInk:"auto"},"s, del":{textDecoration:"line-through"},strong:{fontWeight:600},"ul, ol":{marginInline:0,marginBlock:"0 1em",padding:0,li:{marginInline:"20px 0",marginBlock:0,paddingInline:"4px 0",paddingBlock:0}},ul:{listStyleType:"circle",ul:{listStyleType:"disc"}},ol:{listStyleType:"decimal"},"pre, blockquote":{margin:"1em 0"},pre:{padding:"0.4em 0.6em",whiteSpace:"pre-wrap",wordWrap:"break-word",background:"rgba(150, 150, 150, 0.1)",border:"1px solid rgba(100, 100, 100, 0.2)",borderRadius:3,code:{display:"inline",margin:0,padding:0,fontSize:"inherit",fontFamily:"inherit",background:"transparent",border:0}},blockquote:{paddingInline:"0.6em 0",paddingBlock:0,borderInlineStart:"4px solid rgba(100, 100, 100, 0.2)",opacity:.85}}),rr=t=>{const{componentCls:r}=t,e=Rt(t).inputPaddingVertical+1;return{"&-edit-content":{position:"relative","div&":{insetInlineStart:-t.paddingSM,marginTop:-e,marginBottom:`calc(1em - ${e}px)`},[`${r}-edit-content-confirm`]:{position:"absolute",insetInlineEnd:t.marginXS+2,insetBlockEnd:t.marginXS,color:t.colorTextDescription,fontWeight:"normal",fontSize:t.fontSize,fontStyle:"normal",pointerEvents:"none"},textarea:{margin:"0!important",MozTransition:"none",height:"1em"}}}},nr=t=>({"&-copy-success":{"\n &,\n &:hover,\n &:focus":{color:t.colorSuccess}}}),or=()=>({"\n a&-ellipsis,\n span&-ellipsis\n ":{display:"inline-block",maxWidth:"100%"},"&-single-line":{whiteSpace:"nowrap"},"&-ellipsis-single-line":{overflow:"hidden",textOverflow:"ellipsis","a&, span&":{verticalAlign:"bottom"}},"&-ellipsis-multiple-line":{display:"-webkit-box",overflow:"hidden",WebkitLineClamp:3,WebkitBoxOrient:"vertical"}}),ar=t=>{const{componentCls:r,sizeMarginHeadingVerticalStart:i}=t;return{[r]:C(C(C(C(C(C(C(C(C({color:t.colorText,wordBreak:"break-word",lineHeight:t.lineHeight,[`&${r}-secondary`]:{color:t.colorTextDescription},[`&${r}-success`]:{color:t.colorSuccess},[`&${r}-warning`]:{color:t.colorWarning},[`&${r}-danger`]:{color:t.colorError,"a&:active, a&:focus":{color:t.colorErrorActive},"a&:hover":{color:t.colorErrorHover}},[`&${r}-disabled`]:{color:t.colorTextDisabled,cursor:"not-allowed",userSelect:"none"},"\n div&,\n p\n ":{marginBottom:"1em"}},$t(t)),{[`
7
- & + h1${r},
8
- & + h2${r},
9
- & + h3${r},
10
- & + h4${r},
11
- & + h5${r}
12
- `]:{marginTop:i},"\n div,\n ul,\n li,\n p,\n h1,\n h2,\n h3,\n h4,\n h5":{"\n + h1,\n + h2,\n + h3,\n + h4,\n + h5\n ":{marginTop:i}}}),tr()),er(t)),{[`
13
- ${r}-expand,
14
- ${r}-edit,
15
- ${r}-copy
16
- `]:C(C({},rt(t)),{marginInlineStart:t.marginXXS})}),rr(t)),nr(t)),or()),{"&-rtl":{direction:"rtl"}})}},nt=St("Typography",t=>[ar(t)],{sizeMarginHeadingVerticalStart:"1.2em",sizeMarginHeadingVerticalEnd:"0.5em"}),lr=()=>({prefixCls:String,value:String,maxlength:Number,autoSize:{type:[Boolean,Object]},onSave:Function,onCancel:Function,onEnd:Function,onChange:Function,originContent:String,direction:String,component:String}),ir=Ae({compatConfig:{MODE:3},name:"Editable",inheritAttrs:!1,props:lr(),setup(t,r){let{emit:i,slots:e,attrs:l}=r;const{prefixCls:d}=pt(t),n=Y({current:t.value||"",lastKeyCode:void 0,inComposition:!1,cancelFlag:!1});ze(()=>t.value,h=>{n.current=h});const s=R();se(()=>{var h;if(s.value){const x=(h=s.value)===null||h===void 0?void 0:h.resizableTextArea,M=x?.textArea;M.focus();const{length:B}=M.value;M.setSelectionRange(B,B)}});function g(h){s.value=h}function D(h){let{target:{value:x}}=h;n.current=x.replace(/[\r\n]/g,""),i("change",n.current)}function y(){n.inComposition=!0}function w(){n.inComposition=!1}function u(h){const{keyCode:x}=h;x===me.ENTER&&h.preventDefault(),!n.inComposition&&(n.lastKeyCode=x)}function c(h){const{keyCode:x,ctrlKey:M,altKey:B,metaKey:j,shiftKey:q}=h;n.lastKeyCode===x&&!n.inComposition&&!M&&!B&&!j&&!q&&(x===me.ENTER?(v(),i("end")):x===me.ESC&&(n.current=t.originContent,i("cancel")))}function S(){v()}function v(){i("save",n.current.trim())}const[p,z]=nt(d);return()=>{const h=Ye({[`${d.value}`]:!0,[`${d.value}-edit-content`]:!0,[`${d.value}-rtl`]:t.direction==="rtl",[t.component?`${d.value}-${t.component}`:""]:!0},l.class,z.value);return p(o("div",$($({},l),{},{class:h}),[o(tt,{ref:g,maxlength:t.maxlength,value:n.current,onChange:D,onKeydown:u,onKeyup:c,onCompositionstart:y,onCompositionend:w,onBlur:S,rows:1,autoSize:t.autoSize===void 0||t.autoSize},null),e.enterIcon?e.enterIcon({className:`${t.prefixCls}-edit-content-confirm`}):o(Ft,{class:`${t.prefixCls}-edit-content-confirm`},null)]))}}}),sr=3,dr=8;let W;const Me={padding:0,margin:0,display:"inline",lineHeight:"inherit"};function ot(t,r){t.setAttribute("aria-hidden","true");const i=window.getComputedStyle(r),e=Bt(i);t.setAttribute("style",e),t.style.position="fixed",t.style.left="0",t.style.height="auto",t.style.minHeight="auto",t.style.maxHeight="auto",t.style.paddingTop="0",t.style.paddingBottom="0",t.style.borderTopWidth="0",t.style.borderBottomWidth="0",t.style.top="-999999px",t.style.zIndex="-1000",t.style.textOverflow="clip",t.style.whiteSpace="normal",t.style.webkitLineClamp="none"}function ur(t){const r=document.createElement("div");ot(r,t),r.appendChild(document.createTextNode("text")),document.body.appendChild(r);const i=r.getBoundingClientRect().height;return document.body.removeChild(r),i}const cr=((t,r,i,e,l)=>{W||(W=document.createElement("div"),W.setAttribute("aria-hidden","true"),document.body.appendChild(W));const{rows:d,suffix:n=""}=r,s=ur(t),g=Math.round(s*d*100)/100;ot(W,t);const D=yt({render(){return o("div",{style:Me},[o("span",{style:Me},[i,n]),o("span",{style:Me},[e])])}});D.mount(W);function y(){return Math.round(W.getBoundingClientRect().height*100)/100-.1<=g}if(y())return D.unmount(),{content:i,text:W.innerHTML,ellipsis:!1};const w=Array.prototype.slice.apply(W.childNodes[0].childNodes[0].cloneNode(!0).childNodes).filter(x=>{let{nodeType:M,data:B}=x;return M!==dr&&B!==""}),u=Array.prototype.slice.apply(W.childNodes[0].childNodes[1].cloneNode(!0).childNodes);D.unmount();const c=[];W.innerHTML="";const S=document.createElement("span");W.appendChild(S);const v=document.createTextNode(l+n);S.appendChild(v),u.forEach(x=>{W.appendChild(x)});function p(x){S.insertBefore(x,v)}function z(x,M){let B=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:M.length,q=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;const N=Math.floor((B+j)/2),ee=M.slice(0,N);if(x.textContent=ee,B>=j-1)for(let Q=j;Q>=B;Q-=1){const te=M.slice(0,Q);if(x.textContent=te,y()||!te)return Q===M.length?{finished:!1,vNode:M}:{finished:!0,vNode:te}}return y()?z(x,M,N,j,N):z(x,M,B,N,q)}function h(x){if(x.nodeType===sr){const B=x.textContent||"",j=document.createTextNode(B);return p(j),z(j,B)}return{finished:!1,vNode:null}}return w.some(x=>{const{finished:M,vNode:B}=h(x);return B&&c.push(B),M}),{content:c,text:W.innerHTML,ellipsis:!0}});var mr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const fr=()=>({prefixCls:String,direction:String,component:String}),V=Ae({name:"ATypography",inheritAttrs:!1,props:fr(),setup(t,r){let{slots:i,attrs:e}=r;const{prefixCls:l,direction:d}=$e("typography",t),[n,s]=nt(l);return()=>{var g;const D=C(C({},t),e),{prefixCls:y,direction:w,component:u="article"}=D,c=mr(D,["prefixCls","direction","component"]);return n(o(u,$($({},c),{},{class:Ye(l.value,{[`${l.value}-rtl`]:d.value==="rtl"},e.class,s.value)}),{default:()=>[(g=i.default)===null||g===void 0?void 0:g.call(i)]}))}}}),vr=()=>{const t=document.getSelection();if(!t.rangeCount)return function(){};let r=document.activeElement;const i=[];for(let e=0;e<t.rangeCount;e++)i.push(t.getRangeAt(e));switch(r.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":r.blur();break;default:r=null;break}return t.removeAllRanges(),function(){t.type==="Caret"&&t.removeAllRanges(),t.rangeCount||i.forEach(function(e){t.addRange(e)}),r&&r.focus()}},We={"text/plain":"Text","text/html":"Url",default:"Text"},pr="Copy to clipboard: #{key}, Enter";function yr(t){const r=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return t.replace(/#{\s*key\s*}/g,r)}function gr(t,r){let i,e,l,d,n,s=!1;r||(r={});const g=r.debug||!1;try{if(e=vr(),l=document.createRange(),d=document.getSelection(),n=document.createElement("span"),n.textContent=t,n.style.all="unset",n.style.position="fixed",n.style.top=0,n.style.clip="rect(0, 0, 0, 0)",n.style.whiteSpace="pre",n.style.webkitUserSelect="text",n.style.MozUserSelect="text",n.style.msUserSelect="text",n.style.userSelect="text",n.addEventListener("copy",function(y){if(y.stopPropagation(),r.format)if(y.preventDefault(),typeof y.clipboardData>"u"){g&&console.warn("unable to use e.clipboardData"),g&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();const w=We[r.format]||We.default;window.clipboardData.setData(w,t)}else y.clipboardData.clearData(),y.clipboardData.setData(r.format,t);r.onCopy&&(y.preventDefault(),r.onCopy(y.clipboardData))}),document.body.appendChild(n),l.selectNodeContents(n),d.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");s=!0}catch(D){g&&console.error("unable to copy using execCommand: ",D),g&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(r.format||"text",t),r.onCopy&&r.onCopy(window.clipboardData),s=!0}catch(y){g&&console.error("unable to copy using clipboardData: ",y),g&&console.error("falling back to prompt"),i=yr("message"in r?r.message:pr),window.prompt(i,t)}}finally{d&&(typeof d.removeRange=="function"?d.removeRange(l):d.removeAllRanges()),n&&document.body.removeChild(n),e()}return s}var br=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const hr=et("webkitLineClamp"),wr=et("textOverflow"),Ve="...",ye=()=>({editable:{type:[Boolean,Object],default:void 0},copyable:{type:[Boolean,Object],default:void 0},prefixCls:String,component:String,type:String,disabled:{type:Boolean,default:void 0},ellipsis:{type:[Boolean,Object],default:void 0},code:{type:Boolean,default:void 0},mark:{type:Boolean,default:void 0},underline:{type:Boolean,default:void 0},delete:{type:Boolean,default:void 0},strong:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},content:String,"onUpdate:content":Function}),ge=Ae({compatConfig:{MODE:3},name:"TypographyBase",inheritAttrs:!1,props:ye(),setup(t,r){let{slots:i,attrs:e,emit:l}=r;const{prefixCls:d,direction:n}=$e("typography",t),s=Y({copied:!1,ellipsisText:"",ellipsisContent:null,isEllipsis:!1,expanded:!1,clientRendered:!1,expandStr:"",copyStr:"",copiedStr:"",editStr:"",copyId:void 0,rafId:void 0,prevProps:void 0,originContent:""}),g=R(),D=R(),y=ie(()=>{const f=t.ellipsis;return f?C({rows:1,expandable:!1},typeof f=="object"?f:null):{}});se(()=>{s.clientRendered=!0,N()}),gt(()=>{clearTimeout(s.copyId),Be.cancel(s.rafId)}),ze([()=>y.value.rows,()=>t.content],()=>{Ke(()=>{j()})},{flush:"post",deep:!0}),bt(()=>{t.content===void 0&&(fe(!t.editable,"Typography","When `editable` is enabled, please use `content` instead of children"),fe(!t.ellipsis,"Typography","When `ellipsis` is enabled, please use `content` instead of children"))});function w(){var f;return t.ellipsis||t.editable?t.content:(f=Re(g.value))===null||f===void 0?void 0:f.innerText}function u(f){const{onExpand:I}=y.value;s.expanded=!0,I?.(f)}function c(f){f.preventDefault(),s.originContent=t.content,B(!0)}function S(f){v(f),B(!1)}function v(f){const{onChange:I}=h.value;f!==t.content&&(l("update:content",f),I?.(f))}function p(){var f,I;(I=(f=h.value).onCancel)===null||I===void 0||I.call(f),B(!1)}function z(f){f.preventDefault(),f.stopPropagation();const{copyable:I}=t,T=C({},typeof I=="object"?I:null);T.text===void 0&&(T.text=w()),gr(T.text||""),s.copied=!0,Ke(()=>{T.onCopy&&T.onCopy(f),s.copyId=setTimeout(()=>{s.copied=!1},3e3)})}const h=ie(()=>{const f=t.editable;return f?C({},typeof f=="object"?f:null):{editing:!1}}),[x,M]=Mt(!1,{value:ie(()=>h.value.editing)});function B(f){const{onStart:I}=h.value;f&&I&&I(),M(f)}ze(x,f=>{var I;f||(I=D.value)===null||I===void 0||I.focus()},{flush:"post"});function j(f){if(f){const{width:I,height:T}=f;if(!I||!T)return}Be.cancel(s.rafId),s.rafId=Be(()=>{N()})}const q=ie(()=>{const{rows:f,expandable:I,suffix:T,onEllipsis:P,tooltip:U}=y.value;return T||U||t.editable||t.copyable||I||P?!1:f===1?wr:hr}),N=()=>{const{ellipsisText:f,isEllipsis:I}=s,{rows:T,suffix:P,onEllipsis:U}=y.value;if(!T||T<0||!Re(g.value)||s.expanded||t.content===void 0||q.value)return;const{content:m,text:O,ellipsis:L}=cr(Re(g.value),{rows:T,suffix:P},t.content,ue(!0),Ve);(f!==O||s.isEllipsis!==L)&&(s.ellipsisText=O,s.ellipsisContent=m,s.isEllipsis=L,I!==L&&U&&U(L))};function ee(f,I){let{mark:T,code:P,underline:U,delete:m,strong:O,keyboard:L}=f,X=I;function G(Ie,J){if(!Ie)return;const Ce=(function(){return X})();X=o(J,null,{default:()=>[Ce]})}return G(O,"strong"),G(U,"u"),G(m,"del"),G(P,"code"),G(T,"mark"),G(L,"kbd"),X}function Q(f){const{expandable:I,symbol:T}=y.value;if(!I||!f&&(s.expanded||!s.isEllipsis))return null;const P=(i.ellipsisSymbol?i.ellipsisSymbol():T)||s.expandStr;return o("a",{key:"expand",class:`${d.value}-expand`,onClick:u,"aria-label":s.expandStr},[P])}function te(){if(!t.editable)return;const{tooltip:f,triggerType:I=["icon"]}=t.editable,T=i.editableIcon?i.editableIcon():o(At,{role:"button"},null),P=i.editableTooltip?i.editableTooltip():s.editStr,U=typeof P=="string"?P:"";return I.indexOf("icon")!==-1?o(_e,{key:"edit",title:f===!1?"":P},{default:()=>[o(He,{ref:D,class:`${d.value}-edit`,onClick:c,"aria-label":U},{default:()=>[T]})]}):null}function De(){if(!t.copyable)return;const{tooltip:f}=t.copyable,I=s.copied?s.copiedStr:s.copyStr,T=i.copyableTooltip?i.copyableTooltip({copied:s.copied}):I,P=typeof T=="string"?T:"",U=s.copied?o(Dt,null,null):o(Ot,null,null),m=i.copyableIcon?i.copyableIcon({copied:!!s.copied}):U;return o(_e,{key:"copy",title:f===!1?"":T},{default:()=>[o(He,{class:[`${d.value}-copy`,{[`${d.value}-copy-success`]:s.copied}],onClick:z,"aria-label":P},{default:()=>[m]})]})}function _(){const{class:f,style:I}=e,{maxlength:T,autoSize:P,onEnd:U}=h.value;return o(ir,{class:f,style:I,prefixCls:d.value,value:t.content,originContent:s.originContent,maxlength:T,autoSize:P,onSave:S,onChange:v,onCancel:p,onEnd:U,direction:n.value,component:t.component},{enterIcon:i.editableEnterIcon})}function ue(f){return[Q(f),te(),De()].filter(I=>I)}return()=>{var f;const{triggerType:I=["icon"]}=h.value,T=t.ellipsis||t.editable?t.content!==void 0?t.content:(f=i.default)===null||f===void 0?void 0:f.call(i):i.default?i.default():t.content;return x.value?_():o(It,{componentName:"Text",children:P=>{const U=C(C({},t),e),{type:m,disabled:O,content:L,class:X,style:G}=U,Ie=br(U,["type","disabled","content","class","style"]),{rows:J,suffix:Ce,tooltip:Oe}=y.value,{edit:at,copy:lt,copied:it,expand:st}=P;s.editStr=at,s.copyStr=lt,s.copiedStr=it,s.expandStr=st;const dt=de(Ie,["prefixCls","editable","copyable","ellipsis","mark","code","delete","underline","strong","keyboard","onUpdate:content"]),xe=q.value,ut=J===1&&xe,Ue=J&&J>1&&xe;let ne=T,ct;if(J&&s.isEllipsis&&!s.expanded&&!xe){const{title:Le}=Ie;let oe=Le||"";!Le&&(typeof T=="string"||typeof T=="number")&&(oe=String(T)),oe=oe?.slice(String(s.ellipsisContent||"").length),ne=o(re,null,[ht(s.ellipsisContent),o("span",{title:oe,"aria-hidden":"true"},[Ve]),Ce])}else ne=o(re,null,[T,Ce]);ne=ee(t,ne);const mt=Oe&&J&&s.isEllipsis&&!s.expanded&&!xe,ft=i.ellipsisTooltip?i.ellipsisTooltip():Oe;return o(_t,{onResize:j,disabled:!J},{default:()=>[o(V,$({ref:g,class:[{[`${d.value}-${m}`]:m,[`${d.value}-disabled`]:O,[`${d.value}-ellipsis`]:J,[`${d.value}-single-line`]:J===1&&!s.isEllipsis,[`${d.value}-ellipsis-single-line`]:ut,[`${d.value}-ellipsis-multiple-line`]:Ue},X],style:C(C({},G),{WebkitLineClamp:Ue?J:void 0}),"aria-label":ct,direction:n.value,onClick:I.indexOf("text")!==-1?c:()=>{}},dt),{default:()=>[mt?o(_e,{title:Oe===!0?T:ft},{default:()=>[o("span",null,[ne])]}):ne,ue()]})]})}},null)}}});var Sr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Ir=()=>de(C(C({},ye()),{ellipsis:{type:Boolean,default:void 0}}),["component"]),be=(t,r)=>{let{slots:i,attrs:e}=r;const l=C(C({},t),e),{ellipsis:d,rel:n}=l,s=Sr(l,["ellipsis","rel"]);fe(typeof d!="object","Typography.Link","`ellipsis` only supports boolean value.");const g=C(C({},s),{rel:n===void 0&&s.target==="_blank"?"noopener noreferrer":n,ellipsis:!!d,component:"a"});return delete g.navigate,o(ge,g,i)};be.displayName="ATypographyLink";be.inheritAttrs=!1;be.props=Ir();const Cr=()=>de(ye(),["component"]),he=(t,r)=>{let{slots:i,attrs:e}=r;const l=C(C(C({},t),{component:"div"}),e);return o(ge,l,i)};he.displayName="ATypographyParagraph";he.inheritAttrs=!1;he.props=Cr();const xr=()=>C(C({},de(ye(),["component"])),{ellipsis:{type:[Boolean,Object],default:void 0}}),we=(t,r)=>{let{slots:i,attrs:e}=r;const{ellipsis:l}=t;fe(typeof l!="object"||!l||!("expandable"in l)&&!("rows"in l),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");const d=C(C(C({},t),{ellipsis:l&&typeof l=="object"?de(l,["expandable","rows"]):l,component:"span"}),e);return o(ge,d,i)};we.displayName="ATypographyText";we.inheritAttrs=!1;we.props=xr();var kr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Tr=Ct(1,2,3,4,5),Er=()=>C(C({},de(ye(),["component","strong"])),{level:Number}),Se=(t,r)=>{let{slots:i,attrs:e}=r;const{level:l=1}=t,d=kr(t,["level"]);let n;Tr.includes(l)?n=`h${l}`:(fe(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),n="h1");const s=C(C(C({},d),{component:n}),e);return o(ge,s,i)};Se.displayName="ATypographyTitle";Se.inheritAttrs=!1;Se.props=Er();V.Text=we;V.Title=Se;V.Paragraph=he;V.Link=be;V.Base=ge;V.install=function(t){return t.component(V.name,V),t.component(V.Text.displayName,we),t.component(V.Title.displayName,Se),t.component(V.Paragraph.displayName,he),t.component(V.Link.displayName,be),t};const Fr=12e3;function Ar(t){if(t&&t.ok===!1)throw new Error(t.error||"mtc.envelope.get handler failed");return t?.result??t}function Je(){const t=ve(),{isEmbedded:r}=pe(),i=R({phase:"idle"});async function e(d,n){if(!d||!n){i.value={phase:"error",message:"communityId / messageId 必填"};return}if(!r){i.value={phase:"error",message:"此功能仅在嵌入式 web-shell 中可用"};return}i.value={phase:"loading"};try{const s=await t.sendRaw({type:"mtc.envelope.get",communityId:d,messageId:n},Fr),g=Ar(s);if(!g||g.success!==!0){i.value={phase:"not-found",reason:g?.error};return}i.value={phase:"found",result:{origin:g.origin||"local",envelope:g.envelope||{},landmark:g.landmark??null,treeHeadId:g.treeHeadId||"",namespace:g.namespace,batchId:g.batchId,leafIndex:g.leafIndex,staging:g.staging}}}catch(s){i.value={phase:"error",message:s?.message||String(s)}}}function l(){i.value={phase:"idle"}}return{state:i,fetch:e,reset:l,isEmbedded:r}}const ke=6e4;function Te(t){if(t&&t.ok===!1)throw new Error(t.error||"archive handler failed");return t?.result??t}function Xe(){const t=ve(),{isEmbedded:r}=pe(),i=R([]),e=R(null),l=R(!1),d=R(""),n=R(null);function s(u){return d.value=u?.message||String(u),null}async function g(u,c){if(d.value="",!u)return s(new Error("communityId 必填"));l.value=!0;try{const S=await t.sendRaw({type:"mtc.archive.list",communityId:u,providerSpec:c},ke),v=Te(S);return!v||v.success!==!0?s(new Error(v?.error||"列出归档失败")):(i.value=Array.isArray(v.archives)?v.archives:[],i.value)}catch(S){return s(S)}finally{l.value=!1}}async function D(u,c,S={}){if(d.value="",!u)return s(new Error("communityId 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.archive.push",communityId:u,providerSpec:c,packOpts:S},ke),p=Te(v);return!p||p.success!==!0?s(new Error(p?.error||"归档推送失败")):(e.value=p.result,p.result)}catch(v){return s(v)}finally{l.value=!1}}async function y(u,c,S){if(d.value="",!u||!c)return s(new Error("communityId + archiveName 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.archive.restore",communityId:u,archiveName:c,providerSpec:S},ke),p=Te(v);return!p||p.success!==!0?s(new Error(p?.error||"归档恢复失败")):(e.value=p.result,p.result)}catch(v){return s(v)}finally{l.value=!1}}async function w(){d.value="";try{const u=await t.sendRaw({type:"mtc.archive.has-stored-webdav-credentials"},ke),c=Te(u);return!c||c.success!==!0?(n.value=!1,!1):(n.value=!!c.hasCredentials,n.value)}catch(u){return n.value=!1,s(u)}}return{archives:i,lastResult:e,loading:l,errorMessage:d,isEmbedded:r,hasStoredWebdavCredentials:n,listArchives:g,pushArchive:D,restoreArchive:y,checkStoredWebdavCredentials:w}}const ae=12e3;function le(t){if(t&&t.ok===!1)throw new Error(t.error||"governance-mofn handler failed");return t?.result??t}function qe(t){if(typeof Buffer<"u"&&Buffer.isBuffer(t))return t.toString("base64");if(t instanceof Uint8Array){let r="";for(let i=0;i<t.length;i++)r+=String.fromCharCode(t[i]);return globalThis.btoa(r)}if(typeof t=="string")return t;throw new TypeError("signerKeys.{secretKey,publicKey} must be Buffer / Uint8Array / base64 string")}function Qe(){const t=ve(),{isEmbedded:r}=pe(),i=R([]),e=R(null),l=R(!1),d=R("");function n(c){return d.value=c?.message||String(c),null}async function s(c){if(d.value="",!c)return n(new Error("communityId 必填"));l.value=!0;try{const S=await t.sendRaw({type:"mtc.governance-mofn.list",communityId:c},ae),v=le(S);return!v||v.success!==!0?n(new Error(v?.error||"提案列表读取失败")):(i.value=Array.isArray(v.proposals)?v.proposals:[],i.value)}catch(S){return n(S)}finally{l.value=!1}}async function g({communityId:c,proposalId:S,payload:v,members:p,threshold:z}){d.value="",l.value=!0;try{const h=await t.sendRaw({type:"mtc.governance-mofn.create",communityId:c,proposalId:S,payload:v,members:p,threshold:z},ae),x=le(h);return!x||x.success!==!0?n(new Error(x?.error||"创建提案失败")):x.proposal}catch(h){return n(h)}finally{l.value=!1}}async function D(c,S,v){if(d.value="",!v||!v.did)return n(new Error("signerKeys 必须含 did/secretKey/publicKey"));l.value=!0;try{const p={did:v.did,secretKey:qe(v.secretKey),publicKey:qe(v.publicKey)},z=await t.sendRaw({type:"mtc.governance-mofn.sign",communityId:c,proposalId:S,signerKeys:p},ae),h=le(z);return!h||h.success!==!0?n(new Error(h?.error||"签名提交失败")):(e.value=h.status,h.status)}catch(p){return n(p)}finally{l.value=!1}}async function y(c,S){if(d.value="",!c||!S)return n(new Error("communityId + proposalId 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.sign-as-self",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"代签失败")):(e.value=p.status,{...p.status,signerDID:p.signerDID})}catch(v){return n(v)}finally{l.value=!1}}async function w(c,S){d.value="",l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.status",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"状态读取失败")):(e.value=p.status,p.status)}catch(v){return n(v)}finally{l.value=!1}}async function u(c,S){d.value="",l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.finalize",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"提案 finalize 失败")):p.result}catch(v){return n(v)}finally{l.value=!1}}return{proposals:i,currentStatus:e,loading:l,errorMessage:d,isEmbedded:r,listProposals:s,createProposal:g,addSignature:D,signAsSelf:y,getStatus:w,finalize:u}}const Ee=8e3;function Fe(t){if(t&&t.ok===!1)throw new Error(t.error||"cross-fed-trust handler failed");return t?.result??t}function Ge(){const t=ve(),{isEmbedded:r}=pe(),i=R([]),e=R([]),l=R(!1),d=R("");function n(w){return d.value=w?.message||String(w),null}async function s(w){if(d.value="",!w)return n(new Error("localCommunityId 必填"));l.value=!0;try{const u=await t.sendRaw({type:"mtc.cross-fed-trust.list",localCommunityId:w},Ee),c=Fe(u);return!c||c.success!==!0?n(new Error(c?.error||"信任列表读取失败")):(i.value=Array.isArray(c.records)?c.records:[],i.value)}catch(u){return n(u)}finally{l.value=!1}}async function g({localCommunityId:w,remoteCommunityId:u,remoteMembers:c,expiresAt:S,note:v}){d.value="",l.value=!0;try{const p=await t.sendRaw({type:"mtc.cross-fed-trust.establish",localCommunityId:w,remoteCommunityId:u,remoteMembers:c,expiresAt:S||void 0,note:v||void 0},Ee),z=Fe(p);return!z||z.success!==!0?n(new Error(z?.error||"建立信任失败")):z.record}catch(p){return n(p)}finally{l.value=!1}}async function D(w,u){d.value="",l.value=!0;try{const c=await t.sendRaw({type:"mtc.cross-fed-trust.revoke",localCommunityId:w,remoteCommunityId:u},Ee),S=Fe(c);return!S||S.success!==!0?n(new Error(S?.error||"撤销信任失败")):S.removed}catch(c){return n(c)}finally{l.value=!1}}async function y(w){if(d.value="",!w)return n(new Error("localCommunityId 必填"));l.value=!0;try{const u=await t.sendRaw({type:"mtc.cross-fed-trust.get-trusted-dids",localCommunityId:w},Ee),c=Fe(u);return!c||c.success!==!0?n(new Error(c?.error||"DID 列表读取失败")):(e.value=Array.isArray(c.dids)?c.dids:[],e.value)}catch(u){return n(u)}finally{l.value=!1}}return{records:i,trustedDids:e,loading:l,errorMessage:d,isEmbedded:r,listTrust:s,establishTrust:g,revokeTrust:D,getTrustedDids:y}}const Ne=6e4;function Pe(t){if(t&&t.ok===!1)throw new Error(t.error||"auto-archive handler failed");return t?.result??t}function Ze(){const t=ve(),{isEmbedded:r}=pe(),i=R(null),e=R(null),l=R(!1),d=R("");function n(y){return d.value=y?.message||String(y),null}async function s(){d.value="",l.value=!0;try{const y=await t.sendRaw({type:"mtc.auto-archive.config-get"},Ne),w=Pe(y);return!w||w.success!==!0?n(new Error(w?.error||"config-get failed")):(i.value=w.config,w.config)}catch(y){return n(y)}finally{l.value=!1}}async function g(y){if(d.value="",!y||typeof y!="object")return n(new Error("patch 必须是对象"));l.value=!0;try{const w=await t.sendRaw({type:"mtc.auto-archive.config-set",patch:y},Ne),u=Pe(w);return!u||u.success!==!0?n(new Error(u?.error||"config-set failed")):(i.value=u.config,u.config)}catch(w){return n(w)}finally{l.value=!1}}async function D(){d.value="",l.value=!0;try{const y=await t.sendRaw({type:"mtc.auto-archive.run-now"},Ne*5),w=Pe(y);return!w||w.success!==!0?n(new Error(w?.error||"run-now failed")):(e.value=w.result,await s(),w.result)}catch(y){return n(y)}finally{l.value=!1}}return{config:i,lastRunResult:e,loading:l,errorMessage:d,isEmbedded:r,getConfig:s,setConfig:g,runNow:D}}const ce=36e5,Dr={__name:"MtcAudit",setup(t,{expose:r}){r();const i=Je(),e=Xe(),l=Qe(),d=Ge(),n=Ze(),s=R("envelope"),g=Y({communityId:"",messageId:""});async function D(){await i.fetch(g.communityId,g.messageId)}const y=R(!1);function w(m){navigator.clipboard&&(navigator.clipboard.writeText(JSON.stringify(m,null,2)),H.success("已复制到剪贴板"))}const u=Y({communityId:"",providerKind:"filesystem",rootDir:"",useStoredCredentials:!0,url:"",username:"",password:"",remotePath:"",sinceBatchId:"",archiveName:""});async function c(){e.isEmbedded&&await e.checkStoredWebdavCredentials()}se(c);const S=ie(()=>u.providerKind==="filesystem"?{kind:"filesystem",rootDir:u.rootDir}:u.providerKind==="webdav"?u.useStoredCredentials?{kind:"webdav",useStoredCredentials:!0}:{kind:"webdav",url:u.url,username:u.username,password:u.password,remotePath:u.remotePath}:null);async function v(){await e.listArchives(u.communityId,S.value)}async function p(){const m={};u.sinceBatchId&&(m.sinceBatchId=u.sinceBatchId);const O=await e.pushArchive(u.communityId,S.value,m);O&&H.success(`归档已推送:${O.name} (${O.bytes} bytes)`)}async function z(){const m=await e.restoreArchive(u.communityId,u.archiveName,S.value);m&&H.success(`恢复完成:${m.restored} 新文件 / ${m.skipped} 跳过`)}const h=Y({communityId:"",proposalId:"",payload:'{ "kind": "rule_change", "body": "" }',members:"",threshold:2});async function x(){await l.listProposals(h.communityId)}async function M(){let m;try{m=JSON.parse(h.payload)}catch(X){H.error("payload 必须是合法 JSON: "+X.message);return}const O=h.members.split(/\s+/).map(X=>X.trim()).filter(Boolean),L=await l.createProposal({communityId:h.communityId,proposalId:h.proposalId,payload:m,members:O,threshold:h.threshold});L&&(H.success(`提案已创建:${L.proposalId} (${L.threshold}-of-${L.members.length})`),await x())}async function B(m){const O=await l.finalize(h.communityId,m);O&&(H.success(`提案已 finalize: ${O.treeHeadId.slice(0,24)}...`),await x())}async function j(m){await l.getStatus(h.communityId,m)}async function q(m){const O=await l.signAsSelf(h.communityId,m);O&&(H.success(`已用本人身份 (${(O.signerDID||"").slice(-8)}) 代签 — 已收集 ${O.collected}/${O.threshold}`),await x())}const N=Y({localCommunityId:"",remoteCommunityId:"",remoteMembers:"",expiresAt:"",note:""});async function ee(){await d.listTrust(N.localCommunityId)}async function Q(){const m=N.remoteMembers.split(/\s+/).map(L=>L.trim()).filter(Boolean);await d.establishTrust({localCommunityId:N.localCommunityId,remoteCommunityId:N.remoteCommunityId,remoteMembers:m,expiresAt:N.expiresAt,note:N.note})&&(H.success(`信任已建立: ${N.localCommunityId} ↔ ${N.remoteCommunityId}`),await ee())}async function te(m){je.confirm({title:"确认撤销跨联邦信任?",content:`${N.localCommunityId} → ${m} 将不再被 inbound landmark 校验接受`,onOk:async()=>{await d.revokeTrust(N.localCommunityId,m)&&(H.success("已撤销"),await ee())}})}async function De(){await d.getTrustedDids(N.localCommunityId)}const _=Y({enabled:!1,intervalHours:24,providerKind:"webdav",rootDir:"",useStoredCredentials:!0,url:"",username:"",password:"",remotePath:"",communityIdsRaw:""});function ue(){const m=Number(_.intervalHours);return Number.isFinite(m)&&m>=5/60?Math.round(m*ce):ce*24}function f(){return _.providerKind==="filesystem"?{kind:"filesystem",rootDir:_.rootDir}:_.useStoredCredentials?{kind:"webdav",useStoredCredentials:!0}:{kind:"webdav",url:_.url,username:_.username,password:_.password,remotePath:_.remotePath}}async function I(){const m=await n.getConfig();m&&(_.enabled=!!m.enabled,_.intervalHours=Math.round((m.intervalMs||ce*24)/ce),m.providerSpec&&(_.providerKind=m.providerSpec.kind,m.providerSpec.kind==="filesystem"?_.rootDir=m.providerSpec.rootDir||"":m.providerSpec.kind==="webdav"&&(_.useStoredCredentials=!!m.providerSpec.useStoredCredentials,m.providerSpec.useStoredCredentials||(_.url=m.providerSpec.url||"",_.username=m.providerSpec.username||"",_.remotePath=m.providerSpec.remotePath||""))),_.communityIdsRaw=(m.communityIds||[]).join(`
17
- `))}async function T(){const m=_.communityIdsRaw.split(/\s+/).map(L=>L.trim()).filter(Boolean);await n.setConfig({enabled:_.enabled,intervalMs:ue(),providerSpec:f(),communityIds:m})&&H.success(_.enabled?"已保存并启动定时归档":"已保存(定时归档关闭)")}async function P(){const m=await n.runNow();if(m)if(m.status==="ok")H.success(`归档完成:${m.summary?.totalArchives||0} 包 / ${m.summary?.totalBytes||0} bytes`);else if(m.status==="partial"){const O=Object.entries(m.summary?.perCommunity||{}).filter(([,L])=>!L.ok).length;H.warning(`部分成功:${m.summary?.totalArchives||0} 包成功,${O} 个 community 失败`)}else H.error(`归档失败:${m.error||"未知错误"}`)}se(async()=>{n.isEmbedded&&await I()});const U={envelope:i,archive:e,mofn:l,trust:d,autoArchive:n,activeTab:s,envForm:g,fetchEnvelope:D,envelopeAdvanced:y,copyJson:w,archForm:u,refreshStoredCredCheck:c,providerSpec:S,archiveList:v,archivePush:p,archiveRestore:z,propForm:h,mofnList:x,mofnCreate:M,mofnFinalize:B,mofnStatus:j,mofnSignAsSelf:q,trustForm:N,trustList:ee,trustEstablish:Q,trustRevoke:te,trustDids:De,autoForm:_,HOURS_TO_MS:ce,_intervalMs:ue,_providerSpecForCron:f,autoLoadConfig:I,autoSave:T,autoRunNow:P,ref:R,reactive:Y,computed:ie,onMounted:se,get Tabs(){return qt},get TabPane(){return Qt},get Form(){return Jt},get FormItem(){return Xt},get Input(){return Tt},get InputNumber(){return Vt},get Textarea(){return tt},get Button(){return Wt},get Alert(){return Ht},get Tag(){return jt},get Card(){return Kt},get Descriptions(){return Ut},get DescriptionsItem(){return Lt},get List(){return Pt},get ListItem(){return zt},get Space(){return Nt},get Typography(){return V},get Modal(){return je},get Switch(){return kt},get message(){return H},get useMtcEnvelope(){return Je},get useMtcArchive(){return Xe},get useGovernanceMofn(){return Qe},get useCrossFedTrust(){return Ge},get useAutoArchive(){return Ze}};return Object.defineProperty(U,"__isScriptSetup",{enumerable:!1,value:!0}),U}},Or={class:"mtc-audit-page"},Rr={style:{"margin-top":"16px"}},Br={key:0,style:{"margin-top":"8px"}},_r={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},Mr={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},Nr={style:{"font-size":"12px","max-height":"200px",overflow:"auto"}},Pr={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},zr={key:1},Ur={style:{"font-size":"12px","max-height":"200px",overflow:"auto"}};function Lr(t,r,i,e,l,d){return k(),Z("div",Or,[o(e.Typography.Title,{level:3},{default:a(()=>[...r[38]||(r[38]=[b("🔐 MTC 审计套件 (B4)",-1)])]),_:1}),o(e.Typography.Paragraph,{type:"secondary"},{default:a(()=>[...r[39]||(r[39]=[b(" Merkle envelope 查询 / 外部归档 / M-of-N 治理 / 跨联邦信任锚 — 全套对外暴露。 默认壳走 WS topic ",-1),K("code",null,"mtc.*",-1),b(",主进程未托管对应 manager 时按钮会返回错误信息。 ",-1)])]),_:1}),e.envelope.isEmbedded?F("v-if",!0):(k(),A(e.Alert,{key:0,type:"warning","show-icon":"",message:"非嵌入式 web-shell",description:"此页所有功能依赖桌面主进程的 channelEventBatcher / channelEnvelopeArchiver / governanceMultiSig / crossFedTrust 实例 — 请用桌面 Web Shell 访问,纯浏览器模式下按钮会一律失败。",style:{"margin-bottom":"16px"}})),o(e.Tabs,{"active-key":e.activeTab,"onUpdate:activeKey":r[37]||(r[37]=n=>e.activeTab=n)},{default:a(()=>[F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"envelope",tab:"Envelope 查询"},{default:a(()=>[o(e.Form,{layout:"inline",onSubmit:wt(e.fetchEnvelope,["prevent"])},{default:a(()=>[o(e.FormItem,{label:"communityId"},{default:a(()=>[o(e.Input,{value:e.envForm.communityId,"onUpdate:value":r[0]||(r[0]=n=>e.envForm.communityId=n),placeholder:"comm-X","allow-clear":""},null,8,["value"])]),_:1}),o(e.FormItem,{label:"messageId"},{default:a(()=>[o(e.Input,{value:e.envForm.messageId,"onUpdate:value":r[1]||(r[1]=n=>e.envForm.messageId=n),placeholder:"msg-X","allow-clear":""},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Button,{type:"primary","html-type":"submit",loading:e.envelope.state.value.phase==="loading",disabled:!e.envelope.isEmbedded},{default:a(()=>[...r[40]||(r[40]=[b(" 查询 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),K("div",Rr,[e.envelope.state.value.phase==="error"?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.envelope.state.value.message},null,8,["message"])):e.envelope.state.value.phase==="not-found"?(k(),A(e.Alert,{key:1,type:"warning","show-icon":"",message:"未找到密码学证据",description:e.envelope.state.value.reason||"消息可能尚未被打包到 Merkle 批,或发送方未在线。"},null,8,["description"])):e.envelope.state.value.phase==="found"?(k(),Z(re,{key:2},[o(e.Descriptions,{bordered:"",column:1,size:"small"},{default:a(()=>[o(e.DescriptionsItem,{label:"来源"},{default:a(()=>[o(e.Tag,{color:e.envelope.state.value.result.origin==="local"?"green":"blue"},{default:a(()=>[b(E(e.envelope.state.value.result.origin==="local"?"本机批次":"远端拉取"),1)]),_:1},8,["color"]),e.envelope.state.value.result.staging?(k(),A(e.Tag,{key:0,color:"orange"},{default:a(()=>[...r[41]||(r[41]=[b("尚未关闭批次",-1)])]),_:1})):F("v-if",!0)]),_:1}),o(e.DescriptionsItem,{label:"Tree Head ID"},{default:a(()=>[K("code",null,E(e.envelope.state.value.result.treeHeadId),1)]),_:1}),e.envelope.state.value.result.batchId?(k(),A(e.DescriptionsItem,{key:0,label:"Batch ID"},{default:a(()=>[b(E(e.envelope.state.value.result.batchId),1)]),_:1})):F("v-if",!0),e.envelope.state.value.result.namespace?(k(),A(e.DescriptionsItem,{key:1,label:"Namespace"},{default:a(()=>[K("code",null,E(e.envelope.state.value.result.namespace),1)]),_:1})):F("v-if",!0),e.envelope.state.value.result.leafIndex!==void 0?(k(),A(e.DescriptionsItem,{key:2,label:"Leaf Index"},{default:a(()=>[b(E(e.envelope.state.value.result.leafIndex),1)]),_:1})):F("v-if",!0)]),_:1}),o(e.Button,{type:"link",size:"small",style:{"padding-left":"0","margin-top":"8px"},onClick:r[2]||(r[2]=n=>e.envelopeAdvanced=!e.envelopeAdvanced)},{default:a(()=>[b(E(e.envelopeAdvanced?"收起":"展开")+" raw JSON ",1)]),_:1}),e.envelopeAdvanced?(k(),Z("div",Br,[o(e.Card,{size:"small"},{title:a(()=>[o(e.Space,null,{default:a(()=>[r[43]||(r[43]=K("span",null,"Envelope",-1)),o(e.Button,{size:"small",onClick:r[3]||(r[3]=n=>e.copyJson(e.envelope.state.value.result.envelope))},{default:a(()=>[...r[42]||(r[42]=[b("复制",-1)])]),_:1})]),_:1})]),default:a(()=>[K("pre",_r,E(JSON.stringify(e.envelope.state.value.result.envelope,null,2)),1)]),_:1}),e.envelope.state.value.result.landmark?(k(),A(e.Card,{key:0,size:"small",style:{"margin-top":"8px"}},{title:a(()=>[o(e.Space,null,{default:a(()=>[r[45]||(r[45]=K("span",null,"Landmark",-1)),o(e.Button,{size:"small",onClick:r[4]||(r[4]=n=>e.copyJson(e.envelope.state.value.result.landmark))},{default:a(()=>[...r[44]||(r[44]=[b("复制",-1)])]),_:1})]),_:1})]),default:a(()=>[K("pre",Mr,E(JSON.stringify(e.envelope.state.value.result.landmark,null,2)),1)]),_:1})):F("v-if",!0)])):F("v-if",!0)],64)):F("v-if",!0)])]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"archive",tab:"Archive 归档"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"communityId",required:""},{default:a(()=>[o(e.Input,{value:e.archForm.communityId,"onUpdate:value":r[5]||(r[5]=n=>e.archForm.communityId=n),placeholder:"comm-X"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"provider 类型"},{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:e.archForm.providerKind==="filesystem"?"primary":"default",onClick:r[6]||(r[6]=n=>e.archForm.providerKind="filesystem")},{default:a(()=>[...r[46]||(r[46]=[b(" Filesystem ",-1)])]),_:1},8,["type"]),o(e.Button,{type:e.archForm.providerKind==="webdav"?"primary":"default",onClick:r[7]||(r[7]=n=>e.archForm.providerKind="webdav")},{default:a(()=>[...r[47]||(r[47]=[b(" WebDAV ",-1)])]),_:1},8,["type"])]),_:1})]),_:1}),e.archForm.providerKind==="filesystem"?(k(),A(e.FormItem,{key:0,label:"rootDir 本地路径",required:""},{default:a(()=>[o(e.Input,{value:e.archForm.rootDir,"onUpdate:value":r[8]||(r[8]=n=>e.archForm.rootDir=n),placeholder:"/path/to/archive-mirror"},null,8,["value"])]),_:1})):(k(),Z(re,{key:1},[o(e.FormItem,{label:"使用已保存的 WebDAV 凭据"},{default:a(()=>[o(e.Space,{direction:"vertical",style:{width:"100%"}},{default:a(()=>[o(e.Switch,{checked:e.archForm.useStoredCredentials,"onUpdate:checked":r[9]||(r[9]=n=>e.archForm.useStoredCredentials=n),disabled:e.archive.hasStoredWebdavCredentials.value===!1,"checked-children":"使用 Settings 中已保存的 WebDAV 配置","un-checked-children":"本次手输(仍只在 main 进程暂存,不写盘)"},null,8,["checked","disabled"]),e.archForm.useStoredCredentials&&e.archive.hasStoredWebdavCredentials.value===!0?(k(),A(e.Alert,{key:0,type:"success","show-icon":"",message:"已找到 Settings → 同步 → WebDAV 中保存的凭据,主进程会从 secure-config.enc(safeStorage / AES-256-GCM 加密)解密后构造 WebDAVClient — 渲染端不接触明文密码。"})):e.archForm.useStoredCredentials&&e.archive.hasStoredWebdavCredentials.value===!1?(k(),A(e.Alert,{key:1,type:"warning","show-icon":"",message:"尚未保存 WebDAV 凭据,请先在 Settings → 同步 → WebDAV 中配置一次,然后再回来推送归档。"})):F("v-if",!0)]),_:1})]),_:1}),e.archForm.useStoredCredentials?F("v-if",!0):(k(),Z(re,{key:0},[o(e.FormItem,{label:"url"},{default:a(()=>[o(e.Input,{value:e.archForm.url,"onUpdate:value":r[10]||(r[10]=n=>e.archForm.url=n),placeholder:"https://nas.example/dav"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"username"},{default:a(()=>[o(e.Input,{value:e.archForm.username,"onUpdate:value":r[11]||(r[11]=n=>e.archForm.username=n)},null,8,["value"])]),_:1}),o(e.FormItem,{label:"password"},{default:a(()=>[o(e.Input,{value:e.archForm.password,"onUpdate:value":r[12]||(r[12]=n=>e.archForm.password=n),type:"password"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remotePath"},{default:a(()=>[o(e.Input,{value:e.archForm.remotePath,"onUpdate:value":r[13]||(r[13]=n=>e.archForm.remotePath=n),placeholder:"/cc-archives"},null,8,["value"])]),_:1})],64))],64)),o(e.FormItem,{label:"(可选) sinceBatchId 增量推"},{default:a(()=>[o(e.Input,{value:e.archForm.sinceBatchId,"onUpdate:value":r[14]||(r[14]=n=>e.archForm.sinceBatchId=n),placeholder:"000005"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"(restore 用) archiveName"},{default:a(()=>[o(e.Input,{value:e.archForm.archiveName,"onUpdate:value":r[15]||(r[15]=n=>e.archForm.archiveName=n),placeholder:"channel-mtc-...zip"},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.archive.loading.value,onClick:e.archiveList},{default:a(()=>[...r[48]||(r[48]=[b("列出归档",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.archive.loading.value,disabled:!e.archive.isEmbedded,onClick:e.archivePush},{default:a(()=>[...r[49]||(r[49]=[b(" 推送 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.archive.loading.value,disabled:!e.archive.isEmbedded,onClick:e.archiveRestore},{default:a(()=>[...r[50]||(r[50]=[b(" 恢复 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.archive.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.archive.errorMessage.value},null,8,["message"])):F("v-if",!0),e.archive.archives.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.archive.archives.value,style:{"margin-top":"12px"}},{header:a(()=>[K("span",null,"provider 现有归档("+E(e.archive.archives.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[K("code",null,E(n),1),o(e.Button,{size:"small",type:"link",onClick:s=>e.archForm.archiveName=n},{default:a(()=>[...r[51]||(r[51]=[b("填入恢复",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.archive.lastResult.value?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[...r[52]||(r[52]=[b("最近一次操作",-1)])]),default:a(()=>[K("pre",Nr,E(JSON.stringify(e.archive.lastResult.value,null,2)),1)]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"mofn",tab:"Governance M-of-N"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"communityId",required:""},{default:a(()=>[o(e.Input,{value:e.propForm.communityId,"onUpdate:value":r[16]||(r[16]=n=>e.propForm.communityId=n),placeholder:"comm-X"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"proposalId",required:""},{default:a(()=>[o(e.Input,{value:e.propForm.proposalId,"onUpdate:value":r[17]||(r[17]=n=>e.propForm.proposalId=n),placeholder:"prop-rule-1"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"payload (JSON)"},{default:a(()=>[o(e.Textarea,{value:e.propForm.payload,"onUpdate:value":r[18]||(r[18]=n=>e.propForm.payload=n),rows:3},null,8,["value"])]),_:1}),o(e.FormItem,{label:"members(DID 列表,空白分隔)"},{default:a(()=>[o(e.Textarea,{value:e.propForm.members,"onUpdate:value":r[19]||(r[19]=n=>e.propForm.members=n),rows:3,placeholder:`did:chainlesschain:abc
18
- did:chainlesschain:def`},null,8,["value"])]),_:1}),o(e.FormItem,{label:"threshold"},{default:a(()=>[o(e.InputNumber,{value:e.propForm.threshold,"onUpdate:value":r[20]||(r[20]=n=>e.propForm.threshold=n),min:1,max:100},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.mofn.loading.value,onClick:e.mofnList},{default:a(()=>[...r[53]||(r[53]=[b("刷新提案列表",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.mofn.loading.value,disabled:!e.mofn.isEmbedded,onClick:e.mofnCreate},{default:a(()=>[...r[54]||(r[54]=[b(" 创建提案 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.mofn.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.mofn.errorMessage.value,style:{margin:"12px 0"}},null,8,["message"])):F("v-if",!0),o(e.Alert,{type:"success","show-icon":"",message:"签名收集 v2 — 主进程代签",description:"点击提案行的「代我签名」按钮:renderer 只发 (communityId, proposalId),桌面主进程从 DIDManager 取本人当前身份,在主进程内完成 Ed25519 签名后写入 staging/。私钥永不离开主进程。",style:{"margin-bottom":"12px"}}),e.mofn.proposals.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.mofn.proposals.value},{header:a(()=>[K("span",null,"提案列表("+E(e.mofn.proposals.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[o(e.ListItem.Meta,null,{title:a(()=>[o(e.Space,null,{default:a(()=>[K("code",null,E(n.proposalId),1),o(e.Tag,{color:n.finalized?"green":"blue"},{default:a(()=>[b(E(n.finalized?"已最终化":`${n.collected}/${n.threshold} 收集中`),1)]),_:2},1032,["color"])]),_:2},1024)]),description:a(()=>[b(" members="+E(n.members.length)+" · created "+E(n.createdAt),1)]),_:2},1024),o(e.Space,null,{default:a(()=>[o(e.Button,{size:"small",loading:e.mofn.loading.value,onClick:s=>e.mofnStatus(n.proposalId)},{default:a(()=>[...r[55]||(r[55]=[b("详情",-1)])]),_:1},8,["loading","onClick"]),o(e.Button,{size:"small",disabled:n.finalized||!e.mofn.isEmbedded,loading:e.mofn.loading.value,onClick:s=>e.mofnSignAsSelf(n.proposalId)},{default:a(()=>[...r[56]||(r[56]=[b(" 代我签名 ",-1)])]),_:1},8,["disabled","loading","onClick"]),o(e.Button,{size:"small",type:"primary",disabled:n.finalized||n.collected<n.threshold||!e.mofn.isEmbedded,loading:e.mofn.loading.value,onClick:s=>e.mofnFinalize(n.proposalId)},{default:a(()=>[...r[57]||(r[57]=[b(" Finalize ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.mofn.currentStatus.value?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[...r[58]||(r[58]=[b("当前提案状态",-1)])]),default:a(()=>[K("pre",Pr,E(JSON.stringify(e.mofn.currentStatus.value,null,2)),1)]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"trust",tab:"Cross-Fed Trust"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"localCommunityId",required:""},{default:a(()=>[o(e.Input,{value:e.trustForm.localCommunityId,"onUpdate:value":r[21]||(r[21]=n=>e.trustForm.localCommunityId=n),placeholder:"comm-engineering"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remoteCommunityId"},{default:a(()=>[o(e.Input,{value:e.trustForm.remoteCommunityId,"onUpdate:value":r[22]||(r[22]=n=>e.trustForm.remoteCommunityId=n),placeholder:"comm-research"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remoteMembers(DID 列表,空白分隔)"},{default:a(()=>[o(e.Textarea,{value:e.trustForm.remoteMembers,"onUpdate:value":r[23]||(r[23]=n=>e.trustForm.remoteMembers=n),rows:3},null,8,["value"])]),_:1}),o(e.FormItem,{label:"expiresAt(ISO 时间,留空表示永久)"},{default:a(()=>[o(e.Input,{value:e.trustForm.expiresAt,"onUpdate:value":r[24]||(r[24]=n=>e.trustForm.expiresAt=n),placeholder:"2099-01-01T00:00:00Z"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"note (可选)"},{default:a(()=>[o(e.Input,{value:e.trustForm.note,"onUpdate:value":r[25]||(r[25]=n=>e.trustForm.note=n)},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.trust.loading.value,onClick:e.trustList},{default:a(()=>[...r[59]||(r[59]=[b("刷新",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.trust.loading.value,disabled:!e.trust.isEmbedded,onClick:e.trustEstablish},{default:a(()=>[...r[60]||(r[60]=[b(" 建立信任 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.trust.loading.value,onClick:e.trustDids},{default:a(()=>[...r[61]||(r[61]=[b("查看合并 DID 集",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e.trust.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.trust.errorMessage.value},null,8,["message"])):F("v-if",!0),e.trust.records.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.trust.records.value,style:{"margin-top":"12px"}},{header:a(()=>[K("span",null,"已建立信任("+E(e.trust.records.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[o(e.ListItem.Meta,null,{title:a(()=>[o(e.Space,null,{default:a(()=>[K("code",null,E(n.remoteCommunityId),1),o(e.Tag,{color:"blue"},{default:a(()=>[b(E(n.remoteMembers.length)+" 成员",1)]),_:2},1024),n.expiresAt?(k(),A(e.Tag,{key:0,color:"orange"},{default:a(()=>[b("expires "+E(n.expiresAt),1)]),_:2},1024)):(k(),A(e.Tag,{key:1,color:"green"},{default:a(()=>[...r[62]||(r[62]=[b("永久",-1)])]),_:1}))]),_:2},1024)]),description:a(()=>[b(E(n.note||"(无备注)")+" · issued "+E(n.issuedAt),1)]),_:2},1024),o(e.Button,{size:"small",danger:"",disabled:!e.trust.isEmbedded,onClick:s=>e.trustRevoke(n.remoteCommunityId)},{default:a(()=>[...r[63]||(r[63]=[b(" 撤销 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.trust.trustedDids.value.length?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[b("合并 DID 集("+E(e.trust.trustedDids.value.length)+" 个)",1)]),default:a(()=>[o(e.List,{size:"small","data-source":e.trust.trustedDids.value},{renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[K("code",null,E(n),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"auto-archive",tab:"Auto Archive 定时归档"},{default:a(()=>[o(e.Alert,{type:"info","show-icon":"",message:"B4-auto-archive v1 — 主进程内的定时器",description:"开启后桌面主进程会按设定的间隔自动 ChannelEnvelopeArchiver.push 一遍所有目标 community。最小间隔 5 分钟(防误配)。任何归档失败会记入 lastRunStatus='partial',不会中断后续 community 的归档。",style:{"margin-bottom":"16px"}}),o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"启用定时归档"},{default:a(()=>[o(e.Switch,{checked:e.autoForm.enabled,"onUpdate:checked":r[26]||(r[26]=n=>e.autoForm.enabled=n)},null,8,["checked"])]),_:1}),o(e.FormItem,{label:"归档间隔(小时)"},{default:a(()=>[o(e.InputNumber,{value:e.autoForm.intervalHours,"onUpdate:value":r[27]||(r[27]=n=>e.autoForm.intervalHours=n),min:.1,max:168,step:1},null,8,["value"]),o(e.Typography.Text,{type:"secondary",style:{"margin-left":"8px"}},{default:a(()=>[...r[64]||(r[64]=[b(" ≥ 5 分钟(0.083 小时);常用值:1 / 6 / 24 / 168 ",-1)])]),_:1})]),_:1}),o(e.FormItem,{label:"归档目标 provider"},{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:e.autoForm.providerKind==="filesystem"?"primary":"default",onClick:r[28]||(r[28]=n=>e.autoForm.providerKind="filesystem")},{default:a(()=>[...r[65]||(r[65]=[b(" Filesystem ",-1)])]),_:1},8,["type"]),o(e.Button,{type:e.autoForm.providerKind==="webdav"?"primary":"default",onClick:r[29]||(r[29]=n=>e.autoForm.providerKind="webdav")},{default:a(()=>[...r[66]||(r[66]=[b(" WebDAV ",-1)])]),_:1},8,["type"])]),_:1})]),_:1}),e.autoForm.providerKind==="filesystem"?(k(),A(e.FormItem,{key:0,label:"rootDir 本地路径",required:""},{default:a(()=>[o(e.Input,{value:e.autoForm.rootDir,"onUpdate:value":r[30]||(r[30]=n=>e.autoForm.rootDir=n),placeholder:"/path/to/archive-mirror"},null,8,["value"])]),_:1})):(k(),Z(re,{key:1},[o(e.FormItem,{label:"使用已保存的 WebDAV 凭据"},{default:a(()=>[o(e.Switch,{checked:e.autoForm.useStoredCredentials,"onUpdate:checked":r[31]||(r[31]=n=>e.autoForm.useStoredCredentials=n)},null,8,["checked"]),o(e.Typography.Text,{type:"secondary",style:{"margin-left":"8px"}},{default:a(()=>[...r[67]||(r[67]=[b(" 建议 ON — main 进程从 secure-config.enc 解密,密码不写入 cron 配置 ",-1)])]),_:1})]),_:1}),e.autoForm.useStoredCredentials?F("v-if",!0):(k(),Z(re,{key:0},[o(e.FormItem,{label:"url"},{default:a(()=>[o(e.Input,{value:e.autoForm.url,"onUpdate:value":r[32]||(r[32]=n=>e.autoForm.url=n),placeholder:"https://nas.example/dav"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"username"},{default:a(()=>[o(e.Input,{value:e.autoForm.username,"onUpdate:value":r[33]||(r[33]=n=>e.autoForm.username=n)},null,8,["value"])]),_:1}),o(e.FormItem,{label:"password"},{default:a(()=>[o(e.Input,{value:e.autoForm.password,"onUpdate:value":r[34]||(r[34]=n=>e.autoForm.password=n),type:"password"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remotePath"},{default:a(()=>[o(e.Input,{value:e.autoForm.remotePath,"onUpdate:value":r[35]||(r[35]=n=>e.autoForm.remotePath=n),placeholder:"/cc-archives"},null,8,["value"])]),_:1})],64))],64)),o(e.FormItem,{label:"目标 community(每行一个;留空表示全部已加入的)"},{default:a(()=>[o(e.Textarea,{value:e.autoForm.communityIdsRaw,"onUpdate:value":r[36]||(r[36]=n=>e.autoForm.communityIdsRaw=n),rows:3,placeholder:`comm-A
19
- comm-B`},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:"primary",loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoSave},{default:a(()=>[...r[68]||(r[68]=[b(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoRunNow},{default:a(()=>[...r[69]||(r[69]=[b(" 立即归档一次 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{disabled:!e.autoArchive.isEmbedded,onClick:e.autoLoadConfig},{default:a(()=>[...r[70]||(r[70]=[b("刷新",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1}),e.autoArchive.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.errorMessage.value,style:{"margin-top":"12px"}},null,8,["message"])):F("v-if",!0),e.autoArchive.config.value?(k(),A(e.Card,{key:1,size:"small",title:"当前持久化配置 + 上次运行状态",style:{"margin-top":"16px"}},{default:a(()=>[o(e.Descriptions,{column:2,size:"small"},{default:a(()=>[o(e.DescriptionsItem,{label:"enabled"},{default:a(()=>[o(e.Tag,{color:e.autoArchive.config.value.enabled?"green":"default"},{default:a(()=>[b(E(e.autoArchive.config.value.enabled?"ON":"OFF"),1)]),_:1},8,["color"])]),_:1}),o(e.DescriptionsItem,{label:"interval"},{default:a(()=>[b(E(Math.round((e.autoArchive.config.value.intervalMs||0)/1e3/60))+" 分钟 ",1)]),_:1}),o(e.DescriptionsItem,{label:"providerKind"},{default:a(()=>[b(E(e.autoArchive.config.value.providerSpec?.kind||"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"targets"},{default:a(()=>[b(E(e.autoArchive.config.value.communityIds.length||"全部"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunAt"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunAt?new Date(e.autoArchive.config.value.lastRunAt).toLocaleString():"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunStatus"},{default:a(()=>[e.autoArchive.config.value.lastRunStatus?(k(),A(e.Tag,{key:0,color:e.autoArchive.config.value.lastRunStatus==="ok"?"green":e.autoArchive.config.value.lastRunStatus==="partial"?"orange":"red"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunStatus),1)]),_:1},8,["color"])):(k(),Z("span",zr,"—"))]),_:1})]),_:1}),e.autoArchive.config.value.lastRunError?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.config.value.lastRunError,style:{"margin-top":"8px"}},null,8,["message"])):F("v-if",!0)]),_:1})):F("v-if",!0),e.autoArchive.lastRunResult.value&&e.autoArchive.lastRunResult.value.summary?(k(),A(e.Card,{key:2,size:"small",title:"本次手动 run-now 摘要",style:{"margin-top":"12px"}},{default:a(()=>[K("pre",Ur,E(JSON.stringify(e.autoArchive.lastRunResult.value.summary,null,2)),1)]),_:1})):F("v-if",!0)]),_:1})]),_:1},8,["active-key"])])}const lo=xt(Dr,[["render",Lr],["__scopeId","data-v-28bd698f"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/MtcAudit.vue"]]);export{lo as default};
@@ -1 +0,0 @@
1
- .mtc-audit-page[data-v-28bd698f]{padding:16px;max-width:1200px}.mtc-audit-page[data-v-28bd698f] .ant-card-head-title{font-size:13px}.mtc-audit-page pre[data-v-28bd698f]{background:var(--ant-color-fill-alter, #fafafa);padding:8px;border-radius:4px;margin:0}
@@ -1,13 +0,0 @@
1
- import{I as u,P as p,J as E,V as y,c as o,K as t,F as Y,Q as r,R as s,U as f,Z as ne,S as k,w as ae,b as F,r as S,o as le,$ as re,a2 as G}from"./vendor-Bn1JzzAn.js";import{_ as ie,u as $,d as g}from"./index-k7QsBwyo.js";import{u as ee}from"./useShellMode-CgR0wCYM.js";import oe from"./index-111hR8WZ.js";import{a5 as se,c as de,d as ue,aP as ce,f as pe,a1 as me,R as fe}from"./icons-DG5UD-6K.js";import"./KeyCode-D63Tfrq7.js";import"./omit-VRKL8iSO.js";import"./pickAttrs-DZfWsOe0.js";import"./initDefaultProps-FI8D7E2x.js";import"./motion-B1hpJYSD.js";import"./raf-Deuc0E8-.js";import"./index-CLQjdKmE.js";import"./index-CDlHvQtw.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-B4_IVU_n.js";import"./compact-item-C3tFHnhu.js";import"./createContext-B8rTvO61.js";import"./Compact-5GigOmb8.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-4CEwz9Zd.js";import"./zoom-DM1y_KKP.js";import"./ActionButton-Dzv1ReHF.js";import"./vnode-ejVeFJ0x.js";const ge={__name:"SignProposalModal",props:{open:{type:Boolean,default:!1},proposal:{type:Object,default:null}},emits:["update:open","signed"],setup(X,{expose:a,emit:j}){a();const e=X,h=j,B=$(),{isEmbedded:_}=ee(),b=S(!1),x=S(null),v=S("ukey"),C=S(""),D=S(!1);async function z(d,K,n,c=15e3){if(_){const P=await B.sendRaw({type:d,...K},c);if(!P?.ok){const V=P?.error;throw new Error(typeof V=="string"?V:V?.message||`${d} failed`)}return P.result}return B.executeJson(n,c)}const w=F(()=>e.proposal?.proposal??{}),L=F(()=>new Set((e.proposal?.signatures??[]).map(d=>d.signerDid))),I=F(()=>L.value.size),U=F(()=>(w.value?.memberSet??[]).filter(d=>!L.value.has(d.did))),T=F(()=>{const d=w.value?.payloadHash;return!d||typeof d!="string"?"(unavailable)":d.length<=12?d:`${d.slice(0,8)}…${d.slice(-4)}`}),J=F(()=>{const d=w.value?.payload;try{return d?JSON.stringify(d,null,2):w.value?.payloadJcs||"(empty)"}catch{return String(d)}}),R=F(()=>b.value||!x.value?!1:v.value==="hex"?/^[0-9a-fA-F]{2,}$/.test(C.value.trim()):v.value==="ukey"),m=F(()=>v.value==="ukey"?"签名将通过主进程调用 U-Key 硬件 (Windows) / simulation 驱动 (macOS/Linux)。 请确认 payload hash 与发起方提供的一致。私钥不出硬件边界。":"调试模式:私钥 hex 仅供 CLI / dev 测试。生产环境请使用 U-Key 硬件源。");function O(d){return d?d.length<=28?d:`${d.slice(0,20)}…${d.slice(-8)}`:""}function N(){x.value=null,v.value="ukey",C.value="",D.value=!1,b.value=!1}ae(()=>e.open,d=>{d&&N()}),ae(U,d=>{d.length>0&&!x.value&&(x.value=d[0].did)});function H(d){b.value||h("update:open",d)}function Q(){b.value||h("update:open",!1)}async function Z(){if(!R.value)return;const d=v.value==="hex"?{secretKeyHex:C.value.trim()}:{},K=w.value.memberSet.find(n=>n.did===x.value);b.value=!0;try{const n=await z("multisig.sign",{proposalId:w.value.id,signerDid:x.value,alg:K?.alg??"Ed25519",source:v.value,params:d},v.value==="hex"?`multisig sign ${w.value.id} --signer ${x.value} --key ${d.secretKeyHex} --json`:`multisig sign ${w.value.id} --signer ${x.value} --json`,2e4);if(n.accepted)g.success(n.reachedThreshold?"✓ 签名已接受 — 达到阈值":"✓ 签名已接受"),h("signed",n),h("update:open",!1);else{const c=n.reason||"unknown",P=n.detail?` (${n.detail})`:"";g.error(`签名失败: ${c}${P}`)}}catch(n){g.error(n.message||String(n))}finally{b.value=!1}}const q={props:e,emit:h,ws:B,isEmbedded:_,signing:b,signerDid:x,keySource:v,hexInput:C,hashExpanded:D,callMultisigTopic:z,detail:w,signedSet:L,signedCount:I,pendingMembers:U,shortHash:T,payloadJson:J,canSign:R,riskDescription:m,shortDid:O,reset:N,onUpdateOpen:H,onCancel:Q,onConfirmSign:Z,ref:S,computed:F,watch:ae,get message(){return g},get useWsStore(){return $},get useShellMode(){return ee}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},ye={style:{"font-size":"12px"}},_e={style:{margin:"8px 0 0","max-height":"200px",overflow:"auto","font-size":"11px"}},ve={style:{"margin-bottom":"16px"}},be={style:{"font-size":"12px"}},ke={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},xe={style:{"margin-bottom":"16px"}};function he(X,a,j,e,h,B){const _=u("a-tag"),b=u("a-descriptions-item"),x=u("a-descriptions"),v=u("a-divider"),C=u("a-select-option"),D=u("a-select"),z=u("a-typography-text"),w=u("a-radio"),L=u("a-radio-group"),I=u("a-input-password"),U=u("a-alert"),T=u("a-button"),J=u("a-space"),R=u("a-modal");return p(),E(Y,null,[y(`
2
- #21 B.1 PR2b — multisig 提案签名 Modal。
3
- 设计:A.2 §2.4 高风险二次确认;§2.4.c payload hash 短码 (head 8 + tail 4)
4
- §2.1.a 高风险红 (danger 主按钮)
5
- 架构:renderer 永远不持私钥。source='ukey' 走主进程 ukeyManager (默认推荐);
6
- source='hex' 仅调试用 hidden by default。
7
- `),o(R,{open:j.open,title:"签名提案",width:600,"mask-closable":!1,keyboard:!1,"destroy-on-close":"","onUpdate:open":e.onUpdateOpen},{footer:t(()=>[o(J,null,{default:t(()=>[o(T,{disabled:e.signing,onClick:e.onCancel},{default:t(()=>[...a[12]||(a[12]=[r("取消",-1)])]),_:1},8,["disabled"]),o(T,{type:"primary",danger:"",loading:e.signing,disabled:!e.canSign,onClick:e.onConfirmSign},{default:t(()=>[...a[13]||(a[13]=[r("立即签名",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[j.proposal?(p(),E(Y,{key:0},[o(x,{column:1,bordered:"",size:"small"},{default:t(()=>[o(b,{label:"Domain"},{default:t(()=>[o(_,{color:"purple"},{default:t(()=>[r(s(e.detail.domain),1)]),_:1})]),_:1}),o(b,{label:"Proposal ID"},{default:t(()=>[f("code",ye,s(e.detail.id),1)]),_:1}),o(b,{label:"阈值"},{default:t(()=>[r(s(e.detail.thresholdM)+"-of-"+s(e.detail.memberSet.length),1)]),_:1}),o(b,{label:"已签 / 需签"},{default:t(()=>[r(s(e.signedCount)+" / "+s(e.detail.thresholdM),1)]),_:1}),o(b,{label:"Payload hash"},{default:t(()=>[e.hashExpanded?(p(),E("code",{key:1,class:"hash-full",style:{cursor:"pointer","font-size":"11px","word-break":"break-all"},onClick:a[1]||(a[1]=m=>e.hashExpanded=!1)},s(e.detail.payloadHash||"(unavailable)"),1)):(p(),E("code",{key:0,class:"hash-short",style:{cursor:"pointer","font-size":"12px"},onClick:a[0]||(a[0]=m=>e.hashExpanded=!0),title:"点击展开完整 hash"},s(e.shortHash),1))]),_:1}),o(b,{label:"Payload"},{default:t(()=>[f("details",null,[a[5]||(a[5]=f("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"}}," 展开 (JCS) ",-1)),f("pre",_e,s(e.payloadJson),1)])]),_:1})]),_:1}),o(v),y(" Signer DID 选择 "),f("div",ve,[a[7]||(a[7]=f("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"签名身份 (DID)",-1)),o(D,{value:e.signerDid,"onUpdate:value":a[2]||(a[2]=m=>e.signerDid=m),style:{width:"100%"},placeholder:"选择签名成员",disabled:e.signing},{default:t(()=>[(p(!0),E(Y,null,ne(e.pendingMembers,m=>(p(),k(C,{key:m.did,value:m.did},{default:t(()=>[f("code",be,s(e.shortDid(m.did)),1),f("span",ke," ("+s(m.alg)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","disabled"]),e.pendingMembers.length===0?(p(),k(z,{key:0,type:"warning",style:{"font-size":"12px"}},{default:t(()=>[...a[6]||(a[6]=[r(" 所有成员均已签名 (达阈值) ",-1)])]),_:1})):y("v-if",!0)]),y(" 密钥来源 "),f("div",xe,[a[11]||(a[11]=f("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"密钥来源",-1)),o(L,{value:e.keySource,"onUpdate:value":a[3]||(a[3]=m=>e.keySource=m),disabled:e.signing},{default:t(()=>[o(w,{value:"ukey"},{default:t(()=>[...a[8]||(a[8]=[f("strong",null,"U-Key 硬件",-1),f("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 推荐 (PIN 确认 via 主进程) ",-1)])]),_:1}),a[10]||(a[10]=f("br",null,null,-1)),o(w,{value:"hex",style:{"margin-top":"6px"}},{default:t(()=>[...a[9]||(a[9]=[f("strong",null,"软件 hex",-1),f("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 调试用 — 私钥不应在 UI 输入 ",-1)])]),_:1})]),_:1},8,["value","disabled"]),e.keySource==="hex"?(p(),k(I,{key:0,value:e.hexInput,"onUpdate:value":a[4]||(a[4]=m=>e.hexInput=m),placeholder:"hex (32 bytes = 64 chars Ed25519)",style:{"margin-top":"8px"},disabled:e.signing},null,8,["value","disabled"])):y("v-if",!0)]),y(" 警示 "),o(U,{message:"高风险操作",description:e.riskDescription,type:"warning","show-icon":"",style:{"margin-bottom":"8px"}},null,8,["description"])],64)):y("v-if",!0)]),_:1},8,["open"])],2112)}const we=ie(ge,[["render",he],["__scopeId","data-v-060feb8a"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/SignProposalModal.vue"]]),Ce={__name:"Multisig",setup(X,{expose:a}){a();const j=$(),{isEmbedded:e}=ee();async function h(i,l,M,A=8e3){if(e){const W=await j.sendRaw({type:i,...l},A);if(!W?.ok){const te=W?.error;throw new Error(typeof te=="string"?te:te?.message||`${i} failed`)}return W.result}return j.executeJson(M,A)}const B=S(!1),_=S([]),b=S([]),x=S("proposals"),v=S(""),C=S(""),D=S(!1),z=S(null),w=S(!1),L=S(null),I=[{title:"ID",key:"id",width:200},{title:"Domain",dataIndex:"domain",width:220},{title:"状态",key:"state",width:110},{title:"阈值",key:"sigs",width:80},{title:"创建",key:"createdAt",width:140},{title:"过期",key:"expiresAt",width:140},{title:"操作",key:"actions",width:240,fixed:"right"}],U=[{title:"DID",dataIndex:"did"},{title:"Alg",dataIndex:"alg",width:200}],T=F(()=>{const i={pending:0,reached:0,consumed:0,cancelled:0,expired:0};for(const l of _.value)i[l.state]!==void 0&&(i[l.state]+=1);return i}),J=F(()=>_.value.filter(i=>!(v.value&&i.state!==v.value||C.value&&!i.domain.toLowerCase().includes(C.value.toLowerCase()))));function R(i){switch(i){case"pending":return"gold";case"reached":return"cyan";case"consumed":return"green";case"cancelled":return"default";case"expired":return"red";default:return"default"}}function m(i){const l=i-Date.now(),M=Math.abs(l)/6e4;if(M<60)return l>0?`${Math.round(M)} 分钟后`:`${Math.round(M)} 分钟前`;const A=M/60;if(A<24)return l>0?`${Math.round(A)} 小时后`:`${Math.round(A)} 小时前`;const W=A/24;return l>0?`${Math.round(W)} 天后`:`${Math.round(W)} 天前`}async function O(){B.value=!0;try{const[i,l]=await Promise.all([h("multisig.list",{limit:500},"multisig list --limit 500 --json",1e4).catch(()=>[]),Promise.all(["marketplace.purchase","crosschain.bridge.outbound","did.rotate"].map(async M=>{try{const A=await h("multisig.policy.show",{domain:M},`multisig policy show ${M} --json`,8e3);return{domain:M,policy:A,updatedAtMs:Date.now()}}catch{return null}})).then(M=>M.filter(Boolean))]);_.value=Array.isArray(i)?i:[],b.value=Array.isArray(l)?l:[]}catch(i){g.error("加载失败: "+(i.message||i))}finally{B.value=!1}}async function N(i){try{const l=await h("multisig.show",{proposalId:i.id},`multisig show ${i.id} --json`,8e3);z.value=l,D.value=!0}catch(l){g.error("加载详情失败: "+(l.message||l))}}function H(i){return{onClick:()=>N(i)}}async function Q(i){oe.confirm({title:`取消提案 ${i.id.slice(0,12)}…?`,content:"已签名的成员需要重新发起新提案。此操作不可撤销。",okText:"取消提案",okType:"danger",cancelText:"保持",onOk:async()=>{try{const l=await h("multisig.cancel",{proposalId:i.id,reason:"web-shell"},`multisig cancel ${i.id} --reason web-shell --json`,8e3);l.ok?(g.success("提案已取消"),D.value=!1,await O()):g.error("取消失败: "+l.reason)}catch(l){g.error(l.message||String(l))}}})}async function Z(i){try{const l=await h("multisig.show",{proposalId:i.id},`multisig show ${i.id} --json`,8e3);L.value=l,w.value=!0}catch(l){g.error("加载提案详情失败: "+(l.message||l))}}function q(){z.value&&(L.value=z.value,w.value=!0)}async function d(){D.value=!1,await O()}async function K(i){try{const l=await h("marketplace.consume",{proposalId:i.id},`marketplace consume ${i.id} --json`,1e4);l.status==="consumed"?(g.success(`订单 ${l.order.itemId} 已执行 (¥${(l.order.amountFen/100).toFixed(2)})`),D.value=!1,await O()):g.error("执行失败: "+(l.reason||JSON.stringify(l)))}catch(l){g.error(l.message||String(l))}}async function n(i){try{const l=await h("crosschain.bridge.consume",{proposalId:i.id},`crosschain bridge-consume ${i.id} --json`,1e4);if(l.status==="consumed"){const M=l.payload||{},A=`${M.fromChain||"?"} → ${M.toChain||"?"} (amount ${M.amount??"?"})`;l.bridgeId?g.success(`跨链桥已执行: ${A} · bridgeId ${l.bridgeId}`):(g.success(`跨链桥提案已 finalize: ${A}`),oe.info({title:"跨链桥提案 finalize 完成",content:`Proposal 已标记 consumed。
8
-
9
- 在 CLI 侧运行以下命令完成 cc_bridges 行插入:
10
-
11
- cc crosschain bridge-consume ${i.id}
12
-
13
- web-shell 不持有 crosschain DB 句柄,实际 SQLite 插入仍由 CLI 端执行。`})),D.value=!1,await O()}else g.error("执行失败: "+(l.reason||JSON.stringify(l)))}catch(l){g.error(l.message||String(l))}}async function c(i){try{const l=await h("multisig.finalize",{proposalId:i.id},`multisig finalize ${i.id} --json`,8e3);l.ok?(g.success("提案已 finalize"),D.value=!1,await O()):g.error("Finalize 失败: "+l.reason)}catch(l){g.error(l.message||String(l))}}async function P(){try{const i=await h("multisig.sweep",{},"multisig sweep --json",8e3);i.expired===0?g.info("无过期提案"):(g.success(`已标记 ${i.expired} 条提案为过期`),await O())}catch(i){g.error(i.message||String(i))}}le(O);const V={ws:j,isEmbedded:e,callMultisigTopic:h,loading:B,proposals:_,policies:b,activeTab:x,stateFilter:v,domainFilter:C,detailOpen:D,detail:z,signOpen:w,signProposalDetail:L,columns:I,memberColumns:U,countByState:T,filteredProposals:J,stateColor:R,relTime:m,loadAll:O,openDetail:N,onRowClick:H,onCancel:Q,onSignFromList:Z,onSignFromDetail:q,onSigned:d,onConsume:K,onBridgeConsume:n,onFinalize:c,onSweep:P,ref:S,computed:F,onMounted:le,get ReloadOutlined(){return fe},get ClockCircleOutlined(){return me},get CheckCircleOutlined(){return pe},get CheckSquareOutlined(){return ce},get CloseCircleOutlined(){return ue},get ExclamationCircleOutlined(){return de},get FileTextOutlined(){return se},get message(){return g},get Modal(){return oe},get useWsStore(){return $},get useShellMode(){return ee},SignProposalModal:we};return Object.defineProperty(V,"__isScriptSetup",{enumerable:!1,value:!0}),V}},Se={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ze={class:"filter-bar"},Me={key:0,style:{"font-size":"12px"}},De={style:{margin:"0 0 8px 0"}},Oe={style:{"margin-left":"8px",color:"var(--text-secondary)"}},Ie={style:{"margin-top":"8px"}},Pe={style:{cursor:"pointer",color:"var(--text-secondary)"}},Ae={key:0},Fe={style:{margin:"0","max-height":"240px",overflow:"auto","font-size":"12px"}},Le={style:{margin:"16px 0 8px 0"}},je={style:{"font-size":"12px"}};function Be(X,a,j,e,h,B){const _=u("a-button"),b=u("a-space"),x=u("a-statistic"),v=u("a-card"),C=u("a-col"),D=u("a-row"),z=u("a-radio-button"),w=u("a-radio-group"),L=u("a-input-search"),I=u("a-tag"),U=u("a-tooltip"),T=u("a-table"),J=u("a-tab-pane"),R=u("a-empty"),m=u("a-descriptions-item"),O=u("a-descriptions"),N=u("a-list-item"),H=u("a-list"),Q=u("a-tabs"),Z=u("a-list-item-meta"),q=u("a-divider"),d=u("a-alert"),K=u("a-drawer");return p(),E("div",null,[f("div",Se,[a[12]||(a[12]=f("div",null,[f("h2",{class:"page-title"},"M-of-N 多签"),f("p",{class:"page-sub"},"marketplace.purchase 大额、DID 关键操作、跨链桥 outbound 的联合签名审批")],-1)),o(b,null,{default:t(()=>[o(_,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[o(e.ReloadOutlined)]),default:t(()=>[a[10]||(a[10]=r(" 刷新 ",-1))]),_:1},8,["loading"]),o(_,{onClick:e.onSweep},{icon:t(()=>[o(e.ClockCircleOutlined)]),default:t(()=>[a[11]||(a[11]=r(" 扫过期 ",-1))]),_:1})]),_:1})]),y(" Stats "),o(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"总提案",value:e.proposals.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[o(e.FileTextOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"待签",value:e.countByState.pending,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:t(()=>[o(e.ClockCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"已达阈值",value:e.countByState.reached,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[o(e.CheckSquareOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"已执行",value:e.countByState.consumed,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:t(()=>[o(e.CheckCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"已取消",value:e.countByState.cancelled,"value-style":{color:"#8c8c8c",fontSize:"20px"}},{prefix:t(()=>[o(e.CloseCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:4},{default:t(()=>[o(v,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[o(x,{title:"已过期",value:e.countByState.expired,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:t(()=>[o(e.ExclamationCircleOutlined)]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),o(Q,{activeKey:e.activeTab,"onUpdate:activeKey":a[2]||(a[2]=n=>e.activeTab=n)},{default:t(()=>[y(" Proposals tab "),o(J,{key:"proposals",tab:"提案列表"},{default:t(()=>[f("div",ze,[o(w,{value:e.stateFilter,"onUpdate:value":a[0]||(a[0]=n=>e.stateFilter=n),size:"small","button-style":"solid"},{default:t(()=>[o(z,{value:""},{default:t(()=>[...a[13]||(a[13]=[r("全部",-1)])]),_:1}),o(z,{value:"pending"},{default:t(()=>[...a[14]||(a[14]=[r("待签",-1)])]),_:1}),o(z,{value:"reached"},{default:t(()=>[...a[15]||(a[15]=[r("已达阈值",-1)])]),_:1}),o(z,{value:"consumed"},{default:t(()=>[...a[16]||(a[16]=[r("已执行",-1)])]),_:1}),o(z,{value:"cancelled"},{default:t(()=>[...a[17]||(a[17]=[r("已取消",-1)])]),_:1}),o(z,{value:"expired"},{default:t(()=>[...a[18]||(a[18]=[r("已过期",-1)])]),_:1})]),_:1},8,["value"]),o(L,{value:e.domainFilter,"onUpdate:value":a[1]||(a[1]=n=>e.domainFilter=n),placeholder:"按 domain 过滤 (marketplace.purchase 等)","allow-clear":"",style:{"max-width":"360px","margin-left":"12px"}},null,8,["value"])]),o(T,{columns:e.columns,"data-source":e.filteredProposals,loading:e.loading,pagination:{pageSize:20,showSizeChanger:!0,pageSizeOptions:["10","20","50","100"]},"row-key":"id",size:"middle",onRowClick:e.onRowClick,"row-class-name":()=>"multisig-row"},{bodyCell:t(({column:n,record:c})=>[n.key==="id"?(p(),E("code",Me,s(c.id.slice(0,16))+"…",1)):n.key==="state"?(p(),k(I,{key:1,color:e.stateColor(c.state)},{default:t(()=>[r(s(c.state),1)]),_:2},1032,["color"])):n.key==="sigs"?(p(),k(I,{key:2,color:c.n===c.m?"cyan":"default"},{default:t(()=>[r(s(c.m)+"/"+s(c.n),1)]),_:2},1032,["color"])):n.key==="createdAt"?(p(),k(U,{key:3,title:new Date(c.createdAtMs).toLocaleString()},{default:t(()=>[r(s(e.relTime(c.createdAtMs)),1)]),_:2},1032,["title"])):n.key==="expiresAt"?(p(),k(U,{key:4,title:new Date(c.expiresAtMs).toLocaleString()},{default:t(()=>[f("span",{style:re({color:c.expiresAtMs<Date.now()?"#ff4d4f":"inherit"})},s(e.relTime(c.expiresAtMs)),5)]),_:2},1032,["title"])):n.key==="actions"?(p(),k(b,{key:5,size:"small"},{default:t(()=>[o(_,{size:"small",onClick:G(P=>e.openDetail(c),["stop"])},{default:t(()=>[...a[19]||(a[19]=[r("详情",-1)])]),_:1},8,["onClick"]),c.state==="pending"||c.state==="reached"?(p(),k(_,{key:0,size:"small",danger:"",onClick:G(P=>e.onCancel(c),["stop"])},{default:t(()=>[...a[20]||(a[20]=[r("取消",-1)])]),_:1},8,["onClick"])):y("v-if",!0),c.state==="pending"?(p(),k(_,{key:1,size:"small",type:"primary",onClick:G(P=>e.onSignFromList(c),["stop"])},{default:t(()=>[...a[21]||(a[21]=[r("签名",-1)])]),_:1},8,["onClick"])):y("v-if",!0),c.state==="reached"&&c.domain==="marketplace.purchase"?(p(),k(_,{key:2,size:"small",type:"primary",onClick:G(P=>e.onConsume(c),["stop"])},{default:t(()=>[...a[22]||(a[22]=[r("执行购买",-1)])]),_:1},8,["onClick"])):y("v-if",!0),c.state==="reached"&&c.domain==="crosschain.bridge.outbound"?(p(),k(_,{key:3,size:"small",type:"primary",onClick:G(P=>e.onBridgeConsume(c),["stop"])},{default:t(()=>[...a[23]||(a[23]=[r("执行跨链桥",-1)])]),_:1},8,["onClick"])):y("v-if",!0)]),_:2},1024)):y("v-if",!0)]),_:1},8,["data-source","loading"])]),_:1}),y(" Policies tab "),o(J,{key:"policies",tab:"域策略"},{default:t(()=>[e.policies.length===0?(p(),k(R,{key:0,description:"暂无域策略 — 用 CLI 配置: cc multisig policy set <domain> --m <M> --members <json>"})):(p(),k(H,{key:1,"data-source":e.policies,"item-layout":"vertical"},{renderItem:t(({item:n})=>[o(N,null,{default:t(()=>[o(v,null,{default:t(()=>[f("h4",De,[o(I,{color:"purple"},{default:t(()=>[r(s(n.domain),1)]),_:2},1024),f("span",Oe,[r(s(n.policy.m)+"-of-"+s(n.policy.members.length)+" ",1),n.policy.requirePqc?(p(),k(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[...a[24]||(a[24]=[r("requirePQC",-1)])]),_:1})):y("v-if",!0)])]),o(O,{size:"small",column:2},{default:t(()=>[o(m,{label:"阈值 M"},{default:t(()=>[r(s(n.policy.m),1)]),_:2},1024),o(m,{label:"成员数 N"},{default:t(()=>[r(s(n.policy.members.length),1)]),_:2},1024),o(m,{label:"算法"},{default:t(()=>[(p(!0),E(Y,null,ne(n.policy.algorithms||[],c=>(p(),k(I,{key:c,size:"small"},{default:t(()=>[r(s(c),1)]),_:2},1024))),128))]),_:2},1024),o(m,{label:"默认有效期"},{default:t(()=>[r(s(Math.round((n.policy.defaultExpiryMs||864e5)/1e3/60/60))+"h ",1)]),_:2},1024)]),_:2},1024),f("details",Ie,[f("summary",Pe,"展开成员列表 ("+s(n.policy.members.length)+")",1),o(T,{columns:e.memberColumns,"data-source":n.policy.members,pagination:!1,size:"small","row-key":"did",style:{"margin-top":"8px"}},null,8,["data-source"])])]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1})]),_:1},8,["activeKey"]),y(" Detail drawer "),o(K,{open:e.detailOpen,"onUpdate:open":a[8]||(a[8]=n=>e.detailOpen=n),title:e.detail?`提案 ${e.detail.proposal.id}`:"提案详情",width:"640","destroy-on-close":""},{default:t(()=>[e.detail?(p(),E("div",Ae,[o(O,{column:1,bordered:"",size:"small"},{default:t(()=>[o(m,{label:"Domain"},{default:t(()=>[r(s(e.detail.proposal.domain),1)]),_:1}),o(m,{label:"状态"},{default:t(()=>[o(I,{color:e.stateColor(e.detail.proposal.state)},{default:t(()=>[r(s(e.detail.proposal.state),1)]),_:1},8,["color"])]),_:1}),o(m,{label:"阈值"},{default:t(()=>[r(s(e.detail.proposal.thresholdM)+"-of-"+s(e.detail.proposal.memberSet.length),1)]),_:1}),o(m,{label:"已签 / 需签"},{default:t(()=>[r(s(e.detail.signatures.length)+" / "+s(e.detail.proposal.thresholdM),1)]),_:1}),o(m,{label:"发起方"},{default:t(()=>[r(s(e.detail.proposal.initiatorDid),1)]),_:1}),o(m,{label:"创建时间"},{default:t(()=>[r(s(new Date(e.detail.proposal.createdAtMs).toLocaleString()),1)]),_:1}),o(m,{label:"过期时间"},{default:t(()=>[r(s(new Date(e.detail.proposal.expiresAtMs).toLocaleString()),1)]),_:1}),o(m,{label:"Payload"},{default:t(()=>[f("pre",Fe,s(e.detail.proposal.payload?JSON.stringify(e.detail.proposal.payload,null,2):e.detail.proposal.payloadJcs),1)]),_:1})]),_:1}),f("h4",Le,"签名列表 ("+s(e.detail.signatures.length)+")",1),o(H,{"data-source":e.detail.signatures,size:"small"},{renderItem:t(({item:n})=>[o(N,null,{default:t(()=>[o(Z,null,{title:t(()=>[o(e.CheckCircleOutlined,{style:{color:"#52c41a","margin-right":"6px"}}),f("code",je,s(n.signerDid),1)]),description:t(()=>[r(s(n.alg)+" — "+s(new Date(n.signedAtMs).toLocaleString()),1)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"]),o(q),o(d,{message:"签名 / 执行操作需通过 CLI 提供私钥",description:"Web shell 不直接持有私钥(接 Unified KeyStore 仍未收口)。本面板用于查看提案状态,签名请用 cc multisig sign;执行已 reached 的提案可在此面板按 domain 直达(marketplace.purchase / crosschain.bridge.outbound),其它 domain 走 cc multisig finalize。",type:"info","show-icon":"",style:{"margin-bottom":"12px"}}),o(b,null,{default:t(()=>[e.detail.proposal.state==="pending"||e.detail.proposal.state==="reached"?(p(),k(_,{key:0,danger:"",onClick:a[3]||(a[3]=n=>e.onCancel(e.detail.proposal))},{default:t(()=>[...a[25]||(a[25]=[r("取消提案",-1)])]),_:1})):y("v-if",!0),e.detail.proposal.state==="pending"?(p(),k(_,{key:1,type:"primary",onClick:a[4]||(a[4]=n=>e.onSignFromDetail())},{default:t(()=>[...a[26]||(a[26]=[r("签名 (multisig.sign)",-1)])]),_:1})):y("v-if",!0),e.detail.proposal.state==="reached"&&e.detail.proposal.domain==="marketplace.purchase"?(p(),k(_,{key:2,type:"primary",onClick:a[5]||(a[5]=n=>e.onConsume(e.detail.proposal))},{default:t(()=>[...a[27]||(a[27]=[r("执行购买 (cc marketplace consume)",-1)])]),_:1})):y("v-if",!0),e.detail.proposal.state==="reached"&&e.detail.proposal.domain==="crosschain.bridge.outbound"?(p(),k(_,{key:3,type:"primary",onClick:a[6]||(a[6]=n=>e.onBridgeConsume(e.detail.proposal))},{default:t(()=>[...a[28]||(a[28]=[r("执行跨链桥 (cc crosschain bridge-consume)",-1)])]),_:1})):y("v-if",!0),e.detail.proposal.state==="reached"&&e.detail.proposal.domain!=="marketplace.purchase"&&e.detail.proposal.domain!=="crosschain.bridge.outbound"?(p(),k(_,{key:4,type:"primary",onClick:a[7]||(a[7]=n=>e.onFinalize(e.detail.proposal))},{default:t(()=>[...a[29]||(a[29]=[r("finalize (cc multisig finalize)",-1)])]),_:1})):y("v-if",!0)]),_:1})])):y("v-if",!0)]),_:1},8,["open","title"]),y(" #21 B.1 PR2b — Sign Proposal Modal "),o(e.SignProposalModal,{open:e.signOpen,"onUpdate:open":a[9]||(a[9]=n=>e.signOpen=n),proposal:e.signProposalDetail,onSigned:e.onSigned},null,8,["open","proposal"])])}const rt=ie(Ce,[["render",Be],["__scopeId","data-v-429bfa1a"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/Multisig.vue"]]);export{rt as default};
@@ -1 +0,0 @@
1
- .hash-short[data-v-060feb8a],.hash-full[data-v-060feb8a]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg-card, rgba(0, 0, 0, .04));padding:2px 6px;border-radius:4px}.page-title[data-v-429bfa1a]{font-size:22px;font-weight:600;margin:0;color:var(--text-primary)}.page-sub[data-v-429bfa1a]{font-size:13px;color:var(--text-secondary);margin:4px 0 0}.filter-bar[data-v-429bfa1a]{display:flex;align-items:center;margin-bottom:16px}.multisig-row[data-v-429bfa1a]{cursor:pointer}.multisig-row[data-v-429bfa1a]:hover{background:var(--bg-hover, rgba(22, 119, 255, .05))}
@@ -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 O,$ as It}from"./vendor-Bn1JzzAn.js";import{t as q,_ as Dt,u as pt,b as ft,d as v}from"./index-k7QsBwyo.js";import{b0 as Ut,f as Pt,aj as Mt,a5 as Jt,p as Bt,X as Vt,at as qt,R as Gt}from"./icons-DG5UD-6K.js";const Ct=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),Kt=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 Yt(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(Yt).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 Wt(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(Wt).filter(Boolean):[]}const Ht={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(Ht));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 Qt(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),Z=_(!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=_(""),w=_(""),H=_(""),C=_(!1),R=_(!1),M=_(!1),Q=_(!1),X=ot({text:""}),N=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)),w.value&&(r=r.filter(s=>s.status===w.value)),r}),rt=Y(()=>H.value?P.value.filter(r=>r.category===H.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:""},R.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 Rt(){const r=X.text.trim();if(!r){v.warning(t("nlprog.msg.textEmpty"));return}Z.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{Z.value=!1}}async function Ot(){const r=N.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,'\\"')}"`];N.intent&&s.push(`--intent ${N.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)})),R.value=!1,it(),await V()}catch(s){v.error(t("nlprog.msg.translateFailed")+": "+(s?.message||s))}finally{F.value=!1}}async function wt(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 Nt(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,Q.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(){N.text="",N.intent=null}function ct(){x.category="naming",x.pattern="",x.examples="",x.confidence=.8}ut(V);const dt={ws:c,t,loading:z,analyzing:Z,translating:F,adding:E,translations:G,conventions:P,stats:K,activeTab:I,intentFilter:A,statusFilter:w,categoryFilter:H,showAnalyzeModal:C,showTranslateModal:R,showConventionModal:M,showDetailsModal:Q,analyzeForm:X,translateForm:N,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:Rt,runTranslate:Ot,transitionStatus:wt,removeTranslation:Nt,showTranslationDetails:Lt,addConvention:jt,removeConvention:Et,resetTranslateForm:it,resetConventionForm:ct,ref:_,computed:Y,onMounted:ut,reactive:ot,get ReloadOutlined(){return Gt},get PlusOutlined(){return qt},get CodeOutlined(){return Vt},get BulbOutlined(){return Bt},get FileTextOutlined(){return Jt},get EditOutlined(){return Mt},get CheckCircleOutlined(){return Pt},get RiseOutlined(){return Ut},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 Qt},get INTENTS(){return Ct},get TRANSLATION_STATUSES(){return Kt},get STYLE_CATEGORIES(){return Tt}};return Object.defineProperty(dt,"__isScriptSetup",{enumerable:!1,value:!0}),dt}},Zt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},$t={class:"page-title"},te={class:"page-sub"},ee={class:"filter-bar"},ne={key:0,style:{color:"var(--text-primary)"}},oe={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ae={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},le={class:"filter-bar"},re={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},se={key:0,style:{color:"var(--text-muted)"}},ie={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ce={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},de={key:0,style:{"margin-bottom":"12px"}},ue={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},pe={style:{color:"var(--text-secondary)","font-size":"12px"}},fe={key:1,style:{"margin-bottom":"12px"}},me={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},ge={key:0,style:{color:"var(--text-muted)"}},ye={key:2},ve={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},be={key:0,style:{color:"var(--text-muted)"}},_e={key:0,style:{"padding-top":"8px"}},ke={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},xe={style:{"margin-top":"16px"}},Ce={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Te={class:"json-block"},he={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Se={class:"json-block"},ze={key:0},Ae={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Fe={class:"json-block"};function Re(e,n,c,t,z,Z){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"),w=m("a-col"),H=m("a-row"),C=m("a-tag"),R=m("a-radio-button"),M=m("a-radio-group"),Q=m("a-progress"),X=m("a-popconfirm"),N=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",Zt,[b("div",null,[b("h2",$t,i(e.$t("nlprog.title")),1),b("p",te,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(H,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(w,{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(w,{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(w,{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(w,{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(w,{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,O(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",ee,[a(M,{value:t.intentFilter,"onUpdate:value":n[0]||(n[0]=l=>t.intentFilter=l),size:"small"},{default:o(()=>[a(R,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allIntents")),1)]),_:1}),(d(!0),y(S,null,O(t.INTENTS,l=>(d(),k(R,{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(R,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allStatuses")),1)]),_:1}),(d(!0),y(S,null,O(t.TRANSLATION_STATUSES,l=>(d(),k(R,{key:l,value:l},{default:o(()=>[u(i(t.statusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(N,{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",ne,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(Q,{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",oe,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,O(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(X,{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",ae,[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",le,[a(M,{value:t.categoryFilter,"onUpdate:value":n[2]||(n[2]=l=>t.categoryFilter=l),size:"small","button-style":"solid"},{default:o(()=>[a(R,{value:""},{default:o(()=>[u(i(e.$t("nlprog.filter.allCategories")),1)]),_:1}),(d(!0),y(S,null,O(t.STYLE_CATEGORIES,l=>(d(),k(R,{key:l,value:l},{default:o(()=>[u(i(t.categoryLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(N,{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",re,i(f.pattern),1)):p("v-if",!0),l.key==="examples"?(d(),y(S,{key:2},[(d(!0),y(S,null,O(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",se,"—")):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",ie,i(t.formatNlprogTime(f.createdAt)),1)):p("v-if",!0),l.key==="action"?(d(),k(X,{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",ce,[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",de,[b("div",ue,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",pe,i(e.$t("nlprog.analyze_modal.confidenceLine",{pct:(t.classifyResult.confidence*100).toFixed(0)})),1)])):p("v-if",!0),t.extractResult?(d(),y("div",fe,[b("div",me,i(e.$t("nlprog.analyze_modal.entities",{n:t.extractResult.count})),1),t.extractResult.entities.length?p("v-if",!0):(d(),y("span",ge,i(e.$t("nlprog.analyze_modal.notDetected")),1)),(d(!0),y(S,null,O(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",ye,[b("div",ve,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,O(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",be,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,O(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,O(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",_e,[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(Q,{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",ke,i(t.currentTranslation.inputText),1)]),_:1},8,["label"])]),_:1}),b("div",xe,[b("h4",Ce,i(e.$t("nlprog.details.entities")),1),b("pre",Te,i(t.formatJson(t.currentTranslation.entities)),1)]),b("div",null,[b("h4",he,i(e.$t("nlprog.details.techStack")),1),b("pre",Se,i(t.formatJson(t.currentTranslation.techStack)),1)]),t.currentTranslation.spec?(d(),y("div",ze,[b("h4",Ae,i(e.$t("nlprog.details.spec")),1),b("pre",Fe,i(t.formatJson(t.currentTranslation.spec)),1)])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"])])}const Le=Dt(Xt,[["render",Re],["__scopeId","data-v-4c4216b9"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/NLProgramming.vue"]]);export{Le as default};
@@ -1 +0,0 @@
1
- .page-title[data-v-4c4216b9]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-4c4216b9]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.nlprog-tabs[data-v-4c4216b9] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-4c4216b9]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.json-block[data-v-4c4216b9]{white-space:pre-wrap;word-break:break-all;color:#52c41a;font-size:11px;background:var(--bg-base);padding:8px 12px;border-radius:4px;border:1px solid var(--border-color);max-height:240px;overflow:auto;margin:0 0 16px;font-family:monospace}
@@ -1 +0,0 @@
1
- .ss-error[data-v-1d6234fd]{margin-bottom:12px}.ss-actions[data-v-1d6234fd]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.ss-preview[data-v-1d6234fd]{max-height:240px;overflow:auto;border:1px solid var(--border-color, #f0f0f0);border-radius:4px;margin-bottom:12px;background:var(--bg-base, #fafafa)}.ss-preview img[data-v-1d6234fd]{display:block;max-width:100%;height:auto}[data-v-7992c921] .note-row:hover td{background:var(--bg-card-hover)!important;cursor:pointer}
@@ -1,7 +0,0 @@
1
- import{I as f,P as w,S as T,K as a,J as V,c as n,V as x,w as F,b as P,a as K,r as u,U as L,Q as k,R as D,F as te,M as le,o as re,Z as se}from"./vendor-Bn1JzzAn.js";import{u as H,_ as ae,d as C}from"./index-k7QsBwyo.js";import{u as ie}from"./useFs-Bugo8HuF.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{ax as me,ay as ue,az as pe,aA as ge,a5 as ve,R as we,at as _e}from"./icons-DG5UD-6K.js";function ye(m){if(m&&m.ok===!1)throw new Error(m.error||"knowledge handler failed");return m?.result??m}function ne(m){return String(m).replace(/(["\\])/g,"\\$1")}function Z(){const m=H();async function t({title:b,content:e,tags:h=[],type:g="note"}={}){if(typeof b!="string"||!b.trim())throw new Error("title is required");if(typeof e!="string")throw new Error("content is required");const r=Array.isArray(h)?h.filter(Boolean):[];if(de().isEmbedded){const i=await m.sendRaw({type:"knowledge.add-item",item:{title:b.trim(),content:e,tags:r,type:g}},2e4),_=ye(i);if(_?.success===!1)throw new Error(_.error||"knowledge.add-item failed");return _?.item??null}let s=`note add "${ne(b.trim())}" -c "${ne(e)}"`;r.length&&(s+=` -t "${ne(r.join(","))}"`);const{output:d}=await m.execute(s,15e3);if(d&&/^[\s\S]*✖|error/i.test(d))throw new Error(d.slice(0,200));return{title:b.trim(),content:e,tags:r,type:g}}return{addItem:t}}const he={__name:"ClipboardImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(m,{expose:t,emit:b}){t();const e=m,h=b,g=Z(),r=P({get:()=>e.modelValue,set:p=>h("update:modelValue",p)}),s=u(!1),d=u(""),i=K({title:"",content:"",tagsRaw:""}),_=()=>`剪贴板导入 - ${new Date().toLocaleString()}`;function S(){i.title=_(),i.content="",i.tagsRaw="",d.value=""}async function v(){if(d.value="",!navigator.clipboard?.readText){d.value="当前环境不支持剪贴板读取 API";return}try{const p=await navigator.clipboard.readText();i.content=p||"",p||(d.value="剪贴板为空")}catch(p){d.value="读取剪贴板失败:"+(p?.message||String(p))}}F(()=>e.modelValue,async p=>{p&&(S(),await v())},{immediate:!0});async function O(){if(!i.content.trim()){C.warning("内容为空,无法保存");return}s.value=!0;try{const p=i.tagsRaw.split(/[,,]/).map(c=>c.trim()).filter(Boolean),o=await g.addItem({title:i.title.trim()||_(),content:i.content,tags:p,type:"note"});C.success("已保存到知识库"),h("saved",o),r.value=!1}catch(p){C.error("保存失败:"+(p?.message||String(p)))}finally{s.value=!1}}function U(){r.value=!1}const E={props:e,emit:h,knowledge:g,open:r,loading:s,readError:d,formState:i,defaultTitle:_,resetForm:S,readClipboard:v,handleSave:O,handleCancel:U,ref:u,reactive:K,computed:P,watch:F,get message(){return C},get useKnowledge(){return Z}};return Object.defineProperty(E,"__isScriptSetup",{enumerable:!1,value:!0}),E}},be={key:0,style:{"margin-bottom":"16px"}};function Se(m,t,b,e,h,g){const r=f("a-alert"),s=f("a-input"),d=f("a-form-item"),i=f("a-textarea"),_=f("a-form"),S=f("a-modal");return w(),T(S,{open:e.open,"onUpdate:open":t[3]||(t[3]=v=>e.open=v),title:"剪贴板导入",width:640,"ok-text":e.loading?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:e.loading,disabled:!e.formState.content.trim()},onOk:e.handleSave,onCancel:e.handleCancel},{default:a(()=>[e.readError?(w(),V("div",be,[n(r,{type:"warning","show-icon":"",message:e.readError,description:"请确认浏览器/系统已授予剪贴板读取权限,或手动粘贴到下方输入框。"},null,8,["message"])])):x("v-if",!0),n(_,{layout:"vertical",model:e.formState},{default:a(()=>[n(d,{label:"标题"},{default:a(()=>[n(s,{value:e.formState.title,"onUpdate:value":t[0]||(t[0]=v=>e.formState.title=v),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),n(d,{label:"内容"},{default:a(()=>[n(i,{value:e.formState.content,"onUpdate:value":t[1]||(t[1]=v=>e.formState.content=v),placeholder:"粘贴或编辑要保存的内容…","auto-size":{minRows:10,maxRows:20},"show-count":""},null,8,["value"])]),_:1}),n(d,{label:"标签(逗号分隔,可选)"},{default:a(()=>[n(s,{value:e.formState.tagsRaw,"onUpdate:value":t[2]||(t[2]=v=>e.formState.tagsRaw=v),placeholder:"例如:素材, 链接","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","ok-text","ok-button-props"])}const xe=ae(he,[["render",Se],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/ClipboardImportDialog.vue"]]);function oe(m){if(m&&m.ok===!1)throw new Error(m.error||"screenshot handler failed");return m?.result??m}function ce(){const m=H();if(!de().isEmbedded)return{unsupported:!0,capture:async()=>{throw new Error("截图需要桌面壳;浏览器模式不支持")},ocr:async()=>{throw new Error("OCR 仅在桌面壳可用")},cleanup:async()=>{}};async function b({screenIndex:g}={}){const r=await m.sendRaw({type:"screenshot.capture",screenIndex:g},3e4),s=oe(r);if(s?.success===!1)throw new Error(s.error||"screenshot.capture failed");return s}async function e(g,r,s){if(!g)throw new Error("path is required");const d=await m.sendRaw({type:"screenshot.ocr",path:g,lang:r,engine:s},9e4),i=oe(d);if(i?.success===!1)throw new Error(i.error||"screenshot.ocr failed");return i}async function h(g){if(g)try{const r=await m.sendRaw({type:"screenshot.cleanup",path:g},1e4),s=oe(r);s?.success===!1&&console.warn("[useScreenshot] cleanup failed:",s.error)}catch(r){console.warn("[useScreenshot] cleanup error:",r?.message||r)}}return{unsupported:!1,capture:b,ocr:e,cleanup:h}}const ke={__name:"ScreenshotImportDialog",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","saved"],setup(m,{expose:t,emit:b}){t();const e=m,h=b,g=ce(),r=Z(),s=P({get:()=>e.modelValue,set:y=>h("update:modelValue",y)}),d=u(!1),i=u(!1),_=u(!1),S=u(""),v=u(null),O=u("auto"),U=u(null),E=u(""),p=u(""),o=u(null),c=K({title:"",content:"",tagsRaw:""}),N=P(()=>!!o.value&&(c.content.trim()||"").length>0),j=()=>`截图识别 - ${new Date().toLocaleString()}`;function B(){c.title=j(),c.content="",c.tagsRaw="",S.value="",v.value=null,U.value=null,E.value="",p.value="",o.value=null}async function M(){o.value?.path&&await g.cleanup(o.value.path)}async function q(){if(g.unsupported)return S.value="浏览器模式不支持截图,请用桌面壳",null;i.value=!0;try{return await g.capture({})}catch(y){return S.value=y?.message||String(y),null}finally{i.value=!1}}async function z(y){if(y){_.value=!0;try{const l=await g.ocr(y,void 0,O.value);c.content=l.text||"",v.value=typeof l.confidence=="number"?l.confidence:null,U.value=l.engine||null,E.value=l.model||"",p.value=l.fallbackReason||"",l.text||C.info("OCR 未识别到文本,可手动输入")}catch(l){C.warning("OCR 失败: "+(l?.message||String(l)))}finally{_.value=!1}}}async function Q(){p.value=""}async function G(){await M(),B();const y=await q();y&&(o.value=y,await z(y.path))}async function W(){o.value?.path&&await z(o.value.path)}F(()=>e.modelValue,async y=>{if(y){B();const l=await q();l&&(o.value=l,await z(l.path))}else await M(),o.value=null},{immediate:!0});async function X(){if(!N.value){C.warning("识别文本为空,无法保存");return}d.value=!0;try{const y=c.tagsRaw.split(/[,,]/).map(I=>I.trim()).filter(Boolean),l=await r.addItem({title:c.title.trim()||j(),content:c.content,tags:y,type:"note"});C.success("已保存到知识库"),h("saved",l),await M(),s.value=!1}catch(y){C.error("保存失败: "+(y?.message||String(y)))}finally{d.value=!1}}async function Y(){await M(),s.value=!1}const J={props:e,emit:h,screenshot:g,knowledge:r,open:s,loading:d,capturing:i,ocrLoading:_,captureError:S,ocrConfidence:v,ocrEngine:O,engineUsed:U,ocrModel:E,ocrFallbackReason:p,shot:o,formState:c,canSave:N,defaultTitle:j,resetState:B,cleanupShot:M,runCapture:q,runOcr:z,handleEngineChange:Q,handleRecapture:G,handleRerunOcr:W,handleSave:X,handleCancel:Y,ref:u,reactive:K,computed:P,watch:F,get message(){return C},get CameraOutlined(){return ue},get ScanOutlined(){return me},get useScreenshot(){return ce},get useKnowledge(){return Z}};return Object.defineProperty(J,"__isScriptSetup",{enumerable:!1,value:!0}),J}},Ce={key:0,style:{"margin-bottom":"16px"}},Oe={key:1,class:"ss-error"},Re={key:2},Ne={class:"ss-actions"},Ee={key:0,class:"ss-preview"},Ie=["src"];function Ve(m,t,b,e,h,g){const r=f("a-alert"),s=f("a-button"),d=f("a-select-option"),i=f("a-select"),_=f("a-tag"),S=f("a-tooltip"),v=f("a-input"),O=f("a-form-item"),U=f("a-spin"),E=f("a-textarea"),p=f("a-form"),o=f("a-modal");return w(),T(o,{open:e.open,"onUpdate:open":t[4]||(t[4]=c=>e.open=c),title:"截图识别",width:780,"ok-text":e.loading?"保存中…":"保存到知识库","cancel-text":"取消","ok-button-props":{loading:e.loading,disabled:!e.canSave},onOk:e.handleSave,onCancel:e.handleCancel},{default:a(()=>[e.screenshot.unsupported?(w(),V("div",Ce,[n(r,{type:"warning","show-icon":"",message:"浏览器模式不支持截图",description:"screenshot-desktop 需要 OS 原生 API,请用桌面壳 (cc desktop) 打开本面板。"})])):e.captureError?(w(),V("div",Oe,[n(r,{type:"error","show-icon":"",message:e.captureError},null,8,["message"])])):(w(),V("div",Re,[L("div",Ne,[n(s,{size:"small",loading:e.capturing,onClick:e.handleRecapture},{icon:a(()=>[n(e.CameraOutlined)]),default:a(()=>[t[5]||(t[5]=k(" 重新截图 ",-1))]),_:1},8,["loading"]),n(s,{size:"small",loading:e.ocrLoading,disabled:!e.shot||e.ocrLoading,onClick:e.handleRerunOcr},{icon:a(()=>[n(e.ScanOutlined)]),default:a(()=>[t[6]||(t[6]=k(" 重跑 OCR ",-1))]),_:1},8,["loading","disabled"]),n(i,{value:e.ocrEngine,"onUpdate:value":t[0]||(t[0]=c=>e.ocrEngine=c),size:"small",style:{width:"140px"},disabled:e.ocrLoading,onChange:e.handleEngineChange},{default:a(()=>[n(d,{value:"auto"},{default:a(()=>[...t[7]||(t[7]=[k("自动 (推荐)",-1)])]),_:1}),n(d,{value:"llm"},{default:a(()=>[...t[8]||(t[8]=[k("视觉 LLM",-1)])]),_:1}),n(d,{value:"tesseract"},{default:a(()=>[...t[9]||(t[9]=[k("本地 Tesseract",-1)])]),_:1})]),_:1},8,["value","disabled"]),e.engineUsed==="llm"?(w(),T(_,{key:0,color:"blue"},{default:a(()=>[k(D(e.ocrModel||"豆包视觉"),1)]),_:1})):e.engineUsed==="tesseract"&&e.ocrConfidence!==null?(w(),T(_,{key:1},{default:a(()=>[k(" Tesseract · "+D(e.ocrConfidence)+"% ",1)]),_:1})):x("v-if",!0),e.ocrFallbackReason?(w(),T(S,{key:2,title:`LLM 识别失败已回落 Tesseract: ${e.ocrFallbackReason}`},{default:a(()=>[n(_,{color:"orange"},{default:a(()=>[...t[10]||(t[10]=[k("回落 Tesseract",-1)])]),_:1})]),_:1},8,["title"])):x("v-if",!0)]),e.shot?.dataUrl?(w(),V("div",Ee,[L("img",{src:e.shot.dataUrl,alt:"screenshot"},null,8,Ie)])):x("v-if",!0),n(p,{layout:"vertical",model:e.formState},{default:a(()=>[n(O,{label:"标题"},{default:a(()=>[n(v,{value:e.formState.title,"onUpdate:value":t[1]||(t[1]=c=>e.formState.title=c),placeholder:"导入条目的标题","allow-clear":""},null,8,["value"])]),_:1}),n(O,null,{label:a(()=>[t[11]||(t[11]=L("span",null,"识别文本",-1)),e.ocrLoading?(w(),T(U,{key:0,size:"small",style:{"margin-left":"8px"}})):x("v-if",!0)]),default:a(()=>[n(E,{value:e.formState.content,"onUpdate:value":t[2]||(t[2]=c=>e.formState.content=c),placeholder:e.ocrLoading?"正在识别…":"识别结果,可手动编辑","auto-size":{minRows:8,maxRows:16},"show-count":""},null,8,["value","placeholder"])]),_:1}),n(O,{label:"标签 (逗号分隔, 可选)"},{default:a(()=>[n(v,{value:e.formState.tagsRaw,"onUpdate:value":t[3]||(t[3]=c=>e.formState.tagsRaw=c),placeholder:"例如: 截图, 参考","allow-clear":""},null,8,["value"])]),_:1})]),_:1},8,["model"])]))]),_:1},8,["open","ok-text","ok-button-props"])}const Ue=ae(ke,[["render",Ve],["__scopeId","data-v-1d6234fd"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/components/ScreenshotImportDialog.vue"]]),Le={__name:"Notes",setup(m,{expose:t}){t();const b=H(),e=ie(),h=le(),g=u(!1),r=u(!1),s=u(!1),d=u(!1),i=u(""),_=u([]),S=u([]),v=u(!1),O=u(""),U=u(!1),E=u(!1),p=u(!1),o=u(!1),c=u(null),N=u({title:"",content:"",tags:""});async function j(){C.success("剪贴板内容已保存到知识库"),await z()}async function B(){C.success("截图内容已保存到知识库"),await z()}const M=P(()=>v.value?S.value:_.value),q=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function z(){r.value=!0,i.value="";try{const{output:l}=await b.execute("note list",2e4);_.value=Q(l)}catch(l){i.value=`加载失败: ${l.message}`}finally{r.value=!1}}function Q(l){const I=[],$=l.split(`
2
- `);for(const ee of $){const R=ee.trim();if(!R||R.startsWith("─")||R.startsWith("Note")||R.match(/^\d+ note/i))continue;const A=R.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);A?I.push({key:A[1],id:A[1],title:A[2].trim(),tags:A[3]?A[3].split(",").map(fe=>fe.trim()):[],preview:(A[4]||"").trim().slice(0,100),content:""}):R.length>2&&!R.startsWith("✖")&&!R.startsWith("[")&&I.push({key:I.length,id:String(I.length),title:R,tags:[],preview:"",content:""})}return I}async function G(){if(!O.value.trim()){W();return}s.value=!0,v.value=!0;try{const{output:l}=await b.execute(`note search "${O.value}"`,15e3);S.value=Q(l)}catch{S.value=[]}finally{s.value=!1}}function W(){O.value="",v.value=!1,S.value=[]}async function X(){if(!N.value.title.trim()){C.warning("请输入标题");return}d.value=!0;try{let l=`note add "${N.value.title}"`;N.value.content&&(l+=` -c "${N.value.content.replace(/"/g,'\\"')}"`),N.value.tags&&(l+=` -t "${N.value.tags}"`);const{output:I}=await b.execute(l,15e3);I.includes("✖")||I.toLowerCase().includes("error")?C.error("添加失败: "+I.slice(0,100)):(C.success("笔记已添加"),U.value=!1,N.value={title:"",content:"",tags:""},await z())}catch(l){C.error("添加失败: "+l.message)}finally{d.value=!1}}function Y(l){c.value=l,E.value=!0}async function J(){if(!c.value)return;const l=c.value,I=l.tags?.length?`tags: [${l.tags.join(", ")}]
3
-
4
- `:"",$=`# ${l.title}
5
-
6
- ${I}${l.content||l.preview||""}
7
- `,ee=(l.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";g.value=!0;try{const R=await e.saveText($,{defaultPath:`${ee}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(R.canceled)return;C.success(R.path?`已导出到 ${R.path}`:"已导出")}catch(R){C.error(`导出失败: ${R.message||R}`)}finally{g.value=!1}}re(()=>{z(),h.query.clipboardImport&&(p.value=!0),h.query.screenshotOcr&&(o.value=!0)}),F(()=>h.query.clipboardImport,l=>{l&&(p.value=!0)}),F(()=>h.query.screenshotOcr,l=>{l&&(o.value=!0)});const y={ws:b,fs:e,route:h,exporting:g,loading:r,searching:s,adding:d,error:i,notes:_,searchResults:S,isSearchMode:v,searchQuery:O,showAdd:U,showView:E,showClipboardImport:p,showScreenshotImport:o,viewingNote:c,newNote:N,onClipboardSaved:j,onScreenshotSaved:B,displayNotes:M,columns:q,loadNotes:z,parseNoteList:Q,doSearch:G,clearSearch:W,addNote:X,viewNote:Y,exportNote:J,ref:u,computed:P,onMounted:re,watch:F,get useRoute(){return le},get PlusOutlined(){return _e},get ReloadOutlined(){return we},get FileTextOutlined(){return ve},get DownloadOutlined(){return ge},get SnippetsOutlined(){return pe},get CameraOutlined(){return ue},get message(){return C},get useWsStore(){return H},get useFs(){return ie},ClipboardImportDialog:xe,ScreenshotImportDialog:Ue};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}},Te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ze={class:"page-sub"},De={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},Me={key:0,style:{"text-align":"center",padding:"60px"}},Ae={key:0,style:{color:"#e0e0e0","font-weight":"500"}},Fe={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},Be={style:{"margin-bottom":"10px"}},qe={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}};function Qe(m,t,b,e,h,g){const r=f("a-button"),s=f("a-space"),d=f("a-input-search"),i=f("a-tag"),_=f("a-spin"),S=f("a-table"),v=f("a-input"),O=f("a-form-item"),U=f("a-textarea"),E=f("a-form"),p=f("a-modal");return w(),V("div",null,[L("div",Te,[L("div",null,[t[12]||(t[12]=L("h2",{class:"page-title"},"笔记管理",-1)),L("p",ze,"个人知识库 · "+D(e.notes.length)+" 条笔记",1)]),n(s,null,{default:a(()=>[n(r,{onClick:t[0]||(t[0]=o=>e.showAdd=!0),type:"primary"},{icon:a(()=>[n(e.PlusOutlined)]),default:a(()=>[t[13]||(t[13]=k(" 新建笔记 ",-1))]),_:1}),n(r,{onClick:t[1]||(t[1]=o=>e.showClipboardImport=!0)},{icon:a(()=>[n(e.SnippetsOutlined)]),default:a(()=>[t[14]||(t[14]=k(" 剪贴板导入 ",-1))]),_:1}),n(r,{onClick:t[2]||(t[2]=o=>e.showScreenshotImport=!0)},{icon:a(()=>[n(e.CameraOutlined)]),default:a(()=>[t[15]||(t[15]=k(" 截图识别 ",-1))]),_:1}),n(r,{ghost:"",loading:e.loading,onClick:e.loadNotes},{icon:a(()=>[n(e.ReloadOutlined)]),default:a(()=>[t[16]||(t[16]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),x(" Search "),L("div",De,[n(d,{value:e.searchQuery,"onUpdate:value":t[3]||(t[3]=o=>e.searchQuery=o),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:e.searching,onSearch:e.doSearch,onClear:e.clearSearch},null,8,["value","loading"]),e.isSearchMode?(w(),T(i,{key:0,color:"blue",closable:"",onClose:e.clearSearch},{default:a(()=>[k(" 搜索: "+D(e.searchQuery),1)]),_:1})):x("v-if",!0)]),x(" Loading "),e.loading?(w(),V("div",Me,[n(_,{size:"large"})])):(w(),V(te,{key:1},[x(" Notes Table "),n(S,{columns:e.columns,"data-source":e.displayNotes,pagination:{pageSize:20,showTotal:o=>`共 ${o} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:a(({column:o,record:c})=>[o.key==="title"?(w(),V("span",Ae,D(c.title),1)):x("v-if",!0),o.key==="tags"?(w(!0),V(te,{key:1},se(c.tags,N=>(w(),T(i,{key:N,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:a(()=>[k(D(N),1)]),_:2},1024))),128)):x("v-if",!0),o.key==="content"?(w(),V("span",Fe,D(c.preview),1)):x("v-if",!0),o.key==="actions"?(w(),T(r,{key:3,size:"small",type:"link",onClick:N=>e.viewNote(c)},{default:a(()=>[...t[17]||(t[17]=[k("查看",-1)])]),_:1},8,["onClick"])):x("v-if",!0)]),emptyText:a(()=>[L("div",Pe,[n(e.FileTextOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),k(" "+D(e.error||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])],2112)),x(" Add Note Modal "),n(p,{open:e.showAdd,"onUpdate:open":t[7]||(t[7]=o=>e.showAdd=o),title:"新建笔记","confirm-loading":e.adding,onOk:e.addNote},{default:a(()=>[n(E,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[n(O,{label:"标题",required:""},{default:a(()=>[n(v,{value:e.newNote.title,"onUpdate:value":t[4]||(t[4]=o=>e.newNote.title=o),placeholder:"笔记标题"},null,8,["value"])]),_:1}),n(O,{label:"内容"},{default:a(()=>[n(U,{value:e.newNote.content,"onUpdate:value":t[5]||(t[5]=o=>e.newNote.content=o),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),n(O,{label:"标签"},{default:a(()=>[n(v,{value:e.newNote.tags,"onUpdate:value":t[6]||(t[6]=o=>e.newNote.tags=o),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),x(" Clipboard import modal "),n(e.ClipboardImportDialog,{modelValue:e.showClipboardImport,"onUpdate:modelValue":t[8]||(t[8]=o=>e.showClipboardImport=o),onSaved:e.onClipboardSaved},null,8,["modelValue"]),x(" Screenshot OCR modal "),n(e.ScreenshotImportDialog,{modelValue:e.showScreenshotImport,"onUpdate:modelValue":t[9]||(t[9]=o=>e.showScreenshotImport=o),onSaved:e.onScreenshotSaved},null,8,["modelValue"]),x(" View Note Modal "),n(p,{open:e.showView,"onUpdate:open":t[11]||(t[11]=o=>e.showView=o),title:e.viewingNote?.title,width:"700px"},{footer:a(()=>[n(r,{onClick:t[10]||(t[10]=o=>e.showView=!1)},{default:a(()=>[...t[18]||(t[18]=[k("关闭",-1)])]),_:1}),e.viewingNote?(w(),T(r,{key:0,type:"primary",loading:e.exporting,onClick:e.exportNote},{icon:a(()=>[n(e.DownloadOutlined)]),default:a(()=>[t[19]||(t[19]=k(" 导出 .md ",-1))]),_:1},8,["loading"])):x("v-if",!0)]),default:a(()=>[e.viewingNote?(w(),V("div",je,[L("div",Be,[(w(!0),V(te,null,se(e.viewingNote.tags,o=>(w(),T(i,{key:o,color:"blue"},{default:a(()=>[k(D(o),1)]),_:2},1024))),128))]),L("pre",qe,D(e.viewingNote.content||e.viewingNote.preview),1)])):x("v-if",!0)]),_:1},8,["open","title"])])}const Ge=ae(Le,[["render",Qe],["__scopeId","data-v-7992c921"],["__file","/tmp/cc-web-panel-j3HnbJ/repo/packages/web-panel/src/views/Notes.vue"]]);export{Ge as default};
@@ -1 +0,0 @@
1
- .page-head[data-v-ae0392e9]{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title[data-v-ae0392e9]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-ae0392e9]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.hint[data-v-ae0392e9]{margin-left:12px;color:var(--text-secondary);font-size:12px}.footer-row[data-v-ae0392e9]{display:flex;align-items:center;gap:12px}.last-saved[data-v-ae0392e9]{color:var(--text-muted);font-size:12px}